diff options
-rw-r--r-- | drivers/usb/host/ohci-hcd.c | 6 | ||||
-rw-r--r-- | drivers/usb/host/ohci-omap.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/ohci.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 26bc47941d01..96fe76e9a6c4 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c | |||
@@ -483,6 +483,9 @@ static int ohci_init (struct ohci_hcd *ohci) | |||
483 | int ret; | 483 | int ret; |
484 | struct usb_hcd *hcd = ohci_to_hcd(ohci); | 484 | struct usb_hcd *hcd = ohci_to_hcd(ohci); |
485 | 485 | ||
486 | if (distrust_firmware) | ||
487 | ohci->flags |= OHCI_QUIRK_HUB_POWER; | ||
488 | |||
486 | disable (ohci); | 489 | disable (ohci); |
487 | ohci->regs = hcd->regs; | 490 | ohci->regs = hcd->regs; |
488 | 491 | ||
@@ -689,7 +692,8 @@ retry: | |||
689 | temp |= RH_A_NOCP; | 692 | temp |= RH_A_NOCP; |
690 | temp &= ~(RH_A_POTPGT | RH_A_NPS); | 693 | temp &= ~(RH_A_POTPGT | RH_A_NPS); |
691 | ohci_writel (ohci, temp, &ohci->regs->roothub.a); | 694 | ohci_writel (ohci, temp, &ohci->regs->roothub.a); |
692 | } else if ((ohci->flags & OHCI_QUIRK_AMD756) || distrust_firmware) { | 695 | } else if ((ohci->flags & OHCI_QUIRK_AMD756) || |
696 | (ohci->flags & OHCI_QUIRK_HUB_POWER)) { | ||
693 | /* hub power always on; required for AMD-756 and some | 697 | /* hub power always on; required for AMD-756 and some |
694 | * Mac platforms. ganged overcurrent reporting, if any. | 698 | * Mac platforms. ganged overcurrent reporting, if any. |
695 | */ | 699 | */ |
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c index 94dfca02f7e1..5b2f17838cab 100644 --- a/drivers/usb/host/ohci-omap.c +++ b/drivers/usb/host/ohci-omap.c | |||
@@ -260,7 +260,7 @@ static int ohci_omap_init(struct usb_hcd *hcd) | |||
260 | omap_cfg_reg(W4_USB_HIGHZ); | 260 | omap_cfg_reg(W4_USB_HIGHZ); |
261 | } | 261 | } |
262 | ohci_writel(ohci, rh, &ohci->regs->roothub.a); | 262 | ohci_writel(ohci, rh, &ohci->regs->roothub.a); |
263 | distrust_firmware = 0; | 263 | ohci->flags &= ~OHCI_QUIRK_HUB_POWER; |
264 | } else if (machine_is_nokia770()) { | 264 | } else if (machine_is_nokia770()) { |
265 | /* We require a self-powered hub, which should have | 265 | /* We require a self-powered hub, which should have |
266 | * plenty of power. */ | 266 | * plenty of power. */ |
diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index dc544ddc7849..73b4a44c2726 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h | |||
@@ -399,6 +399,7 @@ struct ohci_hcd { | |||
399 | #define OHCI_QUIRK_ZFMICRO 0x20 /* Compaq ZFMicro chipset*/ | 399 | #define OHCI_QUIRK_ZFMICRO 0x20 /* Compaq ZFMicro chipset*/ |
400 | #define OHCI_QUIRK_NEC 0x40 /* lost interrupts */ | 400 | #define OHCI_QUIRK_NEC 0x40 /* lost interrupts */ |
401 | #define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */ | 401 | #define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */ |
402 | #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ | ||
402 | // there are also chip quirks/bugs in init logic | 403 | // there are also chip quirks/bugs in init logic |
403 | 404 | ||
404 | struct work_struct nec_work; /* Worker for NEC quirk */ | 405 | struct work_struct nec_work; /* Worker for NEC quirk */ |