Thread (1 message) 1 message, 1 author, 2015-06-23

Re: [PATCH v6] usb: common: add API to set usb otg capabilities by device tree

From: Li Jun <hidden>
Date: 2015-06-23 12:47:49

On Tue, Jun 23, 2015 at 02:56:06PM +0300, Roger Quadros wrote:
+ Kukjin, Stephen,

for board specific USB question.

On Tue, 23 Jun 2015 16:35:49 +0800
Li Jun [off-list ref] wrote:
quoted
On Tue, Jun 23, 2015 at 10:43:28AM +0300, Roger Quadros wrote:
quoted
quoted
quoted
If the dr_mode was "otg" for such case and we want OTG disabled then it is really the DT fault.
It's ID pin detect for dual role switch as many current OTG controllers have.
not DT fault, its dt only has a dr_mode = "otg".
quoted
We don't need to tackle this case. Just fix up the DT to dr_mode = "peripheral" if
OTG behaviour is not needed.
OTG behaviour is not needed, so we need disable HNP/SRP/ADP. but dr_mode =
"otg" as it already works fine with ID pin detect.
Do you know which platform has plain non-otg dual-role working as of today
with dr_mode set to "otg"?
I don't know.
The dt property dr_mode is already there, and currently there are some platforms
as its user, so I assume those platforms either are non-otg dual-role, or real OTG
with HNP supported, I guess most are the former cases; chipidea is the later case.
quoted
For TI platforms none of them have it working currently.
So for Ti platforms, some enables non-otg dual-role function but do not use
dr_mode = "otg"?
for TI we have only musb based and dwc3 based platforms. MUSB based are OTG.
dwc3 doesn't support dual-role or OTG yet so we use either "peripheral" or "Host"
quoted
For those only have non-otg dual-role platforms, no matter using dr_mode or not,
we need keep it's real OTG disabled for legacy users after it's controller
driver adds real OTG later.
I wouldn't even bother about platforms expecting dual-role behaviour
with dr_mode not set to "otg". That is just plain wrong and can't be supported.
Some platforms may not pass dr_mode in it DT, and treat that means
otg controller will work at otg mode by default, at least I know
current chipidea platforms do so. Therefore we may not list all otg
controller drivers just by grep "dr_mode = "otg"" in its dts files.
These are the dts files having dr_mode == "otg".
I've sorted them as per Soc vendor and USB controller

Freescale:
----------
powerpc/boot/dts/mpc5121.dtsi:			dr_mode = "otg";
	compatible = "fsl,mpc5121-usb2-dr";
powerpc/boot/dts/asp834x-redboot.dts:			dr_mode = "otg";
	compatible = "fsl-usb2-dr"
powerpc/boot/dts/mpc834x_mds.dts:			dr_mode = "otg";
	compatible = "fsl-usb2-dr";
powerpc/boot/dts/mpc8349emitxgp.dts:			dr_mode = "otg";
	compatible = "fsl-usb2-dr";

arm/boot/dts/imx25-pdk.dts:	dr_mode = "otg";
	compatible = "fsl,imx25-usb", "fsl,imx27-usb";
arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts:	dr_mode = "otg";
	compatible = "fsl,imx25-usb", "fsl,imx27-usb";
arm/boot/dts/imx27-eukrea-cpuimx27.dtsi:	dr_mode = "otg";
	compatible = "fsl,imx27-usb";
arm/boot/dts/imx27-phytec-phycore-som.dtsi:	dr_mode = "otg";
	compatible = "fsl,imx27-usb";
arm/boot/dts/imx27-pdk.dts:	dr_mode = "otg";
	compatible = "fsl,imx27-usb";
arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts:	dr_mode = "otg";
	compatible = "fsl,imx35-usb", "fsl,imx27-usb";
arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts:	dr_mode = "otg";
	compatible = "fsl,imx51-usb", "fsl,imx27-usb";
arm/boot/dts/imx51-babbage.dts:	dr_mode = "otg";
	compatible = "fsl,imx51-usb", "fsl,imx27-usb";
arm/boot/dts/imx51-digi-connectcore-jsk.dts:	dr_mode = "otg";
	compatible = "fsl,imx51-usb", "fsl,imx27-usb";
arm/boot/dts/imx6dl-riotboard.dts:	dr_mode = "otg";
	compatible = "fsl,imx6q-usb", "fsl,imx27-usb";

Li, can you please comment on all the above Freesacle platforms?
AFAIK, those FSL platforms are legacy OTG.

Li Jun
 
STE:
---
arm/boot/dts/ste-dbx5x0.dtsi:			dr_mode = "otg";
	compatible = "stericsson,db8500-musb";

MUSB so legacy OTG.

TI:
---
arm/boot/dts/am33xx.dtsi:				dr_mode = "otg";
	compatible = "ti,musb-am33xx";

MUSB so legacy OTG.

arm/boot/dts/dra7.dtsi:				dr_mode = "otg";
	compatible = "snps,dwc3";	/* board dts overrides to dr_mode = "peripheral" or "host" */
arm/boot/dts/dra74x.dtsi:				dr_mode = "otg";
	compatible = "snps,dwc3";	/* board dts overrides to dr_mode = "peripheral" or "host" */
arm/boot/dts/am4372.dtsi:				dr_mode = "otg";
	compatible = "snps,dwc3";	/* board dts overrides to dr_mode = "peripheral" or "host" */
arm/boot/dts/am4372.dtsi:				dr_mode = "otg";
	compatible = "snps,dwc3";	/* board dts overrides to dr_mode = "peripheral" or "host" */

All these will eventually use dr_mode = "otg" with all 3 disable flags for simple dual-role operation.

Samsung
-------
arm/boot/dts/exynos5422-odroidxu3.dts:	dr_mode = "otg";
	compatible = "snps,dwc3";

I think that this board expects dual-role only behaviour. But that is not functional for DWC3.
Kukjin/Felipe, any comment?

Nvidia
------
arm/boot/dts/tegra20-seaboard.dts:		dr_mode = "otg";
	compatible = "nvidia,tegra20-ehci", "usb-ehci";
arm/boot/dts/tegra30-colibri-eval-v3.dts:		dr_mode = "otg";
	compatible = "nvidia,tegra30-ehci", "usb-ehci";

I couldn't find gadget side implementation for this.
Stephen, any comments on whether this board supports true OTG operation or just dual-role operation?

Cambridge Silicon
-----------------
arm/boot/dts/atlas7.dtsi:				dr_mode = "otg";
	compatible = "sirf,atlas7-usb";

I couldn't find the USB controller driver for this.

cheers,
-roger
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help