--- linux-3.2.9/drivers/usb/host/ehci-pci.c 2012-03-01 01:32:49.000000000 +0100 +++ linux-3.2.9-usb-patch/drivers/usb/host/ehci-pci.c 2012-03-05 03:04:46.000000000 +0100 @@ -97,6 +97,24 @@ break; } break; + + /* RDC USB 2.0 device 0x6061 on Vortex Soc DX board sometimes + * timed out on halt command. Reseting controller before halt command + * helped. + * + * Trade Fides (JmJ) 7.3.2012 + */ + case PCI_VENDOR_ID_RDC: + ehci_info(ehci, + "RDC Semiconductor workaround - calling reset before halting\n"); + retval = ehci_reset(ehci); + if (retval) + { + ehci_warn(ehci, "RDC reset workaround failed\n"); + return retval; + } + break; + } /* cache this readonly data; minimize chip reads */ @@ -104,7 +122,10 @@ retval = ehci_halt(ehci); if (retval) + { + ehci_warn(ehci, "USB controller halt failed\n"); return retval; + } if ((pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x7808) || (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x4396)) {