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
|
/* this makes the hcd giveback() the urb more quickly, by kicking it
|
||||||
* off hardware queues (which may take a while) and returning it as
|
* 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,
|
* 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
|
/* disables the endpoint: cancels any pending urbs, then synchronizes with
|
||||||
* the hcd to make sure all endpoint state is gone from hardware, and then
|
* 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
|
* 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
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
int hcd_bus_suspend(struct usb_device *rhdev)
|
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)
|
* usb_hcd_irq - hook IRQs to HCD framework (bus glue)
|
||||||
* @irq: the IRQ being raised
|
* @irq: the IRQ being raised
|
||||||
|
|
Loading…
Reference in a new issue