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