CeAta.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*++
  2. Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. --*/
  5. /*++
  6. Module Name:
  7. CEATA.h
  8. Abstract:
  9. Header file for chipset CE-AT spec.
  10. --*/
  11. #ifndef _CE_ATA_H
  12. #define _CE_ATA_H
  13. #pragma pack(1)
  14. #define DATA_UNIT_SIZE 512
  15. #define CMD60 60
  16. #define CMD61 61
  17. #define RW_MULTIPLE_REGISTER CMD60
  18. #define RW_MULTIPLE_BLOCK CMD61
  19. #define CE_ATA_SIG_CE 0xCE
  20. #define CE_ATA_SIG_AA 0xAA
  21. #define Reg_Features_Exp 01
  22. #define Reg_SectorCount_Exp 02
  23. #define Reg_LBALow_Exp 03
  24. #define Reg_LBAMid_Exp 04
  25. #define Reg_LBAHigh_Exp 05
  26. #define Reg_Control 06
  27. #define Reg_Features_Error 09
  28. #define Reg_SectorCount 10
  29. #define Reg_LBALow 11
  30. #define Reg_LBAMid 12
  31. #define Reg_LBAHigh 13
  32. #define Reg_Device_Head 14
  33. #define Reg_Command_Status 15
  34. #define Reg_scrTempC 0x80
  35. #define Reg_scrTempMaxP 0x84
  36. #define Reg_scrTempMinP 0x88
  37. #define Reg_scrStatus 0x8C
  38. #define Reg_scrReallocsA 0x90
  39. #define Reg_scrERetractsA 0x94
  40. #define Reg_scrCapabilities 0x98
  41. #define Reg_scrControl 0xC0
  42. typedef struct {
  43. UINT8 Reserved0;
  44. UINT8 Features_Exp;
  45. UINT8 SectorCount_Exp;
  46. UINT8 LBALow_Exp;
  47. UINT8 LBAMid_Exp;
  48. UINT8 LBAHigh_Exp;
  49. UINT8 Control;
  50. UINT8 Reserved1[2];
  51. UINT8 Features_Error;
  52. UINT8 SectorCount;
  53. UINT8 LBALow;
  54. UINT8 LBAMid;
  55. UINT8 LBAHigh;
  56. UINT8 Device_Head;
  57. UINT8 Command_Status;
  58. } TASK_FILE;
  59. //
  60. //Reduced ATA command set
  61. //
  62. #define IDENTIFY_DEVICE 0xEC
  63. #define READ_DMA_EXT 0x25
  64. #define WRITE_DMA_EXT 0x35
  65. #define STANDBY_IMMEDIATE 0xE0
  66. #define FLUSH_CACHE_EXT 0xEA
  67. typedef struct {
  68. UINT16 Reserved0[10];
  69. UINT16 SerialNumber[10];
  70. UINT16 Reserved1[3];
  71. UINT16 FirmwareRevision[4];
  72. UINT16 ModelNumber[20];
  73. UINT16 Reserved2[33];
  74. UINT16 MajorVersion;
  75. UINT16 Reserved3[19];
  76. UINT16 MaximumLBA[4];
  77. UINT16 Reserved4[2];
  78. UINT16 Sectorsize;
  79. UINT16 Reserved5;
  80. UINT16 DeviceGUID[4];
  81. UINT16 Reserved6[94];
  82. UINT16 Features;
  83. UINT16 MaxWritesPerAddress;
  84. UINT16 Reserved7[47];
  85. UINT16 IntegrityWord;
  86. } IDENTIFY_DEVICE_DATA;
  87. #pragma pack()
  88. #endif