Skip to contentSkip to conversation

Adds support for Exynos5422 odroid xu3 board

PATCH Superseded Hyungwon Hwang 2 participants 9 messages Oct 31, 2014 – Nov 4, 2014

Subsystems (3)

v1 of 11 Superseded Latest is v11 →

lore
Share & tools
lore
#0 lore raw

cover Adds support for Exynos5422 odroid xu3 board

This patchset adds support for Exynos5422 odroid xu3 board. I have done this work on the patchset submitted by Akshay Saraswat.

https://patchwork.ozlabs.org/patch/400043/

Hyungwon Hwang (4):
exynos5: fix GPIO information of exynos5420
Exynos5800: Add support for Exynos5800
odroid: make some macros common
Odroid-XU3: Add support for Odroid-XU3

 arch/arm/cpu/armv7/exynos/Kconfig       |   4 +
 arch/arm/dts/Makefile                   |   3 +-
 arch/arm/dts/exynos5422-odroidxu3.dts   |  72 +++++++++
 arch/arm/include/asm/arch-exynos/cpu.h  |  11 +-
 arch/arm/include/asm/arch-exynos/gpio.h | 261 +++++++++++++++++---------------
 board/samsung/odroid-xu3/Kconfig        |  12 ++
 board/samsung/odroid-xu3/MAINTAINERS    |   6 +
 board/samsung/odroid-xu3/Makefile       |   7 +
 board/samsung/odroid-xu3/odroid-xu3.c   | 132 ++++++++++++++++
 board/samsung/odroid-xu3/setup.h        | 115 ++++++++++++++
 board/samsung/odroid/odroid.c           |   1 +
 board/samsung/odroid/setup.h            |   8 -
 configs/odroid-xu3_defconfig            |   4 +
 drivers/gpio/s5p_gpio.c                 |   4 +-
 include/configs/odroid_xu3.h            |  73 +++++++++
 15 files changed, 576 insertions(+), 137 deletions(-)
 create mode 100644 arch/arm/dts/exynos5422-odroidxu3.dts
 create mode 100644 board/samsung/odroid-xu3/Kconfig
 create mode 100644 board/samsung/odroid-xu3/MAINTAINERS
 create mode 100644 board/samsung/odroid-xu3/Makefile
 create mode 100644 board/samsung/odroid-xu3/odroid-xu3.c
 create mode 100644 board/samsung/odroid-xu3/setup.h
 create mode 100644 configs/odroid-xu3_defconfig
 create mode 100644 include/configs/odroid_xu3.h
Signature · 1 line
1.8.3.2
#1 lore raw

PATCH 1/4 exynos5: fix GPIO information of exynos5420

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.

---
 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(-)
arch/arm/include/asm/arch-exynos/cpu.h +5 -6
index 7c5c4ff..da4ac6b 100644
@@ -139,7 +139,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
@@ -161,11 +161,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
 
arch/arm/include/asm/arch-exynos/gpio.h +112 -120

423 lines not on this page · raw message

Signature · 1 line
1.8.3.2
#2 lore raw

PATCH 1/4 exynos5: fix GPIO information of exynos5420

Quoted 27 lines · Hyungwon Hwang

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.

---
 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(-)
arch/arm/include/asm/arch-exynos/cpu.h +1 -2
index 7c5c4ff..da4ac6b 100644
@@ -139,7 +139,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
@@ -161,11 +161,10 @@
 #define EXYNOS5420_I2S_BASE		0x12D60000
 #define EXYNOS5420_PWMTIMER_BASE	0x12DD0000
 #define EXYNOS5420_SPI_ISP_BASE		0x131A0000
-#define EXYNOS5420_GPIO_PART2_BASE	0x13400000

arch/arm/include/asm/arch-exynos/cpu.h line 169

Quoted 10 lines
arch/arm/include/asm/arch-exynos/cpu.h +4 -4
-#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

What's wrong? It's sorted from A to Z.(GPA ~ GPZ)

Best Regards,
Jaehoon Chung

