com32/include/ata-pio.h

37 lines
953 B
C
Raw Permalink Normal View History

2024-01-10 11:13:45 -08:00
#ifndef ATA_PIO
#define ATA_PIO
#include <stdint.h>
#include <ports.h>
// register stuff
#define ATA_IO_BASE 0x1F0
#define ATA_CONTROL_BASE 0x3F0
#define ATA_SECONDARY_OFFSET 128
#define ATA_DATA_REGISTER 0
#define ATA_ERROR_REGISTER 1
#define ATA_FEATURES_REGISTER 1
#define ATA_SECTOR_COUNT_REGISTER 2
#define ATA_SECTOR_REGISTER 3
#define ATA_CYL_LOW_REGISTER 4
#define ATA_CYL_HIGH_REGISTER 5
#define ATA_DRIVE_REGISTER 6
#define ATA_STATUS_REGISTER 7
#define ATA_COMMAND_REGISTER 7
#define ATA_ALTERNATE_STATUS_REGISTER 0
#define ATA_DEVICE_CONTROL_REGISTER 0
#define ATA_DRIVE_ADDRESS_REGISTER 1
// bitfield stuff
// declarations
int ata_init(uint8_t bus, uint8_t drive);
int ata_read(uint8_t bus, uint8_t drive, uint16_t* buf, uint16_t sectors, uint16_t lba_high, uint32_t lba_low);
int ata_write(uint8_t bus, uint8_t drive, uint16_t* buf, uint16_t sectors, uint16_t lba_high, uint32_t lba_low);
extern uint16_t ata_identify[256];
#endif