[PATCH 1/3] ARM: imx: enable pinctrl dummy states

Subsystems: arm port, the rest

STALE5203d REVIEWED: 1 (0M)

1 review trailer.

7 messages, 4 authors, 2012-05-11 · open the first message on its own page

[PATCH 1/3] ARM: imx: enable pinctrl dummy states

From: Dong Aisheng <hidden>
Date: 2012-05-02 11:31:20

From: Dong Aisheng <redacted>

Enable pinctrl dummy states for imx platforms without pinctrl
support.

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
---
 arch/arm/mach-imx/imx51-dt.c |    3 +++
 arch/arm/mach-imx/imx53-dt.c |    3 +++
 arch/arm/mach-imx/mm-imx1.c  |    2 ++
 arch/arm/mach-imx/mm-imx21.c |    2 ++
 arch/arm/mach-imx/mm-imx25.c |    2 ++
 arch/arm/mach-imx/mm-imx27.c |    2 ++
 arch/arm/mach-imx/mm-imx3.c  |    2 ++
 arch/arm/mach-imx/mm-imx5.c  |    2 ++
 8 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
index 5cca573..5f577fb 100644
--- a/arch/arm/mach-imx/imx51-dt.c
+++ b/arch/arm/mach-imx/imx51-dt.c
@@ -14,6 +14,7 @@
 #include <linux/irqdomain.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
+#include <linux/pinctrl/machine.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
 #include <mach/common.h>
@@ -81,6 +82,8 @@ static void __init imx51_dt_init(void)
 
 	of_irq_init(imx51_irq_match);
 
+	pinctrl_provide_dummies();
+
 	node = of_find_matching_node(NULL, imx51_iomuxc_of_match);
 	if (node) {
 		of_id = of_match_node(imx51_iomuxc_of_match, node);
diff --git a/arch/arm/mach-imx/imx53-dt.c b/arch/arm/mach-imx/imx53-dt.c
index 4172279..574eca4 100644
--- a/arch/arm/mach-imx/imx53-dt.c
+++ b/arch/arm/mach-imx/imx53-dt.c
@@ -15,6 +15,7 @@
 #include <linux/irqdomain.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
+#include <linux/pinctrl/machine.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
 #include <mach/common.h>
@@ -88,6 +89,8 @@ static void __init imx53_dt_init(void)
 
 	of_irq_init(imx53_irq_match);
 
+	pinctrl_provide_dummies();
+
 	node = of_find_matching_node(NULL, imx53_iomuxc_of_match);
 	if (node) {
 		of_id = of_match_node(imx53_iomuxc_of_match, node);
diff --git a/arch/arm/mach-imx/mm-imx1.c b/arch/arm/mach-imx/mm-imx1.c
index 2bded59..fcafd3d 100644
--- a/arch/arm/mach-imx/mm-imx1.c
+++ b/arch/arm/mach-imx/mm-imx1.c
@@ -18,6 +18,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/io.h>
+#include <linux/pinctrl/machine.h>
 
 #include <asm/mach/map.h>
 
@@ -58,4 +59,5 @@ void __init imx1_soc_init(void)
 						MX1_GPIO_INT_PORTC, 0);
 	mxc_register_gpio("imx1-gpio", 3, MX1_GPIO4_BASE_ADDR, SZ_256,
 						MX1_GPIO_INT_PORTD, 0);
+	pinctrl_provide_dummies();
 }
diff --git a/arch/arm/mach-imx/mm-imx21.c b/arch/arm/mach-imx/mm-imx21.c
index 14d540e..5f43905 100644
--- a/arch/arm/mach-imx/mm-imx21.c
+++ b/arch/arm/mach-imx/mm-imx21.c
@@ -20,6 +20,7 @@
 
 #include <linux/mm.h>
 #include <linux/init.h>
+#include <linux/pinctrl/machine.h>
 #include <mach/hardware.h>
 #include <mach/common.h>
 #include <mach/devices-common.h>
@@ -88,6 +89,7 @@ void __init imx21_soc_init(void)
 	mxc_register_gpio("imx21-gpio", 4, MX21_GPIO5_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
 	mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
 
+	pinctrl_provide_dummies();
 	imx_add_imx_dma();
 	platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res,
 					ARRAY_SIZE(imx21_audmux_res));
