bind/unbind command not working for usb_ether

Tim Harvey tharvey at gateworks.com
Tue Feb 15 17:09:36 CET 2022


On Tue, Feb 15, 2022 at 5:29 AM Patrice CHOTARD
<patrice.chotard at 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 at 58005000.blk
>  ethernet      0  [ + ]   eth_eqos              |   |-- ethernet at 5800a000
>  eth_phy_ge    0  [ + ]   eth_phy_generic_drv   |   |   `-- ethernet-phy at 0
>  usb           0  [   ]   ehci_generic          |   |-- usb at 5800d000
>  video         0  [   ]   stm32_display         |   |-- display-controller at 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 at 58005000.blk
>  usb           0  [   ]   ehci_generic          |   |-- usb at 5800d000
>  video         0  [   ]   stm32_display         |   |-- display-controller at 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 at 58005000.blk
>  usb           0  [   ]   ehci_generic          |   |-- usb at 5800d000
>  ethernet      0  [   ]   usb_ether             |   |   `-- usb_ether
>  video         0  [   ]   stm32_display         |   |-- display-controller at 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 at 1ffc000
 simple_bus    1  [ + ]   simple_bus            |   |-- bus at 2000000
 simple_bus    2  [   ]   simple_bus            |   |   |-- spba-bus at 2000000
 serial        0  [   ]   serial_mxc            |   |   |   `-- serial at 2020000
 gpio          0  [ + ]   gpio_mxc              |   |   |-- gpio at 209c000
 gpio          1  [ + ]   gpio_mxc              |   |   |-- gpio at 20a0000
 gpio          2  [ + ]   gpio_mxc              |   |   |-- gpio at 20a4000
 gpio          3  [ + ]   gpio_mxc              |   |   |-- gpio at 20a8000
 gpio          4  [ + ]   gpio_mxc              |   |   |-- gpio at 20ac000
 gpio          5  [   ]   gpio_mxc              |   |   |-- gpio at 20b0000
 gpio          6  [   ]   gpio_mxc              |   |   |-- gpio at 20b4000
 watchdog      0  [ + ]   imx_wdt               |   |   |-- wdog at 20bc000
 simple_bus    3  [   ]   simple_bus            |   |   |-- anatop at 20c8000
 simple_bus    4  [   ]   simple_bus            |   |   |-- snvs at 20cc000
 simple_bus    5  [   ]   simple_bus            |   |   |-- iomuxc-gpr at 20e0000
 pinctrl       0  [ + ]   fsl_imx6q_iomuxc      |   |   `-- iomuxc at 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 at 2100000
 usb           0  [   ]   ehci_mx6              |   |   |-- usb at 2184000
 usb           1  [   ]   ehci_mx6              |   |   |-- usb at 2184200
 mmc           0  [ + ]   fsl_esdhc             |   |   |-- usdhc at 2198000
 blk           0  [ + ]   mmc_blk               |   |   |   `--
usdhc at 2198000.blk
 i2c           0  [ + ]   i2c_mxc               |   |   |-- i2c at 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 at 21a4000
 i2c_generi    1  [ + ]   i2c_generic_chip_drv  |   |   |   `-- generic_3c
 i2c           2  [   ]   i2c_mxc               |   |   |-- i2c at 21a8000
 serial        1  [ + ]   serial_mxc            |   |   |-- serial at 21e8000
 serial        2  [   ]   serial_mxc            |   |   |-- serial at 21ec000
 serial        3  [   ]   serial_mxc            |   |   |-- serial at 21f0000
 serial        4  [   ]   serial_mxc            |   |   `-- serial at 21f4000
 video         0  [ + ]   fsl_imx6q_ipu         |   `-- ipu at 2400000
 vidconsole    0  [ + ]   vidconsole0           |       `--
ipu at 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


More information about the U-Boot mailing list