aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAric D. Blumer <aric@sdgsystems.com>2009-07-30 13:42:30 -0400
committerEric Miao <eric.y.miao@gmail.com>2009-09-10 19:15:38 +0800
commita75d048e1409bb2bae0d71645c4f6247d2ce9276 (patch)
tree2602e602a2ec94db18500d5be5fcf3f4a8273c1f
parent85c6102100150522f8fbc80cffdd08d1f8b66c87 (diff)
USB: ohci-pxa27x: Reconfigure power settings on resume
On resume, the power-related bits in UHCRHDA were not being set, so they would default to the reset state. For PXA3xx devices, OCPM must be cleared, but it was remaining set from resume reset. Signed-off-by: Aric D. Blumer <aric@sdgsystems.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
-rw-r--r--drivers/usb/host/ohci-pxa27x.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
index 61800742fc0..bbc0c3b720b 100644
--- a/drivers/usb/host/ohci-pxa27x.c
+++ b/drivers/usb/host/ohci-pxa27x.c
@@ -497,6 +497,7 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
{
struct usb_hcd *hcd = dev_get_drvdata(dev);
struct pxa27x_ohci *ohci = to_pxa27x_ohci(hcd);
+ struct pxaohci_platform_data *inf = dev->platform_data;
int status;
if (time_before(jiffies, ohci->ohci.next_statechange))
@@ -506,6 +507,9 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
if ((status = pxa27x_start_hc(ohci, dev)) < 0)
return status;
+ /* Select Power Management Mode */
+ pxa27x_ohci_select_pmm(ohci, inf->port_mode);
+
ohci_finish_controller_resume(hcd);
return 0;
}