NeKernel dev
Loading...
Searching...
No Matches
ATA.h File Reference

Go to the source code of this file.

Macros

#define ATA_SR_BSY   0x80
 ! Status register
#define ATA_SR_DRDY   0x40
#define ATA_SR_DF   0x20
#define ATA_SR_DSC   0x10
#define ATA_SR_DRQ   0x08
#define ATA_SR_CORR   0x04
#define ATA_SR_IDX   0x02
#define ATA_SR_ERR   0x01
#define ATA_ER_BBK   0x80
 ! Error register
#define ATA_ER_UNC   0x40
#define ATA_ER_MC   0x20
#define ATA_ER_IDNF   0x10
#define ATA_ER_MCR   0x08
#define ATA_ER_ABRT   0x04
#define ATA_ER_TK0NF   0x02
#define ATA_ER_AMNF   0x01
#define ATA_CMD_READ_PIO   0x20
#define ATA_CMD_READ_PIO_EXT   0x24
#define ATA_CMD_READ_DMA   0xC8
#define ATA_CMD_READ_DMA_EXT   0x25
#define ATA_CMD_WRITE_PIO   0x30
#define ATA_CMD_WRITE_PIO_EXT   0x34
#define ATA_CMD_WRITE_DMA   0xCA
#define ATA_CMD_WRITE_DMA_EXT   0x35
#define ATA_CMD_CACHE_FLUSH   0xE7
#define ATA_CMD_CACHE_FLUSH_EXT   0xEA
#define ATA_CMD_PACKET   0xA0
#define ATA_CMD_IDENTIFY_PACKET   0xA1
#define ATA_CMD_IDENTIFY   0xEC
#define ATA_IDENT_DEVICE_TYPE   0
 ! ident offsets, use with data that we got from ATA_CMD_IDENTIFY.
#define ATA_IDENT_CYLINDERS   2
#define ATA_IDENT_HEADS   6
#define ATA_IDENT_SECTORS   12
#define ATA_IDENT_SERIAL   20
#define ATA_IDENT_MODEL   54
#define ATA_IDENT_CAPABILITIES   98
#define ATA_IDENT_FIELDVALID   106
#define ATA_IDENT_MAX_LBA   120
#define ATA_IDENT_COMMANDSETS   164
#define ATA_IDENT_MAX_LBA_EXT   200
#define ATA_REG_SET_FEATURES   0xEF
#define ATA_MASTER   0x00
#define ATA_SLAVE   0x01
#define ATA_REG_DATA   0x00
 ! Register
#define ATA_REG_ERROR   0x01
#define ATA_REG_FEATURES   0x01
#define ATA_REG_SEC_COUNT0   0x02
#define ATA_REG_LBA0   0x03
#define ATA_REG_LBA1   0x04
#define ATA_REG_LBA2   0x05
#define ATA_REG_HDDEVSEL   0x06
#define ATA_REG_COMMAND   0x07
#define ATA_REG_STATUS   0x07
#define ATA_REG_SEC_COUNT1   0x08
#define ATA_REG_LBA3   0x09
#define ATA_REG_LBA4   0x0A
#define ATA_REG_LBA5   0x0B
#define ATA_REG_CONTROL   0x0C
#define ATA_REG_ALT_STATUS   0x0C
#define ATA_REG_DEV_ADDRESS   0x0D
#define ATA_REG_NEIN   0x01
#define ATA_PRIMARY_IO   0x1F0
#define ATA_SECONDARY_IO   0x170
#define ATA_PRIMARY_DCR_AS   0x3F6
#define ATA_SECONDARY_DCR_AS   0x376
#define ATA_PRIMARY_IRQ   14
 ! Irq
#define ATA_SECONDARY_IRQ   15
#define ATA_PRIMARY   0x00
 ! Channels
#define ATA_SECONDARY   0x01
#define ATA_CYL_LOW   3
#define ATA_CYL_MID   4
#define ATA_CYL_HIGH   5
#define ATA_READ   0x00
 ! IO Direction
#define ATA_WRITE   0x013
#define ATA_PRIMARY_SEL   0xA0
#define ATA_SECONDARY_SEL   0xB0
#define ATA_ADDRESS1(x)
 ! ATA address register.
