[U-Boot] [PATCH v3 7/7] cmd: Add bind/unbind commands to bind a device to a driver from the command line

Simon Glass sjg at chromium.org
Sat Jun 30 04:19:42 UTC 2018


On 27 June 2018 at 07:13, Michal Simek <michal.simek at xilinx.com> wrote:
> On 22.6.2018 14:25, Jean-Jacques Hiblot wrote:
>> In some cases it can be useful to be able to bind a device to a driver from
>> the command line.
>> The obvious example is for versatile devices such as USB gadget.
>> Another use case is when the devices are not yet ready at startup and
>> require some setup before the drivers are bound (ex: FPGA which bitsream is
>> fetched from a mass storage or ethernet)
>>
>> usage example:
>>
>> bind usb_dev_generic 0 usb_ether
>> unbind usb_dev_generic 0 usb_ether
>> or
>> unbind eth 1
>>
>> bind /ocp/omap_dwc3 at 48380000/usb at 48390000 usb_ether
>> unbind /ocp/omap_dwc3 at 48380000/usb at 48390000
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
>>
>> ---
>>
>> Changes in v3:
>> - factorize code based on comments from ML
>> - remove the devices before unbinding them
>> - use device_find_global_by_ofnode() to get a device by its node.
>> - Added tests
>>
>> Changes in v2:
>> - Make the bind/unbind command generic, not specific to usb device.
>> - Update the API to be able to bind/unbind based on DTS node path
>> - Add a Kconfig option to select the bind/unbind commands
>>
>>  arch/sandbox/dts/test.dts  |  11 ++
>>  cmd/Kconfig                |   9 ++
>>  cmd/Makefile               |   1 +
>>  cmd/bind.c                 | 255 +++++++++++++++++++++++++++++++++++++++++++++
>>  configs/sandbox_defconfig  |   1 +
>>  test/py/tests/test_bind.py | 178 +++++++++++++++++++++++++++++++
>>  6 files changed, 455 insertions(+)
>>  create mode 100644 cmd/bind.c
>>  create mode 100644 test/py/tests/test_bind.py

Reviewed-by: Simon Glass <sjg at chromium.org>

Nice work

[...]

>
> I have tested bind/unbind with dwc3 on zynqmp for ethernet gadget and it
> is working fine for me.
> I have also tried to use bind/unbind for gpio zynqmp driver and it is
> also working fine.
>
> It means
> Tested-by: Michal Simek <michal.simek at xilinx.com>
>
> I would prefer if these commands are called as dm bind and dm unbind
> instead of simply bind/unbind which should also fit to dm command
> description "dm - Driver model low level access".

Yes i can see the point. But after thinking about it, maybe it is best
as it is? After all driver model is fundamental to U-Boot and it's not
clear what else we might bind/unbind.

I'd like to get other opinions here, too.

Regards,
Simon


More information about the U-Boot mailing list