blob: 081c710d56df16255c8dda1e982d3323e2d7a522 [file] [log] [blame]
Gerd Hoffmannec820262009-08-20 15:22:19 +02001#ifndef HW_IDE_H
2#define HW_IDE_H
3
Markus Armbruster57c88862010-06-24 19:59:29 +02004#include "isa.h"
Michael S. Tsirkina2cb15b2012-12-12 14:24:50 +02005#include "pci/pci.h"
Avi Kivity9d7f1b92011-11-09 16:10:07 +02006#include "memory.h"
Gerd Hoffmannec820262009-08-20 15:22:19 +02007
Markus Armbruster27d6bf42011-01-28 11:21:40 +01008#define MAX_IDE_DEVS 2
9
Gerd Hoffmannec820262009-08-20 15:22:19 +020010/* ide-isa.c */
Hervé Poussineau48a18b32011-12-15 22:09:51 +010011ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int isairq,
Markus Armbruster57c88862010-06-24 19:59:29 +020012 DriveInfo *hd0, DriveInfo *hd1);
Gerd Hoffmannec820262009-08-20 15:22:19 +020013
Gerd Hoffmann977e1242009-08-20 15:22:20 +020014/* ide-pci.c */
Gerd Hoffmannf455e982009-08-28 15:47:03 +020015void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table,
Gerd Hoffmann977e1242009-08-20 15:22:20 +020016 int secondary_ide_enabled);
Stefano Stabellini679f4f82011-07-18 06:07:02 +000017PCIDevice *pci_piix3_xen_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
Markus Armbruster57c88862010-06-24 19:59:29 +020018PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
19PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
Huacai Chen016512f2010-06-29 10:49:50 +080020void vt82c686b_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
Gerd Hoffmann977e1242009-08-20 15:22:20 +020021
Gerd Hoffmannb8842202009-08-20 15:22:21 +020022/* ide-macio.c */
Avi Kivity23c5e4c2011-08-08 16:09:17 +030023MemoryRegion *pmac_ide_init (DriveInfo **hd_table, qemu_irq irq,
Gerd Hoffmannb8842202009-08-20 15:22:21 +020024 void *dbdma, int channel, qemu_irq dma_irq);
25
Gerd Hoffmann3d2bf4a2009-08-20 15:22:22 +020026/* ide-mmio.c */
Avi Kivitya8170e52012-10-23 12:30:10 +020027void mmio_ide_init (hwaddr membase, hwaddr membase2,
Avi Kivity9d7f1b92011-11-09 16:10:07 +020028 MemoryRegion *address_space,
Gerd Hoffmann3d2bf4a2009-08-20 15:22:22 +020029 qemu_irq irq, int shift,
Gerd Hoffmannf455e982009-08-28 15:47:03 +020030 DriveInfo *hd0, DriveInfo *hd1);
Gerd Hoffmann3d2bf4a2009-08-20 15:22:22 +020031
Markus Armbruster91390462012-07-10 11:12:38 +020032int ide_get_geometry(BusState *bus, int unit,
33 int16_t *cyls, int8_t *heads, int8_t *secs);
34int ide_get_bios_chs_trans(BusState *bus, int unit);
Markus Armbrusterc0897e02010-06-24 19:58:20 +020035
Isaku Yamahata75717902011-04-03 20:32:46 +090036/* ide/core.c */
37void ide_drive_get(DriveInfo **hd, int max_bus);
38
Gerd Hoffmannec820262009-08-20 15:22:19 +020039#endif /* HW_IDE_H */