#define ATA_ADDRESS2(x)
#define ATA_ADDRESS3(x)
#define ATA_COMMAND(x)
 ! ATA command register.
#define kATASectorSize   (512U)

Enumerations

enum  {
  kATADevicePATA , kATADeviceSATA , kATADevicePATA_PI , kATADeviceSATA_PI ,
  kATADeviceCount
}

Macro Definition Documentation

◆ ATA_ADDRESS1

#define ATA_ADDRESS1 ( x)
Value:
(x + 3)

! ATA address register.

◆ ATA_ADDRESS2

#define ATA_ADDRESS2 ( x)
Value:
(x + 4)

◆ ATA_ADDRESS3

#define ATA_ADDRESS3 ( x)
Value:
(x + 5)

◆ ATA_CMD_CACHE_FLUSH

#define ATA_CMD_CACHE_FLUSH   0xE7

◆ ATA_CMD_CACHE_FLUSH_EXT

#define ATA_CMD_CACHE_FLUSH_EXT   0xEA

◆ ATA_CMD_IDENTIFY

#define ATA_CMD_IDENTIFY   0xEC

◆ ATA_CMD_IDENTIFY_PACKET

#define ATA_CMD_IDENTIFY_PACKET   0xA1

◆ ATA_CMD_PACKET

#define ATA_CMD_PACKET   0xA0

◆ ATA_CMD_READ_DMA

#define ATA_CMD_READ_DMA   0xC8

◆ ATA_CMD_READ_DMA_EXT

#define ATA_CMD_READ_DMA_EXT   0x25

◆ ATA_CMD_READ_PIO

#define ATA_CMD_READ_PIO   0x20

◆ ATA_CMD_READ_PIO_EXT

#define ATA_CMD_READ_PIO_EXT   0x24

◆ ATA_CMD_WRITE_DMA

#define ATA_CMD_WRITE_DMA   0xCA

◆ ATA_CMD_WRITE_DMA_EXT

#define ATA_CMD_WRITE_DMA_EXT   0x35

◆ ATA_CMD_WRITE_PIO

#define ATA_CMD_WRITE_PIO   0x30

◆ ATA_CMD_WRITE_PIO_EXT

#define ATA_CMD_WRITE_PIO_EXT   0x34

◆ ATA_COMMAND

#define ATA_COMMAND ( x)
Value:
(x + 7)

! ATA command register.

◆ ATA_CYL_HIGH

#define ATA_CYL_HIGH   5

◆ ATA_CYL_LOW

#define ATA_CYL_LOW   3

◆ ATA_CYL_MID

#define ATA_CYL_MID   4

◆ ATA_ER_ABRT

#define ATA_ER_ABRT   0x04

◆ ATA_ER_AMNF

#define ATA_ER_AMNF   0x01

◆ ATA_ER_BBK

#define ATA_ER_BBK   0x80

! Error register

◆ ATA_ER_IDNF

#define ATA_ER_IDNF   0x10

◆ ATA_ER_MC

#define ATA_ER_MC   0x20

◆ ATA_ER_MCR

#define ATA_ER_MCR   0x08

◆ ATA_ER_TK0NF

#define ATA_ER_TK0NF   0x02

◆ ATA_ER_UNC

#define ATA_ER_UNC   0x40

◆ ATA_IDENT_CAPABILITIES

#define ATA_IDENT_CAPABILITIES   98

◆ ATA_IDENT_COMMANDSETS

#define ATA_IDENT_COMMANDSETS   164

◆ ATA_IDENT_CYLINDERS

#define ATA_IDENT_CYLINDERS   2

◆ ATA_IDENT_DEVICE_TYPE

#define ATA_IDENT_DEVICE_TYPE   0

! ident offsets, use with data that we got from ATA_CMD_IDENTIFY.

◆ ATA_IDENT_FIELDVALID

#define ATA_IDENT_FIELDVALID   106

◆ ATA_IDENT_HEADS

#define ATA_IDENT_HEADS   6

◆ ATA_IDENT_MAX_LBA

#define ATA_IDENT_MAX_LBA   120

◆ ATA_IDENT_MAX_LBA_EXT

#define ATA_IDENT_MAX_LBA_EXT   200

