board-mop500-pins.c 7.6 KB

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