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