diff mbox series

arm64: dts: renesas: add/enable USB2.0 peripheral for R-Car [DE]3

Message ID 1539081911-9020-1-git-send-email-yoshihiro.shimoda.uh@renesas.com (mailing list archive)
State Superseded
Delegated to: Simon Horman
Headers show
Series arm64: dts: renesas: add/enable USB2.0 peripheral for R-Car [DE]3 | expand

Commit Message

Yoshihiro Shimoda Oct. 9, 2018, 10:45 a.m. UTC
This patch adds/enables USB2.0 peripheral for R-Car [DE]3 boards.
So, the default mode on each board is:
 - R-Car D3 Draak board (has a type-A connector) = host.
 - R-Car E3 Ebisu board (has a type-B micro connector) = peripheral.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts |  8 +++++
 arch/arm64/boot/dts/renesas/r8a77990.dtsi      | 45 ++++++++++++++++++++++++++
 arch/arm64/boot/dts/renesas/r8a77995-draak.dts |  8 +++++
 arch/arm64/boot/dts/renesas/r8a77995.dtsi      | 45 ++++++++++++++++++++++++++
 4 files changed, 106 insertions(+)

Comments

Biju Das Oct. 12, 2018, 8:32 a.m. UTC | #1
Hi Shimoda-San,

Thanks for the patch.

