The pinctrl bindings used by Linux are an incomplete description of the
hardware. It is possible in most cases to determine the register address
of each, but not in all cases. By adding an additional property we can
fix this, and avoid adding a table to U-Boot for every single Exynos
SOC.

Signed-off-by: Simon Glass <s...@chromium.org>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/arm/dts/exynos4210-pinctrl.dtsi |  1 +
 arch/arm/dts/exynos4210.dtsi         |  6 ++++++
 arch/arm/dts/exynos4x12-pinctrl.dtsi |  6 ++++++
 arch/arm/dts/exynos4x12.dtsi         |  8 ++++++++
 arch/arm/dts/exynos5250-pinctrl.dtsi |  4 ++++
 arch/arm/dts/exynos5250.dtsi         | 12 ++++++++++--
 arch/arm/dts/exynos5420-pinctrl.dtsi | 13 +++++++++++++
 arch/arm/dts/exynos5420.dtsi         | 12 +++++++++++-
 arch/arm/dts/exynos54xx.dtsi         | 10 ++++++++++
 9 files changed, 69 insertions(+), 3 deletions(-)

diff --git a/arch/arm/dts/exynos4210-pinctrl.dtsi 
b/arch/arm/dts/exynos4210-pinctrl.dtsi
index bda17f7..d98280f 100644
--- a/arch/arm/dts/exynos4210-pinctrl.dtsi
+++ b/arch/arm/dts/exynos4210-pinctrl.dtsi
@@ -220,6 +220,7 @@
                };
 
                gpy0: gpy0 {
+                       reg = <0xc00>;
                        gpio-controller;
                        #gpio-cells = <2>;
                };
diff --git a/arch/arm/dts/exynos4210.dtsi b/arch/arm/dts/exynos4210.dtsi
index 48ecd7a..f521a54 100644
--- a/arch/arm/dts/exynos4210.dtsi
+++ b/arch/arm/dts/exynos4210.dtsi
@@ -82,12 +82,16 @@
        };
 
        pinctrl_0: pinctrl@11400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4210-pinctrl";
                reg = <0x11400000 0x1000>;
                interrupts = <0 47 0>;
        };
 
        pinctrl_1: pinctrl@11000000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4210-pinctrl";
                reg = <0x11000000 0x1000>;
                interrupts = <0 46 0>;
@@ -100,6 +104,8 @@
        };
 
        pinctrl_2: pinctrl@03860000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4210-pinctrl";
                reg = <0x03860000 0x1000>;
        };
diff --git a/arch/arm/dts/exynos4x12-pinctrl.dtsi 
b/arch/arm/dts/exynos4x12-pinctrl.dtsi
index 93f3998..3d1b0b2 100644
--- a/arch/arm/dts/exynos4x12-pinctrl.dtsi
+++ b/arch/arm/dts/exynos4x12-pinctrl.dtsi
@@ -71,6 +71,7 @@
                };
 
                gpf0: gpf0 {
+                       reg = <0xc180>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -103,6 +104,7 @@
                };
 
                gpj0: gpj0 {
+                       reg = <0x240>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -120,6 +122,7 @@
        };
 
        pinctrl@11000000 {
+               reg = <0x40>;
                gpk0: gpk0 {
                        gpio-controller;
                        #gpio-cells = <2>;
@@ -177,6 +180,7 @@
                };
 
                gpm0: gpm0 {
+                       reg = <0x260>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -217,6 +221,7 @@
                };
 
                gpy0: gpy0 {
+                       reg = <0x120>;
                        gpio-controller;
                        #gpio-cells = <2>;
                };
@@ -252,6 +257,7 @@
                };
 
                gpx0: gpx0 {
+                       reg = <0xc00>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
diff --git a/arch/arm/dts/exynos4x12.dtsi b/arch/arm/dts/exynos4x12.dtsi
index bc46ad3..543c32c 100644
--- a/arch/arm/dts/exynos4x12.dtsi
+++ b/arch/arm/dts/exynos4x12.dtsi
@@ -61,12 +61,16 @@
        };
 
        pinctrl_0: pinctrl@11400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4x12-pinctrl";
                reg = <0x11400000 0x1000>;
                interrupts = <0 47 0>;
        };
 
        pinctrl_1: pinctrl@11000000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4x12-pinctrl";
                reg = <0x11000000 0x1000>;
                interrupts = <0 46 0>;
@@ -79,6 +83,8 @@
        };
 
        pinctrl_2: pinctrl@03860000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4x12-pinctrl";
                reg = <0x03860000 0x1000>;
                interrupt-parent = <&combiner>;
@@ -86,6 +92,8 @@
        };
 
        pinctrl_3: pinctrl@106E0000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos4x12-pinctrl";
                reg = <0x106E0000 0x1000>;
                interrupts = <0 72 0>;
