diff mbox

arm: dts: berlin2q-marvell-dmp: add sdhci1 fully functionality

Message ID 1448543588-1021-1-git-send-email-jszhang@marvell.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jisheng Zhang Nov. 26, 2015, 1:13 p.m. UTC
The sdhci1 on Marvell BG2Q DMP board is used as sdcard interface, we
have gpios for card detection, write-protect, vqmmc and vmmc.

This patch adds pinmux for this sdcard interface, then adds regulators
for vmmc and vqmmc, lastly adds cd-gpios, wp-gpios properties.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
 arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 43 ++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

Comments

Sebastian Hesselbarth Nov. 28, 2015, 11:20 a.m. UTC | #1
On 26.11.2015 14:13, Jisheng Zhang wrote:
> The sdhci1 on Marvell BG2Q DMP board is used as sdcard interface, we
> have gpios for card detection, write-protect, vqmmc and vmmc.
> 
> This patch adds pinmux for this sdcard interface, then adds regulators
> for vmmc and vqmmc, lastly adds cd-gpios, wp-gpios properties.
> 
> Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> ---
>  arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 43 ++++++++++++++++++++++++++++--
>  1 file changed, 41 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> index cdcf89b..1fdc1d7 100644
> --- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> +++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> @@ -84,12 +84,51 @@
>  			gpio = <&portb 12 GPIO_ACTIVE_HIGH>;
>  			enable-active-high;
>  		};
> +
> +		reg_sdio1_vmmc: regulator@3 {
> +			compatible = "regulator-fixed";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-name = "sdio1_vmmc";
> +			enable-active-high;
> +			regulator-boot-on;
> +			gpio = <&portb 21 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		reg_sdio1_vqmmc: regulator@4 {
> +			compatible = "regulator-gpio";
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-name = "sdio1_vqmmc";
> +			regulator-type = "voltage";
> +			enable-active-high;
> +			gpios = <&portb 16 GPIO_ACTIVE_HIGH>;
> +			states = <3300000 0x1
> +				  1800000 0x0>;
> +		};
> +	};
> +};
> +
> +&soc_pinctrl {
> +	sd1gpio_pmux: sd1pwr-pmux {
> +		groups = "G23", "G32";
> +		function = "gpio";
> +	};
> +
> +	sd1_pmux: sd1-pmux {
> +		groups = "G31";
> +		function = "sd1";

Jisheng,

while having the sd1gpio_pmux in the board file, I think the
sd1_pmux is best kept in the SoC.dtsi.

>  	};
>  };
>  
>  &sdhci1 {
> -	broken-cd;
> -	sdhci,wp-inverted;
> +	vmmc-supply = <&reg_sdio1_vmmc>;
> +	vqmmc-supply = <&reg_sdio1_vqmmc>;
> +	cd-inverted;
> +	cd-gpios = <&portc 30 GPIO_ACTIVE_HIGH>;

How about removing cd-inverted and make cd-gpio GPIO_ACTIVE_LOW
instead?

Sebastian

> +	wp-gpios = <&portd 0 GPIO_ACTIVE_HIGH>;
> +	pinctrl-0 = <&sd1gpio_pmux>, <&sd1_pmux>;
> +	pinctrl-names = "default";
>  	status = "okay";
>  };
>  
>
Jisheng Zhang Nov. 30, 2015, 1:07 p.m. UTC | #2
On Sat, 28 Nov 2015 12:20:01 +0100
Sebastian Hesselbarth  wrote:

