pm_api_pinctrl.c 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119
  1. /*
  2. * Copyright (c) 2018-2020, Arm Limited and Contributors. All rights reserved.
  3. * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-3-Clause
  6. */
  7. /*
  8. * ZynqMP system level PM-API functions for pin control.
  9. */
  10. #include <string.h>
  11. #include <arch_helpers.h>
  12. #include <plat/common/platform.h>
  13. #include "pm_api_pinctrl.h"
  14. #include "pm_client.h"
  15. #include "pm_common.h"
  16. #include "pm_ipi.h"
  17. #include "zynqmp_pm_api_sys.h"
  18. struct pinctrl_function {
  19. char name[FUNCTION_NAME_LEN];
  20. uint16_t group_base;
  21. uint8_t group_size;
  22. uint8_t regval;
  23. };
  24. /* Max groups for one pin */
  25. #define MAX_PIN_GROUPS (13U)
  26. struct zynqmp_pin_group {
  27. uint16_t (*groups)[];
  28. };
  29. static struct pinctrl_function pinctrl_functions[MAX_FUNCTION] = {
  30. [PINCTRL_FUNC_CAN0] = {
  31. .name = "can0",
  32. .regval = 0x20,
  33. .group_base = PINCTRL_GRP_CAN0_0,
  34. .group_size = PINCTRL_GRP_CAN0_18 - PINCTRL_GRP_CAN0_0 + 1U,
  35. },
  36. [PINCTRL_FUNC_CAN1] = {
  37. .name = "can1",
  38. .regval = 0x20,
  39. .group_base = PINCTRL_GRP_CAN1_0,
  40. .group_size = PINCTRL_GRP_CAN1_19 - PINCTRL_GRP_CAN1_0 + 1U,
  41. },
  42. [PINCTRL_FUNC_ETHERNET0] = {
  43. .name = "ethernet0",
  44. .regval = 0x02,
  45. .group_base = PINCTRL_GRP_ETHERNET0_0,
  46. .group_size = PINCTRL_GRP_ETHERNET0_0 - PINCTRL_GRP_ETHERNET0_0 + 1U,
  47. },
  48. [PINCTRL_FUNC_ETHERNET1] = {
  49. .name = "ethernet1",
  50. .regval = 0x02,
  51. .group_base = PINCTRL_GRP_ETHERNET1_0,
  52. .group_size = PINCTRL_GRP_ETHERNET1_0 - PINCTRL_GRP_ETHERNET1_0 + 1U,
  53. },
  54. [PINCTRL_FUNC_ETHERNET2] = {
  55. .name = "ethernet2",
  56. .regval = 0x02,
  57. .group_base = PINCTRL_GRP_ETHERNET2_0,
  58. .group_size = PINCTRL_GRP_ETHERNET2_0 - PINCTRL_GRP_ETHERNET2_0 + 1U,
  59. },
  60. [PINCTRL_FUNC_ETHERNET3] = {
  61. .name = "ethernet3",
  62. .regval = 0x02,
  63. .group_base = PINCTRL_GRP_ETHERNET3_0,
  64. .group_size = PINCTRL_GRP_ETHERNET3_0 - PINCTRL_GRP_ETHERNET3_0 + 1U,
  65. },
  66. [PINCTRL_FUNC_GEMTSU0] = {
  67. .name = "gemtsu0",
  68. .regval = 0x02,
  69. .group_base = PINCTRL_GRP_GEMTSU0_0,
  70. .group_size = PINCTRL_GRP_GEMTSU0_2 - PINCTRL_GRP_GEMTSU0_0 + 1U,
  71. },
  72. [PINCTRL_FUNC_GPIO0] = {
  73. .name = "gpio0",
  74. .regval = 0x00,
  75. .group_base = PINCTRL_GRP_GPIO0_0,
  76. .group_size = PINCTRL_GRP_GPIO0_77 - PINCTRL_GRP_GPIO0_0 + 1U,
  77. },
  78. [PINCTRL_FUNC_I2C0] = {
  79. .name = "i2c0",
  80. .regval = 0x40,
  81. .group_base = PINCTRL_GRP_I2C0_0,
  82. .group_size = PINCTRL_GRP_I2C0_18 - PINCTRL_GRP_I2C0_0 + 1U,
  83. },
  84. [PINCTRL_FUNC_I2C1] = {
  85. .name = "i2c1",
  86. .regval = 0x40,
  87. .group_base = PINCTRL_GRP_I2C1_0,
  88. .group_size = PINCTRL_GRP_I2C1_19 - PINCTRL_GRP_I2C1_0 + 1U,
  89. },
  90. [PINCTRL_FUNC_MDIO0] = {
  91. .name = "mdio0",
  92. .regval = 0x60,
  93. .group_base = PINCTRL_GRP_MDIO0_0,
  94. .group_size = PINCTRL_GRP_MDIO0_0 - PINCTRL_GRP_MDIO0_0 + 1U,
  95. },
  96. [PINCTRL_FUNC_MDIO1] = {
  97. .name = "mdio1",
  98. .regval = 0x80,
  99. .group_base = PINCTRL_GRP_MDIO1_0,
  100. .group_size = PINCTRL_GRP_MDIO1_1 - PINCTRL_GRP_MDIO1_0 + 1U,
  101. },
  102. [PINCTRL_FUNC_MDIO2] = {
  103. .name = "mdio2",
  104. .regval = 0xa0,
  105. .group_base = PINCTRL_GRP_MDIO2_0,
  106. .group_size = PINCTRL_GRP_MDIO2_0 - PINCTRL_GRP_MDIO2_0 + 1U,
  107. },
  108. [PINCTRL_FUNC_MDIO3] = {
  109. .name = "mdio3",
  110. .regval = 0xc0,
  111. .group_base = PINCTRL_GRP_MDIO3_0,
  112. .group_size = PINCTRL_GRP_MDIO3_0 - PINCTRL_GRP_MDIO3_0 + 1U,
  113. },
  114. [PINCTRL_FUNC_QSPI0] = {
  115. .name = "qspi0",
  116. .regval = 0x02,
  117. .group_base = PINCTRL_GRP_QSPI0_0,
  118. .group_size = PINCTRL_GRP_QSPI0_0 - PINCTRL_GRP_QSPI0_0 + 1U,
  119. },
  120. [PINCTRL_FUNC_QSPI_FBCLK] = {
  121. .name = "qspi_fbclk",
  122. .regval = 0x02,
  123. .group_base = PINCTRL_GRP_QSPI_FBCLK,
  124. .group_size = PINCTRL_GRP_QSPI_FBCLK - PINCTRL_GRP_QSPI_FBCLK + 1U,
  125. },
  126. [PINCTRL_FUNC_QSPI_SS] = {
  127. .name = "qspi_ss",
  128. .regval = 0x02,
  129. .group_base = PINCTRL_GRP_QSPI_SS,
  130. .group_size = PINCTRL_GRP_QSPI_SS - PINCTRL_GRP_QSPI_SS + 1U,
  131. },
  132. [PINCTRL_FUNC_SPI0] = {
  133. .name = "spi0",
  134. .regval = 0x80,
  135. .group_base = PINCTRL_GRP_SPI0_0,
  136. .group_size = PINCTRL_GRP_SPI0_5 - PINCTRL_GRP_SPI0_0 + 1U,
  137. },
  138. [PINCTRL_FUNC_SPI1] = {
  139. .name = "spi1",
  140. .regval = 0x80,
  141. .group_base = PINCTRL_GRP_SPI1_0,
  142. .group_size = PINCTRL_GRP_SPI1_5 - PINCTRL_GRP_SPI1_0 + 1U,
  143. },
  144. [PINCTRL_FUNC_SPI0_SS] = {
  145. .name = "spi0_ss",
  146. .regval = 0x80,
  147. .group_base = PINCTRL_GRP_SPI0_0_SS0,
  148. .group_size = PINCTRL_GRP_SPI0_5_SS2 - PINCTRL_GRP_SPI0_0_SS0 + 1U,
  149. },
  150. [PINCTRL_FUNC_SPI1_SS] = {
  151. .name = "spi1_ss",
  152. .regval = 0x80,
  153. .group_base = PINCTRL_GRP_SPI1_0_SS0,
  154. .group_size = PINCTRL_GRP_SPI1_5_SS2 - PINCTRL_GRP_SPI1_0_SS0 + 1U,
  155. },
  156. [PINCTRL_FUNC_SDIO0] = {
  157. .name = "sdio0",
  158. .regval = 0x08,
  159. .group_base = PINCTRL_GRP_SDIO0_0,
  160. .group_size = PINCTRL_GRP_SDIO0_1BIT_2_7 - PINCTRL_GRP_SDIO0_0 + 1U,
  161. },
  162. [PINCTRL_FUNC_SDIO0_PC] = {
  163. .name = "sdio0_pc",
  164. .regval = 0x08,
  165. .group_base = PINCTRL_GRP_SDIO0_0_PC,
  166. .group_size = PINCTRL_GRP_SDIO0_2_PC - PINCTRL_GRP_SDIO0_0_PC + 1U,
  167. },
  168. [PINCTRL_FUNC_SDIO0_CD] = {
  169. .name = "sdio0_cd",
  170. .regval = 0x08,
  171. .group_base = PINCTRL_GRP_SDIO0_0_CD,
  172. .group_size = PINCTRL_GRP_SDIO0_2_CD - PINCTRL_GRP_SDIO0_0_CD + 1U,
  173. },
  174. [PINCTRL_FUNC_SDIO0_WP] = {
  175. .name = "sdio0_wp",
  176. .regval = 0x08,
  177. .group_base = PINCTRL_GRP_SDIO0_0_WP,
  178. .group_size = PINCTRL_GRP_SDIO0_2_WP - PINCTRL_GRP_SDIO0_0_WP + 1U,
  179. },
  180. [PINCTRL_FUNC_SDIO1] = {
  181. .name = "sdio1",
  182. .regval = 0x10,
  183. .group_base = PINCTRL_GRP_SDIO1_0,
  184. .group_size = PINCTRL_GRP_SDIO1_1BIT_1_3 - PINCTRL_GRP_SDIO1_0 + 1U,
  185. },
  186. [PINCTRL_FUNC_SDIO1_PC] = {
  187. .name = "sdio1_pc",
  188. .regval = 0x10,
  189. .group_base = PINCTRL_GRP_SDIO1_0_PC,
  190. .group_size = PINCTRL_GRP_SDIO1_1_PC - PINCTRL_GRP_SDIO1_0_PC + 1U,
  191. },
  192. [PINCTRL_FUNC_SDIO1_CD] = {
  193. .name = "sdio1_cd",
  194. .regval = 0x10,
  195. .group_base = PINCTRL_GRP_SDIO1_0_CD,
  196. .group_size = PINCTRL_GRP_SDIO1_1_CD - PINCTRL_GRP_SDIO1_0_CD + 1U,
  197. },
  198. [PINCTRL_FUNC_SDIO1_WP] = {
  199. .name = "sdio1_wp",
  200. .regval = 0x10,
  201. .group_base = PINCTRL_GRP_SDIO1_0_WP,
  202. .group_size = PINCTRL_GRP_SDIO1_1_WP - PINCTRL_GRP_SDIO1_0_WP + 1U,
  203. },
  204. [PINCTRL_FUNC_NAND0] = {
  205. .name = "nand0",
  206. .regval = 0x04,
  207. .group_base = PINCTRL_GRP_NAND0_0,
  208. .group_size = PINCTRL_GRP_NAND0_0 - PINCTRL_GRP_NAND0_0 + 1U,
  209. },
  210. [PINCTRL_FUNC_NAND0_CE] = {
  211. .name = "nand0_ce",
  212. .regval = 0x04,
  213. .group_base = PINCTRL_GRP_NAND0_0_CE,
  214. .group_size = PINCTRL_GRP_NAND0_1_CE - PINCTRL_GRP_NAND0_0_CE + 1U,
  215. },
  216. [PINCTRL_FUNC_NAND0_RB] = {
  217. .name = "nand0_rb",
  218. .regval = 0x04,
  219. .group_base = PINCTRL_GRP_NAND0_0_RB,
  220. .group_size = PINCTRL_GRP_NAND0_1_RB - PINCTRL_GRP_NAND0_0_RB + 1U,
  221. },
  222. [PINCTRL_FUNC_NAND0_DQS] = {
  223. .name = "nand0_dqs",
  224. .regval = 0x04,
  225. .group_base = PINCTRL_GRP_NAND0_0_DQS,
  226. .group_size = PINCTRL_GRP_NAND0_1_DQS - PINCTRL_GRP_NAND0_0_DQS + 1U,
  227. },
  228. [PINCTRL_FUNC_TTC0_CLK] = {
  229. .name = "ttc0_clk",
  230. .regval = 0xa0,
  231. .group_base = PINCTRL_GRP_TTC0_0_CLK,
  232. .group_size = PINCTRL_GRP_TTC0_8_CLK - PINCTRL_GRP_TTC0_0_CLK + 1U,
  233. },
  234. [PINCTRL_FUNC_TTC0_WAV] = {
  235. .name = "ttc0_wav",
  236. .regval = 0xa0,
  237. .group_base = PINCTRL_GRP_TTC0_0_WAV,
  238. .group_size = PINCTRL_GRP_TTC0_8_WAV - PINCTRL_GRP_TTC0_0_WAV + 1U,
  239. },
  240. [PINCTRL_FUNC_TTC1_CLK] = {
  241. .name = "ttc1_clk",
  242. .regval = 0xa0,
  243. .group_base = PINCTRL_GRP_TTC1_0_CLK,
  244. .group_size = PINCTRL_GRP_TTC1_8_CLK - PINCTRL_GRP_TTC1_0_CLK + 1U,
  245. },
  246. [PINCTRL_FUNC_TTC1_WAV] = {
  247. .name = "ttc1_wav",
  248. .regval = 0xa0,
  249. .group_base = PINCTRL_GRP_TTC1_0_WAV,
  250. .group_size = PINCTRL_GRP_TTC1_8_WAV - PINCTRL_GRP_TTC1_0_WAV + 1U,
  251. },
  252. [PINCTRL_FUNC_TTC2_CLK] = {
  253. .name = "ttc2_clk",
  254. .regval = 0xa0,
  255. .group_base = PINCTRL_GRP_TTC2_0_CLK,
  256. .group_size = PINCTRL_GRP_TTC2_8_CLK - PINCTRL_GRP_TTC2_0_CLK + 1U,
  257. },
  258. [PINCTRL_FUNC_TTC2_WAV] = {
  259. .name = "ttc2_wav",
  260. .regval = 0xa0,
  261. .group_base = PINCTRL_GRP_TTC2_0_WAV,
  262. .group_size = PINCTRL_GRP_TTC2_8_WAV - PINCTRL_GRP_TTC2_0_WAV + 1U,
  263. },
  264. [PINCTRL_FUNC_TTC3_CLK] = {
  265. .name = "ttc3_clk",
  266. .regval = 0xa0,
  267. .group_base = PINCTRL_GRP_TTC3_0_CLK,
  268. .group_size = PINCTRL_GRP_TTC3_8_CLK - PINCTRL_GRP_TTC3_0_CLK + 1U,
  269. },
  270. [PINCTRL_FUNC_TTC3_WAV] = {
  271. .name = "ttc3_wav",
  272. .regval = 0xa0,
  273. .group_base = PINCTRL_GRP_TTC3_0_WAV,
  274. .group_size = PINCTRL_GRP_TTC3_8_WAV - PINCTRL_GRP_TTC3_0_WAV + 1U,
  275. },
  276. [PINCTRL_FUNC_UART0] = {
  277. .name = "uart0",
  278. .regval = 0xc0,
  279. .group_base = PINCTRL_GRP_UART0_0,
  280. .group_size = PINCTRL_GRP_UART0_18 - PINCTRL_GRP_UART0_0 + 1U,
  281. },
  282. [PINCTRL_FUNC_UART1] = {
  283. .name = "uart1",
  284. .regval = 0xc0,
  285. .group_base = PINCTRL_GRP_UART1_0,
  286. .group_size = PINCTRL_GRP_UART1_18 - PINCTRL_GRP_UART1_0 + 1U,
  287. },
  288. [PINCTRL_FUNC_USB0] = {
  289. .name = "usb0",
  290. .regval = 0x04,
  291. .group_base = PINCTRL_GRP_USB0_0,
  292. .group_size = PINCTRL_GRP_USB0_0 - PINCTRL_GRP_USB0_0 + 1U,
  293. },
  294. [PINCTRL_FUNC_USB1] = {
  295. .name = "usb1",
  296. .regval = 0x04,
  297. .group_base = PINCTRL_GRP_USB1_0,
  298. .group_size = PINCTRL_GRP_USB1_0 - PINCTRL_GRP_USB1_0 + 1U,
  299. },
  300. [PINCTRL_FUNC_SWDT0_CLK] = {
  301. .name = "swdt0_clk",
  302. .regval = 0x60,
  303. .group_base = PINCTRL_GRP_SWDT0_0_CLK,
  304. .group_size = PINCTRL_GRP_SWDT0_12_CLK - PINCTRL_GRP_SWDT0_0_CLK + 1U,
  305. },
  306. [PINCTRL_FUNC_SWDT0_RST] = {
  307. .name = "swdt0_rst",
  308. .regval = 0x60,
  309. .group_base = PINCTRL_GRP_SWDT0_0_RST,
  310. .group_size = PINCTRL_GRP_SWDT0_12_RST - PINCTRL_GRP_SWDT0_0_RST + 1U,
  311. },
  312. [PINCTRL_FUNC_SWDT1_CLK] = {
  313. .name = "swdt1_clk",
  314. .regval = 0x60,
  315. .group_base = PINCTRL_GRP_SWDT1_0_CLK,
  316. .group_size = PINCTRL_GRP_SWDT1_12_CLK - PINCTRL_GRP_SWDT1_0_CLK + 1U,
  317. },
  318. [PINCTRL_FUNC_SWDT1_RST] = {
  319. .name = "swdt1_rst",
  320. .regval = 0x60,
  321. .group_base = PINCTRL_GRP_SWDT1_0_RST,
  322. .group_size = PINCTRL_GRP_SWDT1_12_RST - PINCTRL_GRP_SWDT1_0_RST + 1U,
  323. },
  324. [PINCTRL_FUNC_PMU0] = {
  325. .name = "pmu0",
  326. .regval = 0x08,
  327. .group_base = PINCTRL_GRP_PMU0_0,
  328. .group_size = PINCTRL_GRP_PMU0_11 - PINCTRL_GRP_PMU0_0 + 1U,
  329. },
  330. [PINCTRL_FUNC_PCIE0] = {
  331. .name = "pcie0",
  332. .regval = 0x04,
  333. .group_base = PINCTRL_GRP_PCIE0_0,
  334. .group_size = PINCTRL_GRP_PCIE0_7 - PINCTRL_GRP_PCIE0_0 + 1U,
  335. },
  336. [PINCTRL_FUNC_CSU0] = {
  337. .name = "csu0",
  338. .regval = 0x18,
  339. .group_base = PINCTRL_GRP_CSU0_0,
  340. .group_size = PINCTRL_GRP_CSU0_11 - PINCTRL_GRP_CSU0_0 + 1U,
  341. },
  342. [PINCTRL_FUNC_DPAUX0] = {
  343. .name = "dpaux0",
  344. .regval = 0x18,
  345. .group_base = PINCTRL_GRP_DPAUX0_0,
  346. .group_size = PINCTRL_GRP_DPAUX0_3 - PINCTRL_GRP_DPAUX0_0 + 1U,
  347. },
  348. [PINCTRL_FUNC_PJTAG0] = {
  349. .name = "pjtag0",
  350. .regval = 0x60,
  351. .group_base = PINCTRL_GRP_PJTAG0_0,
  352. .group_size = PINCTRL_GRP_PJTAG0_5 - PINCTRL_GRP_PJTAG0_0 + 1U,
  353. },
  354. [PINCTRL_FUNC_TRACE0] = {
  355. .name = "trace0",
  356. .regval = 0xe0,
  357. .group_base = PINCTRL_GRP_TRACE0_0,
  358. .group_size = PINCTRL_GRP_TRACE0_2 - PINCTRL_GRP_TRACE0_0 + 1U,
  359. },
  360. [PINCTRL_FUNC_TRACE0_CLK] = {
  361. .name = "trace0_clk",
  362. .regval = 0xe0,
  363. .group_base = PINCTRL_GRP_TRACE0_0_CLK,
  364. .group_size = PINCTRL_GRP_TRACE0_2_CLK - PINCTRL_GRP_TRACE0_0_CLK + 1U,
  365. },
  366. [PINCTRL_FUNC_TESTSCAN0] = {
  367. .name = "testscan0",
  368. .regval = 0x10,
  369. .group_base = PINCTRL_GRP_TESTSCAN0_0,
  370. .group_size = PINCTRL_GRP_TESTSCAN0_0 - PINCTRL_GRP_TESTSCAN0_0 + 1U,
  371. },
  372. };
  373. static struct zynqmp_pin_group zynqmp_pin_groups[MAX_PIN] = {
  374. [PINCTRL_PIN_0] = {
  375. .groups = &((uint16_t []) {
  376. PINCTRL_GRP_QSPI0_0,
  377. PINCTRL_GRP_RESERVED,
  378. PINCTRL_GRP_RESERVED,
  379. PINCTRL_GRP_TESTSCAN0_0,
  380. PINCTRL_GRP_RESERVED,
  381. PINCTRL_GRP_GPIO0_0,
  382. PINCTRL_GRP_CAN1_0,
  383. PINCTRL_GRP_I2C1_0,
  384. PINCTRL_GRP_PJTAG0_0,
  385. PINCTRL_GRP_SPI0_0,
  386. PINCTRL_GRP_TTC3_0_CLK,
  387. PINCTRL_GRP_UART1_0,
  388. PINCTRL_GRP_TRACE0_0_CLK,
  389. END_OF_GROUPS,
  390. }),
  391. },
  392. [PINCTRL_PIN_1] = {
  393. .groups = &((uint16_t []) {
  394. PINCTRL_GRP_QSPI0_0,
  395. PINCTRL_GRP_RESERVED,
  396. PINCTRL_GRP_RESERVED,
  397. PINCTRL_GRP_TESTSCAN0_0,
  398. PINCTRL_GRP_RESERVED,
  399. PINCTRL_GRP_GPIO0_1,
  400. PINCTRL_GRP_CAN1_0,
  401. PINCTRL_GRP_I2C1_0,
  402. PINCTRL_GRP_PJTAG0_0,
  403. PINCTRL_GRP_SPI0_0_SS2,
  404. PINCTRL_GRP_TTC3_0_WAV,
  405. PINCTRL_GRP_UART1_0,
  406. PINCTRL_GRP_TRACE0_0_CLK,
  407. END_OF_GROUPS,
  408. }),
  409. },
  410. [PINCTRL_PIN_2] = {
  411. .groups = &((uint16_t []) {
  412. PINCTRL_GRP_QSPI0_0,
  413. PINCTRL_GRP_RESERVED,
  414. PINCTRL_GRP_RESERVED,
  415. PINCTRL_GRP_TESTSCAN0_0,
  416. PINCTRL_GRP_RESERVED,
  417. PINCTRL_GRP_GPIO0_2,
  418. PINCTRL_GRP_CAN0_0,
  419. PINCTRL_GRP_I2C0_0,
  420. PINCTRL_GRP_PJTAG0_0,
  421. PINCTRL_GRP_SPI0_0_SS1,
  422. PINCTRL_GRP_TTC2_0_CLK,
  423. PINCTRL_GRP_UART0_0,
  424. PINCTRL_GRP_TRACE0_0,
  425. END_OF_GROUPS,
  426. }),
  427. },
  428. [PINCTRL_PIN_3] = {
  429. .groups = &((uint16_t []) {
  430. PINCTRL_GRP_QSPI0_0,
  431. PINCTRL_GRP_RESERVED,
  432. PINCTRL_GRP_RESERVED,
  433. PINCTRL_GRP_TESTSCAN0_0,
  434. PINCTRL_GRP_RESERVED,
  435. PINCTRL_GRP_GPIO0_3,
  436. PINCTRL_GRP_CAN0_0,
  437. PINCTRL_GRP_I2C0_0,
  438. PINCTRL_GRP_PJTAG0_0,
  439. PINCTRL_GRP_SPI0_0_SS0,
  440. PINCTRL_GRP_TTC2_0_WAV,
  441. PINCTRL_GRP_UART0_0,
  442. PINCTRL_GRP_TRACE0_0,
  443. END_OF_GROUPS,
  444. }),
  445. },
  446. [PINCTRL_PIN_4] = {
  447. .groups = &((uint16_t []) {
  448. PINCTRL_GRP_QSPI0_0,
  449. PINCTRL_GRP_RESERVED,
  450. PINCTRL_GRP_RESERVED,
  451. PINCTRL_GRP_TESTSCAN0_0,
  452. PINCTRL_GRP_RESERVED,
  453. PINCTRL_GRP_GPIO0_4,
  454. PINCTRL_GRP_CAN1_1,
  455. PINCTRL_GRP_I2C1_1,
  456. PINCTRL_GRP_SWDT1_0_CLK,
  457. PINCTRL_GRP_SPI0_0,
  458. PINCTRL_GRP_TTC1_0_CLK,
  459. PINCTRL_GRP_UART1_1,
  460. PINCTRL_GRP_TRACE0_0,
  461. END_OF_GROUPS,
  462. }),
  463. },
  464. [PINCTRL_PIN_5] = {
  465. .groups = &((uint16_t []) {
  466. PINCTRL_GRP_QSPI_SS,
  467. PINCTRL_GRP_RESERVED,
  468. PINCTRL_GRP_RESERVED,
  469. PINCTRL_GRP_TESTSCAN0_0,
  470. PINCTRL_GRP_RESERVED,
  471. PINCTRL_GRP_GPIO0_5,
  472. PINCTRL_GRP_CAN1_1,
  473. PINCTRL_GRP_I2C1_1,
  474. PINCTRL_GRP_SWDT1_0_RST,
  475. PINCTRL_GRP_SPI0_0,
  476. PINCTRL_GRP_TTC1_0_WAV,
  477. PINCTRL_GRP_UART1_1,
  478. PINCTRL_GRP_TRACE0_0,
  479. END_OF_GROUPS,
  480. }),
  481. },
  482. [PINCTRL_PIN_6] = {
  483. .groups = &((uint16_t []) {
  484. PINCTRL_GRP_QSPI_FBCLK,
  485. PINCTRL_GRP_RESERVED,
  486. PINCTRL_GRP_RESERVED,
  487. PINCTRL_GRP_TESTSCAN0_0,
  488. PINCTRL_GRP_RESERVED,
  489. PINCTRL_GRP_GPIO0_6,
  490. PINCTRL_GRP_CAN0_1,
  491. PINCTRL_GRP_I2C0_1,
  492. PINCTRL_GRP_SWDT0_0_CLK,
  493. PINCTRL_GRP_SPI1_0,
  494. PINCTRL_GRP_TTC0_0_CLK,
  495. PINCTRL_GRP_UART0_1,
  496. PINCTRL_GRP_TRACE0_0,
  497. END_OF_GROUPS,
  498. }),
  499. },
  500. [PINCTRL_PIN_7] = {
  501. .groups = &((uint16_t []) {
  502. PINCTRL_GRP_QSPI_SS,
  503. PINCTRL_GRP_RESERVED,
  504. PINCTRL_GRP_RESERVED,
  505. PINCTRL_GRP_TESTSCAN0_0,
  506. PINCTRL_GRP_RESERVED,
  507. PINCTRL_GRP_GPIO0_7,
  508. PINCTRL_GRP_CAN0_1,
  509. PINCTRL_GRP_I2C0_1,
  510. PINCTRL_GRP_SWDT0_0_RST,
  511. PINCTRL_GRP_SPI1_0_SS2,
  512. PINCTRL_GRP_TTC0_0_WAV,
  513. PINCTRL_GRP_UART0_1,
  514. PINCTRL_GRP_TRACE0_0,
  515. END_OF_GROUPS,
  516. }),
  517. },
  518. [PINCTRL_PIN_8] = {
  519. .groups = &((uint16_t []) {
  520. PINCTRL_GRP_QSPI0_0,
  521. PINCTRL_GRP_RESERVED,
  522. PINCTRL_GRP_RESERVED,
  523. PINCTRL_GRP_TESTSCAN0_0,
  524. PINCTRL_GRP_RESERVED,
  525. PINCTRL_GRP_GPIO0_8,
  526. PINCTRL_GRP_CAN1_2,
  527. PINCTRL_GRP_I2C1_2,
  528. PINCTRL_GRP_SWDT1_1_CLK,
  529. PINCTRL_GRP_SPI1_0_SS1,
  530. PINCTRL_GRP_TTC3_1_CLK,
  531. PINCTRL_GRP_UART1_2,
  532. PINCTRL_GRP_TRACE0_0,
  533. END_OF_GROUPS,
  534. }),
  535. },
  536. [PINCTRL_PIN_9] = {
  537. .groups = &((uint16_t []) {
  538. PINCTRL_GRP_QSPI0_0,
  539. PINCTRL_GRP_NAND0_0_CE,
  540. PINCTRL_GRP_RESERVED,
  541. PINCTRL_GRP_TESTSCAN0_0,
  542. PINCTRL_GRP_RESERVED,
  543. PINCTRL_GRP_GPIO0_9,
  544. PINCTRL_GRP_CAN1_2,
  545. PINCTRL_GRP_I2C1_2,
  546. PINCTRL_GRP_SWDT1_1_RST,
  547. PINCTRL_GRP_SPI1_0_SS0,
  548. PINCTRL_GRP_TTC3_1_WAV,
  549. PINCTRL_GRP_UART1_2,
  550. PINCTRL_GRP_TRACE0_0,
  551. END_OF_GROUPS,
  552. }),
  553. },
  554. [PINCTRL_PIN_10] = {
  555. .groups = &((uint16_t []) {
  556. PINCTRL_GRP_QSPI0_0,
  557. PINCTRL_GRP_NAND0_0_RB,
  558. PINCTRL_GRP_RESERVED,
  559. PINCTRL_GRP_TESTSCAN0_0,
  560. PINCTRL_GRP_RESERVED,
  561. PINCTRL_GRP_GPIO0_10,
  562. PINCTRL_GRP_CAN0_2,
  563. PINCTRL_GRP_I2C0_2,
  564. PINCTRL_GRP_SWDT0_1_CLK,
  565. PINCTRL_GRP_SPI1_0,
  566. PINCTRL_GRP_TTC2_1_CLK,
  567. PINCTRL_GRP_UART0_2,
  568. PINCTRL_GRP_TRACE0_0,
  569. END_OF_GROUPS,
  570. }),
  571. },
  572. [PINCTRL_PIN_11] = {
  573. .groups = &((uint16_t []) {
  574. PINCTRL_GRP_QSPI0_0,
  575. PINCTRL_GRP_NAND0_0_RB,
  576. PINCTRL_GRP_RESERVED,
  577. PINCTRL_GRP_TESTSCAN0_0,
  578. PINCTRL_GRP_RESERVED,
  579. PINCTRL_GRP_GPIO0_11,
  580. PINCTRL_GRP_CAN0_2,
  581. PINCTRL_GRP_I2C0_2,
  582. PINCTRL_GRP_SWDT0_1_RST,
  583. PINCTRL_GRP_SPI1_0,
  584. PINCTRL_GRP_TTC2_1_WAV,
  585. PINCTRL_GRP_UART0_2,
  586. PINCTRL_GRP_TRACE0_0,
  587. END_OF_GROUPS,
  588. }),
  589. },
  590. [PINCTRL_PIN_12] = {
  591. .groups = &((uint16_t []) {
  592. PINCTRL_GRP_QSPI0_0,
  593. PINCTRL_GRP_NAND0_0_DQS,
  594. PINCTRL_GRP_RESERVED,
  595. PINCTRL_GRP_TESTSCAN0_0,
  596. PINCTRL_GRP_RESERVED,
  597. PINCTRL_GRP_GPIO0_12,
  598. PINCTRL_GRP_CAN1_3,
  599. PINCTRL_GRP_I2C1_3,
  600. PINCTRL_GRP_PJTAG0_1,
  601. PINCTRL_GRP_SPI0_1,
  602. PINCTRL_GRP_TTC1_1_CLK,
  603. PINCTRL_GRP_UART1_3,
  604. PINCTRL_GRP_TRACE0_0,
  605. END_OF_GROUPS,
  606. }),
  607. },
  608. [PINCTRL_PIN_13] = {
  609. .groups = &((uint16_t []) {
  610. PINCTRL_GRP_RESERVED,
  611. PINCTRL_GRP_NAND0_0,
  612. PINCTRL_GRP_SDIO0_0,
  613. PINCTRL_GRP_TESTSCAN0_0,
  614. PINCTRL_GRP_RESERVED,
  615. PINCTRL_GRP_GPIO0_13,
  616. PINCTRL_GRP_CAN1_3,
  617. PINCTRL_GRP_I2C1_3,
  618. PINCTRL_GRP_PJTAG0_1,
  619. PINCTRL_GRP_SPI0_1_SS2,
  620. PINCTRL_GRP_TTC1_1_WAV,
  621. PINCTRL_GRP_UART1_3,
  622. PINCTRL_GRP_TRACE0_0,
  623. PINCTRL_GRP_SDIO0_4BIT_0_0,
  624. PINCTRL_GRP_SDIO0_1BIT_0_0,
  625. END_OF_GROUPS,
  626. }),
  627. },
  628. [PINCTRL_PIN_14] = {
  629. .groups = &((uint16_t []) {
  630. PINCTRL_GRP_RESERVED,
  631. PINCTRL_GRP_NAND0_0,
  632. PINCTRL_GRP_SDIO0_0,
  633. PINCTRL_GRP_TESTSCAN0_0,
  634. PINCTRL_GRP_RESERVED,
  635. PINCTRL_GRP_GPIO0_14,
  636. PINCTRL_GRP_CAN0_3,
  637. PINCTRL_GRP_I2C0_3,
  638. PINCTRL_GRP_PJTAG0_1,
  639. PINCTRL_GRP_SPI0_1_SS1,
  640. PINCTRL_GRP_TTC0_1_CLK,
  641. PINCTRL_GRP_UART0_3,
  642. PINCTRL_GRP_TRACE0_0,
  643. PINCTRL_GRP_SDIO0_4BIT_0_0,
  644. PINCTRL_GRP_SDIO0_1BIT_0_1,
  645. END_OF_GROUPS,
  646. }),
  647. },
  648. [PINCTRL_PIN_15] = {
  649. .groups = &((uint16_t []) {
  650. PINCTRL_GRP_RESERVED,
  651. PINCTRL_GRP_NAND0_0,
  652. PINCTRL_GRP_SDIO0_0,
  653. PINCTRL_GRP_TESTSCAN0_0,
  654. PINCTRL_GRP_RESERVED,
  655. PINCTRL_GRP_GPIO0_15,
  656. PINCTRL_GRP_CAN0_3,
  657. PINCTRL_GRP_I2C0_3,
  658. PINCTRL_GRP_PJTAG0_1,
  659. PINCTRL_GRP_SPI0_1_SS0,
  660. PINCTRL_GRP_TTC0_1_WAV,
  661. PINCTRL_GRP_UART0_3,
  662. PINCTRL_GRP_TRACE0_0,
  663. PINCTRL_GRP_SDIO0_4BIT_0_0,
  664. PINCTRL_GRP_SDIO0_1BIT_0_2,
  665. END_OF_GROUPS,
  666. }),
  667. },
  668. [PINCTRL_PIN_16] = {
  669. .groups = &((uint16_t []) {
  670. PINCTRL_GRP_RESERVED,
  671. PINCTRL_GRP_NAND0_0,
  672. PINCTRL_GRP_SDIO0_0,
  673. PINCTRL_GRP_TESTSCAN0_0,
  674. PINCTRL_GRP_RESERVED,
  675. PINCTRL_GRP_GPIO0_16,
  676. PINCTRL_GRP_CAN1_4,
  677. PINCTRL_GRP_I2C1_4,
  678. PINCTRL_GRP_SWDT1_2_CLK,
  679. PINCTRL_GRP_SPI0_1,
  680. PINCTRL_GRP_TTC3_2_CLK,
  681. PINCTRL_GRP_UART1_4,
  682. PINCTRL_GRP_TRACE0_0,
  683. PINCTRL_GRP_SDIO0_4BIT_0_0,
  684. PINCTRL_GRP_SDIO0_1BIT_0_3,
  685. END_OF_GROUPS,
  686. }),
  687. },
  688. [PINCTRL_PIN_17] = {
  689. .groups = &((uint16_t []) {
  690. PINCTRL_GRP_RESERVED,
  691. PINCTRL_GRP_NAND0_0,
  692. PINCTRL_GRP_SDIO0_0,
  693. PINCTRL_GRP_TESTSCAN0_0,
  694. PINCTRL_GRP_RESERVED,
  695. PINCTRL_GRP_GPIO0_17,
  696. PINCTRL_GRP_CAN1_4,
  697. PINCTRL_GRP_I2C1_4,
  698. PINCTRL_GRP_SWDT1_2_RST,
  699. PINCTRL_GRP_SPI0_1,
  700. PINCTRL_GRP_TTC3_2_WAV,
  701. PINCTRL_GRP_UART1_4,
  702. PINCTRL_GRP_TRACE0_0,
  703. PINCTRL_GRP_SDIO0_4BIT_0_1,
  704. PINCTRL_GRP_SDIO0_1BIT_0_4,
  705. END_OF_GROUPS,
  706. }),
  707. },
  708. [PINCTRL_PIN_18] = {
  709. .groups = &((uint16_t []) {
  710. PINCTRL_GRP_RESERVED,
  711. PINCTRL_GRP_NAND0_0,
  712. PINCTRL_GRP_SDIO0_0,
  713. PINCTRL_GRP_TESTSCAN0_0,
  714. PINCTRL_GRP_CSU0_0,
  715. PINCTRL_GRP_GPIO0_18,
  716. PINCTRL_GRP_CAN0_4,
  717. PINCTRL_GRP_I2C0_4,
  718. PINCTRL_GRP_SWDT0_2_CLK,
  719. PINCTRL_GRP_SPI1_1,
  720. PINCTRL_GRP_TTC2_2_CLK,
  721. PINCTRL_GRP_UART0_4,
  722. PINCTRL_GRP_RESERVED,
  723. PINCTRL_GRP_SDIO0_4BIT_0_1,
  724. PINCTRL_GRP_SDIO0_1BIT_0_5,
  725. END_OF_GROUPS,
  726. }),
  727. },
  728. [PINCTRL_PIN_19] = {
  729. .groups = &((uint16_t []) {
  730. PINCTRL_GRP_RESERVED,
  731. PINCTRL_GRP_NAND0_0,
  732. PINCTRL_GRP_SDIO0_0,
  733. PINCTRL_GRP_TESTSCAN0_0,
  734. PINCTRL_GRP_CSU0_1,
  735. PINCTRL_GRP_GPIO0_19,
  736. PINCTRL_GRP_CAN0_4,
  737. PINCTRL_GRP_I2C0_4,
  738. PINCTRL_GRP_SWDT0_2_RST,
  739. PINCTRL_GRP_SPI1_1_SS2,
  740. PINCTRL_GRP_TTC2_2_WAV,
  741. PINCTRL_GRP_UART0_4,
  742. PINCTRL_GRP_RESERVED,
  743. PINCTRL_GRP_SDIO0_4BIT_0_1,
  744. PINCTRL_GRP_SDIO0_1BIT_0_6,
  745. END_OF_GROUPS,
  746. }),
  747. },
  748. [PINCTRL_PIN_20] = {
  749. .groups = &((uint16_t []) {
  750. PINCTRL_GRP_RESERVED,
  751. PINCTRL_GRP_NAND0_0,
  752. PINCTRL_GRP_SDIO0_0,
  753. PINCTRL_GRP_TESTSCAN0_0,
  754. PINCTRL_GRP_CSU0_2,
  755. PINCTRL_GRP_GPIO0_20,
  756. PINCTRL_GRP_CAN1_5,
  757. PINCTRL_GRP_I2C1_5,
  758. PINCTRL_GRP_SWDT1_3_CLK,
  759. PINCTRL_GRP_SPI1_1_SS1,
  760. PINCTRL_GRP_TTC1_2_CLK,
  761. PINCTRL_GRP_UART1_5,
  762. PINCTRL_GRP_RESERVED,
  763. PINCTRL_GRP_SDIO0_4BIT_0_1,
  764. PINCTRL_GRP_SDIO0_1BIT_0_7,
  765. END_OF_GROUPS,
  766. }),
  767. },
  768. [PINCTRL_PIN_21] = {
  769. .groups = &((uint16_t []) {
  770. PINCTRL_GRP_RESERVED,
  771. PINCTRL_GRP_NAND0_0,
  772. PINCTRL_GRP_SDIO0_0,
  773. PINCTRL_GRP_TESTSCAN0_0,
  774. PINCTRL_GRP_CSU0_3,
  775. PINCTRL_GRP_GPIO0_21,
  776. PINCTRL_GRP_CAN1_5,
  777. PINCTRL_GRP_I2C1_5,
  778. PINCTRL_GRP_SWDT1_3_RST,
  779. PINCTRL_GRP_SPI1_1_SS0,
  780. PINCTRL_GRP_TTC1_2_WAV,
  781. PINCTRL_GRP_UART1_5,
  782. PINCTRL_GRP_RESERVED,
  783. PINCTRL_GRP_SDIO0_4BIT_0_0,
  784. PINCTRL_GRP_SDIO0_4BIT_0_1,
  785. PINCTRL_GRP_SDIO0_1BIT_0_0,
  786. PINCTRL_GRP_SDIO0_1BIT_0_1,
  787. PINCTRL_GRP_SDIO0_1BIT_0_2,
  788. PINCTRL_GRP_SDIO0_1BIT_0_3,
  789. PINCTRL_GRP_SDIO0_1BIT_0_4,
  790. PINCTRL_GRP_SDIO0_1BIT_0_5,
  791. PINCTRL_GRP_SDIO0_1BIT_0_6,
  792. PINCTRL_GRP_SDIO0_1BIT_0_7,
  793. END_OF_GROUPS,
  794. }),
  795. },
  796. [PINCTRL_PIN_22] = {
  797. .groups = &((uint16_t []) {
  798. PINCTRL_GRP_RESERVED,
  799. PINCTRL_GRP_NAND0_0,
  800. PINCTRL_GRP_SDIO0_0,
  801. PINCTRL_GRP_TESTSCAN0_0,
  802. PINCTRL_GRP_CSU0_4,
  803. PINCTRL_GRP_GPIO0_22,
  804. PINCTRL_GRP_CAN0_5,
  805. PINCTRL_GRP_I2C0_5,
  806. PINCTRL_GRP_SWDT0_3_CLK,
  807. PINCTRL_GRP_SPI1_1,
  808. PINCTRL_GRP_TTC0_2_CLK,
  809. PINCTRL_GRP_UART0_5,
  810. PINCTRL_GRP_RESERVED,
  811. PINCTRL_GRP_SDIO0_4BIT_0_0,
  812. PINCTRL_GRP_SDIO0_4BIT_0_1,
  813. PINCTRL_GRP_SDIO0_1BIT_0_0,
  814. PINCTRL_GRP_SDIO0_1BIT_0_1,
  815. PINCTRL_GRP_SDIO0_1BIT_0_2,
  816. PINCTRL_GRP_SDIO0_1BIT_0_3,
  817. PINCTRL_GRP_SDIO0_1BIT_0_4,
  818. PINCTRL_GRP_SDIO0_1BIT_0_5,
  819. PINCTRL_GRP_SDIO0_1BIT_0_6,
  820. PINCTRL_GRP_SDIO0_1BIT_0_7,
  821. END_OF_GROUPS,
  822. }),
  823. },
  824. [PINCTRL_PIN_23] = {
  825. .groups = &((uint16_t []) {
  826. PINCTRL_GRP_RESERVED,
  827. PINCTRL_GRP_NAND0_0,
  828. PINCTRL_GRP_SDIO0_0_PC,
  829. PINCTRL_GRP_TESTSCAN0_0,
  830. PINCTRL_GRP_CSU0_5,
  831. PINCTRL_GRP_GPIO0_23,
  832. PINCTRL_GRP_CAN0_5,
  833. PINCTRL_GRP_I2C0_5,
  834. PINCTRL_GRP_SWDT0_3_RST,
  835. PINCTRL_GRP_SPI1_1,
  836. PINCTRL_GRP_TTC0_2_WAV,
  837. PINCTRL_GRP_UART0_5,
  838. PINCTRL_GRP_RESERVED,
  839. END_OF_GROUPS,
  840. }),
  841. },
  842. [PINCTRL_PIN_24] = {
  843. .groups = &((uint16_t []) {
  844. PINCTRL_GRP_RESERVED,
  845. PINCTRL_GRP_NAND0_0,
  846. PINCTRL_GRP_SDIO0_0_CD,
  847. PINCTRL_GRP_TESTSCAN0_0,
  848. PINCTRL_GRP_CSU0_6,
  849. PINCTRL_GRP_GPIO0_24,
  850. PINCTRL_GRP_CAN1_6,
  851. PINCTRL_GRP_I2C1_6,
  852. PINCTRL_GRP_SWDT1_4_CLK,
  853. PINCTRL_GRP_RESERVED,
  854. PINCTRL_GRP_TTC3_3_CLK,
  855. PINCTRL_GRP_UART1_6,
  856. PINCTRL_GRP_RESERVED,
  857. END_OF_GROUPS,
  858. }),
  859. },
  860. [PINCTRL_PIN_25] = {
  861. .groups = &((uint16_t []) {
  862. PINCTRL_GRP_RESERVED,
  863. PINCTRL_GRP_NAND0_0,
  864. PINCTRL_GRP_SDIO0_0_WP,
  865. PINCTRL_GRP_TESTSCAN0_0,
  866. PINCTRL_GRP_CSU0_7,
  867. PINCTRL_GRP_GPIO0_25,
  868. PINCTRL_GRP_CAN1_6,
  869. PINCTRL_GRP_I2C1_6,
  870. PINCTRL_GRP_SWDT1_4_RST,
  871. PINCTRL_GRP_RESERVED,
  872. PINCTRL_GRP_TTC3_3_WAV,
  873. PINCTRL_GRP_UART1_6,
  874. PINCTRL_GRP_RESERVED,
  875. END_OF_GROUPS,
  876. }),
  877. },
  878. [PINCTRL_PIN_26] = {
  879. .groups = &((uint16_t []) {
  880. PINCTRL_GRP_ETHERNET0_0,
  881. PINCTRL_GRP_GEMTSU0_0,
  882. PINCTRL_GRP_NAND0_1_CE,
  883. PINCTRL_GRP_PMU0_0,
  884. PINCTRL_GRP_TESTSCAN0_0,
  885. PINCTRL_GRP_CSU0_8,
  886. PINCTRL_GRP_GPIO0_26,
  887. PINCTRL_GRP_CAN0_6,
  888. PINCTRL_GRP_I2C0_6,
  889. PINCTRL_GRP_PJTAG0_2,
  890. PINCTRL_GRP_SPI0_2,
  891. PINCTRL_GRP_TTC2_3_CLK,
  892. PINCTRL_GRP_UART0_6,
  893. PINCTRL_GRP_TRACE0_1,
  894. END_OF_GROUPS,
  895. }),
  896. },
  897. [PINCTRL_PIN_27] = {
  898. .groups = &((uint16_t []) {
  899. PINCTRL_GRP_ETHERNET0_0,
  900. PINCTRL_GRP_NAND0_1_RB,
  901. PINCTRL_GRP_PMU0_1,
  902. PINCTRL_GRP_TESTSCAN0_0,
  903. PINCTRL_GRP_DPAUX0_0,
  904. PINCTRL_GRP_GPIO0_27,
  905. PINCTRL_GRP_CAN0_6,
  906. PINCTRL_GRP_I2C0_6,
  907. PINCTRL_GRP_PJTAG0_2,
  908. PINCTRL_GRP_SPI0_2_SS2,
  909. PINCTRL_GRP_TTC2_3_WAV,
  910. PINCTRL_GRP_UART0_6,
  911. PINCTRL_GRP_TRACE0_1,
  912. END_OF_GROUPS,
  913. }),
  914. },
  915. [PINCTRL_PIN_28] = {
  916. .groups = &((uint16_t []) {
  917. PINCTRL_GRP_ETHERNET0_0,
  918. PINCTRL_GRP_NAND0_1_RB,
  919. PINCTRL_GRP_PMU0_2,
  920. PINCTRL_GRP_TESTSCAN0_0,
  921. PINCTRL_GRP_DPAUX0_0,
  922. PINCTRL_GRP_GPIO0_28,
  923. PINCTRL_GRP_CAN1_7,
  924. PINCTRL_GRP_I2C1_7,
  925. PINCTRL_GRP_PJTAG0_2,
  926. PINCTRL_GRP_SPI0_2_SS1,
  927. PINCTRL_GRP_TTC1_3_CLK,
  928. PINCTRL_GRP_UART1_7,
  929. PINCTRL_GRP_TRACE0_1,
  930. END_OF_GROUPS,
  931. }),
  932. },
  933. [PINCTRL_PIN_29] = {
  934. .groups = &((uint16_t []) {
  935. PINCTRL_GRP_ETHERNET0_0,
  936. PINCTRL_GRP_PCIE0_0,
  937. PINCTRL_GRP_PMU0_3,
  938. PINCTRL_GRP_TESTSCAN0_0,
  939. PINCTRL_GRP_DPAUX0_1,
  940. PINCTRL_GRP_GPIO0_29,
  941. PINCTRL_GRP_CAN1_7,
  942. PINCTRL_GRP_I2C1_7,
  943. PINCTRL_GRP_PJTAG0_2,
  944. PINCTRL_GRP_SPI0_2_SS0,
  945. PINCTRL_GRP_TTC1_3_WAV,
  946. PINCTRL_GRP_UART1_7,
  947. PINCTRL_GRP_TRACE0_1,
  948. END_OF_GROUPS,
  949. }),
  950. },
  951. [PINCTRL_PIN_30] = {
  952. .groups = &((uint16_t []) {
  953. PINCTRL_GRP_ETHERNET0_0,
  954. PINCTRL_GRP_PCIE0_1,
  955. PINCTRL_GRP_PMU0_4,
  956. PINCTRL_GRP_TESTSCAN0_0,
  957. PINCTRL_GRP_DPAUX0_1,
  958. PINCTRL_GRP_GPIO0_30,
  959. PINCTRL_GRP_CAN0_7,
  960. PINCTRL_GRP_I2C0_7,
  961. PINCTRL_GRP_SWDT0_4_CLK,
  962. PINCTRL_GRP_SPI0_2,
  963. PINCTRL_GRP_TTC0_3_CLK,
  964. PINCTRL_GRP_UART0_7,
  965. PINCTRL_GRP_TRACE0_1,
  966. END_OF_GROUPS,
  967. }),
  968. },
  969. [PINCTRL_PIN_31] = {
  970. .groups = &((uint16_t []) {
  971. PINCTRL_GRP_ETHERNET0_0,
  972. PINCTRL_GRP_PCIE0_2,
  973. PINCTRL_GRP_PMU0_5,
  974. PINCTRL_GRP_TESTSCAN0_0,
  975. PINCTRL_GRP_CSU0_9,
  976. PINCTRL_GRP_GPIO0_31,
  977. PINCTRL_GRP_CAN0_7,
  978. PINCTRL_GRP_I2C0_7,
  979. PINCTRL_GRP_SWDT0_4_RST,
  980. PINCTRL_GRP_SPI0_2,
  981. PINCTRL_GRP_TTC0_3_WAV,
  982. PINCTRL_GRP_UART0_7,
  983. PINCTRL_GRP_TRACE0_1,
  984. END_OF_GROUPS,
  985. }),
  986. },
  987. [PINCTRL_PIN_32] = {
  988. .groups = &((uint16_t []) {
  989. PINCTRL_GRP_ETHERNET0_0,
  990. PINCTRL_GRP_NAND0_1_DQS,
  991. PINCTRL_GRP_PMU0_6,
  992. PINCTRL_GRP_TESTSCAN0_0,
  993. PINCTRL_GRP_CSU0_10,
  994. PINCTRL_GRP_GPIO0_32,
  995. PINCTRL_GRP_CAN1_8,
  996. PINCTRL_GRP_I2C1_8,
  997. PINCTRL_GRP_SWDT1_5_CLK,
  998. PINCTRL_GRP_SPI1_2,
  999. PINCTRL_GRP_TTC3_4_CLK,
  1000. PINCTRL_GRP_UART1_8,
  1001. PINCTRL_GRP_TRACE0_1,
  1002. END_OF_GROUPS,
  1003. }),
  1004. },
  1005. [PINCTRL_PIN_33] = {
  1006. .groups = &((uint16_t []) {
  1007. PINCTRL_GRP_ETHERNET0_0,
  1008. PINCTRL_GRP_PCIE0_3,
  1009. PINCTRL_GRP_PMU0_7,
  1010. PINCTRL_GRP_TESTSCAN0_0,
  1011. PINCTRL_GRP_CSU0_11,
  1012. PINCTRL_GRP_GPIO0_33,
  1013. PINCTRL_GRP_CAN1_8,
  1014. PINCTRL_GRP_I2C1_8,
  1015. PINCTRL_GRP_SWDT1_5_RST,
  1016. PINCTRL_GRP_SPI1_2_SS2,
  1017. PINCTRL_GRP_TTC3_4_WAV,
  1018. PINCTRL_GRP_UART1_8,
  1019. PINCTRL_GRP_TRACE0_1,
  1020. END_OF_GROUPS,
  1021. }),
  1022. },
  1023. [PINCTRL_PIN_34] = {
  1024. .groups = &((uint16_t []) {
  1025. PINCTRL_GRP_ETHERNET0_0,
  1026. PINCTRL_GRP_PCIE0_4,
  1027. PINCTRL_GRP_PMU0_8,
  1028. PINCTRL_GRP_TESTSCAN0_0,
  1029. PINCTRL_GRP_DPAUX0_2,
  1030. PINCTRL_GRP_GPIO0_34,
  1031. PINCTRL_GRP_CAN0_8,
  1032. PINCTRL_GRP_I2C0_8,
  1033. PINCTRL_GRP_SWDT0_5_CLK,
  1034. PINCTRL_GRP_SPI1_2_SS1,
  1035. PINCTRL_GRP_TTC2_4_CLK,
  1036. PINCTRL_GRP_UART0_8,
  1037. PINCTRL_GRP_TRACE0_1,
  1038. END_OF_GROUPS,
  1039. }),
  1040. },
  1041. [PINCTRL_PIN_35] = {
  1042. .groups = &((uint16_t []) {
  1043. PINCTRL_GRP_ETHERNET0_0,
  1044. PINCTRL_GRP_PCIE0_5,
  1045. PINCTRL_GRP_PMU0_9,
  1046. PINCTRL_GRP_TESTSCAN0_0,
  1047. PINCTRL_GRP_DPAUX0_2,
  1048. PINCTRL_GRP_GPIO0_35,
  1049. PINCTRL_GRP_CAN0_8,
  1050. PINCTRL_GRP_I2C0_8,
  1051. PINCTRL_GRP_SWDT0_5_RST,
  1052. PINCTRL_GRP_SPI1_2_SS0,
  1053. PINCTRL_GRP_TTC2_4_WAV,
  1054. PINCTRL_GRP_UART0_8,
  1055. PINCTRL_GRP_TRACE0_1,
  1056. END_OF_GROUPS,
  1057. }),
  1058. },
  1059. [PINCTRL_PIN_36] = {
  1060. .groups = &((uint16_t []) {
  1061. PINCTRL_GRP_ETHERNET0_0,
  1062. PINCTRL_GRP_PCIE0_6,
  1063. PINCTRL_GRP_PMU0_10,
  1064. PINCTRL_GRP_TESTSCAN0_0,
  1065. PINCTRL_GRP_DPAUX0_3,
  1066. PINCTRL_GRP_GPIO0_36,
  1067. PINCTRL_GRP_CAN1_9,
  1068. PINCTRL_GRP_I2C1_9,
  1069. PINCTRL_GRP_SWDT1_6_CLK,
  1070. PINCTRL_GRP_SPI1_2,
  1071. PINCTRL_GRP_TTC1_4_CLK,
  1072. PINCTRL_GRP_UART1_9,
  1073. PINCTRL_GRP_TRACE0_1,
  1074. END_OF_GROUPS,
  1075. }),
  1076. },
  1077. [PINCTRL_PIN_37] = {
  1078. .groups = &((uint16_t []) {
  1079. PINCTRL_GRP_ETHERNET0_0,
  1080. PINCTRL_GRP_PCIE0_7,
  1081. PINCTRL_GRP_PMU0_11,
  1082. PINCTRL_GRP_TESTSCAN0_0,
  1083. PINCTRL_GRP_DPAUX0_3,
  1084. PINCTRL_GRP_GPIO0_37,
  1085. PINCTRL_GRP_CAN1_9,
  1086. PINCTRL_GRP_I2C1_9,
  1087. PINCTRL_GRP_SWDT1_6_RST,
  1088. PINCTRL_GRP_SPI1_2,
  1089. PINCTRL_GRP_TTC1_4_WAV,
  1090. PINCTRL_GRP_UART1_9,
  1091. PINCTRL_GRP_TRACE0_1,
  1092. END_OF_GROUPS,
  1093. }),
  1094. },
  1095. [PINCTRL_PIN_38] = {
  1096. .groups = &((uint16_t []) {
  1097. PINCTRL_GRP_ETHERNET1_0,
  1098. PINCTRL_GRP_RESERVED,
  1099. PINCTRL_GRP_SDIO0_1,
  1100. PINCTRL_GRP_RESERVED,
  1101. PINCTRL_GRP_RESERVED,
  1102. PINCTRL_GRP_GPIO0_38,
  1103. PINCTRL_GRP_CAN0_9,
  1104. PINCTRL_GRP_I2C0_9,
  1105. PINCTRL_GRP_PJTAG0_3,
  1106. PINCTRL_GRP_SPI0_3,
  1107. PINCTRL_GRP_TTC0_4_CLK,
  1108. PINCTRL_GRP_UART0_9,
  1109. PINCTRL_GRP_TRACE0_1_CLK,
  1110. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1111. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1112. PINCTRL_GRP_SDIO0_1BIT_1_0,
  1113. PINCTRL_GRP_SDIO0_1BIT_1_1,
  1114. PINCTRL_GRP_SDIO0_1BIT_1_2,
  1115. PINCTRL_GRP_SDIO0_1BIT_1_3,
  1116. PINCTRL_GRP_SDIO0_1BIT_1_4,
  1117. PINCTRL_GRP_SDIO0_1BIT_1_5,
  1118. PINCTRL_GRP_SDIO0_1BIT_1_6,
  1119. PINCTRL_GRP_SDIO0_1BIT_1_7,
  1120. END_OF_GROUPS,
  1121. }),
  1122. },
  1123. [PINCTRL_PIN_39] = {
  1124. .groups = &((uint16_t []) {
  1125. PINCTRL_GRP_ETHERNET1_0,
  1126. PINCTRL_GRP_RESERVED,
  1127. PINCTRL_GRP_SDIO0_1_CD,
  1128. PINCTRL_GRP_SDIO1_0,
  1129. PINCTRL_GRP_RESERVED,
  1130. PINCTRL_GRP_GPIO0_39,
  1131. PINCTRL_GRP_CAN0_9,
  1132. PINCTRL_GRP_I2C0_9,
  1133. PINCTRL_GRP_PJTAG0_3,
  1134. PINCTRL_GRP_SPI0_3_SS2,
  1135. PINCTRL_GRP_TTC0_4_WAV,
  1136. PINCTRL_GRP_UART0_9,
  1137. PINCTRL_GRP_TRACE0_1_CLK,
  1138. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1139. PINCTRL_GRP_SDIO1_1BIT_0_0,
  1140. END_OF_GROUPS,
  1141. }),
  1142. },
  1143. [PINCTRL_PIN_40] = {
  1144. .groups = &((uint16_t []) {
  1145. PINCTRL_GRP_ETHERNET1_0,
  1146. PINCTRL_GRP_RESERVED,
  1147. PINCTRL_GRP_SDIO0_1,
  1148. PINCTRL_GRP_SDIO1_0,
  1149. PINCTRL_GRP_RESERVED,
  1150. PINCTRL_GRP_GPIO0_40,
  1151. PINCTRL_GRP_CAN1_10,
  1152. PINCTRL_GRP_I2C1_10,
  1153. PINCTRL_GRP_PJTAG0_3,
  1154. PINCTRL_GRP_SPI0_3_SS1,
  1155. PINCTRL_GRP_TTC3_5_CLK,
  1156. PINCTRL_GRP_UART1_10,
  1157. PINCTRL_GRP_TRACE0_1,
  1158. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1159. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1160. PINCTRL_GRP_SDIO0_1BIT_1_0,
  1161. PINCTRL_GRP_SDIO0_1BIT_1_1,
  1162. PINCTRL_GRP_SDIO0_1BIT_1_2,
  1163. PINCTRL_GRP_SDIO0_1BIT_1_3,
  1164. PINCTRL_GRP_SDIO0_1BIT_1_4,
  1165. PINCTRL_GRP_SDIO0_1BIT_1_5,
  1166. PINCTRL_GRP_SDIO0_1BIT_1_6,
  1167. PINCTRL_GRP_SDIO0_1BIT_1_7,
  1168. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1169. PINCTRL_GRP_SDIO1_1BIT_0_1,
  1170. END_OF_GROUPS,
  1171. }),
  1172. },
  1173. [PINCTRL_PIN_41] = {
  1174. .groups = &((uint16_t []) {
  1175. PINCTRL_GRP_ETHERNET1_0,
  1176. PINCTRL_GRP_RESERVED,
  1177. PINCTRL_GRP_SDIO0_1,
  1178. PINCTRL_GRP_SDIO1_0,
  1179. PINCTRL_GRP_RESERVED,
  1180. PINCTRL_GRP_GPIO0_41,
  1181. PINCTRL_GRP_CAN1_10,
  1182. PINCTRL_GRP_I2C1_10,
  1183. PINCTRL_GRP_PJTAG0_3,
  1184. PINCTRL_GRP_SPI0_3_SS0,
  1185. PINCTRL_GRP_TTC3_5_WAV,
  1186. PINCTRL_GRP_UART1_10,
  1187. PINCTRL_GRP_TRACE0_1,
  1188. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1189. PINCTRL_GRP_SDIO0_1BIT_1_0,
  1190. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1191. PINCTRL_GRP_SDIO1_1BIT_0_2,
  1192. END_OF_GROUPS,
  1193. }),
  1194. },
  1195. [PINCTRL_PIN_42] = {
  1196. .groups = &((uint16_t []) {
  1197. PINCTRL_GRP_ETHERNET1_0,
  1198. PINCTRL_GRP_RESERVED,
  1199. PINCTRL_GRP_SDIO0_1,
  1200. PINCTRL_GRP_SDIO1_0,
  1201. PINCTRL_GRP_RESERVED,
  1202. PINCTRL_GRP_GPIO0_42,
  1203. PINCTRL_GRP_CAN0_10,
  1204. PINCTRL_GRP_I2C0_10,
  1205. PINCTRL_GRP_SWDT0_6_CLK,
  1206. PINCTRL_GRP_SPI0_3,
  1207. PINCTRL_GRP_TTC2_5_CLK,
  1208. PINCTRL_GRP_UART0_10,
  1209. PINCTRL_GRP_TRACE0_1,
  1210. PINCTRL_GRP_SDIO0_1,
  1211. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1212. PINCTRL_GRP_SDIO0_1BIT_1_1,
  1213. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1214. PINCTRL_GRP_SDIO1_1BIT_0_3,
  1215. END_OF_GROUPS,
  1216. }),
  1217. },
  1218. [PINCTRL_PIN_43] = {
  1219. .groups = &((uint16_t []) {
  1220. PINCTRL_GRP_ETHERNET1_0,
  1221. PINCTRL_GRP_RESERVED,
  1222. PINCTRL_GRP_SDIO0_1,
  1223. PINCTRL_GRP_SDIO1_0_PC,
  1224. PINCTRL_GRP_RESERVED,
  1225. PINCTRL_GRP_GPIO0_43,
  1226. PINCTRL_GRP_CAN0_10,
  1227. PINCTRL_GRP_I2C0_10,
  1228. PINCTRL_GRP_SWDT0_6_RST,
  1229. PINCTRL_GRP_SPI0_3,
  1230. PINCTRL_GRP_TTC2_5_WAV,
  1231. PINCTRL_GRP_UART0_10,
  1232. PINCTRL_GRP_TRACE0_1,
  1233. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1234. PINCTRL_GRP_SDIO0_1BIT_1_2,
  1235. END_OF_GROUPS,
  1236. }),
  1237. },
  1238. [PINCTRL_PIN_44] = {
  1239. .groups = &((uint16_t []) {
  1240. PINCTRL_GRP_ETHERNET1_0,
  1241. PINCTRL_GRP_RESERVED,
  1242. PINCTRL_GRP_SDIO0_1,
  1243. PINCTRL_GRP_SDIO1_0_WP,
  1244. PINCTRL_GRP_RESERVED,
  1245. PINCTRL_GRP_GPIO0_44,
  1246. PINCTRL_GRP_CAN1_11,
  1247. PINCTRL_GRP_I2C1_11,
  1248. PINCTRL_GRP_SWDT1_7_CLK,
  1249. PINCTRL_GRP_SPI1_3,
  1250. PINCTRL_GRP_TTC1_5_CLK,
  1251. PINCTRL_GRP_UART1_11,
  1252. PINCTRL_GRP_RESERVED,
  1253. PINCTRL_GRP_SDIO0_4BIT_1_0,
  1254. PINCTRL_GRP_SDIO0_1BIT_1_3,
  1255. END_OF_GROUPS,
  1256. }),
  1257. },
  1258. [PINCTRL_PIN_45] = {
  1259. .groups = &((uint16_t []) {
  1260. PINCTRL_GRP_ETHERNET1_0,
  1261. PINCTRL_GRP_RESERVED,
  1262. PINCTRL_GRP_SDIO0_1,
  1263. PINCTRL_GRP_SDIO1_0_CD,
  1264. PINCTRL_GRP_RESERVED,
  1265. PINCTRL_GRP_GPIO0_45,
  1266. PINCTRL_GRP_CAN1_11,
  1267. PINCTRL_GRP_I2C1_11,
  1268. PINCTRL_GRP_SWDT1_7_RST,
  1269. PINCTRL_GRP_SPI1_3_SS2,
  1270. PINCTRL_GRP_TTC1_5_WAV,
  1271. PINCTRL_GRP_UART1_11,
  1272. PINCTRL_GRP_RESERVED,
  1273. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1274. PINCTRL_GRP_SDIO0_1BIT_1_4,
  1275. END_OF_GROUPS,
  1276. }),
  1277. },
  1278. [PINCTRL_PIN_46] = {
  1279. .groups = &((uint16_t []) {
  1280. PINCTRL_GRP_ETHERNET1_0,
  1281. PINCTRL_GRP_RESERVED,
  1282. PINCTRL_GRP_SDIO0_1,
  1283. PINCTRL_GRP_SDIO1_0,
  1284. PINCTRL_GRP_RESERVED,
  1285. PINCTRL_GRP_GPIO0_46,
  1286. PINCTRL_GRP_CAN0_11,
  1287. PINCTRL_GRP_I2C0_11,
  1288. PINCTRL_GRP_SWDT0_7_CLK,
  1289. PINCTRL_GRP_SPI1_3_SS1,
  1290. PINCTRL_GRP_TTC0_5_CLK,
  1291. PINCTRL_GRP_UART0_11,
  1292. PINCTRL_GRP_RESERVED,
  1293. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1294. PINCTRL_GRP_SDIO0_1BIT_1_5,
  1295. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1296. PINCTRL_GRP_SDIO1_1BIT_0_4,
  1297. END_OF_GROUPS,
  1298. }),
  1299. },
  1300. [PINCTRL_PIN_47] = {
  1301. .groups = &((uint16_t []) {
  1302. PINCTRL_GRP_ETHERNET1_0,
  1303. PINCTRL_GRP_RESERVED,
  1304. PINCTRL_GRP_SDIO0_1,
  1305. PINCTRL_GRP_SDIO1_0,
  1306. PINCTRL_GRP_RESERVED,
  1307. PINCTRL_GRP_GPIO0_47,
  1308. PINCTRL_GRP_CAN0_11,
  1309. PINCTRL_GRP_I2C0_11,
  1310. PINCTRL_GRP_SWDT0_7_RST,
  1311. PINCTRL_GRP_SPI1_3_SS0,
  1312. PINCTRL_GRP_TTC0_5_WAV,
  1313. PINCTRL_GRP_UART0_11,
  1314. PINCTRL_GRP_RESERVED,
  1315. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1316. PINCTRL_GRP_SDIO0_1BIT_1_6,
  1317. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1318. PINCTRL_GRP_SDIO1_1BIT_0_5,
  1319. END_OF_GROUPS,
  1320. }),
  1321. },
  1322. [PINCTRL_PIN_48] = {
  1323. .groups = &((uint16_t []) {
  1324. PINCTRL_GRP_ETHERNET1_0,
  1325. PINCTRL_GRP_RESERVED,
  1326. PINCTRL_GRP_SDIO0_1,
  1327. PINCTRL_GRP_SDIO1_0,
  1328. PINCTRL_GRP_RESERVED,
  1329. PINCTRL_GRP_GPIO0_48,
  1330. PINCTRL_GRP_CAN1_12,
  1331. PINCTRL_GRP_I2C1_12,
  1332. PINCTRL_GRP_SWDT1_8_CLK,
  1333. PINCTRL_GRP_SPI1_3,
  1334. PINCTRL_GRP_TTC3_6_CLK,
  1335. PINCTRL_GRP_UART1_12,
  1336. PINCTRL_GRP_RESERVED,
  1337. PINCTRL_GRP_SDIO0_4BIT_1_1,
  1338. PINCTRL_GRP_SDIO0_1BIT_1_7,
  1339. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1340. PINCTRL_GRP_SDIO1_1BIT_0_6,
  1341. END_OF_GROUPS,
  1342. }),
  1343. },
  1344. [PINCTRL_PIN_49] = {
  1345. .groups = &((uint16_t []) {
  1346. PINCTRL_GRP_ETHERNET1_0,
  1347. PINCTRL_GRP_RESERVED,
  1348. PINCTRL_GRP_SDIO0_1_PC,
  1349. PINCTRL_GRP_SDIO1_0,
  1350. PINCTRL_GRP_RESERVED,
  1351. PINCTRL_GRP_GPIO0_49,
  1352. PINCTRL_GRP_CAN1_12,
  1353. PINCTRL_GRP_I2C1_12,
  1354. PINCTRL_GRP_SWDT1_8_RST,
  1355. PINCTRL_GRP_SPI1_3,
  1356. PINCTRL_GRP_TTC3_6_WAV,
  1357. PINCTRL_GRP_UART1_12,
  1358. PINCTRL_GRP_RESERVED,
  1359. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1360. PINCTRL_GRP_SDIO1_1BIT_0_7,
  1361. END_OF_GROUPS,
  1362. }),
  1363. },
  1364. [PINCTRL_PIN_50] = {
  1365. .groups = &((uint16_t []) {
  1366. PINCTRL_GRP_GEMTSU0_1,
  1367. PINCTRL_GRP_RESERVED,
  1368. PINCTRL_GRP_SDIO0_1_WP,
  1369. PINCTRL_GRP_SDIO1_0,
  1370. PINCTRL_GRP_RESERVED,
  1371. PINCTRL_GRP_GPIO0_50,
  1372. PINCTRL_GRP_CAN0_12,
  1373. PINCTRL_GRP_I2C0_12,
  1374. PINCTRL_GRP_SWDT0_8_CLK,
  1375. PINCTRL_GRP_MDIO1_0,
  1376. PINCTRL_GRP_TTC2_6_CLK,
  1377. PINCTRL_GRP_UART0_12,
  1378. PINCTRL_GRP_RESERVED,
  1379. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1380. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1381. PINCTRL_GRP_SDIO1_1BIT_0_0,
  1382. PINCTRL_GRP_SDIO1_1BIT_0_1,
  1383. PINCTRL_GRP_SDIO1_1BIT_0_2,
  1384. PINCTRL_GRP_SDIO1_1BIT_0_3,
  1385. PINCTRL_GRP_SDIO1_1BIT_0_4,
  1386. PINCTRL_GRP_SDIO1_1BIT_0_5,
  1387. PINCTRL_GRP_SDIO1_1BIT_0_6,
  1388. PINCTRL_GRP_SDIO1_1BIT_0_7,
  1389. END_OF_GROUPS,
  1390. }),
  1391. },
  1392. [PINCTRL_PIN_51] = {
  1393. .groups = &((uint16_t []) {
  1394. PINCTRL_GRP_GEMTSU0_2,
  1395. PINCTRL_GRP_RESERVED,
  1396. PINCTRL_GRP_RESERVED,
  1397. PINCTRL_GRP_SDIO1_0,
  1398. PINCTRL_GRP_RESERVED,
  1399. PINCTRL_GRP_GPIO0_51,
  1400. PINCTRL_GRP_CAN0_12,
  1401. PINCTRL_GRP_I2C0_12,
  1402. PINCTRL_GRP_SWDT0_8_RST,
  1403. PINCTRL_GRP_MDIO1_0,
  1404. PINCTRL_GRP_TTC2_6_WAV,
  1405. PINCTRL_GRP_UART0_12,
  1406. PINCTRL_GRP_RESERVED,
  1407. PINCTRL_GRP_SDIO1_4BIT_0_0,
  1408. PINCTRL_GRP_SDIO1_4BIT_0_1,
  1409. PINCTRL_GRP_SDIO1_1BIT_0_0,
  1410. PINCTRL_GRP_SDIO1_1BIT_0_1,
  1411. PINCTRL_GRP_SDIO1_1BIT_0_2,
  1412. PINCTRL_GRP_SDIO1_1BIT_0_3,
  1413. PINCTRL_GRP_SDIO1_1BIT_0_4,
  1414. PINCTRL_GRP_SDIO1_1BIT_0_5,
  1415. PINCTRL_GRP_SDIO1_1BIT_0_6,
  1416. PINCTRL_GRP_SDIO1_1BIT_0_7,
  1417. END_OF_GROUPS,
  1418. }),
  1419. },
  1420. [PINCTRL_PIN_52] = {
  1421. .groups = &((uint16_t []) {
  1422. PINCTRL_GRP_ETHERNET2_0,
  1423. PINCTRL_GRP_USB0_0,
  1424. PINCTRL_GRP_RESERVED,
  1425. PINCTRL_GRP_RESERVED,
  1426. PINCTRL_GRP_RESERVED,
  1427. PINCTRL_GRP_GPIO0_52,
  1428. PINCTRL_GRP_CAN1_13,
  1429. PINCTRL_GRP_I2C1_13,
  1430. PINCTRL_GRP_PJTAG0_4,
  1431. PINCTRL_GRP_SPI0_4,
  1432. PINCTRL_GRP_TTC1_6_CLK,
  1433. PINCTRL_GRP_UART1_13,
  1434. PINCTRL_GRP_TRACE0_2_CLK,
  1435. END_OF_GROUPS,
  1436. }),
  1437. },
  1438. [PINCTRL_PIN_53] = {
  1439. .groups = &((uint16_t []) {
  1440. PINCTRL_GRP_ETHERNET2_0,
  1441. PINCTRL_GRP_USB0_0,
  1442. PINCTRL_GRP_RESERVED,
  1443. PINCTRL_GRP_RESERVED,
  1444. PINCTRL_GRP_RESERVED,
  1445. PINCTRL_GRP_GPIO0_53,
  1446. PINCTRL_GRP_CAN1_13,
  1447. PINCTRL_GRP_I2C1_13,
  1448. PINCTRL_GRP_PJTAG0_4,
  1449. PINCTRL_GRP_SPI0_4_SS2,
  1450. PINCTRL_GRP_TTC1_6_WAV,
  1451. PINCTRL_GRP_UART1_13,
  1452. PINCTRL_GRP_TRACE0_2_CLK,
  1453. END_OF_GROUPS,
  1454. }),
  1455. },
  1456. [PINCTRL_PIN_54] = {
  1457. .groups = &((uint16_t []) {
  1458. PINCTRL_GRP_ETHERNET2_0,
  1459. PINCTRL_GRP_USB0_0,
  1460. PINCTRL_GRP_RESERVED,
  1461. PINCTRL_GRP_RESERVED,
  1462. PINCTRL_GRP_RESERVED,
  1463. PINCTRL_GRP_GPIO0_54,
  1464. PINCTRL_GRP_CAN0_13,
  1465. PINCTRL_GRP_I2C0_13,
  1466. PINCTRL_GRP_PJTAG0_4,
  1467. PINCTRL_GRP_SPI0_4_SS1,
  1468. PINCTRL_GRP_TTC0_6_CLK,
  1469. PINCTRL_GRP_UART0_13,
  1470. PINCTRL_GRP_TRACE0_2,
  1471. END_OF_GROUPS,
  1472. }),
  1473. },
  1474. [PINCTRL_PIN_55] = {
  1475. .groups = &((uint16_t []) {
  1476. PINCTRL_GRP_ETHERNET2_0,
  1477. PINCTRL_GRP_USB0_0,
  1478. PINCTRL_GRP_RESERVED,
  1479. PINCTRL_GRP_RESERVED,
  1480. PINCTRL_GRP_RESERVED,
  1481. PINCTRL_GRP_GPIO0_55,
  1482. PINCTRL_GRP_CAN0_13,
  1483. PINCTRL_GRP_I2C0_13,
  1484. PINCTRL_GRP_PJTAG0_4,
  1485. PINCTRL_GRP_SPI0_4_SS0,
  1486. PINCTRL_GRP_TTC0_6_WAV,
  1487. PINCTRL_GRP_UART0_13,
  1488. PINCTRL_GRP_TRACE0_2,
  1489. END_OF_GROUPS,
  1490. }),
  1491. },
  1492. [PINCTRL_PIN_56] = {
  1493. .groups = &((uint16_t []) {
  1494. PINCTRL_GRP_ETHERNET2_0,
  1495. PINCTRL_GRP_USB0_0,
  1496. PINCTRL_GRP_RESERVED,
  1497. PINCTRL_GRP_RESERVED,
  1498. PINCTRL_GRP_RESERVED,
  1499. PINCTRL_GRP_GPIO0_56,
  1500. PINCTRL_GRP_CAN1_14,
  1501. PINCTRL_GRP_I2C1_14,
  1502. PINCTRL_GRP_SWDT1_9_CLK,
  1503. PINCTRL_GRP_SPI0_4,
  1504. PINCTRL_GRP_TTC3_7_CLK,
  1505. PINCTRL_GRP_UART1_14,
  1506. PINCTRL_GRP_TRACE0_2,
  1507. END_OF_GROUPS,
  1508. }),
  1509. },
  1510. [PINCTRL_PIN_57] = {
  1511. .groups = &((uint16_t []) {
  1512. PINCTRL_GRP_ETHERNET2_0,
  1513. PINCTRL_GRP_USB0_0,
  1514. PINCTRL_GRP_RESERVED,
  1515. PINCTRL_GRP_RESERVED,
  1516. PINCTRL_GRP_RESERVED,
  1517. PINCTRL_GRP_GPIO0_57,
  1518. PINCTRL_GRP_CAN1_14,
  1519. PINCTRL_GRP_I2C1_14,
  1520. PINCTRL_GRP_SWDT1_9_RST,
  1521. PINCTRL_GRP_SPI0_4,
  1522. PINCTRL_GRP_TTC3_7_WAV,
  1523. PINCTRL_GRP_UART1_14,
  1524. PINCTRL_GRP_TRACE0_2,
  1525. END_OF_GROUPS,
  1526. }),
  1527. },
  1528. [PINCTRL_PIN_58] = {
  1529. .groups = &((uint16_t []) {
  1530. PINCTRL_GRP_ETHERNET2_0,
  1531. PINCTRL_GRP_USB0_0,
  1532. PINCTRL_GRP_RESERVED,
  1533. PINCTRL_GRP_RESERVED,
  1534. PINCTRL_GRP_RESERVED,
  1535. PINCTRL_GRP_GPIO0_58,
  1536. PINCTRL_GRP_CAN0_14,
  1537. PINCTRL_GRP_I2C0_14,
  1538. PINCTRL_GRP_PJTAG0_5,
  1539. PINCTRL_GRP_SPI1_4,
  1540. PINCTRL_GRP_TTC2_7_CLK,
  1541. PINCTRL_GRP_UART0_14,
  1542. PINCTRL_GRP_TRACE0_2,
  1543. END_OF_GROUPS,
  1544. }),
  1545. },
  1546. [PINCTRL_PIN_59] = {
  1547. .groups = &((uint16_t []) {
  1548. PINCTRL_GRP_ETHERNET2_0,
  1549. PINCTRL_GRP_USB0_0,
  1550. PINCTRL_GRP_RESERVED,
  1551. PINCTRL_GRP_RESERVED,
  1552. PINCTRL_GRP_RESERVED,
  1553. PINCTRL_GRP_GPIO0_59,
  1554. PINCTRL_GRP_CAN0_14,
  1555. PINCTRL_GRP_I2C0_14,
  1556. PINCTRL_GRP_PJTAG0_5,
  1557. PINCTRL_GRP_SPI1_4_SS2,
  1558. PINCTRL_GRP_TTC2_7_WAV,
  1559. PINCTRL_GRP_UART0_14,
  1560. PINCTRL_GRP_TRACE0_2,
  1561. END_OF_GROUPS,
  1562. }),
  1563. },
  1564. [PINCTRL_PIN_60] = {
  1565. .groups = &((uint16_t []) {
  1566. PINCTRL_GRP_ETHERNET2_0,
  1567. PINCTRL_GRP_USB0_0,
  1568. PINCTRL_GRP_RESERVED,
  1569. PINCTRL_GRP_RESERVED,
  1570. PINCTRL_GRP_RESERVED,
  1571. PINCTRL_GRP_GPIO0_60,
  1572. PINCTRL_GRP_CAN1_15,
  1573. PINCTRL_GRP_I2C1_15,
  1574. PINCTRL_GRP_PJTAG0_5,
  1575. PINCTRL_GRP_SPI1_4_SS1,
  1576. PINCTRL_GRP_TTC1_7_CLK,
  1577. PINCTRL_GRP_UART1_15,
  1578. PINCTRL_GRP_TRACE0_2,
  1579. END_OF_GROUPS,
  1580. }),
  1581. },
  1582. [PINCTRL_PIN_61] = {
  1583. .groups = &((uint16_t []) {
  1584. PINCTRL_GRP_ETHERNET2_0,
  1585. PINCTRL_GRP_USB0_0,
  1586. PINCTRL_GRP_RESERVED,
  1587. PINCTRL_GRP_RESERVED,
  1588. PINCTRL_GRP_RESERVED,
  1589. PINCTRL_GRP_GPIO0_61,
  1590. PINCTRL_GRP_CAN1_15,
  1591. PINCTRL_GRP_I2C1_15,
  1592. PINCTRL_GRP_PJTAG0_5,
  1593. PINCTRL_GRP_SPI1_4_SS0,
  1594. PINCTRL_GRP_TTC1_7_WAV,
  1595. PINCTRL_GRP_UART1_15,
  1596. PINCTRL_GRP_TRACE0_2,
  1597. END_OF_GROUPS,
  1598. }),
  1599. },
  1600. [PINCTRL_PIN_62] = {
  1601. .groups = &((uint16_t []) {
  1602. PINCTRL_GRP_ETHERNET2_0,
  1603. PINCTRL_GRP_USB0_0,
  1604. PINCTRL_GRP_RESERVED,
  1605. PINCTRL_GRP_RESERVED,
  1606. PINCTRL_GRP_RESERVED,
  1607. PINCTRL_GRP_GPIO0_62,
  1608. PINCTRL_GRP_CAN0_15,
  1609. PINCTRL_GRP_I2C0_15,
  1610. PINCTRL_GRP_SWDT0_9_CLK,
  1611. PINCTRL_GRP_SPI1_4,
  1612. PINCTRL_GRP_TTC0_7_CLK,
  1613. PINCTRL_GRP_UART0_15,
  1614. PINCTRL_GRP_TRACE0_2,
  1615. END_OF_GROUPS,
  1616. }),
  1617. },
  1618. [PINCTRL_PIN_63] = {
  1619. .groups = &((uint16_t []) {
  1620. PINCTRL_GRP_ETHERNET2_0,
  1621. PINCTRL_GRP_USB0_0,
  1622. PINCTRL_GRP_RESERVED,
  1623. PINCTRL_GRP_RESERVED,
  1624. PINCTRL_GRP_RESERVED,
  1625. PINCTRL_GRP_GPIO0_63,
  1626. PINCTRL_GRP_CAN0_15,
  1627. PINCTRL_GRP_I2C0_15,
  1628. PINCTRL_GRP_SWDT0_9_RST,
  1629. PINCTRL_GRP_SPI1_4,
  1630. PINCTRL_GRP_TTC0_7_WAV,
  1631. PINCTRL_GRP_UART0_15,
  1632. PINCTRL_GRP_TRACE0_2,
  1633. END_OF_GROUPS,
  1634. }),
  1635. },
  1636. [PINCTRL_PIN_64] = {
  1637. .groups = &((uint16_t []) {
  1638. PINCTRL_GRP_ETHERNET3_0,
  1639. PINCTRL_GRP_USB1_0,
  1640. PINCTRL_GRP_SDIO0_2,
  1641. PINCTRL_GRP_RESERVED,
  1642. PINCTRL_GRP_RESERVED,
  1643. PINCTRL_GRP_GPIO0_64,
  1644. PINCTRL_GRP_CAN1_16,
  1645. PINCTRL_GRP_I2C1_16,
  1646. PINCTRL_GRP_SWDT1_10_CLK,
  1647. PINCTRL_GRP_SPI0_5,
  1648. PINCTRL_GRP_TTC3_8_CLK,
  1649. PINCTRL_GRP_UART1_16,
  1650. PINCTRL_GRP_TRACE0_2,
  1651. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1652. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1653. PINCTRL_GRP_SDIO0_1BIT_2_0,
  1654. PINCTRL_GRP_SDIO0_1BIT_2_1,
  1655. PINCTRL_GRP_SDIO0_1BIT_2_2,
  1656. PINCTRL_GRP_SDIO0_1BIT_2_3,
  1657. PINCTRL_GRP_SDIO0_1BIT_2_4,
  1658. PINCTRL_GRP_SDIO0_1BIT_2_5,
  1659. PINCTRL_GRP_SDIO0_1BIT_2_6,
  1660. PINCTRL_GRP_SDIO0_1BIT_2_7,
  1661. END_OF_GROUPS,
  1662. }),
  1663. },
  1664. [PINCTRL_PIN_65] = {
  1665. .groups = &((uint16_t []) {
  1666. PINCTRL_GRP_ETHERNET3_0,
  1667. PINCTRL_GRP_USB1_0,
  1668. PINCTRL_GRP_SDIO0_2_CD,
  1669. PINCTRL_GRP_RESERVED,
  1670. PINCTRL_GRP_RESERVED,
  1671. PINCTRL_GRP_GPIO0_65,
  1672. PINCTRL_GRP_CAN1_16,
  1673. PINCTRL_GRP_I2C1_16,
  1674. PINCTRL_GRP_SWDT1_10_RST,
  1675. PINCTRL_GRP_SPI0_5_SS2,
  1676. PINCTRL_GRP_TTC3_8_WAV,
  1677. PINCTRL_GRP_UART1_16,
  1678. PINCTRL_GRP_TRACE0_2,
  1679. END_OF_GROUPS,
  1680. }),
  1681. },
  1682. [PINCTRL_PIN_66] = {
  1683. .groups = &((uint16_t []) {
  1684. PINCTRL_GRP_ETHERNET3_0,
  1685. PINCTRL_GRP_USB1_0,
  1686. PINCTRL_GRP_SDIO0_2,
  1687. PINCTRL_GRP_RESERVED,
  1688. PINCTRL_GRP_RESERVED,
  1689. PINCTRL_GRP_GPIO0_66,
  1690. PINCTRL_GRP_CAN0_16,
  1691. PINCTRL_GRP_I2C0_16,
  1692. PINCTRL_GRP_SWDT0_10_CLK,
  1693. PINCTRL_GRP_SPI0_5_SS1,
  1694. PINCTRL_GRP_TTC2_8_CLK,
  1695. PINCTRL_GRP_UART0_16,
  1696. PINCTRL_GRP_TRACE0_2,
  1697. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1698. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1699. PINCTRL_GRP_SDIO0_1BIT_2_0,
  1700. PINCTRL_GRP_SDIO0_1BIT_2_1,
  1701. PINCTRL_GRP_SDIO0_1BIT_2_2,
  1702. PINCTRL_GRP_SDIO0_1BIT_2_3,
  1703. PINCTRL_GRP_SDIO0_1BIT_2_4,
  1704. PINCTRL_GRP_SDIO0_1BIT_2_5,
  1705. PINCTRL_GRP_SDIO0_1BIT_2_6,
  1706. PINCTRL_GRP_SDIO0_1BIT_2_7,
  1707. END_OF_GROUPS,
  1708. }),
  1709. },
  1710. [PINCTRL_PIN_67] = {
  1711. .groups = &((uint16_t []) {
  1712. PINCTRL_GRP_ETHERNET3_0,
  1713. PINCTRL_GRP_USB1_0,
  1714. PINCTRL_GRP_SDIO0_2,
  1715. PINCTRL_GRP_RESERVED,
  1716. PINCTRL_GRP_RESERVED,
  1717. PINCTRL_GRP_GPIO0_67,
  1718. PINCTRL_GRP_CAN0_16,
  1719. PINCTRL_GRP_I2C0_16,
  1720. PINCTRL_GRP_SWDT0_10_RST,
  1721. PINCTRL_GRP_SPI0_5_SS0,
  1722. PINCTRL_GRP_TTC2_8_WAV,
  1723. PINCTRL_GRP_UART0_16,
  1724. PINCTRL_GRP_TRACE0_2,
  1725. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1726. PINCTRL_GRP_SDIO0_1BIT_2_0,
  1727. END_OF_GROUPS,
  1728. }),
  1729. },
  1730. [PINCTRL_PIN_68] = {
  1731. .groups = &((uint16_t []) {
  1732. PINCTRL_GRP_ETHERNET3_0,
  1733. PINCTRL_GRP_USB1_0,
  1734. PINCTRL_GRP_SDIO0_2,
  1735. PINCTRL_GRP_RESERVED,
  1736. PINCTRL_GRP_RESERVED,
  1737. PINCTRL_GRP_GPIO0_68,
  1738. PINCTRL_GRP_CAN1_17,
  1739. PINCTRL_GRP_I2C1_17,
  1740. PINCTRL_GRP_SWDT1_11_CLK,
  1741. PINCTRL_GRP_SPI0_5,
  1742. PINCTRL_GRP_TTC1_8_CLK,
  1743. PINCTRL_GRP_UART1_17,
  1744. PINCTRL_GRP_TRACE0_2,
  1745. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1746. PINCTRL_GRP_SDIO0_1BIT_2_1,
  1747. END_OF_GROUPS,
  1748. }),
  1749. },
  1750. [PINCTRL_PIN_69] = {
  1751. .groups = &((uint16_t []) {
  1752. PINCTRL_GRP_ETHERNET3_0,
  1753. PINCTRL_GRP_USB1_0,
  1754. PINCTRL_GRP_SDIO0_2,
  1755. PINCTRL_GRP_SDIO1_1_WP,
  1756. PINCTRL_GRP_RESERVED,
  1757. PINCTRL_GRP_GPIO0_69,
  1758. PINCTRL_GRP_CAN1_17,
  1759. PINCTRL_GRP_I2C1_17,
  1760. PINCTRL_GRP_SWDT1_11_RST,
  1761. PINCTRL_GRP_SPI0_5,
  1762. PINCTRL_GRP_TTC1_8_WAV,
  1763. PINCTRL_GRP_UART1_17,
  1764. PINCTRL_GRP_TRACE0_2,
  1765. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1766. PINCTRL_GRP_SDIO0_1BIT_2_2,
  1767. END_OF_GROUPS,
  1768. }),
  1769. },
  1770. [PINCTRL_PIN_70] = {
  1771. .groups = &((uint16_t []) {
  1772. PINCTRL_GRP_ETHERNET3_0,
  1773. PINCTRL_GRP_USB1_0,
  1774. PINCTRL_GRP_SDIO0_2,
  1775. PINCTRL_GRP_SDIO1_1_PC,
  1776. PINCTRL_GRP_RESERVED,
  1777. PINCTRL_GRP_GPIO0_70,
  1778. PINCTRL_GRP_CAN0_17,
  1779. PINCTRL_GRP_I2C0_17,
  1780. PINCTRL_GRP_SWDT0_11_CLK,
  1781. PINCTRL_GRP_SPI1_5,
  1782. PINCTRL_GRP_TTC0_8_CLK,
  1783. PINCTRL_GRP_UART0_17,
  1784. PINCTRL_GRP_RESERVED,
  1785. PINCTRL_GRP_SDIO0_4BIT_2_0,
  1786. PINCTRL_GRP_SDIO0_1BIT_2_3,
  1787. END_OF_GROUPS,
  1788. }),
  1789. },
  1790. [PINCTRL_PIN_71] = {
  1791. .groups = &((uint16_t []) {
  1792. PINCTRL_GRP_ETHERNET3_0,
  1793. PINCTRL_GRP_USB1_0,
  1794. PINCTRL_GRP_SDIO0_2,
  1795. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1796. PINCTRL_GRP_RESERVED,
  1797. PINCTRL_GRP_GPIO0_71,
  1798. PINCTRL_GRP_CAN0_17,
  1799. PINCTRL_GRP_I2C0_17,
  1800. PINCTRL_GRP_SWDT0_11_RST,
  1801. PINCTRL_GRP_SPI1_5_SS2,
  1802. PINCTRL_GRP_TTC0_8_WAV,
  1803. PINCTRL_GRP_UART0_17,
  1804. PINCTRL_GRP_RESERVED,
  1805. PINCTRL_GRP_SDIO0_2,
  1806. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1807. PINCTRL_GRP_SDIO0_1BIT_2_4,
  1808. PINCTRL_GRP_SDIO1_1BIT_1_0,
  1809. END_OF_GROUPS,
  1810. }),
  1811. },
  1812. [PINCTRL_PIN_72] = {
  1813. .groups = &((uint16_t []) {
  1814. PINCTRL_GRP_ETHERNET3_0,
  1815. PINCTRL_GRP_USB1_0,
  1816. PINCTRL_GRP_SDIO0_2,
  1817. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1818. PINCTRL_GRP_RESERVED,
  1819. PINCTRL_GRP_GPIO0_72,
  1820. PINCTRL_GRP_CAN1_18,
  1821. PINCTRL_GRP_I2C1_18,
  1822. PINCTRL_GRP_SWDT1_12_CLK,
  1823. PINCTRL_GRP_SPI1_5_SS1,
  1824. PINCTRL_GRP_RESERVED,
  1825. PINCTRL_GRP_UART1_18,
  1826. PINCTRL_GRP_RESERVED,
  1827. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1828. PINCTRL_GRP_SDIO0_1BIT_2_5,
  1829. PINCTRL_GRP_SDIO1_1BIT_1_1,
  1830. END_OF_GROUPS,
  1831. }),
  1832. },
  1833. [PINCTRL_PIN_73] = {
  1834. .groups = &((uint16_t []) {
  1835. PINCTRL_GRP_ETHERNET3_0,
  1836. PINCTRL_GRP_USB1_0,
  1837. PINCTRL_GRP_SDIO0_2,
  1838. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1839. PINCTRL_GRP_RESERVED,
  1840. PINCTRL_GRP_GPIO0_73,
  1841. PINCTRL_GRP_CAN1_18,
  1842. PINCTRL_GRP_I2C1_18,
  1843. PINCTRL_GRP_SWDT1_12_RST,
  1844. PINCTRL_GRP_SPI1_5_SS0,
  1845. PINCTRL_GRP_RESERVED,
  1846. PINCTRL_GRP_UART1_18,
  1847. PINCTRL_GRP_RESERVED,
  1848. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1849. PINCTRL_GRP_SDIO0_1BIT_2_6,
  1850. PINCTRL_GRP_SDIO1_1BIT_1_2,
  1851. END_OF_GROUPS,
  1852. }),
  1853. },
  1854. [PINCTRL_PIN_74] = {
  1855. .groups = &((uint16_t []) {
  1856. PINCTRL_GRP_ETHERNET3_0,
  1857. PINCTRL_GRP_USB1_0,
  1858. PINCTRL_GRP_SDIO0_2,
  1859. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1860. PINCTRL_GRP_RESERVED,
  1861. PINCTRL_GRP_GPIO0_74,
  1862. PINCTRL_GRP_CAN0_18,
  1863. PINCTRL_GRP_I2C0_18,
  1864. PINCTRL_GRP_SWDT0_12_CLK,
  1865. PINCTRL_GRP_SPI1_5,
  1866. PINCTRL_GRP_RESERVED,
  1867. PINCTRL_GRP_UART0_18,
  1868. PINCTRL_GRP_RESERVED,
  1869. PINCTRL_GRP_SDIO0_4BIT_2_1,
  1870. PINCTRL_GRP_SDIO0_1BIT_2_7,
  1871. PINCTRL_GRP_SDIO1_1BIT_1_3,
  1872. END_OF_GROUPS,
  1873. }),
  1874. },
  1875. [PINCTRL_PIN_75] = {
  1876. .groups = &((uint16_t []) {
  1877. PINCTRL_GRP_ETHERNET3_0,
  1878. PINCTRL_GRP_USB1_0,
  1879. PINCTRL_GRP_SDIO0_2_PC,
  1880. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1881. PINCTRL_GRP_RESERVED,
  1882. PINCTRL_GRP_GPIO0_75,
  1883. PINCTRL_GRP_CAN0_18,
  1884. PINCTRL_GRP_I2C0_18,
  1885. PINCTRL_GRP_SWDT0_12_RST,
  1886. PINCTRL_GRP_SPI1_5,
  1887. PINCTRL_GRP_RESERVED,
  1888. PINCTRL_GRP_UART0_18,
  1889. PINCTRL_GRP_RESERVED,
  1890. PINCTRL_GRP_SDIO1_1BIT_1_0,
  1891. PINCTRL_GRP_SDIO1_1BIT_1_1,
  1892. PINCTRL_GRP_SDIO1_1BIT_1_2,
  1893. PINCTRL_GRP_SDIO1_1BIT_1_3,
  1894. END_OF_GROUPS,
  1895. }),
  1896. },
  1897. [PINCTRL_PIN_76] = {
  1898. .groups = &((uint16_t []) {
  1899. PINCTRL_GRP_RESERVED,
  1900. PINCTRL_GRP_RESERVED,
  1901. PINCTRL_GRP_SDIO0_2_WP,
  1902. PINCTRL_GRP_SDIO1_4BIT_1_0,
  1903. PINCTRL_GRP_RESERVED,
  1904. PINCTRL_GRP_GPIO0_76,
  1905. PINCTRL_GRP_CAN1_19,
  1906. PINCTRL_GRP_I2C1_19,
  1907. PINCTRL_GRP_MDIO0_0,
  1908. PINCTRL_GRP_MDIO1_1,
  1909. PINCTRL_GRP_MDIO2_0,
  1910. PINCTRL_GRP_MDIO3_0,
  1911. PINCTRL_GRP_RESERVED,
  1912. PINCTRL_GRP_SDIO1_1BIT_1_0,
  1913. PINCTRL_GRP_SDIO1_1BIT_1_1,
  1914. PINCTRL_GRP_SDIO1_1BIT_1_2,
  1915. PINCTRL_GRP_SDIO1_1BIT_1_3,
  1916. END_OF_GROUPS,
  1917. }),
  1918. },
  1919. [PINCTRL_PIN_77] = {
  1920. .groups = &((uint16_t []) {
  1921. PINCTRL_GRP_RESERVED,
  1922. PINCTRL_GRP_RESERVED,
  1923. PINCTRL_GRP_RESERVED,
  1924. PINCTRL_GRP_SDIO1_1_CD,
  1925. PINCTRL_GRP_RESERVED,
  1926. PINCTRL_GRP_GPIO0_77,
  1927. PINCTRL_GRP_CAN1_19,
  1928. PINCTRL_GRP_I2C1_19,
  1929. PINCTRL_GRP_MDIO0_0,
  1930. PINCTRL_GRP_MDIO1_1,
  1931. PINCTRL_GRP_MDIO2_0,
  1932. PINCTRL_GRP_MDIO3_0,
  1933. PINCTRL_GRP_RESERVED,
  1934. END_OF_GROUPS,
  1935. }),
  1936. },
  1937. };
  1938. /**
  1939. * pm_api_pinctrl_get_num_pins() - PM call to request number of pins.
  1940. * @npins: Number of pins.
  1941. *
  1942. * This function is used by master to get number of pins.
  1943. *
  1944. * Return: Returns success.
  1945. *
  1946. */
  1947. enum pm_ret_status pm_api_pinctrl_get_num_pins(uint32_t *npins)
  1948. {
  1949. *npins = MAX_PIN;
  1950. return PM_RET_SUCCESS;
  1951. }
  1952. /**
  1953. * pm_api_pinctrl_get_num_functions() - PM call to request number of functions.
  1954. * @nfuncs: Number of functions.
  1955. *
  1956. * This function is used by master to get number of functions.
  1957. *
  1958. * Return: Returns success.
  1959. *
  1960. */
  1961. enum pm_ret_status pm_api_pinctrl_get_num_functions(uint32_t *nfuncs)
  1962. {
  1963. *nfuncs = MAX_FUNCTION;
  1964. return PM_RET_SUCCESS;
  1965. }
  1966. /**
  1967. * pm_api_pinctrl_get_num_func_groups() - PM call to request number of
  1968. * function groups.
  1969. * @fid: Function Id.
  1970. * @ngroups: Number of function groups.
  1971. *
  1972. * This function is used by master to get number of function groups.
  1973. *
  1974. * Return: Returns success.
  1975. *
  1976. */
  1977. enum pm_ret_status pm_api_pinctrl_get_num_func_groups(uint32_t fid,
  1978. uint32_t *ngroups)
  1979. {
  1980. if (fid >= MAX_FUNCTION) {
  1981. return PM_RET_ERROR_ARGS;
  1982. }
  1983. *ngroups = pinctrl_functions[fid].group_size;
  1984. return PM_RET_SUCCESS;
  1985. }
  1986. /**
  1987. * pm_api_pinctrl_get_function_name() - PM call to request a function name.
  1988. * @fid: Function ID.
  1989. * @name: Name of function (max 16 bytes).
  1990. *
  1991. * This function is used by master to get name of function specified
  1992. * by given function ID.
  1993. *
  1994. */
  1995. void pm_api_pinctrl_get_function_name(uint32_t fid, char *name)
  1996. {
  1997. if (fid >= MAX_FUNCTION) {
  1998. (void)memcpy(name, END_OF_FUNCTION, FUNCTION_NAME_LEN);
  1999. } else {
  2000. (void)memcpy(name, pinctrl_functions[fid].name, FUNCTION_NAME_LEN);
  2001. }
  2002. }
  2003. /**
  2004. * pm_api_pinctrl_get_function_groups() - PM call to request first 6 function
  2005. * groups of function Id.
  2006. * @fid: Function ID.
  2007. * @index: Index of next function groups.
  2008. * @groups: Function groups.
  2009. *
  2010. * This function is used by master to get function groups specified
  2011. * by given function Id. This API will return 6 function groups with
  2012. * a single response. To get other function groups, master should call
  2013. * same API in loop with new function groups index till error is returned.
  2014. *
  2015. * E.g First call should have index 0 which will return function groups
  2016. * 0, 1, 2, 3, 4 and 5. Next call, index should be 6 which will return
  2017. * function groups 6, 7, 8, 9, 10 and 11 and so on.
  2018. *
  2019. * Return: Returns status, either success or error+reason.
  2020. *
  2021. */
  2022. enum pm_ret_status pm_api_pinctrl_get_function_groups(uint32_t fid,
  2023. uint32_t index,
  2024. uint16_t *groups)
  2025. {
  2026. uint16_t grps;
  2027. uint16_t end_of_grp_offset;
  2028. uint16_t i;
  2029. if (fid >= MAX_FUNCTION) {
  2030. return PM_RET_ERROR_ARGS;
  2031. }
  2032. (void)memset(groups, END_OF_GROUPS, GROUPS_PAYLOAD_LEN);
  2033. grps = pinctrl_functions[fid].group_base;
  2034. end_of_grp_offset = grps + pinctrl_functions[fid].group_size;
  2035. for (i = 0U; i < NUM_GROUPS_PER_RESP; i++) {
  2036. if ((grps + index + i) >= end_of_grp_offset) {
  2037. break;
  2038. }
  2039. groups[i] = (grps + index + i);
  2040. }
  2041. return PM_RET_SUCCESS;
  2042. }
  2043. /**
  2044. * pm_api_pinctrl_get_pin_groups() - PM call to request first 6 pin
  2045. * groups of pin.
  2046. * @pin: Pin.
  2047. * @index: Index of next pin groups.
  2048. * @groups: pin groups.
  2049. *
  2050. * This function is used by master to get pin groups specified
  2051. * by given pin Id. This API will return 6 pin groups with
  2052. * a single response. To get other pin groups, master should call
  2053. * same API in loop with new pin groups index till error is returned.
  2054. *
  2055. * E.g First call should have index 0 which will return pin groups
  2056. * 0, 1, 2, 3, 4 and 5. Next call, index should be 6 which will return
  2057. * pin groups 6, 7, 8, 9, 10 and 11 and so on.
  2058. *
  2059. * Return: Returns status, either success or error+reason.
  2060. *
  2061. */
  2062. enum pm_ret_status pm_api_pinctrl_get_pin_groups(uint32_t pin,
  2063. uint32_t index,
  2064. uint16_t *groups)
  2065. {
  2066. uint32_t i;
  2067. const uint16_t *grps;
  2068. if (pin >= MAX_PIN) {
  2069. return PM_RET_ERROR_ARGS;
  2070. }
  2071. (void)memset(groups, END_OF_GROUPS, GROUPS_PAYLOAD_LEN);
  2072. grps = *zynqmp_pin_groups[pin].groups;
  2073. if (grps == NULL) {
  2074. return PM_RET_SUCCESS;
  2075. }
  2076. /* Skip groups till index */
  2077. for (i = 0; i < index; i++) {
  2078. if (grps[i] == (uint16_t)END_OF_GROUPS) {
  2079. return PM_RET_SUCCESS;
  2080. }
  2081. }
  2082. for (i = 0; i < NUM_GROUPS_PER_RESP; i++) {
  2083. groups[i] = grps[index + i];
  2084. if (groups[i] == (uint16_t)END_OF_GROUPS) {
  2085. break;
  2086. }
  2087. }
  2088. return PM_RET_SUCCESS;
  2089. }