On Mon, Apr 23, 2012 at 04:11:48PM -0400, Alan Stern wrote: [snip] > Anyway, this patch is reasonably close to being a final version, and it > should work on both machines. You should be able to suspend and resume > with no problems, without using the script. > > Alan Stern > What happend to this patch? I saw it posted on bugzilla for a while then I lost track of it. > > Index: usb-3.4/include/linux/usb/hcd.h > =================================================================== > --- usb-3.4.orig/include/linux/usb/hcd.h > +++ usb-3.4/include/linux/usb/hcd.h > @@ -126,6 +126,8 @@ struct usb_hcd { > unsigned wireless:1; /* Wireless USB HCD */ > unsigned authorized_default:1; > unsigned has_tt:1; /* Integrated TT in root hub */ > + unsigned broken_pci_sleep:1; /* Don't put the > + controller in PCI-D3 for system sleep */ > > unsigned int irq; /* irq allocated */ > void __iomem *regs; /* device memory/io */ > Index: usb-3.4/drivers/usb/core/hcd-pci.c > =================================================================== > --- usb-3.4.orig/drivers/usb/core/hcd-pci.c > +++ usb-3.4/drivers/usb/core/hcd-pci.c > @@ -493,6 +493,15 @@ static int hcd_pci_suspend_noirq(struct > > pci_save_state(pci_dev); > > + /* > + * Some systems crash if an EHCI controller is in D3 during > + * a sleep transition. We have to leave such controllers in D0. > + */ > + if (hcd->broken_pci_sleep) { > + dev_dbg(dev, "Staying in PCI D0\n"); > + return retval; > + } > + > /* If the root hub is dead rather than suspended, disallow remote > * wakeup. usb_hc_died() should ensure that both hosts are marked as > * dying, so we only need to check the primary roothub. > Index: usb-3.4/drivers/usb/host/ehci-pci.c > =================================================================== > --- usb-3.4.orig/drivers/usb/host/ehci-pci.c > +++ usb-3.4/drivers/usb/host/ehci-pci.c > @@ -144,6 +144,13 @@ static int ehci_pci_setup(struct usb_hcd > hcd->has_tt = 1; > tdi_reset(ehci); > } > + if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) { > + /* EHCI #1 or #2 on 6 Series/C200 Series chipset */ > + if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) { > + ehci_info(ehci, "broken D3 during system sleep on ASUS\n"); > + hcd->broken_pci_sleep = 1; > + } > + } > break; > case PCI_VENDOR_ID_TDI: > if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html