Commit 5e103620 authored by Kevin Owen's avatar Kevin Owen Committed by Greg Kroah-Hartman

[PATCH] USB: bug in EHCI device reset through transaction

This supports another special case:  devices can revert to the "default"
(address zero) state temporarily in usb_reset_device().

This is the quick fix; 2.6 could get rid of these special cases in ep0
hcd logic by disabling ep0, but 2.4 can't.
parent 090ae1d6
...@@ -794,6 +794,10 @@ static struct ehci_qh *qh_append_tds ( ...@@ -794,6 +794,10 @@ static struct ehci_qh *qh_append_tds (
qh->hw_info1 = cpu_to_le32 (info); qh->hw_info1 = cpu_to_le32 (info);
} }
} }
/* usb_reset_device() briefly reverts to address 0 */
if (usb_pipedevice (urb->pipe) == 0)
qh->hw_info1 &= cpu_to_le32(~0x7f);
} }
/* usb_clear_halt() means qh data toggle gets reset */ /* usb_clear_halt() means qh data toggle gets reset */
......
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