diff mbox

[v5] ARM: shmobile: armadillo800eva-reference: add SDHI and MMCIF interfaces

Message ID Pine.LNX.4.64.1309261931340.11968@axis700.grange (mailing list archive)
State Superseded
Headers show

Commit Message

Guennadi Liakhovetski Sept. 26, 2013, 5:43 p.m. UTC
Add SDHI0 and MMCIF interfaces to armadillo800eva-reference with
regulators and pin configurations. SDHI1 is not added yet, because the
switch, that connects the interface either to an SD slot or to a WiFi
SDIO card cannot be described in DT yet.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
---

v5: remove SDHI1 until we can properly handle the WiFi / card slot switch.

 .../boot/dts/r8a7740-armadillo800eva-reference.dts |   58 ++++++++++++++++++++
 arch/arm/boot/dts/r8a7740.dtsi                     |   33 +++++++++++
 2 files changed, 91 insertions(+), 0 deletions(-)

Comments

Laurent Pinchart Sept. 27, 2013, 12:50 a.m. UTC | #1
Hi Guennadi,

Thank you for the patch.

On Thursday 26 September 2013 19:43:16 Guennadi Liakhovetski wrote:
> Add SDHI0 and MMCIF interfaces to armadillo800eva-reference with
> regulators and pin configurations. SDHI1 is not added yet, because the
> switch, that connects the interface either to an SD slot or to a WiFi
> SDIO card cannot be described in DT yet.
> 
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> ---
> 
> v5: remove SDHI1 until we can properly handle the WiFi / card slot switch.
> 
>  .../boot/dts/r8a7740-armadillo800eva-reference.dts |   58 +++++++++++++++++
>  arch/arm/boot/dts/r8a7740.dtsi                     |   33 +++++++++++
>  2 files changed, 91 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
> b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts index
> 8b2aab5..ea2992a 100644
> --- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
> +++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
> @@ -35,6 +35,33 @@
>  		regulator-boot-on;
>  	};
> 
> +	vcc_sdhi0: regulator@1 {
> +		compatible = "regulator-fixed";
> +
> +		regulator-name = "SDHI0 Vcc";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +
> +		gpio = <&pfc 75 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +
> +	vccq_sdhi0: regulator@2 {
> +		compatible = "regulator-gpio";
> +
> +		regulator-name = "SDHI0 VccQ";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc_sdhi0>;
> +
> +		enable-gpio = <&pfc 74 GPIO_ACTIVE_HIGH>;
> +		gpios = <&pfc 17 GPIO_ACTIVE_HIGH>;
> +		states = <3300000 0
> +			  1800000 1>;
> +
> +		enable-active-high;
> +	};
> +
>  	leds {
>  		compatible = "gpio-leds";
>  		led1 {
> @@ -92,8 +119,39 @@
>  		renesas,groups = "tpu0_to2_1";
>  		renesas,function = "tpu0";
>  	};
> +
> +	mmc0_pins: mmc0 {
> +		renesas,groups = "mmc0_data8_1", "mmc0_ctrl_1";
> +		renesas,function = "mmc0";
> +	};
> +
> +	sdhi0_pins: sdhi0 {
> +		renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_wp";
> +		renesas,function = "sdhi0";
> +	};
>  };
> 
>  &tpu {
>  	status = "okay";
>  };
> +
> +&mmcif0 {
> +	pinctrl-0 = <&mmc0_pins>;
> +	pinctrl-names = "default";
> +
> +	vmmc-supply = <&reg_3p3v>;
> +	bus-width = <8>;
> +	non-removable;
> +	status = "okay";
> +};
> +
> +&sdhi0 {
> +	pinctrl-0 = <&sdhi0_pins>;
> +	pinctrl-names = "default";
> +
> +	vmmc-supply = <&vcc_sdhi0>;
> +	vqmmc-supply = <&vccq_sdhi0>;
> +	bus-width = <4>;
> +	broken-cd;
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/r8a7740.dtsi b/arch/arm/boot/dts/r8a7740.dtsi
> index 868bdde..ae1e230 100644
> --- a/arch/arm/boot/dts/r8a7740.dtsi
> +++ b/arch/arm/boot/dts/r8a7740.dtsi
> @@ -161,4 +161,37 @@
>  		status = "disabled";
>  		#pwm-cells = <3>;
>  	};
> +
> +	mmcif0: mmcif@e6bd0000 {
> +		compatible = "renesas,sh-mmcif";
> +		reg = <0xe6bd0000 0x100>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 56 4
> +				0 57 4>;
> +		status = "disabled";
> +	};
> +
> +	sdhi0: sdhi@e6850000 {
> +		compatible = "renesas,sdhi-r8a7740";
> +		reg = <0xe6850000 0x100>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 117 4

board-armadillo800eva.c doesn't use IRQ 117 for SDHI0. It includes a comment 
that mentions "no SH_MOBILE_SDHI_IRQ_CARD_DETECT here". Should it be fixed in 
the board file ?

> +				0 118 4
> +				0 119 4>;
> +		cap-sd-highspeed;
> +		cap-sdio-irq;
> +		status = "disabled";
> +	};
> +
> +	sdhi1: sdhi@e6860000 {
> +		compatible = "renesas,sdhi-r8a7740";
> +		reg = <0xe6860000 0x100>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 121 4
> +				0 122 4
> +				0 123 4>;
> +		cap-sd-highspeed;
> +		cap-sdio-irq;
> +		status = "disabled";
> +	};
>  };
Guennadi Liakhovetski Sept. 27, 2013, 7:57 a.m. UTC | #2
On Fri, 27 Sep 2013, Laurent Pinchart wrote:

