#define ATA_FEATURE 1
#define ATA_F_DMA 0x01
#define ATA_F_OVL 0x02
#define ATA_COUNT 2
#define ATA_SECTOR 3
#define ATA_CYL_LSB 4
#define ATA_CYL_MSB 5
#define ATA_DRIVE 6
#define ATA_D_LBA 0x40
#define ATA_D_IBM 0xa0
#define ATA_COMMAND 7
#define ATA_ERROR 8
#define ATA_E_ILI 0x01
#define ATA_E_NM 0x02
#define ATA_E_ABORT 0x04
#define ATA_E_MCR 0x08
#define ATA_E_IDNF 0x10
#define ATA_E_MC 0x20
#define ATA_E_UNC 0x40
#define ATA_E_ICRC 0x80
#define ATA_E_ATAPI_SENSE_MASK 0xf0
#define ATA_IREASON 9
#define ATA_I_CMD 0x01
#define ATA_I_IN 0x02
#define ATA_I_RELEASE 0x04
#define ATA_I_TAGMASK 0xf8
#define ATA_STATUS 10
#define ATA_ALTSTAT 11
#define ATA_S_ERROR 0x01
#define ATA_S_INDEX 0x02
#define ATA_S_CORR 0x04
#define ATA_S_DRQ 0x08
#define ATA_S_DSC 0x10
#define ATA_S_SERVICE 0x10
#define ATA_S_DWF 0x20
#define ATA_S_DMA 0x20
#define ATA_S_READY 0x40
#define ATA_S_BUSY 0x80
#define ATA_CONTROL 12
#define ATA_A_IDS 0x02
#define ATA_A_RESET 0x04
#define ATA_A_4BIT 0x08
#define ATA_A_HOB 0x80
#define ATA_SSTATUS 13
#define ATA_SS_DET_MASK 0x0000000f
#define ATA_SS_DET_NO_DEVICE 0x00000000
#define ATA_SS_DET_DEV_PRESENT 0x00000001
#define ATA_SS_DET_PHY_ONLINE 0x00000003
#define ATA_SS_DET_PHY_OFFLINE 0x00000004
#define ATA_SS_SPD_MASK 0x000000f0
#define ATA_SS_SPD_NO_SPEED 0x00000000
#define ATA_SS_SPD_GEN1 0x00000010
#define ATA_SS_SPD_GEN2 0x00000020
#define ATA_SS_SPD_GEN3 0x00000030
#define ATA_SS_IPM_MASK 0x00000f00
#define ATA_SS_IPM_NO_DEVICE 0x00000000
#define ATA_SS_IPM_ACTIVE 0x00000100
#define ATA_SS_IPM_PARTIAL 0x00000200
#define ATA_SS_IPM_SLUMBER 0x00000600
#define ATA_SS_IPM_DEVSLEEP 0x00000800
#define ATA_SERROR 14
#define ATA_SE_DATA_CORRECTED 0x00000001
#define ATA_SE_COMM_CORRECTED 0x00000002
#define ATA_SE_DATA_ERR 0x00000100
#define ATA_SE_COMM_ERR 0x00000200
#define ATA_SE_PROT_ERR 0x00000400
#define ATA_SE_HOST_ERR 0x00000800
#define ATA_SE_PHY_CHANGED 0x00010000
#define ATA_SE_PHY_IERROR 0x00020000
#define ATA_SE_COMM_WAKE 0x00040000
#define ATA_SE_DECODE_ERR 0x00080000
#define ATA_SE_PARITY_ERR 0x00100000
#define ATA_SE_CRC_ERR 0x00200000
#define ATA_SE_HANDSHAKE_ERR 0x00400000
#define ATA_SE_LINKSEQ_ERR 0x00800000
#define ATA_SE_TRANSPORT_ERR 0x01000000
#define ATA_SE_UNKNOWN_FIS 0x02000000
#define ATA_SE_EXCHANGED 0x04000000
#define ATA_SCONTROL 15
#define ATA_SC_DET_MASK 0x0000000f
#define ATA_SC_DET_IDLE 0x00000000
#define ATA_SC_DET_RESET 0x00000001
#define ATA_SC_DET_DISABLE 0x00000004
#define ATA_SC_SPD_MASK 0x000000f0
#define ATA_SC_SPD_NO_SPEED 0x00000000
#define ATA_SC_SPD_SPEED_GEN1 0x00000010
#define ATA_SC_SPD_SPEED_GEN2 0x00000020
#define ATA_SC_SPD_SPEED_GEN3 0x00000030
#define ATA_SC_IPM_MASK 0x00000f00
#define ATA_SC_IPM_NONE 0x00000000
#define ATA_SC_IPM_DIS_PARTIAL 0x00000100
#define ATA_SC_IPM_DIS_SLUMBER 0x00000200
#define ATA_SC_IPM_DIS_DEVSLEEP 0x00000400