diff mbox

[V3,2/5] ARM: dts: bcm283x: Add dtsi for USB host mode

Message ID 1471792204-21908-3-git-send-email-stefan.wahren@i2se.com (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Wahren Aug. 21, 2016, 3:10 p.m. UTC
In case dr_mode isn't passed via DT, the dwc2 defaults to OTG mode.
But all Raspberry Pi boards here are designed only for host mode.
So fix this issue by providing a dtsi file which set the dr_mode
to host.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
---
 arch/arm/boot/dts/bcm2835-rpi-a-plus.dts    |    1 +
 arch/arm/boot/dts/bcm2835-rpi-a.dts         |    1 +
 arch/arm/boot/dts/bcm2835-rpi-b-plus.dts    |    1 +
 arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts    |    1 +
 arch/arm/boot/dts/bcm2835-rpi-b.dts         |    1 +
 arch/arm/boot/dts/bcm2836-rpi-2-b.dts       |    1 +
 arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi |    3 +++
 7 files changed, 9 insertions(+)
 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi

Comments

Eric Anholt Aug. 22, 2016, 5:57 p.m. UTC | #1
Stefan Wahren <stefan.wahren@i2se.com> writes:

> In case dr_mode isn't passed via DT, the dwc2 defaults to OTG mode.
> But all Raspberry Pi boards here are designed only for host mode.
> So fix this issue by providing a dtsi file which set the dr_mode
> to host.

Can you explain what change this should cause for these boards?  Is it
just going to drop this message from dmesg:

dwc2 3f980000.usb: Configuration mismatch. dr_mode forced to host

or something else?
Stefan Wahren Aug. 22, 2016, 8:18 p.m. UTC | #2
Hi Eric,

> Eric Anholt <eric@anholt.net> hat am 22. August 2016 um 19:57 geschrieben:
> 
> 
> Stefan Wahren <stefan.wahren@i2se.com> writes:
> 
> > In case dr_mode isn't passed via DT, the dwc2 defaults to OTG mode.
> > But all Raspberry Pi boards here are designed only for host mode.
> > So fix this issue by providing a dtsi file which set the dr_mode
> > to host.
> 
> Can you explain what change this should cause for these boards?  Is it
> just going to drop this message from dmesg:
> 
> dwc2 3f980000.usb: Configuration mismatch. dr_mode forced to host

IMO it isn't a message which could be ignored. The dwc2 tries to detected the
USB role from compile configuration and hardware capabilities, but according to
the decision table [1] we should provide the correct dr_mode which is import for
FIFO configuration and so on.

Another problem that i see is that the USB behavior is influenced by compile
settings in a unexpected way. With arm/configs/bcm2835_defconfig the driver is
forced to host, but in a multiplatform config like arm64/configs/defconfig not.
I would expect a more stable dr_mode.

At the end the dwc2 can't reliable detect the dr_mode because it depends on the
board design.

Any concerns?

Stefan

[1] -
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=5268ed9d2e3b52f703f3661eef14cecbb2b572d4

> 
> or something else?
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox

Patch

diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
index 35ff4e7..f7f9db3 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
@@ -1,6 +1,7 @@ 
 /dts-v1/;
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
index 306a84e..8be102f 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
@@ -1,6 +1,7 @@ 
 /dts-v1/;
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-a", "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
index d5fdb8e..35cde65 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
@@ -2,6 +2,7 @@ 
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
index bfc4bd9..84df85e 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
@@ -2,6 +2,7 @@ 
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9512.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-b-rev2", "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
index 0371bb7..8e626a8 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
@@ -2,6 +2,7 @@ 
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9512.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-b", "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
index 29e1cfe..39dccf6 100644
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
@@ -2,6 +2,7 @@ 
 #include "bcm2836.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
diff --git a/arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi b/arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi
new file mode 100644
index 0000000..73f4ece
--- /dev/null
+++ b/arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi
@@ -0,0 +1,3 @@ 
+&usb {
+	dr_mode = "host";
+};