hw/ide: Do ide_drive_get() within pci_ide_create_devs()
The pci_ide_create_devs() function takes a hd_table parameter but all callers just pass what ide_drive_get() returns so we can do it locally simplifying callers and removing hd_table parameter. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-id: e9713fdded4d212fa68ed03b844e531934226a6f.1584457537.git.balaton@eik.bme.hu Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
417adc2d50
commit
be1765f398
@ -15,7 +15,6 @@
|
|||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
#include "sysemu/sysemu.h"
|
#include "sysemu/sysemu.h"
|
||||||
#include "hw/rtc/mc146818rtc.h"
|
#include "hw/rtc/mc146818rtc.h"
|
||||||
#include "hw/ide.h"
|
|
||||||
#include "hw/ide/pci.h"
|
#include "hw/ide/pci.h"
|
||||||
#include "hw/timer/i8254.h"
|
#include "hw/timer/i8254.h"
|
||||||
#include "hw/isa/superio.h"
|
#include "hw/isa/superio.h"
|
||||||
@ -58,6 +57,7 @@ static void clipper_init(MachineState *machine)
|
|||||||
const char *initrd_filename = machine->initrd_filename;
|
const char *initrd_filename = machine->initrd_filename;
|
||||||
AlphaCPU *cpus[4];
|
AlphaCPU *cpus[4];
|
||||||
PCIBus *pci_bus;
|
PCIBus *pci_bus;
|
||||||
|
PCIDevice *pci_dev;
|
||||||
ISABus *isa_bus;
|
ISABus *isa_bus;
|
||||||
qemu_irq rtc_irq;
|
qemu_irq rtc_irq;
|
||||||
long size, i;
|
long size, i;
|
||||||
@ -100,15 +100,8 @@ static void clipper_init(MachineState *machine)
|
|||||||
isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
|
isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
|
||||||
|
|
||||||
/* IDE disk setup. */
|
/* IDE disk setup. */
|
||||||
{
|
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
|
||||||
PCIDevice *pci_dev;
|
|
||||||
|
|
||||||
ide_drive_get(hd, ARRAY_SIZE(hd));
|
|
||||||
|
|
||||||
pci_dev = pci_create_simple(pci_bus, -1, "cmd646-ide");
|
pci_dev = pci_create_simple(pci_bus, -1, "cmd646-ide");
|
||||||
pci_ide_create_devs(pci_dev, hd);
|
pci_ide_create_devs(pci_dev);
|
||||||
}
|
|
||||||
|
|
||||||
/* Load PALcode. Given that this is not "real" cpu palcode,
|
/* Load PALcode. Given that this is not "real" cpu palcode,
|
||||||
but one explicitly written for the emulation, we might as
|
but one explicitly written for the emulation, we might as
|
||||||
|
@ -86,7 +86,6 @@ static void pc_init1(MachineState *machine,
|
|||||||
int piix3_devfn = -1;
|
int piix3_devfn = -1;
|
||||||
qemu_irq smi_irq;
|
qemu_irq smi_irq;
|
||||||
GSIState *gsi_state;
|
GSIState *gsi_state;
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
|
||||||
BusState *idebus[MAX_IDE_BUS];
|
BusState *idebus[MAX_IDE_BUS];
|
||||||
ISADevice *rtc_state;
|
ISADevice *rtc_state;
|
||||||
MemoryRegion *ram_memory;
|
MemoryRegion *ram_memory;
|
||||||
@ -240,20 +239,22 @@ static void pc_init1(MachineState *machine,
|
|||||||
|
|
||||||
pc_nic_init(pcmc, isa_bus, pci_bus);
|
pc_nic_init(pcmc, isa_bus, pci_bus);
|
||||||
|
|
||||||
ide_drive_get(hd, ARRAY_SIZE(hd));
|
|
||||||
if (pcmc->pci_enabled) {
|
if (pcmc->pci_enabled) {
|
||||||
PCIDevice *dev;
|
PCIDevice *dev;
|
||||||
|
|
||||||
dev = pci_create_simple(pci_bus, piix3_devfn + 1,
|
dev = pci_create_simple(pci_bus, piix3_devfn + 1,
|
||||||
xen_enabled() ? "piix3-ide-xen" : "piix3-ide");
|
xen_enabled() ? "piix3-ide-xen" : "piix3-ide");
|
||||||
pci_ide_create_devs(dev, hd);
|
pci_ide_create_devs(dev);
|
||||||
idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0");
|
idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0");
|
||||||
idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1");
|
idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1");
|
||||||
pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
|
pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_IDE_ISA
|
#ifdef CONFIG_IDE_ISA
|
||||||
else {
|
else {
|
||||||
|
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
ide_drive_get(hd, ARRAY_SIZE(hd));
|
||||||
for (i = 0; i < MAX_IDE_BUS; i++) {
|
for (i = 0; i < MAX_IDE_BUS; i++) {
|
||||||
ISADevice *dev;
|
ISADevice *dev;
|
||||||
char busname[] = "ide.0";
|
char busname[] = "ide.0";
|
||||||
|
@ -477,13 +477,15 @@ const VMStateDescription vmstate_ide_pci = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* hd_table must contain 4 block drivers */
|
/* hd_table must contain 4 block drivers */
|
||||||
void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table)
|
void pci_ide_create_devs(PCIDevice *dev)
|
||||||
{
|
{
|
||||||
PCIIDEState *d = PCI_IDE(dev);
|
PCIIDEState *d = PCI_IDE(dev);
|
||||||
|
DriveInfo *hd_table[2 * MAX_IDE_DEVS];
|
||||||
static const int bus[4] = { 0, 0, 1, 1 };
|
static const int bus[4] = { 0, 0, 1, 1 };
|
||||||
static const int unit[4] = { 0, 1, 0, 1 };
|
static const int unit[4] = { 0, 1, 0, 1 };
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
ide_drive_get(hd_table, ARRAY_SIZE(hd_table));
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
if (hd_table[i]) {
|
if (hd_table[i]) {
|
||||||
ide_create_drive(d->bus + bus[i], unit[i], hd_table[i]);
|
ide_create_drive(d->bus + bus[i], unit[i], hd_table[i]);
|
||||||
|
@ -241,11 +241,8 @@ static void piix4_register_types(void)
|
|||||||
|
|
||||||
type_init(piix4_register_types)
|
type_init(piix4_register_types)
|
||||||
|
|
||||||
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
|
||||||
I2CBus **smbus, size_t ide_buses)
|
|
||||||
{
|
{
|
||||||
size_t ide_drives = ide_buses * MAX_IDE_DEVS;
|
|
||||||
DriveInfo **hd;
|
|
||||||
PCIDevice *pci;
|
PCIDevice *pci;
|
||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
int devfn = PCI_DEVFN(10, 0);
|
int devfn = PCI_DEVFN(10, 0);
|
||||||
@ -258,10 +255,7 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
|||||||
}
|
}
|
||||||
|
|
||||||
pci = pci_create_simple(pci_bus, devfn + 1, "piix4-ide");
|
pci = pci_create_simple(pci_bus, devfn + 1, "piix4-ide");
|
||||||
hd = g_new(DriveInfo *, ide_drives);
|
pci_ide_create_devs(pci);
|
||||||
ide_drive_get(hd, ide_drives);
|
|
||||||
pci_ide_create_devs(pci, hd);
|
|
||||||
g_free(hd);
|
|
||||||
|
|
||||||
pci_create_simple(pci_bus, devfn + 2, "piix4-usb-uhci");
|
pci_create_simple(pci_bus, devfn + 2, "piix4-usb-uhci");
|
||||||
if (smbus) {
|
if (smbus) {
|
||||||
|
@ -239,7 +239,6 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
|
|||||||
{
|
{
|
||||||
qemu_irq *i8259;
|
qemu_irq *i8259;
|
||||||
ISABus *isa_bus;
|
ISABus *isa_bus;
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
|
||||||
PCIDevice *dev;
|
PCIDevice *dev;
|
||||||
|
|
||||||
isa_bus = vt82c686b_isa_init(pci_bus, PCI_DEVFN(slot, 0));
|
isa_bus = vt82c686b_isa_init(pci_bus, PCI_DEVFN(slot, 0));
|
||||||
@ -259,8 +258,7 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
|
|||||||
isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
|
isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
|
||||||
|
|
||||||
dev = pci_create_simple(pci_bus, PCI_DEVFN(slot, 1), "via-ide");
|
dev = pci_create_simple(pci_bus, PCI_DEVFN(slot, 1), "via-ide");
|
||||||
ide_drive_get(hd, ARRAY_SIZE(hd));
|
pci_ide_create_devs(dev);
|
||||||
pci_ide_create_devs(dev, hd);
|
|
||||||
|
|
||||||
pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
|
pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
|
||||||
pci_create_simple(pci_bus, PCI_DEVFN(slot, 3), "vt82c686b-usb-uhci");
|
pci_create_simple(pci_bus, PCI_DEVFN(slot, 3), "vt82c686b-usb-uhci");
|
||||||
|
@ -1403,7 +1403,7 @@ void mips_malta_init(MachineState *machine)
|
|||||||
pci_bus = gt64120_register(s->i8259);
|
pci_bus = gt64120_register(s->i8259);
|
||||||
|
|
||||||
/* Southbridge */
|
/* Southbridge */
|
||||||
dev = piix4_create(pci_bus, &isa_bus, &smbus, MAX_IDE_BUS);
|
dev = piix4_create(pci_bus, &isa_bus, &smbus);
|
||||||
|
|
||||||
/* Interrupt controller */
|
/* Interrupt controller */
|
||||||
qdev_connect_gpio_out_named(dev, "intr", 0, i8259_irq);
|
qdev_connect_gpio_out_named(dev, "intr", 0, i8259_irq);
|
||||||
|
@ -50,7 +50,6 @@
|
|||||||
#include "hw/sparc/sparc64.h"
|
#include "hw/sparc/sparc64.h"
|
||||||
#include "hw/nvram/fw_cfg.h"
|
#include "hw/nvram/fw_cfg.h"
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
#include "hw/ide.h"
|
|
||||||
#include "hw/ide/pci.h"
|
#include "hw/ide/pci.h"
|
||||||
#include "hw/loader.h"
|
#include "hw/loader.h"
|
||||||
#include "hw/fw-path-provider.h"
|
#include "hw/fw-path-provider.h"
|
||||||
@ -563,7 +562,6 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
|||||||
PCIBus *pci_bus, *pci_busA, *pci_busB;
|
PCIBus *pci_bus, *pci_busA, *pci_busB;
|
||||||
PCIDevice *ebus, *pci_dev;
|
PCIDevice *ebus, *pci_dev;
|
||||||
SysBusDevice *s;
|
SysBusDevice *s;
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
|
||||||
DeviceState *iommu, *dev;
|
DeviceState *iommu, *dev;
|
||||||
FWCfgState *fw_cfg;
|
FWCfgState *fw_cfg;
|
||||||
NICInfo *nd;
|
NICInfo *nd;
|
||||||
@ -663,12 +661,10 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
|||||||
qemu_macaddr_default_if_unset(&macaddr);
|
qemu_macaddr_default_if_unset(&macaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
ide_drive_get(hd, ARRAY_SIZE(hd));
|
|
||||||
|
|
||||||
pci_dev = pci_create(pci_busA, PCI_DEVFN(3, 0), "cmd646-ide");
|
pci_dev = pci_create(pci_busA, PCI_DEVFN(3, 0), "cmd646-ide");
|
||||||
qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1);
|
qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1);
|
||||||
qdev_init_nofail(&pci_dev->qdev);
|
qdev_init_nofail(&pci_dev->qdev);
|
||||||
pci_ide_create_devs(pci_dev, hd);
|
pci_ide_create_devs(pci_dev);
|
||||||
|
|
||||||
/* Map NVRAM into I/O (ebus) space */
|
/* Map NVRAM into I/O (ebus) space */
|
||||||
nvram = m48t59_init(NULL, 0, 0, NVRAM_SIZE, 1968, 59);
|
nvram = m48t59_init(NULL, 0, 0, NVRAM_SIZE, 1968, 59);
|
||||||
|
@ -63,7 +63,7 @@ static inline IDEState *bmdma_active_if(BMDMAState *bmdma)
|
|||||||
void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
|
void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
|
||||||
void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
|
void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
|
||||||
extern MemoryRegionOps bmdma_addr_ioport_ops;
|
extern MemoryRegionOps bmdma_addr_ioport_ops;
|
||||||
void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
|
void pci_ide_create_devs(PCIDevice *dev);
|
||||||
|
|
||||||
extern const VMStateDescription vmstate_ide_pci;
|
extern const VMStateDescription vmstate_ide_pci;
|
||||||
extern const MemoryRegionOps pci_ide_cmd_le_ops;
|
extern const MemoryRegionOps pci_ide_cmd_le_ops;
|
||||||
|
@ -68,7 +68,6 @@ extern PCIDevice *piix4_dev;
|
|||||||
|
|
||||||
PIIX3State *piix3_create(PCIBus *pci_bus, ISABus **isa_bus);
|
PIIX3State *piix3_create(PCIBus *pci_bus, ISABus **isa_bus);
|
||||||
|
|
||||||
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus);
|
||||||
I2CBus **smbus, size_t ide_buses);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user