[U-Boot] DM for ci_udc

Jean-Jacques Hiblot jjhiblot at ti.com
Tue May 7 07:21:15 UTC 2019


Hi,

On 06/05/2019 14:17, Lukasz Majewski wrote:
> Hi Sven, Marek, Jean-Jacques,
>
>> On 5/6/19 12:12 PM, Sven Schwermer wrote:
>>> Hi,
>>>
>>> I’m running into linking issues when enabling CONFIG_DM_USB_GADGET
>>> with CONFIG_CI_UDC because dm_usb_gadget_handle_interrupts is not
>>> available. That made me look into what’s required to port ci_udc to
>>> driver model. I have a few conceptual questions about this:
>>>
>>> 1. Some other USB gadget drivers (dwc3-generic, ti-musb) seem to
>>> create a wrapper driver that binds either the gadget or the
>>> host-mode driver to the USB device, depending on the configured
>>> mode. Is this the desired approach?

This approach has the advantage to support both modes and select one at 
runtime usually based on DT configuration.

It could also go further and support a true OTG, but most application do 
not require it and it would probably be more complex.

> I think that we shall follow the already in-tree pattern.
> Jean-Jacques Hiblot (CC'ed) did a great job on porting / developing
> this code (moreover there is a u-boot command - bind/unbind which allows
> binding usb devices)
In this UDCcase the bind/unbind commands are used only to bind the UDC 
ethernet (usbether). Other operations, like DFU, bind the UDC by themselves.
>>> 2. I’m working with a i.MX6 (7) device so the host-mode driver is
>>> ehci-mx6, but I’ve seen that ci_udc is also used with other
>>> host-mode drivers. How would a wrapper work in this case where
>>> there are multiple possible host-mode drivers but one gadget driver?

The wrapper, the UDC driver and the host driver are separate driver. You 
have the ci_udc driver completely separate from the wrapper.

The wrapper itself must somehow be aware of the host and of the udc 
driver. it could be hard-coded (DWC3 case) or it could get this info 
from the compatible in the DT

> As fair as I understood the "bind/unbind" command would allow you to do
> it [1]. Jean-Jacques am I right here ?
Bind/unbind commands could be used if no wrapper is provided, because 
the role of the wrapper is primarily to bind one driver or the other. 
But the wrapper usually also performs some kind of HW initialization, so 
I would keep a wrapper driver.


JJ

>
>>> 3. Any tips and hints are welcome :)
> I can offer myself as a tester for imx6q (as I do have a few of them
> queued for the DM/DTS conversion).
>
>> +CC Lukasz, UDC is his stuff.
>>
> Note:
> [1] - https://lists.denx.de/pipermail/u-boot/2018-June/333105.html
>
>
> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de


More information about the U-Boot mailing list