Skip to contentSkip to conversation

ARM: dts: add pinctrl nodes for Exynos5250 SoC

PATCH New Thomas Abraham 5 participants 7 messages Dec 13, 2012 – Apr 26, 2013 1 message not in the archive

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Add pinctrl device nodes for Exynos5250 SoC.

---
Few notes on this patch:
- Only pinctrl-0 and pinctrl-3 nodes have been added. Since pinctrl-1 is mostly used for camera interface, and since I do not have good understanding of this interface, I assumed the person with better understanding of camera interface can add the pinctrl-1 node. And pinctrl-2 node is used for C2C controller which I do not understand.
- The individual device nodes which are using the old style Samsung gpio bindings have not been converted over to pinctrl bindings yet. It might also be important to know if Linus's pinctrl grab in device core patch
(http://comments.gmane.org/gmane.linux.kernel/1409263) gets accepted.
- This patch should not be merged for now which otherwise would break existing platforms which are using the old samsung gpio driver bindings. This patch is intended to get started with the migration to pinctrl framework. It is probably better to first prepare all the migration patches and merge them as a bunch.

 arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  575 +++++++++++++++++++++++++++++
 arch/arm/boot/dts/exynos5250.dtsi         |  268 +-------------
 2 files changed, 596 insertions(+), 247 deletions(-)
 create mode 100644 arch/arm/boot/dts/exynos5250-pinctrl.dtsi
arch/arm/boot/dts/exynos5250-pinctrl.dtsi new file +575 -0
new file mode 100644
index 0000000..24180fc
@@ -0,0 +1,575 @@
+/*
+ * Samsung's Exynos5250 SoC pin-mux and pin-config device tree source
+ *
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd.
+ *		http://www.samsung.com
+ *
+ * Samsung's Exynos5250 SoC pin-mux and pin-config optiosn are listed as device
+ * tree nodes are listed in this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/ {
+	pinctrl@11400000 {
+		gpa0: gpa0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpa1: gpa1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpa2: gpa2 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpb0: gpb0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpb1: gpb1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpb2: gpb2 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpb3: gpb3 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpc0: gpc0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpc1: gpc1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpc2: gpc2 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpc3: gpc3 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpd0: gpd0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpd1: gpd1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpy0: gpy0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy1: gpy1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy2: gpy2 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy3: gpy3 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy4: gpy4 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy5: gpy5 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpy6: gpy6 {
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		gpc4: gpc4 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpx0: gpx0 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			interrupt-parent = <&combiner>;
+			#interrupt-cells = <2>;
+			interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
+				     <26 0>, <26 1>, <27 0>, <27 1>;
+		};
+
+		gpx1: gpx1 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			interrupt-parent = <&combiner>;
+			#interrupt-cells = <2>;
+			interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
+				     <30 0>, <30 1>, <31 0>, <31 1>;
+		};
+
+		gpx2: gpx2 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gpx3: gpx3 {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		uart0_data: uart0-data {
+			samsung,pins = "gpa0-0", "gpa0-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		uart0_fctl: uart0-fctl {
+			samsung,pins = "gpa0-2", "gpa0-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c2_bus: i2c2-bus {
+			samsung,pins = "gpa0-6", "gpa0-7";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c2_hs_bus: i2c2-hs-bus {
+			samsung,pins = "gpa0-6", "gpa0-7";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		uart2_data: uart2-data {
+			samsung,pins = "gpa1-0", "gpa1-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		uart2_fctl: uart2-fctl {
+			samsung,pins = "gpa1-2", "gpa1-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c3_bus: i2c3-bus {
+			samsung,pins = "gpa1-2", "gpa1-3";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c3_hs_bus: i2c3-hs-bus {
+			samsung,pins = "gpa1-2", "gpa1-3";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		uart3_data: uart3-data {
+			samsung,pins = "gpa1-4", "gpa1-4";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		spi0_bus: spi0-bus {
+			samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c4_bus: i2c4-bus {
+			samsung,pins = "gpa2-0", "gpa2-1";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c5_bus: i2c5-bus {
+			samsung,pins = "gpa2-2", "gpa2-3";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		spi1_bus: spi1-bus {
+			samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2s1_bus: i2s1-bus {
+			samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+					"gpb0-4";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		pcm1_bus: pcm1-bus {
+			samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+					"gpb0-4";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		ac97_bus: ac97-bus {
+			samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+					"gpb0-4";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2s2_bus: i2s2-bus {
+			samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+					"gpb1-4";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		pcm2_bus: pcm2-bus {
+			samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+					"gpb1-4";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		spdif_bus: spdif-bus {
+			samsung,pins = "gpb1-0", "gpb1-1";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		spi2_bus: spi2-bus {
+			samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
+			samsung,pin-function = <5>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c6_bus: i2c6-bus {
+			samsung,pins = "gpb1-3", "gpb1-4";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c7_bus: i2c7-bus {
+			samsung,pins = "gpb2-2", "gpb2-3";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c0_bus: i2c0-bus {
+			samsung,pins = "gpb3-0", "gpb3-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c1_bus: i2c1-bus {
+			samsung,pins = "gpb3-2", "gpb3-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <0>;
+		};
+
+		i2c0_hs_bus: i2c0-hs-bus {
+			samsung,pins = "gpb3-0", "gpb3-1";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		i2c1_hs_bus: i2c1-hs-bus {
+			samsung,pins = "gpb3-2", "gpb3-3";
+			samsung,pin-function = <4>;
+			samsung,pin-pud = <3>;
+			samaung,pin-drv = <0>;
+		};
+
+		sd0_clk: sd0-clk {
+			samsung,pins = "gpc0-0";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd0_cmd: sd0-cmd {
+			samsung,pins = "gpc0-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd0_cd: sd0-cd {
+			samsung,pins = "gpc0-2";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd0_bus1: sd0-bus-width1 {
+			samsung,pins = "gpc0-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd0_bus4: sd0-bus-width4 {
+			samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd0_bus8: sd0-bus-width8 {
+			samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd1_clk: sd1-clk {
+			samsung,pins = "gpc2-0";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd1_cmd: sd1-cmd {
+			samsung,pins = "gpc2-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd1_cd: sd1-cd {
+			samsung,pins = "gpc2-2";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd1_bus1: sd1-bus-width1 {
+			samsung,pins = "gpc2-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd1_bus4: sd1-bus-width4 {
+			samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_clk: sd2-clk {
+			samsung,pins = "gpc3-0";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_cmd: sd2-cmd {
+			samsung,pins = "gpc3-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_cd: sd2-cd {
+			samsung,pins = "gpc3-2";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_bus1: sd2-bus-width1 {
+			samsung,pins = "gpc3-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_bus4: sd2-bus-width4 {
+			samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd2_bus8: sd2-bus-width8 {
+			samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+			samsung,pin-function = <3>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd3_clk: sd3-clk {
+			samsung,pins = "gpc4-0";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd3_cmd: sd3-cmd {
+			samsung,pins = "gpc4-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd3_cd: sd3-cd {
+			samsung,pins = "gpc4-2";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd3_bus1: sd3-bus-width1 {
+			samsung,pins = "gpc4-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		sd3_bus4: sd3-bus-width4 {
+			samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <3>;
+			samsung,pin-drv = <3>;
+		};
+
+		uart1_data: uart1-data {
+			samsung,pins = "gpd0-0", "gpd0-1";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+
+		uart1_fctl: uart1-fctl {
+			samsung,pins = "gpd0-2", "gpd0-3";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samaung,pin-drv = <0>;
+		};
+	};
+
+	pinctrl_3: pinctrl@03680000 {
+		gpz: gpz {
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		i2s0_bus: i2s0-bus {
+			samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
+					"gpz-4", "gpz-5", "gpz-6";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <0>;
+			samsung,pin-drv = <0>;
+		};
+	};
+};
arch/arm/boot/dts/exynos5250.dtsi +21 -247

292 lines not on this page · raw message

Signature · 1 line
1.6.6.rc2
#1 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Quoted 3 lines · Thomas Abraham

Add pinctrl device nodes for Exynos5250 SoC.

Quoted 4 lines

- The individual device nodes which are using the old style Samsung gpio bindings have not been converted over to pinctrl bindings yet. It might also be important to know if Linus's pinctrl grab in device core patch
(http://comments.gmane.org/gmane.linux.kernel/1409263) gets accepted.

Greg seems happy with it and the plan is to have it merged for kernel v3.9.

I intend to push Greg for an ACK and queue it for linux-next right after the merge window.

Quoted 5 lines

- This patch should not be merged for now which otherwise would break existing platforms which are using the old samsung gpio driver bindings. This patch is intended to get started with the migration to pinctrl framework. It is probably better to first prepare all the migration patches and merge them as a bunch.

Sure. I guess it'll be taken through the Samsung tree anyway, right?

Yours,
Linus Walleij

#2 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Quoted 14 lines · Linus Walleij
Quoted 3 lines · Thomas Abraham

Add pinctrl device nodes for Exynos5250 SoC.

Quoted 4 lines

- The individual device nodes which are using the old style Samsung gpio bindings have not been converted over to pinctrl bindings yet. It might also be important to know if Linus's pinctrl grab in device core patch
(http://comments.gmane.org/gmane.linux.kernel/1409263) gets accepted.

Quoted 6 lines

Greg seems happy with it and the plan is to have it merged for kernel v3.9.

I intend to push Greg for an ACK and queue it for linux-next right after the merge window.

Same here ;-)

Quoted 8 lines
Quoted 5 lines

- This patch should not be merged for now which otherwise would break existing platforms which are using the old samsung gpio driver bindings. This patch is intended to get started with the migration to pinctrl framework. It is probably better to first prepare all the migration patches and merge them as a bunch.

Sure. I guess it'll be taken through the Samsung tree anyway, right?

I'm OK on this, if Greg is OK, then let me pick this up in Samsung tree.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.

#3 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

In reply to Thomas Abraham
Quoted 3 lines · Thomas Abraham

Add pinctrl device nodes for Exynos5250 SoC.

Replying to an old email of a patch that has been merged because it seems horribly broken.

Quoted 25 lines
arch/arm/boot/dts/exynos5250.dtsi +3 -0
index 581e57a..eb8d610 100644
@@ -18,6 +18,7 @@
 */
 
 /include/ "skeleton.dtsi"
+/include/ "exynos5250-pinctrl.dtsi"
 
 / {
 	compatible = "samsung,exynos5250";
@@ -48,6 +49,8 @@
 		mshc1 = &dwmmc_1;
 		mshc2 = &dwmmc_2;
 		mshc3 = &dwmmc_3;
+		pinctrl0 = &pinctrl_0;
+		pinctrl3 = &pinctrl_3;
 	};
 
 	gic:interrupt-controller at 10481000 {
@@ -79,6 +82,24 @@
 		interrupts = <0 42 0>;
 	};
 

arch/arm/boot/dts/exynos5250.dtsi line 94

Quoted 10 lines
arch/arm/boot/dts/exynos5250.dtsi +10 -0
+	pinctrl_0: pinctrl at 11400000 {
+		compatible = "samsung,pinctrl-exynos5250";
+		reg = <0x11400000 0x1000>;
+		interrupts = <0 46 0>;
+
+		wakup_eint: wakeup-interrupt-controller {
+			compatible = "samsung,exynos4210-wakeup-eint";
+			interrupt-parent = <&gic>;
+			interrupts = <0 32 0>;
+		};

Typo, should be "wakeup_eint". And what happened to #interrupt-cells? And the interrupt map?

Do you have an example of a tested user or a testcase for this? I'm trying to get interrupts going on these pins, and it's not looking like it's even close to working.

-Olof

#4 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Quoted 34 lines · Olof Johansson
Quoted 3 lines · Thomas Abraham

Add pinctrl device nodes for Exynos5250 SoC.

Replying to an old email of a patch that has been merged because it seems horribly broken.

Quoted 25 lines
arch/arm/boot/dts/exynos5250.dtsi +3 -0
index 581e57a..eb8d610 100644
@@ -18,6 +18,7 @@
 */
 
 /include/ "skeleton.dtsi"
+/include/ "exynos5250-pinctrl.dtsi"
 
 / {
      compatible = "samsung,exynos5250";
@@ -48,6 +49,8 @@
              mshc1 = &dwmmc_1;
              mshc2 = &dwmmc_2;
              mshc3 = &dwmmc_3;
+             pinctrl0 = &pinctrl_0;
+             pinctrl3 = &pinctrl_3;
      };
 
      gic:interrupt-controller at 10481000 {
@@ -79,6 +82,24 @@
              interrupts = <0 42 0>;
      };
 
Quoted 13 lines

arch/arm/boot/dts/exynos5250.dtsi line 94

Quoted 10 lines
arch/arm/boot/dts/exynos5250.dtsi +10 -0
+     pinctrl_0: pinctrl at 11400000 {
+             compatible = "samsung,pinctrl-exynos5250";
+             reg = <0x11400000 0x1000>;
+             interrupts = <0 46 0>;
+
+             wakup_eint: wakeup-interrupt-controller {
+                     compatible = "samsung,exynos4210-wakeup-eint";
+                     interrupt-parent = <&gic>;
+                     interrupts = <0 32 0>;
+             };

Typo, should be "wakeup_eint". And what happened to #interrupt-cells? And the interrupt map?

Hi Olof,

With the pinctrl driver, there is change in the way the wakeup interrupts are handled. Each of the four wakeup banks (GPX0 to GPX3) are now individual interrupt controllers (introduced by Tomasz Figa). The wakeup interrupts generated by GPX2 and GPX3 are muxed into the <0 32 0> interrupt of GIC.

So the interrupts-cells and interrupt map are not required in the above node. The label "wakup_eint" can actually to dropped and probably the node name "wakeup-interrupt-controller" should be renamed to avoid interpreting it as a interrupt controller node.

Quoted 4 lines

Do you have an example of a tested user or a testcase for this? I'm trying to get interrupts going on these pins, and it's not looking like it's even close to working.

The following is a rudimentary patch with which I have tested wakeup interrupts GPX0[0] and GPX3[7] on smdk5250 board. The gpio number in the dts file can be changed to test wakeup interrupt on pins other than EINT31 (GPX3[7]).

Thanks,
Thomas.

simple patch to test wakeup interrupts on smdk5250 board.
Note: some of the smdk5250 boards may have a faulty SW8 button (for EINT31) and so EINT31 might not work on those smdk5250 boards.

---
 arch/arm/boot/dts/exynos5250-smdk5250.dts |    5 ++
 arch/arm/mach-exynos/Makefile             |    2 +-
 arch/arm/mach-exynos/button-smdk5250.c    |   72 +++++++++++++++++++++++++++++
 3 files changed, 78 insertions(+), 1 deletions(-)
 create mode 100644 arch/arm/mach-exynos/button-smdk5250.c
(quoted diff) +0 -0

b/arch/arm/boot/dts/exynos5250-smdk5250.dts
index 26d856b..eedec6a 100644

arch/arm/boot/dts/exynos5250-smdk5250.dts +5 -0
@@ -248,4 +248,9 @@
                        clock-frequency = <24000000>;
                };
        };
+
+       test-wkup {
+               compatible = "test_wkup";
+               gpios = <&gpx3 7 0>;
+       };
 };
