On Thursday 05 April 2007 1:06 pm, Alan Stern wrote: > This patch (as882) fixes a problem with the EHCI BIOS handoff. On my > machine, the BIOS configures the controller and the handoff fails, > leaving the controller configured. During resume-from-disk, this > confuses ehci-hcd into thinking that the controller has not been > tampered with. > > The problem is fixed by turning off the Configured Flag whenever a > BIOS handoff is attempted, whether it succeeds or not. > > Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
Signed-off-by: David Brownell <[EMAIL PROTECTED]> > > --- > > Index: usb-2.6/drivers/usb/host/pci-quirks.c > =================================================================== > --- usb-2.6.orig/drivers/usb/host/pci-quirks.c > +++ usb-2.6/drivers/usb/host/pci-quirks.c > @@ -44,6 +44,7 @@ > #define EHCI_USBSTS 4 /* status register */ > #define EHCI_USBSTS_HALTED (1 << 12) /* HCHalted bit */ > #define EHCI_USBINTR 8 /* interrupt register */ > +#define EHCI_CONFIGFLAG 0x40 /* configured flag > register */ > #define EHCI_USBLEGSUP 0 /* legacy support > register */ > #define EHCI_USBLEGSUP_BIOS (1 << 16) /* BIOS semaphore */ > #define EHCI_USBLEGSUP_OS (1 << 24) /* OS semaphore */ > @@ -216,6 +217,7 @@ static void __devinit quirk_usb_disable_ > u32 hcc_params, val; > u8 offset, cap_length; > int count = 256/4; > + int tried_handoff = 0; > > if (!mmio_resource_enabled(pdev, 0)) > return; > @@ -273,6 +275,7 @@ static void __devinit quirk_usb_disable_ > */ > msec = 5000; > while ((cap & EHCI_USBLEGSUP_BIOS) && (msec > 0)) { > + tried_handoff = 1; > msleep(10); > msec -= 10; > pci_read_config_dword(pdev, offset, &cap); > @@ -292,6 +295,12 @@ static void __devinit quirk_usb_disable_ > pci_write_config_dword(pdev, > offset + EHCI_USBLEGCTLSTS, > 0); > + > + /* If the BIOS ever owned the controller then we > + * can't expect any power sessions to remain intact. > + */ > + if (tried_handoff) > + writel(0, op_reg_base + EHCI_CONFIGFLAG); > break; > case 0: /* illegal reserved capability */ > cap = 0; > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel