[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC v3 40/56] intel-hda: convert to memory API
From: |
Avi Kivity |
Subject: |
[Qemu-devel] [RFC v3 40/56] intel-hda: convert to memory API |
Date: |
Sun, 10 Jul 2011 21:14:53 +0300 |
Signed-off-by: Avi Kivity <address@hidden>
---
hw/intel-hda.c | 49 ++++++++++++++++++++++++++++++++++---------------
1 files changed, 34 insertions(+), 15 deletions(-)
diff --git a/hw/intel-hda.c b/hw/intel-hda.c
index 0ffffce..0f5c6c4 100644
--- a/hw/intel-hda.c
+++ b/hw/intel-hda.c
@@ -177,7 +177,7 @@ struct IntelHDAState {
IntelHDAStream st[8];
/* state */
- int mmio_addr;
+ MemoryRegion mmio;
uint32_t rirb_count;
int64_t wall_base_ns;
@@ -1097,16 +1097,36 @@ static uint32_t intel_hda_mmio_readl(void *opaque,
target_phys_addr_t addr)
return intel_hda_reg_read(d, reg, 0xffffffff);
}
-static CPUReadMemoryFunc * const intel_hda_mmio_read[3] = {
- intel_hda_mmio_readb,
- intel_hda_mmio_readw,
- intel_hda_mmio_readl,
-};
+static uint64_t intel_hda_mmio_read(void *opaque, target_phys_addr_t addr,
+ unsigned size)
+{
+ IntelHDAState *d = opaque;
+
+ switch (size) {
+ case 1: return intel_hda_mmio_readb(d, addr);
+ case 2: return intel_hda_mmio_readw(d, addr);
+ case 4: return intel_hda_mmio_readl(d, addr);
+ default: abort();
+ }
+}
+
+static void intel_hda_mmio_write(void *opaque, target_phys_addr_t addr,
+ uint64_t data, unsigned size)
+{
+ IntelHDAState *d = opaque;
+
+ switch (size) {
+ case 1: return intel_hda_mmio_writeb(d, addr, data);
+ case 2: return intel_hda_mmio_writew(d, addr, data);
+ case 4: return intel_hda_mmio_writel(d, addr, data);
+ default: abort();
+ }
+}
-static CPUWriteMemoryFunc * const intel_hda_mmio_write[3] = {
- intel_hda_mmio_writeb,
- intel_hda_mmio_writew,
- intel_hda_mmio_writel,
+static MemoryRegionOps intel_hda_mmio_ops = {
+ .read = intel_hda_mmio_read,
+ .write = intel_hda_mmio_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
/* --------------------------------------------------------------------- */
@@ -1143,10 +1163,9 @@ static int intel_hda_init(PCIDevice *pci)
/* HDCTL off 0x40 bit 0 selects signaling mode (1-HDA, 0 - Ac97) 18.1.19 */
conf[0x40] = 0x01;
- d->mmio_addr = cpu_register_io_memory(intel_hda_mmio_read,
- intel_hda_mmio_write, d,
- DEVICE_NATIVE_ENDIAN);
- pci_register_bar_simple(&d->pci, 0, 0x4000, 0, d->mmio_addr);
+ memory_region_init_io(&d->mmio, &intel_hda_mmio_ops, d,
+ "intel-hda", 0x4000);
+ pci_register_bar_region(&d->pci, 0, 0, &d->mmio);
if (d->msi) {
msi_init(&d->pci, 0x50, 1, true, false);
}
@@ -1162,7 +1181,7 @@ static int intel_hda_exit(PCIDevice *pci)
IntelHDAState *d = DO_UPCAST(IntelHDAState, pci, pci);
msi_uninit(&d->pci);
- cpu_unregister_io_memory(d->mmio_addr);
+ memory_region_destroy(&d->mmio);
return 0;
}
--
1.7.5.3
- [Qemu-devel] [RFC v3 52/56] pci: remove pci_register_bar_simple(), (continued)
- [Qemu-devel] [RFC v3 52/56] pci: remove pci_register_bar_simple(), Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 50/56] xen-platform: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 26/56] Integrate I/O memory regions into qemu, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 13/56] pc: move global memory map out of pc_init1() and into its callers, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 15/56] pci: add MemoryRegion based BAR management API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 28/56] pci: pass I/O address space to new PCI bus, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 09/56] exec.c: initialize memory map, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 37/56] ivshmem: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 38/56] virtio-pci: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 20/56] vga: convert vga and its derivatives to the memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 40/56] intel-hda: convert to memory API,
Avi Kivity <=
- [Qemu-devel] [RFC v3 30/56] rtl8139: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 55/56] pci: fold BAR mapping function into its caller, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 34/56] es1370: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 49/56] uhci: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 56/56] pci: rename pci_register_bar_region() to pci_register_bar(), Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 24/56] vga: simplify vga window mmio access functions, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 48/56] ehci: convert to memory API, Avi Kivity, 2011/07/10