
On Tue, Feb 15, 2022 at 5:29 AM Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi Tim
On 2/10/22 18:04, Tim Harvey wrote:
Greetings,
I'm trying to understand how to use the U-Boot bind command to bind the usb_ether driver to the usb class to register a USB ethernet gadget network device as referenced in: commit 02291d83fdaaf ("doc: add bind/unbind command documentation") commit 49c752c93a78 ("cmd: Add bind/unbind commands to bind a device to a driver from the command line")
For example, i made some trial on STM32MP1 platform:
At boot, we got :
STM32MP> dm tree Class Index Probed Driver Name
root 0 [ + ] root_driver root_driver firmware 0 [ ] psci |-- psci sysreset 0 [ ] psci-sysreset | `-- psci-sysreset ..... blk 0 [ + ] mmc_blk | | `-- mmc@58005000.blk ethernet 0 [ + ] eth_eqos | |-- ethernet@5800a000 eth_phy_ge 0 [ + ] eth_phy_generic_drv | | `-- ethernet-phy@0 usb 0 [ ] ehci_generic | |-- usb@5800d000 video 0 [ ] stm32_display | |-- display-controller@5a001000 .....
As you can see, there is already an ethernet interface used. We unbind the ethernet interface before binding the usb_ether gadget to the usb class. First unbind the generic ethernet phy (eth_phy_generic_drv) and the ethernet driver (eth_eqos).
STM32MP> unbind eth_phy_generic 0 STM32MP> unbind ethernet 0 STM32MP> dm tree Class Index Probed Driver Name
root 0 [ + ] root_driver root_driver firmware 0 [ ] psci |-- psci sysreset 0 [ ] psci-sysreset | `-- psci-sysreset .... blk 0 [ + ] mmc_blk | | `-- mmc@58005000.blk usb 0 [ ] ehci_generic | |-- usb@5800d000 video 0 [ ] stm32_display | |-- display-controller@5a001000 ....
Ethernet and phy driver are both unbinded. Now we can bind the usb_eher to the usb class
STM32MP> bind usb 0 usb_ether STM32MP> dm tree Class Index Probed Driver Name
root 0 [ + ] root_driver root_driver firmware 0 [ ] psci |-- psci sysreset 0 [ ] psci-sysreset | `-- psci-sysreset .... blk 0 [ + ] mmc_blk | | `-- mmc@58005000.blk usb 0 [ ] ehci_generic | |-- usb@5800d000 ethernet 0 [ ] usb_ether | | `-- usb_ether video 0 [ ] stm32_display | |-- display-controller@5a001000 ....
usb_ether is now binded. As example, if you can then use some ethernet command as dhcp or ping :
STM32MP> dhcp using dwc2-udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep3in-int MAC de:ad:be:ef:00:01 HOST MAC de:ad:be:ef:00:00 RNDIS ready high speed config #2: 2 mA, Ethernet Gadget, using RNDIS USB RNDIS network up! BOOTP broadcast 1
I have enabled: CONFIG_DM_USB=y CONFIG_USB_GADGET=y CONFIG_USB_ETHER=y
In my case i enabled also CONFIG_USB_ETH_RNDIS=y
Patrice,
In my case when I try to bind to usb_ether the device can not be found (as it is never registered in the first place): Ventana > unbind ethernet 0 Ventana > bind usb 0 usb_ether Cannot find device 0 of class usb Ventana > dm tree Class Index Probed Driver Name ----------------------------------------------------------- root 0 [ + ] root_driver root_driver thermal 0 [ ] imx_thermal |-- imx_thermal simple_bus 0 [ + ] simple_bus |-- soc pci 0 [ ] imx_pcie | |-- pcie@1ffc000 simple_bus 1 [ + ] simple_bus | |-- bus@2000000 simple_bus 2 [ ] simple_bus | | |-- spba-bus@2000000 serial 0 [ ] serial_mxc | | | `-- serial@2020000 gpio 0 [ + ] gpio_mxc | | |-- gpio@209c000 gpio 1 [ + ] gpio_mxc | | |-- gpio@20a0000 gpio 2 [ + ] gpio_mxc | | |-- gpio@20a4000 gpio 3 [ + ] gpio_mxc | | |-- gpio@20a8000 gpio 4 [ + ] gpio_mxc | | |-- gpio@20ac000 gpio 5 [ ] gpio_mxc | | |-- gpio@20b0000 gpio 6 [ ] gpio_mxc | | |-- gpio@20b4000 watchdog 0 [ + ] imx_wdt | | |-- wdog@20bc000 simple_bus 3 [ ] simple_bus | | |-- anatop@20c8000 simple_bus 4 [ ] simple_bus | | |-- snvs@20cc000 simple_bus 5 [ ] simple_bus | | |-- iomuxc-gpr@20e0000 pinctrl 0 [ + ] fsl_imx6q_iomuxc | | `-- iomuxc@20e0000 pinconfig 0 [ + ] pinconfig | | |-- enetgrp pinconfig 1 [ ] pinconfig | | |-- gpioledsgrp pinconfig 2 [ + ] pinconfig | | |-- i2c1grp pinconfig 3 [ + ] pinconfig | | |-- i2c2grp pinconfig 4 [ ] pinconfig | | |-- i2c3grp pinconfig 5 [ ] pinconfig | | |-- imugrp pinconfig 6 [ ] pinconfig | | |-- maggrp pinconfig 7 [ + ] pinconfig | | |-- pciegrp pinconfig 8 [ ] pinconfig | | |-- pmicgrp pinconfig 9 [ ] pinconfig | | |-- ppsgrp pinconfig 10 [ ] pinconfig | | |-- pwm2grp pinconfig 11 [ ] pinconfig | | |-- pwm3grp pinconfig 12 [ ] pinconfig | | |-- pwm4grp pinconfig 13 [ ] pinconfig | | |-- uart1grp pinconfig 14 [ + ] pinconfig | | |-- uart2grp pinconfig 15 [ ] pinconfig | | |-- uart3grp pinconfig 16 [ ] pinconfig | | |-- uart4grp pinconfig 17 [ ] pinconfig | | |-- uart5grp pinconfig 18 [ ] pinconfig | | |-- usbh1grp pinconfig 19 [ ] pinconfig | | |-- usbotggrp pinconfig 20 [ + ] pinconfig | | |-- usdhc3grp pinconfig 21 [ ] pinconfig | | |-- usdhc3grp100mhz pinconfig 22 [ ] pinconfig | | |-- usdhc3grp200mhz pinconfig 23 [ + ] pinconfig | | `-- wdoggrp simple_bus 6 [ + ] simple_bus | |-- bus@2100000 usb 0 [ ] ehci_mx6 | | |-- usb@2184000 usb 1 [ ] ehci_mx6 | | |-- usb@2184200 mmc 0 [ + ] fsl_esdhc | | |-- usdhc@2198000 blk 0 [ + ] mmc_blk | | | `-- usdhc@2198000.blk i2c 0 [ + ] i2c_mxc | | |-- i2c@21a0000 i2c_generi 0 [ + ] i2c_generic_chip_drv | | | |-- generic_51 i2c_generi 2 [ + ] i2c_generic_chip_drv | | | |-- generic_20 i2c_generi 3 [ + ] i2c_generic_chip_drv | | | |-- generic_29 i2c_generi 4 [ + ] i2c_generic_chip_drv | | | `-- generic_68 i2c 1 [ + ] i2c_mxc | | |-- i2c@21a4000 i2c_generi 1 [ + ] i2c_generic_chip_drv | | | `-- generic_3c i2c 2 [ ] i2c_mxc | | |-- i2c@21a8000 serial 1 [ + ] serial_mxc | | |-- serial@21e8000 serial 2 [ ] serial_mxc | | |-- serial@21ec000 serial 3 [ ] serial_mxc | | |-- serial@21f0000 serial 4 [ ] serial_mxc | | `-- serial@21f4000 video 0 [ + ] fsl_imx6q_ipu | `-- ipu@2400000 vidconsole 0 [ + ] vidconsole0 | `-- ipu@2400000.vidconsole0 led 0 [ ] gpio_led |-- leds led 1 [ ] gpio_led | |-- user1 led 2 [ ] gpio_led | |-- user2 led 3 [ ] gpio_led | `-- user3 regulator 0 [ ] regulator_fixed |-- regulator-1p0v regulator 1 [ + ] regulator_fixed |-- regulator-3p3v regulator 2 [ ] regulator_fixed |-- regulator-usb-h1-vbus regulator 3 [ ] regulator_fixed `-- regulator-usb-otg-vbus Ventana >
I'm not clear how for your board usb_ether is registered in the first place.
Best Regards,
Tim