arch/arm/mach-exynos/Makefile +1 -1
index ef6860b..d7640e3 100644
@@ -44,7 +44,7 @@ obj-$(CONFIG_MACH_SMDK4212)           += mach-smdk4x12.o
 obj-$(CONFIG_MACH_SMDK4412)            += mach-smdk4x12.o
 
 obj-$(CONFIG_MACH_EXYNOS4_DT)          += mach-exynos4-dt.o
-obj-$(CONFIG_MACH_EXYNOS5_DT)          += mach-exynos5-dt.o
+obj-$(CONFIG_MACH_EXYNOS5_DT)          += mach-exynos5-dt.o button-smdk5250.o
 
 # device support
 
(quoted diff) +0 -0

b/arch/arm/mach-exynos/button-smdk5250.c
new file mode 100644
index 0000000..2dbb5b4

arch/arm/mach-exynos/button-smdk5250.c new file +72 -0

72 lines not on this page · raw message

Quoted 3 lines

-Olof

#5 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Hi,

Quoted 57 lines · Thomas Abraham
Quoted 34 lines · Olof Johansson
Quoted 3 lines · Thomas Abraham

Add pinctrl device nodes for Exynos5250 SoC.

Replying to an old email of a patch that has been merged because it seems horribly broken.

Quoted 25 lines
arch/arm/boot/dts/exynos5250.dtsi +3 -0
index 581e57a..eb8d610 100644
@@ -18,6 +18,7 @@
 */
 
 /include/ "skeleton.dtsi"