> -----Original Message-----
> From: linux-renesas-soc-owner@vger.kernel.org <linux-renesas-soc-
> owner@vger.kernel.org> On Behalf Of Yoshihiro Shimoda
> Sent: 09 October 2018 11:45
> To: horms@verge.net.au; magnus.damm@gmail.com
> Cc: linux-renesas-soc@vger.kernel.org; Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com>
> Subject: [PATCH] arm64: dts: renesas: add/enable USB2.0 peripheral for R-
> Car [DE]3
>
>  arch/arm64/boot/dts/renesas/r8a77995-draak.dts |  8 +++++
>  arch/arm64/boot/dts/renesas/r8a77995.dtsi      | 45
> ++++++++++++++++++++++++++
>  4 files changed, 106 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> index 7278cd5..e3726307 100644
> --- a/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> @@ -357,6 +357,51 @@
>  resets = <&cpg 407>;
>  };
>
> +hsusb: usb@e6590000 {
> +compatible = "renesas,usbhs-r8a77990",
> +     "renesas,rcar-gen3-usbhs";
> +reg = <0 0xe6590000 0 0x100>;

is it not 0x200?

Renesas_usbhs driver("drivers/usb/renesas_usbhs/common.c ")  maps the address up to 0x100 using "devm_ioremap_resource" function

where as the  "drivers/usb/renesas_usbhs/rcar3"  access  addresses beyond 0x100 (for eg:- 0x102,0x180,0x184,0x188) using iowrite32/16 calls.

This issue is present in other R-Car Gen3 variant as well(for eg:- R-Car H3/M3-W,..... etc).

> +interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +clocks = <&cpg CPG_MOD 704>, <&cpg CPG_MOD
> 703>;
> +dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
> +       <&usb_dmac1 0>, <&usb_dmac1 1>;
> +dma-names = "ch0", "ch1", "ch2", "ch3";
> +renesas,buswait = <11>;
> +phys = <&usb2_phy0>;
> +phy-names = "usb";
> +power-domains = <&sysc
> R8A77990_PD_ALWAYS_ON>;
> +resets = <&cpg 704>, <&cpg 703>;
> +status = "disabled";
> +};
> +
> +usb_dmac0: dma-controller@e65a0000 {
> +compatible = "renesas,r8a77990-usb-dmac",
> +     "renesas,usb-dmac";
> +reg = <0 0xe65a0000 0 0x100>;
> +interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH
> +      GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
> +interrupt-names = "ch0", "ch1";
> +clocks = <&cpg CPG_MOD 330>;
> +power-domains = <&sysc
> R8A77990_PD_ALWAYS_ON>;
> +resets = <&cpg 330>;
> +#dma-cells = <1>;
> +dma-channels = <2>;
> +};
> +
> +usb_dmac1: dma-controller@e65b0000 {
> +compatible = "renesas,r8a77990-usb-dmac",
> +     "renesas,usb-dmac";
> +reg = <0 0xe65b0000 0 0x100>;
> +interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH
> +      GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
> +interrupt-names = "ch0", "ch1";
> +clocks = <&cpg CPG_MOD 331>;
> +power-domains = <&sysc
> R8A77990_PD_ALWAYS_ON>;
> +resets = <&cpg 331>;
> +#dma-cells = <1>;
> +dma-channels = <2>;
> +};
> +
>  dmac0: dma-controller@e6700000 {
>  compatible = "renesas,dmac-r8a77990",
>       "renesas,rcar-dmac";
> diff --git a/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
> b/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
> index 2405eaa..48bb1d7 100644
> --- a/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
> +++ b/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
> @@ -179,6 +179,7 @@
>  };
>
>  &ehci0 {
> +dr_mode = "host";
>  status = "okay";
>  };
>
> @@ -186,6 +187,11 @@
>  clock-frequency = <48000000>;
>  };
>
> +&hsusb {
> +dr_mode = "host";
> +status = "okay";
> +};
> +
>  &i2c0 {
>  pinctrl-0 = <&i2c0_pins>;
>  pinctrl-names = "default";
> @@ -337,6 +343,7 @@
>  };
>
>  &ohci0 {
> +dr_mode = "host";
>  status = "okay";
>  };
>
> @@ -445,6 +452,7 @@
>  pinctrl-0 = <&usb0_pins>;
>  pinctrl-names = "default";
>
> +renesas,no-otg-pins;
>  status = "okay";
>  };
>
> diff --git a/arch/arm64/boot/dts/renesas/r8a77995.dtsi
> b/arch/arm64/boot/dts/renesas/r8a77995.dtsi
> index 214f495..186f477 100644
> --- a/arch/arm64/boot/dts/renesas/r8a77995.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a77995.dtsi
> @@ -344,6 +344,51 @@
>  status = "disabled";
>  };
>
> +hsusb: usb@e6590000 {
> +compatible = "renesas,usbhs-r8a77995",
> +     "renesas,rcar-gen3-usbhs";
> +reg = <0 0xe6590000 0 0x100>;

Same as above.

> +interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +clocks = <&cpg CPG_MOD 704>, <&cpg CPG_MOD
> 703>;
> +dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
> +       <&usb_dmac1 0>, <&usb_dmac1 1>;
> +dma-names = "ch0", "ch1", "ch2", "ch3";
> +renesas,buswait = <11>;
> +phys = <&usb2_phy0>;
> +phy-names = "usb";
> +power-domains = <&sysc
> R8A77995_PD_ALWAYS_ON>;
> +resets = <&cpg 704>, <&cpg 703>;
> +status = "disabled";
> +};
> +
> +usb_dmac0: dma-controller@e65a0000 {
> +compatible = "renesas,r8a77995-usb-dmac",
> +     "renesas,usb-dmac";
> +reg = <0 0xe65a0000 0 0x100>;
> +interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH
> +      GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
> +interrupt-names = "ch0", "ch1";
> +clocks = <&cpg CPG_MOD 330>;
> +power-domains = <&sysc
> R8A77995_PD_ALWAYS_ON>;
> +resets = <&cpg 330>;
> +#dma-cells = <1>;
> +dma-channels = <2>;
> +};
> +
> +usb_dmac1: dma-controller@e65b0000 {
> +compatible = "renesas,r8a77995-usb-dmac",
> +     "renesas,usb-dmac";
> +reg = <0 0xe65b0000 0 0x100>;
> +interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH
> +      GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
> +interrupt-names = "ch0", "ch1";
> +clocks = <&cpg CPG_MOD 331>;
> +power-domains = <&sysc
> R8A77995_PD_ALWAYS_ON>;
> +resets = <&cpg 331>;
> +#dma-cells = <1>;
> +dma-channels = <2>;
> +};
> +
>  canfd: can@e66c0000 {
>  compatible = "renesas,r8a77995-canfd",
>       "renesas,rcar-gen3-canfd";
> --
> 1.9.1




Renesas Electronics Europe Ltd, Dukes Meadow, Millboard Road, Bourne End, Buckinghamshire, SL8 5FH, UK. Registered in England & Wales under Registered No. 04586709.
Yoshihiro Shimoda Oct. 16, 2018, 2:04 a.m. UTC | #2
Hi Biju-san,

> From: Biju Das, Sent: Friday, October 12, 2018 5:32 PM
> 
> Hi Shimoda-San,
> 
> Thanks for the patch.
> 
> > -----Original Message-----
> > From: linux-renesas-soc-owner@vger.kernel.org <linux-renesas-soc-
> > owner@vger.kernel.org> On Behalf Of Yoshihiro Shimoda
> > Sent: 09 October 2018 11:45
<snip>
> > diff --git a/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> > b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> > index 7278cd5..e3726307 100644
> > --- a/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> > +++ b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
> > @@ -357,6 +357,51 @@
> >  			resets = <&cpg 407>;
> >  		};
> >
> > +		hsusb: usb@e6590000 {
> > +			compatible = "renesas,usbhs-r8a77990",
> > +				     "renesas,rcar-gen3-usbhs";
> > +			reg = <0 0xe6590000 0 0x100>;
> 
> is it not 0x200?
> 
> Renesas_usbhs driver("drivers/usb/renesas_usbhs/common.c ")  maps the address up to 0x100 using "devm_ioremap_resource"
> function
> 
> where as the  "drivers/usb/renesas_usbhs/rcar3"  access  addresses beyond 0x100 (for eg:- 0x102,0x180,0x184,0x188) using
> iowrite32/16 calls.
> 
> This issue is present in other R-Car Gen3 variant as well(for eg:- R-Car H3/M3-W,..... etc).

Thank you very much for your report!
You're collect. So, I'll submit a patch to resolve it for all R-Car Gen3 SoCs.

Best regards,
Yoshihiro Shimoda
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts b/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
index f342dd8..f85655d 100644
--- a/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
+++ b/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
@@ -188,6 +188,7 @@ 
 };
 
 &ehci0 {
+	dr_mode = "peripheral";
 	status = "okay";
 };
 
