| #ifndef HW_IDE_BUS_H |
| #define HW_IDE_BUS_H |
| |
| #include "exec/ioport.h" |
| #include "hw/ide/ide-dev.h" |
| #include "hw/ide/ide-dma.h" |
| |
| struct IDEBus { |
| BusState qbus; |
| IDEDevice *master; |
| IDEDevice *slave; |
| IDEState ifs[2]; |
| QEMUBH *bh; |
| |
| int bus_id; |
| int max_units; |
| IDEDMA *dma; |
| uint8_t unit; |
| uint8_t cmd; |
| qemu_irq irq; /* bus output */ |
| |
| int error_status; |
| uint8_t retry_unit; |
| int64_t retry_sector_num; |
| uint32_t retry_nsector; |
| PortioList portio_list; |
| PortioList portio2_list; |
| VMChangeStateEntry *vmstate; |
| }; |
| |
| #define TYPE_IDE_BUS "IDE" |
| OBJECT_DECLARE_SIMPLE_TYPE(IDEBus, IDE_BUS) |
| |
| void ide_bus_init(IDEBus *idebus, size_t idebus_size, DeviceState *dev, |
| int bus_id, int max_units); |
| IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, DriveInfo *drive); |
| |
| int ide_get_geometry(BusState *bus, int unit, |
| int16_t *cyls, int8_t *heads, int8_t *secs); |
| int ide_get_bios_chs_trans(BusState *bus, int unit); |
| |
| #endif |