pinctrl-zx296718.c 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028
  1. /*
  2. * Copyright (C) 2017 Sanechips Technology Co., Ltd.
  3. * Copyright 2017 Linaro Ltd.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. */
  9. #include <linux/module.h>
  10. #include <linux/of.h>
  11. #include <linux/of_address.h>
  12. #include <linux/of_device.h>
  13. #include <linux/pinctrl/pinctrl.h>
  14. #include <linux/platform_device.h>
  15. #include "pinctrl-zx.h"
  16. #define TOP_REG0 0x00
  17. #define TOP_REG1 0x04
  18. #define TOP_REG2 0x08
  19. #define TOP_REG3 0x0c
  20. #define TOP_REG4 0x10
  21. #define TOP_REG5 0x14
  22. #define TOP_REG6 0x18
  23. #define TOP_REG7 0x1c
  24. #define TOP_REG8 0x20
  25. /*
  26. * The pin numbering starts from AON pins with reserved ones included,
  27. * so that register data like offset and bit position for AON pins can
  28. * be calculated from pin number.
  29. */
  30. enum zx296718_pin {
  31. /* aon_pmm_reg_0 */
  32. I2C3_SCL = 0,
  33. I2C3_SDA = 1,
  34. AON_RESERVED0 = 2,
  35. AON_RESERVED1 = 3,
  36. SEC_EN = 4,
  37. UART0_RXD = 5,
  38. UART0_TXD = 6,
  39. IR_IN = 7,
  40. SPI0_CLK = 8,
  41. SPI0_CS = 9,
  42. SPI0_TXD = 10,
  43. SPI0_RXD = 11,
  44. KEY_COL0 = 12,
  45. KEY_COL1 = 13,
  46. KEY_COL2 = 14,
  47. KEY_ROW0 = 15,
  48. /* aon_pmm_reg_1 */
  49. KEY_ROW1 = 16,
  50. KEY_ROW2 = 17,
  51. HDMI_SCL = 18,
  52. HDMI_SDA = 19,
  53. JTAG_TCK = 20,
  54. JTAG_TRSTN = 21,
  55. JTAG_TMS = 22,
  56. JTAG_TDI = 23,
  57. JTAG_TDO = 24,
  58. I2C0_SCL = 25,
  59. I2C0_SDA = 26,
  60. I2C1_SCL = 27,
  61. I2C1_SDA = 28,
  62. AON_RESERVED2 = 29,
  63. AON_RESERVED3 = 30,
  64. AON_RESERVED4 = 31,
  65. /* aon_pmm_reg_2 */
  66. SPI1_CLK = 32,
  67. SPI1_CS = 33,
  68. SPI1_TXD = 34,
  69. SPI1_RXD = 35,
  70. AON_RESERVED5 = 36,
  71. AON_RESERVED6 = 37,
  72. AUDIO_DET = 38,
  73. SPDIF_OUT = 39,
  74. HDMI_CEC = 40,
  75. HDMI_HPD = 41,
  76. GMAC_25M_OUT = 42,
  77. BOOT_SEL0 = 43,
  78. BOOT_SEL1 = 44,
  79. BOOT_SEL2 = 45,
  80. DEEP_SLEEP_OUT_N = 46,
  81. AON_RESERVED7 = 47,
  82. /* top_pmm_reg_0 */
  83. GMII_GTX_CLK = 48,
  84. GMII_TX_CLK = 49,
  85. GMII_TXD0 = 50,
  86. GMII_TXD1 = 51,
  87. GMII_TXD2 = 52,
  88. GMII_TXD3 = 53,
  89. GMII_TXD4 = 54,
  90. GMII_TXD5 = 55,
  91. GMII_TXD6 = 56,
  92. GMII_TXD7 = 57,
  93. GMII_TX_ER = 58,
  94. GMII_TX_EN = 59,
  95. GMII_RX_CLK = 60,
  96. GMII_RXD0 = 61,
  97. GMII_RXD1 = 62,
  98. GMII_RXD2 = 63,
  99. /* top_pmm_reg_1 */
  100. GMII_RXD3 = 64,
  101. GMII_RXD4 = 65,
  102. GMII_RXD5 = 66,
  103. GMII_RXD6 = 67,
  104. GMII_RXD7 = 68,
  105. GMII_RX_ER = 69,
  106. GMII_RX_DV = 70,
  107. GMII_COL = 71,
  108. GMII_CRS = 72,
  109. GMII_MDC = 73,
  110. GMII_MDIO = 74,
  111. SDIO1_CLK = 75,
  112. SDIO1_CMD = 76,
  113. SDIO1_DATA0 = 77,
  114. SDIO1_DATA1 = 78,
  115. SDIO1_DATA2 = 79,
  116. /* top_pmm_reg_2 */
  117. SDIO1_DATA3 = 80,
  118. SDIO1_CD = 81,
  119. SDIO1_WP = 82,
  120. USIM1_CD = 83,
  121. USIM1_CLK = 84,
  122. USIM1_RST = 85,
  123. /* top_pmm_reg_3 */
  124. USIM1_DATA = 86,
  125. SDIO0_CLK = 87,
  126. SDIO0_CMD = 88,
  127. SDIO0_DATA0 = 89,
  128. SDIO0_DATA1 = 90,
  129. SDIO0_DATA2 = 91,
  130. SDIO0_DATA3 = 92,
  131. SDIO0_CD = 93,
  132. SDIO0_WP = 94,
  133. /* top_pmm_reg_4 */
  134. TSI0_DATA0 = 95,
  135. SPINOR_CLK = 96,
  136. TSI2_DATA = 97,
  137. TSI2_CLK = 98,
  138. TSI2_SYNC = 99,
  139. TSI2_VALID = 100,
  140. SPINOR_CS = 101,
  141. SPINOR_DQ0 = 102,
  142. SPINOR_DQ1 = 103,
  143. SPINOR_DQ2 = 104,
  144. SPINOR_DQ3 = 105,
  145. VGA_HS = 106,
  146. VGA_VS = 107,
  147. TSI3_DATA = 108,
  148. /* top_pmm_reg_5 */
  149. TSI3_CLK = 109,
  150. TSI3_SYNC = 110,
  151. TSI3_VALID = 111,
  152. I2S1_WS = 112,
  153. I2S1_BCLK = 113,
  154. I2S1_MCLK = 114,
  155. I2S1_DIN0 = 115,
  156. I2S1_DOUT0 = 116,
  157. SPI3_CLK = 117,
  158. SPI3_CS = 118,
  159. SPI3_TXD = 119,
  160. NAND_LDO_MS18_SEL = 120,
  161. /* top_pmm_reg_6 */
  162. SPI3_RXD = 121,
  163. I2S0_MCLK = 122,
  164. I2S0_BCLK = 123,
  165. I2S0_WS = 124,
  166. I2S0_DIN0 = 125,
  167. I2S0_DOUT0 = 126,
  168. I2C5_SCL = 127,
  169. I2C5_SDA = 128,
  170. SPI2_CLK = 129,
  171. SPI2_CS = 130,
  172. SPI2_TXD = 131,
  173. /* top_pmm_reg_7 */
  174. SPI2_RXD = 132,
  175. NAND_WP_N = 133,
  176. NAND_PAGE_SIZE0 = 134,
  177. NAND_PAGE_SIZE1 = 135,
  178. NAND_ADDR_CYCLE = 136,
  179. NAND_RB0 = 137,
  180. NAND_RB1 = 138,
  181. NAND_RB2 = 139,
  182. NAND_RB3 = 140,
  183. /* top_pmm_reg_8 */
  184. GMAC_125M_IN = 141,
  185. GMAC_50M_OUT = 142,
  186. SPINOR_SSCLK_LOOPBACK = 143,
  187. SPINOR_SDIO1CLK_LOOPBACK = 144,
  188. };
  189. static const struct pinctrl_pin_desc zx296718_pins[] = {
  190. /* aon_pmm_reg_0 */
  191. AON_PIN(I2C3_SCL, TOP_REG2, 18, 2, 0x48, 0,
  192. AON_MUX(0x0, "ANMI"), /* anmi */
  193. AON_MUX(0x1, "AGPIO"), /* agpio29 */
  194. AON_MUX(0x2, "nonAON"), /* pin0 */
  195. AON_MUX(0x3, "EXT_INT"), /* int4 */
  196. TOP_MUX(0x0, "I2C3"), /* scl */
  197. TOP_MUX(0x1, "SPI2"), /* txd */
  198. TOP_MUX(0x2, "I2S1")), /* din0 */
  199. AON_PIN(I2C3_SDA, TOP_REG2, 20, 2, 0x48, 9,
  200. AON_MUX(0x0, "WD"), /* rst_b */
  201. AON_MUX(0x1, "AGPIO"), /* agpio30 */
  202. AON_MUX(0x2, "nonAON"), /* pin1 */
  203. AON_MUX(0x3, "EXT_INT"), /* int5 */
  204. TOP_MUX(0x0, "I2C3"), /* sda */
  205. TOP_MUX(0x1, "SPI2"), /* rxd */
  206. TOP_MUX(0x2, "I2S0")), /* mclk */
  207. ZX_RESERVED(AON_RESERVED0),
  208. ZX_RESERVED(AON_RESERVED1),
  209. AON_PIN(SEC_EN, TOP_REG3, 5, 1, 0x50, 0,
  210. AON_MUX(0x0, "SEC"), /* en */
  211. AON_MUX(0x1, "AGPIO"), /* agpio28 */
  212. AON_MUX(0x2, "nonAON"), /* pin3 */
  213. AON_MUX(0x3, "EXT_INT"), /* int7 */
  214. TOP_MUX(0x0, "I2C2"), /* sda */
  215. TOP_MUX(0x1, "SPI2")), /* cs */
  216. AON_PIN(UART0_RXD, 0, 0, 0, 0x50, 9,
  217. AON_MUX(0x0, "UART0"), /* rxd */
  218. AON_MUX(0x1, "AGPIO"), /* agpio20 */
  219. AON_MUX(0x2, "nonAON")), /* pin34 */
  220. AON_PIN(UART0_TXD, 0, 0, 0, 0x50, 18,
  221. AON_MUX(0x0, "UART0"), /* txd */
  222. AON_MUX(0x1, "AGPIO"), /* agpio21 */
  223. AON_MUX(0x2, "nonAON")), /* pin32 */
  224. AON_PIN(IR_IN, 0, 0, 0, 0x64, 0,
  225. AON_MUX(0x0, "IR"), /* in */
  226. AON_MUX(0x1, "AGPIO"), /* agpio0 */
  227. AON_MUX(0x2, "nonAON")), /* pin27 */
  228. AON_PIN(SPI0_CLK, TOP_REG3, 16, 1, 0x64, 9,
  229. AON_MUX(0x0, "EXT_INT"), /* int0 */
  230. AON_MUX(0x1, "AGPIO"), /* agpio23 */
  231. AON_MUX(0x2, "nonAON"), /* pin5 */
  232. AON_MUX(0x3, "PCU"), /* test6 */
  233. TOP_MUX(0x0, "SPI0"), /* clk */
  234. TOP_MUX(0x1, "ISP")), /* flash_trig */
  235. AON_PIN(SPI0_CS, TOP_REG3, 17, 1, 0x64, 18,
  236. AON_MUX(0x0, "EXT_INT"), /* int1 */
  237. AON_MUX(0x1, "AGPIO"), /* agpio24 */
  238. AON_MUX(0x2, "nonAON"), /* pin6 */
  239. AON_MUX(0x3, "PCU"), /* test0 */
  240. TOP_MUX(0x0, "SPI0"), /* cs */
  241. TOP_MUX(0x1, "ISP")), /* prelight_trig */
  242. AON_PIN(SPI0_TXD, TOP_REG3, 18, 1, 0x68, 0,
  243. AON_MUX(0x0, "EXT_INT"), /* int2 */
  244. AON_MUX(0x1, "AGPIO"), /* agpio25 */
  245. AON_MUX(0x2, "nonAON"), /* pin7 */
  246. AON_MUX(0x3, "PCU"), /* test1 */
  247. TOP_MUX(0x0, "SPI0"), /* txd */
  248. TOP_MUX(0x1, "ISP")), /* shutter_trig */
  249. AON_PIN(SPI0_RXD, TOP_REG3, 19, 1, 0x68, 9,
  250. AON_MUX(0x0, "EXT_INT"), /* int3 */
  251. AON_MUX(0x1, "AGPIO"), /* agpio26 */
  252. AON_MUX(0x2, "nonAON"), /* pin8 */
  253. AON_MUX(0x3, "PCU"), /* test2 */
  254. TOP_MUX(0x0, "SPI0"), /* rxd */
  255. TOP_MUX(0x1, "ISP")), /* shutter_open */
  256. AON_PIN(KEY_COL0, TOP_REG3, 20, 1, 0x68, 18,
  257. AON_MUX(0x0, "KEY"), /* col0 */
  258. AON_MUX(0x1, "AGPIO"), /* agpio5 */
  259. AON_MUX(0x2, "nonAON"), /* pin9 */
  260. AON_MUX(0x3, "PCU"), /* test3 */
  261. TOP_MUX(0x0, "UART3"), /* rxd */
  262. TOP_MUX(0x1, "I2S0")), /* din1 */
  263. AON_PIN(KEY_COL1, TOP_REG3, 21, 2, 0x6c, 0,
  264. AON_MUX(0x0, "KEY"), /* col1 */
  265. AON_MUX(0x1, "AGPIO"), /* agpio6 */
  266. AON_MUX(0x2, "nonAON"), /* pin10 */
  267. TOP_MUX(0x0, "UART3"), /* txd */
  268. TOP_MUX(0x1, "I2S0"), /* din2 */
  269. TOP_MUX(0x2, "VGA")), /* scl */
  270. AON_PIN(KEY_COL2, TOP_REG3, 23, 2, 0x6c, 9,
  271. AON_MUX(0x0, "KEY"), /* col2 */
  272. AON_MUX(0x1, "AGPIO"), /* agpio7 */
  273. AON_MUX(0x2, "nonAON"), /* pin11 */
  274. TOP_MUX(0x0, "PWM"), /* out1 */
  275. TOP_MUX(0x1, "I2S0"), /* din3 */
  276. TOP_MUX(0x2, "VGA")), /* sda */
  277. AON_PIN(KEY_ROW0, 0, 0, 0, 0x6c, 18,
  278. AON_MUX(0x0, "KEY"), /* row0 */
  279. AON_MUX(0x1, "AGPIO"), /* agpio8 */
  280. AON_MUX(0x2, "nonAON"), /* pin33 */
  281. AON_MUX(0x3, "WD")), /* rst_b */
  282. /* aon_pmm_reg_1 */
  283. AON_PIN(KEY_ROW1, TOP_REG3, 25, 2, 0x70, 0,
  284. AON_MUX(0x0, "KEY"), /* row1 */
  285. AON_MUX(0x1, "AGPIO"), /* agpio9 */
  286. AON_MUX(0x2, "nonAON"), /* pin12 */
  287. TOP_MUX(0x0, "LCD"), /* port0 lcd_te */
  288. TOP_MUX(0x1, "I2S0"), /* dout2 */
  289. TOP_MUX(0x2, "PWM"), /* out2 */
  290. TOP_MUX(0x3, "VGA")), /* hs1 */
  291. AON_PIN(KEY_ROW2, TOP_REG3, 27, 2, 0x70, 9,
  292. AON_MUX(0x0, "KEY"), /* row2 */
  293. AON_MUX(0x1, "AGPIO"), /* agpio10 */
  294. AON_MUX(0x2, "nonAON"), /* pin13 */
  295. TOP_MUX(0x0, "LCD"), /* port1 lcd_te */
  296. TOP_MUX(0x1, "I2S0"), /* dout3 */
  297. TOP_MUX(0x2, "PWM"), /* out3 */
  298. TOP_MUX(0x3, "VGA")), /* vs1 */
  299. AON_PIN(HDMI_SCL, TOP_REG3, 29, 1, 0x70, 18,
  300. AON_MUX(0x0, "PCU"), /* test7 */
  301. AON_MUX(0x1, "AGPIO"), /* agpio3 */
  302. AON_MUX(0x2, "nonAON"), /* pin14 */
  303. TOP_MUX(0x0, "HDMI"), /* scl */
  304. TOP_MUX(0x1, "UART3")), /* rxd */
  305. AON_PIN(HDMI_SDA, TOP_REG3, 30, 1, 0x74, 0,
  306. AON_MUX(0x0, "PCU"), /* test8 */
  307. AON_MUX(0x1, "AGPIO"), /* agpio4 */
  308. AON_MUX(0x2, "nonAON"), /* pin15 */
  309. TOP_MUX(0x0, "HDMI"), /* sda */
  310. TOP_MUX(0x1, "UART3")), /* txd */
  311. AON_PIN(JTAG_TCK, TOP_REG7, 3, 1, 0x78, 18,
  312. AON_MUX(0x0, "JTAG"), /* tck */
  313. AON_MUX(0x1, "AGPIO"), /* agpio11 */
  314. AON_MUX(0x2, "nonAON"), /* pin22 */
  315. AON_MUX(0x3, "EXT_INT"), /* int4 */
  316. TOP_MUX(0x0, "SPI4"), /* clk */
  317. TOP_MUX(0x1, "UART1")), /* rxd */
  318. AON_PIN(JTAG_TRSTN, TOP_REG7, 4, 1, 0xac, 0,
  319. AON_MUX(0x0, "JTAG"), /* trstn */
  320. AON_MUX(0x1, "AGPIO"), /* agpio12 */
  321. AON_MUX(0x2, "nonAON"), /* pin23 */
  322. AON_MUX(0x3, "EXT_INT"), /* int5 */
  323. TOP_MUX(0x0, "SPI4"), /* cs */
  324. TOP_MUX(0x1, "UART1")), /* txd */
  325. AON_PIN(JTAG_TMS, TOP_REG7, 5, 1, 0xac, 9,
  326. AON_MUX(0x0, "JTAG"), /* tms */
  327. AON_MUX(0x1, "AGPIO"), /* agpio13 */
  328. AON_MUX(0x2, "nonAON"), /* pin24 */
  329. AON_MUX(0x3, "EXT_INT"), /* int6 */
  330. TOP_MUX(0x0, "SPI4"), /* txd */
  331. TOP_MUX(0x1, "UART2")), /* rxd */
  332. AON_PIN(JTAG_TDI, TOP_REG7, 6, 1, 0xac, 18,
  333. AON_MUX(0x0, "JTAG"), /* tdi */
  334. AON_MUX(0x1, "AGPIO"), /* agpio14 */
  335. AON_MUX(0x2, "nonAON"), /* pin25 */
  336. AON_MUX(0x3, "EXT_INT"), /* int7 */
  337. TOP_MUX(0x0, "SPI4"), /* rxd */
  338. TOP_MUX(0x1, "UART2")), /* txd */
  339. AON_PIN(JTAG_TDO, 0, 0, 0, 0xb0, 0,
  340. AON_MUX(0x0, "JTAG"), /* tdo */
  341. AON_MUX(0x1, "AGPIO"), /* agpio15 */
  342. AON_MUX(0x2, "nonAON")), /* pin26 */
  343. AON_PIN(I2C0_SCL, 0, 0, 0, 0xb0, 9,
  344. AON_MUX(0x0, "I2C0"), /* scl */
  345. AON_MUX(0x1, "AGPIO"), /* agpio16 */
  346. AON_MUX(0x2, "nonAON")), /* pin28 */
  347. AON_PIN(I2C0_SDA, 0, 0, 0, 0xb0, 18,
  348. AON_MUX(0x0, "I2C0"), /* sda */
  349. AON_MUX(0x1, "AGPIO"), /* agpio17 */
  350. AON_MUX(0x2, "nonAON")), /* pin29 */
  351. AON_PIN(I2C1_SCL, TOP_REG8, 4, 1, 0xb4, 0,
  352. AON_MUX(0x0, "I2C1"), /* scl */
  353. AON_MUX(0x1, "AGPIO"), /* agpio18 */
  354. AON_MUX(0x2, "nonAON"), /* pin30 */
  355. TOP_MUX(0x0, "LCD")), /* port0 lcd_te */
  356. AON_PIN(I2C1_SDA, TOP_REG8, 5, 1, 0xb4, 9,
  357. AON_MUX(0x0, "I2C1"), /* sda */
  358. AON_MUX(0x1, "AGPIO"), /* agpio19 */
  359. AON_MUX(0x2, "nonAON"), /* pin31 */
  360. TOP_MUX(0x0, "LCD")), /* port1 lcd_te */
  361. ZX_RESERVED(AON_RESERVED2),
  362. ZX_RESERVED(AON_RESERVED3),
  363. ZX_RESERVED(AON_RESERVED4),
  364. /* aon_pmm_reg_2 */
  365. AON_PIN(SPI1_CLK, TOP_REG2, 6, 3, 0x40, 9,
  366. AON_MUX(0x0, "EXT_INT"), /* int0 */
  367. AON_MUX(0x1, "PCU"), /* test12 */
  368. AON_MUX(0x2, "nonAON"), /* pin39 */
  369. TOP_MUX(0x0, "SPI1"), /* clk */
  370. TOP_MUX(0x1, "PCM"), /* clk */
  371. TOP_MUX(0x2, "BGPIO"), /* gpio35 */
  372. TOP_MUX(0x3, "I2C4"), /* scl */
  373. TOP_MUX(0x4, "I2S1"), /* mclk */
  374. TOP_MUX(0x5, "ISP")), /* flash_trig */
  375. AON_PIN(SPI1_CS, TOP_REG2, 9, 3, 0x40, 18,
  376. AON_MUX(0x0, "EXT_INT"), /* int1 */
  377. AON_MUX(0x1, "PCU"), /* test13 */
  378. AON_MUX(0x2, "nonAON"), /* pin40 */
  379. TOP_MUX(0x0, "SPI1"), /* cs */
  380. TOP_MUX(0x1, "PCM"), /* fs */
  381. TOP_MUX(0x2, "BGPIO"), /* gpio36 */
  382. TOP_MUX(0x3, "I2C4"), /* sda */
  383. TOP_MUX(0x4, "I2S1"), /* bclk */
  384. TOP_MUX(0x5, "ISP")), /* prelight_trig */
  385. AON_PIN(SPI1_TXD, TOP_REG2, 12, 3, 0x44, 0,
  386. AON_MUX(0x0, "EXT_INT"), /* int2 */
  387. AON_MUX(0x1, "PCU"), /* test14 */
  388. AON_MUX(0x2, "nonAON"), /* pin41 */
  389. TOP_MUX(0x0, "SPI1"), /* txd */
  390. TOP_MUX(0x1, "PCM"), /* txd */
  391. TOP_MUX(0x2, "BGPIO"), /* gpio37 */
  392. TOP_MUX(0x3, "UART5"), /* rxd */
  393. TOP_MUX(0x4, "I2S1"), /* ws */
  394. TOP_MUX(0x5, "ISP")), /* shutter_trig */
  395. AON_PIN(SPI1_RXD, TOP_REG2, 15, 3, 0x44, 9,
  396. AON_MUX(0x0, "EXT_INT"), /* int3 */
  397. AON_MUX(0x1, "PCU"), /* test15 */
  398. AON_MUX(0x2, "nonAON"), /* pin42 */
  399. TOP_MUX(0x0, "SPI1"), /* rxd */
  400. TOP_MUX(0x1, "PCM"), /* rxd */
  401. TOP_MUX(0x2, "BGPIO"), /* gpio38 */
  402. TOP_MUX(0x3, "UART5"), /* txd */
  403. TOP_MUX(0x4, "I2S1"), /* dout0 */
  404. TOP_MUX(0x5, "ISP")), /* shutter_open */
  405. ZX_RESERVED(AON_RESERVED5),
  406. ZX_RESERVED(AON_RESERVED6),
  407. AON_PIN(AUDIO_DET, TOP_REG3, 3, 2, 0x48, 18,
  408. AON_MUX(0x0, "PCU"), /* test4 */
  409. AON_MUX(0x1, "AGPIO"), /* agpio27 */
  410. AON_MUX(0x2, "nonAON"), /* pin2 */
  411. AON_MUX(0x3, "EXT_INT"), /* int16 */
  412. TOP_MUX(0x0, "AUDIO"), /* detect */
  413. TOP_MUX(0x1, "I2C2"), /* scl */
  414. TOP_MUX(0x2, "SPI2")), /* clk */
  415. AON_PIN(SPDIF_OUT, TOP_REG3, 14, 2, 0x78, 9,
  416. AON_MUX(0x0, "PCU"), /* test5 */
  417. AON_MUX(0x1, "AGPIO"), /* agpio22 */
  418. AON_MUX(0x2, "nonAON"), /* pin4 */
  419. TOP_MUX(0x0, "SPDIF"), /* out */
  420. TOP_MUX(0x1, "PWM"), /* out0 */
  421. TOP_MUX(0x2, "ISP")), /* fl_trig */
  422. AON_PIN(HDMI_CEC, 0, 0, 0, 0x74, 9,
  423. AON_MUX(0x0, "PCU"), /* test9 */
  424. AON_MUX(0x1, "AGPIO"), /* agpio1 */
  425. AON_MUX(0x2, "nonAON")), /* pin16 */
  426. AON_PIN(HDMI_HPD, 0, 0, 0, 0x74, 18,
  427. AON_MUX(0x0, "PCU"), /* test10 */
  428. AON_MUX(0x1, "AGPIO"), /* agpio2 */
  429. AON_MUX(0x2, "nonAON")), /* pin17 */
  430. AON_PIN(GMAC_25M_OUT, 0, 0, 0, 0x78, 0,
  431. AON_MUX(0x0, "PCU"), /* test11 */
  432. AON_MUX(0x1, "AGPIO"), /* agpio31 */
  433. AON_MUX(0x2, "nonAON")), /* pin43 */
  434. AON_PIN(BOOT_SEL0, 0, 0, 0, 0xc0, 9,
  435. AON_MUX(0x0, "BOOT"), /* sel0 */
  436. AON_MUX(0x1, "AGPIO"), /* agpio18 */
  437. AON_MUX(0x2, "nonAON")), /* pin18 */
  438. AON_PIN(BOOT_SEL1, 0, 0, 0, 0xc0, 18,
  439. AON_MUX(0x0, "BOOT"), /* sel1 */
  440. AON_MUX(0x1, "AGPIO"), /* agpio19 */
  441. AON_MUX(0x2, "nonAON")), /* pin19 */
  442. AON_PIN(BOOT_SEL2, 0, 0, 0, 0xc4, 0,
  443. AON_MUX(0x0, "BOOT"), /* sel2 */
  444. AON_MUX(0x1, "AGPIO"), /* agpio20 */
  445. AON_MUX(0x2, "nonAON")), /* pin20 */
  446. AON_PIN(DEEP_SLEEP_OUT_N, 0, 0, 0, 0xc4, 9,
  447. AON_MUX(0x0, "DEEPSLP"), /* deep sleep out_n */
  448. AON_MUX(0x1, "AGPIO"), /* agpio21 */
  449. AON_MUX(0x2, "nonAON")), /* pin21 */
  450. ZX_RESERVED(AON_RESERVED7),
  451. /* top_pmm_reg_0 */
  452. TOP_PIN(GMII_GTX_CLK, TOP_REG0, 0, 2, 0x10, 0,
  453. TOP_MUX(0x0, "GMII"), /* gtx_clk */
  454. TOP_MUX(0x1, "DVI0"), /* clk */
  455. TOP_MUX(0x2, "BGPIO")), /* gpio0 */
  456. TOP_PIN(GMII_TX_CLK, TOP_REG0, 2, 2, 0x10, 9,
  457. TOP_MUX(0x0, "GMII"), /* tx_clk */
  458. TOP_MUX(0x1, "DVI0"), /* vs */
  459. TOP_MUX(0x2, "BGPIO")), /* gpio1 */
  460. TOP_PIN(GMII_TXD0, TOP_REG0, 4, 2, 0x10, 18,
  461. TOP_MUX(0x0, "GMII"), /* txd0 */
  462. TOP_MUX(0x1, "DVI0"), /* hs */
  463. TOP_MUX(0x2, "BGPIO")), /* gpio2 */
  464. TOP_PIN(GMII_TXD1, TOP_REG0, 6, 2, 0x14, 0,
  465. TOP_MUX(0x0, "GMII"), /* txd1 */
  466. TOP_MUX(0x1, "DVI0"), /* d0 */
  467. TOP_MUX(0x2, "BGPIO")), /* gpio3 */
  468. TOP_PIN(GMII_TXD2, TOP_REG0, 8, 2, 0x14, 9,
  469. TOP_MUX(0x0, "GMII"), /* txd2 */
  470. TOP_MUX(0x1, "DVI0"), /* d1 */
  471. TOP_MUX(0x2, "BGPIO")), /* gpio4 */
  472. TOP_PIN(GMII_TXD3, TOP_REG0, 10, 2, 0x14, 18,
  473. TOP_MUX(0x0, "GMII"), /* txd3 */
  474. TOP_MUX(0x1, "DVI0"), /* d2 */
  475. TOP_MUX(0x2, "BGPIO")), /* gpio5 */
  476. TOP_PIN(GMII_TXD4, TOP_REG0, 12, 2, 0x18, 0,
  477. TOP_MUX(0x0, "GMII"), /* txd4 */
  478. TOP_MUX(0x1, "DVI0"), /* d3 */
  479. TOP_MUX(0x2, "BGPIO")), /* gpio6 */
  480. TOP_PIN(GMII_TXD5, TOP_REG0, 14, 2, 0x18, 9,
  481. TOP_MUX(0x0, "GMII"), /* txd5 */
  482. TOP_MUX(0x1, "DVI0"), /* d4 */
  483. TOP_MUX(0x2, "BGPIO")), /* gpio7 */
  484. TOP_PIN(GMII_TXD6, TOP_REG0, 16, 2, 0x18, 18,
  485. TOP_MUX(0x0, "GMII"), /* txd6 */
  486. TOP_MUX(0x1, "DVI0"), /* d5 */
  487. TOP_MUX(0x2, "BGPIO")), /* gpio8 */
  488. TOP_PIN(GMII_TXD7, TOP_REG0, 18, 2, 0x1c, 0,
  489. TOP_MUX(0x0, "GMII"), /* txd7 */
  490. TOP_MUX(0x1, "DVI0"), /* d6 */
  491. TOP_MUX(0x2, "BGPIO")), /* gpio9 */
  492. TOP_PIN(GMII_TX_ER, TOP_REG0, 20, 2, 0x1c, 9,
  493. TOP_MUX(0x0, "GMII"), /* tx_er */
  494. TOP_MUX(0x1, "DVI0"), /* d7 */
  495. TOP_MUX(0x2, "BGPIO")), /* gpio10 */
  496. TOP_PIN(GMII_TX_EN, TOP_REG0, 22, 2, 0x1c, 18,
  497. TOP_MUX(0x0, "GMII"), /* tx_en */
  498. TOP_MUX(0x1, "DVI0"), /* d8 */
  499. TOP_MUX(0x3, "BGPIO")), /* gpio11 */
  500. TOP_PIN(GMII_RX_CLK, TOP_REG0, 24, 2, 0x20, 0,
  501. TOP_MUX(0x0, "GMII"), /* rx_clk */
  502. TOP_MUX(0x1, "DVI0"), /* d9 */
  503. TOP_MUX(0x3, "BGPIO")), /* gpio12 */
  504. TOP_PIN(GMII_RXD0, TOP_REG0, 26, 2, 0x20, 9,
  505. TOP_MUX(0x0, "GMII"), /* rxd0 */
  506. TOP_MUX(0x1, "DVI0"), /* d10 */
  507. TOP_MUX(0x3, "BGPIO")), /* gpio13 */
  508. TOP_PIN(GMII_RXD1, TOP_REG0, 28, 2, 0x20, 18,
  509. TOP_MUX(0x0, "GMII"), /* rxd1 */
  510. TOP_MUX(0x1, "DVI0"), /* d11 */
  511. TOP_MUX(0x2, "BGPIO")), /* gpio14 */
  512. TOP_PIN(GMII_RXD2, TOP_REG0, 30, 2, 0x24, 0,
  513. TOP_MUX(0x0, "GMII"), /* rxd2 */
  514. TOP_MUX(0x1, "DVI1"), /* clk */
  515. TOP_MUX(0x2, "BGPIO")), /* gpio15 */
  516. /* top_pmm_reg_1 */
  517. TOP_PIN(GMII_RXD3, TOP_REG1, 0, 2, 0x24, 9,
  518. TOP_MUX(0x0, "GMII"), /* rxd3 */
  519. TOP_MUX(0x1, "DVI1"), /* hs */
  520. TOP_MUX(0x2, "BGPIO")), /* gpio16 */
  521. TOP_PIN(GMII_RXD4, TOP_REG1, 2, 2, 0x24, 18,
  522. TOP_MUX(0x0, "GMII"), /* rxd4 */
  523. TOP_MUX(0x1, "DVI1"), /* vs */
  524. TOP_MUX(0x2, "BGPIO")), /* gpio17 */
  525. TOP_PIN(GMII_RXD5, TOP_REG1, 4, 2, 0x28, 0,
  526. TOP_MUX(0x0, "GMII"), /* rxd5 */
  527. TOP_MUX(0x1, "DVI1"), /* d0 */
  528. TOP_MUX(0x2, "BGPIO"), /* gpio18 */
  529. TOP_MUX(0x3, "TSI0")), /* dat0 */
  530. TOP_PIN(GMII_RXD6, TOP_REG1, 6, 2, 0x28, 9,
  531. TOP_MUX(0x0, "GMII"), /* rxd6 */
  532. TOP_MUX(0x1, "DVI1"), /* d1 */
  533. TOP_MUX(0x2, "BGPIO"), /* gpio19 */
  534. TOP_MUX(0x3, "TSI0")), /* clk */
  535. TOP_PIN(GMII_RXD7, TOP_REG1, 8, 2, 0x28, 18,
  536. TOP_MUX(0x0, "GMII"), /* rxd7 */
  537. TOP_MUX(0x1, "DVI1"), /* d2 */
  538. TOP_MUX(0x2, "BGPIO"), /* gpio20 */
  539. TOP_MUX(0x3, "TSI0")), /* sync */
  540. TOP_PIN(GMII_RX_ER, TOP_REG1, 10, 2, 0x2c, 0,
  541. TOP_MUX(0x0, "GMII"), /* rx_er */
  542. TOP_MUX(0x1, "DVI1"), /* d3 */
  543. TOP_MUX(0x2, "BGPIO"), /* gpio21 */
  544. TOP_MUX(0x3, "TSI0")), /* valid */
  545. TOP_PIN(GMII_RX_DV, TOP_REG1, 12, 2, 0x2c, 9,
  546. TOP_MUX(0x0, "GMII"), /* rx_dv */
  547. TOP_MUX(0x1, "DVI1"), /* d4 */
  548. TOP_MUX(0x2, "BGPIO"), /* gpio22 */
  549. TOP_MUX(0x3, "TSI1")), /* dat0 */
  550. TOP_PIN(GMII_COL, TOP_REG1, 14, 2, 0x2c, 18,
  551. TOP_MUX(0x0, "GMII"), /* col */
  552. TOP_MUX(0x1, "DVI1"), /* d5 */
  553. TOP_MUX(0x2, "BGPIO"), /* gpio23 */
  554. TOP_MUX(0x3, "TSI1")), /* clk */
  555. TOP_PIN(GMII_CRS, TOP_REG1, 16, 2, 0x30, 0,
  556. TOP_MUX(0x0, "GMII"), /* crs */
  557. TOP_MUX(0x1, "DVI1"), /* d6 */
  558. TOP_MUX(0x2, "BGPIO"), /* gpio24 */
  559. TOP_MUX(0x3, "TSI1")), /* sync */
  560. TOP_PIN(GMII_MDC, TOP_REG1, 18, 2, 0x30, 9,
  561. TOP_MUX(0x0, "GMII"), /* mdc */
  562. TOP_MUX(0x1, "DVI1"), /* d7 */
  563. TOP_MUX(0x2, "BGPIO"), /* gpio25 */
  564. TOP_MUX(0x3, "TSI1")), /* valid */
  565. TOP_PIN(GMII_MDIO, TOP_REG1, 20, 1, 0x30, 18,
  566. TOP_MUX(0x0, "GMII"), /* mdio */
  567. TOP_MUX(0x2, "BGPIO")), /* gpio26 */
  568. TOP_PIN(SDIO1_CLK, TOP_REG1, 21, 2, 0x34, 18,
  569. TOP_MUX(0x0, "SDIO1"), /* clk */
  570. TOP_MUX(0x1, "USIM0"), /* clk */
  571. TOP_MUX(0x2, "BGPIO"), /* gpio27 */
  572. TOP_MUX(0x3, "SPINOR")), /* clk */
  573. TOP_PIN(SDIO1_CMD, TOP_REG1, 23, 2, 0x38, 0,
  574. TOP_MUX(0x0, "SDIO1"), /* cmd */
  575. TOP_MUX(0x1, "USIM0"), /* cd */
  576. TOP_MUX(0x2, "BGPIO"), /* gpio28 */
  577. TOP_MUX(0x3, "SPINOR")), /* cs */
  578. TOP_PIN(SDIO1_DATA0, TOP_REG1, 25, 2, 0x38, 9,
  579. TOP_MUX(0x0, "SDIO1"), /* dat0 */
  580. TOP_MUX(0x1, "USIM0"), /* rst */
  581. TOP_MUX(0x2, "BGPIO"), /* gpio29 */
  582. TOP_MUX(0x3, "SPINOR")), /* dq0 */
  583. TOP_PIN(SDIO1_DATA1, TOP_REG1, 27, 2, 0x38, 18,
  584. TOP_MUX(0x0, "SDIO1"), /* dat1 */
  585. TOP_MUX(0x1, "USIM0"), /* data */
  586. TOP_MUX(0x2, "BGPIO"), /* gpio30 */
  587. TOP_MUX(0x3, "SPINOR")), /* dq1 */
  588. TOP_PIN(SDIO1_DATA2, TOP_REG1, 29, 2, 0x3c, 0,
  589. TOP_MUX(0x0, "SDIO1"), /* dat2 */
  590. TOP_MUX(0x1, "BGPIO"), /* gpio31 */
  591. TOP_MUX(0x2, "SPINOR")), /* dq2 */
  592. /* top_pmm_reg_2 */
  593. TOP_PIN(SDIO1_DATA3, TOP_REG2, 0, 2, 0x3c, 9,
  594. TOP_MUX(0x0, "SDIO1"), /* dat3 */
  595. TOP_MUX(0x1, "BGPIO"), /* gpio32 */
  596. TOP_MUX(0x2, "SPINOR")), /* dq3 */
  597. TOP_PIN(SDIO1_CD, TOP_REG2, 2, 2, 0x3c, 18,
  598. TOP_MUX(0x0, "SDIO1"), /* cd */
  599. TOP_MUX(0x1, "BGPIO"), /* gpio33 */
  600. TOP_MUX(0x2, "ISP")), /* fl_trig */
  601. TOP_PIN(SDIO1_WP, TOP_REG2, 4, 2, 0x40, 0,
  602. TOP_MUX(0x0, "SDIO1"), /* wp */
  603. TOP_MUX(0x1, "BGPIO"), /* gpio34 */
  604. TOP_MUX(0x2, "ISP")), /* ref_clk */
  605. TOP_PIN(USIM1_CD, TOP_REG2, 22, 3, 0x44, 18,
  606. TOP_MUX(0x0, "USIM1"), /* cd */
  607. TOP_MUX(0x1, "UART4"), /* rxd */
  608. TOP_MUX(0x2, "BGPIO"), /* gpio39 */
  609. TOP_MUX(0x3, "SPI3"), /* clk */
  610. TOP_MUX(0x4, "I2S0"), /* bclk */
  611. TOP_MUX(0x5, "B_DVI0")), /* d8 */
  612. TOP_PIN(USIM1_CLK, TOP_REG2, 25, 3, 0x4c, 18,
  613. TOP_MUX(0x0, "USIM1"), /* clk */
  614. TOP_MUX(0x1, "UART4"), /* txd */
  615. TOP_MUX(0x2, "BGPIO"), /* gpio40 */
  616. TOP_MUX(0x3, "SPI3"), /* cs */
  617. TOP_MUX(0x4, "I2S0"), /* ws */
  618. TOP_MUX(0x5, "B_DVI0")), /* d9 */
  619. TOP_PIN(USIM1_RST, TOP_REG2, 28, 3, 0x4c, 0,
  620. TOP_MUX(0x0, "USIM1"), /* rst */
  621. TOP_MUX(0x1, "UART4"), /* cts */
  622. TOP_MUX(0x2, "BGPIO"), /* gpio41 */
  623. TOP_MUX(0x3, "SPI3"), /* txd */
  624. TOP_MUX(0x4, "I2S0"), /* dout0 */
  625. TOP_MUX(0x5, "B_DVI0")), /* d10 */
  626. /* top_pmm_reg_3 */
  627. TOP_PIN(USIM1_DATA, TOP_REG3, 0, 3, 0x4c, 9,
  628. TOP_MUX(0x0, "USIM1"), /* dat */
  629. TOP_MUX(0x1, "UART4"), /* rst */
  630. TOP_MUX(0x2, "BGPIO"), /* gpio42 */
  631. TOP_MUX(0x3, "SPI3"), /* rxd */
  632. TOP_MUX(0x4, "I2S0"), /* din0 */
  633. TOP_MUX(0x5, "B_DVI0")), /* d11 */
  634. TOP_PIN(SDIO0_CLK, TOP_REG3, 6, 1, 0x58, 0,
  635. TOP_MUX(0x0, "SDIO0"), /* clk */
  636. TOP_MUX(0x1, "GPIO")), /* gpio43 */
  637. TOP_PIN(SDIO0_CMD, TOP_REG3, 7, 1, 0x58, 9,
  638. TOP_MUX(0x0, "SDIO0"), /* cmd */
  639. TOP_MUX(0x1, "GPIO")), /* gpio44 */
  640. TOP_PIN(SDIO0_DATA0, TOP_REG3, 8, 1, 0x58, 18,
  641. TOP_MUX(0x0, "SDIO0"), /* dat0 */
  642. TOP_MUX(0x1, "GPIO")), /* gpio45 */
  643. TOP_PIN(SDIO0_DATA1, TOP_REG3, 9, 1, 0x5c, 0,
  644. TOP_MUX(0x0, "SDIO0"), /* dat1 */
  645. TOP_MUX(0x1, "GPIO")), /* gpio46 */
  646. TOP_PIN(SDIO0_DATA2, TOP_REG3, 10, 1, 0x5c, 9,
  647. TOP_MUX(0x0, "SDIO0"), /* dat2 */
  648. TOP_MUX(0x1, "GPIO")), /* gpio47 */
  649. TOP_PIN(SDIO0_DATA3, TOP_REG3, 11, 1, 0x5c, 18,
  650. TOP_MUX(0x0, "SDIO0"), /* dat3 */
  651. TOP_MUX(0x1, "GPIO")), /* gpio48 */
  652. TOP_PIN(SDIO0_CD, TOP_REG3, 12, 1, 0x60, 0,
  653. TOP_MUX(0x0, "SDIO0"), /* cd */
  654. TOP_MUX(0x1, "GPIO")), /* gpio49 */
  655. TOP_PIN(SDIO0_WP, TOP_REG3, 13, 1, 0x60, 9,
  656. TOP_MUX(0x0, "SDIO0"), /* wp */
  657. TOP_MUX(0x1, "GPIO")), /* gpio50 */
  658. /* top_pmm_reg_4 */
  659. TOP_PIN(TSI0_DATA0, TOP_REG4, 0, 2, 0x60, 18,
  660. TOP_MUX(0x0, "TSI0"), /* dat0 */
  661. TOP_MUX(0x1, "LCD"), /* clk */
  662. TOP_MUX(0x2, "BGPIO")), /* gpio51 */
  663. TOP_PIN(SPINOR_CLK, TOP_REG4, 2, 2, 0xa8, 18,
  664. TOP_MUX(0x0, "SPINOR"), /* clk */
  665. TOP_MUX(0x1, "TSI0"), /* dat1 */
  666. TOP_MUX(0x2, "LCD"), /* dat0 */
  667. TOP_MUX(0x3, "BGPIO")), /* gpio52 */
  668. TOP_PIN(TSI2_DATA, TOP_REG4, 4, 2, 0x7c, 0,
  669. TOP_MUX(0x0, "TSI2"), /* dat */
  670. TOP_MUX(0x1, "TSI0"), /* dat2 */
  671. TOP_MUX(0x2, "LCD"), /* dat1 */
  672. TOP_MUX(0x3, "BGPIO")), /* gpio53 */
  673. TOP_PIN(TSI2_CLK, TOP_REG4, 6, 2, 0x7c, 9,
  674. TOP_MUX(0x0, "TSI2"), /* clk */
  675. TOP_MUX(0x1, "TSI0"), /* dat3 */
  676. TOP_MUX(0x2, "LCD"), /* dat2 */
  677. TOP_MUX(0x3, "BGPIO")), /* gpio54 */
  678. TOP_PIN(TSI2_SYNC, TOP_REG4, 8, 2, 0x7c, 18,
  679. TOP_MUX(0x0, "TSI2"), /* sync */
  680. TOP_MUX(0x1, "TSI0"), /* dat4 */
  681. TOP_MUX(0x2, "LCD"), /* dat3 */
  682. TOP_MUX(0x3, "BGPIO")), /* gpio55 */
  683. TOP_PIN(TSI2_VALID, TOP_REG4, 10, 2, 0x80, 0,
  684. TOP_MUX(0x0, "TSI2"), /* valid */
  685. TOP_MUX(0x1, "TSI0"), /* dat5 */
  686. TOP_MUX(0x2, "LCD"), /* dat4 */
  687. TOP_MUX(0x3, "BGPIO")), /* gpio56 */
  688. TOP_PIN(SPINOR_CS, TOP_REG4, 12, 2, 0x80, 9,
  689. TOP_MUX(0x0, "SPINOR"), /* cs */
  690. TOP_MUX(0x1, "TSI0"), /* dat6 */
  691. TOP_MUX(0x2, "LCD"), /* dat5 */
  692. TOP_MUX(0x3, "BGPIO")), /* gpio57 */
  693. TOP_PIN(SPINOR_DQ0, TOP_REG4, 14, 2, 0x80, 18,
  694. TOP_MUX(0x0, "SPINOR"), /* dq0 */
  695. TOP_MUX(0x1, "TSI0"), /* dat7 */
  696. TOP_MUX(0x2, "LCD"), /* dat6 */
  697. TOP_MUX(0x3, "BGPIO")), /* gpio58 */
  698. TOP_PIN(SPINOR_DQ1, TOP_REG4, 16, 2, 0x84, 0,
  699. TOP_MUX(0x0, "SPINOR"), /* dq1 */
  700. TOP_MUX(0x1, "TSI0"), /* clk */
  701. TOP_MUX(0x2, "LCD"), /* dat7 */
  702. TOP_MUX(0x3, "BGPIO")), /* gpio59 */
  703. TOP_PIN(SPINOR_DQ2, TOP_REG4, 18, 2, 0x84, 9,
  704. TOP_MUX(0x0, "SPINOR"), /* dq2 */
  705. TOP_MUX(0x1, "TSI0"), /* sync */
  706. TOP_MUX(0x2, "LCD"), /* dat8 */
  707. TOP_MUX(0x3, "BGPIO")), /* gpio60 */
  708. TOP_PIN(SPINOR_DQ3, TOP_REG4, 20, 2, 0x84, 18,
  709. TOP_MUX(0x0, "SPINOR"), /* dq3 */
  710. TOP_MUX(0x1, "TSI0"), /* valid */
  711. TOP_MUX(0x2, "LCD"), /* dat9 */
  712. TOP_MUX(0x3, "BGPIO")), /* gpio61 */
  713. TOP_PIN(VGA_HS, TOP_REG4, 22, 3, 0x88, 0,
  714. TOP_MUX(0x0, "VGA"), /* hs */
  715. TOP_MUX(0x1, "TSI1"), /* dat0 */
  716. TOP_MUX(0x2, "LCD"), /* dat10 */
  717. TOP_MUX(0x3, "BGPIO"), /* gpio62 */
  718. TOP_MUX(0x4, "I2S1"), /* din1 */
  719. TOP_MUX(0x5, "B_DVI0")), /* clk */
  720. TOP_PIN(VGA_VS, TOP_REG4, 25, 3, 0x88, 9,
  721. TOP_MUX(0x0, "VGA"), /* vs0 */
  722. TOP_MUX(0x1, "TSI1"), /* dat1 */
  723. TOP_MUX(0x2, "LCD"), /* dat11 */
  724. TOP_MUX(0x3, "BGPIO"), /* gpio63 */
  725. TOP_MUX(0x4, "I2S1"), /* din2 */
  726. TOP_MUX(0x5, "B_DVI0")), /* vs */
  727. TOP_PIN(TSI3_DATA, TOP_REG4, 28, 3, 0x88, 18,
  728. TOP_MUX(0x0, "TSI3"), /* dat */
  729. TOP_MUX(0x1, "TSI1"), /* dat2 */
  730. TOP_MUX(0x2, "LCD"), /* dat12 */
  731. TOP_MUX(0x3, "BGPIO"), /* gpio64 */
  732. TOP_MUX(0x4, "I2S1"), /* din3 */
  733. TOP_MUX(0x5, "B_DVI0")), /* hs */
  734. /* top_pmm_reg_5 */
  735. TOP_PIN(TSI3_CLK, TOP_REG5, 0, 3, 0x8c, 0,
  736. TOP_MUX(0x0, "TSI3"), /* clk */
  737. TOP_MUX(0x1, "TSI1"), /* dat3 */
  738. TOP_MUX(0x2, "LCD"), /* dat13 */
  739. TOP_MUX(0x3, "BGPIO"), /* gpio65 */
  740. TOP_MUX(0x4, "I2S1"), /* dout1 */
  741. TOP_MUX(0x5, "B_DVI0")), /* d0 */
  742. TOP_PIN(TSI3_SYNC, TOP_REG5, 3, 3, 0x8c, 9,
  743. TOP_MUX(0x0, "TSI3"), /* sync */
  744. TOP_MUX(0x1, "TSI1"), /* dat4 */
  745. TOP_MUX(0x2, "LCD"), /* dat14 */
  746. TOP_MUX(0x3, "BGPIO"), /* gpio66 */
  747. TOP_MUX(0x4, "I2S1"), /* dout2 */
  748. TOP_MUX(0x5, "B_DVI0")), /* d1 */
  749. TOP_PIN(TSI3_VALID, TOP_REG5, 6, 3, 0x8c, 18,
  750. TOP_MUX(0x0, "TSI3"), /* valid */
  751. TOP_MUX(0x1, "TSI1"), /* dat5 */
  752. TOP_MUX(0x2, "LCD"), /* dat15 */
  753. TOP_MUX(0x3, "BGPIO"), /* gpio67 */
  754. TOP_MUX(0x4, "I2S1"), /* dout3 */
  755. TOP_MUX(0x5, "B_DVI0")), /* d2 */
  756. TOP_PIN(I2S1_WS, TOP_REG5, 9, 3, 0x90, 0,
  757. TOP_MUX(0x0, "I2S1"), /* ws */
  758. TOP_MUX(0x1, "TSI1"), /* dat6 */
  759. TOP_MUX(0x2, "LCD"), /* dat16 */
  760. TOP_MUX(0x3, "BGPIO"), /* gpio68 */
  761. TOP_MUX(0x4, "VGA"), /* scl */
  762. TOP_MUX(0x5, "B_DVI0")), /* d3 */
  763. TOP_PIN(I2S1_BCLK, TOP_REG5, 12, 3, 0x90, 9,
  764. TOP_MUX(0x0, "I2S1"), /* bclk */
  765. TOP_MUX(0x1, "TSI1"), /* dat7 */
  766. TOP_MUX(0x2, "LCD"), /* dat17 */
  767. TOP_MUX(0x3, "BGPIO"), /* gpio69 */
  768. TOP_MUX(0x4, "VGA"), /* sda */
  769. TOP_MUX(0x5, "B_DVI0")), /* d4 */
  770. TOP_PIN(I2S1_MCLK, TOP_REG5, 15, 2, 0x90, 18,
  771. TOP_MUX(0x0, "I2S1"), /* mclk */
  772. TOP_MUX(0x1, "TSI1"), /* clk */
  773. TOP_MUX(0x2, "LCD"), /* dat18 */
  774. TOP_MUX(0x3, "BGPIO")), /* gpio70 */
  775. TOP_PIN(I2S1_DIN0, TOP_REG5, 17, 2, 0x94, 0,
  776. TOP_MUX(0x0, "I2S1"), /* din0 */
  777. TOP_MUX(0x1, "TSI1"), /* sync */
  778. TOP_MUX(0x2, "LCD"), /* dat19 */
  779. TOP_MUX(0x3, "BGPIO")), /* gpio71 */
  780. TOP_PIN(I2S1_DOUT0, TOP_REG5, 19, 2, 0x94, 9,
  781. TOP_MUX(0x0, "I2S1"), /* dout0 */
  782. TOP_MUX(0x1, "TSI1"), /* valid */
  783. TOP_MUX(0x2, "LCD"), /* dat20 */
  784. TOP_MUX(0x3, "BGPIO")), /* gpio72 */
  785. TOP_PIN(SPI3_CLK, TOP_REG5, 21, 3, 0x94, 18,
  786. TOP_MUX(0x0, "SPI3"), /* clk */
  787. TOP_MUX(0x1, "TSO1"), /* clk */
  788. TOP_MUX(0x2, "LCD"), /* dat21 */
  789. TOP_MUX(0x3, "BGPIO"), /* gpio73 */
  790. TOP_MUX(0x4, "UART5"), /* rxd */
  791. TOP_MUX(0x5, "PCM"), /* fs */
  792. TOP_MUX(0x6, "I2S0"), /* din1 */
  793. TOP_MUX(0x7, "B_DVI0")), /* d5 */
  794. TOP_PIN(SPI3_CS, TOP_REG5, 24, 3, 0x98, 0,
  795. TOP_MUX(0x0, "SPI3"), /* cs */
  796. TOP_MUX(0x1, "TSO1"), /* dat0 */
  797. TOP_MUX(0x2, "LCD"), /* dat22 */
  798. TOP_MUX(0x3, "BGPIO"), /* gpio74 */
  799. TOP_MUX(0x4, "UART5"), /* txd */
  800. TOP_MUX(0x5, "PCM"), /* clk */
  801. TOP_MUX(0x6, "I2S0"), /* din2 */
  802. TOP_MUX(0x7, "B_DVI0")), /* d6 */
  803. TOP_PIN(SPI3_TXD, TOP_REG5, 27, 3, 0x98, 9,
  804. TOP_MUX(0x0, "SPI3"), /* txd */
  805. TOP_MUX(0x1, "TSO1"), /* dat1 */
  806. TOP_MUX(0x2, "LCD"), /* dat23 */
  807. TOP_MUX(0x3, "BGPIO"), /* gpio75 */
  808. TOP_MUX(0x4, "UART5"), /* cts */
  809. TOP_MUX(0x5, "PCM"), /* txd */
  810. TOP_MUX(0x6, "I2S0"), /* din3 */
  811. TOP_MUX(0x7, "B_DVI0")), /* d7 */
  812. TOP_PIN(NAND_LDO_MS18_SEL, TOP_REG5, 30, 1, 0xe4, 0,
  813. TOP_MUX(0x0, "NAND"), /* ldo_ms18_sel */
  814. TOP_MUX(0x1, "BGPIO")), /* gpio99 */
  815. /* top_pmm_reg_6 */
  816. TOP_PIN(SPI3_RXD, TOP_REG6, 0, 3, 0x98, 18,
  817. TOP_MUX(0x0, "SPI3"), /* rxd */
  818. TOP_MUX(0x1, "TSO1"), /* dat2 */
  819. TOP_MUX(0x2, "LCD"), /* stvu_vsync */
  820. TOP_MUX(0x3, "BGPIO"), /* gpio76 */
  821. TOP_MUX(0x4, "UART5"), /* rts */
  822. TOP_MUX(0x5, "PCM"), /* rxd */
  823. TOP_MUX(0x6, "I2S0"), /* dout1 */
  824. TOP_MUX(0x7, "B_DVI1")), /* clk */
  825. TOP_PIN(I2S0_MCLK, TOP_REG6, 3, 3, 0x9c, 0,
  826. TOP_MUX(0x0, "I2S0"), /* mclk */
  827. TOP_MUX(0x1, "TSO1"), /* dat3 */
  828. TOP_MUX(0x2, "LCD"), /* stvd */
  829. TOP_MUX(0x3, "BGPIO"), /* gpio77 */
  830. TOP_MUX(0x4, "USIM0"), /* cd */
  831. TOP_MUX(0x5, "B_DVI1")), /* vs */
  832. TOP_PIN(I2S0_BCLK, TOP_REG6, 6, 3, 0x9c, 9,
  833. TOP_MUX(0x0, "I2S0"), /* bclk */
  834. TOP_MUX(0x1, "TSO1"), /* dat4 */
  835. TOP_MUX(0x2, "LCD"), /* sthl_hsync */
  836. TOP_MUX(0x3, "BGPIO"), /* gpio78 */
  837. TOP_MUX(0x4, "USIM0"), /* clk */
  838. TOP_MUX(0x5, "B_DVI1")), /* hs */
  839. TOP_PIN(I2S0_WS, TOP_REG6, 9, 3, 0x9c, 18,
  840. TOP_MUX(0x0, "I2S0"), /* ws */
  841. TOP_MUX(0x1, "TSO1"), /* dat5 */
  842. TOP_MUX(0x2, "LCD"), /* sthr */
  843. TOP_MUX(0x3, "BGPIO"), /* gpio79 */
  844. TOP_MUX(0x4, "USIM0"), /* rst */
  845. TOP_MUX(0x5, "B_DVI1")), /* d0 */
  846. TOP_PIN(I2S0_DIN0, TOP_REG6, 12, 3, 0xa0, 0,
  847. TOP_MUX(0x0, "I2S0"), /* din0 */
  848. TOP_MUX(0x1, "TSO1"), /* dat6 */
  849. TOP_MUX(0x2, "LCD"), /* oev_dataen */
  850. TOP_MUX(0x3, "BGPIO"), /* gpio80 */
  851. TOP_MUX(0x4, "USIM0"), /* dat */
  852. TOP_MUX(0x5, "B_DVI1")), /* d1 */
  853. TOP_PIN(I2S0_DOUT0, TOP_REG6, 15, 2, 0xa0, 9,
  854. TOP_MUX(0x0, "I2S0"), /* dout0 */
  855. TOP_MUX(0x1, "TSO1"), /* dat7 */
  856. TOP_MUX(0x2, "LCD"), /* ckv */
  857. TOP_MUX(0x3, "BGPIO")), /* gpio81 */
  858. TOP_PIN(I2C5_SCL, TOP_REG6, 17, 3, 0xa0, 18,
  859. TOP_MUX(0x0, "I2C5"), /* scl */
  860. TOP_MUX(0x1, "TSO1"), /* sync */
  861. TOP_MUX(0x2, "LCD"), /* ld */
  862. TOP_MUX(0x3, "BGPIO"), /* gpio82 */
  863. TOP_MUX(0x4, "PWM"), /* out2 */
  864. TOP_MUX(0x5, "I2S0"), /* dout2 */
  865. TOP_MUX(0x6, "B_DVI1")), /* d2 */
  866. TOP_PIN(I2C5_SDA, TOP_REG6, 20, 3, 0xa4, 0,
  867. TOP_MUX(0x0, "I2C5"), /* sda */
  868. TOP_MUX(0x1, "TSO1"), /* vld */
  869. TOP_MUX(0x2, "LCD"), /* pol */
  870. TOP_MUX(0x3, "BGPIO"), /* gpio83 */
  871. TOP_MUX(0x4, "PWM"), /* out3 */
  872. TOP_MUX(0x5, "I2S0"), /* dout3 */
  873. TOP_MUX(0x6, "B_DVI1")), /* d3 */
  874. TOP_PIN(SPI2_CLK, TOP_REG6, 23, 3, 0xa4, 9,
  875. TOP_MUX(0x0, "SPI2"), /* clk */
  876. TOP_MUX(0x1, "TSO0"), /* clk */
  877. TOP_MUX(0x2, "LCD"), /* degsl */
  878. TOP_MUX(0x3, "BGPIO"), /* gpio84 */
  879. TOP_MUX(0x4, "I2C4"), /* scl */
  880. TOP_MUX(0x5, "B_DVI1")), /* d4 */
  881. TOP_PIN(SPI2_CS, TOP_REG6, 26, 3, 0xa4, 18,
  882. TOP_MUX(0x0, "SPI2"), /* cs */
  883. TOP_MUX(0x1, "TSO0"), /* data */
  884. TOP_MUX(0x2, "LCD"), /* rev */
  885. TOP_MUX(0x3, "BGPIO"), /* gpio85 */
  886. TOP_MUX(0x4, "I2C4"), /* sda */
  887. TOP_MUX(0x5, "B_DVI1")), /* d5 */
  888. TOP_PIN(SPI2_TXD, TOP_REG6, 29, 3, 0xa8, 0,
  889. TOP_MUX(0x0, "SPI2"), /* txd */
  890. TOP_MUX(0x1, "TSO0"), /* sync */
  891. TOP_MUX(0x2, "LCD"), /* u_d */
  892. TOP_MUX(0x3, "BGPIO"), /* gpio86 */
  893. TOP_MUX(0x4, "I2C4"), /* scl */
  894. TOP_MUX(0x5, "B_DVI1")), /* d6 */
  895. /* top_pmm_reg_7 */
  896. TOP_PIN(SPI2_RXD, TOP_REG7, 0, 3, 0xa8, 9,
  897. TOP_MUX(0x0, "SPI2"), /* rxd */
  898. TOP_MUX(0x1, "TSO0"), /* vld */
  899. TOP_MUX(0x2, "LCD"), /* r_l */
  900. TOP_MUX(0x3, "BGPIO"), /* gpio87 */
  901. TOP_MUX(0x4, "I2C3"), /* sda */
  902. TOP_MUX(0x5, "B_DVI1")), /* d7 */
  903. TOP_PIN(NAND_WP_N, TOP_REG7, 7, 3, 0x54, 9,
  904. TOP_MUX(0x0, "NAND"), /* wp */
  905. TOP_MUX(0x1, "PWM"), /* out2 */
  906. TOP_MUX(0x2, "SPI2"), /* clk */
  907. TOP_MUX(0x3, "BGPIO"), /* gpio88 */
  908. TOP_MUX(0x4, "TSI0"), /* dat0 */
  909. TOP_MUX(0x5, "I2S1")), /* din1 */
  910. TOP_PIN(NAND_PAGE_SIZE0, TOP_REG7, 10, 3, 0xb8, 0,
  911. TOP_MUX(0x0, "NAND"), /* boot_pagesize0 */
  912. TOP_MUX(0x1, "PWM"), /* out3 */
  913. TOP_MUX(0x2, "SPI2"), /* cs */
  914. TOP_MUX(0x3, "BGPIO"), /* gpio89 */
  915. TOP_MUX(0x4, "TSI0"), /* clk */
  916. TOP_MUX(0x5, "I2S1")), /* din2 */
  917. TOP_PIN(NAND_PAGE_SIZE1, TOP_REG7, 13, 3, 0xb8, 9,
  918. TOP_MUX(0x0, "NAND"), /* boot_pagesize1 */
  919. TOP_MUX(0x1, "I2C4"), /* scl */
  920. TOP_MUX(0x2, "SPI2"), /* txd */
  921. TOP_MUX(0x3, "BGPIO"), /* gpio90 */
  922. TOP_MUX(0x4, "TSI0"), /* sync */
  923. TOP_MUX(0x5, "I2S1")), /* din3 */
  924. TOP_PIN(NAND_ADDR_CYCLE, TOP_REG7, 16, 3, 0xb8, 18,
  925. TOP_MUX(0x0, "NAND"), /* boot_addr_cycles */
  926. TOP_MUX(0x1, "I2C4"), /* sda */
  927. TOP_MUX(0x2, "SPI2"), /* rxd */
  928. TOP_MUX(0x3, "BGPIO"), /* gpio91 */
  929. TOP_MUX(0x4, "TSI0"), /* valid */
  930. TOP_MUX(0x5, "I2S1")), /* dout1 */
  931. TOP_PIN(NAND_RB0, TOP_REG7, 19, 3, 0xbc, 0,
  932. TOP_MUX(0x0, "NAND"), /* rdy_busy0 */
  933. TOP_MUX(0x1, "I2C2"), /* scl */
  934. TOP_MUX(0x2, "USIM0"), /* cd */
  935. TOP_MUX(0x3, "BGPIO"), /* gpio92 */
  936. TOP_MUX(0x4, "TSI1")), /* data0 */
  937. TOP_PIN(NAND_RB1, TOP_REG7, 22, 3, 0xbc, 9,
  938. TOP_MUX(0x0, "NAND"), /* rdy_busy1 */
  939. TOP_MUX(0x1, "I2C2"), /* sda */
  940. TOP_MUX(0x2, "USIM0"), /* clk */
  941. TOP_MUX(0x3, "BGPIO"), /* gpio93 */
  942. TOP_MUX(0x4, "TSI1")), /* clk */
  943. TOP_PIN(NAND_RB2, TOP_REG7, 25, 3, 0xbc, 18,
  944. TOP_MUX(0x0, "NAND"), /* rdy_busy2 */
  945. TOP_MUX(0x1, "UART5"), /* rxd */
  946. TOP_MUX(0x2, "USIM0"), /* rst */
  947. TOP_MUX(0x3, "BGPIO"), /* gpio94 */
  948. TOP_MUX(0x4, "TSI1"), /* sync */
  949. TOP_MUX(0x4, "I2S1")), /* dout2 */
  950. TOP_PIN(NAND_RB3, TOP_REG7, 28, 3, 0x54, 18,
  951. TOP_MUX(0x0, "NAND"), /* rdy_busy3 */
  952. TOP_MUX(0x1, "UART5"), /* txd */
  953. TOP_MUX(0x2, "USIM0"), /* dat */
  954. TOP_MUX(0x3, "BGPIO"), /* gpio95 */
  955. TOP_MUX(0x4, "TSI1"), /* valid */
  956. TOP_MUX(0x4, "I2S1")), /* dout3 */
  957. /* top_pmm_reg_8 */
  958. TOP_PIN(GMAC_125M_IN, TOP_REG8, 0, 2, 0x34, 0,
  959. TOP_MUX(0x0, "GMII"), /* 125m_in */
  960. TOP_MUX(0x1, "USB2"), /* 0_drvvbus */
  961. TOP_MUX(0x2, "ISP"), /* ref_clk */
  962. TOP_MUX(0x3, "BGPIO")), /* gpio96 */
  963. TOP_PIN(GMAC_50M_OUT, TOP_REG8, 2, 2, 0x34, 9,
  964. TOP_MUX(0x0, "GMII"), /* 50m_out */
  965. TOP_MUX(0x1, "USB2"), /* 1_drvvbus */
  966. TOP_MUX(0x2, "BGPIO"), /* gpio97 */
  967. TOP_MUX(0x3, "USB2")), /* 0_drvvbus */
  968. TOP_PIN(SPINOR_SSCLK_LOOPBACK, TOP_REG8, 6, 1, 0xc8, 9,
  969. TOP_MUX(0x0, "SPINOR")), /* sdio1_clk_i */
  970. TOP_PIN(SPINOR_SDIO1CLK_LOOPBACK, TOP_REG8, 7, 1, 0xc8, 18,
  971. TOP_MUX(0x0, "SPINOR")), /* ssclk_i */
  972. };
  973. static struct zx_pinctrl_soc_info zx296718_pinctrl_info = {
  974. .pins = zx296718_pins,
  975. .npins = ARRAY_SIZE(zx296718_pins),
  976. };
  977. static int zx296718_pinctrl_probe(struct platform_device *pdev)
  978. {
  979. return zx_pinctrl_init(pdev, &zx296718_pinctrl_info);
  980. }
  981. static const struct of_device_id zx296718_pinctrl_match[] = {
  982. { .compatible = "zte,zx296718-pmm", },
  983. {}
  984. };
  985. MODULE_DEVICE_TABLE(of, zx296718_pinctrl_match);
  986. static struct platform_driver zx296718_pinctrl_driver = {
  987. .probe = zx296718_pinctrl_probe,
  988. .driver = {
  989. .name = "zx296718-pinctrl",
  990. .of_match_table = zx296718_pinctrl_match,
  991. },
  992. };
  993. builtin_platform_driver(zx296718_pinctrl_driver);
  994. MODULE_DESCRIPTION("ZTE ZX296718 pinctrl driver");
  995. MODULE_LICENSE("GPL");