]> git.baikalelectronics.ru Git - uboot.git/commit
usb: onboard-hub: add driver to manage onboard hub supplies
authorFabrice Gasnier <fabrice.gasnier@foss.st.com>
Mon, 12 Dec 2022 10:44:35 +0000 (11:44 +0100)
committerPatrice Chotard <patrice.chotard@foss.st.com>
Thu, 12 Jan 2023 15:19:53 +0000 (16:19 +0100)
commitbe09be4503881050d65cdaeb50b87aa3ba21c07d
treefedeefef60560b17e84e797192723a757e4577bd
parent48659b93ea820dcc8f8bf05c3a2f3379450edb2e
usb: onboard-hub: add driver to manage onboard hub supplies

The main issue the driver addresses is that a USB hub needs to be
powered before it can be discovered. This is often solved by using
"regulator-always-on".

This driver is inspired by the Linux v6.1 driver. It only enables (or
disables) the hub vdd (3v3) supply, so it can be enumerated.
Scanning of the device tree is done in a similar manner to the sandbox,
by the usb-uclass. DT part looks like:

&usbh_ehci {
...
#address-cells = <1>;
#size-cells = <0>;
hub@1 {
compatible = "usb424,2514";
reg = <1>;
vdd-supply = <&v3v3>;
};
};

When the bus gets probed, the driver is automatically probed/removed from
the bus tree, as an example on stm32:
STM32MP> usb start
starting USB...
STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 usb           0  [ + ]   ehci_generic          |   |-- usb@5800d000
 usb_hub       0  [ + ]   usb_onboard_hub       |   |   `-- hub@1
 usb_hub       1  [ + ]   usb_hub               |   |       `-- usb_hub

STM32MP> usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller
  |
  +-2  Hub (480 Mb/s, 2mA)

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
common/Makefile
common/usb_onboard_hub.c [new file with mode: 0644]
drivers/usb/Kconfig
drivers/usb/host/usb-uclass.c