[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 09/11] macio: Add dummy screamer register area
From: |
BALATON Zoltan |
Subject: |
[PATCH v5 09/11] macio: Add dummy screamer register area |
Date: |
Tue, 16 Jun 2020 15:47:06 +0200 |
The only thing this returns is an idle status so the firmware
continues, otherwise just ignores and logs access for debugging. This
is a stop gap until proper implementation of this device lands.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
hw/misc/macio/macio.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
index 8ba7af073c..c7e8556ca6 100644
--- a/hw/misc/macio/macio.c
+++ b/hw/misc/macio/macio.c
@@ -26,6 +26,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/module.h"
+#include "qemu/log.h"
#include "hw/ppc/mac.h"
#include "hw/misc/macio/cuda.h"
#include "hw/pci/pci.h"
@@ -94,6 +95,33 @@ static void macio_bar_setup(MacIOState *s)
macio_escc_legacy_setup(s);
}
+#define AWAC_CODEC_STATUS_REG 0x20
+
+#define AWAC_MAKER_CRYSTAL 1
+#define AWAC_REV_SCREAMER 3
+#define AWAC_VALID_DATA 0x40
+
+static uint64_t screamer_read(void *opaque, hwaddr addr, unsigned size)
+{
+ qemu_log_mask(LOG_UNIMP,
+ "macio: screamer read %" HWADDR_PRIx " %d\n", addr, size);
+ return (addr == AWAC_CODEC_STATUS_REG ? AWAC_VALID_DATA << 8 |
+ AWAC_MAKER_CRYSTAL << 16 | AWAC_REV_SCREAMER << 20 : 0);
+}
+
+static void screamer_write(void *opaque, hwaddr addr,
+ uint64_t val, unsigned size)
+{
+ qemu_log_mask(LOG_UNIMP,
+ "macio: screamer write %" HWADDR_PRIx " %d = %"PRIx64"\n",
+ addr, size, val);
+}
+
+const MemoryRegionOps screamer_ops = {
+ .read = screamer_read,
+ .write = screamer_write,
+};
+
static void macio_common_realize(PCIDevice *d, Error **errp)
{
MacIOState *s = MACIO(d);
@@ -149,6 +177,7 @@ static void macio_oldworld_realize(PCIDevice *d, Error
**errp)
DeviceState *pic_dev = DEVICE(os->pic);
Error *err = NULL;
SysBusDevice *sysbus_dev;
+ MemoryRegion *screamer = g_new(MemoryRegion, 1);
macio_common_realize(d, &err);
if (err) {
@@ -208,6 +237,11 @@ static void macio_oldworld_realize(PCIDevice *d, Error
**errp)
error_propagate(errp, err);
return;
}
+
+ /* Dummy screamer sound device */
+ memory_region_init_io(screamer, OBJECT(d), &screamer_ops, NULL,
+ "screamer", 0x2000);
+ memory_region_add_subregion(&s->bar, 0x14000, screamer);
}
static void macio_init_ide(MacIOState *s, MACIOIDEState *ide, int index)
--
2.21.3
- [PATCH v5 07/11] mac_oldworld: Map macio to expected address at reset, (continued)
- [PATCH v5 07/11] mac_oldworld: Map macio to expected address at reset, BALATON Zoltan, 2020/06/16
- [PATCH v5 06/11] mac_oldworld: Rename ppc_heathrow_reset to ppc_heathrow_cpu_reset, BALATON Zoltan, 2020/06/16
- [PATCH v5 08/11] mac_oldworld: Add machine ID register, BALATON Zoltan, 2020/06/16
- [PATCH v5 05/11] grackle: Set revision in PCI config to match hardware, BALATON Zoltan, 2020/06/16
- [PATCH v5 09/11] macio: Add dummy screamer register area,
BALATON Zoltan <=
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, Mark Cave-Ayland, 2020/06/26
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, BALATON Zoltan, 2020/06/28
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, BALATON Zoltan, 2020/06/28
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, BALATON Zoltan, 2020/06/28
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, BALATON Zoltan, 2020/06/28
- Re: [PATCH v5 09/11] macio: Add dummy screamer register area, BALATON Zoltan, 2020/06/28
[PATCH v5 10/11] WIP macio/cuda: Attempt to add i2c support, BALATON Zoltan, 2020/06/16
[PATCH v5 11/11] mac_oldworld: Add SPD data to cover RAM, BALATON Zoltan, 2020/06/16
Re: [PATCH v5 00/11] Mac Old World ROM experiment, BALATON Zoltan, 2020/06/26