hcd-ohci.c (69f153667fce723ee546d2f047d66d0cfa67c3cc) hcd-ohci.c (6e821e5084fb1169d653c835b3819acf94e8b52c)
1/*
2 * QEMU USB OHCI Emulation
3 * Copyright (c) 2004 Gianni Tedesco
4 * Copyright (c) 2006 CodeSourcery
5 * Copyright (c) 2006 Openedhand Ltd.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 1019 unchanged lines hidden (view full) ---

1028 trace_usb_ohci_td_pkt_hdr(addr, (int64_t)pktlen, (int64_t)len, str,
1029 flag_r, td.cbp, td.be);
1030 ohci_td_pkt("OUT", ohci->usb_buf, pktlen);
1031
1032 if (completion) {
1033 ohci->async_td = 0;
1034 ohci->async_complete = false;
1035 } else {
1/*
2 * QEMU USB OHCI Emulation
3 * Copyright (c) 2004 Gianni Tedesco
4 * Copyright (c) 2006 CodeSourcery
5 * Copyright (c) 2006 Openedhand Ltd.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 1019 unchanged lines hidden (view full) ---

1028 trace_usb_ohci_td_pkt_hdr(addr, (int64_t)pktlen, (int64_t)len, str,
1029 flag_r, td.cbp, td.be);
1030 ohci_td_pkt("OUT", ohci->usb_buf, pktlen);
1031
1032 if (completion) {
1033 ohci->async_td = 0;
1034 ohci->async_complete = false;
1035 } else {
1036 dev = ohci_find_device(ohci, OHCI_BM(ed->flags, ED_FA));
1037 if (dev == NULL) {
1038 trace_usb_ohci_td_dev_error();
1039 return 1;
1040 }
1041 ep = usb_ep_get(dev, pid, OHCI_BM(ed->flags, ED_EN));
1036 if (ohci->async_td) {
1037 /* ??? The hardware should allow one active packet per
1038 endpoint. We only allow one active packet per controller.
1039 This should be sufficient as long as devices respond in a
1040 timely manner.
1041 */
1042 if (ohci->async_td) {
1043 /* ??? The hardware should allow one active packet per
1044 endpoint. We only allow one active packet per controller.
1045 This should be sufficient as long as devices respond in a
1046 timely manner.
1047 */
1042 trace_usb_ohci_td_too_many_pending();
1048 trace_usb_ohci_td_too_many_pending(ep->nr);
1043 return 1;
1044 }
1049 return 1;
1050 }
1045 dev = ohci_find_device(ohci, OHCI_BM(ed->flags, ED_FA));
1046 if (dev == NULL) {
1047 trace_usb_ohci_td_dev_error();
1048 return 1;
1049 }
1050 ep = usb_ep_get(dev, pid, OHCI_BM(ed->flags, ED_EN));
1051 usb_packet_setup(&ohci->usb_packet, pid, ep, 0, addr, !flag_r,
1052 OHCI_BM(td.flags, TD_DI) == 0);
1053 usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, pktlen);
1054 usb_handle_packet(dev, &ohci->usb_packet);
1055 trace_usb_ohci_td_packet_status(ohci->usb_packet.status);
1056
1057 if (ohci->usb_packet.status == USB_RET_ASYNC) {
1058 usb_device_flush_ep_queue(dev, ep);

--- 976 unchanged lines hidden ---
1051 usb_packet_setup(&ohci->usb_packet, pid, ep, 0, addr, !flag_r,
1052 OHCI_BM(td.flags, TD_DI) == 0);
1053 usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, pktlen);
1054 usb_handle_packet(dev, &ohci->usb_packet);
1055 trace_usb_ohci_td_packet_status(ohci->usb_packet.status);
1056
1057 if (ohci->usb_packet.status == USB_RET_ASYNC) {
1058 usb_device_flush_ep_queue(dev, ep);

--- 976 unchanged lines hidden ---