From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:60045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpMD8-0000VE-LQ for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:21:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QpMD7-0006Os-6z for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:21:18 -0400 Received: from mail-yi0-f45.google.com ([209.85.218.45]:64702) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpMD7-0006Oa-0v for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:21:17 -0400 Received: by yih10 with SMTP id 10so453995yih.4 for ; Fri, 05 Aug 2011 08:21:16 -0700 (PDT) Message-ID: <4E3C0A69.3010607@codemonkey.ws> Date: Fri, 05 Aug 2011 10:21:13 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1312463195-13605-1-git-send-email-avi@redhat.com> <1312463195-13605-18-git-send-email-avi@redhat.com> In-Reply-To: <1312463195-13605-18-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 17/39] es1370: convert to memory API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" On 08/04/2011 08:06 AM, Avi Kivity wrote: > Reviewed-by: Richard Henderson > Signed-off-by: Avi Kivity Reviewed-by: Anthony Liguori Regards, Anthony Liguori > --- > hw/es1370.c | 43 +++++++++++++++++++++++++------------------ > 1 files changed, 25 insertions(+), 18 deletions(-) > > diff --git a/hw/es1370.c b/hw/es1370.c > index 1ed62b7..6a01797 100644 > --- a/hw/es1370.c > +++ b/hw/es1370.c > @@ -268,6 +268,7 @@ struct chan { > typedef struct ES1370State { > PCIDevice dev; > QEMUSoundCard card; > + MemoryRegion io; > struct chan chan[NB_CHANNELS]; > SWVoiceOut *dac_voice[2]; > SWVoiceIn *adc_voice; > @@ -775,7 +776,6 @@ IO_READ_PROTO (es1370_readl) > return val; > } > > - > static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel, > int max, int *irq) > { > @@ -906,23 +906,20 @@ static void es1370_adc_callback (void *opaque, int avail) > es1370_run_channel (s, ADC_CHANNEL, avail); > } > > -static void es1370_map (PCIDevice *pci_dev, int region_num, > - pcibus_t addr, pcibus_t size, int type) > -{ > - ES1370State *s = DO_UPCAST (ES1370State, dev, pci_dev); > - > - (void) region_num; > - (void) size; > - (void) type; > - > - register_ioport_write (addr, 0x40 * 4, 1, es1370_writeb, s); > - register_ioport_write (addr, 0x40 * 2, 2, es1370_writew, s); > - register_ioport_write (addr, 0x40, 4, es1370_writel, s); > +static const MemoryRegionPortio es1370_portio[] = { > + { 0, 0x40 * 4, 1, .write = es1370_writeb, }, > + { 0, 0x40 * 2, 2, .write = es1370_writew, }, > + { 0, 0x40, 4, .write = es1370_writel, }, > + { 0, 0x40 * 4, 1, .read = es1370_readb, }, > + { 0, 0x40 * 2, 2, .read = es1370_readw, }, > + { 0, 0x40, 4, .read = es1370_readl, }, > + PORTIO_END > +}; > > - register_ioport_read (addr, 0x40 * 4, 1, es1370_readb, s); > - register_ioport_read (addr, 0x40 * 2, 2, es1370_readw, s); > - register_ioport_read (addr, 0x40, 4, es1370_readl, s); > -} > +static const MemoryRegionOps es1370_io_ops = { > + .old_portio = es1370_portio, > + .endianness = DEVICE_LITTLE_ENDIAN, > +}; > > static const VMStateDescription vmstate_es1370_channel = { > .name = "es1370_channel", > @@ -1011,7 +1008,8 @@ static int es1370_initfn (PCIDevice *dev) > c[PCI_MIN_GNT] = 0x0c; > c[PCI_MAX_LAT] = 0x80; > > - pci_register_bar (&s->dev, 0, 256, PCI_BASE_ADDRESS_SPACE_IO, es1370_map); > + memory_region_init_io(&s->io,&es1370_io_ops, s, "es1370", 256); > + pci_register_bar_region(&s->dev, 0, PCI_BASE_ADDRESS_SPACE_IO,&s->io); > qemu_register_reset (es1370_on_reset, s); > > AUD_register_card ("es1370",&s->card); > @@ -1019,6 +1017,14 @@ static int es1370_initfn (PCIDevice *dev) > return 0; > } > > +static int es1370_exitfn(PCIDevice *dev) > +{ > + ES1370State *s = DO_UPCAST (ES1370State, dev, dev); > + > + memory_region_destroy(&s->io); > + return 0; > +} > + > int es1370_init (PCIBus *bus) > { > pci_create_simple (bus, -1, "ES1370"); > @@ -1031,6 +1037,7 @@ static PCIDeviceInfo es1370_info = { > .qdev.size = sizeof (ES1370State), > .qdev.vmsd =&vmstate_es1370, > .init = es1370_initfn, > + .exit = es1370_exitfn, > .vendor_id = PCI_VENDOR_ID_ENSONIQ, > .device_id = PCI_DEVICE_ID_ENSONIQ_ES1370, > .class_id = PCI_CLASS_MULTIMEDIA_AUDIO,