@@ -195,6 +196,11 @@ 
 	clock-frequency = <48000000>;
 };
 
+&hsusb {
+	dr_mode = "peripheral";
+	status = "okay";
+};
+
 &i2c0 {
 	status = "okay";
 
@@ -295,6 +301,7 @@ 
 };
 
 &ohci0 {
+	dr_mode = "peripheral";
 	status = "okay";
 };
 
@@ -359,6 +366,7 @@ 
 	pinctrl-0 = <&usb0_pins>;
 	pinctrl-names = "default";
 
+	renesas,no-otg-pins;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/renesas/r8a77990.dtsi b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
index 7278cd5..e3726307 100644
--- a/arch/arm64/boot/dts/renesas/r8a77990.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77990.dtsi
@@ -357,6 +357,51 @@ 
 			resets = <&cpg 407>;
 		};
 
+		hsusb: usb@e6590000 {
+			compatible = "renesas,usbhs-r8a77990",
+				     "renesas,rcar-gen3-usbhs";
+			reg = <0 0xe6590000 0 0x100>;
+			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&cpg CPG_MOD 704>, <&cpg CPG_MOD 703>;
+			dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
+			       <&usb_dmac1 0>, <&usb_dmac1 1>;
+			dma-names = "ch0", "ch1", "ch2", "ch3";
+			renesas,buswait = <11>;
+			phys = <&usb2_phy0>;
+			phy-names = "usb";
+			power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+			resets = <&cpg 704>, <&cpg 703>;
+			status = "disabled";
+		};
+
+		usb_dmac0: dma-controller@e65a0000 {
+			compatible = "renesas,r8a77990-usb-dmac",
+				     "renesas,usb-dmac";
+			reg = <0 0xe65a0000 0 0x100>;
+			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH
+				      GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ch0", "ch1";
+			clocks = <&cpg CPG_MOD 330>;
+			power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+			resets = <&cpg 330>;
+			#dma-cells = <1>;
+			dma-channels = <2>;
+		};
+
+		usb_dmac1: dma-controller@e65b0000 {
+			compatible = "renesas,r8a77990-usb-dmac",
+				     "renesas,usb-dmac";
+			reg = <0 0xe65b0000 0 0x100>;
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH
+				      GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ch0", "ch1";
+			clocks = <&cpg CPG_MOD 331>;
+			power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+			resets = <&cpg 331>;
+			#dma-cells = <1>;
+			dma-channels = <2>;
+		};
+
 		dmac0: dma-controller@e6700000 {
 			compatible = "renesas,dmac-r8a77990",
 				     "renesas,rcar-dmac";
diff --git a/arch/arm64/boot/dts/renesas/r8a77995-draak.dts b/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
index 2405eaa..48bb1d7 100644
--- a/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
+++ b/arch/arm64/boot/dts/renesas/r8a77995-draak.dts
@@ -179,6 +179,7 @@ 
 };
 
 &ehci0 {
+	dr_mode = "host";
 	status = "okay";
 };
 