diff --git a/arch/arm/dts/exynos5250-pinctrl.dtsi 
b/arch/arm/dts/exynos5250-pinctrl.dtsi
index 67755a1..f6068e3 100644
--- a/arch/arm/dts/exynos5250-pinctrl.dtsi
+++ b/arch/arm/dts/exynos5250-pinctrl.dtsi
@@ -154,6 +154,7 @@
                };
 
                gpc4: gpc4 {
+                       reg = <0x2e0>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -162,6 +163,7 @@
                };
 
                gpx0: gpx0 {
+                       reg = <0xc00>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -293,6 +295,7 @@
                };
 
                gpv2: gpv2 {
+                       reg = <0x060>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
@@ -309,6 +312,7 @@
                };
 
                gpv4: gpv4 {
+                       reg = <0xc0>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
index 03e2778..f17d288 100644
--- a/arch/arm/dts/exynos5250.dtsi
+++ b/arch/arm/dts/exynos5250.dtsi
@@ -5,7 +5,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-/include/ "exynos5.dtsi"
+#include "exynos5.dtsi"
 #include "exynos5250-pinctrl.dtsi"
 
 / {
@@ -17,6 +17,8 @@
        };
 
        pinctrl_0: pinctrl@11400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5250-pinctrl";
                reg = <0x11400000 0x1000>;
                interrupts = <0 46 0>;
@@ -29,18 +31,24 @@
        };
 
        pinctrl_1: pinctrl@13400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5250-pinctrl";
                reg = <0x13400000 0x1000>;
                interrupts = <0 45 0>;
        };
 
        pinctrl_2: pinctrl@10d10000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5250-pinctrl";
                reg = <0x10d10000 0x1000>;
                interrupts = <0 50 0>;
        };
 
        pinctrl_3: pinctrl@03860000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5250-pinctrl";
                reg = <0x03860000 0x1000>;
                interrupts = <0 47 0>;
@@ -49,7 +57,7 @@
        i2c@12ca0000 {
                #address-cells = <1>;
                #size-cells = <0>;
-               compatible = "samsung,s3c2440-i27c";
+               compatible = "samsung,s3c2440-i2c";
                reg = <0x12CA0000 0x100>;
                interrupts = <0 60 0>;
        };
diff --git a/arch/arm/dts/exynos5420-pinctrl.dtsi 
b/arch/arm/dts/exynos5420-pinctrl.dtsi
index b3e63d1..df31f37 100644
--- a/arch/arm/dts/exynos5420-pinctrl.dtsi
+++ b/arch/arm/dts/exynos5420-pinctrl.dtsi
@@ -13,6 +13,18 @@
 */
 
 / {
+       /* Replicate the ordering of arch/arm/include/asm/arch-exynos/gpio.h */
+       pinctrl@14010000 {
+       };
+       pinctrl@13400000 {
+       };
+       pinctrl@13410000 {
+       };
+       pinctrl@14000000 {
+       };
+       pinctrl@03860000 {
+       };
+
        pinctrl@13400000 {
                gpy7: gpy7 {
                        gpio-controller;
@@ -23,6 +35,7 @@
                };
 
                gpx0: gpx0 {
+                       reg = <0xc00>;
                        gpio-controller;
                        #gpio-cells = <2>;
 
diff --git a/arch/arm/dts/exynos5420.dtsi b/arch/arm/dts/exynos5420.dtsi
index 4baed72..5de86d4 100644
--- a/arch/arm/dts/exynos5420.dtsi
+++ b/arch/arm/dts/exynos5420.dtsi
@@ -5,7 +5,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-/include/ "exynos5.dtsi"
+#include "exynos5.dtsi"
 #include "exynos5420-pinctrl.dtsi"
 
 / {
@@ -22,6 +22,8 @@
        };
 
        pinctrl_0: pinctrl@13400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x13400000 0x1000>;
                interrupts = <0 45 0>;
@@ -34,24 +36,32 @@
        };
 
        pinctrl_1: pinctrl@13410000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x13410000 0x1000>;
                interrupts = <0 78 0>;
        };
 
        pinctrl_2: pinctrl@14000000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x14000000 0x1000>;
                interrupts = <0 46 0>;
        };
 
        pinctrl_3: pinctrl@14010000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x14010000 0x1000>;
                interrupts = <0 50 0>;
        };
 
        pinctrl_4: pinctrl@03860000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x03860000 0x1000>;
                interrupts = <0 47 0>;
diff --git a/arch/arm/dts/exynos54xx.dtsi b/arch/arm/dts/exynos54xx.dtsi
index 63210e4..c136b49 100644
--- a/arch/arm/dts/exynos54xx.dtsi
+++ b/arch/arm/dts/exynos54xx.dtsi
@@ -122,6 +122,8 @@
        };
 
        pinctrl_0: pinctrl@13400000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x13400000 0x1000>;
                interrupts = <0 45 0>;
@@ -134,24 +136,32 @@
        };
 
        pinctrl_1: pinctrl@13410000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x13410000 0x1000>;
                interrupts = <0 78 0>;
        };
 
        pinctrl_2: pinctrl@14000000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x14000000 0x1000>;
                interrupts = <0 46 0>;
        };
 
        pinctrl_3: pinctrl@14010000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x14010000 0x1000>;
                interrupts = <0 50 0>;
        };
 
        pinctrl_4: pinctrl@03860000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
                compatible = "samsung,exynos5420-pinctrl";
                reg = <0x03860000 0x1000>;
                interrupts = <0 47 0>;
-- 
2.0.0.526.g5318336

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to