On Sat, May 19, 2012 at 11:11:19PM +0800, Ming Lei wrote: > The 3d9545cc375d117554a9b35dfddadf9189c62775(EHCI: maintain the > ehci->command value properly) introducs one command register > configuration lost problem by the below line in ehci_reset: > > ehci->command = ehci_readl(ehci, &ehci->regs->command); > > After writting RESET into command register, it is restored to > its default value per EHCI spec[1], so the previous configuration > will be lost, and may introduce some problems reported recently: > - imx51 Babbage board detect usb hub failed[2], reported > by Richard Zhao. > - mouse and keyboard hangs in linux-next found by > Dan Carpenter and Greg-KH. > > So this patch just removes the line to fix these problems, and > keep configurating command register consistent as before the commit > 3d9545cc(EHCI: maintain the ehci->command value properly). > > [1], 4.1 Host Controller Initialization of EHCI Specification 1.0 > [2], failed dmesg log: > usb 1-1: new high-speed USB device number 2 using mxc-ehci > hub 1-1:1.0: USB hub found > hub 1-1:1.0: 7 ports detected > mxc-ehci mxc-ehci.1: fatal error > mxc-ehci mxc-ehci.1: HC died; cleaning up > mxc-ehci mxc-ehci.1: force halt; handshake f5780344 00004000 00004000 -> -110 > mxc-ehci mxc-ehci.1: HC died; cleaning up > usb 1-1: USB disconnect, device number 2 > > Reported-by: Richard Zhao <richard.zhao@xxxxxxxxxxxxx> > Cc: Chen Peter-B29397 <B29397@xxxxxxxxxxxxx> > Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > Cc: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > Cc: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxxxxx> Tested-by: Richard Zhao <richard.zhao@xxxxxxxxxxxxx> > --- > drivers/usb/host/ehci-hcd.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c > index f644ba9..5597e60 100644 > --- a/drivers/usb/host/ehci-hcd.c > +++ b/drivers/usb/host/ehci-hcd.c > @@ -352,7 +352,6 @@ static int ehci_reset (struct ehci_hcd *ehci) > if (ehci->debug) > dbgp_external_startup(); > > - ehci->command = ehci_readl(ehci, &ehci->regs->command); > ehci->port_c_suspend = ehci->suspended_ports = > ehci->resuming_ports = 0; > return retval; > -- > 1.7.9.5 > > -- > 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 > -- 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