Quoted 458 lines
arch/arm/include/asm/arch-exynos/gpio.h +112 -120
index 32e045a..431ae3a 100644
@@ -1028,83 +1028,7 @@ enum exynos5_gpio_pin {
 };
 
 enum exynos5420_gpio_pin {
-	/* GPIO_PART1_STARTS */
-	EXYNOS5420_GPIO_A00,		/* 0 */
-	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,
@@ -1112,10 +1036,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,
@@ -1123,7 +1044,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,
@@ -1131,7 +1052,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,
@@ -1139,7 +1060,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,
@@ -1148,9 +1069,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,
@@ -1158,7 +1078,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,
@@ -1166,7 +1086,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,
@@ -1174,7 +1094,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,
@@ -1182,7 +1102,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,
@@ -1190,7 +1110,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,
@@ -1198,7 +1118,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,
@@ -1206,7 +1126,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,
@@ -1214,7 +1134,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,
@@ -1222,7 +1142,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,
@@ -1230,7 +1150,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,
@@ -1238,7 +1158,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,
@@ -1246,7 +1166,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,
@@ -1255,9 +1175,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,
@@ -1265,7 +1184,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,
@@ -1273,7 +1192,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,
@@ -1281,7 +1200,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,
@@ -1289,7 +1208,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,
@@ -1297,7 +1216,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,
@@ -1305,7 +1224,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,
@@ -1313,7 +1232,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,
@@ -1322,15 +1241,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
 };
 
@@ -1366,14 +1359,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
 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)
@@ -1486,17 +1478,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 }
 };
#3 lore raw

PATCH 1/4 exynos5: fix GPIO information of exynos5420

Dear Jaehoon Chung,

Quoted 33 lines · On Tue, 04 Nov 2014 13:51:04 +0900 Jaehoon Chung <[email protected]> wrote:
Quoted 32 lines · Hyungwon Hwang

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.

---
 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(-)

(quoted diff) +0 -0

b/arch/arm/include/asm/arch-exynos/cpu.h index 7c5c4ff..da4ac6b 100644

arch/arm/include/asm/arch-exynos/cpu.h +1 -6
@@ -139,7 +139,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
@@ -161,11 +161,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
Quoted 9 lines

arch/arm/include/asm/arch-exynos/cpu.h line 169

Quoted 6 lines
arch/arm/include/asm/arch-exynos/cpu.h +4 -0
+#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

What's wrong? It's sorted from A to Z.(GPA ~ GPZ)

As I analyzed the code (gpio_set_value() in drivers/gpio/s5p_gpio.c) the GPIO must not be sorted by alphabetically, but be done by the address of them. Isn't it?

Quoted 452 lines

Best Regards,
Jaehoon Chung

Quoted 450 lines
(quoted diff) +0 -0

b/arch/arm/include/asm/arch-exynos/gpio.h index 32e045a..431ae3a 100644

arch/arm/include/asm/arch-exynos/gpio.h +108 -120
@@ -1028,83 +1028,7 @@ enum exynos5_gpio_pin {
 };
 
 enum exynos5420_gpio_pin {
-	/* GPIO_PART1_STARTS */
-	EXYNOS5420_GPIO_A00,		/* 0 */
-	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,
@@ -1112,10 +1036,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,
@@ -1123,7 +1044,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,
@@ -1131,7 +1052,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,
@@ -1139,7 +1060,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,
@@ -1148,9 +1069,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,
@@ -1158,7 +1078,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,
@@ -1166,7 +1086,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,
@@ -1174,7 +1094,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,
@@ -1182,7 +1102,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,
@@ -1190,7 +1110,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,
@@ -1198,7 +1118,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,
@@ -1206,7 +1126,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,
@@ -1214,7 +1134,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,
@@ -1222,7 +1142,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,
@@ -1230,7 +1150,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,
@@ -1238,7 +1158,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,
@@ -1246,7 +1166,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,
@@ -1255,9 +1175,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,
@@ -1265,7 +1184,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,
@@ -1273,7 +1192,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,
@@ -1281,7 +1200,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,
@@ -1289,7 +1208,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,
@@ -1297,7 +1216,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,
@@ -1305,7 +1224,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,
@@ -1313,7 +1232,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,
@@ -1322,15 +1241,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
 };
 
@@ -1366,14 +1359,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
 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)
@@ -1486,17 +1478,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),
Quoted 9 lines

arch/arm/include/asm/arch-exynos/gpio.h static const struct gpio_name_num_table exynos5_gpio_table[] = { · line 1494

Quoted 8 lines
arch/arm/include/asm/arch-exynos/gpio.h +4 -0
+	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 }
 };

Best regards,
Hyungwon Hwang

Signature · 4 lines
Hyungwon Hwang
S/W Platform Team, Software Center
Samsung Electronics
human.hwang at samsung.com
#4 lore raw

