ide: Make PIIX and ISA IDE init functions return the qdev

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Markus Armbruster 2010-06-24 19:59:29 +02:00 committed by Kevin Wolf
parent 7d0d69509a
commit 57c888664b
3 changed files with 14 additions and 11 deletions

View file

@ -1,17 +1,18 @@
#ifndef HW_IDE_H #ifndef HW_IDE_H
#define HW_IDE_H #define HW_IDE_H
#include "qdev.h" #include "isa.h"
#include "pci.h"
/* ide-isa.c */ /* ide-isa.c */
int isa_ide_init(int iobase, int iobase2, int isairq, ISADevice *isa_ide_init(int iobase, int iobase2, int isairq,
DriveInfo *hd0, DriveInfo *hd1); DriveInfo *hd0, DriveInfo *hd1);
/* ide-pci.c */ /* ide-pci.c */
void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table, void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table,
int secondary_ide_enabled); int secondary_ide_enabled);
void pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn); PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
void pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn); PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
void vt82c686b_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn); void vt82c686b_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
/* ide-macio.c */ /* ide-macio.c */

View file

@ -75,8 +75,8 @@ static int isa_ide_initfn(ISADevice *dev)
return 0; return 0;
}; };
int isa_ide_init(int iobase, int iobase2, int isairq, ISADevice *isa_ide_init(int iobase, int iobase2, int isairq,
DriveInfo *hd0, DriveInfo *hd1) DriveInfo *hd0, DriveInfo *hd1)
{ {
ISADevice *dev; ISADevice *dev;
ISAIDEState *s; ISAIDEState *s;
@ -86,14 +86,14 @@ int isa_ide_init(int iobase, int iobase2, int isairq,
qdev_prop_set_uint32(&dev->qdev, "iobase2", iobase2); qdev_prop_set_uint32(&dev->qdev, "iobase2", iobase2);
qdev_prop_set_uint32(&dev->qdev, "irq", isairq); qdev_prop_set_uint32(&dev->qdev, "irq", isairq);
if (qdev_init(&dev->qdev) < 0) if (qdev_init(&dev->qdev) < 0)
return -1; return NULL;
s = DO_UPCAST(ISAIDEState, dev, dev); s = DO_UPCAST(ISAIDEState, dev, dev);
if (hd0) if (hd0)
ide_create_drive(&s->bus, 0, hd0); ide_create_drive(&s->bus, 0, hd0);
if (hd1) if (hd1)
ide_create_drive(&s->bus, 1, hd1); ide_create_drive(&s->bus, 1, hd1);
return 0; return dev;
} }
static ISADeviceInfo isa_ide_info = { static ISADeviceInfo isa_ide_info = {

View file

@ -160,22 +160,24 @@ static int pci_piix4_ide_initfn(PCIDevice *dev)
/* hd_table must contain 4 block drivers */ /* hd_table must contain 4 block drivers */
/* NOTE: for the PIIX3, the IRQs and IOports are hardcoded */ /* NOTE: for the PIIX3, the IRQs and IOports are hardcoded */
void pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn) PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
{ {
PCIDevice *dev; PCIDevice *dev;
dev = pci_create_simple(bus, devfn, "piix3-ide"); dev = pci_create_simple(bus, devfn, "piix3-ide");
pci_ide_create_devs(dev, hd_table); pci_ide_create_devs(dev, hd_table);
return dev;
} }
/* hd_table must contain 4 block drivers */ /* hd_table must contain 4 block drivers */
/* NOTE: for the PIIX4, the IRQs and IOports are hardcoded */ /* NOTE: for the PIIX4, the IRQs and IOports are hardcoded */
void pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn) PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
{ {
PCIDevice *dev; PCIDevice *dev;
dev = pci_create_simple(bus, devfn, "piix4-ide"); dev = pci_create_simple(bus, devfn, "piix4-ide");
pci_ide_create_devs(dev, hd_table); pci_ide_create_devs(dev, hd_table);
return dev;
} }
static PCIDeviceInfo piix_ide_info[] = { static PCIDeviceInfo piix_ide_info[] = {