pinctrl-pxa27x.c 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  1. /*
  2. * Marvell PXA27x family pin control
  3. *
  4. * Copyright (C) 2015 Robert Jarzmik
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; version 2 of the License.
  9. *
  10. */
  11. #include <linux/module.h>
  12. #include <linux/platform_device.h>
  13. #include <linux/of.h>
  14. #include <linux/of_device.h>
  15. #include <linux/pinctrl/pinctrl.h>
  16. #include "pinctrl-pxa2xx.h"
  17. static const struct pxa_desc_pin pxa27x_pins[] = {
  18. PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
  19. PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1)),
  20. PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
  21. PXA_FUNCTION(0, 3, "FFCTS"),
  22. PXA_FUNCTION(1, 1, "HZ_CLK"),
  23. PXA_FUNCTION(1, 3, "CHOUT<0>")),
  24. PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
  25. PXA_FUNCTION(0, 1, "FFDCD"),
  26. PXA_FUNCTION(0, 3, "USB_P3_5"),
  27. PXA_FUNCTION(1, 1, "HZ_CLK"),
  28. PXA_FUNCTION(1, 3, "CHOUT<1>")),
  29. PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
  30. PXA_FUNCTION(0, 1, "EXT_SYNC<0>"),
  31. PXA_FUNCTION(0, 2, "SSPRXD2"),
  32. PXA_FUNCTION(0, 3, "USB_P3_1"),
  33. PXA_FUNCTION(1, 1, "CHOUT<0>"),
  34. PXA_FUNCTION(1, 1, "PWM_OUT<2>"),
  35. PXA_FUNCTION(1, 3, "48_MHz")),
  36. PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
  37. PXA_FUNCTION(0, 1, "EXT_SYNC<1>"),
  38. PXA_FUNCTION(0, 2, "CIF_DD<7>"),
  39. PXA_FUNCTION(1, 1, "CHOUT<1>"),
  40. PXA_FUNCTION(1, 1, "PWM_OUT<3>"),
  41. PXA_FUNCTION(1, 3, "48_MHz")),
  42. PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
  43. PXA_FUNCTION(0, 1, "CLK_EXT"),
  44. PXA_FUNCTION(0, 2, "KP_DKIN<7>"),
  45. PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
  46. PXA_FUNCTION(1, 1, "SSPTXD2")),
  47. PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
  48. PXA_FUNCTION(0, 1, "L_VSYNC"),
  49. PXA_FUNCTION(0, 2, "SSPSFRM2"),
  50. PXA_FUNCTION(1, 1, "SSPSFRM2"),
  51. PXA_FUNCTION(1, 3, "UCLK")),
  52. PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15)),
  53. PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
  54. PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
  55. PXA_FUNCTION(1, 2, "PWM_OUT<0>"),
  56. PXA_FUNCTION(1, 3, "FFTXD")),
  57. PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
  58. PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
  59. PXA_FUNCTION(0, 2, "CIF_DD<6>"),
  60. PXA_FUNCTION(1, 2, "PWM_OUT<1>")),
  61. PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
  62. PXA_FUNCTION(0, 1, "RDY")),
  63. PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
  64. PXA_FUNCTION(0, 1, "SSPSCLK2"),
  65. PXA_FUNCTION(0, 3, "FFRXD"),
  66. PXA_FUNCTION(1, 1, "SSPSCLK2"),
  67. PXA_FUNCTION(1, 2, "L_CS"),
  68. PXA_FUNCTION(1, 3, "nURST")),
  69. PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
  70. PXA_FUNCTION(0, 1, "DREQ<0>"),
  71. PXA_FUNCTION(0, 2, "MBREQ"),
  72. PXA_FUNCTION(1, 1, "nSDCS<2>")),
  73. PXA_GPIO_PIN(PXA_PINCTRL_PIN(21),
  74. PXA_FUNCTION(1, 1, "nSDCS<3>"),
  75. PXA_FUNCTION(1, 2, "DVAL<0>"),
  76. PXA_FUNCTION(1, 3, "MBGNT")),
  77. PXA_GPIO_PIN(PXA_PINCTRL_PIN(22),
  78. PXA_FUNCTION(0, 1, "SSPEXTCLK2"),
  79. PXA_FUNCTION(0, 2, "SSPSCLKEN2"),
  80. PXA_FUNCTION(0, 3, "SSPSCLK2"),
  81. PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
  82. PXA_FUNCTION(1, 2, "SSPSYSCLK2"),
  83. PXA_FUNCTION(1, 3, "SSPSCLK2")),
  84. PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
  85. PXA_FUNCTION(0, 2, "SSPSCLK"),
  86. PXA_FUNCTION(1, 1, "CIF_MCLK"),
  87. PXA_FUNCTION(1, 1, "SSPSCLK")),
  88. PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
  89. PXA_FUNCTION(0, 1, "CIF_FV"),
  90. PXA_FUNCTION(0, 2, "SSPSFRM"),
  91. PXA_FUNCTION(1, 1, "CIF_FV"),
  92. PXA_FUNCTION(1, 2, "SSPSFRM")),
  93. PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
  94. PXA_FUNCTION(0, 1, "CIF_LV"),
  95. PXA_FUNCTION(1, 1, "CIF_LV"),
  96. PXA_FUNCTION(1, 2, "SSPTXD")),
  97. PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
  98. PXA_FUNCTION(0, 1, "SSPRXD"),
  99. PXA_FUNCTION(0, 2, "CIF_PCLK"),
  100. PXA_FUNCTION(0, 3, "FFCTS")),
  101. PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
  102. PXA_FUNCTION(0, 1, "SSPEXTCLK"),
  103. PXA_FUNCTION(0, 2, "SSPSCLKEN"),
  104. PXA_FUNCTION(0, 3, "CIF_DD<0>"),
  105. PXA_FUNCTION(1, 1, "SSPSYSCLK"),
  106. PXA_FUNCTION(1, 3, "FFRTS")),
  107. PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
  108. PXA_FUNCTION(0, 1, "AC97_BITCLK"),
  109. PXA_FUNCTION(0, 2, "I2S_BITCLK"),
  110. PXA_FUNCTION(0, 3, "SSPSFRM"),
  111. PXA_FUNCTION(1, 1, "I2S_BITCLK"),
  112. PXA_FUNCTION(1, 3, "SSPSFRM")),
  113. PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
  114. PXA_FUNCTION(0, 1, "AC97_SDATA_IN_0"),
  115. PXA_FUNCTION(0, 2, "I2S_SDATA_IN"),
  116. PXA_FUNCTION(0, 3, "SSPSCLK"),
  117. PXA_FUNCTION(1, 1, "SSPRXD2"),
  118. PXA_FUNCTION(1, 3, "SSPSCLK")),
  119. PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
  120. PXA_FUNCTION(1, 1, "I2S_SDATA_OUT"),
  121. PXA_FUNCTION(1, 2, "AC97_SDATA_OUT"),
  122. PXA_FUNCTION(1, 3, "USB_P3_2")),
  123. PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
  124. PXA_FUNCTION(1, 1, "I2S_SYNC"),
  125. PXA_FUNCTION(1, 2, "AC97_SYNC"),
  126. PXA_FUNCTION(1, 3, "USB_P3_6")),
  127. PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
  128. PXA_FUNCTION(1, 1, "MSSCLK"),
  129. PXA_FUNCTION(1, 2, "MMCLK")),
  130. PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
  131. PXA_FUNCTION(0, 1, "FFRXD"),
  132. PXA_FUNCTION(0, 2, "FFDSR"),
  133. PXA_FUNCTION(1, 1, "DVAL<1>"),
  134. PXA_FUNCTION(1, 2, "nCS<5>"),
  135. PXA_FUNCTION(1, 3, "MBGNT")),
  136. PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
  137. PXA_FUNCTION(0, 1, "FFRXD"),
  138. PXA_FUNCTION(0, 2, "KP_MKIN<3>"),
  139. PXA_FUNCTION(0, 3, "SSPSCLK3"),
  140. PXA_FUNCTION(1, 1, "USB_P2_2"),
  141. PXA_FUNCTION(1, 3, "SSPSCLK3")),
  142. PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
  143. PXA_FUNCTION(0, 1, "FFCTS"),
  144. PXA_FUNCTION(0, 2, "USB_P2_1"),
  145. PXA_FUNCTION(0, 3, "SSPSFRM3"),
  146. PXA_FUNCTION(1, 2, "KP_MKOUT<6>"),
  147. PXA_FUNCTION(1, 3, "SSPTXD3")),
  148. PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
  149. PXA_FUNCTION(0, 1, "FFDCD"),
  150. PXA_FUNCTION(0, 2, "SSPSCLK2"),
  151. PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
  152. PXA_FUNCTION(1, 1, "USB_P2_4"),
  153. PXA_FUNCTION(1, 2, "SSPSCLK2")),
  154. PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
  155. PXA_FUNCTION(0, 1, "FFDSR"),
  156. PXA_FUNCTION(0, 2, "SSPSFRM2"),
  157. PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
  158. PXA_FUNCTION(1, 1, "USB_P2_8"),
  159. PXA_FUNCTION(1, 2, "SSPSFRM2"),
  160. PXA_FUNCTION(1, 3, "FFTXD")),
  161. PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
  162. PXA_FUNCTION(0, 1, "FFRI"),
  163. PXA_FUNCTION(0, 2, "KP_MKIN<4>"),
  164. PXA_FUNCTION(0, 3, "USB_P2_3"),
  165. PXA_FUNCTION(1, 1, "SSPTXD3"),
  166. PXA_FUNCTION(1, 2, "SSPTXD2"),
  167. PXA_FUNCTION(1, 3, "PWM_OUT<0>")),
  168. PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
  169. PXA_FUNCTION(0, 1, "KP_MKIN<4>"),
  170. PXA_FUNCTION(0, 3, "SSPSFRM3"),
  171. PXA_FUNCTION(1, 1, "USB_P2_6"),
  172. PXA_FUNCTION(1, 2, "FFTXD"),
  173. PXA_FUNCTION(1, 3, "SSPSFRM3")),
  174. PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
  175. PXA_FUNCTION(0, 1, "SSPRXD2"),
  176. PXA_FUNCTION(0, 3, "USB_P2_5"),
  177. PXA_FUNCTION(1, 1, "KP_MKOUT<6>"),
  178. PXA_FUNCTION(1, 2, "FFDTR"),
  179. PXA_FUNCTION(1, 3, "SSPSCLK3")),
  180. PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
  181. PXA_FUNCTION(0, 1, "FFRXD"),
  182. PXA_FUNCTION(0, 2, "USB_P2_7"),
  183. PXA_FUNCTION(0, 3, "SSPRXD3"),
  184. PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
  185. PXA_FUNCTION(1, 2, "FFRTS")),
  186. PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
  187. PXA_FUNCTION(0, 1, "BTRXD"),
  188. PXA_FUNCTION(0, 2, "ICP_RXD"),
  189. PXA_FUNCTION(1, 3, "CIF_MCLK")),
  190. PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
  191. PXA_FUNCTION(0, 3, "CIF_FV"),
  192. PXA_FUNCTION(1, 1, "ICP_TXD"),
  193. PXA_FUNCTION(1, 2, "BTTXD"),
  194. PXA_FUNCTION(1, 3, "CIF_FV")),
  195. PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
  196. PXA_FUNCTION(0, 1, "BTCTS"),
  197. PXA_FUNCTION(0, 3, "CIF_LV"),
  198. PXA_FUNCTION(1, 3, "CIF_LV")),
  199. PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
  200. PXA_FUNCTION(0, 3, "CIF_PCLK"),
  201. PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
  202. PXA_FUNCTION(1, 2, "BTRTS"),
  203. PXA_FUNCTION(1, 3, "SSPSYSCLK3")),
  204. PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
  205. PXA_FUNCTION(0, 1, "ICP_RXD"),
  206. PXA_FUNCTION(0, 2, "STD_RXD"),
  207. PXA_FUNCTION(1, 2, "PWM_OUT<2>")),
  208. PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
  209. PXA_FUNCTION(0, 1, "CIF_DD<0>"),
  210. PXA_FUNCTION(1, 1, "STD_TXD"),
  211. PXA_FUNCTION(1, 2, "ICP_TXD"),
  212. PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
  213. PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
  214. PXA_FUNCTION(0, 1, "CIF_DD<5>"),
  215. PXA_FUNCTION(1, 1, "BB_OB_DAT<1>"),
  216. PXA_FUNCTION(1, 2, "nPOE")),
  217. PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
  218. PXA_FUNCTION(1, 2, "nPWE")),
  219. PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
  220. PXA_FUNCTION(0, 1, "CIF_DD<3>"),
  221. PXA_FUNCTION(0, 3, "SSPSCLK2"),
  222. PXA_FUNCTION(1, 1, "BB_OB_DAT<2>"),
  223. PXA_FUNCTION(1, 2, "nPIOR"),
  224. PXA_FUNCTION(1, 3, "SSPSCLK2")),
  225. PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
  226. PXA_FUNCTION(0, 1, "CIF_DD<2>"),
  227. PXA_FUNCTION(1, 1, "BB_OB_DAT<3>"),
  228. PXA_FUNCTION(1, 2, "nPIOW")),
  229. PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
  230. PXA_FUNCTION(0, 1, "CIF_DD<4>"),
  231. PXA_FUNCTION(0, 2, "SSPSCLK3"),
  232. PXA_FUNCTION(1, 1, "BB_OB_CLK"),
  233. PXA_FUNCTION(1, 2, "SSPSCLK3")),
  234. PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
  235. PXA_FUNCTION(0, 1, "FFRXD"),
  236. PXA_FUNCTION(0, 2, "USB_P2_3"),
  237. PXA_FUNCTION(1, 1, "BB_OB_STB"),
  238. PXA_FUNCTION(1, 2, "CIF_MCLK"),
  239. PXA_FUNCTION(1, 3, "SSPSYSCLK")),
  240. PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
  241. PXA_FUNCTION(0, 2, "BB_OB_WAIT"),
  242. PXA_FUNCTION(0, 3, "CIF_PCLK"),
  243. PXA_FUNCTION(1, 2, "nPCE<2>")),
  244. PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
  245. PXA_FUNCTION(0, 1, "CIF_DD<1>"),
  246. PXA_FUNCTION(0, 2, "BB_IB_DAT<1>"),
  247. PXA_FUNCTION(1, 2, "nPREG")),
  248. PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
  249. PXA_FUNCTION(0, 1, "nPWAIT"),
  250. PXA_FUNCTION(0, 2, "BB_IB_DAT<2>"),
  251. PXA_FUNCTION(1, 1, "USB_P3_4")),
  252. PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
  253. PXA_FUNCTION(0, 1, "nIOS16"),
  254. PXA_FUNCTION(0, 2, "BB_IB_DAT<3>"),
  255. PXA_FUNCTION(1, 3, "SSPTXD")),
  256. PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
  257. PXA_FUNCTION(0, 2, "LDD<0>"),
  258. PXA_FUNCTION(1, 2, "LDD<0>")),
  259. PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
  260. PXA_FUNCTION(0, 2, "LDD<1>"),
  261. PXA_FUNCTION(1, 2, "LDD<1>")),
  262. PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
  263. PXA_FUNCTION(0, 2, "LDD<2>"),
  264. PXA_FUNCTION(1, 2, "LDD<2>")),
  265. PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
  266. PXA_FUNCTION(0, 2, "LDD<3>"),
  267. PXA_FUNCTION(1, 2, "LDD<3>")),
  268. PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
  269. PXA_FUNCTION(0, 2, "LDD<4>"),
  270. PXA_FUNCTION(1, 2, "LDD<4>")),
  271. PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
  272. PXA_FUNCTION(0, 2, "LDD<5>"),
  273. PXA_FUNCTION(1, 2, "LDD<5>")),
  274. PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
  275. PXA_FUNCTION(0, 2, "LDD<6>"),
  276. PXA_FUNCTION(1, 2, "LDD<6>")),
  277. PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
  278. PXA_FUNCTION(0, 2, "LDD<7>"),
  279. PXA_FUNCTION(1, 2, "LDD<7>")),
  280. PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
  281. PXA_FUNCTION(0, 2, "LDD<8>"),
  282. PXA_FUNCTION(1, 2, "LDD<8>")),
  283. PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
  284. PXA_FUNCTION(0, 2, "LDD<9>"),
  285. PXA_FUNCTION(1, 2, "LDD<9>")),
  286. PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
  287. PXA_FUNCTION(0, 2, "LDD<10>"),
  288. PXA_FUNCTION(1, 2, "LDD<10>")),
  289. PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
  290. PXA_FUNCTION(0, 2, "LDD<11>"),
  291. PXA_FUNCTION(1, 2, "LDD<11>")),
  292. PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
  293. PXA_FUNCTION(0, 2, "LDD<12>"),
  294. PXA_FUNCTION(1, 2, "LDD<12>")),
  295. PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
  296. PXA_FUNCTION(0, 2, "LDD<13>"),
  297. PXA_FUNCTION(1, 2, "LDD<13>")),
  298. PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
  299. PXA_FUNCTION(0, 2, "LDD<14>"),
  300. PXA_FUNCTION(1, 2, "LDD<14>")),
  301. PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
  302. PXA_FUNCTION(0, 2, "LDD<15>"),
  303. PXA_FUNCTION(1, 2, "LDD<15>")),
  304. PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
  305. PXA_FUNCTION(1, 2, "L_FCLK_RD")),
  306. PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
  307. PXA_FUNCTION(1, 2, "L_LCLK_A0")),
  308. PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
  309. PXA_FUNCTION(1, 2, "L_PCLK_WR")),
  310. PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
  311. PXA_FUNCTION(1, 2, "L_BIAS")),
  312. PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
  313. PXA_FUNCTION(1, 1, "nPCE<2>"),
  314. PXA_FUNCTION(1, 2, "nCS<2>")),
  315. PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
  316. PXA_FUNCTION(1, 1, "PSKTSEL"),
  317. PXA_FUNCTION(1, 2, "nCS<3>"),
  318. PXA_FUNCTION(1, 3, "PWM_OUT<2>")),
  319. PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
  320. PXA_FUNCTION(0, 1, "DREQ<1>"),
  321. PXA_FUNCTION(0, 2, "MBREQ"),
  322. PXA_FUNCTION(1, 2, "nCS<4>"),
  323. PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
  324. PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
  325. PXA_FUNCTION(0, 2, "CIF_DD<0>"),
  326. PXA_FUNCTION(1, 1, "SSPTXD3"),
  327. PXA_FUNCTION(1, 2, "BB_OB_DAT<0>")),
  328. PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
  329. PXA_FUNCTION(0, 1, "SSPRXD3"),
  330. PXA_FUNCTION(0, 2, "BB_IB_DAT<0>"),
  331. PXA_FUNCTION(0, 3, "CIF_DD<5>"),
  332. PXA_FUNCTION(1, 3, "FFDTR")),
  333. PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
  334. PXA_FUNCTION(0, 1, "SSPSFRM3"),
  335. PXA_FUNCTION(0, 2, "BB_IB_CLK"),
  336. PXA_FUNCTION(0, 3, "CIF_DD<5>"),
  337. PXA_FUNCTION(1, 1, "SSPSFRM3"),
  338. PXA_FUNCTION(1, 2, "FFTXD"),
  339. PXA_FUNCTION(1, 3, "FFRTS")),
  340. PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
  341. PXA_FUNCTION(0, 1, "SSPCLK3"),
  342. PXA_FUNCTION(0, 2, "BB_IB_STB"),
  343. PXA_FUNCTION(0, 3, "CIF_FV"),
  344. PXA_FUNCTION(1, 1, "SSPCLK3"),
  345. PXA_FUNCTION(1, 3, "CIF_FV")),
  346. PXA_GPIO_PIN(PXA_PINCTRL_PIN(85),
  347. PXA_FUNCTION(0, 1, "FFRXD"),
  348. PXA_FUNCTION(0, 2, "DREQ<2>"),
  349. PXA_FUNCTION(0, 3, "CIF_LV"),
  350. PXA_FUNCTION(1, 1, "nPCE<1>"),
  351. PXA_FUNCTION(1, 2, "BB_IB_WAIT"),
  352. PXA_FUNCTION(1, 3, "CIF_LV")),
  353. PXA_GPIO_PIN(PXA_PINCTRL_PIN(86),
  354. PXA_FUNCTION(0, 1, "SSPRXD2"),
  355. PXA_FUNCTION(0, 2, "LDD<16>"),
  356. PXA_FUNCTION(0, 3, "USB_P3_5"),
  357. PXA_FUNCTION(1, 1, "nPCE<1>"),
  358. PXA_FUNCTION(1, 2, "LDD<16>")),
  359. PXA_GPIO_PIN(PXA_PINCTRL_PIN(87),
  360. PXA_FUNCTION(0, 1, "nPCE<2>"),
  361. PXA_FUNCTION(0, 2, "LDD<17>"),
  362. PXA_FUNCTION(0, 3, "USB_P3_1"),
  363. PXA_FUNCTION(1, 1, "SSPTXD2"),
  364. PXA_FUNCTION(1, 2, "LDD<17>"),
  365. PXA_FUNCTION(1, 3, "SSPSFRM2")),
  366. PXA_GPIO_PIN(PXA_PINCTRL_PIN(88),
  367. PXA_FUNCTION(0, 1, "USBHPWR<1>"),
  368. PXA_FUNCTION(0, 2, "SSPRXD2"),
  369. PXA_FUNCTION(0, 3, "SSPSFRM2"),
  370. PXA_FUNCTION(1, 2, "SSPTXD2"),
  371. PXA_FUNCTION(1, 3, "SSPSFRM2")),
  372. PXA_GPIO_PIN(PXA_PINCTRL_PIN(89),
  373. PXA_FUNCTION(0, 1, "SSPRXD3"),
  374. PXA_FUNCTION(0, 3, "FFRI"),
  375. PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
  376. PXA_FUNCTION(1, 2, "USBHPEN<1>"),
  377. PXA_FUNCTION(1, 3, "SSPTXD2")),
  378. PXA_GPIO_PIN(PXA_PINCTRL_PIN(90),
  379. PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
  380. PXA_FUNCTION(0, 3, "USB_P3_5"),
  381. PXA_FUNCTION(1, 1, "CIF_DD<4>"),
  382. PXA_FUNCTION(1, 2, "nURST")),
  383. PXA_GPIO_PIN(PXA_PINCTRL_PIN(91),
  384. PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
  385. PXA_FUNCTION(0, 3, "USB_P3_1"),
  386. PXA_FUNCTION(1, 1, "CIF_DD<5>"),
  387. PXA_FUNCTION(1, 2, "UCLK")),
  388. PXA_GPIO_PIN(PXA_PINCTRL_PIN(92),
  389. PXA_FUNCTION(0, 1, "MMDAT<0>"),
  390. PXA_FUNCTION(1, 1, "MMDAT<0>"),
  391. PXA_FUNCTION(1, 2, "MSBS")),
  392. PXA_GPIO_PIN(PXA_PINCTRL_PIN(93),
  393. PXA_FUNCTION(0, 1, "KP_DKIN<0>"),
  394. PXA_FUNCTION(0, 2, "CIF_DD<6>"),
  395. PXA_FUNCTION(1, 1, "AC97_SDATA_OUT")),
  396. PXA_GPIO_PIN(PXA_PINCTRL_PIN(94),
  397. PXA_FUNCTION(0, 1, "KP_DKIN<1>"),
  398. PXA_FUNCTION(0, 2, "CIF_DD<5>"),
  399. PXA_FUNCTION(1, 1, "AC97_SYNC")),
  400. PXA_GPIO_PIN(PXA_PINCTRL_PIN(95),
  401. PXA_FUNCTION(0, 1, "KP_DKIN<2>"),
  402. PXA_FUNCTION(0, 2, "CIF_DD<4>"),
  403. PXA_FUNCTION(0, 3, "KP_MKIN<6>"),
  404. PXA_FUNCTION(1, 1, "AC97_RESET_n")),
  405. PXA_GPIO_PIN(PXA_PINCTRL_PIN(96),
  406. PXA_FUNCTION(0, 1, "KP_DKIN<3>"),
  407. PXA_FUNCTION(0, 2, "MBREQ"),
  408. PXA_FUNCTION(0, 3, "FFRXD"),
  409. PXA_FUNCTION(1, 2, "DVAL<1>"),
  410. PXA_FUNCTION(1, 3, "KP_MKOUT<6>")),
  411. PXA_GPIO_PIN(PXA_PINCTRL_PIN(97),
  412. PXA_FUNCTION(0, 1, "KP_DKIN<4>"),
  413. PXA_FUNCTION(0, 2, "DREQ<1>"),
  414. PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
  415. PXA_FUNCTION(1, 2, "MBGNT")),
  416. PXA_GPIO_PIN(PXA_PINCTRL_PIN(98),
  417. PXA_FUNCTION(0, 1, "KP_DKIN<5>"),
  418. PXA_FUNCTION(0, 2, "CIF_DD<0>"),
  419. PXA_FUNCTION(0, 3, "KP_MKIN<4>"),
  420. PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
  421. PXA_FUNCTION(1, 3, "FFRTS")),
  422. PXA_GPIO_PIN(PXA_PINCTRL_PIN(99),
  423. PXA_FUNCTION(0, 1, "KP_DKIN<6>"),
  424. PXA_FUNCTION(0, 2, "AC97_SDATA_IN_1"),
  425. PXA_FUNCTION(0, 3, "KP_MKIN<5>"),
  426. PXA_FUNCTION(1, 3, "FFTXD")),
  427. PXA_GPIO_PIN(PXA_PINCTRL_PIN(100),
  428. PXA_FUNCTION(0, 1, "KP_MKIN<0>"),
  429. PXA_FUNCTION(0, 2, "DREQ<2>"),
  430. PXA_FUNCTION(0, 3, "FFCTS")),
  431. PXA_GPIO_PIN(PXA_PINCTRL_PIN(101),
  432. PXA_FUNCTION(0, 1, "KP_MKIN<1>")),
  433. PXA_GPIO_PIN(PXA_PINCTRL_PIN(102),
  434. PXA_FUNCTION(0, 1, "KP_MKIN<2>"),
  435. PXA_FUNCTION(0, 3, "FFRXD"),
  436. PXA_FUNCTION(1, 1, "nPCE<1>")),
  437. PXA_GPIO_PIN(PXA_PINCTRL_PIN(103),
  438. PXA_FUNCTION(0, 1, "CIF_DD<3>"),
  439. PXA_FUNCTION(1, 2, "KP_MKOUT<0>")),
  440. PXA_GPIO_PIN(PXA_PINCTRL_PIN(104),
  441. PXA_FUNCTION(0, 1, "CIF_DD<2>"),
  442. PXA_FUNCTION(1, 1, "PSKTSEL"),
  443. PXA_FUNCTION(1, 2, "KP_MKOUT<1>")),
  444. PXA_GPIO_PIN(PXA_PINCTRL_PIN(105),
  445. PXA_FUNCTION(0, 1, "CIF_DD<1>"),
  446. PXA_FUNCTION(1, 1, "nPCE<2>"),
  447. PXA_FUNCTION(1, 2, "KP_MKOUT<2>")),
  448. PXA_GPIO_PIN(PXA_PINCTRL_PIN(106),
  449. PXA_FUNCTION(0, 1, "CIF_DD<9>"),
  450. PXA_FUNCTION(1, 2, "KP_MKOUT<3>")),
  451. PXA_GPIO_PIN(PXA_PINCTRL_PIN(107),
  452. PXA_FUNCTION(0, 1, "CIF_DD<8>"),
  453. PXA_FUNCTION(1, 2, "KP_MKOUT<4>")),
  454. PXA_GPIO_PIN(PXA_PINCTRL_PIN(108),
  455. PXA_FUNCTION(0, 1, "CIF_DD<7>"),
  456. PXA_FUNCTION(1, 1, "CHOUT<0>"),
  457. PXA_FUNCTION(1, 2, "KP_MKOUT<5>")),
  458. PXA_GPIO_PIN(PXA_PINCTRL_PIN(109),
  459. PXA_FUNCTION(0, 1, "MMDAT<1>"),
  460. PXA_FUNCTION(0, 2, "MSSDIO"),
  461. PXA_FUNCTION(1, 1, "MMDAT<1>"),
  462. PXA_FUNCTION(1, 2, "MSSDIO")),
  463. PXA_GPIO_PIN(PXA_PINCTRL_PIN(110),
  464. PXA_FUNCTION(0, 1, "MMDAT<2>"),
  465. PXA_FUNCTION(1, 1, "MMDAT<2>")),
  466. PXA_GPIO_PIN(PXA_PINCTRL_PIN(111),
  467. PXA_FUNCTION(0, 1, "MMDAT<3>"),
  468. PXA_FUNCTION(1, 1, "MMDAT<3>")),
  469. PXA_GPIO_PIN(PXA_PINCTRL_PIN(112),
  470. PXA_FUNCTION(0, 1, "MMCMD"),
  471. PXA_FUNCTION(0, 2, "nMSINS"),
  472. PXA_FUNCTION(1, 1, "MMCMD")),
  473. PXA_GPIO_PIN(PXA_PINCTRL_PIN(113),
  474. PXA_FUNCTION(0, 3, "USB_P3_3"),
  475. PXA_FUNCTION(1, 1, "I2S_SYSCLK"),
  476. PXA_FUNCTION(1, 2, "AC97_RESET_n")),
  477. PXA_GPIO_PIN(PXA_PINCTRL_PIN(114),
  478. PXA_FUNCTION(0, 1, "CIF_DD<1>"),
  479. PXA_FUNCTION(1, 1, "UEN"),
  480. PXA_FUNCTION(1, 2, "UVS0")),
  481. PXA_GPIO_PIN(PXA_PINCTRL_PIN(115),
  482. PXA_FUNCTION(0, 1, "DREQ<0>"),
  483. PXA_FUNCTION(0, 2, "CIF_DD<3>"),
  484. PXA_FUNCTION(0, 3, "MBREQ"),
  485. PXA_FUNCTION(1, 1, "UEN"),
  486. PXA_FUNCTION(1, 2, "nUVS1"),
  487. PXA_FUNCTION(1, 3, "PWM_OUT<1>")),
  488. PXA_GPIO_PIN(PXA_PINCTRL_PIN(116),
  489. PXA_FUNCTION(0, 1, "CIF_DD<2>"),
  490. PXA_FUNCTION(0, 2, "AC97_SDATA_IN_0"),
  491. PXA_FUNCTION(0, 3, "UDET"),
  492. PXA_FUNCTION(1, 1, "DVAL<0>"),
  493. PXA_FUNCTION(1, 2, "nUVS2"),
  494. PXA_FUNCTION(1, 3, "MBGNT")),
  495. PXA_GPIO_PIN(PXA_PINCTRL_PIN(117),
  496. PXA_FUNCTION(0, 1, "SCL"),
  497. PXA_FUNCTION(1, 1, "SCL")),
  498. PXA_GPIO_PIN(PXA_PINCTRL_PIN(118),
  499. PXA_FUNCTION(0, 1, "SDA"),
  500. PXA_FUNCTION(1, 1, "SDA")),
  501. PXA_GPIO_PIN(PXA_PINCTRL_PIN(119),
  502. PXA_FUNCTION(0, 1, "USBHPWR<2>")),
  503. PXA_GPIO_PIN(PXA_PINCTRL_PIN(120),
  504. PXA_FUNCTION(1, 2, "USBHPEN<2>")),
  505. };
  506. static int pxa27x_pinctrl_probe(struct platform_device *pdev)
  507. {
  508. int ret, i;
  509. void __iomem *base_af[8];
  510. void __iomem *base_dir[4];
  511. void __iomem *base_sleep[4];
  512. struct resource *res;
  513. res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  514. base_af[0] = devm_ioremap_resource(&pdev->dev, res);
  515. if (IS_ERR(base_af[0]))
  516. return PTR_ERR(base_af[0]);
  517. res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
  518. base_dir[0] = devm_ioremap_resource(&pdev->dev, res);
  519. if (IS_ERR(base_dir[0]))
  520. return PTR_ERR(base_dir[0]);
  521. res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
  522. base_dir[3] = devm_ioremap_resource(&pdev->dev, res);
  523. if (IS_ERR(base_dir[3]))
  524. return PTR_ERR(base_dir[3]);
  525. res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
  526. base_sleep[0] = devm_ioremap_resource(&pdev->dev, res);
  527. if (IS_ERR(base_sleep[0]))
  528. return PTR_ERR(base_sleep[0]);
  529. for (i = 0; i < ARRAY_SIZE(base_af); i++)
  530. base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
  531. for (i = 0; i < 3; i++)
  532. base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
  533. for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
  534. base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
  535. ret = pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
  536. base_af, base_dir, base_sleep);
  537. return ret;
  538. }
  539. static const struct of_device_id pxa27x_pinctrl_match[] = {
  540. { .compatible = "marvell,pxa27x-pinctrl", },
  541. {}
  542. };
  543. MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
  544. static struct platform_driver pxa27x_pinctrl_driver = {
  545. .probe = pxa27x_pinctrl_probe,
  546. .driver = {
  547. .name = "pxa27x-pinctrl",
  548. .of_match_table = pxa27x_pinctrl_match,
  549. },
  550. };
  551. module_platform_driver(pxa27x_pinctrl_driver);
  552. MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
  553. MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
  554. MODULE_LICENSE("GPL v2");