PATCH 2/4 Exynos5800: Add support for Exynos5800

In reply to Hyungwon Hwang

The gpios of Exynos5800 are different from that of Exynos5420. This patch adds the gpio information and table of Exynos5800.

---
 arch/arm/include/asm/arch-exynos/gpio.h | 31 +++++++++++++++++++++++++++++--
 drivers/gpio/s5p_gpio.c                 |  4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
arch/arm/include/asm/arch-exynos/gpio.h +29 -2
index 431ae3a..8f82ef0 100644
@@ -1368,11 +1368,21 @@ static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = {
 	{ EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT },
 };
 
+#define EXYNOS5800_GPIO_NUM_PARTS	4
+static struct gpio_info exynos5800_gpio_data[EXYNOS5800_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 },
+};
+
 static inline struct gpio_info *get_gpio_data(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return exynos5420_gpio_data;
+		else if (proid_is_exynos5800())
+			return exynos5800_gpio_data;
 		else
 			return exynos5_gpio_data;
 	} else if (cpu_is_exynos4()) {
@@ -1388,8 +1398,10 @@ static inline struct gpio_info *get_gpio_data(void)
 static inline unsigned int get_bank_num(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return EXYNOS5420_GPIO_NUM_PARTS;
+		if (proid_is_exynos5800())
+			return EXYNOS5800_GPIO_NUM_PARTS;
 		else
 			return EXYNOS5_GPIO_NUM_PARTS;
 	} else if (cpu_is_exynos4()) {
@@ -1493,6 +1505,21 @@ static const struct gpio_name_num_table exynos5420_gpio_table[] = {
 	{ 0 }
 };
 
+static const struct gpio_name_num_table exynos5800_gpio_table[] = {
+	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, 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_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),
+	{ 0 }
+};
+
 void gpio_cfg_pin(int gpio, int cfg);
 void gpio_set_pull(int gpio, int mode);
 void gpio_set_drv(int gpio, int mode);
drivers/gpio/s5p_gpio.c +3 -1
index bcf44eb..bed7cd7 100644
@@ -57,11 +57,13 @@ static inline int s5p_name_to_gpio(const char *name)
 	 */
 #if defined(CONFIG_EXYNOS4) || defined(CONFIG_EXYNOS5)
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800()) {
+		if (proid_is_exynos5420()) {
 			tabp = exynos5420_gpio_table;
 			irregular_bank_name = 'y';
 			irregular_set_number = '7';
 			irregular_bank_base = EXYNOS5420_GPIO_Y70;
+		} else if (proid_is_exynos5800()) {
+			tabp = exynos5800_gpio_table;
 		} else {
 			tabp = exynos5_gpio_table;
 			irregular_bank_name = 'c';
Signature · 1 line
1.8.3.2
#5 lore raw

PATCH 2/4 Exynos5800: Add support for Exynos5800

Quoted 14 lines · Hyungwon Hwang

The gpios of Exynos5800 are different from that of Exynos5420. This patch adds the gpio information and table of Exynos5800.

---
 arch/arm/include/asm/arch-exynos/gpio.h | 31 +++++++++++++++++++++++++++++--
 drivers/gpio/s5p_gpio.c                 |  4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
arch/arm/include/asm/arch-exynos/gpio.h +0 -0
index 431ae3a..8f82ef0 100644

arch/arm/include/asm/arch-exynos/gpio.h static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = { · line 1376

Quoted 9 lines
arch/arm/include/asm/arch-exynos/gpio.h +6 -0
@@ -1368,11 +1368,21 @@ static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = {
 	{ EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT },
 };
 
+#define EXYNOS5800_GPIO_NUM_PARTS	4
+static struct gpio_info exynos5800_gpio_data[EXYNOS5800_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 },

you refer to other gpio_data.
You mentioned "different from that of exynos5420", but used EXYNOS5420_GPIO_XXX. It's strange.

Quoted 14 lines
arch/arm/include/asm/arch-exynos/gpio.h +5 -1
+};
+
 static inline struct gpio_info *get_gpio_data(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return exynos5420_gpio_data;
+		else if (proid_is_exynos5800())
+			return exynos5800_gpio_data;
 		else
 			return exynos5_gpio_data;
 	} else if (cpu_is_exynos4()) {

arch/arm/include/asm/arch-exynos/gpio.h static inline struct gpio_info *get_gpio_data(void) · line 1403

Quoted 7 lines
arch/arm/include/asm/arch-exynos/gpio.h +2 -1
@@ -1388,8 +1398,10 @@ static inline struct gpio_info *get_gpio_data(void)
 static inline unsigned int get_bank_num(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return EXYNOS5420_GPIO_NUM_PARTS;
+		if (proid_is_exynos5800())

else if (prod_is_exynos5800())

Best Regard,
Jaehoon Chung

Quoted 46 lines
arch/arm/include/asm/arch-exynos/gpio.h +16 -0
+			return EXYNOS5800_GPIO_NUM_PARTS;
 		else
 			return EXYNOS5_GPIO_NUM_PARTS;
 	} else if (cpu_is_exynos4()) {
@@ -1493,6 +1505,21 @@ static const struct gpio_name_num_table exynos5420_gpio_table[] = {
 	{ 0 }
 };
 
+static const struct gpio_name_num_table exynos5800_gpio_table[] = {
+	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, 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_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),
+	{ 0 }
+};
+
 void gpio_cfg_pin(int gpio, int cfg);
 void gpio_set_pull(int gpio, int mode);
 void gpio_set_drv(int gpio, int mode);
drivers/gpio/s5p_gpio.c +3 -1
index bcf44eb..bed7cd7 100644
@@ -57,11 +57,13 @@ static inline int s5p_name_to_gpio(const char *name)
 	 */
 #if defined(CONFIG_EXYNOS4) || defined(CONFIG_EXYNOS5)
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800()) {
+		if (proid_is_exynos5420()) {
 			tabp = exynos5420_gpio_table;
 			irregular_bank_name = 'y';
 			irregular_set_number = '7';
 			irregular_bank_base = EXYNOS5420_GPIO_Y70;
+		} else if (proid_is_exynos5800()) {
+			tabp = exynos5800_gpio_table;
 		} else {
 			tabp = exynos5_gpio_table;
 			irregular_bank_name = 'c';
#6 lore raw

PATCH 2/4 Exynos5800: Add support for Exynos5800

Dear Jaehoon Chung,

Quoted 18 lines · On Tue, 04 Nov 2014 13:56:00 +0900 Jaehoon Chung <[email protected]> wrote:
Quoted 17 lines · Hyungwon Hwang

The gpios of Exynos5800 are different from that of Exynos5420. This patch adds the gpio information and table of Exynos5800.

---
 arch/arm/include/asm/arch-exynos/gpio.h | 31

+++++++++++++++++++++++++++++-- drivers/gpio/s5p_gpio.c |
4 +++- 2 files changed, 32 insertions(+), 3 deletions(-)

(quoted diff) +0 -0

b/arch/arm/include/asm/arch-exynos/gpio.h index 431ae3a..8f82ef0 100644

arch/arm/include/asm/arch-exynos/gpio.h +0 -0
@@ -1368,11 +1368,21 @@ static struct gpio_info

exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] =
{ { EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT }, };

Quoted 11 lines

arch/arm/include/asm/arch-exynos/gpio.h static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = { · line 1376

Quoted 6 lines
arch/arm/include/asm/arch-exynos/gpio.h +6 -0
+#define EXYNOS5800_GPIO_NUM_PARTS	4
+static struct gpio_info exynos5800_gpio_data[EXYNOS5800_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 },

you refer to other gpio_data.
You mentioned "different from that of exynos5420", but used EXYNOS5420_GPIO_XXX. It's strange.

You're right. This patch is wrong. This one will be removed from next version.

Quoted 65 lines
Quoted 14 lines
arch/arm/include/asm/arch-exynos/gpio.h +5 -1
+};
+
 static inline struct gpio_info *get_gpio_data(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return exynos5420_gpio_data;
+		else if (proid_is_exynos5800())
+			return exynos5800_gpio_data;
 		else
 			return exynos5_gpio_data;
 	} else if (cpu_is_exynos4()) {

arch/arm/include/asm/arch-exynos/gpio.h static inline struct gpio_info *get_gpio_data(void) · line 1403

Quoted 7 lines
arch/arm/include/asm/arch-exynos/gpio.h +2 -1
@@ -1388,8 +1398,10 @@ static inline struct gpio_info *get_gpio_data(void)
 static inline unsigned int get_bank_num(void)
 {
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800())
+		if (proid_is_exynos5420())
 			return EXYNOS5420_GPIO_NUM_PARTS;
+		if (proid_is_exynos5800())

else if (prod_is_exynos5800())

Best Regard,
Jaehoon Chung

Quoted 38 lines
arch/arm/include/asm/arch-exynos/gpio.h +16 -0
+			return EXYNOS5800_GPIO_NUM_PARTS;
 		else
 			return EXYNOS5_GPIO_NUM_PARTS;
 	} else if (cpu_is_exynos4()) {
@@ -1493,6 +1505,21 @@ static const struct gpio_name_num_table
 exynos5420_gpio_table[] = { { 0 }
 };
 
+static const struct gpio_name_num_table exynos5800_gpio_table[] = {
+	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, 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_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),
+	{ 0 }
+};
+
 void gpio_cfg_pin(int gpio, int cfg);
 void gpio_set_pull(int gpio, int mode);
 void gpio_set_drv(int gpio, int mode);
drivers/gpio/s5p_gpio.c +1 -1
index bcf44eb..bed7cd7 100644
@@ -57,11 +57,13 @@ static inline int s5p_name_to_gpio(const char *name)
 	 */
 #if defined(CONFIG_EXYNOS4) || defined(CONFIG_EXYNOS5)
 	if (cpu_is_exynos5()) {
-		if (proid_is_exynos5420() || proid_is_exynos5800()) {
+		if (proid_is_exynos5420()) {
 			tabp = exynos5420_gpio_table;
 			irregular_bank_name = 'y';
Quoted 9 lines

drivers/gpio/s5p_gpio.c static inline int s5p_name_to_gpio(const char *name) · line 69

Quoted 8 lines
drivers/gpio/s5p_gpio.c +2 -0
 			irregular_set_number = '7';
 			irregular_bank_base = EXYNOS5420_GPIO_Y70;
+		} else if (proid_is_exynos5800()) {
+			tabp = exynos5800_gpio_table;
 		} else {
 			tabp = exynos5_gpio_table;
 			irregular_bank_name = 'c';

Best regards,
Hyungwon Hwang

Signature · 4 lines
Hyungwon Hwang
S/W Platform Team, Software Center
Samsung Electronics
human.hwang at samsung.com
#7 lore raw

PATCH 3/4 odroid: make some macros common

In reply to Hyungwon Hwang

Some macros are used commonly for odroid series boards. This patch makes a common header file to congregate that kinds of macros. Even though there are more macros which can be common, they are not become common. Because they are a part of a register, the readability is better when they are defined at a place.

---
 board/samsung/odroid/odroid.c | 1 +
 board/samsung/odroid/setup.h  | 8 --------
 2 files changed, 1 insertion(+), 8 deletions(-)
board/samsung/odroid/odroid.c +1 -0
index 5edb250..ccbb3a0 100644
@@ -18,6 +18,7 @@
 #include <usb.h>
 #include <usb/s3c_udc.h>
 #include <samsung/misc.h>
+#include "../setup.h"
 #include "setup.h"
 
 DECLARE_GLOBAL_DATA_PTR;
board/samsung/odroid/setup.h +0 -8
index 3e48dad..35f7af5 100644
@@ -8,14 +8,6 @@
 #ifndef __ODROIDU3_SETUP__
 #define __ODROIDU3_SETUP__
 
-/* A/M PLL_CON0 */
-#define SDIV(x)                 ((x) & 0x7)
-#define PDIV(x)                 (((x) & 0x3f) << 8)
-#define MDIV(x)                 (((x) & 0x3ff) << 16)
-#define FSEL(x)                 (((x) & 0x1) << 27)
-#define PLL_LOCKED_BIT          (0x1 << 29)
-#define PLL_ENABLE(x)           (((x) & 0x1) << 31)
-
 /* CLK_SRC_CPU */
 #define MUX_APLL_SEL(x)         ((x) & 0x1)
 #define MUX_CORE_SEL(x)         (((x) & 0x1) << 16)
Signature · 1 line
1.8.3.2
#8 lore raw

PATCH 4/4 Odroid-XU3: Add support for Odroid-XU3

In reply to Hyungwon Hwang

This patch adds support for Odroid-XU3.

---
 arch/arm/cpu/armv7/exynos/Kconfig     |   4 ++
 arch/arm/dts/Makefile                 |   3 +-
 arch/arm/dts/exynos5422-odroidxu3.dts |  72 +++++++++++++++++++
 board/samsung/odroid-xu3/Kconfig      |  12 ++++
 board/samsung/odroid-xu3/MAINTAINERS  |   6 ++
 board/samsung/odroid-xu3/Makefile     |   7 ++
 board/samsung/odroid-xu3/odroid-xu3.c | 132 ++++++++++++++++++++++++++++++++++
 board/samsung/odroid-xu3/setup.h      | 115 +++++++++++++++++++++++++++++
 configs/odroid-xu3_defconfig          |   4 ++
 include/configs/odroid_xu3.h          |  73 +++++++++++++++++++
 10 files changed, 427 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/exynos5422-odroidxu3.dts
 create mode 100644 board/samsung/odroid-xu3/Kconfig
 create mode 100644 board/samsung/odroid-xu3/MAINTAINERS
 create mode 100644 board/samsung/odroid-xu3/Makefile
 create mode 100644 board/samsung/odroid-xu3/odroid-xu3.c
 create mode 100644 board/samsung/odroid-xu3/setup.h
 create mode 100644 configs/odroid-xu3_defconfig
 create mode 100644 include/configs/odroid_xu3.h
arch/arm/cpu/armv7/exynos/Kconfig +4 -0
index 3a25fee..a47cb34 100644
@@ -22,6 +22,9 @@ config TARGET_TRATS2
 config TARGET_ODROID
 	bool "Exynos4412 Odroid board"
 
+config TARGET_ODROID_XU3
+	bool "Exynos5422 Odroid board"
+
 config TARGET_ARNDALE
 	bool "Exynos5250 Arndale board"
 	select OF_CONTROL if !SPL_BUILD
@@ -60,6 +63,7 @@ source "board/samsung/universal_c210/Kconfig"
 source "board/samsung/origen/Kconfig"
 source "board/samsung/trats2/Kconfig"
 source "board/samsung/odroid/Kconfig"
+source "board/samsung/odroid-xu3/Kconfig"
 source "board/samsung/arndale/Kconfig"
 source "board/samsung/smdk5250/Kconfig"
 source "board/samsung/smdk5420/Kconfig"
arch/arm/dts/Makefile +2 -1
index 2dcfcc0..66191f9 100644
@@ -12,7 +12,8 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
 	exynos5250-smdk5250.dtb \
 	exynos5420-smdk5420.dtb \
 	exynos5420-peach-pit.dtb \
-	exynos5800-peach-pi.dtb
+	exynos5800-peach-pi.dtb \
+	exynos5422-odroidxu3.dtb
 dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
 	tegra20-medcom-wide.dtb \
 	tegra20-paz00.dtb \
arch/arm/dts/exynos5422-odroidxu3.dts new file +72 -0

72 lines not on this page · raw message

board/samsung/odroid-xu3/Kconfig new file +12 -0
new file mode 100644
index 0000000..6159692
@@ -0,0 +1,12 @@
+if TARGET_ODROID_XU3
+
+config SYS_BOARD
+	default "odroid-xu3"
+
+config SYS_VENDOR
+	default "samsung"
+
+config SYS_CONFIG_NAME
+	default "odroid_xu3"
+
+endif
board/samsung/odroid-xu3/MAINTAINERS new file +6 -0
new file mode 100644
index 0000000..50cf928
@@ -0,0 +1,6 @@
+ODROID-XU3 BOARD
+M:	Hyungwon Hwang <[email protected]>
+S:	Maintained
+F:	board/samsung/odroid-xu3/
+F:	include/configs/odroid_xu3.h
+F:	configs/odroid-xu3_defconfig
board/samsung/odroid-xu3/Makefile new file +7 -0
new file mode 100644
index 0000000..85ae5c5
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	:= odroid-xu3.o
board/samsung/odroid-xu3/odroid-xu3.c new file +132 -0

132 lines not on this page · raw message

board/samsung/odroid-xu3/setup.h new file +115 -0

115 lines not on this page · raw message

configs/odroid-xu3_defconfig new file +4 -0
new file mode 100644
index 0000000..74aa0cf
@@ -0,0 +1,4 @@
+CONFIG_ARM=y
+CONFIG_ARCH_EXYNOS=y
+CONFIG_TARGET_ODROID_XU3=y
+CONFIG_DEFAULT_DEVICE_TREE="exynos5422-odroidxu3"
include/configs/odroid_xu3.h new file +73 -0

73 lines not on this page · raw message

Signature · 1 line
1.8.3.2