On Wed, 6 Jul 2011, Sergei Shtylyov wrote: > MAX4967 USB power supply chip we use on our boards signals over-current when > power is not enabled; once it's enabled, over-current signal returns to normal. > That unfortunately caused the endless stream of "over-current change on port" > messages. The EHCI root hub code reacts on every over-current signal change > with powering off the port -- such change event is generated the moment the > port power is enabled, so once enabled the power is immediately cut off. > I think we should only cut off power when we're seeing the active over-current > signal, so I'm adding such check to that code. I also think that the fact that > we've cut off the port power should be reflected in the result of GetPortStatus > request immediately, hence I'm adding a PORTSCn register readback after write... > > Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxx > > --- > The patch is against the 'usb-linus' branch of Greg KH's usb-2.6.git... > > drivers/usb/host/ehci-hub.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > Index: usb-2.6/drivers/usb/host/ehci-hub.c > =================================================================== > --- usb-2.6.orig/drivers/usb/host/ehci-hub.c > +++ usb-2.6/drivers/usb/host/ehci-hub.c > @@ -891,10 +891,11 @@ static int ehci_hub_control ( > * power switching; they're allowed to just limit the > * current. khubd will turn the power back on. > */ > - if (HCS_PPC (ehci->hcs_params)){ > + if ((temp & PORT_OC) && HCS_PPC(ehci->hcs_params)) { > ehci_writel(ehci, > temp & ~(PORT_RWC_BITS | PORT_POWER), > status_reg); > + temp = ehci_readl(ehci, status_reg); > } > } > Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> -- 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