static int tegra_ehci_urb_enqueue( struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags ) { struct tegra_hcd_platform_data *pdata; int xfertype; int transfer_buffer_length; pdata = hcd->self.controller->platform_data; xfertype = usb_endpoint_type(&urb->ep->desc); transfer_buffer_length = urb->transfer_buffer_length; /* Turn on the USB busy hints */ switch (xfertype) { case USB_ENDPOINT_XFER_INT: if (transfer_buffer_length < 255) { /* Do nothing for interrupt buffers < 255 */ } else { // signal to set the busy hints schedule_work(&pdata->work); } break; case USB_ENDPOINT_XFER_ISOC: case USB_ENDPOINT_XFER_BULK: // signal to set the busy hints schedule_work(&pdata->work); break; case USB_ENDPOINT_XFER_CONTROL: default: /* Do nothing special here */ break; } return ehci_urb_enqueue(hcd, urb, mem_flags); }
static int ehci_hsic_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags) { dbg_log_event(urb, event_to_str(URB_SUBMIT), 0); return ehci_urb_enqueue(hcd, urb, mem_flags); }