@@ -186,6 +187,11 @@ 
 	clock-frequency = <48000000>;
 };
 
+&hsusb {
+	dr_mode = "host";
+	status = "okay";
+};
+
 &i2c0 {
 	pinctrl-0 = <&i2c0_pins>;
 	pinctrl-names = "default";
@@ -337,6 +343,7 @@ 
 };
 
 &ohci0 {
+	dr_mode = "host";
 	status = "okay";
 };
 
@@ -445,6 +452,7 @@ 
 	pinctrl-0 = <&usb0_pins>;
 	pinctrl-names = "default";
 
+	renesas,no-otg-pins;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/renesas/r8a77995.dtsi b/arch/arm64/boot/dts/renesas/r8a77995.dtsi
index 214f495..186f477 100644
--- a/arch/arm64/boot/dts/renesas/r8a77995.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77995.dtsi
@@ -344,6 +344,51 @@ 
 			status = "disabled";
 		};
 
+		hsusb: usb@e6590000 {
+			compatible = "renesas,usbhs-r8a77995",
+				     "renesas,rcar-gen3-usbhs";
+			reg = <0 0xe6590000 0 0x100>;
+			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&cpg CPG_MOD 704>, <&cpg CPG_MOD 703>;
+			dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
+			       <&usb_dmac1 0>, <&usb_dmac1 1>;
+			dma-names = "ch0", "ch1", "ch2", "ch3";
+			renesas,buswait = <11>;
+			phys = <&usb2_phy0>;
+			phy-names = "usb";
+			power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+			resets = <&cpg 704>, <&cpg 703>;
+			status = "disabled";
+		};
+
+		usb_dmac0: dma-controller@e65a0000 {
+			compatible = "renesas,r8a77995-usb-dmac",
+				     "renesas,usb-dmac";
+			reg = <0 0xe65a0000 0 0x100>;
+			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH
+				      GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ch0", "ch1";
+			clocks = <&cpg CPG_MOD 330>;
+			power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+			resets = <&cpg 330>;
+			#dma-cells = <1>;
+			dma-channels = <2>;
+		};
+
+		usb_dmac1: dma-controller@e65b0000 {
+			compatible = "renesas,r8a77995-usb-dmac",
+				     "renesas,usb-dmac";
+			reg = <0 0xe65b0000 0 0x100>;
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH
+				      GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ch0", "ch1";
+			clocks = <&cpg CPG_MOD 331>;
+			power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+			resets = <&cpg 331>;
+			#dma-cells = <1>;
+			dma-channels = <2>;
+		};
+
 		canfd: can@e66c0000 {
 			compatible = "renesas,r8a77995-canfd",
 				     "renesas,rcar-gen3-canfd";