Hello,

Hyungwon, please check my last changes added to those files:
- arch/arm/include/asm/arch-exynos/gpio.h
(Exynos4x12 gpio enum and exynos4x12_gpio_data.)
- arch/arm/include/asm/arch-exynos/cpu.h
(Exynos4x12 gpio base sub parts)

There was an issue with gaps between some of gpio banks, so I added sub parts definition and it was adequate to *pinctrl.dts and *pinctrl-uboot.dts description.

First problem is, that device-tree description has some specified order - and this is the init order (and next real gpio numbering order).

So if we have dts nodes like this:
- pinctrl@13400000 { }
- pinctrl@13410000 { }
- pinctrl@14000000 { }
-  ...
then it means, that gpio init should start from base 13400000 - which is "gpy70" tor the E5422... But there is one thing, which should be taken into account - "#include "exynos54xx-pinctrl-uboot.dtsi"", and actually the included file [...]uboot.dts, will define the gpio init order as:
- pinctrl@14010000 - gpa00, gpa10, ..., gph00
- pinctrl@13400000 - gpy70, gpx00, ..., gpx30 (gpx0->reg=<0xc00>)
- pinctrl@13410000 - gpc00, ..., gpy60
- pinctrl@14000000 - gpe00, ..., gpj40
- pinctrl@03860000 - gpz00

So, the above gpioXX bind order, should be equal to the enum exynos5420_gpio_pin { }. This is important, because if you type:

ODROID-XU3 # gpio toggle gpy00

then you will get the a result:

gpio: pin gpy00 (gpio 160) value is 0

Take a notice that gpy00 == gpio 160, but you defined it as 0 in your enum!
So any call to the gpio inside the code, like this one:

gpio_set_value(EXYNOS5420_GPIO_Y70, 0);

like the pinmux do - will pass wrong gpio number to the function.
And if you are lucky - some gpio numbers could work fine:)

On 11/17/2014 08:45 AM, Simon Glass wrote:
Hi Hyungwon,

On 14 November 2014 06:25, Hyungwon Hwang <human.hw...@samsung.com> wrote:
This patch fixes wrong GPIO information such as GPIO bank, table which
is used to convert GPIO name to index, bank base address, and etc.

Signed-off-by: Hyungwon Hwang <human.hw...@samsung.com>
Tested-by: Lukasz Majewski <l.majew...@samsung.com>
Acked-by: Lukasz Majewski <l.majew...@samsung.com>
Cc: Minkyu Kang <mk7.k...@samsung.com>
Cc: Lukasz Majewski <l.majew...@samsung.com>
---
Changes for v4:
- None

Changes for v5:
- None

Changes for v6:
- None

Changes for v7:
- None

Changes for v8:
- None

  arch/arm/include/asm/arch-exynos/cpu.h  |  11 +-
  arch/arm/include/asm/arch-exynos/gpio.h | 232 +++++++++++++++-----------------
  2 files changed, 117 insertions(+), 126 deletions(-)

diff --git a/arch/arm/include/asm/arch-exynos/cpu.h 
b/arch/arm/include/asm/arch-exynos/cpu.h
index 29674ad..48936de 100644
--- a/arch/arm/include/asm/arch-exynos/cpu.h
+++ b/arch/arm/include/asm/arch-exynos/cpu.h
@@ -148,7 +148,7 @@

  /* EXYNOS5420 */
  #define EXYNOS5420_AUDIOSS_BASE                0x03810000
-#define EXYNOS5420_GPIO_PART6_BASE     0x03860000
+#define EXYNOS5420_GPIO_PART5_BASE     0x03860000
  #define EXYNOS5420_PRO_ID              0x10000000
  #define EXYNOS5420_CLOCK_BASE          0x10010000
  #define EXYNOS5420_POWER_BASE          0x10040000
