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

Sherry Sun sherry.sun at nxp.com
Tue Sep 3 12:44:57 UTC 2019


Hi Jean,

> 
> 
> On 02/09/2019 13:29, Sherry Sun wrote:
> > Hi Vignesh,
> >
> >> Hi Sherry,
> >>
> >> [...]
> >>>> AFAIK, U-Boot does not support runtime switching of USB port to
> >>>> host from device and vice versa. This is the case for existing
> >>>> driver like
> >> DWC3/MUSB etc.
> >>>> Ideally we would need a role switch driver that unbinds and rebinds
> >>>> host vs device driver as when required based on U-Boot cmd or via
> >>>> an API (if required to be done during SPL stage etc).
> >>> I wonder if we can add two subnodes under the wrapper node as below,
> >> one bind to usb gadget driver and another bind to usb host driver.
> >>> So if we want to use usb device, just call the gadget driver, and if
> >>> want to
> >> use usb host, just call the host driver. The driver will probe correspond
> node.
> >>> I'm not sure if it is feasible, what do you think about it?
> >>>
> >>>        usbss0: cdns_usb at 4104000 {
> >>>            compatible = "ti,j721e-usb";
> >>>            [....]
> >>>            usb0: usb at 6010000 {		/* xhci reg address*/
> >>>                compatible = "cdns,usb3-1.0.1";
> >>> 	dr_mode = "host";
> >>> 	[....]
> >>> 	}
> >>>            usb1: usb at 6020000 {		/* dev reg address*/
> >>>                compatible = "cdns,usb3-1.0.1";
> >>> 	dr_mode = "peripheral";
> >>> 	[....]
> >>> 	}
> >>>      }
> >>>
> >> But this is not how DT would look in kernel. There will be single DT
> >> node representing both Host and Device node. DT repesentation should
> >> not be changed based on OS/bootloader, its HW description and must
> remain same.
> >> Unbinding host/gadget driver and rebinding with a different role
> >> should not be hard as the U-Boot core infrastructure exists.
> >>
> >> Moreover if xhci reg and dev reg are separated into different nodes
> >> dont we still need access to OTG register block to switch b/w host and
> device mode?
> > I think we may not need to access OTG register if we add two subnodes for
> gadget and host.
> >
> > But I see a for loop in dwc3_glue_bind() as follows, if there only one single
> node representing both Host and Device node under usb wrapper node, why
> we need this for loop?
> >
> > 212     for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> > 213          node = fdt_next_subnode(fdt, node)) {
> 
> I believe this is a legacy from the code it was inspired from.
> 
> Indeed the loop is not required.
> 
> Like Vignesh I think we must stick with the dt-bindings used by the kernel.

Thanks for your reply, I understand now. 

> 
> BTW we are working on the USB3 support right now that is lacking in our tree.
> I choose to keep the PHY drivers as close as possible to their linux version. I'll
> probably start posting preliminary patches this week.
> 
> If you have the USB3 working in the kernel, can you point to a tree where I
> can have a look at the drivers and dt-bindings ?

Sure, you can see our downstream kernel code at my github, here is the link address: https://github.com/sherrysun1/linux-imx.git.
And look forward to seeing your patches in uboot maillist.

Best regards
Sherry sun

> 
> JJ
> 
> >
> > Best regards
> > Sherry sun
> >
> >> Regards
> >> Vignesh
> >>
> >>> Best regards
> >>> Sherry sun
> >>>
> >>>> Regards
> >>>> Vignesh
> >>>>
> >>>>> Best regards
> >>>>> Sherry sun
> >>>>>
> >>>>>> 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://l
> >>>>>>>>
> >>
> ists.d&data=02%7C01%7Csherry.sun%40nxp.com%7C7d1d76a7124f4c3f
> >>>> e9
> >>
> 9d08d72d3ddf82%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63
> >>>> 70276
> >>
> 16080089878&sdata=70BPVQkomokcNpxsHRD3njfZQvuG51VSD1QKBjQ
> >>>> o1kA%3
> >>>>>>>> D&reserved=0
> >>>>>>>> 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
> >>>> --
> >>>> Regards
> >>>> Vignesh


More information about the U-Boot mailing list