USB: move routines in hcd.c
This patch (as939) moves a couple of routine in hcd.c around. The purpose is to put all the general URB- and endpoint-related routines (submit, unlink, giveback, and disable) together in one spot. There are no functional changes. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
82210d3774
commit
32aca56005
1 changed files with 41 additions and 41 deletions
|
@ -1033,18 +1033,6 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/* called in any context */
|
||||
int usb_hcd_get_frame_number (struct usb_device *udev)
|
||||
{
|
||||
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
|
||||
|
||||
if (!HC_IS_RUNNING (hcd->state))
|
||||
return -ESHUTDOWN;
|
||||
return hcd->driver->get_frame_number (hcd);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/* this makes the hcd giveback() the urb more quickly, by kicking it
|
||||
* off hardware queues (which may take a while) and returning it as
|
||||
* soon as practical. we've already set up the urb's return status,
|
||||
|
@ -1167,6 +1155,35 @@ int usb_hcd_unlink_urb (struct urb *urb, int status)
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* usb_hcd_giveback_urb - return URB from HCD to device driver
|
||||
* @hcd: host controller returning the URB
|
||||
* @urb: urb being returned to the USB device driver.
|
||||
* Context: in_interrupt()
|
||||
*
|
||||
* This hands the URB from HCD to its USB device driver, using its
|
||||
* completion function. The HCD has freed all per-urb resources
|
||||
* (and is done using urb->hcpriv). It also released all HCD locks;
|
||||
* the device driver won't cause problems if it frees, modifies,
|
||||
* or resubmits this URB.
|
||||
*/
|
||||
void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb)
|
||||
{
|
||||
urb_unlink(hcd, urb);
|
||||
usbmon_urb_complete (&hcd->self, urb);
|
||||
usb_unanchor_urb(urb);
|
||||
|
||||
/* pass ownership to the completion handler */
|
||||
urb->complete (urb);
|
||||
atomic_dec (&urb->use_count);
|
||||
if (unlikely (urb->reject))
|
||||
wake_up (&usb_kill_urb_queue);
|
||||
usb_put_urb (urb);
|
||||
}
|
||||
EXPORT_SYMBOL (usb_hcd_giveback_urb);
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/* disables the endpoint: cancels any pending urbs, then synchronizes with
|
||||
* the hcd to make sure all endpoint state is gone from hardware, and then
|
||||
* waits until the endpoint's queue is completely drained. use for
|
||||
|
@ -1260,6 +1277,18 @@ void usb_hcd_endpoint_disable (struct usb_device *udev,
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/* called in any context */
|
||||
int usb_hcd_get_frame_number (struct usb_device *udev)
|
||||
{
|
||||
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
|
||||
|
||||
if (!HC_IS_RUNNING (hcd->state))
|
||||
return -ESHUTDOWN;
|
||||
return hcd->driver->get_frame_number (hcd);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
int hcd_bus_suspend(struct usb_device *rhdev)
|
||||
|
@ -1394,35 +1423,6 @@ EXPORT_SYMBOL (usb_bus_start_enum);
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* usb_hcd_giveback_urb - return URB from HCD to device driver
|
||||
* @hcd: host controller returning the URB
|
||||
* @urb: urb being returned to the USB device driver.
|
||||
* Context: in_interrupt()
|
||||
*
|
||||
* This hands the URB from HCD to its USB device driver, using its
|
||||
* completion function. The HCD has freed all per-urb resources
|
||||
* (and is done using urb->hcpriv). It also released all HCD locks;
|
||||
* the device driver won't cause problems if it frees, modifies,
|
||||
* or resubmits this URB.
|
||||
*/
|
||||
void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb)
|
||||
{
|
||||
urb_unlink(hcd, urb);
|
||||
usbmon_urb_complete (&hcd->self, urb);
|
||||
usb_unanchor_urb(urb);
|
||||
|
||||
/* pass ownership to the completion handler */
|
||||
urb->complete (urb);
|
||||
atomic_dec (&urb->use_count);
|
||||
if (unlikely (urb->reject))
|
||||
wake_up (&usb_kill_urb_queue);
|
||||
usb_put_urb (urb);
|
||||
}
|
||||
EXPORT_SYMBOL (usb_hcd_giveback_urb);
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* usb_hcd_irq - hook IRQs to HCD framework (bus glue)
|
||||
* @irq: the IRQ being raised
|
||||
|
|
Loading…
Reference in a new issue