X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e8e64a4f1d76aaeac3defa13243505cccd25c078..bf870a1dde437a48ae40d092a14e164c861ea102:/lunaix-os/includes/hal/ahci/hba.h diff --git a/lunaix-os/includes/hal/ahci/hba.h b/lunaix-os/includes/hal/ahci/hba.h index e7f8d01..92a2b5a 100644 --- a/lunaix-os/includes/hal/ahci/hba.h +++ b/lunaix-os/includes/hal/ahci/hba.h @@ -31,7 +31,10 @@ #define HBA_PxCMD_FR (1 << 14) #define HBA_PxCMD_ST (1) #define HBA_PxINTR_DMA (1 << 2) -#define HBA_PxINTR_D2HR (1) +#define HBA_PxINTR_DHR (1) +#define HBA_PxINTR_DPS (1 << 5) +#define HBA_PxINTR_TFEE (1 << 30) +#define HBA_PxINTR_IFE (1 << 27) #define HBA_PxTFD_ERR (1) #define HBA_PxTFD_BSY (1 << 7) #define HBA_PxTFD_DRQ (1 << 3) @@ -99,20 +102,26 @@ struct hba_device uint32_t block_size; uint64_t wwn; uint8_t cbd_size; - uint8_t last_error; - uint8_t last_status; + struct + { + uint8_t sense_key; + uint8_t error; + uint8_t status; + uint8_t reserve; + } last_result; uint32_t alignment_offset; uint32_t block_per_sec; uint32_t capabilities; + struct hba_port* port; struct { - int (*identify)(struct hba_port* port); - int (*read_buffer)(struct hba_port* port, + int (*identify)(struct hba_device* dev); + int (*read_buffer)(struct hba_device* dev, uint64_t lba, void* buffer, uint32_t size); - int (*write_buffer)(struct hba_port* port, + int (*write_buffer)(struct hba_device* dev, uint64_t lba, void* buffer, uint32_t size);