[snip]

> > +	sdhi0: sdhi@e6850000 {
> > +		compatible = "renesas,sdhi-r8a7740";
> > +		reg = <0xe6850000 0x100>;
> > +		interrupt-parent = <&gic>;
> > +		interrupts = <0 117 4
> 
> board-armadillo800eva.c doesn't use IRQ 117 for SDHI0. It includes a comment 
> that mentions "no SH_MOBILE_SDHI_IRQ_CARD_DETECT here". Should it be fixed in 
> the board file ?

No, it shouldn't. On shmobile in .c mode devices like MMC hosts are 
specified in board files and thus are board-specific. In armadillo800eva 
the CD line on SDHI0 in the .c mode is used as a GPIO, that's why we don't 
need to provide the SDHI own CD interrupt.

In DT mode SDHI nodes are specified in an SoC-common .dtsi file, so, we 
put all resources there, including the CD interrupt. But on 
armadillo800eva a different pin is used for CD and as long as we didn't 
have GPIO support in DT we had to use polling here. Now, however, we can 
specify a CD GPIO. Let me post an updated patch.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 8b2aab5..ea2992a 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -35,6 +35,33 @@ 
 		regulator-boot-on;
 	};
 
+	vcc_sdhi0: regulator@1 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "SDHI0 Vcc";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&pfc 75 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	vccq_sdhi0: regulator@2 {
+		compatible = "regulator-gpio";
+
+		regulator-name = "SDHI0 VccQ";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc_sdhi0>;
+
+		enable-gpio = <&pfc 74 GPIO_ACTIVE_HIGH>;
+		gpios = <&pfc 17 GPIO_ACTIVE_HIGH>;
+		states = <3300000 0
+			  1800000 1>;
+
+		enable-active-high;
+	};
+
 	leds {
 		compatible = "gpio-leds";
 		led1 {
@@ -92,8 +119,39 @@ 
 		renesas,groups = "tpu0_to2_1";
 		renesas,function = "tpu0";
 	};
+
+	mmc0_pins: mmc0 {
+		renesas,groups = "mmc0_data8_1", "mmc0_ctrl_1";
+		renesas,function = "mmc0";
+	};
+
+	sdhi0_pins: sdhi0 {
+		renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_wp";
+		renesas,function = "sdhi0";
+	};
 };
 
 &tpu {
 	status = "okay";
 };
+
+&mmcif0 {
+	pinctrl-0 = <&mmc0_pins>;
+	pinctrl-names = "default";
+
+	vmmc-supply = <&reg_3p3v>;
+	bus-width = <8>;
+	non-removable;
+	status = "okay";
+};
+
+&sdhi0 {
+	pinctrl-0 = <&sdhi0_pins>;
+	pinctrl-names = "default";
+
+	vmmc-supply = <&vcc_sdhi0>;
+	vqmmc-supply = <&vccq_sdhi0>;
+	bus-width = <4>;
+	broken-cd;
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/r8a7740.dtsi b/arch/arm/boot/dts/r8a7740.dtsi
index 868bdde..ae1e230 100644
--- a/arch/arm/boot/dts/r8a7740.dtsi
+++ b/arch/arm/boot/dts/r8a7740.dtsi
@@ -161,4 +161,37 @@ 
 		status = "disabled";
 		#pwm-cells = <3>;
 	};
+
+	mmcif0: mmcif@e6bd0000 {
+		compatible = "renesas,sh-mmcif";
+		reg = <0xe6bd0000 0x100>;
+		interrupt-parent = <&gic>;
+		interrupts = <0 56 4
+				0 57 4>;
+		status = "disabled";
+	};
+
+	sdhi0: sdhi@e6850000 {
+		compatible = "renesas,sdhi-r8a7740";
+		reg = <0xe6850000 0x100>;
+		interrupt-parent = <&gic>;
+		interrupts = <0 117 4
+				0 118 4
+				0 119 4>;
+		cap-sd-highspeed;
+		cap-sdio-irq;
+		status = "disabled";
+	};
+
+	sdhi1: sdhi@e6860000 {
+		compatible = "renesas,sdhi-r8a7740";
+		reg = <0xe6860000 0x100>;
+		interrupt-parent = <&gic>;
+		interrupts = <0 121 4
+				0 122 4
+				0 123 4>;
+		cap-sd-highspeed;
+		cap-sdio-irq;
+		status = "disabled";
+	};
 };