#define ide_lba_mid 4
#define ide_cyl_hi 5
#define ide_lba_hi 5
-#define ide_dev_head 6
+#define ide_dev_head 6
#define ide_lba_top 6
#define ide_status_r 7
#define ide_command_w 7
uint8_t error;
uint8_t feature;
uint8_t count;
- uint8_t lba1;
- uint8_t lba2;
- uint8_t lba3;
- uint8_t lba4;
uint8_t status;
uint8_t command;
uint8_t devctrl;
int fd;
off_t offset;
int length;
+ uint8_t header_present;
};
struct ide_controller {
int selected;
const char *name;
uint16_t data_latch;
+ uint8_t lba1;
+ uint8_t lba2;
+ uint8_t lba3;
+ uint8_t lba4;
};
//extern ide_controller idectrl;
struct ide_controller *ide_allocate(const char *name);
int ide_attach(struct ide_controller *c, int drive, int fd);
+int ide_attach_hdf(struct ide_controller *c, int drive, int fd);
+int ide_make_ident(uint16_t c, uint8_t h, uint8_t s, char *name, uint16_t *target);
void ide_detach(struct ide_drive *d);
void ide_free(struct ide_controller *c);