From: Isaku Yamahata <yamah...@valinux.co.jp> Introduce a helper function which initializes the ahci port with ide devices. It will be used by q35 support.
Cc: Alexander Graf <ag...@suse.de> Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp> Signed-off-by: Jason Baron <jba...@redhat.com> --- hw/ide.h | 3 +++ hw/ide/ahci.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) diff --git a/hw/ide.h b/hw/ide.h index 2db4079..8df872e 100644 --- a/hw/ide.h +++ b/hw/ide.h @@ -36,4 +36,7 @@ int ide_get_bios_chs_trans(BusState *bus, int unit); /* ide/core.c */ void ide_drive_get(DriveInfo **hd, int max_bus); +/* ide/ahci.c */ +void pci_ahci_ide_create_devs(PCIDevice *pci_dev, DriveInfo **hd_table); + #endif /* HW_IDE_H */ diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 5ea3cad..9561210 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1260,3 +1260,19 @@ static void sysbus_ahci_register_types(void) } type_init(sysbus_ahci_register_types) + +void pci_ahci_ide_create_devs(PCIDevice *pci_dev, DriveInfo **hd_table) +{ + struct AHCIPCIState *dev = DO_UPCAST(struct AHCIPCIState, card, pci_dev); + int i; + + for (i = 0; i < dev->ahci.ports; i++) { + /* master device only, ignore slaves */ + if (hd_table[i * MAX_IDE_DEVS] == NULL) { + continue; + } + ide_create_drive(&dev->ahci.dev[i].port, 0, + hd_table[i * MAX_IDE_DEVS]); + } +} + -- 1.7.1