From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [Qemu-devel] [PATCH v3 17/39] es1370: convert to memory API Date: Fri, 05 Aug 2011 10:21:13 -0500 Message-ID: <4E3C0A69.3010607@codemonkey.ws> References: <1312463195-13605-1-git-send-email-avi@redhat.com> <1312463195-13605-18-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" To: Avi Kivity Return-path: Received: from mail-yi0-f46.google.com ([209.85.218.46]:52974 "EHLO mail-yi0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752566Ab1HEPVQ (ORCPT ); Fri, 5 Aug 2011 11:21:16 -0400 Received: by yia27 with SMTP id 27so1746601yia.19 for ; Fri, 05 Aug 2011 08:21:16 -0700 (PDT) In-Reply-To: <1312463195-13605-18-git-send-email-avi@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 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,