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