xref: /qemu/include/hw/ide/ide-bus.h (revision fc524567087c2537b5103cdfc1d41e4f442892b6)
1f74c6177SThomas Huth #ifndef HW_IDE_BUS_H
2f74c6177SThomas Huth #define HW_IDE_BUS_H
3f74c6177SThomas Huth 
4*91a85383SRichard Henderson #include "system/ioport.h"
5f74c6177SThomas Huth #include "hw/ide/ide-dev.h"
6f74c6177SThomas Huth #include "hw/ide/ide-dma.h"
7f74c6177SThomas Huth 
8f74c6177SThomas Huth struct IDEBus {
9f74c6177SThomas Huth     BusState qbus;
10f74c6177SThomas Huth     IDEDevice *master;
11f74c6177SThomas Huth     IDEDevice *slave;
12f74c6177SThomas Huth     IDEState ifs[2];
13f74c6177SThomas Huth     QEMUBH *bh;
14f74c6177SThomas Huth 
15f74c6177SThomas Huth     int bus_id;
16f74c6177SThomas Huth     int max_units;
17f74c6177SThomas Huth     IDEDMA *dma;
18f74c6177SThomas Huth     uint8_t unit;
19f74c6177SThomas Huth     uint8_t cmd;
20f74c6177SThomas Huth     qemu_irq irq; /* bus output */
21f74c6177SThomas Huth 
22f74c6177SThomas Huth     int error_status;
23f74c6177SThomas Huth     uint8_t retry_unit;
24f74c6177SThomas Huth     int64_t retry_sector_num;
25f74c6177SThomas Huth     uint32_t retry_nsector;
26f74c6177SThomas Huth     PortioList portio_list;
27f74c6177SThomas Huth     PortioList portio2_list;
28f74c6177SThomas Huth     VMChangeStateEntry *vmstate;
29f74c6177SThomas Huth };
30f74c6177SThomas Huth 
31f74c6177SThomas Huth #define TYPE_IDE_BUS "IDE"
32f74c6177SThomas Huth OBJECT_DECLARE_SIMPLE_TYPE(IDEBus, IDE_BUS)
33f74c6177SThomas Huth 
34f74c6177SThomas Huth void ide_bus_init(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
35f74c6177SThomas Huth                   int bus_id, int max_units);
36f74c6177SThomas Huth IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, DriveInfo *drive);
37f74c6177SThomas Huth 
38f74c6177SThomas Huth int ide_get_geometry(BusState *bus, int unit,
39f74c6177SThomas Huth                      int16_t *cyls, int8_t *heads, int8_t *secs);
40f74c6177SThomas Huth int ide_get_bios_chs_trans(BusState *bus, int unit);
41f74c6177SThomas Huth 
42f74c6177SThomas Huth #endif
43