aboutsummaryrefslogtreecommitdiff
path: root/hw/ppc
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-09-21 09:51:04 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-10-03 10:29:40 +0200
commit9dcb64c96073e9898105cdbef6553cfef0fadcdb (patch)
tree86fbd55743c064c4b952dc5a3258f24f62b2ed56 /hw/ppc
parent2b16397264a8ea4b5274023b22b09a69e92cb8e9 (diff)
downloadqemu-9dcb64c96073e9898105cdbef6553cfef0fadcdb.zip
qemu-9dcb64c96073e9898105cdbef6553cfef0fadcdb.tar.gz
qemu-9dcb64c96073e9898105cdbef6553cfef0fadcdb.tar.bz2
vt82c686 machines: Support machine-default audiodev with fallback
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/ppc')
-rw-r--r--hw/ppc/pegasos2.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
index bd397cf..3203a4a 100644
--- a/hw/ppc/pegasos2.c
+++ b/hw/ppc/pegasos2.c
@@ -180,8 +180,15 @@ static void pegasos2_init(MachineState *machine)
pci_bus_irqs(pci_bus, pegasos2_pci_irq, pm, PCI_NUM_PINS);
/* VIA VT8231 South Bridge (multifunction PCI device) */
- via = OBJECT(pci_create_simple_multifunction(pci_bus, PCI_DEVFN(12, 0),
- TYPE_VT8231_ISA));
+ via = OBJECT(pci_new_multifunction(PCI_DEVFN(12, 0), TYPE_VT8231_ISA));
+
+ /* Set properties on individual devices before realizing the south bridge */
+ if (machine->audiodev) {
+ dev = PCI_DEVICE(object_resolve_path_component(via, "ac97"));
+ qdev_prop_set_string(DEVICE(dev), "audiodev", machine->audiodev);
+ }
+
+ pci_realize_and_unref(PCI_DEVICE(via), pci_bus, &error_abort);
for (i = 0; i < PCI_NUM_PINS; i++) {
pm->via_pirq[i] = qdev_get_gpio_in_named(DEVICE(via), "pirq", i);
}
@@ -556,6 +563,7 @@ static void pegasos2_machine_class_init(ObjectClass *oc, void *data)
mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("7457_v1.2");
mc->default_ram_id = "pegasos2.ram";
mc->default_ram_size = 512 * MiB;
+ machine_add_audiodev_property(mc);
vhc->cpu_in_nested = pegasos2_cpu_in_nested;
vhc->hypercall = pegasos2_hypercall;