summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2013-05-17 02:57:17 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-07-10 20:09:54 +0200
commitea9c98d454e4ea60452de1bbe38dfeea857c3142 (patch)
tree7415183beed8945e8feb0174c5114ffba3f36649
parent919c8044255f83c7f86023c561a20e1b2d05a2ce (diff)
downloadcoreboot-ea9c98d454e4ea60452de1bbe38dfeea857c3142.tar.xz
exynos5420: Replace the 5250 GPIO code with code that should work on 5420.
Change-Id: Iac6615240e94c74037afc801169c32d3ebc4ac03 Signed-off-by: Gabe Black <gabeblack@chromium.org> Reviewed-on: http://review.coreboot.org/3648 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--src/cpu/samsung/exynos5420/cpu.h10
-rw-r--r--src/cpu/samsung/exynos5420/gpio.h430
2 files changed, 213 insertions, 227 deletions
diff --git a/src/cpu/samsung/exynos5420/cpu.h b/src/cpu/samsung/exynos5420/cpu.h
index 62ff424611..7cdd35e38f 100644
--- a/src/cpu/samsung/exynos5420/cpu.h
+++ b/src/cpu/samsung/exynos5420/cpu.h
@@ -55,11 +55,7 @@
#define EXYNOS5_ACE_SFR_BASE 0x10830000
#define EXYNOS5_DMC_PHY0_BASE 0x10C00000
#define EXYNOS5_DMC_PHY1_BASE 0x10C10000
-#define EXYNOS5_GPIO_PART4_BASE 0x10D10000 /* V00..V37 */
-#define EXYNOS5_GPIO_PART5_BASE 0x10D100C0 /* V40..V47 */
#define EXYNOS5_DMC_CTRL_BASE 0x10DD0000
-#define EXYNOS5_GPIO_PART1_BASE 0x11400000 /* A00..Y67 */
-#define EXYNOS5_GPIO_PART2_BASE 0x11400c00 /* X00..X37 */
#define EXYNOS5_USB_HOST_EHCI_BASE 0x12110000
#define EXYNOS5_USBPHY_BASE 0x12130000
#define EXYNOS5_USBOTG_BASE 0x12140000
@@ -76,7 +72,11 @@
#define EXYNOS5_PWMTIMER_BASE 0x12DD0000
#define EXYNOS5_SPI_ISP_BASE 0x131A0000
#define EXYNOS5_I2S_BASE 0x12D60000
-#define EXYNOS5_GPIO_PART3_BASE 0x13400000 /* E00..H17 */
+#define EXYNOS5_GPIO_PART3_BASE 0x13410000 /* C00..Y67 */
+#define EXYNOS5_GPIO_PART1_BASE 0x13400000 /* Y70..Y77 */
+#define EXYNOS5_GPIO_PART2_BASE 0x13400c00 /* X00..X37 */
+#define EXYNOS5_GPIO_PART4_BASE 0x14000000 /* E00..J47 */
+#define EXYNOS5_GPIO_PART5_BASE 0x14010000 /* A00..H07 */
#define EXYNOS5_FIMD_BASE 0x14400000
#define EXYNOS5_DISP1_CTRL_BASE 0x14420000
#define EXYNOS5_MIPI_DSI1_BASE 0x14500000
diff --git a/src/cpu/samsung/exynos5420/gpio.h b/src/cpu/samsung/exynos5420/gpio.h
index 0787826f01..0011904eb5 100644
--- a/src/cpu/samsung/exynos5420/gpio.h
+++ b/src/cpu/samsung/exynos5420/gpio.h
@@ -52,10 +52,12 @@ struct gpio_bank {
#define GPIO_DRV_FAST 0x0
#define GPIO_DRV_SLOW 0x1
-#define EXYNOS5_GPIO_BASE0 0x11400000
-#define EXYNOS5_GPIO_BASE1 0x13400000
-#define EXYNOS5_GPIO_BASE2 0x10d10000
-#define EXYNOS5_GPIO_BASE3 0x03860000
+#define EXYNOS5_GPIO_BASE0 0x13400000
+#define EXYNOS5_GPIO_BASE1 0x13400c00
+#define EXYNOS5_GPIO_BASE2 0x13410000
+#define EXYNOS5_GPIO_BASE3 0x14000000
+#define EXYNOS5_GPIO_BASE4 0x14010000
+#define EXYNOS5_GPIO_BASE5 0x03860000
enum exynos5_gpio_port {
/*
@@ -64,59 +66,59 @@ enum exynos5_gpio_port {
*/
/* base == EXYNOS_GPIO_BASE0 */
- EXYNOS5_GPA0 = EXYNOS5_GPIO_BASE0 + 0x0000,
- EXYNOS5_GPA1 = EXYNOS5_GPIO_BASE0 + 0x0020,
- EXYNOS5_GPA2 = EXYNOS5_GPIO_BASE0 + 0x0040,
-
- EXYNOS5_GPB0 = EXYNOS5_GPIO_BASE0 + 0x0060,
- EXYNOS5_GPB1 = EXYNOS5_GPIO_BASE0 + 0x0080,
- EXYNOS5_GPB2 = EXYNOS5_GPIO_BASE0 + 0x00a0,
- EXYNOS5_GPB3 = EXYNOS5_GPIO_BASE0 + 0x00c0,
-
- EXYNOS5_GPC0 = EXYNOS5_GPIO_BASE0 + 0x00e0,
- EXYNOS5_GPC1 = EXYNOS5_GPIO_BASE0 + 0x0100,
- EXYNOS5_GPC2 = EXYNOS5_GPIO_BASE0 + 0x0120,
- EXYNOS5_GPC3 = EXYNOS5_GPIO_BASE0 + 0x0140,
-
- EXYNOS5_GPD0 = EXYNOS5_GPIO_BASE0 + 0x0160,
- EXYNOS5_GPD1 = EXYNOS5_GPIO_BASE0 + 0x0180,
-
- EXYNOS5_GPY0 = EXYNOS5_GPIO_BASE0 + 0x01a0,
- EXYNOS5_GPY1 = EXYNOS5_GPIO_BASE0 + 0x01c0,
- EXYNOS5_GPY2 = EXYNOS5_GPIO_BASE0 + 0x01e0,
- EXYNOS5_GPY3 = EXYNOS5_GPIO_BASE0 + 0x0200,
- EXYNOS5_GPY4 = EXYNOS5_GPIO_BASE0 + 0x0220,
- EXYNOS5_GPY5 = EXYNOS5_GPIO_BASE0 + 0x0240,
- EXYNOS5_GPY6 = EXYNOS5_GPIO_BASE0 + 0x0260,
-
- EXYNOS5_GPX0 = EXYNOS5_GPIO_BASE0 + 0x0c00,
- EXYNOS5_GPX1 = EXYNOS5_GPIO_BASE0 + 0x0c20,
- EXYNOS5_GPX2 = EXYNOS5_GPIO_BASE0 + 0x0c40,
- EXYNOS5_GPX3 = EXYNOS5_GPIO_BASE0 + 0x0c60,
+ EXYNOS5_GPY7 = EXYNOS5_GPIO_BASE0 + 0x0000,
/* base == EXYNOS_GPIO_BASE1 */
- EXYNOS5_GPE0 = EXYNOS5_GPIO_BASE1 + 0x0000,
- EXYNOS5_GPE1 = EXYNOS5_GPIO_BASE1 + 0x0020,
-
- EXYNOS5_GPF0 = EXYNOS5_GPIO_BASE1 + 0x0040,
- EXYNOS5_GPF1 = EXYNOS5_GPIO_BASE1 + 0x0060,
-
- EXYNOS5_GPG0 = EXYNOS5_GPIO_BASE1 + 0x0080,
- EXYNOS5_GPG1 = EXYNOS5_GPIO_BASE1 + 0x00a0,
- EXYNOS5_GPG2 = EXYNOS5_GPIO_BASE1 + 0x00c0,
-
- EXYNOS5_GPH0 = EXYNOS5_GPIO_BASE1 + 0x00e0,
- EXYNOS5_GPH1 = EXYNOS5_GPIO_BASE1 + 0x0100,
+ EXYNOS5_GPX0 = EXYNOS5_GPIO_BASE1 + 0x0000,
+ EXYNOS5_GPX1 = EXYNOS5_GPIO_BASE1 + 0x0020,
+ EXYNOS5_GPX2 = EXYNOS5_GPIO_BASE1 + 0x0040,
+ EXYNOS5_GPX3 = EXYNOS5_GPIO_BASE1 + 0x0060,
/* base == EXYNOS_GPIO_BASE2 */
- EXYNOS5_GPV0 = EXYNOS5_GPIO_BASE2 + 0x0000,
- EXYNOS5_GPV1 = EXYNOS5_GPIO_BASE2 + 0x0020,
- EXYNOS5_GPV2 = EXYNOS5_GPIO_BASE2 + 0x0060,
- EXYNOS5_GPV3 = EXYNOS5_GPIO_BASE2 + 0x0080,
- EXYNOS5_GPV4 = EXYNOS5_GPIO_BASE2 + 0x00c0,
-
- /* base == EXYNOS_GPIO_BASE3 */
- EXYNOS5_GPZ = EXYNOS5_GPIO_BASE3 + 0x0000,
+ EXYNOS5_GPC0 = EXYNOS5_GPIO_BASE2 + 0x0000,
+ EXYNOS5_GPC1 = EXYNOS5_GPIO_BASE2 + 0x0020,
+ EXYNOS5_GPC2 = EXYNOS5_GPIO_BASE2 + 0x0040,
+ EXYNOS5_GPC3 = EXYNOS5_GPIO_BASE2 + 0x0060,
+ EXYNOS5_GPC4 = EXYNOS5_GPIO_BASE2 + 0x0080,
+
+ EXYNOS5_GPD1 = EXYNOS5_GPIO_BASE2 + 0x00a0,
+
+ EXYNOS5_GPY0 = EXYNOS5_GPIO_BASE2 + 0x00c0,
+ EXYNOS5_GPY1 = EXYNOS5_GPIO_BASE2 + 0x00e0,
+ EXYNOS5_GPY2 = EXYNOS5_GPIO_BASE2 + 0x0100,
+ EXYNOS5_GPY3 = EXYNOS5_GPIO_BASE2 + 0x0120,
+ EXYNOS5_GPY4 = EXYNOS5_GPIO_BASE2 + 0x0140,
+ EXYNOS5_GPY5 = EXYNOS5_GPIO_BASE2 + 0x0160,
+ EXYNOS5_GPY6 = EXYNOS5_GPIO_BASE2 + 0x0180,
+
+ /* base == EXYNOS5_GPIO_BASE3 */
+ EXYNOS5_GPE0 = EXYNOS5_GPIO_BASE3 + 0x0000,
+ EXYNOS5_GPE1 = EXYNOS5_GPIO_BASE3 + 0x0020,
+
+ EXYNOS5_GPF0 = EXYNOS5_GPIO_BASE3 + 0x0040,
+ EXYNOS5_GPF1 = EXYNOS5_GPIO_BASE3 + 0x0060,
+
+ EXYNOS5_GPG0 = EXYNOS5_GPIO_BASE3 + 0x0080,
+ EXYNOS5_GPG1 = EXYNOS5_GPIO_BASE3 + 0x00a0,
+ EXYNOS5_GPG2 = EXYNOS5_GPIO_BASE3 + 0x00c0,
+
+ EXYNOS5_GPJ4 = EXYNOS5_GPIO_BASE3 + 0x00e0,
+
+ /* base == EXYNOS5_GPIO_BASE4 */
+ EXYNOS5_GPA0 = EXYNOS5_GPIO_BASE4 + 0x0000,
+ EXYNOS5_GPA1 = EXYNOS5_GPIO_BASE4 + 0x0020,
+ EXYNOS5_GPA2 = EXYNOS5_GPIO_BASE4 + 0x0040,
+
+ EXYNOS5_GPB0 = EXYNOS5_GPIO_BASE4 + 0x0060,
+ EXYNOS5_GPB1 = EXYNOS5_GPIO_BASE4 + 0x0080,
+ EXYNOS5_GPB2 = EXYNOS5_GPIO_BASE4 + 0x00a0,
+ EXYNOS5_GPB3 = EXYNOS5_GPIO_BASE4 + 0x00c0,
+ EXYNOS5_GPB4 = EXYNOS5_GPIO_BASE4 + 0x00e0,
+
+ EXYNOS5_GPH0 = EXYNOS5_GPIO_BASE4 + 0x0100,
+
+ /* base == EXYNOS5_GPIO_BASE5 */
+ EXYNOS5_GPZ0 = EXYNOS5_GPIO_BASE5 + 0x0000,
};
enum {
@@ -127,63 +129,53 @@ enum {
/* A list of valid GPIO numbers for the asm-generic/gpio.h interface */
enum exynos5_gpio_pin {
/* GPIO_PART1_STARTS */
- GPIO_A00,
- GPIO_A01,
- GPIO_A02,
- GPIO_A03,
- GPIO_A04,
- GPIO_A05,
- GPIO_A06,
- GPIO_A07,
- GPIO_A10,
- GPIO_A11,
- GPIO_A12,
- GPIO_A13,
- GPIO_A14,
- GPIO_A15,
- GPIO_A16,
- GPIO_A17,
- GPIO_A20,
- GPIO_A21,
- GPIO_A22,
- GPIO_A23,
- GPIO_A24,
- GPIO_A25,
- GPIO_A26,
- GPIO_A27,
- GPIO_B00, /* 0x18 */
- GPIO_B01,
- GPIO_B02,
- GPIO_B03,
- GPIO_B04,
- GPIO_B05,
- GPIO_B06,
- GPIO_B07,
- GPIO_B10,
- GPIO_B11,
- GPIO_B12,
- GPIO_B13,
- GPIO_B14,
- GPIO_B15,
- GPIO_B16,
- GPIO_B17,
- GPIO_B20,
- GPIO_B21,
- GPIO_B22,
- GPIO_B23,
- GPIO_B24,
- GPIO_B25,
- GPIO_B26,
- GPIO_B27,
- GPIO_B30,
- GPIO_B31,
- GPIO_B32,
- GPIO_B33,
- GPIO_B34,
- GPIO_B35,
- GPIO_B36,
- GPIO_B37,
- GPIO_C00, /* 0x38 */
+ GPIO_Y70,
+ GPIO_Y71,
+ GPIO_Y72,
+ GPIO_Y73,
+ GPIO_Y74,
+ GPIO_Y75,
+ GPIO_Y76,
+ GPIO_Y77,
+
+ /* GPIO_PART2_STARTS */
+ GPIO_MAX_PORT_PART_1,
+ GPIO_X00 = GPIO_MAX_PORT_PART_1, /* 0x08 */
+ GPIO_X01,
+ GPIO_X02,
+ GPIO_X03,
+ GPIO_X04,
+ GPIO_X05,
+ GPIO_X06,
+ GPIO_X07,
+ GPIO_X10,
+ GPIO_X11,
+ GPIO_X12,
+ GPIO_X13,
+ GPIO_X14,
+ GPIO_X15,
+ GPIO_X16,
+ GPIO_X17,
+ GPIO_X20,
+ GPIO_X21,
+ GPIO_X22,
+ GPIO_X23,
+ GPIO_X24,
+ GPIO_X25,
+ GPIO_X26,
+ GPIO_X27,
+ GPIO_X30,
+ GPIO_X31,
+ GPIO_X32,
+ GPIO_X33,
+ GPIO_X34,
+ GPIO_X35,
+ GPIO_X36,
+ GPIO_X37,
+
+ /* GPIO_PART3_STARTS */
+ GPIO_MAX_PORT_PART_2,
+ GPIO_C00 = GPIO_MAX_PORT_PART_2, /* 0x28 */
GPIO_C01,
GPIO_C02,
GPIO_C03,
@@ -215,15 +207,16 @@ enum exynos5_gpio_pin {
GPIO_C35,
GPIO_C36,
GPIO_C37,
- GPIO_D00, /* 0x58 */
- GPIO_D01,
- GPIO_D02,
- GPIO_D03,
- GPIO_D04,
- GPIO_D05,
- GPIO_D06,
- GPIO_D07,
- GPIO_D10,
+ GPIO_C40,
+ GPIO_C41,
+ GPIO_C42,
+ GPIO_C43,
+ GPIO_C44,
+ GPIO_C45,
+ GPIO_C46,
+ GPIO_C47,
+
+ GPIO_D10, /* 0x50 */
GPIO_D11,
GPIO_D12,
GPIO_D13,
@@ -231,7 +224,8 @@ enum exynos5_gpio_pin {
GPIO_D15,
GPIO_D16,
GPIO_D17,
- GPIO_Y00, /* 0x68 */
+
+ GPIO_Y00, /* 0x58 */
GPIO_Y01,
GPIO_Y02,
GPIO_Y03,
@@ -288,44 +282,9 @@ enum exynos5_gpio_pin {
GPIO_Y66,
GPIO_Y67,
- /* GPIO_PART2_STARTS */
- GPIO_MAX_PORT_PART_1,
- GPIO_X00 = GPIO_MAX_PORT_PART_1, /* 0xa0 */
- GPIO_X01,
- GPIO_X02,
- GPIO_X03,
- GPIO_X04,
- GPIO_X05,
- GPIO_X06,
- GPIO_X07,
- GPIO_X10,
- GPIO_X11,
- GPIO_X12,
- GPIO_X13,
- GPIO_X14,
- GPIO_X15,
- GPIO_X16,
- GPIO_X17,
- GPIO_X20,
- GPIO_X21,
- GPIO_X22,
- GPIO_X23,
- GPIO_X24,
- GPIO_X25,
- GPIO_X26,
- GPIO_X27,
- GPIO_X30,
- GPIO_X31,
- GPIO_X32,
- GPIO_X33,
- GPIO_X34,
- GPIO_X35,
- GPIO_X36,
- GPIO_X37,
-
- /* GPIO_PART3_STARTS */
- GPIO_MAX_PORT_PART_2,
- GPIO_E00 = GPIO_MAX_PORT_PART_2, /* 0xc0 */
+ /* GPIO_PART4_STARTS */
+ GPIO_MAX_PORT_PART_3,
+ GPIO_E00 = GPIO_MAX_PORT_PART_3, /* 0x90 */
GPIO_E01,
GPIO_E02,
GPIO_E03,
@@ -341,7 +300,8 @@ enum exynos5_gpio_pin {
GPIO_E15,
GPIO_E16,
GPIO_E17,
- GPIO_F00, /* 0xd0 */
+
+ GPIO_F00, /* 0xa0 */
GPIO_F01,
GPIO_F02,
GPIO_F03,
@@ -357,7 +317,8 @@ enum exynos5_gpio_pin {
GPIO_F15,
GPIO_F16,
GPIO_F17,
- GPIO_G00,
+
+ GPIO_G00, /* 0xb0 */
GPIO_G01,
GPIO_G02,
GPIO_G03,
@@ -381,7 +342,85 @@ enum exynos5_gpio_pin {
GPIO_G25,
GPIO_G26,
GPIO_G27,
- GPIO_H00,
+
+ GPIO_J40, /* 0xc8 */
+ GPIO_J41,
+ GPIO_J42,
+ GPIO_J43,
+ GPIO_J44,
+ GPIO_J45,
+ GPIO_J46,
+ GPIO_J47,
+
+ /* GPIO_PART5_STARTS */
+ GPIO_MAX_PORT_PART_4,
+ GPIO_A00 = GPIO_MAX_PORT_PART_4, /* 0xd0 */
+ GPIO_A01,
+ GPIO_A02,
+ GPIO_A03,
+ GPIO_A04,
+ GPIO_A05,
+ GPIO_A06,
+ GPIO_A07,
+ GPIO_A10,
+ GPIO_A11,
+ GPIO_A12,
+ GPIO_A13,
+ GPIO_A14,
+ GPIO_A15,
+ GPIO_A16,
+ GPIO_A17,
+ GPIO_A20,
+ GPIO_A21,
+ GPIO_A22,
+ GPIO_A23,
+ GPIO_A24,
+ GPIO_A25,
+ GPIO_A26,
+ GPIO_A27,
+
+ GPIO_B00, /* 0xe8 */
+ GPIO_B01,
+ GPIO_B02,
+ GPIO_B03,
+ GPIO_B04,
+ GPIO_B05,
+ GPIO_B06,
+ GPIO_B07,
+ GPIO_B10,
+ GPIO_B11,
+ GPIO_B12,
+ GPIO_B13,
+ GPIO_B14,
+ GPIO_B15,
+ GPIO_B16,
+ GPIO_B17,
+ GPIO_B20,
+ GPIO_B21,
+ GPIO_B22,
+ GPIO_B23,
+ GPIO_B24,
+ GPIO_B25,
+ GPIO_B26,
+ GPIO_B27,
+ GPIO_B30,
+ GPIO_B31,
+ GPIO_B32,
+ GPIO_B33,
+ GPIO_B34,
+ GPIO_B35,
+ GPIO_B36,
+ GPIO_B37,
+ GPIO_B40,
+ GPIO_B41,
+ GPIO_B42,
+ GPIO_B43,
+ GPIO_B44,
+ GPIO_B45,
+ GPIO_B46,
+ GPIO_B47,
+
+ GPIO_H00, /* 0x110 */
GPIO_H01,
GPIO_H02,
GPIO_H03,
@@ -389,70 +428,17 @@ enum exynos5_gpio_pin {
GPIO_H05,
GPIO_H06,
GPIO_H07,
- GPIO_H10,
- GPIO_H11,
- GPIO_H12,
- GPIO_H13,
- GPIO_H14,
- GPIO_H15,
- GPIO_H16,
- GPIO_H17,
-
- /* GPIO_PART4_STARTS */
- GPIO_MAX_PORT_PART_3,
- GPIO_V00 = GPIO_MAX_PORT_PART_3,
- GPIO_V01,
- GPIO_V02,
- GPIO_V03,
- GPIO_V04,
- GPIO_V05,
- GPIO_V06,
- GPIO_V07,
- GPIO_V10,
- GPIO_V11,
- GPIO_V12,
- GPIO_V13,
- GPIO_V14,
- GPIO_V15,
- GPIO_V16,
- GPIO_V17,
- GPIO_V20,
- GPIO_V21,
- GPIO_V22,
- GPIO_V23,
- GPIO_V24,
- GPIO_V25,
- GPIO_V26,
- GPIO_V27,
- GPIO_V30,
- GPIO_V31,
- GPIO_V32,
- GPIO_V33,
- GPIO_V34,
- GPIO_V35,
- GPIO_V36,
- GPIO_V37,
-
- /* GPIO_PART5_STARTS */
- GPIO_MAX_PORT_PART_4,
- GPIO_V40 = GPIO_MAX_PORT_PART_4,
- GPIO_V41,
- GPIO_V42,
- GPIO_V43,
- GPIO_V44,
- GPIO_V45,
- GPIO_V46,
- GPIO_V47,
/* GPIO_PART6_STARTS */
GPIO_MAX_PORT_PART_5,
- GPIO_Z0 = GPIO_MAX_PORT_PART_5,
- GPIO_Z1,
- GPIO_Z2,
- GPIO_Z3,
- GPIO_Z4,
- GPIO_Z5,
- GPIO_Z6,
+ GPIO_Z00 = GPIO_MAX_PORT_PART_5, /* 0x118 */
+ GPIO_Z01,
+ GPIO_Z02,
+ GPIO_Z03,
+ GPIO_Z04,
+ GPIO_Z05,
+ GPIO_Z06,
+ GPIO_Z07,
GPIO_MAX_PORT
};