43 lines
1002 B
C
43 lines
1002 B
C
|
#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
|