
Hi Jean,
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@4104000 { compatible = "ti,j721e-usb"; [....] usb0: usb@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.
I just communicated with Vignesh Raghavendra vigneshr@ti.com, and he suggest that I should keep this cdns3 driver under Linux kernel and U-Boot in sync. And show me your downstream code with v10 of Cadence USB3 kernel driver ported to U-Boot. So I decide to follow your way to deal with this issue.
But I want to ask another question: The two solutions you gave before both make the usb node with compatible "cdns,usb3-1.0.1" as a definite device (host or gadget) by its dr_mode property. If I want use this usb device works as both host and gadget driver, which means I want to change its status runtime, such as I want to use this usb device to run both fastboot or usb start command, how can we deal with this? .
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@lists.denx.de https://lists.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