◆ ATA_IDENT_MODEL

#define ATA_IDENT_MODEL   54

◆ ATA_IDENT_SECTORS

#define ATA_IDENT_SECTORS   12

◆ ATA_IDENT_SERIAL

#define ATA_IDENT_SERIAL   20

◆ ATA_MASTER

#define ATA_MASTER   0x00

◆ ATA_PRIMARY

#define ATA_PRIMARY   0x00

! Channels

◆ ATA_PRIMARY_DCR_AS

#define ATA_PRIMARY_DCR_AS   0x3F6

◆ ATA_PRIMARY_IO

#define ATA_PRIMARY_IO   0x1F0

◆ ATA_PRIMARY_IRQ

#define ATA_PRIMARY_IRQ   14

! Irq

◆ ATA_PRIMARY_SEL

#define ATA_PRIMARY_SEL   0xA0

◆ ATA_READ

#define ATA_READ   0x00

! IO Direction

◆ ATA_REG_ALT_STATUS

#define ATA_REG_ALT_STATUS   0x0C

◆ ATA_REG_COMMAND

#define ATA_REG_COMMAND   0x07

◆ ATA_REG_CONTROL

#define ATA_REG_CONTROL   0x0C

◆ ATA_REG_DATA

#define ATA_REG_DATA   0x00

! Register

◆ ATA_REG_DEV_ADDRESS

#define ATA_REG_DEV_ADDRESS   0x0D

◆ ATA_REG_ERROR

#define ATA_REG_ERROR   0x01

◆ ATA_REG_FEATURES

#define ATA_REG_FEATURES   0x01

◆ ATA_REG_HDDEVSEL

#define ATA_REG_HDDEVSEL   0x06

◆ ATA_REG_LBA0

#define ATA_REG_LBA0   0x03

◆ ATA_REG_LBA1

#define ATA_REG_LBA1   0x04

◆ ATA_REG_LBA2

#define ATA_REG_LBA2   0x05

◆ ATA_REG_LBA3

#define ATA_REG_LBA3   0x09

◆ ATA_REG_LBA4

#define ATA_REG_LBA4   0x0A

◆ ATA_REG_LBA5

#define ATA_REG_LBA5   0x0B

◆ ATA_REG_NEIN

#define ATA_REG_NEIN   0x01

◆ ATA_REG_SEC_COUNT0

#define ATA_REG_SEC_COUNT0   0x02

◆ ATA_REG_SEC_COUNT1

#define ATA_REG_SEC_COUNT1   0x08

◆ ATA_REG_SET_FEATURES

#define ATA_REG_SET_FEATURES   0xEF

◆ ATA_REG_STATUS

#define ATA_REG_STATUS   0x07

◆ ATA_SECONDARY

#define ATA_SECONDARY   0x01

◆ ATA_SECONDARY_DCR_AS

#define ATA_SECONDARY_DCR_AS   0x376

◆ ATA_SECONDARY_IO

#define ATA_SECONDARY_IO   0x170

◆ ATA_SECONDARY_IRQ

#define ATA_SECONDARY_IRQ   15

◆ ATA_SECONDARY_SEL

#define ATA_SECONDARY_SEL   0xB0

◆ ATA_SLAVE

#define ATA_SLAVE   0x01

◆ ATA_SR_BSY

#define ATA_SR_BSY   0x80

! Status register

◆ ATA_SR_CORR

#define ATA_SR_CORR   0x04

◆ ATA_SR_DF

#define ATA_SR_DF   0x20

◆ ATA_SR_DRDY

#define ATA_SR_DRDY   0x40

◆ ATA_SR_DRQ

#define ATA_SR_DRQ   0x08

◆ ATA_SR_DSC

#define ATA_SR_DSC   0x10

◆ ATA_SR_ERR

#define ATA_SR_ERR   0x01

◆ ATA_SR_IDX

#define ATA_SR_IDX   0x02

◆ ATA_WRITE

#define ATA_WRITE   0x013

◆ kATASectorSize

#define kATASectorSize   (512U)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
kATADevicePATA 
kATADeviceSATA 
kATADevicePATA_PI 
kATADeviceSATA_PI 
kATADeviceCount