ba1fa2abde
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>
113 lines
3.1 KiB
Makefile
113 lines
3.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# (C) Copyright 2004-2006
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
# core
|
|
ifndef CONFIG_SPL_BUILD
|
|
obj-y += init/
|
|
obj-y += main.o
|
|
obj-y += exports.o
|
|
obj-$(CONFIG_HUSH_PARSER) += cli_hush.o
|
|
obj-$(CONFIG_AUTOBOOT) += autoboot.o
|
|
|
|
# # boards
|
|
obj-y += board_f.o
|
|
obj-y += board_r.o
|
|
obj-$(CONFIG_DISPLAY_BOARDINFO) += board_info.o
|
|
obj-$(CONFIG_DISPLAY_BOARDINFO_LATE) += board_info.o
|
|
|
|
obj-$(CONFIG_FDT_SIMPLEFB) += fdt_simplefb.o
|
|
obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += fdt_support.o
|
|
obj-$(CONFIG_MII) += miiphyutil.o
|
|
obj-$(CONFIG_CMD_MII) += miiphyutil.o
|
|
obj-$(CONFIG_PHYLIB) += miiphyutil.o
|
|
|
|
obj-$(CONFIG_USB_HOST) += usb.o usb_hub.o
|
|
obj-$(CONFIG_USB_GADGET) += usb.o usb_hub.o
|
|
obj-$(CONFIG_USB_STORAGE) += usb_storage.o
|
|
obj-$(CONFIG_USB_ONBOARD_HUB) += usb_onboard_hub.o
|
|
|
|
# others
|
|
obj-$(CONFIG_CONSOLE_MUX) += iomux.o
|
|
obj-$(CONFIG_MTD_NOR_FLASH) += flash.o
|
|
obj-$(CONFIG_CMD_KGDB) += kgdb.o kgdb_stubs.o
|
|
obj-$(CONFIG_I2C_EDID) += edid.o
|
|
obj-$(CONFIG_KALLSYMS) += kallsyms.o
|
|
obj-y += splash.o
|
|
obj-$(CONFIG_SPLASH_SOURCE) += splash_source.o
|
|
obj-$(CONFIG_MENU) += menu.o
|
|
obj-$(CONFIG_UPDATE_COMMON) += update.o
|
|
obj-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
|
|
obj-$(CONFIG_CMDLINE) += cli_readline.o cli_simple.o
|
|
|
|
endif # !CONFIG_SPL_BUILD
|
|
|
|
obj-$(CONFIG_$(SPL_TPL_)BOOTSTAGE) += bootstage.o
|
|
obj-$(CONFIG_$(SPL_TPL_)BLOBLIST) += bloblist.o
|
|
|
|
ifdef CONFIG_SPL_BUILD
|
|
ifdef CONFIG_SPL_DFU
|
|
obj-$(CONFIG_DFU_OVER_USB) += dfu.o
|
|
endif
|
|
obj-$(CONFIG_SPL_NET) += miiphyutil.o
|
|
obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += fdt_support.o
|
|
|
|
obj-$(CONFIG_SPL_USB_HOST) += usb.o usb_hub.o
|
|
obj-$(CONFIG_SPL_USB_STORAGE) += usb_storage.o
|
|
obj-$(CONFIG_SPL_MUSB_NEW) += usb.o
|
|
endif # CONFIG_SPL_BUILD
|
|
|
|
#others
|
|
obj-$(CONFIG_DDR_SPD) += ddr_spd.o
|
|
obj-$(CONFIG_SPD_EEPROM) += ddr_spd.o
|
|
obj-$(CONFIG_HWCONFIG) += hwconfig.o
|
|
obj-$(CONFIG_BOUNCE_BUFFER) += bouncebuf.o
|
|
ifdef CONFIG_SPL_BUILD
|
|
ifdef CONFIG_TPL_BUILD
|
|
obj-$(CONFIG_TPL_SERIAL) += console.o
|
|
else
|
|
obj-$(CONFIG_SPL_SERIAL) += console.o
|
|
endif
|
|
else
|
|
obj-y += console.o
|
|
endif # CONFIG_SPL_BUILD
|
|
|
|
obj-$(CONFIG_CROS_EC) += cros_ec.o
|
|
obj-y += dlmalloc.o
|
|
ifdef CONFIG_SYS_MALLOC_F
|
|
ifneq ($(CONFIG_$(SPL_TPL_)SYS_MALLOC_F_LEN),0)
|
|
obj-y += malloc_simple.o
|
|
endif
|
|
endif
|
|
|
|
obj-$(CONFIG_CYCLIC) += cyclic.o
|
|
obj-$(CONFIG_$(SPL_TPL_)EVENT) += event.o
|
|
|
|
obj-$(CONFIG_$(SPL_TPL_)HASH) += hash.o
|
|
obj-$(CONFIG_IO_TRACE) += iotrace.o
|
|
obj-y += memsize.o
|
|
obj-y += stdio.o
|
|
|
|
ifdef CONFIG_CMD_EEPROM_LAYOUT
|
|
obj-y += eeprom/eeprom_field.o eeprom/eeprom_layout.o
|
|
endif
|
|
|
|
obj-y += cli.o
|
|
obj-$(CONFIG_FSL_DDR_INTERACTIVE) += cli_simple.o cli_readline.o
|
|
obj-$(CONFIG_STM32MP1_DDR_INTERACTIVE) += cli_simple.o cli_readline.o
|
|
obj-$(CONFIG_DFU_OVER_USB) += dfu.o
|
|
obj-y += command.o
|
|
obj-$(CONFIG_$(SPL_TPL_)LOG) += log.o
|
|
obj-$(CONFIG_$(SPL_TPL_)LOG_CONSOLE) += log_console.o
|
|
obj-$(CONFIG_$(SPL_TPL_)LOG_SYSLOG) += log_syslog.o
|
|
obj-y += s_record.o
|
|
obj-$(CONFIG_CMD_LOADB) += xyzModem.o
|
|
obj-$(CONFIG_$(SPL_TPL_)YMODEM_SUPPORT) += xyzModem.o
|
|
|
|
obj-$(CONFIG_$(SPL_TPL_)AVB_VERIFY) += avb_verify.o
|
|
obj-$(CONFIG_$(SPL_TPL_)STACKPROTECTOR) += stackprot.o
|
|
obj-$(CONFIG_SCP03) += scp03.o
|
|
|
|
obj-$(CONFIG_QFW) += qfw.o
|