@@ -170,11 +170,10 @@
  #define EXYNOS5420_I2S_BASE            0x12D60000
  #define EXYNOS5420_PWMTIMER_BASE       0x12DD0000
  #define EXYNOS5420_SPI_ISP_BASE                0x131A0000
-#define EXYNOS5420_GPIO_PART2_BASE     0x13400000
-#define EXYNOS5420_GPIO_PART3_BASE     0x13400C00
-#define EXYNOS5420_GPIO_PART4_BASE     0x13410000
-#define EXYNOS5420_GPIO_PART5_BASE     0x14000000
-#define EXYNOS5420_GPIO_PART1_BASE     0x14010000
+#define EXYNOS5420_GPIO_PART1_BASE     0x13400000
+#define EXYNOS5420_GPIO_PART2_BASE     0x13410000
+#define EXYNOS5420_GPIO_PART3_BASE     0x14000000
+#define EXYNOS5420_GPIO_PART4_BASE     0x14010000
  #define EXYNOS5420_MIPI_DSIM_BASE      0x14500000
  #define EXYNOS5420_DP_BASE             0x145B0000

diff --git a/arch/arm/include/asm/arch-exynos/gpio.h 
b/arch/arm/include/asm/arch-exynos/gpio.h
index 9699954..aef897d 100644
--- a/arch/arm/include/asm/arch-exynos/gpio.h
+++ b/arch/arm/include/asm/arch-exynos/gpio.h
@@ -1042,83 +1042,7 @@ enum exynos5_gpio_pin {
  };

  enum exynos5420_gpio_pin {
-       /* GPIO_PART1_STARTS */
-       EXYNOS5420_GPIO_A00,            /* 0 */

Why does this order need to change? I think you might be trying to
remove the device tree work-around that we currently have. See
arch/arm/dts/exynos54xx-pinctrl-uboot.dtsi:

         /*
          * Replicate the ordering of arch/arm/include/asm/arch-exynos/gpio.h
          * TODO(s...@chromium.org): This ordering ceases to matter once GPIO
          * numbers are not needed in U-Boot for exynos.
          */
         pinctrl@14010000 {
                 #address-cells = <1>;
                 #size-cells = <0>;
         };
         pinctrl@13400000 {
                 #address-cells = <1>;
                 #size-cells = <0>;
                 gpy7 {
                 };

                 gpx0 {
                         reg = <0xc00>;
                 };
         };

Since you are changing things such that gpy7 comes first, I think you
need to update this file. But then don't you also need to update all
the numbering that we have in the various device tree files? For
example in exynos5420-peach-pit.dts:

ec-interrupt = <&gpio 93 1>; /* GPX1_5 */

The 93 will be wrong now I think - should it become 21?

I do have a vague plan to implement proper device tree support for
GPIOs using driver model, so you could do:

ec-interrupt = <&gpx1 5 GPIO_ACTIVE_LOW>;

The gpx1 bit is already there. We need to bring over the dt-binding
header from Linux, and adjust the driver model uclass to understand
GPIO nodes better.

But if you are not up for any of this, I wonder if you should just
change the ordering back?

See also my comments below.


I agree with Simon, please don't change the pin order in this enum.

-       EXYNOS5420_GPIO_A01,
-       EXYNOS5420_GPIO_A02,
-       EXYNOS5420_GPIO_A03,
-       EXYNOS5420_GPIO_A04,
-       EXYNOS5420_GPIO_A05,
-       EXYNOS5420_GPIO_A06,
-       EXYNOS5420_GPIO_A07,
-       EXYNOS5420_GPIO_A10,            /* 8 */
-       EXYNOS5420_GPIO_A11,
-       EXYNOS5420_GPIO_A12,
-       EXYNOS5420_GPIO_A13,
-       EXYNOS5420_GPIO_A14,
-       EXYNOS5420_GPIO_A15,
-       EXYNOS5420_GPIO_A16,
-       EXYNOS5420_GPIO_A17,
-       EXYNOS5420_GPIO_A20,            /* 16 0x10 */
-       EXYNOS5420_GPIO_A21,
-       EXYNOS5420_GPIO_A22,
-       EXYNOS5420_GPIO_A23,
-       EXYNOS5420_GPIO_A24,
-       EXYNOS5420_GPIO_A25,
-       EXYNOS5420_GPIO_A26,
-       EXYNOS5420_GPIO_A27,
-       EXYNOS5420_GPIO_B00,            /* 24 0x18 */
-       EXYNOS5420_GPIO_B01,
-       EXYNOS5420_GPIO_B02,
-       EXYNOS5420_GPIO_B03,
-       EXYNOS5420_GPIO_B04,
-       EXYNOS5420_GPIO_B05,
-       EXYNOS5420_GPIO_B06,
-       EXYNOS5420_GPIO_B07,
-       EXYNOS5420_GPIO_B10,            /* 32 0x20 */
-       EXYNOS5420_GPIO_B11,
-       EXYNOS5420_GPIO_B12,
-       EXYNOS5420_GPIO_B13,
-       EXYNOS5420_GPIO_B14,
-       EXYNOS5420_GPIO_B15,
-       EXYNOS5420_GPIO_B16,
-       EXYNOS5420_GPIO_B17,
-       EXYNOS5420_GPIO_B20,            /* 40 0x28 */
-       EXYNOS5420_GPIO_B21,
-       EXYNOS5420_GPIO_B22,
-       EXYNOS5420_GPIO_B23,
-       EXYNOS5420_GPIO_B24,
-       EXYNOS5420_GPIO_B25,
-       EXYNOS5420_GPIO_B26,
-       EXYNOS5420_GPIO_B27,
-       EXYNOS5420_GPIO_B30,            /* 48 0x30 */
-       EXYNOS5420_GPIO_B31,
-       EXYNOS5420_GPIO_B32,
-       EXYNOS5420_GPIO_B33,
-       EXYNOS5420_GPIO_B34,
-       EXYNOS5420_GPIO_B35,
-       EXYNOS5420_GPIO_B36,
-       EXYNOS5420_GPIO_B37,
-       EXYNOS5420_GPIO_B40,            /* 56 0x38 */
-       EXYNOS5420_GPIO_B41,
-       EXYNOS5420_GPIO_B42,
-       EXYNOS5420_GPIO_B43,
-       EXYNOS5420_GPIO_B44,
-       EXYNOS5420_GPIO_B45,
-       EXYNOS5420_GPIO_B46,
-       EXYNOS5420_GPIO_B47,
-       EXYNOS5420_GPIO_H00,            /* 64 0x40 */
-       EXYNOS5420_GPIO_H01,
-       EXYNOS5420_GPIO_H02,
-       EXYNOS5420_GPIO_H03,
-       EXYNOS5420_GPIO_H04,
-       EXYNOS5420_GPIO_H05,
-       EXYNOS5420_GPIO_H06,
-       EXYNOS5420_GPIO_H07,
-
-       /* GPIO PART 2 STARTS*/
-       EXYNOS5420_GPIO_MAX_PORT_PART_1,/* 72 0x48 */
-       EXYNOS5420_GPIO_Y70 = EXYNOS5420_GPIO_MAX_PORT_PART_1,
+       EXYNOS5420_GPIO_Y70,
         EXYNOS5420_GPIO_Y71,
         EXYNOS5420_GPIO_Y72,
         EXYNOS5420_GPIO_Y73,
@@ -1126,10 +1050,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y75,
         EXYNOS5420_GPIO_Y76,
         EXYNOS5420_GPIO_Y77,
-
-       /* GPIO PART 3 STARTS*/
-       EXYNOS5420_GPIO_MAX_PORT_PART_2,/* 80 0x50 */
-       EXYNOS5420_GPIO_X00 = EXYNOS5420_GPIO_MAX_PORT_PART_2,
+       EXYNOS5420_GPIO_X00,
         EXYNOS5420_GPIO_X01,
         EXYNOS5420_GPIO_X02,
         EXYNOS5420_GPIO_X03,
@@ -1137,7 +1058,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_X05,
         EXYNOS5420_GPIO_X06,
         EXYNOS5420_GPIO_X07,
-       EXYNOS5420_GPIO_X10,            /* 88 0x58 */
+       EXYNOS5420_GPIO_X10,
         EXYNOS5420_GPIO_X11,
         EXYNOS5420_GPIO_X12,
         EXYNOS5420_GPIO_X13,
@@ -1145,7 +1066,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_X15,
         EXYNOS5420_GPIO_X16,
         EXYNOS5420_GPIO_X17,
-       EXYNOS5420_GPIO_X20,            /* 96 0x60 */
+       EXYNOS5420_GPIO_X20,
         EXYNOS5420_GPIO_X21,
         EXYNOS5420_GPIO_X22,
         EXYNOS5420_GPIO_X23,
@@ -1153,7 +1074,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_X25,
         EXYNOS5420_GPIO_X26,
         EXYNOS5420_GPIO_X27,
-       EXYNOS5420_GPIO_X30,            /* 104 0x68 */
+       EXYNOS5420_GPIO_X30,
         EXYNOS5420_GPIO_X31,
         EXYNOS5420_GPIO_X32,
         EXYNOS5420_GPIO_X33,
@@ -1162,9 +1083,8 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_X36,
         EXYNOS5420_GPIO_X37,

-       /* GPIO PART 4 STARTS*/
-       EXYNOS5420_GPIO_MAX_PORT_PART_3,/* 112 0x70 */
-       EXYNOS5420_GPIO_C00 = EXYNOS5420_GPIO_MAX_PORT_PART_3,
+       EXYNOS5420_GPIO_MAX_PORT_PART_1,
+       EXYNOS5420_GPIO_C00 = EXYNOS5420_GPIO_MAX_PORT_PART_1,
         EXYNOS5420_GPIO_C01,
         EXYNOS5420_GPIO_C02,
         EXYNOS5420_GPIO_C03,
@@ -1172,7 +1092,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_C05,
         EXYNOS5420_GPIO_C06,
         EXYNOS5420_GPIO_C07,
-       EXYNOS5420_GPIO_C10,            /* 120 0x78 */
+       EXYNOS5420_GPIO_C10,
         EXYNOS5420_GPIO_C11,
         EXYNOS5420_GPIO_C12,
         EXYNOS5420_GPIO_C13,
@@ -1180,7 +1100,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_C15,
         EXYNOS5420_GPIO_C16,
         EXYNOS5420_GPIO_C17,
-       EXYNOS5420_GPIO_C20,            /* 128 0x80 */
+       EXYNOS5420_GPIO_C20,
         EXYNOS5420_GPIO_C21,
         EXYNOS5420_GPIO_C22,
         EXYNOS5420_GPIO_C23,
@@ -1188,7 +1108,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_C25,
         EXYNOS5420_GPIO_C26,
         EXYNOS5420_GPIO_C27,
-       EXYNOS5420_GPIO_C30,            /* 136 0x88 */
+       EXYNOS5420_GPIO_C30,
         EXYNOS5420_GPIO_C31,
         EXYNOS5420_GPIO_C32,
         EXYNOS5420_GPIO_C33,
@@ -1196,7 +1116,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_C35,
         EXYNOS5420_GPIO_C36,
         EXYNOS5420_GPIO_C37,
-       EXYNOS5420_GPIO_C40,            /* 144 0x90 */
+       EXYNOS5420_GPIO_C40,
         EXYNOS5420_GPIO_C41,
         EXYNOS5420_GPIO_C42,
         EXYNOS5420_GPIO_C43,
@@ -1204,7 +1124,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_C45,
         EXYNOS5420_GPIO_C46,
         EXYNOS5420_GPIO_C47,
-       EXYNOS5420_GPIO_D10,            /* 152 0x98 */
+       EXYNOS5420_GPIO_D10,
         EXYNOS5420_GPIO_D11,
         EXYNOS5420_GPIO_D12,
         EXYNOS5420_GPIO_D13,
@@ -1212,7 +1132,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_D15,
         EXYNOS5420_GPIO_D16,
         EXYNOS5420_GPIO_D17,
-       EXYNOS5420_GPIO_Y00,            /* 160 0xa0 */
+       EXYNOS5420_GPIO_Y00,
         EXYNOS5420_GPIO_Y01,
         EXYNOS5420_GPIO_Y02,
         EXYNOS5420_GPIO_Y03,
@@ -1220,7 +1140,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y05,
         EXYNOS5420_GPIO_Y06,
         EXYNOS5420_GPIO_Y07,
-       EXYNOS5420_GPIO_Y10,            /* 168 0xa8 */
+       EXYNOS5420_GPIO_Y10,
         EXYNOS5420_GPIO_Y11,
         EXYNOS5420_GPIO_Y12,
         EXYNOS5420_GPIO_Y13,
@@ -1228,7 +1148,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y15,
         EXYNOS5420_GPIO_Y16,
         EXYNOS5420_GPIO_Y17,
-       EXYNOS5420_GPIO_Y20,            /* 176 0xb0 */
+       EXYNOS5420_GPIO_Y20,
         EXYNOS5420_GPIO_Y21,
         EXYNOS5420_GPIO_Y22,
         EXYNOS5420_GPIO_Y23,
@@ -1236,7 +1156,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y25,
         EXYNOS5420_GPIO_Y26,
         EXYNOS5420_GPIO_Y27,
-       EXYNOS5420_GPIO_Y30,            /* 184 0xb8 */
+       EXYNOS5420_GPIO_Y30,
         EXYNOS5420_GPIO_Y31,
         EXYNOS5420_GPIO_Y32,
         EXYNOS5420_GPIO_Y33,
@@ -1244,7 +1164,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y35,
         EXYNOS5420_GPIO_Y36,
         EXYNOS5420_GPIO_Y37,
-       EXYNOS5420_GPIO_Y40,            /* 192 0xc0 */
+       EXYNOS5420_GPIO_Y40,
         EXYNOS5420_GPIO_Y41,
         EXYNOS5420_GPIO_Y42,
         EXYNOS5420_GPIO_Y43,
@@ -1252,7 +1172,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y45,
         EXYNOS5420_GPIO_Y46,
         EXYNOS5420_GPIO_Y47,
-       EXYNOS5420_GPIO_Y50,            /* 200 0xc8 */
+       EXYNOS5420_GPIO_Y50,
         EXYNOS5420_GPIO_Y51,
         EXYNOS5420_GPIO_Y52,
         EXYNOS5420_GPIO_Y53,
@@ -1260,7 +1180,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y55,
         EXYNOS5420_GPIO_Y56,
         EXYNOS5420_GPIO_Y57,
-       EXYNOS5420_GPIO_Y60,            /* 208 0xd0 */
+       EXYNOS5420_GPIO_Y60,
         EXYNOS5420_GPIO_Y61,
         EXYNOS5420_GPIO_Y62,
         EXYNOS5420_GPIO_Y63,
@@ -1269,9 +1189,8 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_Y66,
         EXYNOS5420_GPIO_Y67,

-       /* GPIO_PART5_STARTS */
-       EXYNOS5420_GPIO_MAX_PORT_PART_4,/* 216 0xd8 */
-       EXYNOS5420_GPIO_E00 = EXYNOS5420_GPIO_MAX_PORT_PART_4,
+       EXYNOS5420_GPIO_MAX_PORT_PART_2,
+       EXYNOS5420_GPIO_E00 = EXYNOS5420_GPIO_MAX_PORT_PART_2,
         EXYNOS5420_GPIO_E01,
         EXYNOS5420_GPIO_E02,
         EXYNOS5420_GPIO_E03,
@@ -1279,7 +1198,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_E05,
         EXYNOS5420_GPIO_E06,
         EXYNOS5420_GPIO_E07,
-       EXYNOS5420_GPIO_E10,            /* 224 0xe0 */
+       EXYNOS5420_GPIO_E10,
         EXYNOS5420_GPIO_E11,
         EXYNOS5420_GPIO_E12,
         EXYNOS5420_GPIO_E13,
@@ -1287,7 +1206,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_E15,
         EXYNOS5420_GPIO_E16,
         EXYNOS5420_GPIO_E17,
-       EXYNOS5420_GPIO_F00,            /* 232 0xe8 */
+       EXYNOS5420_GPIO_F00,
         EXYNOS5420_GPIO_F01,
         EXYNOS5420_GPIO_F02,
         EXYNOS5420_GPIO_F03,
@@ -1295,7 +1214,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_F05,
         EXYNOS5420_GPIO_F06,
         EXYNOS5420_GPIO_F07,
-       EXYNOS5420_GPIO_F10,            /* 240 0xf0 */
+       EXYNOS5420_GPIO_F10,
         EXYNOS5420_GPIO_F11,
         EXYNOS5420_GPIO_F12,
         EXYNOS5420_GPIO_F13,
@@ -1303,7 +1222,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_F15,
         EXYNOS5420_GPIO_F16,
         EXYNOS5420_GPIO_F17,
-       EXYNOS5420_GPIO_G00,            /* 248 0xf8 */
+       EXYNOS5420_GPIO_G00,
         EXYNOS5420_GPIO_G01,
         EXYNOS5420_GPIO_G02,
         EXYNOS5420_GPIO_G03,
@@ -1311,7 +1230,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_G05,
         EXYNOS5420_GPIO_G06,
         EXYNOS5420_GPIO_G07,
-       EXYNOS5420_GPIO_G10,            /* 256 0x100 */
+       EXYNOS5420_GPIO_G10,
         EXYNOS5420_GPIO_G11,
         EXYNOS5420_GPIO_G12,
         EXYNOS5420_GPIO_G13,
@@ -1319,7 +1238,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_G15,
         EXYNOS5420_GPIO_G16,
         EXYNOS5420_GPIO_G17,
-       EXYNOS5420_GPIO_G20,            /* 264 0x108 */
+       EXYNOS5420_GPIO_G20,
         EXYNOS5420_GPIO_G21,
         EXYNOS5420_GPIO_G22,
         EXYNOS5420_GPIO_G23,
@@ -1327,7 +1246,7 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_G25,
         EXYNOS5420_GPIO_G26,
         EXYNOS5420_GPIO_G27,
-       EXYNOS5420_GPIO_J40,            /* 272 0x110 */
+       EXYNOS5420_GPIO_J40,
         EXYNOS5420_GPIO_J41,
         EXYNOS5420_GPIO_J42,
         EXYNOS5420_GPIO_J43,
@@ -1336,15 +1255,89 @@ enum exynos5420_gpio_pin {
         EXYNOS5420_GPIO_J46,
         EXYNOS5420_GPIO_J47,

-       /* GPIO_PART6_STARTS */
-       EXYNOS5420_GPIO_MAX_PORT_PART_5,/* 280 0x118 */
-       EXYNOS5420_GPIO_Z0 = EXYNOS5420_GPIO_MAX_PORT_PART_5,
+       EXYNOS5420_GPIO_MAX_PORT_PART_3,
+       EXYNOS5420_GPIO_A00 = EXYNOS5420_GPIO_MAX_PORT_PART_3,
+       EXYNOS5420_GPIO_A01,
+       EXYNOS5420_GPIO_A02,
+       EXYNOS5420_GPIO_A03,
+       EXYNOS5420_GPIO_A04,
+       EXYNOS5420_GPIO_A05,
+       EXYNOS5420_GPIO_A06,
+       EXYNOS5420_GPIO_A07,
+       EXYNOS5420_GPIO_A10,
+       EXYNOS5420_GPIO_A11,
+       EXYNOS5420_GPIO_A12,
+       EXYNOS5420_GPIO_A13,
+       EXYNOS5420_GPIO_A14,
+       EXYNOS5420_GPIO_A15,
+       EXYNOS5420_GPIO_A16,
+       EXYNOS5420_GPIO_A17,
+       EXYNOS5420_GPIO_A20,
+       EXYNOS5420_GPIO_A21,
+       EXYNOS5420_GPIO_A22,
+       EXYNOS5420_GPIO_A23,
+       EXYNOS5420_GPIO_A24,
+       EXYNOS5420_GPIO_A25,
+       EXYNOS5420_GPIO_A26,
+       EXYNOS5420_GPIO_A27,
+       EXYNOS5420_GPIO_B00,
+       EXYNOS5420_GPIO_B01,
+       EXYNOS5420_GPIO_B02,
+       EXYNOS5420_GPIO_B03,
+       EXYNOS5420_GPIO_B04,
+       EXYNOS5420_GPIO_B05,
+       EXYNOS5420_GPIO_B06,
+       EXYNOS5420_GPIO_B07,
+       EXYNOS5420_GPIO_B10,
+       EXYNOS5420_GPIO_B11,
+       EXYNOS5420_GPIO_B12,
+       EXYNOS5420_GPIO_B13,
+       EXYNOS5420_GPIO_B14,
+       EXYNOS5420_GPIO_B15,
+       EXYNOS5420_GPIO_B16,
+       EXYNOS5420_GPIO_B17,
+       EXYNOS5420_GPIO_B20,
+       EXYNOS5420_GPIO_B21,
+       EXYNOS5420_GPIO_B22,
+       EXYNOS5420_GPIO_B23,
+       EXYNOS5420_GPIO_B24,
+       EXYNOS5420_GPIO_B25,
+       EXYNOS5420_GPIO_B26,
+       EXYNOS5420_GPIO_B27,
+       EXYNOS5420_GPIO_B30,
+       EXYNOS5420_GPIO_B31,
+       EXYNOS5420_GPIO_B32,
+       EXYNOS5420_GPIO_B33,
+       EXYNOS5420_GPIO_B34,
+       EXYNOS5420_GPIO_B35,
+       EXYNOS5420_GPIO_B36,
+       EXYNOS5420_GPIO_B37,
+       EXYNOS5420_GPIO_B40,
+       EXYNOS5420_GPIO_B41,
+       EXYNOS5420_GPIO_B42,
+       EXYNOS5420_GPIO_B43,
+       EXYNOS5420_GPIO_B44,
+       EXYNOS5420_GPIO_B45,
+       EXYNOS5420_GPIO_B46,
+       EXYNOS5420_GPIO_B47,
+       EXYNOS5420_GPIO_H00,
+       EXYNOS5420_GPIO_H01,
+       EXYNOS5420_GPIO_H02,
+       EXYNOS5420_GPIO_H03,
+       EXYNOS5420_GPIO_H04,
+       EXYNOS5420_GPIO_H05,
+       EXYNOS5420_GPIO_H06,
+       EXYNOS5420_GPIO_H07,
+
+       EXYNOS5420_GPIO_MAX_PORT_PART_4,
+       EXYNOS5420_GPIO_Z0 = EXYNOS5420_GPIO_MAX_PORT_PART_4,
         EXYNOS5420_GPIO_Z1,
         EXYNOS5420_GPIO_Z2,
         EXYNOS5420_GPIO_Z3,
         EXYNOS5420_GPIO_Z4,
         EXYNOS5420_GPIO_Z5,
         EXYNOS5420_GPIO_Z6,
+
         EXYNOS5420_GPIO_MAX_PORT
  };

@@ -1385,14 +1378,13 @@ static struct gpio_info 
exynos5_gpio_data[EXYNOS5_GPIO_NUM_PARTS] = {
         { EXYNOS5_GPIO_PART8_BASE, EXYNOS5_GPIO_MAX_PORT },
  };

-#define EXYNOS5420_GPIO_NUM_PARTS      6
+#define EXYNOS5420_GPIO_NUM_PARTS      5

And this code should be updated with additional parts like Exynos4x12 has. See the gap between gpy7 and gpx0. But this was actually for non-dm gpio calls - probably in the future those definitions could be removed.

  static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = {
         { EXYNOS5420_GPIO_PART1_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_1 },
         { EXYNOS5420_GPIO_PART2_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_2 },
         { EXYNOS5420_GPIO_PART3_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_3 },
         { EXYNOS5420_GPIO_PART4_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_4 },
-       { EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_5 },
-       { EXYNOS5420_GPIO_PART6_BASE, EXYNOS5420_GPIO_MAX_PORT },
+       { EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT },
  };

  static inline struct gpio_info *get_gpio_data(void)
@@ -1505,17 +1497,17 @@ static const struct gpio_name_num_table 
exynos5_gpio_table[] = {
  };

  static const struct gpio_name_num_table exynos5420_gpio_table[] = {
-       GPIO_ENTRY('a', EXYNOS5420_GPIO_A00, EXYNOS5420_GPIO_B00, 0),
-       GPIO_ENTRY('b', EXYNOS5420_GPIO_B00, EXYNOS5420_GPIO_H00, 0),
-       GPIO_ENTRY('h', EXYNOS5420_GPIO_H00, EXYNOS5420_GPIO_Y70, 0),
         GPIO_ENTRY('x', EXYNOS5420_GPIO_X00, EXYNOS5420_GPIO_C00, 0),
         GPIO_ENTRY('c', EXYNOS5420_GPIO_C00, EXYNOS5420_GPIO_D10, 0),
-       GPIO_ENTRY('d', EXYNOS5420_GPIO_D10, EXYNOS5420_GPIO_Y00, 010),
+       GPIO_ENTRY('d', EXYNOS5420_GPIO_D10, EXYNOS5420_GPIO_Y00, 0),
         GPIO_ENTRY('y', EXYNOS5420_GPIO_Y00, EXYNOS5420_GPIO_E00, 0),
         GPIO_ENTRY('e', EXYNOS5420_GPIO_E00, EXYNOS5420_GPIO_F00, 0),
         GPIO_ENTRY('f', EXYNOS5420_GPIO_F00, EXYNOS5420_GPIO_G00, 0),
         GPIO_ENTRY('g', EXYNOS5420_GPIO_G00, EXYNOS5420_GPIO_J40, 0),
-       GPIO_ENTRY('j', EXYNOS5420_GPIO_J40, EXYNOS5420_GPIO_Z0, 040),
+       GPIO_ENTRY('j', EXYNOS5420_GPIO_J40, EXYNOS5420_GPIO_A00, 0),
+       GPIO_ENTRY('a', EXYNOS5420_GPIO_A00, EXYNOS5420_GPIO_B00, 0),
+       GPIO_ENTRY('b', EXYNOS5420_GPIO_B00, EXYNOS5420_GPIO_H00, 0),
+       GPIO_ENTRY('h', EXYNOS5420_GPIO_H00, EXYNOS5420_GPIO_Z0, 0),
         GPIO_ENTRY('z', EXYNOS5420_GPIO_Z0, EXYNOS5420_GPIO_MAX_PORT, 0),
         { 0 }
  };

I don't believe these arrays are used anymore. You should be able to
create a patch to delete them.

Regards,
Simon


Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marc...@samsung.com
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to