aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-hub.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-hub.c')
-rw-r--r--drivers/usb/host/ehci-hub.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 27291f502651..71aeca019e88 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -647,9 +647,24 @@ static int ehci_hub_control (
647 status |= 1 << USB_PORT_FEAT_C_CONNECTION; 647 status |= 1 << USB_PORT_FEAT_C_CONNECTION;
648 if (temp & PORT_PEC) 648 if (temp & PORT_PEC)
649 status |= 1 << USB_PORT_FEAT_C_ENABLE; 649 status |= 1 << USB_PORT_FEAT_C_ENABLE;
650 if ((temp & PORT_OCC) && !ignore_oc) 650
651 if ((temp & PORT_OCC) && !ignore_oc){
651 status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT; 652 status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT;
652 653
654 /*
655 * Hubs should disable port power on over-current.
656 * However, not all EHCI implementations do this
657 * automatically, even if they _do_ support per-port
658 * power switching; they're allowed to just limit the
659 * current. khubd will turn the power back on.
660 */
661 if (HCS_PPC (ehci->hcs_params)){
662 ehci_writel(ehci,
663 temp & ~(PORT_RWC_BITS | PORT_POWER),
664 status_reg);
665 }
666 }
667
653 /* whoever resumes must GetPortStatus to complete it!! */ 668 /* whoever resumes must GetPortStatus to complete it!! */
654 if (temp & PORT_RESUME) { 669 if (temp & PORT_RESUME) {
655 670