hw/arm: Support machine-default audiodev with fallback

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Martin Kletzander 2023-09-22 17:21:39 +02:00 committed by Paolo Bonzini
parent 7a2c7da644
commit b8ab0303de
12 changed files with 92 additions and 9 deletions

View file

@ -35,6 +35,7 @@
#include "exec/address-spaces.h"
#include "cpu.h"
#include "qom/object.h"
#include "audio/audio.h"
enum spitz_model_e { spitz, akita, borzoi, terrier };
@ -774,15 +775,19 @@ static void spitz_wm8750_addr(void *opaque, int line, int level)
i2c_slave_set_address(wm, SPITZ_WM_ADDRL);
}
static void spitz_i2c_setup(PXA2xxState *cpu)
static void spitz_i2c_setup(MachineState *machine, PXA2xxState *cpu)
{
/* Attach the CPU on one end of our I2C bus. */
I2CBus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
DeviceState *wm;
/* Attach a WM8750 to the bus */
wm = DEVICE(i2c_slave_create_simple(bus, TYPE_WM8750, 0));
I2CSlave *i2c_dev = i2c_slave_new(TYPE_WM8750, 0);
DeviceState *wm = DEVICE(i2c_dev);
if (machine->audiodev) {
qdev_prop_set_string(wm, "audiodev", machine->audiodev);
}
i2c_slave_realize_and_unref(i2c_dev, bus, &error_abort);
spitz_wm8750_addr(wm, 0, 0);
qdev_connect_gpio_out(cpu->gpio, SPITZ_GPIO_WM,
@ -1013,7 +1018,7 @@ static void spitz_common_init(MachineState *machine)
spitz_gpio_setup(mpu, (model == akita) ? 1 : 2);
spitz_i2c_setup(mpu);
spitz_i2c_setup(machine, mpu);
if (model == akita)
spitz_akita_i2c_setup(mpu);
@ -1037,6 +1042,8 @@ static void spitz_common_class_init(ObjectClass *oc, void *data)
mc->block_default_type = IF_IDE;
mc->ignore_memory_transaction_failures = true;
mc->init = spitz_common_init;
machine_add_audiodev_property(mc);
}
static const TypeInfo spitz_common_info = {