mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
USB: sl811-hcd: Fix device disconnect:
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: Michael Hennerich <hennerich@blackfin.uclinux.org> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
ec3815c3e1
commit
eb661bc882
1 changed files with 6 additions and 2 deletions
|
@ -719,8 +719,12 @@ retry:
|
|||
/* port status seems weird until after reset, so
|
||||
* force the reset and make khubd clean up later.
|
||||
*/
|
||||
sl811->port1 |= (1 << USB_PORT_FEAT_C_CONNECTION)
|
||||
| (1 << USB_PORT_FEAT_CONNECTION);
|
||||
if (sl811->stat_insrmv & 1)
|
||||
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) {
|
||||
if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND)) {
|
||||
|
|
Loading…
Reference in a new issue