Lines Matching full:hub

20  * HUB "Driver"
21 * Probes device for being a hub and configurate it
49 struct usb_device *dev; /* USB hub device to scan */
50 struct usb_hub_device *hub; /* USB hub struct */ member
57 __weak void usb_hub_reset_devices(struct usb_hub_device *hub, int port) in usb_hub_reset_devices() argument
68 bool usb_hub_is_root_hub(struct udevice *hub) in usb_hub_is_root_hub() argument
70 if (device_get_uclass_id(hub->parent) != UCLASS_USB_HUB) in usb_hub_is_root_hub()
133 * Translate the USB 3.0 hub port status field into the old version in usb_get_port_status()
134 * that U-Boot understands. Do this only when the hub is not root hub. in usb_get_port_status()
135 * For root hub, the port status field has already been translated in usb_get_port_status()
159 static void usb_hub_power_on(struct usb_hub_device *hub) in usb_hub_power_on() argument
163 unsigned pgood_delay = hub->desc.bPwrOn2PwrGood * 2; in usb_hub_power_on()
166 dev = hub->pusb_dev; in usb_hub_power_on()
199 hub->query_delay = get_timer(0) + max(100, (int)pgood_delay); in usb_hub_power_on()
206 hub->connect_timeout = hub->query_delay + 1000; in usb_hub_power_on()
261 * Reset a hub port and see if a device is present on that port, providing
368 debug("usb_disconnect(&hub->children[port]);\n"); in usb_hub_port_connect_change()
423 debug("hub: disabling port %d\n", port + 1); in usb_hub_port_connect_change()
436 struct usb_hub_device *hub; in usb_scan_port() local
441 hub = usb_scan->hub; in usb_scan_port()
448 if (get_timer(0) < hub->query_delay) in usb_scan_port()
454 if (get_timer(0) >= hub->connect_timeout) { in usb_scan_port()
472 * For some situation, the hub reports no connection change but a in usb_scan_port()
474 * in the PORTSC register of a root hub), ignore such case. in usb_scan_port()
478 if (get_timer(0) >= hub->connect_timeout) { in usb_scan_port()
515 * devices to be shutdown by the hub, this hack enables in usb_scan_port()
521 debug("already running port %i disabled by hub (EMI?), re-enabling...\n", in usb_scan_port()
539 hub->overcurrent_count[i]++; in usb_scan_port()
545 if (hub->overcurrent_count[i] <= in usb_scan_port()
551 hub->overcurrent_count[i]); in usb_scan_port()
605 struct usb_hub_device *hub; in usb_get_hub_device() local
608 /* "allocate" Hub device */ in usb_get_hub_device()
609 hub = usb_hub_allocate(); in usb_get_hub_device()
611 hub = dev_get_uclass_priv(dev->dev); in usb_get_hub_device()
614 return hub; in usb_get_hub_device()
624 struct usb_hub_device *hub; in usb_hub_configure() local
628 hub = usb_get_hub_device(dev); in usb_hub_configure()
629 if (hub == NULL) in usb_hub_configure()
631 hub->pusb_dev = dev; in usb_hub_configure()
633 /* Get the the hub descriptor */ in usb_hub_configure()
636 debug("usb_hub_configure: failed to get hub " \ in usb_hub_configure()
647 debug("usb_hub_configure: failed to get hub " \ in usb_hub_configure()
651 memcpy((unsigned char *)&hub->desc, buffer, length); in usb_hub_configure()
655 &hub->desc.wHubCharacteristics); in usb_hub_configure()
657 bitmap = (unsigned char *)&hub->desc.u.hs.DeviceRemovable[0]; in usb_hub_configure()
660 bitmap = (unsigned char *)&hub->desc.u.hs.PortPowerCtrlMask[0]; in usb_hub_configure()
663 for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++) in usb_hub_configure()
664 hub->desc.u.hs.DeviceRemovable[i] = in usb_hub_configure()
667 for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++) in usb_hub_configure()
668 hub->desc.u.hs.PortPowerCtrlMask[i] = in usb_hub_configure()
674 hubCharacteristics = get_unaligned(&hub->desc.wHubCharacteristics); in usb_hub_configure()
691 debug("standalone hub\n"); in usb_hub_configure()
716 hub->tt.multi = true; in usb_hub_configure()
725 debug("Unrecognized hub protocol %d\n", in usb_hub_configure()
734 hub->tt.think_time = 666; in usb_hub_configure()
736 8, hub->tt.think_time); in usb_hub_configure()
740 hub->tt.think_time = 666 * 2; in usb_hub_configure()
742 16, hub->tt.think_time); in usb_hub_configure()
745 hub->tt.think_time = 666 * 3; in usb_hub_configure()
747 24, hub->tt.think_time); in usb_hub_configure()
750 hub->tt.think_time = 666 * 4; in usb_hub_configure()
752 32, hub->tt.think_time); in usb_hub_configure()
758 debug("hub controller current requirement: %dmA\n", in usb_hub_configure()
763 hub->desc.u.hs.DeviceRemovable[(i + 1) / 8] & \ in usb_hub_configure()
793 * Update USB host controller's internal representation of this hub in usb_hub_configure()
794 * after the hub descriptor is fetched. in usb_hub_configure()
798 debug("%s: failed to update hub device for HCD (%x)\n", in usb_hub_configure()
805 * root hub occupies the first tier. The last tier ends with a normal in usb_hub_configure()
807 * to route packets to the designated downstream port. The hub uses a in usb_hub_configure()
808 * hub depth value multiplied by four as an offset into the 'route in usb_hub_configure()
813 hub->hub_depth = -1; in usb_hub_configure()
824 hub->hub_depth = depth; in usb_hub_configure()
827 debug("set hub (%p) depth to %d\n", dev, depth); in usb_hub_configure()
829 * This request sets the value that the hub uses to in usb_hub_configure()
831 * for this hub. in usb_hub_configure()
835 debug("%s: failed to set hub depth (%lX)\n", in usb_hub_configure()
843 usb_hub_power_on(hub); in usb_hub_configure()
851 usb_hub_reset_devices(hub, i + 1); in usb_hub_configure()
869 usb_scan->hub = hub; in usb_hub_configure()
888 /* Is it a hub? */ in usb_hub_check()
896 /* Multiple endpoints? What kind of mutant ninja-hub is this? */ in usb_hub_check()
906 /* We found a hub */ in usb_hub_check()
907 debug("USB hub found\n"); in usb_hub_check()
911 debug("USB hub not found: bInterfaceClass=%d, bInterfaceSubClass=%d, bNumEndpoints=%d\n", in usb_hub_check()
934 int usb_hub_scan(struct udevice *hub) in usb_hub_scan() argument
936 struct usb_device *udev = dev_get_parent_priv(hub); in usb_hub_scan()
948 { .compatible = "usb-hub" },