From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=42713 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oc3xJ-00031d-Ly for qemu-devel@nongnu.org; Thu, 22 Jul 2010 18:09:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oc3lq-0002bn-It for qemu-devel@nongnu.org; Thu, 22 Jul 2010 17:57:39 -0400 Received: from mail-qw0-f45.google.com ([209.85.216.45]:49986) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oc3lq-0002bf-Gl for qemu-devel@nongnu.org; Thu, 22 Jul 2010 17:57:38 -0400 Received: by qwf6 with SMTP id 6so3332492qwf.4 for ; Thu, 22 Jul 2010 14:57:38 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Thu, 22 Jul 2010 21:57:17 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] [PATCH 11/34] pcnet: convert to pci_bar_map List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Use pci_bar_map() instead of a mapping function. Signed-off-by: Blue Swirl --- hw/pcnet.c | 62 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 30 insertions(+), 32 deletions(-) diff --git a/hw/pcnet.c b/hw/pcnet.c index b52935a..49ff321 100644 --- a/hw/pcnet.c +++ b/hw/pcnet.c @@ -1615,6 +1615,18 @@ static uint32_t pcnet_aprom_readb(void *opaque, uint32_t addr) return val; } +static IOPortWriteFunc * const pcnet_aprom_writes[] = { + pcnet_aprom_writeb, + NULL, + NULL, +}; + +static IOPortReadFunc * const pcnet_aprom_reads[] = { + pcnet_aprom_readb, + NULL, + NULL, +}; + void pcnet_ioport_writew(void *opaque, uint32_t addr, uint32_t val) { PCNetState *s = opaque; @@ -1726,24 +1738,17 @@ static uint32_t pcnet_ioport_readl(void *opaque, uint32_t addr) return val; } -static void pcnet_ioport_map(PCIDevice *pci_dev, int region_num, - pcibus_t addr, pcibus_t size, int type) -{ - PCNetState *d = &DO_UPCAST(PCIPCNetState, pci_dev, pci_dev)->state; - -#ifdef PCNET_DEBUG_IO - printf("pcnet_ioport_map addr=0x%04"FMT_PCIBUS" size=0x%04"FMT_PCIBUS"\n", - addr, size); -#endif - - register_ioport_write(addr, 16, 1, pcnet_aprom_writeb, d); - register_ioport_read(addr, 16, 1, pcnet_aprom_readb, d); +static IOPortWriteFunc * const pcnet_ioport_writes[] = { + NULL, + pcnet_ioport_writew, + pcnet_ioport_writel, +}; - register_ioport_write(addr + 0x10, 0x10, 2, pcnet_ioport_writew, d); - register_ioport_read(addr + 0x10, 0x10, 2, pcnet_ioport_readw, d); - register_ioport_write(addr + 0x10, 0x10, 4, pcnet_ioport_writel, d); - register_ioport_read(addr + 0x10, 0x10, 4, pcnet_ioport_readl, d); -} +static IOPortReadFunc * const pcnet_ioport_reads[] = { + NULL, + pcnet_ioport_readw, + pcnet_ioport_readl, +}; static void pcnet_mmio_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) { @@ -1915,19 +1920,6 @@ static CPUReadMemoryFunc * const pcnet_mmio_read[] = { &pcnet_mmio_readl }; -static void pcnet_mmio_map(PCIDevice *pci_dev, int region_num, - pcibus_t addr, pcibus_t size, int type) -{ - PCIPCNetState *d = DO_UPCAST(PCIPCNetState, pci_dev, pci_dev); - -#ifdef PCNET_DEBUG_IO - printf("pcnet_mmio_map addr=0x%08"FMT_PCIBUS" 0x%08"FMT_PCIBUS"\n", - addr, size); -#endif - - cpu_register_physical_memory(addr, PCNET_PNPMMIO_SIZE, d->state.mmio_index); -} - static void pci_physical_memory_write(void *dma_opaque, target_phys_addr_t addr, uint8_t *buf, int len, int do_bswap) { @@ -1971,6 +1963,7 @@ static int pci_pcnet_init(PCIDevice *pci_dev) PCIPCNetState *d = DO_UPCAST(PCIPCNetState, pci_dev, pci_dev); PCNetState *s = &d->state; uint8_t *pci_conf; + int io_index; #if 0 printf("sizeof(RMD)=%d, sizeof(TMD)=%d\n", @@ -1998,10 +1991,15 @@ static int pci_pcnet_init(PCIDevice *pci_dev) cpu_register_io_memory(pcnet_mmio_read, pcnet_mmio_write, &d->state); pci_register_bar(pci_dev, 0, PCNET_IOPORT_SIZE, - PCI_BASE_ADDRESS_SPACE_IO, pcnet_ioport_map); + PCI_BASE_ADDRESS_SPACE_IO, NULL); + io_index = cpu_register_io(pcnet_aprom_reads, pcnet_aprom_writes, 16, s); + pci_bar_map(pci_dev, 0, 0, 0, 16, io_index); + io_index = cpu_register_io(pcnet_ioport_reads, pcnet_ioport_writes, 16, s); + pci_bar_map(pci_dev, 0, 1, 16, 16, io_index); pci_register_bar(pci_dev, 1, PCNET_PNPMMIO_SIZE, - PCI_BASE_ADDRESS_SPACE_MEMORY, pcnet_mmio_map); + PCI_BASE_ADDRESS_SPACE_MEMORY, NULL); + pci_bar_map((PCIDevice *)d, 1, 0, 0, PCNET_PNPMMIO_SIZE, s->mmio_index); s->irq = pci_dev->irq[0]; s->phys_mem_read = pci_physical_memory_read; -- 1.6.2.4