Commit 50afc605 authored by Hennerich, Michael's avatar Hennerich, Michael Committed by Greg Kroah-Hartman

USB: sl811-hcd: Fix device disconnect:

commit eb661bc8 upstream.

SL811 Device detected after removal used to be working in linux-2.6.22
but then broke somewhere between 2.6.22 and 2.6.28. Current
hub_port_connect_change() in drivers/usb/core/hub.c won't call
usb_disconnect() in case the SL811 driver sets portstatus
USB_PORT_FEAT_CONNECTION upon removal.
AFAIK the SL811 has only a combined Device Insert/Remove
detection bit, therefore use a count to distinguish insert or remove.
Signed-Off-By: default avatarMichael Hennerich <hennerich@blackfin.uclinux.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 78c953d6
...@@ -719,8 +719,12 @@ retry: ...@@ -719,8 +719,12 @@ retry:
/* port status seems weird until after reset, so /* port status seems weird until after reset, so
* force the reset and make khubd clean up later. * force the reset and make khubd clean up later.
*/ */
sl811->port1 |= (1 << USB_PORT_FEAT_C_CONNECTION) if (sl811->stat_insrmv & 1)
| (1 << USB_PORT_FEAT_CONNECTION); sl811->port1 |= 1 << USB_PORT_FEAT_CONNECTION;
else
sl811->port1 &= ~(1 << USB_PORT_FEAT_CONNECTION);
sl811->port1 |= 1 << USB_PORT_FEAT_C_CONNECTION;
} else if (irqstat & SL11H_INTMASK_RD) { } else if (irqstat & SL11H_INTMASK_RD) {
if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND)) { if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment