Hello. On 27-02-2011 3:03, Paul Bolle wrote:
On a laptop I see these errors on (most) resumes: hub 3-0:1.0: over-current change on port 1 hub 3-0:1.0: over-current change on port 2
Since over-current conditions can disappear quite quickly it's better to downgrade that message to debug level, recheck for an over-current condition a little later and only treat an over-current condition as an error if it still exists when it's rechecked.
Signed-off-by: Paul Bolle<pebolle@xxxxxxxxxx> --- This seems to do the trick. Note that this patch took some (educated) guesswork about the kernel's USB API, so a review would appreciated.
Also note that hub over-current changes are currently handled rather differently. Is there a reason to treat these events differently?
drivers/usb/core/hub.c | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index d041c68..2309600 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -3412,12 +3412,27 @@ static void hub_events(void) } if (portchange & USB_PORT_STAT_C_OVERCURRENT) { - dev_err (hub_dev, + u16 status; + u16 unused; + + dev_dbg (hub_dev,
Did you run yhe patch thru scripts/checkpatch.pl? It has all the tabs replaced with spaces. Also, there should be no space before paren here...
"over-current change on port %d\n", i); clear_port_feature(hdev, i, USB_PORT_FEAT_C_OVER_CURRENT); - hub_power_on(hub, true); + msleep(100); /* Cool down */ + + ret = hub_port_status(hub, i,&status, + &unused); + if (ret < 0) + continue; + + if (status & USB_PORT_STAT_OVERCURRENT) { + dev_err (hub_dev, + "over-current condition on port " + "%d\n", i); + hub_power_on(hub, true); + }
Hm, you don't turn the port power on if the overcurrent condition doesn't last 100 ms anymore, while that condition turns the port power off IIRC.
WBR, Sergei -- 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