Hello,
I am working with a U-Boot 2019.01 port in an Arago distribution based off of Processor SDK 6.0.3.
I am unable to get the USB drivers working in U-Boot. When I call "usb start" in U-Boot I get the following error:
=> usb start starting USB... USB0: uclass_find_device_by_seq: 0 -1 uclass_find_device_by_seq: 0 0 - -1 -1 'keystone-dwc3@2680000' - not found uclass_find_device_by_seq: 0 0 - 0 -1 'usb@2690000' - not found ofnode_read_bool: snps,has-lpm-erratum: false ofnode_read_bool: snps,is-utmi-l1-suspend: false ofnode_read_bool: snps,disable_scramble_quirk: false ofnode_read_bool: snps,u2exit_lfps_quirk: false ofnode_read_bool: snps,u2ss_inp3_quirk: false ofnode_read_bool: snps,req_p1p2p3_quirk: false ofnode_read_bool: snps,del_p1p2p3_quirk: false ofnode_read_bool: snps,del_phy_power_chg_quirk: false ofnode_read_bool: snps,lfps_filter_quirk: false ofnode_read_bool: snps,rx_detect_poll_quirk: false ofnode_read_bool: snps,dis_u3_susphy_quirk: false ofnode_read_bool: snps,dis_u2_susphy_quirk: false ofnode_read_bool: snps,tx_de_emphasis_quirk: false this is not a DesignWare USB3 DRD Core failed to initialize core Port not available.
We are trying to use USB0 as a host port to mount a flash drive as storage. The port also does not appear to function in Linux, however an older firmware (based upon Processor SDK 5.1) has a functioning USB port in both U-Boot and Linux. There appears to be a significant change in how the USB subsystem works, especially with respect to the driver model, between U-Boot 2018.01 and U-Boot 2019.01. Because of this we have been unable to simply compare the working image and the image under development. I will be looking into the Linux side of this tomorrow. This post is about the U-Boot side of things.
The device tree I am using is based upon the K2G EVM dts, using keystone-k2g.dtsi as the main "include". For our device tree, I copied the relevant USB nodes from keystone-k2g-evm.dts. They are shown below:
&keystone_usb0 { status = "okay"; }; &usb0_phy { status = "okay"; compatible = "nop-phy"; }; &usb0 { dr_mode = "host"; status = "okay"; };
The relevant portions of the dtsi file are:
usb0_phy: usb-phy@0 { compatible = "usb-nop-xceiv"; status = "disabled"; }; keystone_usb0: keystone-dwc3@2680000 { compatible = "ti,keystone-dwc3"; #address-cells = <1>; #size-cells = <1>; reg = <0x2680000 0x10000>; interrupts = <GIC_SPI 128 IRQ_TYPE_EDGE_RISING>; ranges; dma-coherent; dma-ranges; status = "disabled"; /*power-domains = <&k2g_pds 0x0016>;*/ usb0: usb@2690000 { compatible = "snps,dwc3"; reg = <0x2690000 0x10000>; interrupts = <GIC_SPI 128 IRQ_TYPE_EDGE_RISING>; maximum-speed = "high-speed"; dr_mode = "otg"; /*usb-phy = <&usb0_phy>;*/ status = "disabled"; }; };
--------------- code ---------------
And finally, the defconfig we are using in our U-Boot port:
CONFIG_ARM=y CONFIG_ARCH_KEYSTONE=y CONFIG_SYS_TEXT_BASE=0xC000000 CONFIG_TI_COMMON_CMD_OPTIONS=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_TARGET_K2G_<TARGET>=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL=y CONFIG_SPL_SPI_FLASH_SUPPORT=y CONFIG_SPL_SPI_SUPPORT=y CONFIG_DISTRO_DEFAULTS=y CONFIG_NR_DRAM_BANKS=2 CONFIG_OF_BOARD_SETUP=y # CONFIG_USE_BOOTCOMMAND is not set CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_POWER_SUPPORT=y CONFIG_SPL_SPI_LOAD=y # CONFIG_CMD_FLASH is not set # CONFIG_CMD_GPIO is not set # CONFIG_CMD_GPT is not set CONFIG_CMD_REMOTEPROC=y # CONFIG_CMD_SETEXPR is not set CONFIG_MTDIDS_DEFAULT="nand0=davinci_nand.0" CONFIG_MTDPARTS_DEFAULT="mtdparts=davinci_nand.0:1024k(bootloader)ro,512k(params)ro,-(ubifs)" CONFIG_CMD_UBI=y CONFIG_OF_CONTROL=y CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-<product>" CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_DM=y CONFIG_DM_DEBUG=y CONFIG_DFU_MMC=y CONFIG_SYS_I2C_DAVINCI=y CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_MMC_OMAP_HS=y CONFIG_NAND=y CONFIG_NAND_DAVINCI=y CONFIG_DM_SPI_FLASH=y CONFIG_SPI_FLASH=y CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_PHYLIB=y CONFIG_PHY_MARVELL=y CONFIG_PHY_MICREL=y CONFIG_PHY_TI=y CONFIG_DM_ETH=y CONFIG_RGMII=y CONFIG_DRIVER_TI_KEYSTONE_NET=y CONFIG_PHY=y CONFIG_NOP_PHY=y CONFIG_KEYSTONE_USB_PHY=y CONFIG_REMOTEPROC_TI_POWER=y CONFIG_DM_SERIAL=y CONFIG_SYS_NS16550=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_DAVINCI_SPI=y CONFIG_USB=y CONFIG_DM_USB=y CONFIG_DM_USB_GADGET=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_DOWNLOAD=y CONFIG_USB_FUNCTION_SDP=y
Thanks in advance for any insights into the problems I'm seeing.
Jeff