[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC v3 48/56] ehci: convert to memory API
From: |
Avi Kivity |
Subject: |
[Qemu-devel] [RFC v3 48/56] ehci: convert to memory API |
Date: |
Sun, 10 Jul 2011 21:15:01 +0300 |
Signed-off-by: Avi Kivity <address@hidden>
---
hw/usb-ehci.c | 53 +++++++++++++++++++++++++++++------------------------
1 files changed, 29 insertions(+), 24 deletions(-)
diff --git a/hw/usb-ehci.c b/hw/usb-ehci.c
index 91fb7de..bd7fdcb 100644
--- a/hw/usb-ehci.c
+++ b/hw/usb-ehci.c
@@ -371,8 +371,7 @@ struct EHCIState {
PCIDevice dev;
USBBus bus;
qemu_irq irq;
- target_phys_addr_t mem_base;
- int mem;
+ MemoryRegion mem;
int num_ports;
/* properties */
@@ -2094,29 +2093,38 @@ static void ehci_frame_timer(void *opaque)
qemu_mod_timer(ehci->frame_timer, expire_time);
}
-static CPUReadMemoryFunc *ehci_readfn[3]={
- ehci_mem_readb,
- ehci_mem_readw,
- ehci_mem_readl
-};
+static uint64_t ehci_mem_read(void *opaque, target_phys_addr_t addr,
+ unsigned size)
+{
+ EHCIState *s = opaque;
-static CPUWriteMemoryFunc *ehci_writefn[3]={
- ehci_mem_writeb,
- ehci_mem_writew,
- ehci_mem_writel
-};
+ switch (size) {
+ case 1: return ehci_mem_readb(s, addr);
+ case 2: return ehci_mem_readw(s, addr);
+ case 4: return ehci_mem_readl(s, addr);
+ default: abort();
+ }
+}
-static void ehci_map(PCIDevice *pci_dev, int region_num,
- pcibus_t addr, pcibus_t size, int type)
+static void ehci_mem_write(void *opaque, target_phys_addr_t addr,
+ uint64_t data, unsigned size)
{
- EHCIState *s =(EHCIState *)pci_dev;
+ EHCIState *s = opaque;
- DPRINTF("ehci_map: region %d, addr %08" PRIx64 ", size %" PRId64 ", s->mem
%08X\n",
- region_num, addr, size, s->mem);
- s->mem_base = addr;
- cpu_register_physical_memory(addr, size, s->mem);
+ switch (size) {
+ case 1: return ehci_mem_writeb(s, addr, data);
+ case 2: return ehci_mem_writew(s, addr, data);
+ case 4: return ehci_mem_writel(s, addr, data);
+ default: abort();
+ }
}
+static MemoryRegionOps ehci_mem_ops = {
+ .read = ehci_mem_read,
+ .write = ehci_mem_write,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
static void ehci_device_destroy(USBBus *bus, USBDevice *dev)
{
EHCIState *s = container_of(bus, EHCIState, bus);
@@ -2215,11 +2223,8 @@ static int usb_ehci_initfn(PCIDevice *dev)
qemu_register_reset(ehci_reset, s);
- s->mem = cpu_register_io_memory(ehci_readfn, ehci_writefn, s,
- DEVICE_LITTLE_ENDIAN);
-
- pci_register_bar(&s->dev, 0, MMIO_SIZE, PCI_BASE_ADDRESS_SPACE_MEMORY,
- ehci_map);
+ memory_region_init_io(&s->mem, &ehci_mem_ops, s, "ehci", MMIO_SIZE);
+ pci_register_bar_region(&s->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY,
&s->mem);
fprintf(stderr, "*** EHCI support is under development ***\n");
--
1.7.5.3
- [Qemu-devel] [RFC v3 40/56] intel-hda: convert to memory API, (continued)
- [Qemu-devel] [RFC v3 40/56] intel-hda: convert to memory API, Avi Kivity, 2011/07/10
- [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 <=
- [Qemu-devel] [RFC v3 51/56] msix: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 54/56] pci: remove pci_register_bar(), Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 42/56] ppc: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 45/56] i6300esb: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 32/56] e1000: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 46/56] isa-mmio: concert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 25/56] cirrus: simplify linear framebuffer access functions, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 41/56] lsi53c895a: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 35/56] ide: convert to memory API, Avi Kivity, 2011/07/10
- [Qemu-devel] [RFC v3 47/56] sun4u: convert to memory API, Avi Kivity, 2011/07/10