diff --git a/arch/arm/mach-imx/mm-imx25.c b/arch/arm/mach-imx/mm-imx25.c
index 153b457..6ff3714 100644
--- a/arch/arm/mach-imx/mm-imx25.c
+++ b/arch/arm/mach-imx/mm-imx25.c
@@ -19,6 +19,7 @@
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/err.h>
+#include <linux/pinctrl/machine.h>
 
 #include <asm/pgtable.h>
 #include <asm/mach/map.h>
@@ -95,6 +96,7 @@ void __init imx25_soc_init(void)
 	mxc_register_gpio("imx31-gpio", 2, MX25_GPIO3_BASE_ADDR, SZ_16K, MX25_INT_GPIO3, 0);
 	mxc_register_gpio("imx31-gpio", 3, MX25_GPIO4_BASE_ADDR, SZ_16K, MX25_INT_GPIO4, 0);
 
+	pinctrl_provide_dummies();
 	/* i.mx25 has the i.mx35 type sdma */
 	imx_add_imx_sdma("imx35-sdma", MX25_SDMA_BASE_ADDR, MX25_INT_SDMA, &imx25_sdma_pdata);
 	/* i.mx25 has the i.mx31 type audmux */
diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c
index 8cb3f5e..2566255 100644
--- a/arch/arm/mach-imx/mm-imx27.c
+++ b/arch/arm/mach-imx/mm-imx27.c
@@ -20,6 +20,7 @@
 
 #include <linux/mm.h>
 #include <linux/init.h>
+#include <linux/pinctrl/machine.h>
 #include <mach/hardware.h>
 #include <mach/common.h>
 #include <mach/devices-common.h>
