mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-28 23:23:30 +08:00
usb: hub: identify the hub-device to usb_hub_reset_devices
When usb_hub_reset_devices is called, it should be passed both an indicator which hub it should operate on and what port number (local to that hub) should be reset. Previously, the usb_hub.c code did not include such context and always started resets from port number 1, performing multiple reset-requests for the same devices: /* * Reset any devices that may be in a bad state when applying * the power. This is a __weak function. Resetting of the devices * should occur in the board file of the device. */ for (i = 0; i < dev->maxchild; i++) usb_hub_reset_devices(i + 1); This adds an additional 'hub' parameter to usb_hub_reset_devices that provides the context to fully qualify the port-number in. Existing implementations are changed to accept and ignore the new parameter. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
This commit is contained in:
parent
b3cbcd902d
commit
883946e8e7
@ -246,7 +246,7 @@ int ehci_hcd_stop(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_hub_reset_devices(int port)
|
void usb_hub_reset_devices(struct usb_hub_device *hub, int port)
|
||||||
{
|
{
|
||||||
/* The LAN9730 needs to be reset after the port power has been set. */
|
/* The LAN9730 needs to be reset after the port power has been set. */
|
||||||
if (port == 3) {
|
if (port == 3) {
|
||||||
|
@ -249,7 +249,7 @@ int ehci_hcd_stop(void)
|
|||||||
return omap_ehci_hcd_stop();
|
return omap_ehci_hcd_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_hub_reset_devices(int port)
|
void usb_hub_reset_devices(struct usb_hub_device *hub, int port)
|
||||||
{
|
{
|
||||||
/* The LAN9730 needs to be reset after the port power has been set. */
|
/* The LAN9730 needs to be reset after the port power has been set. */
|
||||||
if (port == 3) {
|
if (port == 3) {
|
||||||
|
@ -57,7 +57,7 @@ struct usb_device_scan {
|
|||||||
|
|
||||||
static LIST_HEAD(usb_scan_list);
|
static LIST_HEAD(usb_scan_list);
|
||||||
|
|
||||||
__weak void usb_hub_reset_devices(int port)
|
__weak void usb_hub_reset_devices(struct usb_hub_device *hub, int port)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -853,7 +853,7 @@ static int usb_hub_configure(struct usb_device *dev)
|
|||||||
* should occur in the board file of the device.
|
* should occur in the board file of the device.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < dev->maxchild; i++)
|
for (i = 0; i < dev->maxchild; i++)
|
||||||
usb_hub_reset_devices(i + 1);
|
usb_hub_reset_devices(hub, i + 1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only add the connected USB devices, including potential hubs,
|
* Only add the connected USB devices, including potential hubs,
|
||||||
|
Loading…
Reference in New Issue
Block a user