blob: e2a2e501b69799995aba57b941ce15e82796278f [file] [log] [blame]
Rabin Vincentfe052032011-02-11 17:07:21 -07001/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * License terms: GNU General Public License (GPL) version 2
5 */
6
7#include <linux/kernel.h>
8#include <linux/init.h>
Paul Gortmaker50af5ea2012-01-20 18:35:53 -05009#include <linux/bug.h>
Rabin Vincentfe052032011-02-11 17:07:21 -070010
Bibek Basu4bc3a692011-02-15 10:46:59 +010011#include <asm/mach-types.h>
Rabin Vincentfe052032011-02-11 17:07:21 -070012#include <plat/pincfg.h>
Linus Walleij0f332862011-08-22 08:33:30 +010013#include <plat/gpio-nomadik.h>
Rabin Vincentfe052032011-02-11 17:07:21 -070014#include <mach/hardware.h>
15
16#include "pins-db8500.h"
Rabin Vincent339bcf32012-04-17 13:35:31 +020017#include "pins.h"
Rabin Vincentfe052032011-02-11 17:07:21 -070018
Bibek Basu4bc3a692011-02-15 10:46:59 +010019static pin_cfg_t mop500_pins_common[] = {
Rabin Vincentfe052032011-02-11 17:07:21 -070020 /* I2C */
21 GPIO147_I2C0_SCL,
22 GPIO148_I2C0_SDA,
23 GPIO16_I2C1_SCL,
24 GPIO17_I2C1_SDA,
25 GPIO10_I2C2_SDA,
26 GPIO11_I2C2_SCL,
27 GPIO229_I2C3_SDA,
28 GPIO230_I2C3_SCL,
29
Bibek Basu4bc3a692011-02-15 10:46:59 +010030 /* MSP0 */
31 GPIO12_MSP0_TXD,
32 GPIO13_MSP0_TFS,
33 GPIO14_MSP0_TCK,
34 GPIO15_MSP0_RXD,
35
36 /* MSP2: HDMI */
37 GPIO193_MSP2_TXD,
38 GPIO194_MSP2_TCK,
39 GPIO195_MSP2_TFS,
40 GPIO196_MSP2_RXD | PIN_OUTPUT_LOW,
41
42 /* Touch screen INTERFACE */
43 GPIO84_GPIO | PIN_INPUT_PULLUP, /* TOUCH_INT1 */
44
45 /* STMPE1601/tc35893 keypad IRQ */
46 GPIO218_GPIO | PIN_INPUT_PULLUP,
47
48 /* MMC0 (MicroSD card) */
49 GPIO18_MC0_CMDDIR | PIN_OUTPUT_HIGH,
50 GPIO19_MC0_DAT0DIR | PIN_OUTPUT_HIGH,
51 GPIO20_MC0_DAT2DIR | PIN_OUTPUT_HIGH,
52
53 GPIO22_MC0_FBCLK | PIN_INPUT_NOPULL,
54 GPIO23_MC0_CLK | PIN_OUTPUT_LOW,
55 GPIO24_MC0_CMD | PIN_INPUT_PULLUP,
56 GPIO25_MC0_DAT0 | PIN_INPUT_PULLUP,
57 GPIO26_MC0_DAT1 | PIN_INPUT_PULLUP,
58 GPIO27_MC0_DAT2 | PIN_INPUT_PULLUP,
59 GPIO28_MC0_DAT3 | PIN_INPUT_PULLUP,
60
61 /* SDI1 (SDIO) */
62 GPIO208_MC1_CLK | PIN_OUTPUT_LOW,
63 GPIO209_MC1_FBCLK | PIN_INPUT_NOPULL,
64 GPIO210_MC1_CMD | PIN_INPUT_PULLUP,
65 GPIO211_MC1_DAT0 | PIN_INPUT_PULLUP,
66 GPIO212_MC1_DAT1 | PIN_INPUT_PULLUP,
67 GPIO213_MC1_DAT2 | PIN_INPUT_PULLUP,
68 GPIO214_MC1_DAT3 | PIN_INPUT_PULLUP,
69
70 /* MMC2 (On-board DATA INTERFACE eMMC) */
71 GPIO128_MC2_CLK | PIN_OUTPUT_LOW,
72 GPIO129_MC2_CMD | PIN_INPUT_PULLUP,
73 GPIO130_MC2_FBCLK | PIN_INPUT_NOPULL,
74 GPIO131_MC2_DAT0 | PIN_INPUT_PULLUP,
75 GPIO132_MC2_DAT1 | PIN_INPUT_PULLUP,
76 GPIO133_MC2_DAT2 | PIN_INPUT_PULLUP,
77 GPIO134_MC2_DAT3 | PIN_INPUT_PULLUP,
78 GPIO135_MC2_DAT4 | PIN_INPUT_PULLUP,
79 GPIO136_MC2_DAT5 | PIN_INPUT_PULLUP,
80 GPIO137_MC2_DAT6 | PIN_INPUT_PULLUP,
81 GPIO138_MC2_DAT7 | PIN_INPUT_PULLUP,
82
83 /* MMC4 (On-board STORAGE INTERFACE eMMC) */
84 GPIO197_MC4_DAT3 | PIN_INPUT_PULLUP,
85 GPIO198_MC4_DAT2 | PIN_INPUT_PULLUP,
86 GPIO199_MC4_DAT1 | PIN_INPUT_PULLUP,
87 GPIO200_MC4_DAT0 | PIN_INPUT_PULLUP,
88 GPIO201_MC4_CMD | PIN_INPUT_PULLUP,
89 GPIO202_MC4_FBCLK | PIN_INPUT_NOPULL,
90 GPIO203_MC4_CLK | PIN_OUTPUT_LOW,
91 GPIO204_MC4_DAT7 | PIN_INPUT_PULLUP,
92 GPIO205_MC4_DAT6 | PIN_INPUT_PULLUP,
93 GPIO206_MC4_DAT5 | PIN_INPUT_PULLUP,
94 GPIO207_MC4_DAT4 | PIN_INPUT_PULLUP,
95
Rabin Vincentfe052032011-02-11 17:07:21 -070096 /* SKE keypad */
97 GPIO153_KP_I7,
98 GPIO154_KP_I6,
99 GPIO155_KP_I5,
100 GPIO156_KP_I4,
101 GPIO157_KP_O7,
102 GPIO158_KP_O6,
103 GPIO159_KP_O5,
104 GPIO160_KP_O4,
105 GPIO161_KP_I3,
106 GPIO162_KP_I2,
107 GPIO163_KP_I1,
108 GPIO164_KP_I0,
109 GPIO165_KP_O3,
110 GPIO166_KP_O2,
111 GPIO167_KP_O1,
112 GPIO168_KP_O0,
113
Bibek Basu4bc3a692011-02-15 10:46:59 +0100114 /* UART */
Shreshtha Kumar Sahu1a7d4362011-06-13 10:11:44 +0200115 /* uart-0 pins gpio configuration should be
116 * kept intact to prevent glitch in tx line
117 * when tty dev is opened. Later these pins
118 * are configured to uart mop500_pins_uart0
119 *
120 * It will be replaced with uart configuration
121 * once the issue is solved.
122 */
123 GPIO0_GPIO | PIN_INPUT_PULLUP,
124 GPIO1_GPIO | PIN_OUTPUT_HIGH,
125 GPIO2_GPIO | PIN_INPUT_PULLUP,
126 GPIO3_GPIO | PIN_OUTPUT_HIGH,
Rabin Vincentfe052032011-02-11 17:07:21 -0700127
Bibek Basu4bc3a692011-02-15 10:46:59 +0100128 GPIO29_U2_RXD | PIN_INPUT_PULLUP,
129 GPIO30_U2_TXD | PIN_OUTPUT_HIGH,
130 GPIO31_U2_CTSn | PIN_INPUT_PULLUP,
131 GPIO32_U2_RTSn | PIN_OUTPUT_HIGH,
Rabin Vincentfe052032011-02-11 17:07:21 -0700132
Bibek Basu4bc3a692011-02-15 10:46:59 +0100133 /* Display & HDMI HW sync */
134 GPIO68_LCD_VSI0 | PIN_INPUT_PULLUP,
135 GPIO69_LCD_VSI1 | PIN_INPUT_PULLUP,
136};
Rabin Vincentfe052032011-02-11 17:07:21 -0700137
Bibek Basu4bc3a692011-02-15 10:46:59 +0100138static pin_cfg_t mop500_pins_default[] = {
139 /* SSP0 */
140 GPIO143_SSP0_CLK,
141 GPIO144_SSP0_FRM,
142 GPIO145_SSP0_RXD | PIN_PULL_DOWN,
143 GPIO146_SSP0_TXD,
144
145
146 GPIO217_GPIO | PIN_INPUT_PULLUP, /* TC35892 IRQ */
147
148 /* SDI0 (MicroSD card) */
149 GPIO21_MC0_DAT31DIR | PIN_OUTPUT_HIGH,
150
151 /* UART */
152 GPIO4_U1_RXD | PIN_INPUT_PULLUP,
153 GPIO5_U1_TXD | PIN_OUTPUT_HIGH,
154 GPIO6_U1_CTSn | PIN_INPUT_PULLUP,
155 GPIO7_U1_RTSn | PIN_OUTPUT_HIGH,
156};
157
Lee Jones110c2c22011-08-26 16:54:07 +0100158static pin_cfg_t hrefv60_pins[] = {
Bibek Basu4bc3a692011-02-15 10:46:59 +0100159 /* WLAN */
160 GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */
161 GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */
162
163 /* XENON Flashgun INTERFACE */
164 GPIO6_IP_GPIO0 | PIN_INPUT_PULLUP,/* XENON_FLASH_ID */
165 GPIO7_IP_GPIO1 | PIN_INPUT_PULLUP,/* XENON_READY */
166 GPIO170_GPIO | PIN_OUTPUT_LOW, /* XENON_CHARGE */
167
168 /* Assistant LED INTERFACE */
169 GPIO21_GPIO | PIN_OUTPUT_LOW, /* XENON_EN1 */
170 GPIO64_IP_GPIO4 | PIN_OUTPUT_LOW, /* XENON_EN2 */
171
172 /* Magnetometer */
173 GPIO31_GPIO | PIN_INPUT_PULLUP, /* magnetometer_INT */
174 GPIO32_GPIO | PIN_INPUT_PULLDOWN, /* Magnetometer DRDY */
175
176 /* Display Interface */
177 GPIO65_GPIO | PIN_OUTPUT_LOW, /* DISP1 RST */
178 GPIO66_GPIO | PIN_OUTPUT_LOW, /* DISP2 RST */
179
180 /* Touch screen INTERFACE */
181 GPIO143_GPIO | PIN_OUTPUT_LOW,/*TOUCH_RST1 */
182
183 /* Touch screen INTERFACE 2 */
184 GPIO67_GPIO | PIN_INPUT_PULLUP, /* TOUCH_INT2 */
185 GPIO146_GPIO | PIN_OUTPUT_LOW,/*TOUCH_RST2 */
186
187 /* ETM_PTM_TRACE INTERFACE */
188 GPIO70_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA23 */
189 GPIO71_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA22 */
190 GPIO72_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA21 */
191 GPIO73_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA20 */
192 GPIO74_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA19 */
193
194 /* NAHJ INTERFACE */
195 GPIO76_GPIO | PIN_OUTPUT_LOW,/* NAHJ_CTRL */
196 GPIO216_GPIO | PIN_OUTPUT_HIGH,/* NAHJ_CTRL_INV */
197
198 /* NFC INTERFACE */
199 GPIO77_GPIO | PIN_OUTPUT_LOW, /* NFC_ENA */
200 GPIO144_GPIO | PIN_INPUT_PULLDOWN, /* NFC_IRQ */
201 GPIO142_GPIO | PIN_OUTPUT_LOW, /* NFC_RESET */
202
203 /* Keyboard MATRIX INTERFACE */
204 GPIO90_MC5_CMD | PIN_OUTPUT_LOW, /* KP_O_1 */
205 GPIO87_MC5_DAT1 | PIN_OUTPUT_LOW, /* KP_O_2 */
206 GPIO86_MC5_DAT0 | PIN_OUTPUT_LOW, /* KP_O_3 */
207 GPIO96_KP_O6 | PIN_OUTPUT_LOW, /* KP_O_6 */
208 GPIO94_KP_O7 | PIN_OUTPUT_LOW, /* KP_O_7 */
209 GPIO93_MC5_DAT4 | PIN_INPUT_PULLUP, /* KP_I_0 */
210 GPIO89_MC5_DAT3 | PIN_INPUT_PULLUP, /* KP_I_2 */
211 GPIO88_MC5_DAT2 | PIN_INPUT_PULLUP, /* KP_I_3 */
212 GPIO91_GPIO | PIN_INPUT_PULLUP, /* FORCE_SENSING_INT */
213 GPIO92_GPIO | PIN_OUTPUT_LOW, /* FORCE_SENSING_RST */
214 GPIO97_GPIO | PIN_OUTPUT_LOW, /* FORCE_SENSING_WU */
215
216 /* DiPro Sensor Interface */
217 GPIO139_GPIO | PIN_INPUT_PULLUP, /* DIPRO_INT */
218
219 /* HAL SWITCH INTERFACE */
220 GPIO145_GPIO | PIN_INPUT_PULLDOWN,/* HAL_SW */
221
222 /* Audio Amplifier Interface */
223 GPIO149_GPIO | PIN_OUTPUT_LOW, /* VAUDIO_HF_EN */
224
225 /* GBF INTERFACE */
226 GPIO171_GPIO | PIN_OUTPUT_LOW, /* GBF_ENA_RESET */
227
228 /* MSP : HDTV INTERFACE */
229 GPIO192_GPIO | PIN_INPUT_PULLDOWN,
230
231 /* ACCELEROMETER_INTERFACE */
232 GPIO82_GPIO | PIN_INPUT_PULLUP, /* ACC_INT1 */
233 GPIO83_GPIO | PIN_INPUT_PULLUP, /* ACC_INT2 */
234
235 /* Proximity Sensor */
236 GPIO217_GPIO | PIN_INPUT_PULLUP,
237
238
Rabin Vincentfe052032011-02-11 17:07:21 -0700239};
240
Robert Marklundc41fac82011-06-21 09:39:13 +0200241static pin_cfg_t snowball_pins[] = {
242 /* SSP0, to AB8500 */
243 GPIO143_SSP0_CLK,
244 GPIO144_SSP0_FRM,
245 GPIO145_SSP0_RXD | PIN_PULL_DOWN,
246 GPIO146_SSP0_TXD,
247
248 /* MMC0: MicroSD card */
249 GPIO21_MC0_DAT31DIR | PIN_OUTPUT_HIGH,
250
251 /* MMC2: LAN */
252 GPIO86_SM_ADQ0,
253 GPIO87_SM_ADQ1,
254 GPIO88_SM_ADQ2,
255 GPIO89_SM_ADQ3,
256 GPIO90_SM_ADQ4,
257 GPIO91_SM_ADQ5,
258 GPIO92_SM_ADQ6,
259 GPIO93_SM_ADQ7,
260
261 GPIO94_SM_ADVn,
262 GPIO95_SM_CS0n,
263 GPIO96_SM_OEn,
264 GPIO97_SM_WEn,
265
266 GPIO128_SM_CKO,
267 GPIO130_SM_FBCLK,
268 GPIO131_SM_ADQ8,
269 GPIO132_SM_ADQ9,
270 GPIO133_SM_ADQ10,
271 GPIO134_SM_ADQ11,
272 GPIO135_SM_ADQ12,
273 GPIO136_SM_ADQ13,
274 GPIO137_SM_ADQ14,
275 GPIO138_SM_ADQ15,
276
277 /* RSTn_LAN */
278 GPIO141_GPIO | PIN_OUTPUT_HIGH,
279};
280
Rabin Vincentfe052032011-02-11 17:07:21 -0700281void __init mop500_pins_init(void)
282{
Bibek Basu4bc3a692011-02-15 10:46:59 +0100283 nmk_config_pins(mop500_pins_common,
Lee Jones110c2c22011-08-26 16:54:07 +0100284 ARRAY_SIZE(mop500_pins_common));
285
286 nmk_config_pins(mop500_pins_default,
287 ARRAY_SIZE(mop500_pins_default));
288}
289
290void __init snowball_pins_init(void)
291{
292 nmk_config_pins(mop500_pins_common,
293 ARRAY_SIZE(mop500_pins_common));
294
295 nmk_config_pins(snowball_pins,
296 ARRAY_SIZE(snowball_pins));
297}
298
299void __init hrefv60_pins_init(void)
300{
301 nmk_config_pins(mop500_pins_common,
302 ARRAY_SIZE(mop500_pins_common));
303
304 nmk_config_pins(hrefv60_pins,
305 ARRAY_SIZE(hrefv60_pins));
Rabin Vincentfe052032011-02-11 17:07:21 -0700306}