[U-Boot] [PATCH v4 2/4] USB: host: Add the USB3 host driver
Sherry Sun
sherry.sun at nxp.com
Mon Sep 2 11:29:25 UTC 2019
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)) {
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