4 #include "drv/disk/ata.h"
8 #define ATAPI_CMD_READY 0x00
9 #define ATAPI_CMD_RQ_SENSE 0x03
10 #define ATAPI_CMD_START_STOP 0x1B
11 #define ATAPI_READ_CAPACITY 0x25
12 #define ATAPI_CMD_READ 0xA8
19 uint8_t sense_code_qualifier;
22 bool ata_scsi_status_wait(uint8_t bus);
23 bool ata_scsi_send(uint16_t bus,
bool slave, uint16_t lba_mid_hi, uint8_t command[12]);
25 size_t ata_scsi_receive_size_of_transfer(uint16_t bus);
26 void ata_scsi_read_result(uint16_t bus,
size_t size, uint16_t* buffer);
27 size_t atapi_read_size(uint16_t bus,
bool slave);
28 size_t atapi_read_block_size(uint16_t bus,
bool slave);
30 bool atapi_read_sectors(uint16_t drive, uint8_t *buf, uint32_t lba,
size_t sector_count);
31 bool atapi_eject(uint8_t bus,
bool slave);
34 bool atapi_check_media_presence(uint8_t bus,
bool slave);
35 atapi_error_code atapi_request_sense(uint8_t bus,
bool slave, uint8_t out[18]);
Основные определения ядра