static struct ehci_ctrl *ehci_get_ctrl(struct usb_device *udev) { #ifdef CONFIG_DM_USB return dev_get_priv(usb_get_bus(udev->dev)); #else return udev->controller; #endif }
void usb_hub_reset_devices(struct usb_hub_device *hub, int port) { struct udevice *dev = hub->pusb_dev->dev; struct udevice *ctrl; /* We are only interested in our root-hubs */ if (usb_hub_is_root_hub(dev) == false) return; ctrl = usb_get_bus(dev); if (!ctrl) { debug("%s: could not retrieve ctrl for hub\n", __func__); return; } /* * To work around an incompatibility between the single-threaded * USB stack in U-Boot and (a strange low-power mode of) the USB * hub we have on-module, we need to delay powering on the hub * until the first time the port is probed. */ board_usb_port_power_set(ctrl, port, true); }