+/include/ "exynos5250-pinctrl.dtsi"
 
 / {
      compatible = "samsung,exynos5250";
@@ -48,6 +49,8 @@
              mshc1 = &dwmmc_1;
              mshc2 = &dwmmc_2;
              mshc3 = &dwmmc_3;
+             pinctrl0 = &pinctrl_0;
+             pinctrl3 = &pinctrl_3;
      };
 
      gic:interrupt-controller at 10481000 {
@@ -79,6 +82,24 @@
              interrupts = <0 42 0>;
      };
 
Quoted 13 lines

arch/arm/boot/dts/exynos5250.dtsi line 94

Quoted 10 lines
arch/arm/boot/dts/exynos5250.dtsi +10 -0
+     pinctrl_0: pinctrl at 11400000 {
+             compatible = "samsung,pinctrl-exynos5250";
+             reg = <0x11400000 0x1000>;
+             interrupts = <0 46 0>;
+
+             wakup_eint: wakeup-interrupt-controller {
+                     compatible = "samsung,exynos4210-wakeup-eint";
+                     interrupt-parent = <&gic>;
+                     interrupts = <0 32 0>;
+             };

Typo, should be "wakeup_eint". And what happened to #interrupt-cells? And the interrupt map?

Hi Olof,

With the pinctrl driver, there is change in the way the wakeup interrupts are handled. Each of the four wakeup banks (GPX0 to GPX3) are now individual interrupt controllers (introduced by Tomasz Figa). The wakeup interrupts generated by GPX2 and GPX3 are muxed into the <0 32 0> interrupt of GIC.

Quoted 4 lines

So the interrupts-cells and interrupt map are not required in the above node. The label "wakup_eint" can actually to dropped and probably the node name "wakeup-interrupt-controller" should be renamed to avoid interpreting it as a interrupt controller node.

Yep, I was completely misled by the remaining existence of the wakup_eint [sic] label. I'll submit a patch to remove those.

Seems that things are working as appropriate with the gpio/pinctrl binding. It's a little trickier to find out which interrupt specifier to use since it requires one more lookup in the user manual, but that's alright.

Quoted 8 lines
Quoted 3 lines

Do you have an example of a tested user or a testcase for this? I'm trying to get interrupts going on these pins, and it's not looking like it's even close to working.

The following is a rudimentary patch with which I have tested wakeup interrupts GPX0[0] and GPX3[7] on smdk5250 board. The gpio number in the dts file can be changed to test wakeup interrupt on pins other than EINT31 (GPX3[7]).

Thanks!

-Olof

A message that is not in the archive (sent off-list or not yet received): CA+Ln22EafDes5Lrvpwg08HnyNRuo=Z2uHAg6VJDMjNon9=E_qQ@mail.gmail.com

#7 lore raw

PATCH 1/1 ARM: dts: add pinctrl nodes for Exynos5250 SoC

Oh screw that mobile GMail - seems like it now always sends plain + HTML...

Resending the post from a mail client working properly:

On Thursday 25 of April 2013 10:47:21 Tomasz Figa wrote:

Hi Olof,

W dniu czwartek, 25 kwietnia 2013 u?ytkownik Olof Johansson <[email protected]> napisa?:

Quoted 8 lines · Thomas Abraham
Quoted 3 lines

Add pinctrl device nodes for Exynos5250 SoC.

Replying to an old email of a patch that has been merged because it seems horribly broken.

As far as I can see in Kgene's tree, newer version of this patch has been merged.

I managed to already found a typo in that new version, though. The pinctrl2 block is located at 0x3860000 not 0x3680000, or at least this is what the manual says.

Quoted 2 lines

Review

Quoted 2 lines
(quoted diff) +0 -0

b/arch/arm/boot/dts/exynos5250.dtsi

Quoted 24 lines
Quoted 24 lines

index 581e57a..eb8d610 100644

arch/arm/boot/dts/exynos5250.dtsi +3 -0
@@ -18,6 +18,7 @@
 */
 
 /include/ "skeleton.dtsi"
+/include/ "exynos5250-pinctrl.dtsi"
 
 / {
      compatible = "samsung,exynos5250";
@@ -48,6 +49,8 @@
              mshc1 = &dwmmc_1;
              mshc2 = &dwmmc_2;
              mshc3 = &dwmmc_3;
+             pinctrl0 = &pinctrl_0;
+             pinctrl3 = &pinctrl_3;
      };
 
      gic:interrupt-controller at 10481000 {
@@ -79,6 +82,24 @@
              interrupts = <0 42 0>;
      };
 
Quoted 12 lines

arch/arm/boot/dts/exynos5250.dtsi line 94

Quoted 10 lines
arch/arm/boot/dts/exynos5250.dtsi +10 -0
+     pinctrl_0: pinctrl at 11400000 {
+             compatible = "samsung,pinctrl-exynos5250";
+             reg = <0x11400000 0x1000>;
+             interrupts = <0 46 0>;
+
+             wakup_eint: wakeup-interrupt-controller {
+                     compatible = "samsung,exynos4210-wakeup-eint";
+                     interrupt-parent = <&gic>;
+                     interrupts = <0 32 0>;
+             };

Typo, should be "wakeup_eint". And what happened to #interrupt-cells? And

the

Quoted 5 lines

interrupt map?

Do you have an example of a tested user or a testcase for this? I'm trying to get interrupts going on these pins, and it's not looking like it's even close to working.

I have extensively tested interrupt handling in pinctrl-driver when reworking it. Testing was done on Exynos4210 and Exynos4412, but Exynos5250 seems to follow exactly the same design of pinctrl block.

Could you specify a bit more precisely what is your use case (GPIO pin, driver, device tree node of interrupt user, etc.)?

Best regards,

Signature · 3 lines
Tomasz Figa
Samsung Poland R&D Center
SW Solution Development, Kernel and System Framework