/* * (C) Copyright 2010 Samsung Electronics * Minkyu Kang * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __ASM_ARCH_GPIO_H #define __ASM_ARCH_GPIO_H #ifndef __ASSEMBLY__ struct s5p_gpio_bank { unsigned int con; unsigned int dat; unsigned int pull; unsigned int drv; unsigned int pdn_con; unsigned int pdn_pull; unsigned char res1[8]; }; /* GPIO pins per bank */ #define GPIO_PER_BANK 8 /* A list of valid GPIO numbers for the asm-generic/gpio.h interface */ enum exynos4_gpio_pin { /* GPIO_PART1_STARTS */ EXYNOS4_GPIO_A00, /* 0 */ EXYNOS4_GPIO_A01, EXYNOS4_GPIO_A02, EXYNOS4_GPIO_A03, EXYNOS4_GPIO_A04, EXYNOS4_GPIO_A05, EXYNOS4_GPIO_A06, EXYNOS4_GPIO_A07, EXYNOS4_GPIO_A10, /* 8 */ EXYNOS4_GPIO_A11, EXYNOS4_GPIO_A12, EXYNOS4_GPIO_A13, EXYNOS4_GPIO_A14, EXYNOS4_GPIO_A15, EXYNOS4_GPIO_A16, EXYNOS4_GPIO_A17, EXYNOS4_GPIO_B0, /* 16 0x10 */ EXYNOS4_GPIO_B1, EXYNOS4_GPIO_B2, EXYNOS4_GPIO_B3, EXYNOS4_GPIO_B4, EXYNOS4_GPIO_B5, EXYNOS4_GPIO_B6, EXYNOS4_GPIO_B7, EXYNOS4_GPIO_C00, /* 24 0x18 */ EXYNOS4_GPIO_C01, EXYNOS4_GPIO_C02, EXYNOS4_GPIO_C03, EXYNOS4_GPIO_C04, EXYNOS4_GPIO_C05, EXYNOS4_GPIO_C06, EXYNOS4_GPIO_C07, EXYNOS4_GPIO_C10, /* 32 0x20*/ EXYNOS4_GPIO_C11, EXYNOS4_GPIO_C12, EXYNOS4_GPIO_C13, EXYNOS4_GPIO_C14, EXYNOS4_GPIO_C15, EXYNOS4_GPIO_C16, EXYNOS4_GPIO_C17, EXYNOS4_GPIO_D00, /* 40 0x28 */ EXYNOS4_GPIO_D01, EXYNOS4_GPIO_D02, EXYNOS4_GPIO_D03, EXYNOS4_GPIO_D04, EXYNOS4_GPIO_D05, EXYNOS4_GPIO_D06, EXYNOS4_GPIO_D07, EXYNOS4_GPIO_D10, /* 48 0x30 */ EXYNOS4_GPIO_D11, EXYNOS4_GPIO_D12, EXYNOS4_GPIO_D13, EXYNOS4_GPIO_D14, EXYNOS4_GPIO_D15, EXYNOS4_GPIO_D16, EXYNOS4_GPIO_D17, EXYNOS4_GPIO_E00, /* 56 0x38 */ EXYNOS4_GPIO_E01, EXYNOS4_GPIO_E02, EXYNOS4_GPIO_E03, EXYNOS4_GPIO_E04, EXYNOS4_GPIO_E05, EXYNOS4_GPIO_E06, EXYNOS4_GPIO_E07, EXYNOS4_GPIO_E10, /* 64 0x40 */ EXYNOS4_GPIO_E11, EXYNOS4_GPIO_E12, EXYNOS4_GPIO_E13, EXYNOS4_GPIO_E14, EXYNOS4_GPIO_E15, EXYNOS4_GPIO_E16, EXYNOS4_GPIO_E17, EXYNOS4_GPIO_E20, /* 72 0x48 */ EXYNOS4_GPIO_E21, EXYNOS4_GPIO_E22, EXYNOS4_GPIO_E23, EXYNOS4_GPIO_E24, EXYNOS4_GPIO_E25, EXYNOS4_GPIO_E26, EXYNOS4_GPIO_E27, EXYNOS4_GPIO_E30, /* 80 0x50 */ EXYNOS4_GPIO_E31, EXYNOS4_GPIO_E32, EXYNOS4_GPIO_E33, EXYNOS4_GPIO_E34, EXYNOS4_GPIO_E35, EXYNOS4_GPIO_E36, EXYNOS4_GPIO_E37, EXYNOS4_GPIO_E40, /* 88 0x58 */ EXYNOS4_GPIO_E41, EXYNOS4_GPIO_E42, EXYNOS4_GPIO_E43, EXYNOS4_GPIO_E44, EXYNOS4_GPIO_E45, EXYNOS4_GPIO_E46, EXYNOS4_GPIO_E47, EXYNOS4_GPIO_F00, /* 96 0x60 */ EXYNOS4_GPIO_F01, EXYNOS4_GPIO_F02, EXYNOS4_GPIO_F03, EXYNOS4_GPIO_F04, EXYNOS4_GPIO_F05, EXYNOS4_GPIO_F06, EXYNOS4_GPIO_F07, EXYNOS4_GPIO_F10, /* 104 0x68 */ EXYNOS4_GPIO_F11, EXYNOS4_GPIO_F12, EXYNOS4_GPIO_F13, EXYNOS4_GPIO_F14, EXYNOS4_GPIO_F15, EXYNOS4_GPIO_F16, EXYNOS4_GPIO_F17, EXYNOS4_GPIO_F20, /* 112 0x70 */ EXYNOS4_GPIO_F21, EXYNOS4_GPIO_F22, EXYNOS4_GPIO_F23, EXYNOS4_GPIO_F24, EXYNOS4_GPIO_F25, EXYNOS4_GPIO_F26, EXYNOS4_GPIO_F27, EXYNOS4_GPIO_F30, /* 120 0x78 */ EXYNOS4_GPIO_F31, EXYNOS4_GPIO_F32, EXYNOS4_GPIO_F33, EXYNOS4_GPIO_F34, EXYNOS4_GPIO_F35, EXYNOS4_GPIO_F36, EXYNOS4_GPIO_F37, /* GPIO_PART2_STARTS */ EXYNOS4_GPIO_MAX_PORT_PART_1, /* 128 0x80 */ EXYNOS4_GPIO_J00 = EXYNOS4_GPIO_MAX_PORT_PART_1, EXYNOS4_GPIO_J01, EXYNOS4_GPIO_J02, EXYNOS4_GPIO_J03, EXYNOS4_GPIO_J04, EXYNOS4_GPIO_J05, EXYNOS4_GPIO_J06, EXYNOS4_GPIO_J07, EXYNOS4_GPIO_J10, /* 136 0x88 */ EXYNOS4_GPIO_J11, EXYNOS4_GPIO_J12, EXYNOS4_GPIO_J13, EXYNOS4_GPIO_J14, EXYNOS4_GPIO_J15, EXYNOS4_GPIO_J16, EXYNOS4_GPIO_J17, EXYNOS4_GPIO_K00, /* 144 0x90 */ EXYNOS4_GPIO_K01, EXYNOS4_GPIO_K02, EXYNOS4_GPIO_K03, EXYNOS4_GPIO_K04, EXYNOS4_GPIO_K05, EXYNOS4_GPIO_K06, EXYNOS4_GPIO_K07, EXYNOS4_GPIO_K10, /* 152 0x98 */ EXYNOS4_GPIO_K11, EXYNOS4_GPIO_K12, EXYNOS4_GPIO_K13, EXYNOS4_GPIO_K14, EXYNOS4_GPIO_K15, EXYNOS4_GPIO_K16, EXYNOS4_GPIO_K17, EXYNOS4_GPIO_K20, /* 160 0xA0 */ EXYNOS4_GPIO_K21, EXYNOS4_GPIO_K22, EXYNOS4_GPIO_K23, EXYNOS4_GPIO_K24, EXYNOS4_GPIO_K25, EXYNOS4_GPIO_K26, EXYNOS4_GPIO_K27, EXYNOS4_GPIO_K30, /* 168 0xA8 */ EXYNOS4_GPIO_K31, EXYNOS4_GPIO_K32, EXYNOS4_GPIO_K33, EXYNOS4_GPIO_K34, EXYNOS4_GPIO_K35, EXYNOS4_GPIO_K36, EXYNOS4_GPIO_K37, EXYNOS4_GPIO_L00, /* 176 0xB0 */ EXYNOS4_GPIO_L01, EXYNOS4_GPIO_L02, EXYNOS4_GPIO_L03, EXYNOS4_GPIO_L04, EXYNOS4_GPIO_L05, EXYNOS4_GPIO_L06, EXYNOS4_GPIO_L07, EXYNOS4_GPIO_L10, /* 184 0xB8 */ EXYNOS4_GPIO_L11, EXYNOS4_GPIO_L12, EXYNOS4_GPIO_L13, EXYNOS4_GPIO_L14, EXYNOS4_GPIO_L15, EXYNOS4_GPIO_L16, EXYNOS4_GPIO_L17, EXYNOS4_GPIO_L20, /* 192 0xC0 */ EXYNOS4_GPIO_L21, EXYNOS4_GPIO_L22, EXYNOS4_GPIO_L23, EXYNOS4_GPIO_L24, EXYNOS4_GPIO_L25, EXYNOS4_GPIO_L26, EXYNOS4_GPIO_L27, EXYNOS4_GPIO_Y00, /* 200 0xC8 */ EXYNOS4_GPIO_Y01, EXYNOS4_GPIO_Y02, EXYNOS4_GPIO_Y03, EXYNOS4_GPIO_Y04, EXYNOS4_GPIO_Y05, EXYNOS4_GPIO_Y06, EXYNOS4_GPIO_Y07, EXYNOS4_GPIO_Y10, /* 208 0xD0 */ EXYNOS4_GPIO_Y11, EXYNOS4_GPIO_Y12, EXYNOS4_GPIO_Y13, EXYNOS4_GPIO_Y14, EXYNOS4_GPIO_Y15, EXYNOS4_GPIO_Y16, EXYNOS4_GPIO_Y17, EXYNOS4_GPIO_Y20, /* 216 0xD8 */ EXYNOS4_GPIO_Y21, EXYNOS4_GPIO_Y22, EXYNOS4_GPIO_Y23, EXYNOS4_GPIO_Y24, EXYNOS4_GPIO_Y25, EXYNOS4_GPIO_Y26, EXYNOS4_GPIO_Y27, EXYNOS4_GPIO_Y30, /* 224 0xE0 */ EXYNOS4_GPIO_Y31, EXYNOS4_GPIO_Y32, EXYNOS4_GPIO_Y33, EXYNOS4_GPIO_Y34, EXYNOS4_GPIO_Y35, EXYNOS4_GPIO_Y36, EXYNOS4_GPIO_Y37, EXYNOS4_GPIO_Y40, /* 232 0xE8 */ EXYNOS4_GPIO_Y41, EXYNOS4_GPIO_Y42, EXYNOS4_GPIO_Y43, EXYNOS4_GPIO_Y44, EXYNOS4_GPIO_Y45, EXYNOS4_GPIO_Y46, EXYNOS4_GPIO_Y47, EXYNOS4_GPIO_Y50, /* 240 0xF0 */ EXYNOS4_GPIO_Y51, EXYNOS4_GPIO_Y52, EXYNOS4_GPIO_Y53, EXYNOS4_GPIO_Y54, EXYNOS4_GPIO_Y55, EXYNOS4_GPIO_Y56, EXYNOS4_GPIO_Y57, EXYNOS4_GPIO_Y60, /* 248 0xF8 */ EXYNOS4_GPIO_Y61, EXYNOS4_GPIO_Y62, EXYNOS4_GPIO_Y63, EXYNOS4_GPIO_Y64, EXYNOS4_GPIO_Y65, EXYNOS4_GPIO_Y66, EXYNOS4_GPIO_Y67, EXYNOS4_GPIO_X00 = 896, /* 896 0x380 */ EXYNOS4_GPIO_X01, EXYNOS4_GPIO_X02, EXYNOS4_GPIO_X03, EXYNOS4_GPIO_X04, EXYNOS4_GPIO_X05, EXYNOS4_GPIO_X06, EXYNOS4_GPIO_X07, EXYNOS4_GPIO_X10, /* 904 0x388 */ EXYNOS4_GPIO_X11, EXYNOS4_GPIO_X12, EXYNOS4_GPIO_X13, EXYNOS4_GPIO_X14, EXYNOS4_GPIO_X15, EXYNOS4_GPIO_X16, EXYNOS4_GPIO_X17, EXYNOS4_GPIO_X20, /* 912 0x390 */ EXYNOS4_GPIO_X21, EXYNOS4_GPIO_X22, EXYNOS4_GPIO_X23, EXYNOS4_GPIO_X24, EXYNOS4_GPIO_X25, EXYNOS4_GPIO_X26, EXYNOS4_GPIO_X27, EXYNOS4_GPIO_X30, /* 920 0x398 */ EXYNOS4_GPIO_X31, EXYNOS4_GPIO_X32, EXYNOS4_GPIO_X33, EXYNOS4_GPIO_X34, EXYNOS4_GPIO_X35, EXYNOS4_GPIO_X36, EXYNOS4_GPIO_X37, /* GPIO_PART3_STARTS */ EXYNOS4_GPIO_MAX_PORT_PART_2, /* 928 0x3A0 */ EXYNOS4_GPIO_Z0 = EXYNOS4_GPIO_MAX_PORT_PART_2, EXYNOS4_GPIO_Z1, EXYNOS4_GPIO_Z2, EXYNOS4_GPIO_Z3, EXYNOS4_GPIO_Z4, EXYNOS4_GPIO_Z5, EXYNOS4_GPIO_Z6, EXYNOS4_GPIO_Z7, EXYNOS4_GPIO_MAX_PORT }; enum exynos4X12_gpio_pin { /* GPIO_PART1_STARTS */ EXYNOS4X12_GPIO_A00, /* 0 */ EXYNOS4X12_GPIO_A01, EXYNOS4X12_GPIO_A02, EXYNOS4X12_GPIO_A03, EXYNOS4X12_GPIO_A04, EXYNOS4X12_GPIO_A05, EXYNOS4X12_GPIO_A06, EXYNOS4X12_GPIO_A07, EXYNOS4X12_GPIO_A10, /* 8 */ EXYNOS4X12_GPIO_A11, EXYNOS4X12_GPIO_A12, EXYNOS4X12_GPIO_A13, EXYNOS4X12_GPIO_A14, EXYNOS4X12_GPIO_A15, EXYNOS4X12_GPIO_A16, EXYNOS4X12_GPIO_A17, EXYNOS4X12_GPIO_B0, /* 16 0x10 */ EXYNOS4X12_GPIO_B1, EXYNOS4X12_GPIO_B2, EXYNOS4X12_GPIO_B3, EXYNOS4X12_GPIO_B4, EXYNOS4X12_GPIO_B5, EXYNOS4X12_GPIO_B6, EXYNOS4X12_GPIO_B7, EXYNOS4X12_GPIO_C00, /* 24 0x18 */ EXYNOS4X12_GPIO_C01, EXYNOS4X12_GPIO_C02, EXYNOS4X12_GPIO_C03, EXYNOS4X12_GPIO_C04, EXYNOS4X12_GPIO_C05, EXYNOS4X12_GPIO_C06, EXYNOS4X12_GPIO_C07, EXYNOS4X12_GPIO_C10, /* 32 0x20 */ EXYNOS4X12_GPIO_C11, EXYNOS4X12_GPIO_C12, EXYNOS4X12_GPIO_C13, EXYNOS4X12_GPIO_C14, EXYNOS4X12_GPIO_C15, EXYNOS4X12_GPIO_C16, EXYNOS4X12_GPIO_C17, EXYNOS4X12_GPIO_D00, /* 40 0x28 */ EXYNOS4X12_GPIO_D01, EXYNOS4X12_GPIO_D02, EXYNOS4X12_GPIO_D03, EXYNOS4X12_GPIO_D04, EXYNOS4X12_GPIO_D05, EXYNOS4X12_GPIO_D06, EXYNOS4X12_GPIO_D07, EXYNOS4X12_GPIO_D10, /* 48 0x30 */ EXYNOS4X12_GPIO_D11, EXYNOS4X12_GPIO_D12, EXYNOS4X12_GPIO_D13, EXYNOS4X12_GPIO_D14, EXYNOS4X12_GPIO_D15, EXYNOS4X12_GPIO_D16, EXYNOS4X12_GPIO_D17, EXYNOS4X12_GPIO_F00 = 96, /* 96 0x60 */ EXYNOS4X12_GPIO_F01, EXYNOS4X12_GPIO_F02, EXYNOS4X12_GPIO_F03, EXYNOS4X12_GPIO_F04, EXYNOS4X12_GPIO_F05, EXYNOS4X12_GPIO_F06, EXYNOS4X12_GPIO_F07, EXYNOS4X12_GPIO_F10, /* 104 0x68 */ EXYNOS4X12_GPIO_F11, EXYNOS4X12_GPIO_F12, EXYNOS4X12_GPIO_F13, EXYNOS4X12_GPIO_F14, EXYNOS4X12_GPIO_F15, EXYNOS4X12_GPIO_F16, EXYNOS4X12_GPIO_F17, EXYNOS4X12_GPIO_F20, /* 112 0x70 */ EXYNOS4X12_GPIO_F21, EXYNOS4X12_GPIO_F22, EXYNOS4X12_GPIO_F23, EXYNOS4X12_GPIO_F24, EXYNOS4X12_GPIO_F25, EXYNOS4X12_GPIO_F26, EXYNOS4X12_GPIO_F27, EXYNOS4X12_GPIO_F30, /* 120 0x78 */ EXYNOS4X12_GPIO_F31, EXYNOS4X12_GPIO_F32, EXYNOS4X12_GPIO_F33, EXYNOS4X12_GPIO_F34, EXYNOS4X12_GPIO_F35, EXYNOS4X12_GPIO_F36, EXYNOS4X12_GPIO_F37, EXYNOS4X12_GPIO_J00 = 144, /* 144 0x90 */ EXYNOS4X12_GPIO_J01, EXYNOS4X12_GPIO_J02, EXYNOS4X12_GPIO_J03, EXYNOS4X12_GPIO_J04, EXYNOS4X12_GPIO_J05, EXYNOS4X12_GPIO_J06, EXYNOS4X12_GPIO_J07, EXYNOS4X12_GPIO_J10, /* 152 0x98 */ EXYNOS4X12_GPIO_J11, EXYNOS4X12_GPIO_J12, EXYNOS4X12_GPIO_J13, EXYNOS4X12_GPIO_J14, EXYNOS4X12_GPIO_J15, EXYNOS4X12_GPIO_J16, EXYNOS4X12_GPIO_J17, /* GPIO_PART2_STARTS */ EXYNOS4X12_GPIO_MAX_PORT_PART_1,/* 160 0xA0 */ EXYNOS4X12_GPIO_K00 = 176, /* 176 0xB0 */ EXYNOS4X12_GPIO_K01, EXYNOS4X12_GPIO_K02, EXYNOS4X12_GPIO_K03, EXYNOS4X12_GPIO_K04, EXYNOS4X12_GPIO_K05, EXYNOS4X12_GPIO_K06, EXYNOS4X12_GPIO_K07, EXYNOS4X12_GPIO_K10, /* 184 0xB8 */ EXYNOS4X12_GPIO_K11, EXYNOS4X12_GPIO_K12, EXYNOS4X12_GPIO_K13, EXYNOS4X12_GPIO_K14, EXYNOS4X12_GPIO_K15, EXYNOS4X12_GPIO_K16, EXYNOS4X12_GPIO_K17, EXYNOS4X12_GPIO_K20, /* 192 0xC0 */ EXYNOS4X12_GPIO_K21, EXYNOS4X12_GPIO_K22, EXYNOS4X12_GPIO_K23, EXYNOS4X12_GPIO_K24, EXYNOS4X12_GPIO_K25, EXYNOS4X12_GPIO_K26, EXYNOS4X12_GPIO_K27, EXYNOS4X12_GPIO_K30, /* 200 0xC8 */ EXYNOS4X12_GPIO_K31, EXYNOS4X12_GPIO_K32, EXYNOS4X12_GPIO_K33, EXYNOS4X12_GPIO_K34, EXYNOS4X12_GPIO_K35, EXYNOS4X12_GPIO_K36, EXYNOS4X12_GPIO_K37, EXYNOS4X12_GPIO_L00, /* 208 0xD0 */ EXYNOS4X12_GPIO_L01, EXYNOS4X12_GPIO_L02, EXYNOS4X12_GPIO_L03, EXYNOS4X12_GPIO_L04, EXYNOS4X12_GPIO_L05, EXYNOS4X12_GPIO_L06, EXYNOS4X12_GPIO_L07, EXYNOS4X12_GPIO_L10, /* 216 0xD8 */ EXYNOS4X12_GPIO_L11, EXYNOS4X12_GPIO_L12, EXYNOS4X12_GPIO_L13, EXYNOS4X12_GPIO_L14, EXYNOS4X12_GPIO_L15, EXYNOS4X12_GPIO_L16, EXYNOS4X12_GPIO_L17, EXYNOS4X12_GPIO_L20, /* 224 0xE0 */ EXYNOS4X12_GPIO_L21, EXYNOS4X12_GPIO_L22, EXYNOS4X12_GPIO_L23, EXYNOS4X12_GPIO_L24, EXYNOS4X12_GPIO_L25, EXYNOS4X12_GPIO_L26, EXYNOS4X12_GPIO_L27, EXYNOS4X12_GPIO_Y00, /* 232 0xE8 */ EXYNOS4X12_GPIO_Y01, EXYNOS4X12_GPIO_Y02, EXYNOS4X12_GPIO_Y03, EXYNOS4X12_GPIO_Y04, EXYNOS4X12_GPIO_Y05, EXYNOS4X12_GPIO_Y06, EXYNOS4X12_GPIO_Y07, EXYNOS4X12_GPIO_Y10, /* 240 0xF0 */ EXYNOS4X12_GPIO_Y11, EXYNOS4X12_GPIO_Y12, EXYNOS4X12_GPIO_Y13, EXYNOS4X12_GPIO_Y14, EXYNOS4X12_GPIO_Y15, EXYNOS4X12_GPIO_Y16, EXYNOS4X12_GPIO_Y17, EXYNOS4X12_GPIO_Y20, /* 248 0xF8 */ EXYNOS4X12_GPIO_Y21, EXYNOS4X12_GPIO_Y22, EXYNOS4X12_GPIO_Y23, EXYNOS4X12_GPIO_Y24, EXYNOS4X12_GPIO_Y25, EXYNOS4X12_GPIO_Y26, EXYNOS4X12_GPIO_Y27, EXYNOS4X12_GPIO_Y30, /* 256 0x100 */ EXYNOS4X12_GPIO_Y31, EXYNOS4X12_GPIO_Y32, EXYNOS4X12_GPIO_Y33, EXYNOS4X12_GPIO_Y34, EXYNOS4X12_GPIO_Y35, EXYNOS4X12_GPIO_Y36, EXYNOS4X12_GPIO_Y37, EXYNOS4X12_GPIO_Y40, /* 264 0x108 */ EXYNOS4X12_GPIO_Y41, EXYNOS4X12_GPIO_Y42, EXYNOS4X12_GPIO_Y43, EXYNOS4X12_GPIO_Y44, EXYNOS4X12_GPIO_Y45, EXYNOS4X12_GPIO_Y46, EXYNOS4X12_GPIO_Y47, EXYNOS4X12_GPIO_Y50, /* 272 0x110 */ EXYNOS4X12_GPIO_Y51, EXYNOS4X12_GPIO_Y52, EXYNOS4X12_GPIO_Y53, EXYNOS4X12_GPIO_Y54, EXYNOS4X12_GPIO_Y55, EXYNOS4X12_GPIO_Y56, EXYNOS4X12_GPIO_Y57, EXYNOS4X12_GPIO_Y60, /* 280 0x118 */ EXYNOS4X12_GPIO_Y61, EXYNOS4X12_GPIO_Y62, EXYNOS4X12_GPIO_Y63, EXYNOS4X12_GPIO_Y64, EXYNOS4X12_GPIO_Y65, EXYNOS4X12_GPIO_Y66, EXYNOS4X12_GPIO_Y67, EXYNOS4X12_GPIO_M00 = 312, /* 312 0xF0 */ EXYNOS4X12_GPIO_M01, EXYNOS4X12_GPIO_M02, EXYNOS4X12_GPIO_M03, EXYNOS4X12_GPIO_M04, EXYNOS4X12_GPIO_M05, EXYNOS4X12_GPIO_M06, EXYNOS4X12_GPIO_M07, EXYNOS4X12_GPIO_M10, /* 320 0xF8 */ EXYNOS4X12_GPIO_M11, EXYNOS4X12_GPIO_M12, EXYNOS4X12_GPIO_M13, EXYNOS4X12_GPIO_M14, EXYNOS4X12_GPIO_M15, EXYNOS4X12_GPIO_M16, EXYNOS4X12_GPIO_M17, EXYNOS4X12_GPIO_M20, /* 328 0x100 */ EXYNOS4X12_GPIO_M21, EXYNOS4X12_GPIO_M22, EXYNOS4X12_GPIO_M23, EXYNOS4X12_GPIO_M24, EXYNOS4X12_GPIO_M25, EXYNOS4X12_GPIO_M26, EXYNOS4X12_GPIO_M27, EXYNOS4X12_GPIO_M30, /* 336 0x108 */ EXYNOS4X12_GPIO_M31, EXYNOS4X12_GPIO_M32, EXYNOS4X12_GPIO_M33, EXYNOS4X12_GPIO_M34, EXYNOS4X12_GPIO_M35, EXYNOS4X12_GPIO_M36, EXYNOS4X12_GPIO_M37, EXYNOS4X12_GPIO_M40, /* 344 0x110 */ EXYNOS4X12_GPIO_M41, EXYNOS4X12_GPIO_M42, EXYNOS4X12_GPIO_M43, EXYNOS4X12_GPIO_M44, EXYNOS4X12_GPIO_M45, EXYNOS4X12_GPIO_M46, EXYNOS4X12_GPIO_M47, EXYNOS4X12_GPIO_X00 = 928, /* 928 0x3A0 */ EXYNOS4X12_GPIO_X01, EXYNOS4X12_GPIO_X02, EXYNOS4X12_GPIO_X03, EXYNOS4X12_GPIO_X04, EXYNOS4X12_GPIO_X05, EXYNOS4X12_GPIO_X06, EXYNOS4X12_GPIO_X07, EXYNOS4X12_GPIO_X10, /* 936 0x3A8 */ EXYNOS4X12_GPIO_X11, EXYNOS4X12_GPIO_X12, EXYNOS4X12_GPIO_X13, EXYNOS4X12_GPIO_X14, EXYNOS4X12_GPIO_X15, EXYNOS4X12_GPIO_X16, EXYNOS4X12_GPIO_X17, EXYNOS4X12_GPIO_X20, /* 944 0x3B0 */ EXYNOS4X12_GPIO_X21, EXYNOS4X12_GPIO_X22, EXYNOS4X12_GPIO_X23, EXYNOS4X12_GPIO_X24, EXYNOS4X12_GPIO_X25, EXYNOS4X12_GPIO_X26, EXYNOS4X12_GPIO_X27, EXYNOS4X12_GPIO_X30, /* 952 0x3B8 */ EXYNOS4X12_GPIO_X31, EXYNOS4X12_GPIO_X32, EXYNOS4X12_GPIO_X33, EXYNOS4X12_GPIO_X34, EXYNOS4X12_GPIO_X35, EXYNOS4X12_GPIO_X36, EXYNOS4X12_GPIO_X37, /* GPIO_PART3_STARTS */ EXYNOS4X12_GPIO_MAX_PORT_PART_2,/* 960 0x3C0 */ EXYNOS4X12_GPIO_Z0 = EXYNOS4X12_GPIO_MAX_PORT_PART_2, EXYNOS4X12_GPIO_Z1, EXYNOS4X12_GPIO_Z2, EXYNOS4X12_GPIO_Z3, EXYNOS4X12_GPIO_Z4, EXYNOS4X12_GPIO_Z5, EXYNOS4X12_GPIO_Z6, EXYNOS4X12_GPIO_Z7, /* GPIO_PART4_STARTS */ EXYNOS4X12_GPIO_MAX_PORT_PART_3,/* 968 0x3C8 */ EXYNOS4X12_GPIO_V00 = EXYNOS4X12_GPIO_MAX_PORT_PART_3, EXYNOS4X12_GPIO_V01, EXYNOS4X12_GPIO_V02, EXYNOS4X12_GPIO_V03, EXYNOS4X12_GPIO_V04, EXYNOS4X12_GPIO_V05, EXYNOS4X12_GPIO_V06, EXYNOS4X12_GPIO_V07, EXYNOS4X12_GPIO_V10, /* 976 0x3D0 */ EXYNOS4X12_GPIO_V11, EXYNOS4X12_GPIO_V12, EXYNOS4X12_GPIO_V13, EXYNOS4X12_GPIO_V14, EXYNOS4X12_GPIO_V15, EXYNOS4X12_GPIO_V16, EXYNOS4X12_GPIO_V17, EXYNOS4X12_GPIO_V20 = 992, /* 992 0x3E0 */ EXYNOS4X12_GPIO_V21, EXYNOS4X12_GPIO_V22, EXYNOS4X12_GPIO_V23, EXYNOS4X12_GPIO_V24, EXYNOS4X12_GPIO_V25, EXYNOS4X12_GPIO_V26, EXYNOS4X12_GPIO_V27, EXYNOS4X12_GPIO_V30 = 1000, /* 1000 0x3E8 */ EXYNOS4X12_GPIO_V31, EXYNOS4X12_GPIO_V32, EXYNOS4X12_GPIO_V33, EXYNOS4X12_GPIO_V34, EXYNOS4X12_GPIO_V35, EXYNOS4X12_GPIO_V36, EXYNOS4X12_GPIO_V37, EXYNOS4X12_GPIO_V40 = 1016, /* 1016 0x3F8 */ EXYNOS4X12_GPIO_V41, EXYNOS4X12_GPIO_V42, EXYNOS4X12_GPIO_V43, EXYNOS4X12_GPIO_V44, EXYNOS4X12_GPIO_V45, EXYNOS4X12_GPIO_V46, EXYNOS4X12_GPIO_V47, EXYNOS4X12_GPIO_MAX_PORT }; enum exynos5_gpio_pin { /* GPIO_PART1_STARTS */ EXYNOS5_GPIO_A00, /* 0 */ EXYNOS5_GPIO_A01, EXYNOS5_GPIO_A02, EXYNOS5_GPIO_A03, EXYNOS5_GPIO_A04, EXYNOS5_GPIO_A05, EXYNOS5_GPIO_A06, EXYNOS5_GPIO_A07, EXYNOS5_GPIO_A10, /* 8 */ EXYNOS5_GPIO_A11, EXYNOS5_GPIO_A12, EXYNOS5_GPIO_A13, EXYNOS5_GPIO_A14, EXYNOS5_GPIO_A15, EXYNOS5_GPIO_A16, EXYNOS5_GPIO_A17, EXYNOS5_GPIO_A20, /* 16 0x10 */ EXYNOS5_GPIO_A21, EXYNOS5_GPIO_A22, EXYNOS5_GPIO_A23, EXYNOS5_GPIO_A24, EXYNOS5_GPIO_A25, EXYNOS5_GPIO_A26, EXYNOS5_GPIO_A27, EXYNOS5_GPIO_B00, /* 24 0x18 */ EXYNOS5_GPIO_B01, EXYNOS5_GPIO_B02, EXYNOS5_GPIO_B03, EXYNOS5_GPIO_B04, EXYNOS5_GPIO_B05, EXYNOS5_GPIO_B06, EXYNOS5_GPIO_B07, EXYNOS5_GPIO_B10, /* 32 0x20 */ EXYNOS5_GPIO_B11, EXYNOS5_GPIO_B12, EXYNOS5_GPIO_B13, EXYNOS5_GPIO_B14, EXYNOS5_GPIO_B15, EXYNOS5_GPIO_B16, EXYNOS5_GPIO_B17, EXYNOS5_GPIO_B20, /* 40 0x28 */ EXYNOS5_GPIO_B21, EXYNOS5_GPIO_B22, EXYNOS5_GPIO_B23, EXYNOS5_GPIO_B24, EXYNOS5_GPIO_B25, EXYNOS5_GPIO_B26, EXYNOS5_GPIO_B27, EXYNOS5_GPIO_B30, /* 48 0x39 */ EXYNOS5_GPIO_B31, EXYNOS5_GPIO_B32, EXYNOS5_GPIO_B33, EXYNOS5_GPIO_B34, EXYNOS5_GPIO_B35, EXYNOS5_GPIO_B36, EXYNOS5_GPIO_B37, EXYNOS5_GPIO_C00, /* 56 0x38 */ EXYNOS5_GPIO_C01, EXYNOS5_GPIO_C02, EXYNOS5_GPIO_C03, EXYNOS5_GPIO_C04, EXYNOS5_GPIO_C05, EXYNOS5_GPIO_C06, EXYNOS5_GPIO_C07, EXYNOS5_GPIO_C10, /* 64 0x40 */ EXYNOS5_GPIO_C11, EXYNOS5_GPIO_C12, EXYNOS5_GPIO_C13, EXYNOS5_GPIO_C14, EXYNOS5_GPIO_C15, EXYNOS5_GPIO_C16, EXYNOS5_GPIO_C17, EXYNOS5_GPIO_C20, /* 72 0x48 */ EXYNOS5_GPIO_C21, EXYNOS5_GPIO_C22, EXYNOS5_GPIO_C23, EXYNOS5_GPIO_C24, EXYNOS5_GPIO_C25, EXYNOS5_GPIO_C26, EXYNOS5_GPIO_C27, EXYNOS5_GPIO_C30, /* 80 0x50 */ EXYNOS5_GPIO_C31, EXYNOS5_GPIO_C32, EXYNOS5_GPIO_C33, EXYNOS5_GPIO_C34, EXYNOS5_GPIO_C35, EXYNOS5_GPIO_C36, EXYNOS5_GPIO_C37, EXYNOS5_GPIO_D00, /* 88 0x58 */ EXYNOS5_GPIO_D01, EXYNOS5_GPIO_D02, EXYNOS5_GPIO_D03, EXYNOS5_GPIO_D04, EXYNOS5_GPIO_D05, EXYNOS5_GPIO_D06, EXYNOS5_GPIO_D07, EXYNOS5_GPIO_D10, /* 96 0x60 */ EXYNOS5_GPIO_D11, EXYNOS5_GPIO_D12, EXYNOS5_GPIO_D13, EXYNOS5_GPIO_D14, EXYNOS5_GPIO_D15, EXYNOS5_GPIO_D16, EXYNOS5_GPIO_D17, EXYNOS5_GPIO_Y00, /* 104 0x68 */ EXYNOS5_GPIO_Y01, EXYNOS5_GPIO_Y02, EXYNOS5_GPIO_Y03, EXYNOS5_GPIO_Y04, EXYNOS5_GPIO_Y05, EXYNOS5_GPIO_Y06, EXYNOS5_GPIO_Y07, EXYNOS5_GPIO_Y10, /* 112 0x70 */ EXYNOS5_GPIO_Y11, EXYNOS5_GPIO_Y12, EXYNOS5_GPIO_Y13, EXYNOS5_GPIO_Y14, EXYNOS5_GPIO_Y15, EXYNOS5_GPIO_Y16, EXYNOS5_GPIO_Y17, EXYNOS5_GPIO_Y20, /* 120 0x78 */ EXYNOS5_GPIO_Y21, EXYNOS5_GPIO_Y22, EXYNOS5_GPIO_Y23, EXYNOS5_GPIO_Y24, EXYNOS5_GPIO_Y25, EXYNOS5_GPIO_Y26, EXYNOS5_GPIO_Y27, EXYNOS5_GPIO_Y30, /* 128 0x80 */ EXYNOS5_GPIO_Y31, EXYNOS5_GPIO_Y32, EXYNOS5_GPIO_Y33, EXYNOS5_GPIO_Y34, EXYNOS5_GPIO_Y35, EXYNOS5_GPIO_Y36, EXYNOS5_GPIO_Y37, EXYNOS5_GPIO_Y40, /* 136 0x88 */ EXYNOS5_GPIO_Y41, EXYNOS5_GPIO_Y42, EXYNOS5_GPIO_Y43, EXYNOS5_GPIO_Y44, EXYNOS5_GPIO_Y45, EXYNOS5_GPIO_Y46, EXYNOS5_GPIO_Y47, EXYNOS5_GPIO_Y50, /* 144 0x90 */ EXYNOS5_GPIO_Y51, EXYNOS5_GPIO_Y52, EXYNOS5_GPIO_Y53, EXYNOS5_GPIO_Y54, EXYNOS5_GPIO_Y55, EXYNOS5_GPIO_Y56, EXYNOS5_GPIO_Y57, EXYNOS5_GPIO_Y60, /* 152 0x98 */ EXYNOS5_GPIO_Y61, EXYNOS5_GPIO_Y62, EXYNOS5_GPIO_Y63, EXYNOS5_GPIO_Y64, EXYNOS5_GPIO_Y65, EXYNOS5_GPIO_Y66, EXYNOS5_GPIO_Y67, /* GPIO_PART2_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_1, /* 160 0xa0 */ EXYNOS5_GPIO_C40 = EXYNOS5_GPIO_MAX_PORT_PART_1, EXYNOS5_GPIO_C41, EXYNOS5_GPIO_C42, EXYNOS5_GPIO_C43, EXYNOS5_GPIO_C44, EXYNOS5_GPIO_C45, EXYNOS5_GPIO_C46, EXYNOS5_GPIO_C47, /* GPIO_PART3_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_2, /* 168 0xa8 */ EXYNOS5_GPIO_X00 = EXYNOS5_GPIO_MAX_PORT_PART_2, EXYNOS5_GPIO_X01, EXYNOS5_GPIO_X02, EXYNOS5_GPIO_X03, EXYNOS5_GPIO_X04, EXYNOS5_GPIO_X05, EXYNOS5_GPIO_X06, EXYNOS5_GPIO_X07, EXYNOS5_GPIO_X10, /* 176 0xb0 */ EXYNOS5_GPIO_X11, EXYNOS5_GPIO_X12, EXYNOS5_GPIO_X13, EXYNOS5_GPIO_X14, EXYNOS5_GPIO_X15, EXYNOS5_GPIO_X16, EXYNOS5_GPIO_X17, EXYNOS5_GPIO_X20, /* 184 0xb8 */ EXYNOS5_GPIO_X21, EXYNOS5_GPIO_X22, EXYNOS5_GPIO_X23, EXYNOS5_GPIO_X24, EXYNOS5_GPIO_X25, EXYNOS5_GPIO_X26, EXYNOS5_GPIO_X27, EXYNOS5_GPIO_X30, /* 192 0xc0 */ EXYNOS5_GPIO_X31, EXYNOS5_GPIO_X32, EXYNOS5_GPIO_X33, EXYNOS5_GPIO_X34, EXYNOS5_GPIO_X35, EXYNOS5_GPIO_X36, EXYNOS5_GPIO_X37, /* GPIO_PART4_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_3, /* 200 0xc8 */ EXYNOS5_GPIO_E00 = EXYNOS5_GPIO_MAX_PORT_PART_3, EXYNOS5_GPIO_E01, EXYNOS5_GPIO_E02, EXYNOS5_GPIO_E03, EXYNOS5_GPIO_E04, EXYNOS5_GPIO_E05, EXYNOS5_GPIO_E06, EXYNOS5_GPIO_E07, EXYNOS5_GPIO_E10, /* 208 0xd0 */ EXYNOS5_GPIO_E11, EXYNOS5_GPIO_E12, EXYNOS5_GPIO_E13, EXYNOS5_GPIO_E14, EXYNOS5_GPIO_E15, EXYNOS5_GPIO_E16, EXYNOS5_GPIO_E17, EXYNOS5_GPIO_F00, /* 216 0xd8 */ EXYNOS5_GPIO_F01, EXYNOS5_GPIO_F02, EXYNOS5_GPIO_F03, EXYNOS5_GPIO_F04, EXYNOS5_GPIO_F05, EXYNOS5_GPIO_F06, EXYNOS5_GPIO_F07, EXYNOS5_GPIO_F10, /* 224 0xe0 */ EXYNOS5_GPIO_F11, EXYNOS5_GPIO_F12, EXYNOS5_GPIO_F13, EXYNOS5_GPIO_F14, EXYNOS5_GPIO_F15, EXYNOS5_GPIO_F16, EXYNOS5_GPIO_F17, EXYNOS5_GPIO_G00, /* 232 0xe8 */ EXYNOS5_GPIO_G01, EXYNOS5_GPIO_G02, EXYNOS5_GPIO_G03, EXYNOS5_GPIO_G04, EXYNOS5_GPIO_G05, EXYNOS5_GPIO_G06, EXYNOS5_GPIO_G07, EXYNOS5_GPIO_G10, /* 240 0xf0 */ EXYNOS5_GPIO_G11, EXYNOS5_GPIO_G12, EXYNOS5_GPIO_G13, EXYNOS5_GPIO_G14, EXYNOS5_GPIO_G15, EXYNOS5_GPIO_G16, EXYNOS5_GPIO_G17, EXYNOS5_GPIO_G20, /* 248 0xf8 */ EXYNOS5_GPIO_G21, EXYNOS5_GPIO_G22, EXYNOS5_GPIO_G23, EXYNOS5_GPIO_G24, EXYNOS5_GPIO_G25, EXYNOS5_GPIO_G26, EXYNOS5_GPIO_G27, EXYNOS5_GPIO_H00, /* 256 0x100 */ EXYNOS5_GPIO_H01, EXYNOS5_GPIO_H02, EXYNOS5_GPIO_H03, EXYNOS5_GPIO_H04, EXYNOS5_GPIO_H05, EXYNOS5_GPIO_H06, EXYNOS5_GPIO_H07, EXYNOS5_GPIO_H10, /* 264 0x108 */ EXYNOS5_GPIO_H11, EXYNOS5_GPIO_H12, EXYNOS5_GPIO_H13, EXYNOS5_GPIO_H14, EXYNOS5_GPIO_H15, EXYNOS5_GPIO_H16, EXYNOS5_GPIO_H17, /* GPIO_PART4_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_4, /* 272 0x110 */ EXYNOS5_GPIO_V00 = EXYNOS5_GPIO_MAX_PORT_PART_4, EXYNOS5_GPIO_V01, EXYNOS5_GPIO_V02, EXYNOS5_GPIO_V03, EXYNOS5_GPIO_V04, EXYNOS5_GPIO_V05, EXYNOS5_GPIO_V06, EXYNOS5_GPIO_V07, EXYNOS5_GPIO_V10, /* 280 0x118 */ EXYNOS5_GPIO_V11, EXYNOS5_GPIO_V12, EXYNOS5_GPIO_V13, EXYNOS5_GPIO_V14, EXYNOS5_GPIO_V15, EXYNOS5_GPIO_V16, EXYNOS5_GPIO_V17, /* GPIO_PART5_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_5, /* 288 0x120 */ EXYNOS5_GPIO_V20 = EXYNOS5_GPIO_MAX_PORT_PART_5, EXYNOS5_GPIO_V21, EXYNOS5_GPIO_V22, EXYNOS5_GPIO_V23, EXYNOS5_GPIO_V24, EXYNOS5_GPIO_V25, EXYNOS5_GPIO_V26, EXYNOS5_GPIO_V27, EXYNOS5_GPIO_V30, /* 296 0x128 */ EXYNOS5_GPIO_V31, EXYNOS5_GPIO_V32, EXYNOS5_GPIO_V33, EXYNOS5_GPIO_V34, EXYNOS5_GPIO_V35, EXYNOS5_GPIO_V36, EXYNOS5_GPIO_V37, /* GPIO_PART6_STARTS */ EXYNOS5_GPIO_MAX_PORT_PART_6, /* 304 0x130 */ EXYNOS5_GPIO_V40 = EXYNOS5_GPIO_MAX_PORT_PART_6, EXYNOS5_GPIO_V41, EXYNOS5_GPIO_V42, EXYNOS5_GPIO_V43, EXYNOS5_GPIO_V44, EXYNOS5_GPIO_V45, EXYNOS5_GPIO_V46, EXYNOS5_GPIO_V47, /* GPIO_PART7_STARTS */ /* 312 0x138 */ EXYNOS5_GPIO_MAX_PORT_PART_7, EXYNOS5_GPIO_Z0 = EXYNOS5_GPIO_MAX_PORT_PART_7, EXYNOS5_GPIO_Z1, EXYNOS5_GPIO_Z2, EXYNOS5_GPIO_Z3, EXYNOS5_GPIO_Z4, EXYNOS5_GPIO_Z5, EXYNOS5_GPIO_Z6, EXYNOS5_GPIO_MAX_PORT }; 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_Y71, EXYNOS5420_GPIO_Y72, EXYNOS5420_GPIO_Y73, EXYNOS5420_GPIO_Y74, 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_X01, EXYNOS5420_GPIO_X02, EXYNOS5420_GPIO_X03, EXYNOS5420_GPIO_X04, EXYNOS5420_GPIO_X05, EXYNOS5420_GPIO_X06, EXYNOS5420_GPIO_X07, EXYNOS5420_GPIO_X10, /* 88 0x58 */ EXYNOS5420_GPIO_X11, EXYNOS5420_GPIO_X12, EXYNOS5420_GPIO_X13, EXYNOS5420_GPIO_X14, EXYNOS5420_GPIO_X15, EXYNOS5420_GPIO_X16, EXYNOS5420_GPIO_X17, EXYNOS5420_GPIO_X20, /* 96 0x60 */ EXYNOS5420_GPIO_X21, EXYNOS5420_GPIO_X22, EXYNOS5420_GPIO_X23, EXYNOS5420_GPIO_X24, EXYNOS5420_GPIO_X25, EXYNOS5420_GPIO_X26, EXYNOS5420_GPIO_X27, EXYNOS5420_GPIO_X30, /* 104 0x68 */ EXYNOS5420_GPIO_X31, EXYNOS5420_GPIO_X32, EXYNOS5420_GPIO_X33, EXYNOS5420_GPIO_X34, EXYNOS5420_GPIO_X35, 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_C01, EXYNOS5420_GPIO_C02, EXYNOS5420_GPIO_C03, EXYNOS5420_GPIO_C04, EXYNOS5420_GPIO_C05, EXYNOS5420_GPIO_C06, EXYNOS5420_GPIO_C07, EXYNOS5420_GPIO_C10, /* 120 0x78 */ EXYNOS5420_GPIO_C11, EXYNOS5420_GPIO_C12, EXYNOS5420_GPIO_C13, EXYNOS5420_GPIO_C14, EXYNOS5420_GPIO_C15, EXYNOS5420_GPIO_C16, EXYNOS5420_GPIO_C17, EXYNOS5420_GPIO_C20, /* 128 0x80 */ EXYNOS5420_GPIO_C21, EXYNOS5420_GPIO_C22, EXYNOS5420_GPIO_C23, EXYNOS5420_GPIO_C24, EXYNOS5420_GPIO_C25, EXYNOS5420_GPIO_C26, EXYNOS5420_GPIO_C27, EXYNOS5420_GPIO_C30, /* 136 0x88 */ EXYNOS5420_GPIO_C31, EXYNOS5420_GPIO_C32, EXYNOS5420_GPIO_C33, EXYNOS5420_GPIO_C34, EXYNOS5420_GPIO_C35, EXYNOS5420_GPIO_C36, EXYNOS5420_GPIO_C37, EXYNOS5420_GPIO_C40, /* 144 0x90 */ EXYNOS5420_GPIO_C41, EXYNOS5420_GPIO_C42, EXYNOS5420_GPIO_C43, EXYNOS5420_GPIO_C44, EXYNOS5420_GPIO_C45, EXYNOS5420_GPIO_C46, EXYNOS5420_GPIO_C47, EXYNOS5420_GPIO_D10, /* 152 0x98 */ EXYNOS5420_GPIO_D11, EXYNOS5420_GPIO_D12, EXYNOS5420_GPIO_D13, EXYNOS5420_GPIO_D14, EXYNOS5420_GPIO_D15, EXYNOS5420_GPIO_D16, EXYNOS5420_GPIO_D17, EXYNOS5420_GPIO_Y00, /* 160 0xa0 */ EXYNOS5420_GPIO_Y01, EXYNOS5420_GPIO_Y02, EXYNOS5420_GPIO_Y03, EXYNOS5420_GPIO_Y04, EXYNOS5420_GPIO_Y05, EXYNOS5420_GPIO_Y06, EXYNOS5420_GPIO_Y07, EXYNOS5420_GPIO_Y10, /* 168 0xa8 */ EXYNOS5420_GPIO_Y11, EXYNOS5420_GPIO_Y12, EXYNOS5420_GPIO_Y13, EXYNOS5420_GPIO_Y14, EXYNOS5420_GPIO_Y15, EXYNOS5420_GPIO_Y16, EXYNOS5420_GPIO_Y17, EXYNOS5420_GPIO_Y20, /* 176 0xb0 */ EXYNOS5420_GPIO_Y21, EXYNOS5420_GPIO_Y22, EXYNOS5420_GPIO_Y23, EXYNOS5420_GPIO_Y24, EXYNOS5420_GPIO_Y25, EXYNOS5420_GPIO_Y26, EXYNOS5420_GPIO_Y27, EXYNOS5420_GPIO_Y30, /* 184 0xb8 */ EXYNOS5420_GPIO_Y31, EXYNOS5420_GPIO_Y32, EXYNOS5420_GPIO_Y33, EXYNOS5420_GPIO_Y34, EXYNOS5420_GPIO_Y35, EXYNOS5420_GPIO_Y36, EXYNOS5420_GPIO_Y37, EXYNOS5420_GPIO_Y40, /* 192 0xc0 */ EXYNOS5420_GPIO_Y41, EXYNOS5420_GPIO_Y42, EXYNOS5420_GPIO_Y43, EXYNOS5420_GPIO_Y44, EXYNOS5420_GPIO_Y45, EXYNOS5420_GPIO_Y46, EXYNOS5420_GPIO_Y47, EXYNOS5420_GPIO_Y50, /* 200 0xc8 */ EXYNOS5420_GPIO_Y51, EXYNOS5420_GPIO_Y52, EXYNOS5420_GPIO_Y53, EXYNOS5420_GPIO_Y54, EXYNOS5420_GPIO_Y55, EXYNOS5420_GPIO_Y56, EXYNOS5420_GPIO_Y57, EXYNOS5420_GPIO_Y60, /* 208 0xd0 */ EXYNOS5420_GPIO_Y61, EXYNOS5420_GPIO_Y62, EXYNOS5420_GPIO_Y63, EXYNOS5420_GPIO_Y64, EXYNOS5420_GPIO_Y65, 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_E01, EXYNOS5420_GPIO_E02, EXYNOS5420_GPIO_E03, EXYNOS5420_GPIO_E04, EXYNOS5420_GPIO_E05, EXYNOS5420_GPIO_E06, EXYNOS5420_GPIO_E07, EXYNOS5420_GPIO_E10, /* 224 0xe0 */ EXYNOS5420_GPIO_E11, EXYNOS5420_GPIO_E12, EXYNOS5420_GPIO_E13, EXYNOS5420_GPIO_E14, EXYNOS5420_GPIO_E15, EXYNOS5420_GPIO_E16, EXYNOS5420_GPIO_E17, EXYNOS5420_GPIO_F00, /* 232 0xe8 */ EXYNOS5420_GPIO_F01, EXYNOS5420_GPIO_F02, EXYNOS5420_GPIO_F03, EXYNOS5420_GPIO_F04, EXYNOS5420_GPIO_F05, EXYNOS5420_GPIO_F06, EXYNOS5420_GPIO_F07, EXYNOS5420_GPIO_F10, /* 240 0xf0 */ EXYNOS5420_GPIO_F11, EXYNOS5420_GPIO_F12, EXYNOS5420_GPIO_F13, EXYNOS5420_GPIO_F14, EXYNOS5420_GPIO_F15, EXYNOS5420_GPIO_F16, EXYNOS5420_GPIO_F17, EXYNOS5420_GPIO_G00, /* 248 0xf8 */ EXYNOS5420_GPIO_G01, EXYNOS5420_GPIO_G02, EXYNOS5420_GPIO_G03, EXYNOS5420_GPIO_G04, EXYNOS5420_GPIO_G05, EXYNOS5420_GPIO_G06, EXYNOS5420_GPIO_G07, EXYNOS5420_GPIO_G10, /* 256 0x100 */ EXYNOS5420_GPIO_G11, EXYNOS5420_GPIO_G12, EXYNOS5420_GPIO_G13, EXYNOS5420_GPIO_G14, EXYNOS5420_GPIO_G15, EXYNOS5420_GPIO_G16, EXYNOS5420_GPIO_G17, EXYNOS5420_GPIO_G20, /* 264 0x108 */ EXYNOS5420_GPIO_G21, EXYNOS5420_GPIO_G22, EXYNOS5420_GPIO_G23, EXYNOS5420_GPIO_G24, EXYNOS5420_GPIO_G25, EXYNOS5420_GPIO_G26, EXYNOS5420_GPIO_G27, EXYNOS5420_GPIO_J40, /* 272 0x110 */ EXYNOS5420_GPIO_J41, EXYNOS5420_GPIO_J42, EXYNOS5420_GPIO_J43, EXYNOS5420_GPIO_J44, EXYNOS5420_GPIO_J45, 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_Z1, EXYNOS5420_GPIO_Z2, EXYNOS5420_GPIO_Z3, EXYNOS5420_GPIO_Z4, EXYNOS5420_GPIO_Z5, EXYNOS5420_GPIO_Z6, EXYNOS5420_GPIO_MAX_PORT }; struct gpio_info { unsigned int reg_addr; /* Address of register for this part */ unsigned int max_gpio; /* Maximum GPIO in this part */ }; #define EXYNOS4_GPIO_NUM_PARTS 3 static struct gpio_info exynos4_gpio_data[EXYNOS4_GPIO_NUM_PARTS] = { { EXYNOS4_GPIO_PART1_BASE, EXYNOS4_GPIO_MAX_PORT_PART_1 }, { EXYNOS4_GPIO_PART2_BASE, EXYNOS4_GPIO_MAX_PORT_PART_2 }, { EXYNOS4_GPIO_PART3_BASE, EXYNOS4_GPIO_MAX_PORT }, }; #define EXYNOS4X12_GPIO_NUM_PARTS 4 static struct gpio_info exynos4x12_gpio_data[EXYNOS4X12_GPIO_NUM_PARTS] = { { EXYNOS4X12_GPIO_PART1_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_1 }, { EXYNOS4X12_GPIO_PART2_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_2 }, { EXYNOS4X12_GPIO_PART3_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_3 }, { EXYNOS4X12_GPIO_PART4_BASE, EXYNOS4X12_GPIO_MAX_PORT }, }; #define EXYNOS5_GPIO_NUM_PARTS 8 static struct gpio_info exynos5_gpio_data[EXYNOS5_GPIO_NUM_PARTS] = { { EXYNOS5_GPIO_PART1_BASE, EXYNOS5_GPIO_MAX_PORT_PART_1 }, { EXYNOS5_GPIO_PART2_BASE, EXYNOS5_GPIO_MAX_PORT_PART_2 }, { EXYNOS5_GPIO_PART3_BASE, EXYNOS5_GPIO_MAX_PORT_PART_3 }, { EXYNOS5_GPIO_PART4_BASE, EXYNOS5_GPIO_MAX_PORT_PART_4 }, { EXYNOS5_GPIO_PART5_BASE, EXYNOS5_GPIO_MAX_PORT_PART_5 }, { EXYNOS5_GPIO_PART6_BASE, EXYNOS5_GPIO_MAX_PORT_PART_6 }, { EXYNOS5_GPIO_PART7_BASE, EXYNOS5_GPIO_MAX_PORT_PART_7 }, { EXYNOS5_GPIO_PART8_BASE, EXYNOS5_GPIO_MAX_PORT }, }; #define EXYNOS5420_GPIO_NUM_PARTS 6 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 }, }; static inline struct gpio_info *get_gpio_data(void) { if (cpu_is_exynos5()) { if (proid_is_exynos5420()) return exynos5420_gpio_data; else return exynos5_gpio_data; } else if (cpu_is_exynos4()) { if (proid_is_exynos4412()) return exynos4x12_gpio_data; else return exynos4_gpio_data; } return NULL; } static inline unsigned int get_bank_num(void) { if (cpu_is_exynos5()) { if (proid_is_exynos5420()) return EXYNOS5420_GPIO_NUM_PARTS; else return EXYNOS5_GPIO_NUM_PARTS; } else if (cpu_is_exynos4()) { if (proid_is_exynos4412()) return EXYNOS4X12_GPIO_NUM_PARTS; else return EXYNOS4_GPIO_NUM_PARTS; } return 0; } /* * This structure helps mapping symbolic GPIO names into indices from * exynos5_gpio_pin/exynos5420_gpio_pin enums. * * By convention, symbolic GPIO name is defined as follows: * * g[p], where * p is optional * - a single character bank name, as defined by the SOC * - a single digit set number * - bit number within the set (in 0..7 range). * * essentially form an octal number of the GPIO pin within the bank * space. On the 5420 architecture some banks' sets do not start not from zero * ('d' starts from 1 and 'j' starts from 4). To compensate for that and * maintain flat number space withoout holes, those banks use offsets to be * deducted from the pin number. */ struct gpio_name_num_table { char bank; /* bank name symbol */ unsigned int bank_size; /* total number of pins in the bank */ char bank_offset; /* offset of the first bank's pin */ unsigned int base; /* index of the first bank's pin in the enum */ }; #define GPIO_ENTRY(name, base, top, offset) { name, top - base, offset, base } static const struct gpio_name_num_table exynos4_gpio_table[] = { GPIO_ENTRY('a', EXYNOS4_GPIO_A00, EXYNOS4_GPIO_B0, 0), GPIO_ENTRY('b', EXYNOS4_GPIO_B0, EXYNOS4_GPIO_C00, 0), GPIO_ENTRY('c', EXYNOS4_GPIO_C00, EXYNOS4_GPIO_D00, 0), GPIO_ENTRY('d', EXYNOS4_GPIO_D00, EXYNOS4_GPIO_E00, 0), GPIO_ENTRY('e', EXYNOS4_GPIO_E00, EXYNOS4_GPIO_F00, 0), GPIO_ENTRY('f', EXYNOS4_GPIO_F00, EXYNOS4_GPIO_J00, 0), GPIO_ENTRY('j', EXYNOS4_GPIO_J00, EXYNOS4_GPIO_K00, 0), GPIO_ENTRY('k', EXYNOS4_GPIO_K00, EXYNOS4_GPIO_L00, 0), GPIO_ENTRY('l', EXYNOS4_GPIO_L00, EXYNOS4_GPIO_Y00, 0), GPIO_ENTRY('y', EXYNOS4_GPIO_Y00, EXYNOS4_GPIO_X00, 0), GPIO_ENTRY('x', EXYNOS4_GPIO_X00, EXYNOS4_GPIO_Z0, 0), GPIO_ENTRY('z', EXYNOS4_GPIO_Z0, EXYNOS4_GPIO_MAX_PORT, 0), { 0 } }; static const struct gpio_name_num_table exynos4x12_gpio_table[] = { GPIO_ENTRY('a', EXYNOS4X12_GPIO_A00, EXYNOS4X12_GPIO_B0, 0), GPIO_ENTRY('b', EXYNOS4X12_GPIO_B0, EXYNOS4X12_GPIO_C00, 0), GPIO_ENTRY('c', EXYNOS4X12_GPIO_C00, EXYNOS4X12_GPIO_D00, 0), GPIO_ENTRY('d', EXYNOS4X12_GPIO_D00, EXYNOS4X12_GPIO_F00, 0), GPIO_ENTRY('f', EXYNOS4X12_GPIO_F00, EXYNOS4X12_GPIO_J00, 0), GPIO_ENTRY('j', EXYNOS4X12_GPIO_J00, EXYNOS4X12_GPIO_K00, 0), GPIO_ENTRY('k', EXYNOS4X12_GPIO_K00, EXYNOS4X12_GPIO_L00, 0), GPIO_ENTRY('l', EXYNOS4X12_GPIO_L00, EXYNOS4X12_GPIO_Y00, 0), GPIO_ENTRY('y', EXYNOS4X12_GPIO_Y00, EXYNOS4X12_GPIO_M00, 0), GPIO_ENTRY('m', EXYNOS4X12_GPIO_M00, EXYNOS4X12_GPIO_X00, 0), GPIO_ENTRY('x', EXYNOS4X12_GPIO_X00, EXYNOS4X12_GPIO_Z0, 0), GPIO_ENTRY('z', EXYNOS4X12_GPIO_Z0, EXYNOS4X12_GPIO_V00, 0), GPIO_ENTRY('v', EXYNOS4X12_GPIO_V00, EXYNOS4X12_GPIO_MAX_PORT, 0), { 0 } }; static const struct gpio_name_num_table exynos5_gpio_table[] = { GPIO_ENTRY('a', EXYNOS5_GPIO_A00, EXYNOS5_GPIO_B00, 0), GPIO_ENTRY('b', EXYNOS5_GPIO_B00, EXYNOS5_GPIO_C00, 0), GPIO_ENTRY('c', EXYNOS5_GPIO_C00, EXYNOS5_GPIO_D00, 0), GPIO_ENTRY('d', EXYNOS5_GPIO_D00, EXYNOS5_GPIO_Y00, 0), GPIO_ENTRY('y', EXYNOS5_GPIO_Y00, EXYNOS5_GPIO_C40, 0), GPIO_ENTRY('x', EXYNOS5_GPIO_X00, EXYNOS5_GPIO_E00, 0), GPIO_ENTRY('e', EXYNOS5_GPIO_E00, EXYNOS5_GPIO_F00, 0), GPIO_ENTRY('f', EXYNOS5_GPIO_F00, EXYNOS5_GPIO_G00, 0), GPIO_ENTRY('g', EXYNOS5_GPIO_G00, EXYNOS5_GPIO_H00, 0), GPIO_ENTRY('h', EXYNOS5_GPIO_H00, EXYNOS5_GPIO_V00, 0), GPIO_ENTRY('v', EXYNOS5_GPIO_V00, EXYNOS5_GPIO_Z0, 0), GPIO_ENTRY('z', EXYNOS5_GPIO_Z0, EXYNOS5_GPIO_MAX_PORT, 0), { 0 } }; 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('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('z', EXYNOS5420_GPIO_Z0, EXYNOS5420_GPIO_MAX_PORT, 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); int gpio_direction_output(unsigned gpio, int value); int gpio_set_value(unsigned gpio, int value); int gpio_get_value(unsigned gpio); void gpio_set_rate(int gpio, int mode); struct s5p_gpio_bank *s5p_gpio_get_bank(unsigned gpio); int s5p_gpio_get_pin(unsigned gpio); #endif /* Pin configurations */ #define S5P_GPIO_INPUT 0x0 #define S5P_GPIO_OUTPUT 0x1 #define S5P_GPIO_IRQ 0xf #define S5P_GPIO_FUNC(x) (x) /* Pull mode */ #define S5P_GPIO_PULL_NONE 0x0 #define S5P_GPIO_PULL_DOWN 0x1 #define S5P_GPIO_PULL_UP 0x3 /* Drive Strength level */ #define S5P_GPIO_DRV_1X 0x0 #define S5P_GPIO_DRV_3X 0x1 #define S5P_GPIO_DRV_2X 0x2 #define S5P_GPIO_DRV_4X 0x3 #define S5P_GPIO_DRV_FAST 0x0 #define S5P_GPIO_DRV_SLOW 0x1 #endif