> On 26.11.2015 14:13, Jisheng Zhang wrote:
> > The sdhci1 on Marvell BG2Q DMP board is used as sdcard interface, we
> > have gpios for card detection, write-protect, vqmmc and vmmc.
> > 
> > This patch adds pinmux for this sdcard interface, then adds regulators
> > for vmmc and vqmmc, lastly adds cd-gpios, wp-gpios properties.
> > 
> > Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> > ---
> >  arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 43 ++++++++++++++++++++++++++++--
> >  1 file changed, 41 insertions(+), 2 deletions(-)
> > 
> > diff --git a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> > index cdcf89b..1fdc1d7 100644
> > --- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> > +++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> > @@ -84,12 +84,51 @@
> >  			gpio = <&portb 12 GPIO_ACTIVE_HIGH>;
> >  			enable-active-high;
> >  		};
> > +
> > +		reg_sdio1_vmmc: regulator@3 {
> > +			compatible = "regulator-fixed";
> > +			regulator-min-microvolt = <3300000>;
> > +			regulator-max-microvolt = <3300000>;
> > +			regulator-name = "sdio1_vmmc";
> > +			enable-active-high;
> > +			regulator-boot-on;
> > +			gpio = <&portb 21 GPIO_ACTIVE_HIGH>;
> > +		};
> > +
> > +		reg_sdio1_vqmmc: regulator@4 {
> > +			compatible = "regulator-gpio";
> > +			regulator-min-microvolt = <1800000>;
> > +			regulator-max-microvolt = <3300000>;
> > +			regulator-name = "sdio1_vqmmc";
> > +			regulator-type = "voltage";
> > +			enable-active-high;
> > +			gpios = <&portb 16 GPIO_ACTIVE_HIGH>;
> > +			states = <3300000 0x1
> > +				  1800000 0x0>;
> > +		};
> > +	};
> > +};
> > +
> > +&soc_pinctrl {
> > +	sd1gpio_pmux: sd1pwr-pmux {
> > +		groups = "G23", "G32";
> > +		function = "gpio";
> > +	};
> > +
> > +	sd1_pmux: sd1-pmux {
> > +		groups = "G31";
> > +		function = "sd1";  
> 
> Jisheng,
> 
> while having the sd1gpio_pmux in the board file, I think the
> sd1_pmux is best kept in the SoC.dtsi.

Indeed, there's no other usage with sd1's pinmux. will do in v2

> 
> >  	};
> >  };
> >  
> >  &sdhci1 {
> > -	broken-cd;
> > -	sdhci,wp-inverted;
> > +	vmmc-supply = <&reg_sdio1_vmmc>;
> > +	vqmmc-supply = <&reg_sdio1_vqmmc>;
> > +	cd-inverted;
> > +	cd-gpios = <&portc 30 GPIO_ACTIVE_HIGH>;  
> 
> How about removing cd-inverted and make cd-gpio GPIO_ACTIVE_LOW
> instead?

Good idea! Will do in v2.

Thanks for your review,
Jisheng
diff mbox

Patch

diff --git a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
index cdcf89b..1fdc1d7 100644
--- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
+++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
@@ -84,12 +84,51 @@ 
 			gpio = <&portb 12 GPIO_ACTIVE_HIGH>;
 			enable-active-high;
 		};
+
+		reg_sdio1_vmmc: regulator@3 {
+			compatible = "regulator-fixed";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-name = "sdio1_vmmc";
+			enable-active-high;
+			regulator-boot-on;
+			gpio = <&portb 21 GPIO_ACTIVE_HIGH>;
+		};
+
+		reg_sdio1_vqmmc: regulator@4 {
+			compatible = "regulator-gpio";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-name = "sdio1_vqmmc";
+			regulator-type = "voltage";
+			enable-active-high;
+			gpios = <&portb 16 GPIO_ACTIVE_HIGH>;
+			states = <3300000 0x1
+				  1800000 0x0>;
+		};
+	};
+};
+
+&soc_pinctrl {
+	sd1gpio_pmux: sd1pwr-pmux {
+		groups = "G23", "G32";
+		function = "gpio";
+	};
+
+	sd1_pmux: sd1-pmux {
+		groups = "G31";
+		function = "sd1";
 	};
 };
 
 &sdhci1 {
-	broken-cd;
-	sdhci,wp-inverted;
+	vmmc-supply = <&reg_sdio1_vmmc>;
+	vqmmc-supply = <&reg_sdio1_vqmmc>;
+	cd-inverted;
+	cd-gpios = <&portc 30 GPIO_ACTIVE_HIGH>;
+	wp-gpios = <&portd 0 GPIO_ACTIVE_HIGH>;
+	pinctrl-0 = <&sd1gpio_pmux>, <&sd1_pmux>;
+	pinctrl-names = "default";
 	status = "okay";
 };