1 /** @file
2 
3 Header file for chipset CE-AT spec.
4 
5 Copyright (c) 2013-2015 Intel Corporation.
6 
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution.  The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11 
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 
17 #ifndef _CE_ATA_H
18 #define _CE_ATA_H
19 
20 #pragma pack(1)
21 
22 
23 #define  DATA_UNIT_SIZE       512
24 
25 
26 #define  CMD60                60
27 #define  CMD61                61
28 
29 
30 #define RW_MULTIPLE_REGISTER  CMD60
31 #define RW_MULTIPLE_BLOCK     CMD61
32 
33 
34 #define CE_ATA_SIG_CE         0xCE
35 #define CE_ATA_SIG_AA         0xAA
36 
37 
38 #define Reg_Features_Exp      01
39 #define Reg_SectorCount_Exp   02
40 #define Reg_LBALow_Exp        03
41 #define Reg_LBAMid_Exp        04
42 #define Reg_LBAHigh_Exp       05
43 #define Reg_Control           06
44 #define Reg_Features_Error    09
45 #define Reg_SectorCount       10
46 #define Reg_LBALow            11
47 #define Reg_LBAMid            12
48 #define Reg_LBAHigh           13
49 #define Reg_Device_Head       14
50 #define Reg_Command_Status    15
51 
52 #define Reg_scrTempC          0x80
53 #define Reg_scrTempMaxP       0x84
54 #define Reg_scrTempMinP       0x88
55 #define Reg_scrStatus         0x8C
56 #define Reg_scrReallocsA      0x90
57 #define Reg_scrERetractsA     0x94
58 #define Reg_scrCapabilities   0x98
59 #define Reg_scrControl        0xC0
60 
61 
62 
63 typedef struct {
64   UINT8  Reserved0;
65   UINT8  Features_Exp;
66   UINT8  SectorCount_Exp;
67   UINT8  LBALow_Exp;
68   UINT8  LBAMid_Exp;
69   UINT8  LBAHigh_Exp;
70   UINT8  Control;
71   UINT8  Reserved1[2];
72   UINT8  Features_Error;
73   UINT8  SectorCount;
74   UINT8  LBALow;
75   UINT8  LBAMid;
76   UINT8  LBAHigh;
77   UINT8  Device_Head;
78   UINT8  Command_Status;
79 }TASK_FILE;
80 
81 
82 //
83 //Reduced ATA command set
84 //
85 #define IDENTIFY_DEVICE       0xEC
86 #define READ_DMA_EXT          0x25
87 #define WRITE_DMA_EXT         0x35
88 #define STANDBY_IMMEDIATE     0xE0
89 #define FLUSH_CACHE_EXT       0xEA
90 
91 
92 
93 typedef struct {
94   UINT16  Reserved0[10];
95   UINT16  SerialNumber[10];
96   UINT16  Reserved1[3];
97   UINT16  FirmwareRevision[4];
98   UINT16  ModelNumber[20];
99   UINT16  Reserved2[33];
100   UINT16  MajorVersion;
101   UINT16  Reserved3[19];
102   UINT16  MaximumLBA[4];
103   UINT16  Reserved4[2];
104   UINT16  Sectorsize;
105   UINT16  Reserved5;
106   UINT16  DeviceGUID[4];
107   UINT16  Reserved6[94];
108   UINT16  Features;
109   UINT16  MaxWritesPerAddress;
110   UINT16  Reserved7[47];
111   UINT16  IntegrityWord;
112 }IDENTIFY_DEVICE_DATA;
113 
114 
115 
116 
117 
118 #pragma pack()
119 
120 #endif
121