@@ -89,6 +90,7 @@ void __init imx27_soc_init(void)
 	mxc_register_gpio("imx21-gpio", 4, MX27_GPIO5_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
 	mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
 
+	pinctrl_provide_dummies();
 	imx_add_imx_dma();
 	/* imx27 has the imx21 type audmux */
 	platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res,
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
index 7412738..9128d15 100644
--- a/arch/arm/mach-imx/mm-imx3.c
+++ b/arch/arm/mach-imx/mm-imx3.c
@@ -19,6 +19,7 @@
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/err.h>
+#include <linux/pinctrl/machine.h>
 
 #include <asm/pgtable.h>
 #include <asm/system_misc.h>
@@ -267,6 +268,7 @@ void __init imx35_soc_init(void)
 	mxc_register_gpio("imx31-gpio", 1, MX35_GPIO2_BASE_ADDR, SZ_16K, MX35_INT_GPIO2, 0);
 	mxc_register_gpio("imx31-gpio", 2, MX35_GPIO3_BASE_ADDR, SZ_16K, MX35_INT_GPIO3, 0);
 
+	pinctrl_provide_dummies();
 	if (to_version == 1) {
 		strncpy(imx35_sdma_pdata.fw_name, "sdma-imx35-to1.bin",
 			strlen(imx35_sdma_pdata.fw_name));
diff --git a/arch/arm/mach-imx/mm-imx5.c b/arch/arm/mach-imx/mm-imx5.c
index 05250ae..99de414 100644
--- a/arch/arm/mach-imx/mm-imx5.c
+++ b/arch/arm/mach-imx/mm-imx5.c
@@ -14,6 +14,7 @@
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/clk.h>
+#include <linux/pinctrl/machine.h>
 
 #include <asm/system_misc.h>
 #include <asm/mach/map.h>
@@ -223,6 +224,7 @@ void __init imx53_soc_init(void)
 	mxc_register_gpio("imx31-gpio", 5, MX53_GPIO6_BASE_ADDR, SZ_16K, MX53_INT_GPIO6_LOW, MX53_INT_GPIO6_HIGH);
 	mxc_register_gpio("imx31-gpio", 6, MX53_GPIO7_BASE_ADDR, SZ_16K, MX53_INT_GPIO7_LOW, MX53_INT_GPIO7_HIGH);
 
+	pinctrl_provide_dummies();
 	/* i.mx53 has the i.mx35 type sdma */
 	imx_add_imx_sdma("imx35-sdma", MX53_SDMA_BASE_ADDR, MX53_INT_SDMA, &imx53_sdma_pdata);
 
-- 
1.7.0.4

[PATCH 2/3] ARM: imx6q: switch to use pinctrl subsystem

From: Dong Aisheng <hidden>
Date: 2012-05-02 11:31:21

From: Dong Aisheng <redacted>

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
---
 arch/arm/mach-imx/Kconfig |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 7561eca..e0fc67c 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -842,6 +842,8 @@ config SOC_IMX6Q
 	select HAVE_IMX_MMDC
 	select HAVE_IMX_SRC
 	select HAVE_SMP
+	select PINCTRL
+	select PINCTRL_IMX6Q
 	select USE_OF
 
 	help
-- 
1.7.0.4

[PATCH 3/3] mmc: sdhci-imx-esdhc: convert to use pinctrl subsystem

From: Dong Aisheng <hidden>
Date: 2012-05-02 11:31:22

From: Dong Aisheng <redacted>

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
---
ChangeLog v4->v5:
 *split arch/arm/mach-imx/* changes into a separate patch
ChangeLog v3->v4:
 * call provide dummies in imx*_soc_init().
ChangeLog v2->v3:
 * patch name updated.
   v1 name is ARM: imx6q: switch to use pinctrl driver
 * using pinctrl dummy state to avoid breaking other platforms to use this
   driver.
ChangeLog v1->v2:
 * using updated binding
---
 arch/arm/boot/dts/imx6q-arm2.dts   |    4 ++++
 arch/arm/boot/dts/imx6q.dtsi       |   32 ++++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci-esdhc-imx.c |    9 +++++++++
 3 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-arm2.dts b/arch/arm/boot/dts/imx6q-arm2.dts
index ce1c823..34dd9cd 100644
--- a/arch/arm/boot/dts/imx6q-arm2.dts
+++ b/arch/arm/boot/dts/imx6q-arm2.dts
@@ -37,12 +37,16 @@
 				cd-gpios = <&gpio6 11 0>;
 				wp-gpios = <&gpio6 14 0>;
 				vmmc-supply = <&reg_3p3v>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_usdhc3_1>;
 				status = "okay";
 			};
 
 			usdhc at 0219c000 { /* uSDHC4 */
 				fsl,card-wired;
 				vmmc-supply = <&reg_3p3v>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_usdhc4_1>;
 				status = "okay";
 			};
 
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
index 4905f51..a89f294 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -386,7 +386,39 @@
 			};
 
 			iomuxc at 020e0000 {
+				compatible = "fsl,imx6q-iomuxc";
 				reg = <0x020e0000 0x4000>;
+
+				/* shared pinctrl settings */
+				usdhc3 {
+					pinctrl_usdhc3_1: usdhc3grp-1 {
+						fsl,pins = <1273 0x17059	/* MX6Q_PAD_SD3_CMD__USDHC3_CMD */
+							    1281 0x10059	/* MX6Q_PAD_SD3_CLK__USDHC3_CLK	*/
+							    1289 0x17059	/* MX6Q_PAD_SD3_DAT0__USDHC3_DAT0 */
+							    1297 0x17059	/* MX6Q_PAD_SD3_DAT1__USDHC3_DAT1 */
+							    1305 0x17059	/* MX6Q_PAD_SD3_DAT2__USDHC3_DAT2 */
+							    1312 0x17059	/* MX6Q_PAD_SD3_DAT3__USDHC3_DAT3 */
+							    1265 0x17059	/* MX6Q_PAD_SD3_DAT4__USDHC3_DAT4 */
+							    1257 0x17059	/* MX6Q_PAD_SD3_DAT5__USDHC3_DAT5 */
+							    1249 0x17059	/* MX6Q_PAD_SD3_DAT6__USDHC3_DAT6 */
+							    1241 0x17059>;	/* MX6Q_PAD_SD3_DAT7__USDHC3_DAT7 */
+					};
+				};
+
+				usdhc4 {
+					pinctrl_usdhc4_1: usdhc4grp-1 {
+						fsl,pins = <1386 0x17059	/* MX6Q_PAD_SD4_CMD__USDHC4_CMD */
+							    1392 0x10059	/* MX6Q_PAD_SD4_CLK__USDHC4_CLK	*/
+							    1462 0x17059	/* MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 */
+							    1470 0x17059	/* MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 */
+							    1478 0x17059	/* MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 */
+							    1486 0x17059	/* MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 */
+							    1493 0x17059	/* MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 */
+							    1501 0x17059	/* MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 */
+							    1509 0x17059	/* MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 */
+							    1517 0x17059>;	/* MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 */
+					};
+				};
 			};
 
 			dcic at 020e4000 { /* DCIC1 */
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 6193a0d..039bc19 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -24,6 +24,7 @@
 #include <linux/of.h>
 #include <linux/of_device.h>
 #include <linux/of_gpio.h>
+#include <linux/pinctrl/consumer.h>
 #include <mach/esdhc.h>
 #include "sdhci-pltfm.h"
 #include "sdhci-esdhc.h"
@@ -68,6 +69,7 @@ struct pltfm_imx_data {
 	int flags;
 	u32 scratchpad;
 	enum imx_esdhc_type devtype;
+	struct pinctrl *pinctrl;
 	struct esdhc_platform_data boarddata;
 };
 
@@ -467,6 +469,12 @@ static int __devinit sdhci_esdhc_imx_probe(struct platform_device *pdev)
 	clk_prepare_enable(clk);
 	pltfm_host->clk = clk;
 
+	imx_data->pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+	if (IS_ERR(imx_data->pinctrl)) {
+		err = PTR_ERR(imx_data->pinctrl);
+		goto pin_err;
+	}
+
 	if (!is_imx25_esdhc(imx_data))
 		host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
 
@@ -559,6 +567,7 @@ no_card_detect_irq:
 		gpio_free(boarddata->wp_gpio);
 no_card_detect_pin:
 no_board_data:
+pin_err:
 	clk_disable_unprepare(pltfm_host->clk);
 	clk_put(pltfm_host->clk);
 err_clk_get:
-- 
1.7.0.4

Re: [PATCH 1/3] ARM: imx: enable pinctrl dummy states

From: Shawn Guo <hidden>
Date: 2012-05-06 13:51:40

On Wed, May 02, 2012 at 07:31:20PM +0800, Dong Aisheng wrote:
From: Dong Aisheng <redacted>

Enable pinctrl dummy states for imx platforms without pinctrl
support.

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
I queued the series and will have it send together with other imx
and mxs driver patches that adopt pinctrl API.

-- 
Regards,
Shawn

Re: [PATCH 1/3] ARM: imx: enable pinctrl dummy states

From: Linus Walleij <hidden>
Date: 2012-05-09 09:11:25

On Wed, May 2, 2012 at 1:31 PM, Dong Aisheng [off-list ref] wrote:
From: Dong Aisheng <redacted>

Enable pinctrl dummy states for imx platforms without pinctrl
support.

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
Acked-by: Linus Walleij <redacted>

Yours,
Linus Walleij

Re: [PATCH 3/3] mmc: sdhci-imx-esdhc: convert to use pinctrl subsystem

From: Shawn Guo <hidden>
Date: 2012-05-11 07:36:56

On Wed, May 02, 2012 at 07:31:22PM +0800, Dong Aisheng wrote:
From: Dong Aisheng <redacted>

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
---
ChangeLog v4->v5:
 *split arch/arm/mach-imx/* changes into a separate patch
ChangeLog v3->v4:
 * call provide dummies in imx*_soc_init().
ChangeLog v2->v3:
 * patch name updated.
   v1 name is ARM: imx6q: switch to use pinctrl driver
 * using pinctrl dummy state to avoid breaking other platforms to use this
   driver.
ChangeLog v1->v2:
 * using updated binding
---
 arch/arm/boot/dts/imx6q-arm2.dts   |    4 ++++
 arch/arm/boot/dts/imx6q.dtsi       |   32 ++++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci-esdhc-imx.c |    9 +++++++++
 3 files changed, 45 insertions(+), 0 deletions(-)
Since we now have dummy state enabled for imx6q as well, I just split
the patches into following two for better separation, with first one
on my imx/pinctrl/for-3.5 and the second one on imx/dt/for-3.5 branch
respectively.

commit e62d8b8fe73518d1875371a2ee9c5fdd31eba6f8
Author: Dong Aisheng [off-list ref]
Date:   Fri May 11 14:56:01 2012 +0800

    mmc: sdhci-imx-esdhc: adopt pinctrl support

    Cc: linux-mmc at vger.kernel.org
    Cc: Chris Ball [off-list ref]
    Signed-off-by: Dong Aisheng [off-list ref]
    Signed-off-by: Shawn Guo [off-list ref]
    Acked-by: Stephen Warren [off-list ref]

 drivers/mmc/host/sdhci-esdhc-imx.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

commit 551fd208f204780bac1ca5bce1748ba7a6f7ee6e
Author: Dong Aisheng [off-list ref]
Date:   Fri May 11 14:58:00 2012 +0800

    ARM: dts: imx6q-arm2: add pinctrl state for usdhc

    Signed-off-by: Dong Aisheng [off-list ref]
    Signed-off-by: Shawn Guo [off-list ref]

 arch/arm/boot/dts/imx6q-arm2.dts |    4 ++++
 arch/arm/boot/dts/imx6q.dtsi     |   32 ++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 0 deletions(-)

Please have a check to see if everything is correct.

-- 
Regards,
Shawn

Re: [PATCH 3/3] mmc: sdhci-imx-esdhc: convert to use pinctrl subsystem

From: Dong Aisheng <hidden>
Date: 2012-05-11 08:01:15

On Fri, May 11, 2012 at 03:36:56PM +0800, Shawn Guo wrote:
On Wed, May 02, 2012 at 07:31:22PM +0800, Dong Aisheng wrote:
quoted
From: Dong Aisheng <redacted>

Acked-by: Stephen Warren <redacted>
Signed-off-by: Dong Aisheng <redacted>
---
ChangeLog v4->v5:
 *split arch/arm/mach-imx/* changes into a separate patch
ChangeLog v3->v4:
 * call provide dummies in imx*_soc_init().
ChangeLog v2->v3:
 * patch name updated.
   v1 name is ARM: imx6q: switch to use pinctrl driver
 * using pinctrl dummy state to avoid breaking other platforms to use this
   driver.
ChangeLog v1->v2:
 * using updated binding
---
 arch/arm/boot/dts/imx6q-arm2.dts   |    4 ++++
 arch/arm/boot/dts/imx6q.dtsi       |   32 ++++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci-esdhc-imx.c |    9 +++++++++
 3 files changed, 45 insertions(+), 0 deletions(-)
Since we now have dummy state enabled for imx6q as well, I just split
the patches into following two for better separation, with first one
on my imx/pinctrl/for-3.5 and the second one on imx/dt/for-3.5 branch
respectively.

commit e62d8b8fe73518d1875371a2ee9c5fdd31eba6f8
Author: Dong Aisheng [off-list ref]
Date:   Fri May 11 14:56:01 2012 +0800

    mmc: sdhci-imx-esdhc: adopt pinctrl support

    Cc: linux-mmc at vger.kernel.org
    Cc: Chris Ball [off-list ref]
    Signed-off-by: Dong Aisheng [off-list ref]
    Signed-off-by: Shawn Guo [off-list ref]
    Acked-by: Stephen Warren [off-list ref]

 drivers/mmc/host/sdhci-esdhc-imx.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

commit 551fd208f204780bac1ca5bce1748ba7a6f7ee6e
Author: Dong Aisheng [off-list ref]
Date:   Fri May 11 14:58:00 2012 +0800

    ARM: dts: imx6q-arm2: add pinctrl state for usdhc

    Signed-off-by: Dong Aisheng [off-list ref]
    Signed-off-by: Shawn Guo [off-list ref]

 arch/arm/boot/dts/imx6q-arm2.dts |    4 ++++
 arch/arm/boot/dts/imx6q.dtsi     |   32 ++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 0 deletions(-)

Please have a check to see if everything is correct.
Looks good to me.
Just go ahead.

Regards
Dong Aisheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help