From: Keith Monahan <[email protected]>
Signed-off-by: Keith Monahan <[email protected]
Signed-off-by: Helge Deller <[email protected]>
---
hw/hppa/Kconfig | 1 +
hw/hppa/machine.c | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/hw/hppa/Kconfig b/hw/hppa/Kconfig
index 9ede4d1140..d00d7ca040 100644
--- a/hw/hppa/Kconfig
+++ b/hw/hppa/Kconfig
@@ -19,3 +19,4 @@ config HPPA_B160L
select LSI_SCSI_PCI
select PARALLEL
select ARTIST
+ select HARMONY
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index f23936fc5b..940bf2c72e 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -32,6 +32,7 @@
#include "hw/misc/lasi.h"
#include "hw/scsi/ncr53c710.h"
#include "hw/scsi/lasi_ncr710.h"
+#include "hw/audio/harmony.h"
#include "hppa_hardware.h"
#include "qemu/units.h"
#include "qapi/error.h"
@@ -271,6 +272,21 @@ static LasiState *lasi_init(void)
return LASI_CHIP(dev);
}
+/* Harmony audio, inside the LASI register block at LASI + 0x4000 */
+static void harmony_create(MachineState *machine, hwaddr addr, qemu_irq irq)
+{
+ DeviceState *dev = qdev_new(TYPE_HARMONY);
+
+ if (machine->audiodev) {
+ qdev_prop_set_string(dev, "audiodev", machine->audiodev);
+ }
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+ sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
+ memory_region_add_subregion_overlap(get_system_memory(), addr,
+ sysbus_mmio_get_region(
+ SYS_BUS_DEVICE(dev), 0), 1);
+}
+
static DinoState *dino_init(MemoryRegion *addr_space)
{
DeviceState *dev;
@@ -699,6 +715,9 @@ static void machine_HP_715_init(MachineState *machine)
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
}
+ harmony_create(machine, translate(NULL, LASI_HPA_715 + LASI_AUDIO),
+ qdev_get_gpio_in(lasi_dev, LASI_IRQ_AUDIO_HPA));
+
/* Add NICs, graphics & load firmware */
machine_HP_common_init_tail(machine, NULL, translate, false);
}
@@ -778,6 +797,9 @@ static void machine_HP_B160L_init(MachineState *machine)
lsi53c8xx_handle_legacy_cmdline(dev);
}
+ harmony_create(machine, translate(NULL, LASI_HPA + LASI_AUDIO),
+ qdev_get_gpio_in(lasi_dev, LASI_IRQ_AUDIO_HPA));
+
/* Add NICs, graphics & load firmware */
machine_HP_common_init_tail(machine, pci_bus, translate, false);
}
@@ -985,6 +1007,7 @@ static void HP_B160L_machine_init_class_init(ObjectClass
*oc, const void *data)
mc->init = machine_HP_B160L_init;
mc->is_default = true;
mc->default_ram_size = 512 * MiB;
+ machine_add_audiodev_property(mc);
}
static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
@@ -1036,6 +1059,7 @@ static void HP_715_machine_init_class_init(ObjectClass
*oc, const void *data)
mc->default_cpu_type = TYPE_HPPA_CPU_PA_7300LC;
mc->valid_cpu_types = valid_cpu_types;
mc->init = machine_HP_715_init;
+ machine_add_audiodev_property(mc);
/* can only support up to max. 8 CPUs due inventory major numbers */
mc->max_cpus = MIN_CONST(HPPA_MAX_CPUS, 8);
mc->default_ram_size = 256 * MiB;
--
2.54.0