diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2012-10-10 15:07:46 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-24 14:45:17 -0700 |
commit | d39dbc8918be0e6bb850592e334203c9114c0e77 (patch) | |
tree | 85b33ea568a1c27b33692736c6a2bdeb1a997df7 /drivers/usb/host/ehci-lpm.c | |
parent | acc08503406f97ce6582c92fd8c8139f1e871a96 (diff) | |
download | linux-rt-d39dbc8918be0e6bb850592e334203c9114c0e77.tar.gz |
USB: EHCI: move ehci_update_device() to ehci-lpm.c
In preparation for splitting the ehci-hcd driver into a core library
and separate platform-specific driver modules, this patch (as1618)
moves ehci_update_device() from a couple of platform-specific source
files into ehci-lpm.c. This is where it should have been all along,
since all it does is call a couple of other functions that are already
in ehci-lpm.c.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-lpm.c')
-rw-r--r-- | drivers/usb/host/ehci-lpm.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-lpm.c b/drivers/usb/host/ehci-lpm.c index 2111627a19de..6b092c1dff64 100644 --- a/drivers/usb/host/ehci-lpm.c +++ b/drivers/usb/host/ehci-lpm.c @@ -17,8 +17,8 @@ */ /* this file is part of ehci-hcd.c */ -static int __maybe_unused ehci_lpm_set_da(struct ehci_hcd *ehci, - int dev_addr, int port_num) + +static int ehci_lpm_set_da(struct ehci_hcd *ehci, int dev_addr, int port_num) { u32 __iomem portsc; @@ -38,7 +38,7 @@ static int __maybe_unused ehci_lpm_set_da(struct ehci_hcd *ehci, * this function is used to check if the device support LPM * if yes, mark the PORTSC register with PORT_LPM bit */ -static int __maybe_unused ehci_lpm_check(struct ehci_hcd *ehci, int port) +static int ehci_lpm_check(struct ehci_hcd *ehci, int port) { u32 __iomem *portsc ; u32 val32; @@ -82,3 +82,20 @@ static int __maybe_unused ehci_lpm_check(struct ehci_hcd *ehci, int port) return retval; } + +static int __maybe_unused ehci_update_device(struct usb_hcd *hcd, + struct usb_device *udev) +{ + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + int rc = 0; + + if (!udev->parent) /* udev is root hub itself, impossible */ + rc = -1; + /* we only support lpm device connected to root hub yet */ + if (ehci->has_lpm && !udev->parent->parent) { + rc = ehci_lpm_set_da(ehci, udev->devnum, udev->portnum); + if (!rc) + rc = ehci_lpm_check(ehci, udev->portnum); + } + return rc; +} |