From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TrEps-0007Os-Ix for qemu-devel@nongnu.org; Fri, 04 Jan 2013 16:29:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TrEpo-0004xk-T5 for qemu-devel@nongnu.org; Fri, 04 Jan 2013 16:29:52 -0500 Received: from smtp1-g21.free.fr ([2a01:e0c:1:1599::10]:32967) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TrEpo-0004wl-8L for qemu-devel@nongnu.org; Fri, 04 Jan 2013 16:29:48 -0500 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Fri, 4 Jan 2013 22:29:38 +0100 Message-Id: <1357334986-13941-4-git-send-email-hpoussin@reactos.org> In-Reply-To: <1357334986-13941-1-git-send-email-hpoussin@reactos.org> References: <1357334986-13941-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 03/10] uhci: stop using portio lists List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= , Gerd Hoffmann From: Gerd Hoffmann Signed-off-by: Gerd Hoffmann Tested-by: Herv=C3=A9 Poussineau --- hw/usb/hcd-uhci.c | 106 +++++++++++++++--------------------------------= ------ trace-events | 2 - 2 files changed, 30 insertions(+), 78 deletions(-) diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index 2af754b..528d23f 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -455,40 +455,11 @@ static const VMStateDescription vmstate_uhci =3D { } }; =20 -static void uhci_ioport_writeb(void *opaque, uint32_t addr, uint32_t val= ) +static void uhci_port_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) { UHCIState *s =3D opaque; =20 - addr &=3D 0x1f; - switch(addr) { - case 0x0c: - s->sof_timing =3D val; - break; - } -} - -static uint32_t uhci_ioport_readb(void *opaque, uint32_t addr) -{ - UHCIState *s =3D opaque; - uint32_t val; - - addr &=3D 0x1f; - switch(addr) { - case 0x0c: - val =3D s->sof_timing; - break; - default: - val =3D 0xff; - break; - } - return val; -} - -static void uhci_ioport_writew(void *opaque, uint32_t addr, uint32_t val= ) -{ - UHCIState *s =3D opaque; - - addr &=3D 0x1f; trace_usb_uhci_mmio_writew(addr, val); =20 switch(addr) { @@ -537,6 +508,17 @@ static void uhci_ioport_writew(void *opaque, uint32_= t addr, uint32_t val) if (s->status & UHCI_STS_HCHALTED) s->frnum =3D val & 0x7ff; break; + case 0x08: + s->fl_base_addr &=3D 0xffff0000; + s->fl_base_addr |=3D val & ~0xfff; + break; + case 0x0a: + s->fl_base_addr &=3D 0x0000ffff; + s->fl_base_addr |=3D (val << 16); + break; + case 0x0c: + s->sof_timing =3D val & 0xff; + break; case 0x10 ... 0x1f: { UHCIPort *port; @@ -568,12 +550,11 @@ static void uhci_ioport_writew(void *opaque, uint32= _t addr, uint32_t val) } } =20 -static uint32_t uhci_ioport_readw(void *opaque, uint32_t addr) +static uint64_t uhci_port_read(void *opaque, hwaddr addr, unsigned size) { UHCIState *s =3D opaque; uint32_t val; =20 - addr &=3D 0x1f; switch(addr) { case 0x00: val =3D s->cmd; @@ -587,6 +568,15 @@ static uint32_t uhci_ioport_readw(void *opaque, uint= 32_t addr) case 0x06: val =3D s->frnum; break; + case 0x08: + val =3D s->fl_base_addr & 0xffff; + break; + case 0x0a: + val =3D (s->fl_base_addr >> 16) & 0xffff; + break; + case 0x0c: + val =3D s->sof_timing; + break; case 0x10 ... 0x1f: { UHCIPort *port; @@ -609,38 +599,6 @@ static uint32_t uhci_ioport_readw(void *opaque, uint= 32_t addr) return val; } =20 -static void uhci_ioport_writel(void *opaque, uint32_t addr, uint32_t val= ) -{ - UHCIState *s =3D opaque; - - addr &=3D 0x1f; - trace_usb_uhci_mmio_writel(addr, val); - - switch(addr) { - case 0x08: - s->fl_base_addr =3D val & ~0xfff; - break; - } -} - -static uint32_t uhci_ioport_readl(void *opaque, uint32_t addr) -{ - UHCIState *s =3D opaque; - uint32_t val; - - addr &=3D 0x1f; - switch(addr) { - case 0x08: - val =3D s->fl_base_addr; - break; - default: - val =3D 0xffffffff; - break; - } - trace_usb_uhci_mmio_readl(addr, val); - return val; -} - /* signal resume if controller suspended */ static void uhci_resume (void *opaque) { @@ -1213,18 +1171,14 @@ static void uhci_frame_timer(void *opaque) qemu_mod_timer(s->frame_timer, s->expire_time); } =20 -static const MemoryRegionPortio uhci_portio[] =3D { - { 0, 32, 2, .write =3D uhci_ioport_writew, }, - { 0, 32, 2, .read =3D uhci_ioport_readw, }, - { 0, 32, 4, .write =3D uhci_ioport_writel, }, - { 0, 32, 4, .read =3D uhci_ioport_readl, }, - { 0, 32, 1, .write =3D uhci_ioport_writeb, }, - { 0, 32, 1, .read =3D uhci_ioport_readb, }, - PORTIO_END_OF_LIST() -}; - static const MemoryRegionOps uhci_ioport_ops =3D { - .old_portio =3D uhci_portio, + .read =3D uhci_port_read, + .write =3D uhci_port_write, + .valid.min_access_size =3D 1, + .valid.max_access_size =3D 4, + .impl.min_access_size =3D 2, + .impl.max_access_size =3D 2, + .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 static USBPortOps uhci_port_ops =3D { diff --git a/trace-events b/trace-events index 4023a4c..2183183 100644 --- a/trace-events +++ b/trace-events @@ -307,8 +307,6 @@ usb_uhci_frame_loop_stop_idle(void) "" usb_uhci_frame_loop_continue(void) "" usb_uhci_mmio_readw(uint32_t addr, uint32_t val) "addr 0x%04x, ret 0x%04= x" usb_uhci_mmio_writew(uint32_t addr, uint32_t val) "addr 0x%04x, val 0x%0= 4x" -usb_uhci_mmio_readl(uint32_t addr, uint32_t val) "addr 0x%04x, ret 0x%08= x" -usb_uhci_mmio_writel(uint32_t addr, uint32_t val) "addr 0x%04x, val 0x%0= 8x" usb_uhci_queue_add(uint32_t token) "token 0x%x" usb_uhci_queue_del(uint32_t token, const char *reason) "token 0x%x: %s" usb_uhci_packet_add(uint32_t token, uint32_t addr) "token 0x%x, td 0x%x" --=20 1.7.10.4