mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/armbru/tags/pull-qom-2020-06-15' into staging
QOM patches for 2020-06-15 # gpg: Signature made Mon 15 Jun 2020 21:07:19 BST # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "armbru@redhat.com" # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full] # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [full] # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * remotes/armbru/tags/pull-qom-2020-06-15: (84 commits) MAINTAINERS: Make section QOM cover hw/core/*bus.c as well qdev: qdev_init_nofail() is now unused, drop qdev: Convert bus-less devices to qdev_realize() with Coccinelle qdev: Use qdev_realize() in qdev_device_add() qdev: Make qdev_realize() support bus-less devices s390x/event-facility: Simplify creation of SCLP event devices microbit: Eliminate two local variables in microbit_init() sysbus: sysbus_init_child_obj() is now unused, drop sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 4 sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 3 sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 2 sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 1 qdev: Drop qdev_realize() support for null bus sysbus: Convert to sysbus_realize() etc. with Coccinelle sysbus: New sysbus_realize(), sysbus_realize_and_unref() sysbus: Tidy up sysbus_init_child_obj()'s @childsize arg, part 2 hw/arm/armsse: Pass correct child size to sysbus_init_child_obj() sysbus: Tidy up sysbus_init_child_obj()'s @childsize arg, part 1 microbit: Tidy up sysbus_init_child_obj() @child argument sysbus: Drop useless OBJECT() in sysbus_init_child_obj() calls ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -1218,7 +1218,9 @@ S: Maintained
|
||||
F: hw/ppc/pnv*
|
||||
F: hw/intc/pnv*
|
||||
F: hw/intc/xics_pnv.c
|
||||
F: hw/pci-host/pnv*
|
||||
F: include/hw/ppc/pnv*
|
||||
F: include/hw/pci-host/pnv*
|
||||
F: pc-bios/skiboot.lid
|
||||
F: tests/qtest/pnv*
|
||||
|
||||
@@ -2298,6 +2300,8 @@ R: Eduardo Habkost <ehabkost@redhat.com>
|
||||
S: Supported
|
||||
F: docs/qdev-device-use.txt
|
||||
F: hw/core/qdev*
|
||||
F: hw/core/bus.c
|
||||
F: hw/core/sysbus.c
|
||||
F: include/hw/qdev*
|
||||
F: include/monitor/qdev.h
|
||||
F: include/qom/
|
||||
|
||||
+1
-1
@@ -266,7 +266,7 @@ void acpi_pcihp_device_unplug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState *s,
|
||||
{
|
||||
trace_acpi_pci_unplug(PCI_SLOT(PCI_DEVICE(dev)->devfn),
|
||||
acpi_pcihp_get_bsel(pci_get_bus(PCI_DEVICE(dev))));
|
||||
object_property_set_bool(OBJECT(dev), false, "realized", &error_abort);
|
||||
qdev_unrealize(dev);
|
||||
}
|
||||
|
||||
void acpi_pcihp_device_unplug_request_cb(HotplugHandler *hotplug_dev,
|
||||
|
||||
+4
-2
@@ -514,10 +514,12 @@ I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
||||
qemu_irq sci_irq, qemu_irq smi_irq,
|
||||
int smm_enabled, DeviceState **piix4_pm)
|
||||
{
|
||||
PCIDevice *pci_dev;
|
||||
DeviceState *dev;
|
||||
PIIX4PMState *s;
|
||||
|
||||
dev = DEVICE(pci_create(bus, devfn, TYPE_PIIX4_PM));
|
||||
pci_dev = pci_new(devfn, TYPE_PIIX4_PM);
|
||||
dev = DEVICE(pci_dev);
|
||||
qdev_prop_set_uint32(dev, "smb_io_base", smb_io_base);
|
||||
if (piix4_pm) {
|
||||
*piix4_pm = dev;
|
||||
@@ -531,7 +533,7 @@ I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
||||
s->use_acpi_pci_hotplug = false;
|
||||
}
|
||||
|
||||
qdev_init_nofail(dev);
|
||||
pci_realize_and_unref(pci_dev, bus, &error_fatal);
|
||||
|
||||
return s->smb.smbus;
|
||||
}
|
||||
|
||||
+2
-2
@@ -826,7 +826,7 @@ PCIBus *typhoon_init(MemoryRegion *ram, ISABus **isa_bus, qemu_irq *p_rtc_irq,
|
||||
PCIBus *b;
|
||||
int i;
|
||||
|
||||
dev = qdev_create(NULL, TYPE_TYPHOON_PCI_HOST_BRIDGE);
|
||||
dev = qdev_new(TYPE_TYPHOON_PCI_HOST_BRIDGE);
|
||||
|
||||
s = TYPHOON_PCI_HOST_BRIDGE(dev);
|
||||
phb = PCI_HOST_BRIDGE(dev);
|
||||
@@ -889,7 +889,7 @@ PCIBus *typhoon_init(MemoryRegion *ram, ISABus **isa_bus, qemu_irq *p_rtc_irq,
|
||||
&s->pchip.reg_mem, &s->pchip.reg_io,
|
||||
0, 64, TYPE_PCI_BUS);
|
||||
phb->bus = b;
|
||||
qdev_init_nofail(dev);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
|
||||
/* Host memory as seen from the PCI side, via the IOMMU. */
|
||||
memory_region_init_iommu(&s->pchip.iommu, sizeof(s->pchip.iommu),
|
||||
|
||||
+21
-29
@@ -41,37 +41,31 @@ static void aw_a10_init(Object *obj)
|
||||
{
|
||||
AwA10State *s = AW_A10(obj);
|
||||
|
||||
object_initialize_child(obj, "cpu", &s->cpu, sizeof(s->cpu),
|
||||
ARM_CPU_TYPE_NAME("cortex-a8"),
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu", &s->cpu,
|
||||
ARM_CPU_TYPE_NAME("cortex-a8"));
|
||||
|
||||
sysbus_init_child_obj(obj, "intc", &s->intc, sizeof(s->intc),
|
||||
TYPE_AW_A10_PIC);
|
||||
object_initialize_child(obj, "intc", &s->intc, TYPE_AW_A10_PIC);
|
||||
|
||||
sysbus_init_child_obj(obj, "timer", &s->timer, sizeof(s->timer),
|
||||
TYPE_AW_A10_PIT);
|
||||
object_initialize_child(obj, "timer", &s->timer, TYPE_AW_A10_PIT);
|
||||
|
||||
sysbus_init_child_obj(obj, "emac", &s->emac, sizeof(s->emac), TYPE_AW_EMAC);
|
||||
object_initialize_child(obj, "emac", &s->emac, TYPE_AW_EMAC);
|
||||
|
||||
sysbus_init_child_obj(obj, "sata", &s->sata, sizeof(s->sata),
|
||||
TYPE_ALLWINNER_AHCI);
|
||||
object_initialize_child(obj, "sata", &s->sata, TYPE_ALLWINNER_AHCI);
|
||||
|
||||
if (machine_usb(current_machine)) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < AW_A10_NUM_USB; i++) {
|
||||
sysbus_init_child_obj(obj, "ehci[*]", OBJECT(&s->ehci[i]),
|
||||
sizeof(s->ehci[i]), TYPE_PLATFORM_EHCI);
|
||||
sysbus_init_child_obj(obj, "ohci[*]", OBJECT(&s->ohci[i]),
|
||||
sizeof(s->ohci[i]), TYPE_SYSBUS_OHCI);
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ohci[*]", &s->ohci[i],
|
||||
TYPE_SYSBUS_OHCI);
|
||||
}
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "mmc0", &s->mmc0, sizeof(s->mmc0),
|
||||
TYPE_AW_SDHOST_SUN4I);
|
||||
object_initialize_child(obj, "mmc0", &s->mmc0, TYPE_AW_SDHOST_SUN4I);
|
||||
|
||||
sysbus_init_child_obj(obj, "rtc", &s->rtc, sizeof(s->rtc),
|
||||
TYPE_AW_RTC_SUN4I);
|
||||
object_initialize_child(obj, "rtc", &s->rtc, TYPE_AW_RTC_SUN4I);
|
||||
}
|
||||
|
||||
static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
@@ -80,13 +74,13 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
SysBusDevice *sysbusdev;
|
||||
Error *err = NULL;
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu), NULL, &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->intc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->intc), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -99,7 +93,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
|
||||
qdev_pass_gpios(DEVICE(&s->intc), dev, NULL);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->timer), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timer), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -123,7 +117,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
|
||||
qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->emac), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->emac), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -132,7 +126,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_mmio_map(sysbusdev, 0, AW_A10_EMAC_BASE);
|
||||
sysbus_connect_irq(sysbusdev, 0, qdev_get_gpio_in(dev, 55));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->sata), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sata), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -155,8 +149,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), true,
|
||||
"companion-enable", &error_fatal);
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), true, "realized",
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
AW_A10_EHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
@@ -164,8 +157,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_str(OBJECT(&s->ohci[i]), bus, "masterbus",
|
||||
&error_fatal);
|
||||
object_property_set_bool(OBJECT(&s->ohci[i]), true, "realized",
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ohci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
AW_A10_OHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
@@ -174,14 +166,14 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* SD/MMC */
|
||||
qdev_init_nofail(DEVICE(&s->mmc0));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mmc0), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->mmc0), 0, AW_A10_MMC0_BASE);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->mmc0), 0, qdev_get_gpio_in(dev, 32));
|
||||
object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->mmc0),
|
||||
"sd-bus");
|
||||
|
||||
/* RTC */
|
||||
qdev_init_nofail(DEVICE(&s->rtc));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rtc), &error_fatal);
|
||||
sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->rtc), 0, AW_A10_RTC_BASE, 10);
|
||||
}
|
||||
|
||||
|
||||
+23
-34
@@ -194,50 +194,39 @@ static void allwinner_h3_init(Object *obj)
|
||||
s->memmap = allwinner_h3_memmap;
|
||||
|
||||
for (int i = 0; i < AW_H3_NUM_CPUS; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", &s->cpus[i], sizeof(s->cpus[i]),
|
||||
ARM_CPU_TYPE_NAME("cortex-a7"),
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu[*]", &s->cpus[i],
|
||||
ARM_CPU_TYPE_NAME("cortex-a7"));
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "gic", &s->gic, sizeof(s->gic),
|
||||
TYPE_ARM_GIC);
|
||||
object_initialize_child(obj, "gic", &s->gic, TYPE_ARM_GIC);
|
||||
|
||||
sysbus_init_child_obj(obj, "timer", &s->timer, sizeof(s->timer),
|
||||
TYPE_AW_A10_PIT);
|
||||
object_initialize_child(obj, "timer", &s->timer, TYPE_AW_A10_PIT);
|
||||
object_property_add_alias(obj, "clk0-freq", OBJECT(&s->timer),
|
||||
"clk0-freq");
|
||||
object_property_add_alias(obj, "clk1-freq", OBJECT(&s->timer),
|
||||
"clk1-freq");
|
||||
|
||||
sysbus_init_child_obj(obj, "ccu", &s->ccu, sizeof(s->ccu),
|
||||
TYPE_AW_H3_CCU);
|
||||
object_initialize_child(obj, "ccu", &s->ccu, TYPE_AW_H3_CCU);
|
||||
|
||||
sysbus_init_child_obj(obj, "sysctrl", &s->sysctrl, sizeof(s->sysctrl),
|
||||
TYPE_AW_H3_SYSCTRL);
|
||||
object_initialize_child(obj, "sysctrl", &s->sysctrl, TYPE_AW_H3_SYSCTRL);
|
||||
|
||||
sysbus_init_child_obj(obj, "cpucfg", &s->cpucfg, sizeof(s->cpucfg),
|
||||
TYPE_AW_CPUCFG);
|
||||
object_initialize_child(obj, "cpucfg", &s->cpucfg, TYPE_AW_CPUCFG);
|
||||
|
||||
sysbus_init_child_obj(obj, "sid", &s->sid, sizeof(s->sid),
|
||||
TYPE_AW_SID);
|
||||
object_initialize_child(obj, "sid", &s->sid, TYPE_AW_SID);
|
||||
object_property_add_alias(obj, "identifier", OBJECT(&s->sid),
|
||||
"identifier");
|
||||
|
||||
sysbus_init_child_obj(obj, "mmc0", &s->mmc0, sizeof(s->mmc0),
|
||||
TYPE_AW_SDHOST_SUN5I);
|
||||
object_initialize_child(obj, "mmc0", &s->mmc0, TYPE_AW_SDHOST_SUN5I);
|
||||
|
||||
sysbus_init_child_obj(obj, "emac", &s->emac, sizeof(s->emac),
|
||||
TYPE_AW_SUN8I_EMAC);
|
||||
object_initialize_child(obj, "emac", &s->emac, TYPE_AW_SUN8I_EMAC);
|
||||
|
||||
sysbus_init_child_obj(obj, "dramc", &s->dramc, sizeof(s->dramc),
|
||||
TYPE_AW_H3_DRAMC);
|
||||
object_initialize_child(obj, "dramc", &s->dramc, TYPE_AW_H3_DRAMC);
|
||||
object_property_add_alias(obj, "ram-addr", OBJECT(&s->dramc),
|
||||
"ram-addr");
|
||||
object_property_add_alias(obj, "ram-size", OBJECT(&s->dramc),
|
||||
"ram-size");
|
||||
|
||||
sysbus_init_child_obj(obj, "rtc", &s->rtc, sizeof(s->rtc),
|
||||
TYPE_AW_RTC_SUN6I);
|
||||
object_initialize_child(obj, "rtc", &s->rtc, TYPE_AW_RTC_SUN6I);
|
||||
}
|
||||
|
||||
static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
@@ -261,7 +250,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
qdev_prop_set_bit(DEVICE(&s->cpus[i]), "has_el2", true);
|
||||
|
||||
/* Mark realized */
|
||||
qdev_init_nofail(DEVICE(&s->cpus[i]));
|
||||
qdev_realize(DEVICE(&s->cpus[i]), NULL, &error_fatal);
|
||||
}
|
||||
|
||||
/* Generic Interrupt Controller */
|
||||
@@ -271,7 +260,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
qdev_prop_set_uint32(DEVICE(&s->gic), "num-cpu", AW_H3_NUM_CPUS);
|
||||
qdev_prop_set_bit(DEVICE(&s->gic), "has-security-extensions", false);
|
||||
qdev_prop_set_bit(DEVICE(&s->gic), "has-virtualization-extensions", true);
|
||||
qdev_init_nofail(DEVICE(&s->gic));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gic), &error_fatal);
|
||||
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 0, s->memmap[AW_H3_GIC_DIST]);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, s->memmap[AW_H3_GIC_CPU]);
|
||||
@@ -322,7 +311,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Timer */
|
||||
qdev_init_nofail(DEVICE(&s->timer));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timer), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->timer), 0, s->memmap[AW_H3_PIT]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->timer), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_TIMER0));
|
||||
@@ -344,23 +333,23 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
&s->sram_c);
|
||||
|
||||
/* Clock Control Unit */
|
||||
qdev_init_nofail(DEVICE(&s->ccu));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ccu), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccu), 0, s->memmap[AW_H3_CCU]);
|
||||
|
||||
/* System Control */
|
||||
qdev_init_nofail(DEVICE(&s->sysctrl));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sysctrl), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysctrl), 0, s->memmap[AW_H3_SYSCTRL]);
|
||||
|
||||
/* CPU Configuration */
|
||||
qdev_init_nofail(DEVICE(&s->cpucfg));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->cpucfg), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->cpucfg), 0, s->memmap[AW_H3_CPUCFG]);
|
||||
|
||||
/* Security Identifier */
|
||||
qdev_init_nofail(DEVICE(&s->sid));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sid), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sid), 0, s->memmap[AW_H3_SID]);
|
||||
|
||||
/* SD/MMC */
|
||||
qdev_init_nofail(DEVICE(&s->mmc0));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mmc0), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->mmc0), 0, s->memmap[AW_H3_MMC0]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->mmc0), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_MMC0));
|
||||
@@ -373,7 +362,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
qemu_check_nic_model(&nd_table[0], TYPE_AW_SUN8I_EMAC);
|
||||
qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
|
||||
}
|
||||
qdev_init_nofail(DEVICE(&s->emac));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->emac), 0, s->memmap[AW_H3_EMAC]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EMAC));
|
||||
@@ -423,13 +412,13 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
|
||||
115200, serial_hd(3), DEVICE_NATIVE_ENDIAN);
|
||||
|
||||
/* DRAMC */
|
||||
qdev_init_nofail(DEVICE(&s->dramc));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->dramc), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 0, s->memmap[AW_H3_DRAMCOM]);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 1, s->memmap[AW_H3_DRAMCTL]);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 2, s->memmap[AW_H3_DRAMPHY]);
|
||||
|
||||
/* RTC */
|
||||
qdev_init_nofail(DEVICE(&s->rtc));
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rtc), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->rtc), 0, s->memmap[AW_H3_RTC]);
|
||||
|
||||
/* Unimplemented devices */
|
||||
|
||||
+71
-103
@@ -251,15 +251,13 @@ static void armsse_init(Object *obj)
|
||||
char *name;
|
||||
|
||||
name = g_strdup_printf("cluster%d", i);
|
||||
object_initialize_child(obj, name, &s->cluster[i],
|
||||
sizeof(s->cluster[i]), TYPE_CPU_CLUSTER,
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, name, &s->cluster[i], TYPE_CPU_CLUSTER);
|
||||
qdev_prop_set_uint32(DEVICE(&s->cluster[i]), "cluster-id", i);
|
||||
g_free(name);
|
||||
|
||||
name = g_strdup_printf("armv7m%d", i);
|
||||
sysbus_init_child_obj(OBJECT(&s->cluster[i]), name,
|
||||
&s->armv7m[i], sizeof(s->armv7m), TYPE_ARMV7M);
|
||||
object_initialize_child(OBJECT(&s->cluster[i]), name, &s->armv7m[i],
|
||||
TYPE_ARMV7M);
|
||||
qdev_prop_set_string(DEVICE(&s->armv7m[i]), "cpu-type",
|
||||
ARM_CPU_TYPE_NAME("cortex-m33"));
|
||||
g_free(name);
|
||||
@@ -274,74 +272,61 @@ static void armsse_init(Object *obj)
|
||||
}
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "secctl", &s->secctl, sizeof(s->secctl),
|
||||
TYPE_IOTKIT_SECCTL);
|
||||
sysbus_init_child_obj(obj, "apb-ppc0", &s->apb_ppc0, sizeof(s->apb_ppc0),
|
||||
TYPE_TZ_PPC);
|
||||
sysbus_init_child_obj(obj, "apb-ppc1", &s->apb_ppc1, sizeof(s->apb_ppc1),
|
||||
TYPE_TZ_PPC);
|
||||
object_initialize_child(obj, "secctl", &s->secctl, TYPE_IOTKIT_SECCTL);
|
||||
object_initialize_child(obj, "apb-ppc0", &s->apb_ppc0, TYPE_TZ_PPC);
|
||||
object_initialize_child(obj, "apb-ppc1", &s->apb_ppc1, TYPE_TZ_PPC);
|
||||
for (i = 0; i < info->sram_banks; i++) {
|
||||
char *name = g_strdup_printf("mpc%d", i);
|
||||
sysbus_init_child_obj(obj, name, &s->mpc[i],
|
||||
sizeof(s->mpc[i]), TYPE_TZ_MPC);
|
||||
object_initialize_child(obj, name, &s->mpc[i], TYPE_TZ_MPC);
|
||||
g_free(name);
|
||||
}
|
||||
object_initialize_child(obj, "mpc-irq-orgate", &s->mpc_irq_orgate,
|
||||
sizeof(s->mpc_irq_orgate), TYPE_OR_IRQ,
|
||||
&error_abort, NULL);
|
||||
TYPE_OR_IRQ);
|
||||
|
||||
for (i = 0; i < IOTS_NUM_EXP_MPC + info->sram_banks; i++) {
|
||||
char *name = g_strdup_printf("mpc-irq-splitter-%d", i);
|
||||
SplitIRQ *splitter = &s->mpc_irq_splitter[i];
|
||||
|
||||
object_initialize_child(obj, name, splitter, sizeof(*splitter),
|
||||
TYPE_SPLIT_IRQ, &error_abort, NULL);
|
||||
object_initialize_child(obj, name, splitter, TYPE_SPLIT_IRQ);
|
||||
g_free(name);
|
||||
}
|
||||
sysbus_init_child_obj(obj, "timer0", &s->timer0, sizeof(s->timer0),
|
||||
TYPE_CMSDK_APB_TIMER);
|
||||
sysbus_init_child_obj(obj, "timer1", &s->timer1, sizeof(s->timer1),
|
||||
TYPE_CMSDK_APB_TIMER);
|
||||
sysbus_init_child_obj(obj, "s32ktimer", &s->s32ktimer, sizeof(s->s32ktimer),
|
||||
TYPE_CMSDK_APB_TIMER);
|
||||
sysbus_init_child_obj(obj, "dualtimer", &s->dualtimer, sizeof(s->dualtimer),
|
||||
TYPE_CMSDK_APB_DUALTIMER);
|
||||
sysbus_init_child_obj(obj, "s32kwatchdog", &s->s32kwatchdog,
|
||||
sizeof(s->s32kwatchdog), TYPE_CMSDK_APB_WATCHDOG);
|
||||
sysbus_init_child_obj(obj, "nswatchdog", &s->nswatchdog,
|
||||
sizeof(s->nswatchdog), TYPE_CMSDK_APB_WATCHDOG);
|
||||
sysbus_init_child_obj(obj, "swatchdog", &s->swatchdog,
|
||||
sizeof(s->swatchdog), TYPE_CMSDK_APB_WATCHDOG);
|
||||
sysbus_init_child_obj(obj, "armsse-sysctl", &s->sysctl,
|
||||
sizeof(s->sysctl), TYPE_IOTKIT_SYSCTL);
|
||||
sysbus_init_child_obj(obj, "armsse-sysinfo", &s->sysinfo,
|
||||
sizeof(s->sysinfo), TYPE_IOTKIT_SYSINFO);
|
||||
object_initialize_child(obj, "timer0", &s->timer0, TYPE_CMSDK_APB_TIMER);
|
||||
object_initialize_child(obj, "timer1", &s->timer1, TYPE_CMSDK_APB_TIMER);
|
||||
object_initialize_child(obj, "s32ktimer", &s->s32ktimer,
|
||||
TYPE_CMSDK_APB_TIMER);
|
||||
object_initialize_child(obj, "dualtimer", &s->dualtimer,
|
||||
TYPE_CMSDK_APB_DUALTIMER);
|
||||
object_initialize_child(obj, "s32kwatchdog", &s->s32kwatchdog,
|
||||
TYPE_CMSDK_APB_WATCHDOG);
|
||||
object_initialize_child(obj, "nswatchdog", &s->nswatchdog,
|
||||
TYPE_CMSDK_APB_WATCHDOG);
|
||||
object_initialize_child(obj, "swatchdog", &s->swatchdog,
|
||||
TYPE_CMSDK_APB_WATCHDOG);
|
||||
object_initialize_child(obj, "armsse-sysctl", &s->sysctl,
|
||||
TYPE_IOTKIT_SYSCTL);
|
||||
object_initialize_child(obj, "armsse-sysinfo", &s->sysinfo,
|
||||
TYPE_IOTKIT_SYSINFO);
|
||||
if (info->has_mhus) {
|
||||
sysbus_init_child_obj(obj, "mhu0", &s->mhu[0], sizeof(s->mhu[0]),
|
||||
TYPE_ARMSSE_MHU);
|
||||
sysbus_init_child_obj(obj, "mhu1", &s->mhu[1], sizeof(s->mhu[1]),
|
||||
TYPE_ARMSSE_MHU);
|
||||
object_initialize_child(obj, "mhu0", &s->mhu[0], TYPE_ARMSSE_MHU);
|
||||
object_initialize_child(obj, "mhu1", &s->mhu[1], TYPE_ARMSSE_MHU);
|
||||
}
|
||||
if (info->has_ppus) {
|
||||
for (i = 0; i < info->num_cpus; i++) {
|
||||
char *name = g_strdup_printf("CPU%dCORE_PPU", i);
|
||||
int ppuidx = CPU0CORE_PPU + i;
|
||||
|
||||
sysbus_init_child_obj(obj, name, &s->ppu[ppuidx],
|
||||
sizeof(s->ppu[ppuidx]),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, name, &s->ppu[ppuidx],
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
g_free(name);
|
||||
}
|
||||
sysbus_init_child_obj(obj, "DBG_PPU", &s->ppu[DBG_PPU],
|
||||
sizeof(s->ppu[DBG_PPU]),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, "DBG_PPU", &s->ppu[DBG_PPU],
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
for (i = 0; i < info->sram_banks; i++) {
|
||||
char *name = g_strdup_printf("RAM%d_PPU", i);
|
||||
int ppuidx = RAM0_PPU + i;
|
||||
|
||||
sysbus_init_child_obj(obj, name, &s->ppu[ppuidx],
|
||||
sizeof(s->ppu[ppuidx]),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, name, &s->ppu[ppuidx],
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
@@ -349,9 +334,8 @@ static void armsse_init(Object *obj)
|
||||
for (i = 0; i < info->num_cpus; i++) {
|
||||
char *name = g_strdup_printf("cachectrl%d", i);
|
||||
|
||||
sysbus_init_child_obj(obj, name, &s->cachectrl[i],
|
||||
sizeof(s->cachectrl[i]),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, name, &s->cachectrl[i],
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
@@ -359,9 +343,8 @@ static void armsse_init(Object *obj)
|
||||
for (i = 0; i < info->num_cpus; i++) {
|
||||
char *name = g_strdup_printf("cpusecctrl%d", i);
|
||||
|
||||
sysbus_init_child_obj(obj, name, &s->cpusecctrl[i],
|
||||
sizeof(s->cpusecctrl[i]),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, name, &s->cpusecctrl[i],
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
@@ -369,27 +352,21 @@ static void armsse_init(Object *obj)
|
||||
for (i = 0; i < info->num_cpus; i++) {
|
||||
char *name = g_strdup_printf("cpuid%d", i);
|
||||
|
||||
sysbus_init_child_obj(obj, name, &s->cpuid[i],
|
||||
sizeof(s->cpuid[i]),
|
||||
TYPE_ARMSSE_CPUID);
|
||||
object_initialize_child(obj, name, &s->cpuid[i],
|
||||
TYPE_ARMSSE_CPUID);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
object_initialize_child(obj, "nmi-orgate", &s->nmi_orgate,
|
||||
sizeof(s->nmi_orgate), TYPE_OR_IRQ,
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "nmi-orgate", &s->nmi_orgate, TYPE_OR_IRQ);
|
||||
object_initialize_child(obj, "ppc-irq-orgate", &s->ppc_irq_orgate,
|
||||
sizeof(s->ppc_irq_orgate), TYPE_OR_IRQ,
|
||||
&error_abort, NULL);
|
||||
TYPE_OR_IRQ);
|
||||
object_initialize_child(obj, "sec-resp-splitter", &s->sec_resp_splitter,
|
||||
sizeof(s->sec_resp_splitter), TYPE_SPLIT_IRQ,
|
||||
&error_abort, NULL);
|
||||
TYPE_SPLIT_IRQ);
|
||||
for (i = 0; i < ARRAY_SIZE(s->ppc_irq_splitter); i++) {
|
||||
char *name = g_strdup_printf("ppc-irq-splitter-%d", i);
|
||||
SplitIRQ *splitter = &s->ppc_irq_splitter[i];
|
||||
|
||||
object_initialize_child(obj, name, splitter, sizeof(*splitter),
|
||||
TYPE_SPLIT_IRQ, &error_abort, NULL);
|
||||
object_initialize_child(obj, name, splitter, TYPE_SPLIT_IRQ);
|
||||
g_free(name);
|
||||
}
|
||||
if (info->num_cpus > 1) {
|
||||
@@ -398,8 +375,7 @@ static void armsse_init(Object *obj)
|
||||
char *name = g_strdup_printf("cpu-irq-splitter%d", i);
|
||||
SplitIRQ *splitter = &s->cpu_irq_splitter[i];
|
||||
|
||||
object_initialize_child(obj, name, splitter, sizeof(*splitter),
|
||||
TYPE_SPLIT_IRQ, &error_abort, NULL);
|
||||
object_initialize_child(obj, name, splitter, TYPE_SPLIT_IRQ);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
@@ -446,7 +422,7 @@ static void map_ppu(ARMSSE *s, int ppuidx, const char *name, hwaddr addr)
|
||||
|
||||
qdev_prop_set_string(dev, "name", name);
|
||||
qdev_prop_set_uint64(dev, "size", 0x1000);
|
||||
qdev_init_nofail(dev);
|
||||
sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ppu[ppuidx]), 0, addr);
|
||||
}
|
||||
|
||||
@@ -597,7 +573,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(cpuobj, true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(cpuobj), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -608,8 +584,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
* CPU must exist and have been parented into the cluster before
|
||||
* the cluster is realized.
|
||||
*/
|
||||
object_property_set_bool(OBJECT(&s->cluster[i]),
|
||||
true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cluster[i]), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -645,7 +620,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(splitter, true, "realized", &err);
|
||||
qdev_realize(DEVICE(splitter), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -678,7 +653,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Security controller */
|
||||
object_property_set_bool(OBJECT(&s->secctl), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->secctl), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -701,8 +676,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->sec_resp_splitter), true,
|
||||
"realized", &err);
|
||||
qdev_realize(DEVICE(&s->sec_resp_splitter), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -730,7 +704,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->mpc[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mpc[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -753,8 +727,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->mpc_irq_orgate), true,
|
||||
"realized", &err);
|
||||
qdev_realize(DEVICE(&s->mpc_irq_orgate), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -773,7 +746,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
* map its upstream ends to the right place in the container.
|
||||
*/
|
||||
qdev_prop_set_uint32(DEVICE(&s->timer0), "pclk-frq", s->mainclk_frq);
|
||||
object_property_set_bool(OBJECT(&s->timer0), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timer0), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -788,7 +761,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->timer1), "pclk-frq", s->mainclk_frq);
|
||||
object_property_set_bool(OBJECT(&s->timer1), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timer1), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -804,7 +777,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->dualtimer), "pclk-frq", s->mainclk_frq);
|
||||
object_property_set_bool(OBJECT(&s->dualtimer), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->dualtimer), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -833,8 +806,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
int cpunum;
|
||||
SysBusDevice *mhu_sbd = SYS_BUS_DEVICE(&s->mhu[i]);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->mhu[i]), true,
|
||||
"realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mhu[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -865,7 +837,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->apb_ppc0), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->apb_ppc0), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -914,8 +886,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->ppc_irq_orgate), true,
|
||||
"realized", &err);
|
||||
qdev_realize(DEVICE(&s->ppc_irq_orgate), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -938,8 +909,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
qdev_prop_set_string(DEVICE(&s->cachectrl[i]), "name", name);
|
||||
g_free(name);
|
||||
qdev_prop_set_uint64(DEVICE(&s->cachectrl[i]), "size", 0x1000);
|
||||
object_property_set_bool(OBJECT(&s->cachectrl[i]), true,
|
||||
"realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->cachectrl[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -957,8 +927,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
qdev_prop_set_string(DEVICE(&s->cpusecctrl[i]), "name", name);
|
||||
g_free(name);
|
||||
qdev_prop_set_uint64(DEVICE(&s->cpusecctrl[i]), "size", 0x1000);
|
||||
object_property_set_bool(OBJECT(&s->cpusecctrl[i]), true,
|
||||
"realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->cpusecctrl[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -973,8 +942,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
MemoryRegion *mr;
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->cpuid[i]), "CPUID", i);
|
||||
object_property_set_bool(OBJECT(&s->cpuid[i]), true,
|
||||
"realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->cpuid[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -990,7 +958,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
* 0x4002f000: S32K timer
|
||||
*/
|
||||
qdev_prop_set_uint32(DEVICE(&s->s32ktimer), "pclk-frq", S32KCLK);
|
||||
object_property_set_bool(OBJECT(&s->s32ktimer), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->s32ktimer), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1004,7 +972,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->apb_ppc1), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->apb_ppc1), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1042,7 +1010,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->sysinfo), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sysinfo), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1058,7 +1026,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
"INITSVTOR0_RST", &err);
|
||||
object_property_set_int(OBJECT(&s->sysctl), s->init_svtor,
|
||||
"INITSVTOR1_RST", &err);
|
||||
object_property_set_bool(OBJECT(&s->sysctl), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sysctl), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1093,7 +1061,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->nmi_orgate), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->nmi_orgate), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1102,7 +1070,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in_named(DEVICE(&s->armv7m), "NMI", 0));
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->s32kwatchdog), "wdogclk-frq", S32KCLK);
|
||||
object_property_set_bool(OBJECT(&s->s32kwatchdog), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->s32kwatchdog), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1114,7 +1082,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
/* 0x40080000 .. 0x4008ffff : ARMSSE second Base peripheral region */
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->nswatchdog), "wdogclk-frq", s->mainclk_frq);
|
||||
object_property_set_bool(OBJECT(&s->nswatchdog), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->nswatchdog), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1124,7 +1092,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->nswatchdog), 0, 0x40081000);
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(&s->swatchdog), "wdogclk-frq", s->mainclk_frq);
|
||||
object_property_set_bool(OBJECT(&s->swatchdog), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->swatchdog), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1141,7 +1109,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(splitter, true, "realized", &err);
|
||||
qdev_realize(DEVICE(splitter), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -1188,7 +1156,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(splitter), true, "realized", &err);
|
||||
qdev_realize(DEVICE(splitter), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
|
||||
+10
-8
@@ -136,13 +136,13 @@ static void armv7m_instance_init(Object *obj)
|
||||
|
||||
memory_region_init(&s->container, obj, "armv7m-container", UINT64_MAX);
|
||||
|
||||
sysbus_init_child_obj(obj, "nvnic", &s->nvic, sizeof(s->nvic), TYPE_NVIC);
|
||||
object_initialize_child(obj, "nvnic", &s->nvic, TYPE_NVIC);
|
||||
object_property_add_alias(obj, "num-irq",
|
||||
OBJECT(&s->nvic), "num-irq");
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
|
||||
sysbus_init_child_obj(obj, "bitband[*]", &s->bitband[i],
|
||||
sizeof(s->bitband[i]), TYPE_BITBAND);
|
||||
object_initialize_child(obj, "bitband[*]", &s->bitband[i],
|
||||
TYPE_BITBAND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,14 +216,14 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
|
||||
s->cpu->env.nvic = &s->nvic;
|
||||
s->nvic.cpu = s->cpu;
|
||||
|
||||
object_property_set_bool(OBJECT(s->cpu), true, "realized", &err);
|
||||
qdev_realize(DEVICE(s->cpu), NULL, &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Note that we must realize the NVIC after the CPU */
|
||||
object_property_set_bool(OBJECT(&s->nvic), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->nvic), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -245,8 +245,8 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
|
||||
memory_region_add_subregion(&s->container, 0xe000e000,
|
||||
sysbus_mmio_get_region(sbd, 0));
|
||||
|
||||
if (s->enable_bitband) {
|
||||
for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
|
||||
for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
|
||||
if (s->enable_bitband) {
|
||||
Object *obj = OBJECT(&s->bitband[i]);
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(&s->bitband[i]);
|
||||
|
||||
@@ -257,7 +257,7 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
object_property_set_link(obj, OBJECT(s->board_memory),
|
||||
"source-memory", &error_abort);
|
||||
object_property_set_bool(obj, true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(obj), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -265,6 +265,8 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
memory_region_add_subregion(&s->container, bitband_output_addr[i],
|
||||
sysbus_mmio_get_region(sbd, 0));
|
||||
} else {
|
||||
object_unparent(OBJECT(&s->bitband[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+45
-15
@@ -225,12 +225,12 @@ static void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
qemu_irq cs_line;
|
||||
|
||||
fl->flash = ssi_create_slave_no_init(s->spi, flashtype);
|
||||
fl->flash = qdev_new(flashtype);
|
||||
if (dinfo) {
|
||||
qdev_prop_set_drive(fl->flash, "drive", blk_by_legacy_dinfo(dinfo),
|
||||
errp);
|
||||
}
|
||||
qdev_init_nofail(fl->flash);
|
||||
qdev_realize_and_unref(fl->flash, BUS(s->spi), &error_fatal);
|
||||
|
||||
cs_line = qdev_get_gpio_in_named(fl->flash, SSI_GPIO_CS, 0);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(s), i + 1, cs_line);
|
||||
@@ -241,13 +241,14 @@ static void sdhci_attach_drive(SDHCIState *sdhci, DriveInfo *dinfo)
|
||||
{
|
||||
DeviceState *card;
|
||||
|
||||
card = qdev_create(qdev_get_child_bus(DEVICE(sdhci), "sd-bus"),
|
||||
TYPE_SD_CARD);
|
||||
card = qdev_new(TYPE_SD_CARD);
|
||||
if (dinfo) {
|
||||
qdev_prop_set_drive(card, "drive", blk_by_legacy_dinfo(dinfo),
|
||||
&error_fatal);
|
||||
}
|
||||
object_property_set_bool(OBJECT(card), true, "realized", &error_fatal);
|
||||
qdev_realize_and_unref(card,
|
||||
qdev_get_child_bus(DEVICE(sdhci), "sd-bus"),
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
static void aspeed_machine_init(MachineState *machine)
|
||||
@@ -258,6 +259,7 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
DriveInfo *drive0 = drive_get(IF_MTD, 0, 0);
|
||||
ram_addr_t max_ram_size;
|
||||
int i;
|
||||
NICInfo *nd = &nd_table[0];
|
||||
|
||||
bmc = g_new0(AspeedBoardState, 1);
|
||||
|
||||
@@ -265,9 +267,7 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
4 * GiB);
|
||||
memory_region_add_subregion(&bmc->ram_container, 0, machine->ram);
|
||||
|
||||
object_initialize_child(OBJECT(machine), "soc", &bmc->soc,
|
||||
(sizeof(bmc->soc)), amc->soc_name, &error_abort,
|
||||
NULL);
|
||||
object_initialize_child(OBJECT(machine), "soc", &bmc->soc, amc->soc_name);
|
||||
|
||||
sc = ASPEED_SOC_GET_CLASS(&bmc->soc);
|
||||
|
||||
@@ -277,14 +277,20 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
object_property_set_uint(OBJECT(&bmc->soc), ram_size, "ram-size",
|
||||
&error_fatal);
|
||||
|
||||
for (i = 0; i < sc->macs_num; i++) {
|
||||
if ((amc->macs_mask & (1 << i)) && nd->used) {
|
||||
qemu_check_nic_model(nd, TYPE_FTGMAC100);
|
||||
qdev_set_nic_properties(DEVICE(&bmc->soc.ftgmac100[i]), nd);
|
||||
nd++;
|
||||
}
|
||||
}
|
||||
|
||||
object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap1, "hw-strap1",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap2, "hw-strap2",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&bmc->soc), amc->num_cs, "num-cs",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&bmc->soc), machine->smp.cpus, "num-cpus",
|
||||
&error_abort);
|
||||
object_property_set_link(OBJECT(&bmc->soc), OBJECT(&bmc->ram_container),
|
||||
"dram", &error_abort);
|
||||
if (machine->kernel_filename) {
|
||||
@@ -296,8 +302,7 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
object_property_set_int(OBJECT(&bmc->soc), ASPEED_SCU_PROT_KEY,
|
||||
"hw-prot-key", &error_abort);
|
||||
}
|
||||
object_property_set_bool(OBJECT(&bmc->soc), true, "realized",
|
||||
&error_abort);
|
||||
qdev_realize(DEVICE(&bmc->soc), NULL, &error_abort);
|
||||
|
||||
memory_region_add_subregion(get_system_memory(),
|
||||
sc->memmap[ASPEED_SDRAM],
|
||||
@@ -337,7 +342,7 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
if (machine->kernel_filename && bmc->soc.num_cpus > 1) {
|
||||
if (machine->kernel_filename && sc->num_cpus > 1) {
|
||||
/* With no u-boot we must set up a boot stub for the secondary CPU */
|
||||
MemoryRegion *smpboot = g_new(MemoryRegion, 1);
|
||||
memory_region_init_ram(smpboot, OBJECT(bmc), "aspeed.smpboot",
|
||||
@@ -352,7 +357,7 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
|
||||
aspeed_board_binfo.ram_size = ram_size;
|
||||
aspeed_board_binfo.loader_start = sc->memmap[ASPEED_SDRAM];
|
||||
aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus;
|
||||
aspeed_board_binfo.nb_cpus = sc->num_cpus;
|
||||
|
||||
if (amc->i2c_init) {
|
||||
amc->i2c_init(bmc);
|
||||
@@ -549,16 +554,23 @@ static void aspeed_machine_class_props_init(ObjectClass *oc)
|
||||
"boot directly from CE0 flash device");
|
||||
}
|
||||
|
||||
static int aspeed_soc_num_cpus(const char *soc_name)
|
||||
{
|
||||
AspeedSoCClass *sc = ASPEED_SOC_CLASS(object_class_by_name(soc_name));
|
||||
return sc->num_cpus;
|
||||
}
|
||||
|
||||
static void aspeed_machine_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
|
||||
|
||||
mc->init = aspeed_machine_init;
|
||||
mc->max_cpus = ASPEED_CPUS_NUM;
|
||||
mc->no_floppy = 1;
|
||||
mc->no_cdrom = 1;
|
||||
mc->no_parallel = 1;
|
||||
mc->default_ram_id = "ram";
|
||||
amc->macs_mask = ASPEED_MAC0_ON;
|
||||
|
||||
aspeed_machine_class_props_init(oc);
|
||||
}
|
||||
@@ -576,6 +588,8 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 1;
|
||||
amc->i2c_init = palmetto_bmc_i2c_init;
|
||||
mc->default_ram_size = 256 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data)
|
||||
@@ -591,6 +605,8 @@ static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 1;
|
||||
amc->i2c_init = ast2500_evb_i2c_init;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data)
|
||||
@@ -606,6 +622,8 @@ static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 2;
|
||||
amc->i2c_init = romulus_bmc_i2c_init;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_sonorapass_class_init(ObjectClass *oc, void *data)
|
||||
@@ -621,6 +639,8 @@ static void aspeed_machine_sonorapass_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 2;
|
||||
amc->i2c_init = sonorapass_bmc_i2c_init;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data)
|
||||
@@ -636,6 +656,8 @@ static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 2;
|
||||
amc->i2c_init = swift_bmc_i2c_init;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data)
|
||||
@@ -651,6 +673,8 @@ static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data)
|
||||
amc->num_cs = 2;
|
||||
amc->i2c_init = witherspoon_bmc_i2c_init;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *data)
|
||||
@@ -665,8 +689,11 @@ static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *data)
|
||||
amc->fmc_model = "w25q512jv";
|
||||
amc->spi_model = "mx66u51235f";
|
||||
amc->num_cs = 1;
|
||||
amc->macs_mask = ASPEED_MAC1_ON | ASPEED_MAC2_ON | ASPEED_MAC3_ON;
|
||||
amc->i2c_init = ast2600_evb_i2c_init;
|
||||
mc->default_ram_size = 1 * GiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
|
||||
@@ -681,8 +708,11 @@ static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
|
||||
amc->fmc_model = "mx66l1g45g";
|
||||
amc->spi_model = "mx66l1g45g";
|
||||
amc->num_cs = 2;
|
||||
amc->macs_mask = ASPEED_MAC2_ON;
|
||||
amc->i2c_init = witherspoon_bmc_i2c_init; /* Same board layout */
|
||||
mc->default_ram_size = 1 * GiB;
|
||||
mc->default_cpus = mc->min_cpus = mc->max_cpus =
|
||||
aspeed_soc_num_cpus(amc->soc_name);
|
||||
};
|
||||
|
||||
static const TypeInfo aspeed_machine_types[] = {
|
||||
|
||||
+53
-80
@@ -127,14 +127,11 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", OBJECT(&s->cpu[i]),
|
||||
sizeof(s->cpu[i]), sc->cpu_type,
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu[*]", &s->cpu[i], sc->cpu_type);
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.scu-%s", socname);
|
||||
sysbus_init_child_obj(obj, "scu", OBJECT(&s->scu), sizeof(s->scu),
|
||||
typename);
|
||||
object_initialize_child(obj, "scu", &s->scu, typename);
|
||||
qdev_prop_set_uint32(DEVICE(&s->scu), "silicon-rev",
|
||||
sc->silicon_rev);
|
||||
object_property_add_alias(obj, "hw-strap1", OBJECT(&s->scu),
|
||||
@@ -144,39 +141,33 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
||||
object_property_add_alias(obj, "hw-prot-key", OBJECT(&s->scu),
|
||||
"hw-prot-key");
|
||||
|
||||
sysbus_init_child_obj(obj, "a7mpcore", &s->a7mpcore,
|
||||
sizeof(s->a7mpcore), TYPE_A15MPCORE_PRIV);
|
||||
object_initialize_child(obj, "a7mpcore", &s->a7mpcore,
|
||||
TYPE_A15MPCORE_PRIV);
|
||||
|
||||
sysbus_init_child_obj(obj, "rtc", OBJECT(&s->rtc), sizeof(s->rtc),
|
||||
TYPE_ASPEED_RTC);
|
||||
object_initialize_child(obj, "rtc", &s->rtc, TYPE_ASPEED_RTC);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.timer-%s", socname);
|
||||
sysbus_init_child_obj(obj, "timerctrl", OBJECT(&s->timerctrl),
|
||||
sizeof(s->timerctrl), typename);
|
||||
object_initialize_child(obj, "timerctrl", &s->timerctrl, typename);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.i2c-%s", socname);
|
||||
sysbus_init_child_obj(obj, "i2c", OBJECT(&s->i2c), sizeof(s->i2c),
|
||||
typename);
|
||||
object_initialize_child(obj, "i2c", &s->i2c, typename);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.fmc-%s", socname);
|
||||
sysbus_init_child_obj(obj, "fmc", OBJECT(&s->fmc), sizeof(s->fmc),
|
||||
typename);
|
||||
object_initialize_child(obj, "fmc", &s->fmc, typename);
|
||||
object_property_add_alias(obj, "num-cs", OBJECT(&s->fmc), "num-cs");
|
||||
|
||||
for (i = 0; i < sc->spis_num; i++) {
|
||||
snprintf(typename, sizeof(typename), "aspeed.spi%d-%s", i + 1, socname);
|
||||
sysbus_init_child_obj(obj, "spi[*]", OBJECT(&s->spi[i]),
|
||||
sizeof(s->spi[i]), typename);
|
||||
object_initialize_child(obj, "spi[*]", &s->spi[i], typename);
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->ehcis_num; i++) {
|
||||
sysbus_init_child_obj(obj, "ehci[*]", OBJECT(&s->ehci[i]),
|
||||
sizeof(s->ehci[i]), TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.sdmc-%s", socname);
|
||||
sysbus_init_child_obj(obj, "sdmc", OBJECT(&s->sdmc), sizeof(s->sdmc),
|
||||
typename);
|
||||
object_initialize_child(obj, "sdmc", &s->sdmc, typename);
|
||||
object_property_add_alias(obj, "ram-size", OBJECT(&s->sdmc),
|
||||
"ram-size");
|
||||
object_property_add_alias(obj, "max-ram-size", OBJECT(&s->sdmc),
|
||||
@@ -184,49 +175,42 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
||||
|
||||
for (i = 0; i < sc->wdts_num; i++) {
|
||||
snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname);
|
||||
sysbus_init_child_obj(obj, "wdt[*]", OBJECT(&s->wdt[i]),
|
||||
sizeof(s->wdt[i]), typename);
|
||||
object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename);
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->macs_num; i++) {
|
||||
sysbus_init_child_obj(obj, "ftgmac100[*]", OBJECT(&s->ftgmac100[i]),
|
||||
sizeof(s->ftgmac100[i]), TYPE_FTGMAC100);
|
||||
object_initialize_child(obj, "ftgmac100[*]", &s->ftgmac100[i],
|
||||
TYPE_FTGMAC100);
|
||||
|
||||
sysbus_init_child_obj(obj, "mii[*]", &s->mii[i], sizeof(s->mii[i]),
|
||||
TYPE_ASPEED_MII);
|
||||
object_initialize_child(obj, "mii[*]", &s->mii[i], TYPE_ASPEED_MII);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "xdma", OBJECT(&s->xdma), sizeof(s->xdma),
|
||||
TYPE_ASPEED_XDMA);
|
||||
object_initialize_child(obj, "xdma", &s->xdma, TYPE_ASPEED_XDMA);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.gpio-%s", socname);
|
||||
sysbus_init_child_obj(obj, "gpio", OBJECT(&s->gpio), sizeof(s->gpio),
|
||||
typename);
|
||||
object_initialize_child(obj, "gpio", &s->gpio, typename);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.gpio-%s-1_8v", socname);
|
||||
sysbus_init_child_obj(obj, "gpio_1_8v", OBJECT(&s->gpio_1_8v),
|
||||
sizeof(s->gpio_1_8v), typename);
|
||||
object_initialize_child(obj, "gpio_1_8v", &s->gpio_1_8v, typename);
|
||||
|
||||
sysbus_init_child_obj(obj, "sd-controller", OBJECT(&s->sdhci),
|
||||
sizeof(s->sdhci), TYPE_ASPEED_SDHCI);
|
||||
object_initialize_child(obj, "sd-controller", &s->sdhci,
|
||||
TYPE_ASPEED_SDHCI);
|
||||
|
||||
object_property_set_int(OBJECT(&s->sdhci), 2, "num-slots", &error_abort);
|
||||
|
||||
/* Init sd card slot class here so that they're under the correct parent */
|
||||
for (i = 0; i < ASPEED_SDHCI_NUM_SLOTS; ++i) {
|
||||
sysbus_init_child_obj(obj, "sd-controller.sdhci[*]",
|
||||
OBJECT(&s->sdhci.slots[i]),
|
||||
sizeof(s->sdhci.slots[i]), TYPE_SYSBUS_SDHCI);
|
||||
object_initialize_child(obj, "sd-controller.sdhci[*]",
|
||||
&s->sdhci.slots[i], TYPE_SYSBUS_SDHCI);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "emmc-controller", OBJECT(&s->emmc),
|
||||
sizeof(s->emmc), TYPE_ASPEED_SDHCI);
|
||||
object_initialize_child(obj, "emmc-controller", &s->emmc,
|
||||
TYPE_ASPEED_SDHCI);
|
||||
|
||||
object_property_set_int(OBJECT(&s->emmc), 1, "num-slots", &error_abort);
|
||||
|
||||
sysbus_init_child_obj(obj, "emmc-controller.sdhci",
|
||||
OBJECT(&s->emmc.slots[0]), sizeof(s->emmc.slots[0]),
|
||||
TYPE_SYSBUS_SDHCI);
|
||||
object_initialize_child(obj, "emmc-controller.sdhci", &s->emmc.slots[0],
|
||||
TYPE_SYSBUS_SDHCI);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -255,17 +239,11 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
create_unimplemented_device("aspeed.video", sc->memmap[ASPEED_VIDEO],
|
||||
0x1000);
|
||||
|
||||
if (s->num_cpus > sc->num_cpus) {
|
||||
warn_report("%s: invalid number of CPUs %d, using default %d",
|
||||
sc->name, s->num_cpus, sc->num_cpus);
|
||||
s->num_cpus = sc->num_cpus;
|
||||
}
|
||||
|
||||
/* CPU */
|
||||
for (i = 0; i < s->num_cpus; i++) {
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_property_set_int(OBJECT(&s->cpu[i]), QEMU_PSCI_CONDUIT_SMC,
|
||||
"psci-conduit", &error_abort);
|
||||
if (s->num_cpus > 1) {
|
||||
if (sc->num_cpus > 1) {
|
||||
object_property_set_int(OBJECT(&s->cpu[i]),
|
||||
ASPEED_A7MPCORE_ADDR,
|
||||
"reset-cbar", &error_abort);
|
||||
@@ -281,7 +259,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
* is needed when using -kernel
|
||||
*/
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu[i]), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -289,28 +267,27 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* A7MPCORE */
|
||||
object_property_set_int(OBJECT(&s->a7mpcore), s->num_cpus, "num-cpu",
|
||||
object_property_set_int(OBJECT(&s->a7mpcore), sc->num_cpus, "num-cpu",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&s->a7mpcore),
|
||||
ASPEED_SOC_AST2600_MAX_IRQ + GIC_INTERNAL,
|
||||
"num-irq", &error_abort);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->a7mpcore), true, "realized",
|
||||
&error_abort);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->a7mpcore), &error_abort);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->a7mpcore), 0, ASPEED_A7MPCORE_ADDR);
|
||||
|
||||
for (i = 0; i < s->num_cpus; i++) {
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(&s->a7mpcore);
|
||||
DeviceState *d = DEVICE(qemu_get_cpu(i));
|
||||
|
||||
irq = qdev_get_gpio_in(d, ARM_CPU_IRQ);
|
||||
sysbus_connect_irq(sbd, i, irq);
|
||||
irq = qdev_get_gpio_in(d, ARM_CPU_FIQ);
|
||||
sysbus_connect_irq(sbd, i + s->num_cpus, irq);
|
||||
sysbus_connect_irq(sbd, i + sc->num_cpus, irq);
|
||||
irq = qdev_get_gpio_in(d, ARM_CPU_VIRQ);
|
||||
sysbus_connect_irq(sbd, i + 2 * s->num_cpus, irq);
|
||||
sysbus_connect_irq(sbd, i + 2 * sc->num_cpus, irq);
|
||||
irq = qdev_get_gpio_in(d, ARM_CPU_VFIQ);
|
||||
sysbus_connect_irq(sbd, i + 3 * s->num_cpus, irq);
|
||||
sysbus_connect_irq(sbd, i + 3 * sc->num_cpus, irq);
|
||||
}
|
||||
|
||||
/* SRAM */
|
||||
@@ -324,7 +301,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
sc->memmap[ASPEED_SRAM], &s->sram);
|
||||
|
||||
/* SCU */
|
||||
object_property_set_bool(OBJECT(&s->scu), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->scu), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -332,7 +309,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->scu), 0, sc->memmap[ASPEED_SCU]);
|
||||
|
||||
/* RTC */
|
||||
object_property_set_bool(OBJECT(&s->rtc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rtc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -344,7 +321,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
/* Timer */
|
||||
object_property_set_link(OBJECT(&s->timerctrl),
|
||||
OBJECT(&s->scu), "scu", &error_abort);
|
||||
object_property_set_bool(OBJECT(&s->timerctrl), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timerctrl), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -369,7 +346,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->i2c), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->i2c), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -397,7 +374,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->fmc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->fmc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -417,8 +394,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
object_property_set_int(OBJECT(&s->spi[i]), 1, "num-cs", &err);
|
||||
object_property_set_bool(OBJECT(&s->spi[i]), true, "realized",
|
||||
&local_err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->spi[i]), &local_err);
|
||||
error_propagate(&err, local_err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
@@ -432,7 +408,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
/* EHCI */
|
||||
for (i = 0; i < sc->ehcis_num; i++) {
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -444,7 +420,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* SDMC - SDRAM Memory Controller */
|
||||
object_property_set_bool(OBJECT(&s->sdmc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdmc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -457,7 +433,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_link(OBJECT(&s->wdt[i]),
|
||||
OBJECT(&s->scu), "scu", &error_abort);
|
||||
object_property_set_bool(OBJECT(&s->wdt[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -467,12 +443,10 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Net */
|
||||
for (i = 0; i < nb_nics && i < sc->macs_num; i++) {
|
||||
qdev_set_nic_properties(DEVICE(&s->ftgmac100[i]), &nd_table[i]);
|
||||
for (i = 0; i < sc->macs_num; i++) {
|
||||
object_property_set_bool(OBJECT(&s->ftgmac100[i]), true, "aspeed",
|
||||
&err);
|
||||
object_property_set_bool(OBJECT(&s->ftgmac100[i]), true, "realized",
|
||||
&local_err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), &local_err);
|
||||
error_propagate(&err, local_err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
@@ -485,8 +459,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_link(OBJECT(&s->mii[i]), OBJECT(&s->ftgmac100[i]),
|
||||
"nic", &error_abort);
|
||||
object_property_set_bool(OBJECT(&s->mii[i]), true, "realized",
|
||||
&err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mii[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -497,7 +470,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* XDMA */
|
||||
object_property_set_bool(OBJECT(&s->xdma), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->xdma), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -508,7 +481,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_XDMA));
|
||||
|
||||
/* GPIO */
|
||||
object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -517,7 +490,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_GPIO));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->gpio_1_8v), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio_1_8v), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -528,7 +501,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_GPIO_1_8V));
|
||||
|
||||
/* SDHCI */
|
||||
object_property_set_bool(OBJECT(&s->sdhci), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -539,7 +512,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_SDHCI));
|
||||
|
||||
/* eMMC */
|
||||
object_property_set_bool(OBJECT(&s->emmc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->emmc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
|
||||
+36
-60
@@ -142,14 +142,11 @@ static void aspeed_soc_init(Object *obj)
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", OBJECT(&s->cpu[i]),
|
||||
sizeof(s->cpu[i]), sc->cpu_type,
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu[*]", &s->cpu[i], sc->cpu_type);
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.scu-%s", socname);
|
||||
sysbus_init_child_obj(obj, "scu", OBJECT(&s->scu), sizeof(s->scu),
|
||||
typename);
|
||||
object_initialize_child(obj, "scu", &s->scu, typename);
|
||||
qdev_prop_set_uint32(DEVICE(&s->scu), "silicon-rev",
|
||||
sc->silicon_rev);
|
||||
object_property_add_alias(obj, "hw-strap1", OBJECT(&s->scu),
|
||||
@@ -159,39 +156,32 @@ static void aspeed_soc_init(Object *obj)
|
||||
object_property_add_alias(obj, "hw-prot-key", OBJECT(&s->scu),
|
||||
"hw-prot-key");
|
||||
|
||||
sysbus_init_child_obj(obj, "vic", OBJECT(&s->vic), sizeof(s->vic),
|
||||
TYPE_ASPEED_VIC);
|
||||
object_initialize_child(obj, "vic", &s->vic, TYPE_ASPEED_VIC);
|
||||
|
||||
sysbus_init_child_obj(obj, "rtc", OBJECT(&s->rtc), sizeof(s->rtc),
|
||||
TYPE_ASPEED_RTC);
|
||||
object_initialize_child(obj, "rtc", &s->rtc, TYPE_ASPEED_RTC);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.timer-%s", socname);
|
||||
sysbus_init_child_obj(obj, "timerctrl", OBJECT(&s->timerctrl),
|
||||
sizeof(s->timerctrl), typename);
|
||||
object_initialize_child(obj, "timerctrl", &s->timerctrl, typename);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.i2c-%s", socname);
|
||||
sysbus_init_child_obj(obj, "i2c", OBJECT(&s->i2c), sizeof(s->i2c),
|
||||
typename);
|
||||
object_initialize_child(obj, "i2c", &s->i2c, typename);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.fmc-%s", socname);
|
||||
sysbus_init_child_obj(obj, "fmc", OBJECT(&s->fmc), sizeof(s->fmc),
|
||||
typename);
|
||||
object_initialize_child(obj, "fmc", &s->fmc, typename);
|
||||
object_property_add_alias(obj, "num-cs", OBJECT(&s->fmc), "num-cs");
|
||||
|
||||
for (i = 0; i < sc->spis_num; i++) {
|
||||
snprintf(typename, sizeof(typename), "aspeed.spi%d-%s", i + 1, socname);
|
||||
sysbus_init_child_obj(obj, "spi[*]", OBJECT(&s->spi[i]),
|
||||
sizeof(s->spi[i]), typename);
|
||||
object_initialize_child(obj, "spi[*]", &s->spi[i], typename);
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->ehcis_num; i++) {
|
||||
sysbus_init_child_obj(obj, "ehci[*]", OBJECT(&s->ehci[i]),
|
||||
sizeof(s->ehci[i]), TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.sdmc-%s", socname);
|
||||
sysbus_init_child_obj(obj, "sdmc", OBJECT(&s->sdmc), sizeof(s->sdmc),
|
||||
typename);
|
||||
object_initialize_child(obj, "sdmc", &s->sdmc, typename);
|
||||
object_property_add_alias(obj, "ram-size", OBJECT(&s->sdmc),
|
||||
"ram-size");
|
||||
object_property_add_alias(obj, "max-ram-size", OBJECT(&s->sdmc),
|
||||
@@ -199,31 +189,27 @@ static void aspeed_soc_init(Object *obj)
|
||||
|
||||
for (i = 0; i < sc->wdts_num; i++) {
|
||||
snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname);
|
||||
sysbus_init_child_obj(obj, "wdt[*]", OBJECT(&s->wdt[i]),
|
||||
sizeof(s->wdt[i]), typename);
|
||||
object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename);
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->macs_num; i++) {
|
||||
sysbus_init_child_obj(obj, "ftgmac100[*]", OBJECT(&s->ftgmac100[i]),
|
||||
sizeof(s->ftgmac100[i]), TYPE_FTGMAC100);
|
||||
object_initialize_child(obj, "ftgmac100[*]", &s->ftgmac100[i],
|
||||
TYPE_FTGMAC100);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "xdma", OBJECT(&s->xdma), sizeof(s->xdma),
|
||||
TYPE_ASPEED_XDMA);
|
||||
object_initialize_child(obj, "xdma", &s->xdma, TYPE_ASPEED_XDMA);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.gpio-%s", socname);
|
||||
sysbus_init_child_obj(obj, "gpio", OBJECT(&s->gpio), sizeof(s->gpio),
|
||||
typename);
|
||||
object_initialize_child(obj, "gpio", &s->gpio, typename);
|
||||
|
||||
sysbus_init_child_obj(obj, "sdc", OBJECT(&s->sdhci), sizeof(s->sdhci),
|
||||
TYPE_ASPEED_SDHCI);
|
||||
object_initialize_child(obj, "sdc", &s->sdhci, TYPE_ASPEED_SDHCI);
|
||||
|
||||
object_property_set_int(OBJECT(&s->sdhci), 2, "num-slots", &error_abort);
|
||||
|
||||
/* Init sd card slot class here so that they're under the correct parent */
|
||||
for (i = 0; i < ASPEED_SDHCI_NUM_SLOTS; ++i) {
|
||||
sysbus_init_child_obj(obj, "sdhci[*]", OBJECT(&s->sdhci.slots[i]),
|
||||
sizeof(s->sdhci.slots[i]), TYPE_SYSBUS_SDHCI);
|
||||
object_initialize_child(obj, "sdhci[*]", &s->sdhci.slots[i],
|
||||
TYPE_SYSBUS_SDHCI);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,15 +228,9 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
create_unimplemented_device("aspeed.video", sc->memmap[ASPEED_VIDEO],
|
||||
0x1000);
|
||||
|
||||
if (s->num_cpus > sc->num_cpus) {
|
||||
warn_report("%s: invalid number of CPUs %d, using default %d",
|
||||
sc->name, s->num_cpus, sc->num_cpus);
|
||||
s->num_cpus = sc->num_cpus;
|
||||
}
|
||||
|
||||
/* CPU */
|
||||
for (i = 0; i < s->num_cpus; i++) {
|
||||
object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err);
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
qdev_realize(DEVICE(&s->cpu[i]), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -268,7 +248,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
sc->memmap[ASPEED_SRAM], &s->sram);
|
||||
|
||||
/* SCU */
|
||||
object_property_set_bool(OBJECT(&s->scu), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->scu), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -276,7 +256,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->scu), 0, sc->memmap[ASPEED_SCU]);
|
||||
|
||||
/* VIC */
|
||||
object_property_set_bool(OBJECT(&s->vic), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->vic), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -288,7 +268,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
|
||||
|
||||
/* RTC */
|
||||
object_property_set_bool(OBJECT(&s->rtc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rtc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -300,7 +280,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
/* Timer */
|
||||
object_property_set_link(OBJECT(&s->timerctrl),
|
||||
OBJECT(&s->scu), "scu", &error_abort);
|
||||
object_property_set_bool(OBJECT(&s->timerctrl), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timerctrl), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -325,7 +305,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->i2c), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->i2c), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -346,7 +326,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
object_property_set_bool(OBJECT(&s->fmc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->fmc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -360,8 +340,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
/* SPI */
|
||||
for (i = 0; i < sc->spis_num; i++) {
|
||||
object_property_set_int(OBJECT(&s->spi[i]), 1, "num-cs", &err);
|
||||
object_property_set_bool(OBJECT(&s->spi[i]), true, "realized",
|
||||
&local_err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->spi[i]), &local_err);
|
||||
error_propagate(&err, local_err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
@@ -375,7 +354,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
/* EHCI */
|
||||
for (i = 0; i < sc->ehcis_num; i++) {
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -387,7 +366,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* SDMC - SDRAM Memory Controller */
|
||||
object_property_set_bool(OBJECT(&s->sdmc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdmc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -400,7 +379,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_link(OBJECT(&s->wdt[i]),
|
||||
OBJECT(&s->scu), "scu", &error_abort);
|
||||
object_property_set_bool(OBJECT(&s->wdt[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -410,12 +389,10 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Net */
|
||||
for (i = 0; i < nb_nics && i < sc->macs_num; i++) {
|
||||
qdev_set_nic_properties(DEVICE(&s->ftgmac100[i]), &nd_table[i]);
|
||||
for (i = 0; i < sc->macs_num; i++) {
|
||||
object_property_set_bool(OBJECT(&s->ftgmac100[i]), true, "aspeed",
|
||||
&err);
|
||||
object_property_set_bool(OBJECT(&s->ftgmac100[i]), true, "realized",
|
||||
&local_err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), &local_err);
|
||||
error_propagate(&err, local_err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
@@ -428,7 +405,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* XDMA */
|
||||
object_property_set_bool(OBJECT(&s->xdma), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->xdma), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -439,7 +416,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_XDMA));
|
||||
|
||||
/* GPIO */
|
||||
object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -449,7 +426,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_GPIO));
|
||||
|
||||
/* SDHCI */
|
||||
object_property_set_bool(OBJECT(&s->sdhci), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -460,7 +437,6 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||
aspeed_soc_get_irq(s, ASPEED_SDHCI));
|
||||
}
|
||||
static Property aspeed_soc_properties[] = {
|
||||
DEFINE_PROP_UINT32("num-cpus", AspeedSoCState, num_cpus, 0),
|
||||
DEFINE_PROP_LINK("dram", AspeedSoCState, dram_mr, TYPE_MEMORY_REGION,
|
||||
MemoryRegion *),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
|
||||
@@ -27,12 +27,10 @@ static void create_unimp(BCM2835PeripheralState *ps,
|
||||
UnimplementedDeviceState *uds,
|
||||
const char *name, hwaddr ofs, hwaddr size)
|
||||
{
|
||||
sysbus_init_child_obj(OBJECT(ps), name, uds,
|
||||
sizeof(UnimplementedDeviceState),
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(OBJECT(ps), name, uds, TYPE_UNIMPLEMENTED_DEVICE);
|
||||
qdev_prop_set_string(DEVICE(uds), "name", name);
|
||||
qdev_prop_set_uint64(DEVICE(uds), "size", size);
|
||||
object_property_set_bool(OBJECT(uds), true, "realized", &error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(uds), &error_fatal);
|
||||
memory_region_add_subregion_overlap(&ps->peri_mr, ofs,
|
||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(uds), 0), -1000);
|
||||
}
|
||||
@@ -55,37 +53,34 @@ static void bcm2835_peripherals_init(Object *obj)
|
||||
MBOX_CHAN_COUNT << MBOX_AS_CHAN_SHIFT);
|
||||
|
||||
/* Interrupt Controller */
|
||||
sysbus_init_child_obj(obj, "ic", &s->ic, sizeof(s->ic), TYPE_BCM2835_IC);
|
||||
object_initialize_child(obj, "ic", &s->ic, TYPE_BCM2835_IC);
|
||||
|
||||
/* SYS Timer */
|
||||
sysbus_init_child_obj(obj, "systimer", &s->systmr, sizeof(s->systmr),
|
||||
TYPE_BCM2835_SYSTIMER);
|
||||
object_initialize_child(obj, "systimer", &s->systmr,
|
||||
TYPE_BCM2835_SYSTIMER);
|
||||
|
||||
/* UART0 */
|
||||
sysbus_init_child_obj(obj, "uart0", &s->uart0, sizeof(s->uart0),
|
||||
TYPE_PL011);
|
||||
object_initialize_child(obj, "uart0", &s->uart0, TYPE_PL011);
|
||||
|
||||
/* AUX / UART1 */
|
||||
sysbus_init_child_obj(obj, "aux", &s->aux, sizeof(s->aux),
|
||||
TYPE_BCM2835_AUX);
|
||||
object_initialize_child(obj, "aux", &s->aux, TYPE_BCM2835_AUX);
|
||||
|
||||
/* Mailboxes */
|
||||
sysbus_init_child_obj(obj, "mbox", &s->mboxes, sizeof(s->mboxes),
|
||||
TYPE_BCM2835_MBOX);
|
||||
object_initialize_child(obj, "mbox", &s->mboxes, TYPE_BCM2835_MBOX);
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->mboxes), "mbox-mr",
|
||||
OBJECT(&s->mbox_mr));
|
||||
|
||||
/* Framebuffer */
|
||||
sysbus_init_child_obj(obj, "fb", &s->fb, sizeof(s->fb), TYPE_BCM2835_FB);
|
||||
object_initialize_child(obj, "fb", &s->fb, TYPE_BCM2835_FB);
|
||||
object_property_add_alias(obj, "vcram-size", OBJECT(&s->fb), "vcram-size");
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->fb), "dma-mr",
|
||||
OBJECT(&s->gpu_bus_mr));
|
||||
|
||||
/* Property channel */
|
||||
sysbus_init_child_obj(obj, "property", &s->property, sizeof(s->property),
|
||||
TYPE_BCM2835_PROPERTY);
|
||||
object_initialize_child(obj, "property", &s->property,
|
||||
TYPE_BCM2835_PROPERTY);
|
||||
object_property_add_alias(obj, "board-rev", OBJECT(&s->property),
|
||||
"board-rev");
|
||||
|
||||
@@ -95,31 +90,25 @@ static void bcm2835_peripherals_init(Object *obj)
|
||||
OBJECT(&s->gpu_bus_mr));
|
||||
|
||||
/* Random Number Generator */
|
||||
sysbus_init_child_obj(obj, "rng", &s->rng, sizeof(s->rng),
|
||||
TYPE_BCM2835_RNG);
|
||||
object_initialize_child(obj, "rng", &s->rng, TYPE_BCM2835_RNG);
|
||||
|
||||
/* Extended Mass Media Controller */
|
||||
sysbus_init_child_obj(obj, "sdhci", &s->sdhci, sizeof(s->sdhci),
|
||||
TYPE_SYSBUS_SDHCI);
|
||||
object_initialize_child(obj, "sdhci", &s->sdhci, TYPE_SYSBUS_SDHCI);
|
||||
|
||||
/* SDHOST */
|
||||
sysbus_init_child_obj(obj, "sdhost", &s->sdhost, sizeof(s->sdhost),
|
||||
TYPE_BCM2835_SDHOST);
|
||||
object_initialize_child(obj, "sdhost", &s->sdhost, TYPE_BCM2835_SDHOST);
|
||||
|
||||
/* DMA Channels */
|
||||
sysbus_init_child_obj(obj, "dma", &s->dma, sizeof(s->dma),
|
||||
TYPE_BCM2835_DMA);
|
||||
object_initialize_child(obj, "dma", &s->dma, TYPE_BCM2835_DMA);
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->dma), "dma-mr",
|
||||
OBJECT(&s->gpu_bus_mr));
|
||||
|
||||
/* Thermal */
|
||||
sysbus_init_child_obj(obj, "thermal", &s->thermal, sizeof(s->thermal),
|
||||
TYPE_BCM2835_THERMAL);
|
||||
object_initialize_child(obj, "thermal", &s->thermal, TYPE_BCM2835_THERMAL);
|
||||
|
||||
/* GPIO */
|
||||
sysbus_init_child_obj(obj, "gpio", &s->gpio, sizeof(s->gpio),
|
||||
TYPE_BCM2835_GPIO);
|
||||
object_initialize_child(obj, "gpio", &s->gpio, TYPE_BCM2835_GPIO);
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->gpio), "sdbus-sdhci",
|
||||
OBJECT(&s->sdhci.sdbus));
|
||||
@@ -127,12 +116,10 @@ static void bcm2835_peripherals_init(Object *obj)
|
||||
OBJECT(&s->sdhost.sdbus));
|
||||
|
||||
/* Mphi */
|
||||
sysbus_init_child_obj(obj, "mphi", &s->mphi, sizeof(s->mphi),
|
||||
TYPE_BCM2835_MPHI);
|
||||
object_initialize_child(obj, "mphi", &s->mphi, TYPE_BCM2835_MPHI);
|
||||
|
||||
/* DWC2 */
|
||||
sysbus_init_child_obj(obj, "dwc2", &s->dwc2, sizeof(s->dwc2),
|
||||
TYPE_DWC2_USB);
|
||||
object_initialize_child(obj, "dwc2", &s->dwc2, TYPE_DWC2_USB);
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->dwc2), "dma-mr",
|
||||
OBJECT(&s->gpu_bus_mr));
|
||||
@@ -174,7 +161,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Interrupt Controller */
|
||||
object_property_set_bool(OBJECT(&s->ic), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ic), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -185,7 +172,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_pass_irq(SYS_BUS_DEVICE(s), SYS_BUS_DEVICE(&s->ic));
|
||||
|
||||
/* Sys Timer */
|
||||
object_property_set_bool(OBJECT(&s->systmr), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->systmr), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -198,7 +185,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
/* UART0 */
|
||||
qdev_prop_set_chr(DEVICE(&s->uart0), "chardev", serial_hd(0));
|
||||
object_property_set_bool(OBJECT(&s->uart0), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->uart0), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -213,7 +200,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
/* AUX / UART1 */
|
||||
qdev_prop_set_chr(DEVICE(&s->aux), "chardev", serial_hd(1));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->aux), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->aux), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -226,7 +213,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
INTERRUPT_AUX));
|
||||
|
||||
/* Mailboxes */
|
||||
object_property_set_bool(OBJECT(&s->mboxes), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mboxes), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -252,7 +239,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->fb), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->fb), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -264,7 +251,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(DEVICE(&s->mboxes), MBOX_CHAN_FB));
|
||||
|
||||
/* Property channel */
|
||||
object_property_set_bool(OBJECT(&s->property), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->property), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -277,7 +264,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(DEVICE(&s->mboxes), MBOX_CHAN_PROPERTY));
|
||||
|
||||
/* Random Number Generator */
|
||||
object_property_set_bool(OBJECT(&s->rng), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rng), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -306,7 +293,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->sdhci), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -319,7 +306,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
INTERRUPT_ARASANSDIO));
|
||||
|
||||
/* SDHOST */
|
||||
object_property_set_bool(OBJECT(&s->sdhost), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sdhost), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -332,7 +319,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
INTERRUPT_SDIO));
|
||||
|
||||
/* DMA Channels */
|
||||
object_property_set_bool(OBJECT(&s->dma), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->dma), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -351,7 +338,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* THERMAL */
|
||||
object_property_set_bool(OBJECT(&s->thermal), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->thermal), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -360,7 +347,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->thermal), 0));
|
||||
|
||||
/* GPIO */
|
||||
object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -372,7 +359,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->gpio), "sd-bus");
|
||||
|
||||
/* Mphi */
|
||||
object_property_set_bool(OBJECT(&s->mphi), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->mphi), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -385,7 +372,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
INTERRUPT_HOSTPORT));
|
||||
|
||||
/* DWC2 */
|
||||
object_property_set_bool(OBJECT(&s->dwc2), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->dwc2), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
|
||||
+7
-10
@@ -53,15 +53,13 @@ static void bcm2836_init(Object *obj)
|
||||
|
||||
for (n = 0; n < BCM283X_NCPUS; n++) {
|
||||
object_initialize_child(obj, "cpu[*]", &s->cpu[n].core,
|
||||
sizeof(s->cpu[n].core), info->cpu_type,
|
||||
&error_abort, NULL);
|
||||
info->cpu_type);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "control", &s->control, sizeof(s->control),
|
||||
TYPE_BCM2836_CONTROL);
|
||||
object_initialize_child(obj, "control", &s->control, TYPE_BCM2836_CONTROL);
|
||||
|
||||
sysbus_init_child_obj(obj, "peripherals", &s->peripherals,
|
||||
sizeof(s->peripherals), TYPE_BCM2835_PERIPHERALS);
|
||||
object_initialize_child(obj, "peripherals", &s->peripherals,
|
||||
TYPE_BCM2835_PERIPHERALS);
|
||||
object_property_add_alias(obj, "board-rev", OBJECT(&s->peripherals),
|
||||
"board-rev");
|
||||
object_property_add_alias(obj, "vcram-size", OBJECT(&s->peripherals),
|
||||
@@ -88,7 +86,7 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->peripherals), "ram", obj);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->peripherals), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->peripherals), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -101,7 +99,7 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
|
||||
info->peri_base, 1);
|
||||
|
||||
/* bcm2836 interrupt controller (and mailboxes, etc.) */
|
||||
object_property_set_bool(OBJECT(&s->control), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->control), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -135,8 +133,7 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu[n].core), true,
|
||||
"realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu[n].core), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
|
||||
+3
-3
@@ -80,7 +80,7 @@ static void cubieboard_init(MachineState *machine)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(a10), true, "realized", &err);
|
||||
qdev_realize(DEVICE(a10), NULL, &err);
|
||||
if (err != NULL) {
|
||||
error_reportf_err(err, "Couldn't realize Allwinner A10: ");
|
||||
exit(1);
|
||||
@@ -92,9 +92,9 @@ static void cubieboard_init(MachineState *machine)
|
||||
bus = qdev_get_child_bus(DEVICE(a10), "sd-bus");
|
||||
|
||||
/* Plug in SD card */
|
||||
carddev = qdev_create(bus, TYPE_SD_CARD);
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive(carddev, "drive", blk, &error_fatal);
|
||||
object_property_set_bool(OBJECT(carddev), true, "realized", &error_fatal);
|
||||
qdev_realize_and_unref(carddev, bus, &error_fatal);
|
||||
|
||||
memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE,
|
||||
machine->ram);
|
||||
|
||||
+6
-10
@@ -36,21 +36,17 @@ static void digic_init(Object *obj)
|
||||
DigicState *s = DIGIC(obj);
|
||||
int i;
|
||||
|
||||
object_initialize_child(obj, "cpu", &s->cpu, sizeof(s->cpu),
|
||||
ARM_CPU_TYPE_NAME("arm946"),
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm946"));
|
||||
|
||||
for (i = 0; i < DIGIC4_NB_TIMERS; i++) {
|
||||
#define DIGIC_TIMER_NAME_MLEN 11
|
||||
char name[DIGIC_TIMER_NAME_MLEN];
|
||||
|
||||
snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i);
|
||||
sysbus_init_child_obj(obj, name, &s->timer[i], sizeof(s->timer[i]),
|
||||
TYPE_DIGIC_TIMER);
|
||||
object_initialize_child(obj, name, &s->timer[i], TYPE_DIGIC_TIMER);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "uart", &s->uart, sizeof(s->uart),
|
||||
TYPE_DIGIC_UART);
|
||||
object_initialize_child(obj, "uart", &s->uart, TYPE_DIGIC_UART);
|
||||
}
|
||||
|
||||
static void digic_realize(DeviceState *dev, Error **errp)
|
||||
@@ -66,14 +62,14 @@ static void digic_realize(DeviceState *dev, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu), NULL, &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < DIGIC4_NB_TIMERS; i++) {
|
||||
object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->timer[i]), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -84,7 +80,7 @@ static void digic_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
qdev_prop_set_chr(DEVICE(&s->uart), "chardev", serial_hd(0));
|
||||
object_property_set_bool(OBJECT(&s->uart), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->uart), &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
|
||||
@@ -62,7 +62,7 @@ static void digic4_board_init(MachineState *machine, DigicBoard *board)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(s), true, "realized", &err);
|
||||
qdev_realize(DEVICE(s), NULL, &err);
|
||||
if (err != NULL) {
|
||||
error_reportf_err(err, "Couldn't realize DIGIC SoC: ");
|
||||
exit(1);
|
||||
|
||||
+24
-24
@@ -173,7 +173,7 @@ static DeviceState *pl330_create(uint32_t base, qemu_or_irq *orgate,
|
||||
DeviceState *dev;
|
||||
int i;
|
||||
|
||||
dev = qdev_create(NULL, "pl330");
|
||||
dev = qdev_new("pl330");
|
||||
qdev_prop_set_uint8(dev, "num_events", nevents);
|
||||
qdev_prop_set_uint8(dev, "num_chnls", 8);
|
||||
qdev_prop_set_uint8(dev, "num_periph_req", nreq);
|
||||
@@ -184,13 +184,13 @@ static DeviceState *pl330_create(uint32_t base, qemu_or_irq *orgate,
|
||||
qdev_prop_set_uint8(dev, "rd_q_dep", 8);
|
||||
qdev_prop_set_uint8(dev, "data_width", width);
|
||||
qdev_prop_set_uint16(dev, "data_buffer_dep", width);
|
||||
qdev_init_nofail(dev);
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
sysbus_mmio_map(busdev, 0, base);
|
||||
|
||||
object_property_set_int(OBJECT(orgate), nevents + 1, "num-lines",
|
||||
&error_abort);
|
||||
object_property_set_bool(OBJECT(orgate), true, "realized", &error_abort);
|
||||
qdev_realize(DEVICE(orgate), NULL, &error_abort);
|
||||
|
||||
for (i = 0; i < nevents + 1; i++) {
|
||||
sysbus_connect_irq(busdev, i, qdev_get_gpio_in(DEVICE(orgate), i));
|
||||
@@ -223,7 +223,7 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
"mp-affinity", &error_abort);
|
||||
object_property_set_int(cpuobj, EXYNOS4210_SMP_PRIVATE_BASE_ADDR,
|
||||
"reset-cbar", &error_abort);
|
||||
object_property_set_bool(cpuobj, true, "realized", &error_fatal);
|
||||
qdev_realize(DEVICE(cpuobj), NULL, &error_fatal);
|
||||
}
|
||||
|
||||
/*** IRQs ***/
|
||||
@@ -232,9 +232,9 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
|
||||
/* IRQ Gate */
|
||||
for (i = 0; i < EXYNOS4210_NCPUS; i++) {
|
||||
dev = qdev_create(NULL, "exynos4210.irq_gate");
|
||||
dev = qdev_new("exynos4210.irq_gate");
|
||||
qdev_prop_set_uint32(dev, "n_in", EXYNOS4210_IRQ_GATE_NINPUTS);
|
||||
qdev_init_nofail(dev);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
/* Get IRQ Gate input in gate_irq */
|
||||
for (n = 0; n < EXYNOS4210_IRQ_GATE_NINPUTS; n++) {
|
||||
gate_irq[i][n] = qdev_get_gpio_in(dev, n);
|
||||
@@ -247,10 +247,10 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
}
|
||||
|
||||
/* Private memory region and Internal GIC */
|
||||
dev = qdev_create(NULL, TYPE_A9MPCORE_PRIV);
|
||||
dev = qdev_new(TYPE_A9MPCORE_PRIV);
|
||||
qdev_prop_set_uint32(dev, "num-cpu", EXYNOS4210_NCPUS);
|
||||
qdev_init_nofail(dev);
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
sysbus_mmio_map(busdev, 0, EXYNOS4210_SMP_PRIVATE_BASE_ADDR);
|
||||
for (n = 0; n < EXYNOS4210_NCPUS; n++) {
|
||||
sysbus_connect_irq(busdev, n, gate_irq[n][0]);
|
||||
@@ -263,10 +263,10 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
sysbus_create_simple("l2x0", EXYNOS4210_L2X0_BASE_ADDR, NULL);
|
||||
|
||||
/* External GIC */
|
||||
dev = qdev_create(NULL, "exynos4210.gic");
|
||||
dev = qdev_new("exynos4210.gic");
|
||||
qdev_prop_set_uint32(dev, "num-cpu", EXYNOS4210_NCPUS);
|
||||
qdev_init_nofail(dev);
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
/* Map CPU interface */
|
||||
sysbus_mmio_map(busdev, 0, EXYNOS4210_EXT_GIC_CPU_BASE_ADDR);
|
||||
/* Map Distributer interface */
|
||||
@@ -279,9 +279,9 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
}
|
||||
|
||||
/* Internal Interrupt Combiner */
|
||||
dev = qdev_create(NULL, "exynos4210.combiner");
|
||||
qdev_init_nofail(dev);
|
||||
dev = qdev_new("exynos4210.combiner");
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
for (n = 0; n < EXYNOS4210_MAX_INT_COMBINER_OUT_IRQ; n++) {
|
||||
sysbus_connect_irq(busdev, n, s->irqs.int_gic_irq[n]);
|
||||
}
|
||||
@@ -289,10 +289,10 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
sysbus_mmio_map(busdev, 0, EXYNOS4210_INT_COMBINER_BASE_ADDR);
|
||||
|
||||
/* External Interrupt Combiner */
|
||||
dev = qdev_create(NULL, "exynos4210.combiner");
|
||||
dev = qdev_new("exynos4210.combiner");
|
||||
qdev_prop_set_uint32(dev, "external", 1);
|
||||
qdev_init_nofail(dev);
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
for (n = 0; n < EXYNOS4210_MAX_INT_COMBINER_OUT_IRQ; n++) {
|
||||
sysbus_connect_irq(busdev, n, s->irqs.ext_gic_irq[n]);
|
||||
}
|
||||
@@ -353,9 +353,9 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
NULL);
|
||||
|
||||
/* Multi Core Timer */
|
||||
dev = qdev_create(NULL, "exynos4210.mct");
|
||||
qdev_init_nofail(dev);
|
||||
dev = qdev_new("exynos4210.mct");
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
for (n = 0; n < 4; n++) {
|
||||
/* Connect global timer interrupts to Combiner gpio_in */
|
||||
sysbus_connect_irq(busdev, n,
|
||||
@@ -379,9 +379,9 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
i2c_irq = s->irq_table[exynos4210_get_irq(EXYNOS4210_HDMI_INTG, 1)];
|
||||
}
|
||||
|
||||
dev = qdev_create(NULL, "exynos4210.i2c");
|
||||
qdev_init_nofail(dev);
|
||||
dev = qdev_new("exynos4210.i2c");
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
sysbus_connect_irq(busdev, 0, i2c_irq);
|
||||
sysbus_mmio_map(busdev, 0, addr);
|
||||
s->i2c_if[n] = (I2CBus *)qdev_get_child_bus(dev, "i2c");
|
||||
@@ -423,19 +423,20 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
|
||||
* public datasheet which is very similar (implementing
|
||||
* MMC Specification Version 4.0 being the only difference noted)
|
||||
*/
|
||||
dev = qdev_create(NULL, TYPE_S3C_SDHCI);
|
||||
dev = qdev_new(TYPE_S3C_SDHCI);
|
||||
qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES);
|
||||
qdev_init_nofail(dev);
|
||||
|
||||
busdev = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(busdev, &error_fatal);
|
||||
sysbus_mmio_map(busdev, 0, EXYNOS4210_SDHCI_ADDR(n));
|
||||
sysbus_connect_irq(busdev, 0, s->irq_table[exynos4210_get_irq(29, n)]);
|
||||
|
||||
di = drive_get(IF_SD, 0, n);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
carddev = qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CARD);
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive(carddev, "drive", blk, &error_abort);
|
||||
qdev_init_nofail(carddev);
|
||||
qdev_realize_and_unref(carddev, qdev_get_child_bus(dev, "sd-bus"),
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
/*** Display controller (FIMD) ***/
|
||||
@@ -481,8 +482,7 @@ static void exynos4210_init(Object *obj)
|
||||
char *name = g_strdup_printf("pl330-irq-orgate%d", i);
|
||||
qemu_or_irq *orgate = &s->pl330_irq_orgate[i];
|
||||
|
||||
object_initialize_child(obj, name, orgate, sizeof(*orgate),
|
||||
TYPE_OR_IRQ, &error_abort, NULL);
|
||||
object_initialize_child(obj, name, orgate, TYPE_OR_IRQ);
|
||||
g_free(name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,11 +81,11 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
|
||||
/* This should be a 9215 but the 9118 is close enough */
|
||||
if (nd_table[0].used) {
|
||||
qemu_check_nic_model(&nd_table[0], "lan9118");
|
||||
dev = qdev_create(NULL, TYPE_LAN9118);
|
||||
dev = qdev_new(TYPE_LAN9118);
|
||||
qdev_set_nic_properties(dev, &nd_table[0]);
|
||||
qdev_prop_set_uint32(dev, "mode_16bit", 1);
|
||||
qdev_init_nofail(dev);
|
||||
s = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(s, &error_fatal);
|
||||
sysbus_mmio_map(s, 0, base);
|
||||
sysbus_connect_irq(s, 0, irq);
|
||||
}
|
||||
@@ -128,10 +128,9 @@ exynos4_boards_init_common(MachineState *machine,
|
||||
exynos4_boards_init_ram(s, get_system_memory(),
|
||||
exynos4_board_ram_size[board_type]);
|
||||
|
||||
sysbus_init_child_obj(OBJECT(machine), "soc",
|
||||
&s->soc, sizeof(s->soc), TYPE_EXYNOS4210_SOC);
|
||||
object_property_set_bool(OBJECT(&s->soc), true, "realized",
|
||||
&error_fatal);
|
||||
object_initialize_child(OBJECT(machine), "soc", &s->soc,
|
||||
TYPE_EXYNOS4210_SOC);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
+26
-38
@@ -38,56 +38,45 @@ static void fsl_imx25_init(Object *obj)
|
||||
FslIMX25State *s = FSL_IMX25(obj);
|
||||
int i;
|
||||
|
||||
object_initialize_child(obj, "cpu", &s->cpu, sizeof(s->cpu),
|
||||
ARM_CPU_TYPE_NAME("arm926"),
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm926"));
|
||||
|
||||
sysbus_init_child_obj(obj, "avic", &s->avic, sizeof(s->avic),
|
||||
TYPE_IMX_AVIC);
|
||||
object_initialize_child(obj, "avic", &s->avic, TYPE_IMX_AVIC);
|
||||
|
||||
sysbus_init_child_obj(obj, "ccm", &s->ccm, sizeof(s->ccm), TYPE_IMX25_CCM);
|
||||
object_initialize_child(obj, "ccm", &s->ccm, TYPE_IMX25_CCM);
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_UARTS; i++) {
|
||||
sysbus_init_child_obj(obj, "uart[*]", &s->uart[i], sizeof(s->uart[i]),
|
||||
TYPE_IMX_SERIAL);
|
||||
object_initialize_child(obj, "uart[*]", &s->uart[i], TYPE_IMX_SERIAL);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_GPTS; i++) {
|
||||
sysbus_init_child_obj(obj, "gpt[*]", &s->gpt[i], sizeof(s->gpt[i]),
|
||||
TYPE_IMX25_GPT);
|
||||
object_initialize_child(obj, "gpt[*]", &s->gpt[i], TYPE_IMX25_GPT);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_EPITS; i++) {
|
||||
sysbus_init_child_obj(obj, "epit[*]", &s->epit[i], sizeof(s->epit[i]),
|
||||
TYPE_IMX_EPIT);
|
||||
object_initialize_child(obj, "epit[*]", &s->epit[i], TYPE_IMX_EPIT);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "fec", &s->fec, sizeof(s->fec), TYPE_IMX_FEC);
|
||||
object_initialize_child(obj, "fec", &s->fec, TYPE_IMX_FEC);
|
||||
|
||||
sysbus_init_child_obj(obj, "rngc", &s->rngc, sizeof(s->rngc),
|
||||
TYPE_IMX_RNGC);
|
||||
object_initialize_child(obj, "rngc", &s->rngc, TYPE_IMX_RNGC);
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_I2CS; i++) {
|
||||
sysbus_init_child_obj(obj, "i2c[*]", &s->i2c[i], sizeof(s->i2c[i]),
|
||||
TYPE_IMX_I2C);
|
||||
object_initialize_child(obj, "i2c[*]", &s->i2c[i], TYPE_IMX_I2C);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_GPIOS; i++) {
|
||||
sysbus_init_child_obj(obj, "gpio[*]", &s->gpio[i], sizeof(s->gpio[i]),
|
||||
TYPE_IMX_GPIO);
|
||||
object_initialize_child(obj, "gpio[*]", &s->gpio[i], TYPE_IMX_GPIO);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_ESDHCS; i++) {
|
||||
sysbus_init_child_obj(obj, "sdhc[*]", &s->esdhc[i], sizeof(s->esdhc[i]),
|
||||
TYPE_IMX_USDHC);
|
||||
object_initialize_child(obj, "sdhc[*]", &s->esdhc[i], TYPE_IMX_USDHC);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX25_NUM_USBS; i++) {
|
||||
sysbus_init_child_obj(obj, "usb[*]", &s->usb[i], sizeof(s->usb[i]),
|
||||
TYPE_CHIPIDEA);
|
||||
object_initialize_child(obj, "usb[*]", &s->usb[i], TYPE_CHIPIDEA);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "wdt", &s->wdt, sizeof(s->wdt), TYPE_IMX2_WDT);
|
||||
object_initialize_child(obj, "wdt", &s->wdt, TYPE_IMX2_WDT);
|
||||
}
|
||||
|
||||
static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
@@ -96,13 +85,13 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
uint8_t i;
|
||||
Error *err = NULL;
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->avic), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->avic), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -113,7 +102,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1,
|
||||
qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -135,7 +124,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -160,7 +149,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
s->gpt[i].ccm = IMX_CCM(&s->ccm);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->gpt[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpt[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -183,7 +172,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
s->epit[i].ccm = IMX_CCM(&s->ccm);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->epit[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -196,7 +185,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->fec), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->fec), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -205,7 +194,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->fec), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->avic), FSL_IMX25_FEC_IRQ));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->rngc), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->rngc), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -225,7 +214,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
{ FSL_IMX25_I2C3_ADDR, FSL_IMX25_I2C3_IRQ }
|
||||
};
|
||||
|
||||
object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->i2c[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -248,7 +237,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
{ FSL_IMX25_GPIO4_ADDR, FSL_IMX25_GPIO4_IRQ }
|
||||
};
|
||||
|
||||
object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -274,7 +263,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
&err);
|
||||
object_property_set_uint(OBJECT(&s->esdhc[i]), IMX25_ESDHC_CAPABILITIES,
|
||||
"capareg", &err);
|
||||
object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -295,8 +284,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
{ FSL_IMX25_USB2_ADDR, FSL_IMX25_USB2_IRQ },
|
||||
};
|
||||
|
||||
object_property_set_bool(OBJECT(&s->usb[i]), true, "realized",
|
||||
&error_abort);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->usb[i]), &error_abort);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->usb[i]), 0, usb_table[i].addr);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i]), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->avic),
|
||||
@@ -306,7 +294,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
|
||||
/* Watchdog */
|
||||
object_property_set_bool(OBJECT(&s->wdt), true, "pretimeout-support",
|
||||
&error_abort);
|
||||
object_property_set_bool(OBJECT(&s->wdt), true, "realized", &error_abort);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->avic),
|
||||
|
||||
+18
-25
@@ -33,38 +33,31 @@ static void fsl_imx31_init(Object *obj)
|
||||
FslIMX31State *s = FSL_IMX31(obj);
|
||||
int i;
|
||||
|
||||
object_initialize_child(obj, "cpu", &s->cpu, sizeof(s->cpu),
|
||||
ARM_CPU_TYPE_NAME("arm1136"),
|
||||
&error_abort, NULL);
|
||||
object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm1136"));
|
||||
|
||||
sysbus_init_child_obj(obj, "avic", &s->avic, sizeof(s->avic),
|
||||
TYPE_IMX_AVIC);
|
||||
object_initialize_child(obj, "avic", &s->avic, TYPE_IMX_AVIC);
|
||||
|
||||
sysbus_init_child_obj(obj, "ccm", &s->ccm, sizeof(s->ccm), TYPE_IMX31_CCM);
|
||||
object_initialize_child(obj, "ccm", &s->ccm, TYPE_IMX31_CCM);
|
||||
|
||||
for (i = 0; i < FSL_IMX31_NUM_UARTS; i++) {
|
||||
sysbus_init_child_obj(obj, "uart[*]", &s->uart[i], sizeof(s->uart[i]),
|
||||
TYPE_IMX_SERIAL);
|
||||
object_initialize_child(obj, "uart[*]", &s->uart[i], TYPE_IMX_SERIAL);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "gpt", &s->gpt, sizeof(s->gpt), TYPE_IMX31_GPT);
|
||||
object_initialize_child(obj, "gpt", &s->gpt, TYPE_IMX31_GPT);
|
||||
|
||||
for (i = 0; i < FSL_IMX31_NUM_EPITS; i++) {
|
||||
sysbus_init_child_obj(obj, "epit[*]", &s->epit[i], sizeof(s->epit[i]),
|
||||
TYPE_IMX_EPIT);
|
||||
object_initialize_child(obj, "epit[*]", &s->epit[i], TYPE_IMX_EPIT);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX31_NUM_I2CS; i++) {
|
||||
sysbus_init_child_obj(obj, "i2c[*]", &s->i2c[i], sizeof(s->i2c[i]),
|
||||
TYPE_IMX_I2C);
|
||||
object_initialize_child(obj, "i2c[*]", &s->i2c[i], TYPE_IMX_I2C);
|
||||
}
|
||||
|
||||
for (i = 0; i < FSL_IMX31_NUM_GPIOS; i++) {
|
||||
sysbus_init_child_obj(obj, "gpio[*]", &s->gpio[i], sizeof(s->gpio[i]),
|
||||
TYPE_IMX_GPIO);
|
||||
object_initialize_child(obj, "gpio[*]", &s->gpio[i], TYPE_IMX_GPIO);
|
||||
}
|
||||
|
||||
sysbus_init_child_obj(obj, "wdt", &s->wdt, sizeof(s->wdt), TYPE_IMX2_WDT);
|
||||
object_initialize_child(obj, "wdt", &s->wdt, TYPE_IMX2_WDT);
|
||||
}
|
||||
|
||||
static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
@@ -73,13 +66,13 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
uint16_t i;
|
||||
Error *err = NULL;
|
||||
|
||||
object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
|
||||
qdev_realize(DEVICE(&s->cpu), NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
object_property_set_bool(OBJECT(&s->avic), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->avic), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -90,7 +83,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1,
|
||||
qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -109,7 +102,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -123,7 +116,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
s->gpt.ccm = IMX_CCM(&s->ccm);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->gpt), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpt), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -145,7 +138,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
s->epit[i].ccm = IMX_CCM(&s->ccm);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->epit[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -169,7 +162,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
};
|
||||
|
||||
/* Initialize the I2C */
|
||||
object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->i2c[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -195,7 +188,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
|
||||
object_property_set_bool(OBJECT(&s->gpio[i]), false, "has-edge-sel",
|
||||
&error_abort);
|
||||
object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &err);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
@@ -208,7 +201,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
/* Watchdog */
|
||||
object_property_set_bool(OBJECT(&s->wdt), true, "realized", &error_abort);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX31_WDT_ADDR);
|
||||
|
||||
/* On a real system, the first 16k is a `secure boot rom' */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user