Always send messages like this to the mailing list. On Tue, 18 Oct 2011, Arno Augustin wrote: > Hi Alan, > > thanks for your ohci-pci.c patch. It fixed my problem with resetting the > USB devices after system shutdown with kernel code of 2.6.37 to 2.6.39. > Now I have a problem with the upstream kernel code which contains code > to check the NVIDIA device id against > PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_USB to decide if OHCI_QUIRK_SHUTDOWN > should be set in the flags (And this kernel code is patched against some > Ubuntu/Lucid kernels). > With the check of the ID the patch doesn't work for me any more. I think > the USB reset problem affects different Nvidia chipsets independent to > the PCI device id. > > My (newer than MCP51) ASUS M4N78-Pro and ASUS M4N78-Pro definitely need > your patch. > > lspci output shows the following: > > ASUS M4N78-Pro: > 00:02.0 USB Controller [0c03]: nVidia Corporation MCP78S [GeForce 8200] > OHCI USB 1.1 Controller [*10de:077b*] (rev a1) (prog-if 10) > Subsystem: ASUSTeK Computer Inc. Device [*1043:82e2*] > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR- FastB2B- DisINTx- > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > Latency: 0 (750ns min, 250ns max) > Interrupt: pin A routed to IRQ 20 > Region 0: Memory at fbd7e000 (32-bit, non-prefetchable) [size=4K] > Capabilities: [44] Power Management version 2 > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA > PME(D0+,D1+,D2+,D3hot+,D3cold+) > Status: D0 PME-Enable- DSel=0 DScale=0 PME- > Kernel driver in use: ohci_hcd > > 00:04.0 USB Controller [0c03]: nVidia Corporation MCP78S [GeForce 8200] > OHCI USB 1.1 Controller [*10de:077d*] (rev a1) (prog-if 10) > Subsystem: ASUSTeK Computer Inc. Device [*1043:82e2*] > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR- FastB2B- DisINTx- > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > Latency: 0 (750ns min, 250ns max) > Interrupt: pin A routed to IRQ 23 > Region 0: Memory at fbd7d000 (32-bit, non-prefetchable) [size=4K] > Capabilities: [44] Power Management version 2 > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA > PME(D0+,D1+,D2+,D3hot+,D3cold+) > Status: D0 PME-Enable- DSel=0 DScale=0 PME- > Kernel driver in use: ohci_hcd > > Same for ASUS M3N78-VM, with different Subsystem IDs: > 00:02.00 *10de:077b 1043:82f2* 10/ 10/0x71 A V usb-ohci > 00:04.00 *10de:077d 1043:82f2* 11/ 11/0x71 A V usb-ohci Why on earth did they decide to use two different device IDs (077b and 077d) for the same kind of device? > I read, that newer hardware has problems if OHCI_QUIRK_SHUTDOWN is set > and older hardware needs the flag to be set. That's what we have seen so far. > What about defining a kernel/module variable which can be set by > externally to the kernel/module, to avoid recompiling of the kernel for > special chips? > Or at least adding MCP78S also? > > Hope you can help.... This is ridiculous. To continue adding new entries in the kernel driver is a losing game. The best thing I can think of is a sysfs attribute file to enable or disable the NVIDIA shutdown quirk. Do you think that would be okay? Alan Stern -- 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