[U-Boot] [PATCH v4 2/4] USB: host: Add the USB3 host driver

Jean-Jacques Hiblot jjhiblot at ti.com
Fri Aug 30 08:02:22 UTC 2019


On 28/08/2019 13:50, Sherry Sun wrote:
> Hi Jean,
>
>> Hi Jean,
>>
>>> Hi Marek, Sherry,
>>>
>>>
>>>>>>> we keep the cdns3 node for usb gadget driver, then add a usb host
>>>>>>> node for
>>>>>>> xhci-imx8 driver in *-uboot.dtsi. so here is no need to change
>>>>>>> the host driver
>>>>>> compatible.
>>>>>>> But the compatible in gadget driver should be changed later.
>>>>>> We should try avoiding ABI breaks in DT.
>>>>> But the cdns3 usb gaget driver and host driver in different uclass
>>>>> need two
>>> dt nodes to bind with.
>>>>> And the compatible of the two node cannot be same.
>>>>> So for gadget driver, the compatible may use "cdns,usb3-1.0.0", for
>>>>> host
>>> driver, the compatible will use "cdns,usb3-1.0.0-host".
>>>>> What do you think about it?
>>>> CCing Jean, since I think he did solve similar topic for his platform.
>>> I've been OOO for a few weeks and didn't look at the whole series.
>>>
>>> For this particular issue, the solution I used is to let the wrapper
>>> do the binding job. The name of the driver to use is hard-coded in the
>> wrapper diver.
>>> This is done in dwc3_glue_bind().
>> Thanks for your suggestions.
>>
>> So if I want to use the cdns3 usb node as both usb gadget device and usb
>> host device, do you mean that I should make the cdns3 usb node as a usb
>> wrapper device, and create two subnodes in it.

I think we should not change the binding to adapt to out driver but keep 
the bindings that exist in linux and adapt the u-boot driver

In the version used by our platform, there is a wrapper around the USB:

     usbss0: cdns_usb at 4104000 {
         compatible = "ti,j721e-usb";
         [....]
         usb0: usb at 6000000 {
             compatible = "cdns,usb3-1.0.1";

The driver selection (host or device) could be done by the wrapper when 
it binds its children (same as the dwc3).

OR

The "cdns,usb3-1.0.1" could be a dumb driver the role of which would be 
only to bind a new driver (host or device) based on "dr_mode". The 
binding could be done using the same node, it doesn't have to be a subnode.


Maybe the second solution will be better, as it would work for platforms 
that do not use a wrapper.


JJ

>> Then when binding the wrapper node, it will hard-coded the two subnodes
>> to different driver(gadge/host driver) according to the dr_mode property in
>> nodes.
>>
> Do you think I understand it right?

>
> Best regards
> Sherry sun
>
>> Best regards
>> Sherry sun
>>
>>> JJ
>>>
>>>
>>>
>>>>>>>>> +	{ }
>>>>>>>>> +};
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.d
>> enx.de%2Flistinfo%2Fu-
>> boot&data=02%7C01%7Csherry.sun%40nxp.com%7C35f1d34da1ea4b7
>> 670ba08d72b823e9a%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7
>> C637025710721487079&sdata=Nfk0qWtSViz60wJHAOr2m5tgIwTWjNwI
>> GrNOxDH6HC0%3D&reserved=0


More information about the U-Boot mailing list