[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 09/25] usb-ohci: switch to usb_find_device()
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 09/25] usb-ohci: switch to usb_find_device() |
Date: |
Mon, 23 Jan 2012 15:54:55 +0100 |
Switch over OHCI to use the new usb_find_device()
function for device lookup.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/usb-ohci.c | 73 +++++++++++++++++++++++++++++----------------------------
1 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/hw/usb-ohci.c b/hw/usb-ohci.c
index 77f8949..e79b9a8 100644
--- a/hw/usb-ohci.c
+++ b/hw/usb-ohci.c
@@ -408,6 +408,23 @@ static void ohci_child_detach(USBPort *port1, USBDevice
*child)
ohci_async_cancel_device(s, child);
}
+static USBDevice *ohci_find_device(OHCIState *ohci, uint8_t addr)
+{
+ USBDevice *dev;
+ int i;
+
+ for (i = 0; i < ohci->num_ports; i++) {
+ if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0) {
+ continue;
+ }
+ dev = usb_find_device(&ohci->rhport[i].port, addr);
+ if (dev != NULL) {
+ return dev;
+ }
+ }
+ return NULL;
+}
+
/* Reset the controller */
static void ohci_reset(void *opaque)
{
@@ -779,20 +796,12 @@ static int ohci_service_iso_td(OHCIState *ohci, struct
ohci_ed *ed,
if (completion) {
ret = ohci->usb_packet.result;
} else {
- ret = USB_RET_NODEV;
- for (i = 0; i < ohci->num_ports; i++) {
- dev = ohci->rhport[i].port.dev;
- if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0)
- continue;
- usb_packet_setup(&ohci->usb_packet, pid,
- OHCI_BM(ed->flags, ED_FA),
- OHCI_BM(ed->flags, ED_EN));
- usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, len);
- ret = usb_handle_packet(dev, &ohci->usb_packet);
- if (ret != USB_RET_NODEV)
- break;
- }
-
+ usb_packet_setup(&ohci->usb_packet, pid,
+ OHCI_BM(ed->flags, ED_FA),
+ OHCI_BM(ed->flags, ED_EN));
+ usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, len);
+ dev = ohci_find_device(ohci, ohci->usb_packet.devaddr);
+ ret = usb_handle_packet(dev, &ohci->usb_packet);
if (ret == USB_RET_ASYNC) {
return 1;
}
@@ -972,31 +981,23 @@ static int ohci_service_td(OHCIState *ohci, struct
ohci_ed *ed)
ohci->async_td = 0;
ohci->async_complete = 0;
} else {
- ret = USB_RET_NODEV;
- for (i = 0; i < ohci->num_ports; i++) {
- dev = ohci->rhport[i].port.dev;
- if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0)
- continue;
-
- if (ohci->async_td) {
- /* ??? The hardware should allow one active packet per
- endpoint. We only allow one active packet per controller.
- This should be sufficient as long as devices respond in a
- timely manner.
- */
+ if (ohci->async_td) {
+ /* ??? The hardware should allow one active packet per
+ endpoint. We only allow one active packet per controller.
+ This should be sufficient as long as devices respond in a
+ timely manner.
+ */
#ifdef DEBUG_PACKET
- DPRINTF("Too many pending packets\n");
+ DPRINTF("Too many pending packets\n");
#endif
- return 1;
- }
- usb_packet_setup(&ohci->usb_packet, pid,
- OHCI_BM(ed->flags, ED_FA),
- OHCI_BM(ed->flags, ED_EN));
- usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, pktlen);
- ret = usb_handle_packet(dev, &ohci->usb_packet);
- if (ret != USB_RET_NODEV)
- break;
+ return 1;
}
+ usb_packet_setup(&ohci->usb_packet, pid,
+ OHCI_BM(ed->flags, ED_FA),
+ OHCI_BM(ed->flags, ED_EN));
+ usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, pktlen);
+ dev = ohci_find_device(ohci, ohci->usb_packet.devaddr);
+ ret = usb_handle_packet(dev, &ohci->usb_packet);
#ifdef DEBUG_PACKET
DPRINTF("ret=%d\n", ret);
#endif
--
1.7.1
- [Qemu-devel] [PATCH 00/25] *** SUBJECT HERE ***, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 01/25] usb: kill USB_MSG_{ATTACH,DETACH}, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 04/25] usb: add usb_find_device(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 02/25] usb: kill USB_MSG_RESET, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 07/25] usb-uhci: switch to usb_find_device(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 13/25] usb: fold usb_generic_handle_packet into usb_handle_packet, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 03/25] usb: kill usb_send_msg, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 11/25] usb-xhci: switch to usb_find_device(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 05/25] usb-hub: implement find_device, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 12/25] usb: kill handle_packet callback, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 09/25] usb-ohci: switch to usb_find_device(),
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 14/25] usb: USBPacket: add status, rename owner -> ep, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 06/25] usb: handle dev == NULL in usb_handle_packet(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 20/25] xhci: signal low- and fullspeed support, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 08/25] usb-ehci: switch to usb_find_device(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 10/25] usb-musb: switch to usb_find_device(), Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 22/25] xhci: stop on errors, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 23/25] xhci: kill port arg from xhci_setup_packet, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 19/25] usb: add USBBusOps->wakeup_endpoint, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 18/25] usb: pass USBEndpoint to usb_wakeup, Gerd Hoffmann, 2012/01/23
- [Qemu-devel] [PATCH 17/25] usb: maintain async packet list per endpoint, Gerd Hoffmann, 2012/01/23