musb-new: Fix reset sequence when in host mode
This commit fixes a number of issues with the reset sequence of musb-new in host mode: 1) Our usb device probe relies on a second device reset being done after the first descriptors read. Factor the musb reset code into a usb_reset_root_port function (and add this as an empty define for other controllers), and call this when a device has no parent. 2) Just like with normal usb controllers there needs to be a delay after reset, for normal usb controllers, this is handled in hub_port_reset, add a delay to usb_reset_root_port. 3) Sync the musb reset sequence with the upstream kernel, clear all bits of power except bits 4-7, and increase the time reset is asserted to 50 ms. With these fixes an usb keyboard I have now always enumerates properly, where as earlier it would only enumerare properly once every 5 tries. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
committed by
Marek Vasut
parent
e8672e3f0e
commit
90cdc1039d
@@ -970,6 +970,8 @@ int usb_new_device(struct usb_device *dev)
|
||||
printf("\n Couldn't reset port %i\n", dev->portnr);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
usb_reset_root_port();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user