pinctrl-aspeed-g4.c 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232
  1. /*
  2. * Copyright (C) 2016 IBM Corp.
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. */
  9. #include <linux/bitops.h>
  10. #include <linux/init.h>
  11. #include <linux/io.h>
  12. #include <linux/kernel.h>
  13. #include <linux/mutex.h>
  14. #include <linux/of.h>
  15. #include <linux/platform_device.h>
  16. #include <linux/pinctrl/pinctrl.h>
  17. #include <linux/pinctrl/pinmux.h>
  18. #include <linux/pinctrl/pinconf.h>
  19. #include <linux/pinctrl/pinconf-generic.h>
  20. #include <linux/string.h>
  21. #include <linux/types.h>
  22. #include "../core.h"
  23. #include "../pinctrl-utils.h"
  24. #include "pinctrl-aspeed.h"
  25. /*
  26. * Uses undefined macros for symbol naming and references, eg GPIOA0, MAC1LINK,
  27. * TIMER3 etc.
  28. *
  29. * Pins are defined in GPIO bank order:
  30. *
  31. * GPIOA0: 0
  32. * ...
  33. * GPIOA7: 7
  34. * GPIOB0: 8
  35. * ...
  36. * GPIOZ7: 207
  37. * GPIOAA0: 208
  38. * ...
  39. * GPIOAB3: 219
  40. *
  41. * Not all pins have their signals defined (yet).
  42. */
  43. #define A4 2
  44. SSSF_PIN_DECL(A4, GPIOA2, TIMER3, SIG_DESC_SET(SCU80, 2));
  45. #define I2C9_DESC SIG_DESC_SET(SCU90, 22)
  46. #define C5 4
  47. SIG_EXPR_LIST_DECL_SINGLE(SCL9, I2C9, I2C9_DESC);
  48. SIG_EXPR_LIST_DECL_SINGLE(TIMER5, TIMER5, SIG_DESC_SET(SCU80, 4));
  49. MS_PIN_DECL(C5, GPIOA4, SCL9, TIMER5);
  50. FUNC_GROUP_DECL(TIMER5, C5);
  51. #define B4 5
  52. SIG_EXPR_LIST_DECL_SINGLE(SDA9, I2C9, I2C9_DESC);
  53. SIG_EXPR_LIST_DECL_SINGLE(TIMER6, TIMER6, SIG_DESC_SET(SCU80, 5));
  54. MS_PIN_DECL(B4, GPIOA5, SDA9, TIMER6);
  55. FUNC_GROUP_DECL(TIMER6, B4);
  56. FUNC_GROUP_DECL(I2C9, C5, B4);
  57. #define MDIO2_DESC SIG_DESC_SET(SCU90, 2)
  58. #define A3 6
  59. SIG_EXPR_LIST_DECL_SINGLE(MDC2, MDIO2, MDIO2_DESC);
  60. SIG_EXPR_LIST_DECL_SINGLE(TIMER7, TIMER7, SIG_DESC_SET(SCU80, 6));
  61. MS_PIN_DECL(A3, GPIOA6, MDC2, TIMER7);
  62. FUNC_GROUP_DECL(TIMER7, A3);
  63. #define D5 7
  64. SIG_EXPR_LIST_DECL_SINGLE(MDIO2, MDIO2, MDIO2_DESC);
  65. SIG_EXPR_LIST_DECL_SINGLE(TIMER8, TIMER8, SIG_DESC_SET(SCU80, 7));
  66. MS_PIN_DECL(D5, GPIOA7, MDIO2, TIMER8);
  67. FUNC_GROUP_DECL(TIMER8, D5);
  68. FUNC_GROUP_DECL(MDIO2, A3, D5);
  69. #define H19 13
  70. #define H19_DESC SIG_DESC_SET(SCU80, 13)
  71. SIG_EXPR_LIST_DECL_SINGLE(LPCPD, LPCPD, H19_DESC);
  72. SIG_EXPR_LIST_DECL_SINGLE(LPCSMI, LPCSMI, H19_DESC);
  73. MS_PIN_DECL(H19, GPIOB5, LPCPD, LPCSMI);
  74. FUNC_GROUP_DECL(LPCPD, H19);
  75. FUNC_GROUP_DECL(LPCSMI, H19);
  76. #define H20 14
  77. SSSF_PIN_DECL(H20, GPIOB6, LPCPME, SIG_DESC_SET(SCU80, 14));
  78. #define SD1_DESC SIG_DESC_SET(SCU90, 0)
  79. #define I2C10_DESC SIG_DESC_SET(SCU90, 23)
  80. #define C4 16
  81. SIG_EXPR_LIST_DECL_SINGLE(SD1CLK, SD1, SD1_DESC);
  82. SIG_EXPR_LIST_DECL_SINGLE(SCL10, I2C10, I2C10_DESC);
  83. MS_PIN_DECL(C4, GPIOC0, SD1CLK, SCL10);
  84. #define B3 17
  85. SIG_EXPR_LIST_DECL_SINGLE(SD1CMD, SD1, SD1_DESC);
  86. SIG_EXPR_LIST_DECL_SINGLE(SDA10, I2C10, I2C10_DESC);
  87. MS_PIN_DECL(B3, GPIOC1, SD1CMD, SDA10);
  88. FUNC_GROUP_DECL(I2C10, C4, B3);
  89. #define I2C11_DESC SIG_DESC_SET(SCU90, 24)
  90. #define A2 18
  91. SIG_EXPR_LIST_DECL_SINGLE(SD1DAT0, SD1, SD1_DESC);
  92. SIG_EXPR_LIST_DECL_SINGLE(SCL11, I2C11, I2C11_DESC);
  93. MS_PIN_DECL(A2, GPIOC2, SD1DAT0, SCL11);
  94. #define E5 19
  95. SIG_EXPR_LIST_DECL_SINGLE(SD1DAT1, SD1, SD1_DESC);
  96. SIG_EXPR_LIST_DECL_SINGLE(SDA11, I2C11, I2C11_DESC);
  97. MS_PIN_DECL(E5, GPIOC3, SD1DAT1, SDA11);
  98. FUNC_GROUP_DECL(I2C11, A2, E5);
  99. #define I2C12_DESC SIG_DESC_SET(SCU90, 25)
  100. #define D4 20
  101. SIG_EXPR_LIST_DECL_SINGLE(SD1DAT2, SD1, SD1_DESC);
  102. SIG_EXPR_LIST_DECL_SINGLE(SCL12, I2C12, I2C12_DESC);
  103. MS_PIN_DECL(D4, GPIOC4, SD1DAT2, SCL12);
  104. #define C3 21
  105. SIG_EXPR_LIST_DECL_SINGLE(SD1DAT3, SD1, SD1_DESC);
  106. SIG_EXPR_LIST_DECL_SINGLE(SDA12, I2C12, I2C12_DESC);
  107. MS_PIN_DECL(C3, GPIOC5, SD1DAT3, SDA12);
  108. FUNC_GROUP_DECL(I2C12, D4, C3);
  109. #define I2C13_DESC SIG_DESC_SET(SCU90, 26)
  110. #define B2 22
  111. SIG_EXPR_LIST_DECL_SINGLE(SD1CD, SD1, SD1_DESC);
  112. SIG_EXPR_LIST_DECL_SINGLE(SCL13, I2C13, I2C13_DESC);
  113. MS_PIN_DECL(B2, GPIOC6, SD1CD, SCL13);
  114. #define A1 23
  115. SIG_EXPR_LIST_DECL_SINGLE(SD1WP, SD1, SD1_DESC);
  116. SIG_EXPR_LIST_DECL_SINGLE(SDA13, I2C13, I2C13_DESC);
  117. MS_PIN_DECL(A1, GPIOC7, SD1WP, SDA13);
  118. FUNC_GROUP_DECL(I2C13, B2, A1);
  119. FUNC_GROUP_DECL(SD1, C4, B3, A2, E5, D4, C3, B2, A1);
  120. #define SD2_DESC SIG_DESC_SET(SCU90, 1)
  121. #define GPID_DESC SIG_DESC_SET(HW_STRAP1, 21)
  122. #define GPID0_DESC SIG_DESC_SET(SCU8C, 8)
  123. #define A18 24
  124. SIG_EXPR_LIST_DECL_SINGLE(SD2CLK, SD2, SD2_DESC);
  125. SIG_EXPR_DECL(GPID0IN, GPID0, GPID0_DESC);
  126. SIG_EXPR_DECL(GPID0IN, GPID, GPID_DESC);
  127. SIG_EXPR_LIST_DECL_DUAL(GPID0IN, GPID0, GPID);
  128. MS_PIN_DECL(A18, GPIOD0, SD2CLK, GPID0IN);
  129. #define D16 25
  130. SIG_EXPR_LIST_DECL_SINGLE(SD2CMD, SD2, SD2_DESC);
  131. SIG_EXPR_DECL(GPID0OUT, GPID0, GPID0_DESC);
  132. SIG_EXPR_DECL(GPID0OUT, GPID, GPID_DESC);
  133. SIG_EXPR_LIST_DECL_DUAL(GPID0OUT, GPID0, GPID);
  134. MS_PIN_DECL(D16, GPIOD1, SD2CMD, GPID0OUT);
  135. FUNC_GROUP_DECL(GPID0, A18, D16);
  136. #define GPIE_DESC SIG_DESC_SET(HW_STRAP1, 22)
  137. #define GPIE0_DESC SIG_DESC_SET(SCU8C, 12)
  138. #define GPIE2_DESC SIG_DESC_SET(SCU8C, 13)
  139. #define GPIE4_DESC SIG_DESC_SET(SCU8C, 14)
  140. #define GPIE6_DESC SIG_DESC_SET(SCU8C, 15)
  141. #define D15 32
  142. SIG_EXPR_LIST_DECL_SINGLE(NCTS3, NCTS3, SIG_DESC_SET(SCU80, 16));
  143. SIG_EXPR_DECL(GPIE0IN, GPIE0, GPIE0_DESC);
  144. SIG_EXPR_DECL(GPIE0IN, GPIE, GPIE_DESC);
  145. SIG_EXPR_LIST_DECL_DUAL(GPIE0IN, GPIE0, GPIE);
  146. MS_PIN_DECL(D15, GPIOE0, NCTS3, GPIE0IN);
  147. FUNC_GROUP_DECL(NCTS3, D15);
  148. #define C15 33
  149. SIG_EXPR_LIST_DECL_SINGLE(NDCD3, NDCD3, SIG_DESC_SET(SCU80, 17));
  150. SIG_EXPR_DECL(GPIE0OUT, GPIE0, GPIE0_DESC);
  151. SIG_EXPR_DECL(GPIE0OUT, GPIE, GPIE_DESC);
  152. SIG_EXPR_LIST_DECL_DUAL(GPIE0OUT, GPIE0, GPIE);
  153. MS_PIN_DECL(C15, GPIOE1, NDCD3, GPIE0OUT);
  154. FUNC_GROUP_DECL(NDCD3, C15);
  155. FUNC_GROUP_DECL(GPIE0, D15, C15);
  156. #define B15 34
  157. SIG_EXPR_LIST_DECL_SINGLE(NDSR3, NDSR3, SIG_DESC_SET(SCU80, 18));
  158. SIG_EXPR_DECL(GPIE2IN, GPIE2, GPIE2_DESC);
  159. SIG_EXPR_DECL(GPIE2IN, GPIE, GPIE_DESC);
  160. SIG_EXPR_LIST_DECL_DUAL(GPIE2IN, GPIE2, GPIE);
  161. MS_PIN_DECL(B15, GPIOE2, NDSR3, GPIE2IN);
  162. FUNC_GROUP_DECL(NDSR3, B15);
  163. #define A15 35
  164. SIG_EXPR_LIST_DECL_SINGLE(NRI3, NRI3, SIG_DESC_SET(SCU80, 19));
  165. SIG_EXPR_DECL(GPIE2OUT, GPIE2, GPIE2_DESC);
  166. SIG_EXPR_DECL(GPIE2OUT, GPIE, GPIE_DESC);
  167. SIG_EXPR_LIST_DECL_DUAL(GPIE2OUT, GPIE2, GPIE);
  168. MS_PIN_DECL(A15, GPIOE3, NRI3, GPIE2OUT);
  169. FUNC_GROUP_DECL(NRI3, A15);
  170. FUNC_GROUP_DECL(GPIE2, B15, A15);
  171. #define E14 36
  172. SIG_EXPR_LIST_DECL_SINGLE(NDTR3, NDTR3, SIG_DESC_SET(SCU80, 20));
  173. SIG_EXPR_DECL(GPIE4IN, GPIE4, GPIE4_DESC);
  174. SIG_EXPR_DECL(GPIE4IN, GPIE, GPIE_DESC);
  175. SIG_EXPR_LIST_DECL_DUAL(GPIE4IN, GPIE4, GPIE);
  176. MS_PIN_DECL(E14, GPIOE4, NDTR3, GPIE4IN);
  177. FUNC_GROUP_DECL(NDTR3, E14);
  178. #define D14 37
  179. SIG_EXPR_LIST_DECL_SINGLE(NRTS3, NRTS3, SIG_DESC_SET(SCU80, 21));
  180. SIG_EXPR_DECL(GPIE4OUT, GPIE4, GPIE4_DESC);
  181. SIG_EXPR_DECL(GPIE4OUT, GPIE, GPIE_DESC);
  182. SIG_EXPR_LIST_DECL_DUAL(GPIE4OUT, GPIE4, GPIE);
  183. MS_PIN_DECL(D14, GPIOE5, NRTS3, GPIE4OUT);
  184. FUNC_GROUP_DECL(NRTS3, D14);
  185. FUNC_GROUP_DECL(GPIE4, E14, D14);
  186. #define C14 38
  187. SIG_EXPR_LIST_DECL_SINGLE(TXD3, TXD3, SIG_DESC_SET(SCU80, 22));
  188. SIG_EXPR_DECL(GPIE6IN, GPIE6, GPIE6_DESC);
  189. SIG_EXPR_DECL(GPIE6IN, GPIE, GPIE_DESC);
  190. SIG_EXPR_LIST_DECL_DUAL(GPIE6IN, GPIE6, GPIE);
  191. MS_PIN_DECL(C14, GPIOE6, TXD3, GPIE6IN);
  192. FUNC_GROUP_DECL(TXD3, C14);
  193. #define B14 39
  194. SIG_EXPR_LIST_DECL_SINGLE(RXD3, RXD3, SIG_DESC_SET(SCU80, 23));
  195. SIG_EXPR_DECL(GPIE6OUT, GPIE6, GPIE6_DESC);
  196. SIG_EXPR_DECL(GPIE6OUT, GPIE, GPIE_DESC);
  197. SIG_EXPR_LIST_DECL_DUAL(GPIE6OUT, GPIE6, GPIE);
  198. MS_PIN_DECL(B14, GPIOE7, RXD3, GPIE6OUT);
  199. FUNC_GROUP_DECL(RXD3, B14);
  200. FUNC_GROUP_DECL(GPIE6, C14, B14);
  201. #define D18 40
  202. SSSF_PIN_DECL(D18, GPIOF0, NCTS4, SIG_DESC_SET(SCU80, 24));
  203. #define ACPI_DESC SIG_DESC_BIT(HW_STRAP1, 19, 0)
  204. #define B19 41
  205. SIG_EXPR_LIST_DECL_SINGLE(NDCD4, NDCD4, SIG_DESC_SET(SCU80, 25));
  206. SIG_EXPR_DECL(SIOPBI, SIOPBI, SIG_DESC_SET(SCUA4, 12));
  207. SIG_EXPR_DECL(SIOPBI, ACPI, ACPI_DESC);
  208. SIG_EXPR_LIST_DECL_DUAL(SIOPBI, SIOPBI, ACPI);
  209. MS_PIN_DECL(B19, GPIOF1, NDCD4, SIOPBI);
  210. FUNC_GROUP_DECL(NDCD4, B19);
  211. FUNC_GROUP_DECL(SIOPBI, B19);
  212. #define D17 43
  213. SIG_EXPR_LIST_DECL_SINGLE(NRI4, NRI4, SIG_DESC_SET(SCU80, 27));
  214. SIG_EXPR_DECL(SIOPBO, SIOPBO, SIG_DESC_SET(SCUA4, 14));
  215. SIG_EXPR_DECL(SIOPBO, ACPI, ACPI_DESC);
  216. SIG_EXPR_LIST_DECL_DUAL(SIOPBO, SIOPBO, ACPI);
  217. MS_PIN_DECL(D17, GPIOF3, NRI4, SIOPBO);
  218. FUNC_GROUP_DECL(NRI4, D17);
  219. FUNC_GROUP_DECL(SIOPBO, D17);
  220. FUNC_GROUP_DECL(ACPI, B19, D17);
  221. #define E16 46
  222. SSSF_PIN_DECL(E16, GPIOF6, TXD4, SIG_DESC_SET(SCU80, 30));
  223. #define C17 47
  224. SSSF_PIN_DECL(C17, GPIOF7, RXD4, SIG_DESC_SET(SCU80, 31));
  225. #define AA22 54
  226. SSSF_PIN_DECL(AA22, GPIOG6, FLBUSY, SIG_DESC_SET(SCU84, 6));
  227. #define U18 55
  228. SSSF_PIN_DECL(U18, GPIOG7, FLWP, SIG_DESC_SET(SCU84, 7));
  229. #define UART6_DESC SIG_DESC_SET(SCU90, 7)
  230. #define ROM16_DESC SIG_DESC_SET(SCU90, 6)
  231. #define FLASH_WIDE SIG_DESC_SET(HW_STRAP1, 4)
  232. #define BOOT_SRC_NOR { HW_STRAP1, GENMASK(1, 0), 0, 0 }
  233. #define A8 56
  234. SIG_EXPR_DECL(ROMD8, ROM16, ROM16_DESC);
  235. SIG_EXPR_DECL(ROMD8, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  236. SIG_EXPR_LIST_DECL_DUAL(ROMD8, ROM16, ROM16S);
  237. SIG_EXPR_LIST_DECL_SINGLE(NCTS6, NCTS6, UART6_DESC);
  238. MS_PIN_DECL(A8, GPIOH0, ROMD8, NCTS6);
  239. #define C7 57
  240. SIG_EXPR_DECL(ROMD9, ROM16, ROM16_DESC);
  241. SIG_EXPR_DECL(ROMD9, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  242. SIG_EXPR_LIST_DECL_DUAL(ROMD9, ROM16, ROM16S);
  243. SIG_EXPR_LIST_DECL_SINGLE(NDCD6, NDCD6, UART6_DESC);
  244. MS_PIN_DECL(C7, GPIOH1, ROMD9, NDCD6);
  245. #define B7 58
  246. SIG_EXPR_DECL(ROMD10, ROM16, ROM16_DESC);
  247. SIG_EXPR_DECL(ROMD10, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  248. SIG_EXPR_LIST_DECL_DUAL(ROMD10, ROM16, ROM16S);
  249. SIG_EXPR_LIST_DECL_SINGLE(NDSR6, NDSR6, UART6_DESC);
  250. MS_PIN_DECL(B7, GPIOH2, ROMD10, NDSR6);
  251. #define A7 59
  252. SIG_EXPR_DECL(ROMD11, ROM16, ROM16_DESC);
  253. SIG_EXPR_DECL(ROMD11, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  254. SIG_EXPR_LIST_DECL_DUAL(ROMD11, ROM16, ROM16S);
  255. SIG_EXPR_LIST_DECL_SINGLE(NRI6, NRI6, UART6_DESC);
  256. MS_PIN_DECL(A7, GPIOH3, ROMD11, NRI6);
  257. #define D7 60
  258. SIG_EXPR_DECL(ROMD12, ROM16, ROM16_DESC);
  259. SIG_EXPR_DECL(ROMD12, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  260. SIG_EXPR_LIST_DECL_DUAL(ROMD12, ROM16, ROM16S);
  261. SIG_EXPR_LIST_DECL_SINGLE(NDTR6, NDTR6, UART6_DESC);
  262. MS_PIN_DECL(D7, GPIOH4, ROMD12, NDTR6);
  263. #define B6 61
  264. SIG_EXPR_DECL(ROMD13, ROM16, ROM16_DESC);
  265. SIG_EXPR_DECL(ROMD13, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  266. SIG_EXPR_LIST_DECL_DUAL(ROMD13, ROM16, ROM16S);
  267. SIG_EXPR_LIST_DECL_SINGLE(NRTS6, NRTS6, UART6_DESC);
  268. MS_PIN_DECL(B6, GPIOH5, ROMD13, NRTS6);
  269. #define A6 62
  270. SIG_EXPR_DECL(ROMD14, ROM16, ROM16_DESC);
  271. SIG_EXPR_DECL(ROMD14, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  272. SIG_EXPR_LIST_DECL_DUAL(ROMD14, ROM16, ROM16S);
  273. SIG_EXPR_LIST_DECL_SINGLE(TXD6, TXD6, UART6_DESC);
  274. MS_PIN_DECL(A6, GPIOH6, ROMD14, TXD6);
  275. #define E7 63
  276. SIG_EXPR_DECL(ROMD15, ROM16, ROM16_DESC);
  277. SIG_EXPR_DECL(ROMD15, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
  278. SIG_EXPR_LIST_DECL_DUAL(ROMD15, ROM16, ROM16S);
  279. SIG_EXPR_LIST_DECL_SINGLE(RXD6, RXD6, UART6_DESC);
  280. MS_PIN_DECL(E7, GPIOH7, ROMD15, RXD6);
  281. FUNC_GROUP_DECL(UART6, A8, C7, B7, A7, D7, B6, A6, E7);
  282. #define J3 75
  283. SSSF_PIN_DECL(J3, GPIOJ3, SGPMI, SIG_DESC_SET(SCU84, 11));
  284. #define T4 76
  285. SSSF_PIN_DECL(T4, GPIOJ4, VGAHS, SIG_DESC_SET(SCU84, 12));
  286. #define U2 77
  287. SSSF_PIN_DECL(U2, GPIOJ5, VGAVS, SIG_DESC_SET(SCU84, 13));
  288. #define T2 78
  289. SSSF_PIN_DECL(T2, GPIOJ6, DDCCLK, SIG_DESC_SET(SCU84, 14));
  290. #define T1 79
  291. SSSF_PIN_DECL(T1, GPIOJ7, DDCDAT, SIG_DESC_SET(SCU84, 15));
  292. #define I2C5_DESC SIG_DESC_SET(SCU90, 18)
  293. #define E3 80
  294. SIG_EXPR_LIST_DECL_SINGLE(SCL5, I2C5, I2C5_DESC);
  295. SS_PIN_DECL(E3, GPIOK0, SCL5);
  296. #define D2 81
  297. SIG_EXPR_LIST_DECL_SINGLE(SDA5, I2C5, I2C5_DESC);
  298. SS_PIN_DECL(D2, GPIOK1, SDA5);
  299. FUNC_GROUP_DECL(I2C5, E3, D2);
  300. #define I2C6_DESC SIG_DESC_SET(SCU90, 19)
  301. #define C1 82
  302. SIG_EXPR_LIST_DECL_SINGLE(SCL6, I2C6, I2C6_DESC);
  303. SS_PIN_DECL(C1, GPIOK2, SCL6);
  304. #define F4 83
  305. SIG_EXPR_LIST_DECL_SINGLE(SDA6, I2C6, I2C6_DESC);
  306. SS_PIN_DECL(F4, GPIOK3, SDA6);
  307. FUNC_GROUP_DECL(I2C6, C1, F4);
  308. #define I2C7_DESC SIG_DESC_SET(SCU90, 20)
  309. #define E2 84
  310. SIG_EXPR_LIST_DECL_SINGLE(SCL7, I2C7, I2C7_DESC);
  311. SS_PIN_DECL(E2, GPIOK4, SCL7);
  312. #define D1 85
  313. SIG_EXPR_LIST_DECL_SINGLE(SDA7, I2C7, I2C7_DESC);
  314. SS_PIN_DECL(D1, GPIOK5, SDA7);
  315. FUNC_GROUP_DECL(I2C7, E2, D1);
  316. #define I2C8_DESC SIG_DESC_SET(SCU90, 21)
  317. #define G5 86
  318. SIG_EXPR_LIST_DECL_SINGLE(SCL8, I2C8, I2C8_DESC);
  319. SS_PIN_DECL(G5, GPIOK6, SCL8);
  320. #define F3 87
  321. SIG_EXPR_LIST_DECL_SINGLE(SDA8, I2C8, I2C8_DESC);
  322. SS_PIN_DECL(F3, GPIOK7, SDA8);
  323. FUNC_GROUP_DECL(I2C8, G5, F3);
  324. #define U1 88
  325. SSSF_PIN_DECL(U1, GPIOL0, NCTS1, SIG_DESC_SET(SCU84, 16));
  326. #define VPI18_DESC { SCU90, GENMASK(5, 4), 1, 0 }
  327. #define VPI24_DESC { SCU90, GENMASK(5, 4), 2, 0 }
  328. #define VPI30_DESC { SCU90, GENMASK(5, 4), 3, 0 }
  329. #define T5 89
  330. #define T5_DESC SIG_DESC_SET(SCU84, 17)
  331. SIG_EXPR_DECL(VPIDE, VPI18, VPI18_DESC, T5_DESC);
  332. SIG_EXPR_DECL(VPIDE, VPI24, VPI24_DESC, T5_DESC);
  333. SIG_EXPR_DECL(VPIDE, VPI30, VPI30_DESC, T5_DESC);
  334. SIG_EXPR_LIST_DECL(VPIDE, SIG_EXPR_PTR(VPIDE, VPI18),
  335. SIG_EXPR_PTR(VPIDE, VPI24),
  336. SIG_EXPR_PTR(VPIDE, VPI30));
  337. SIG_EXPR_LIST_DECL_SINGLE(NDCD1, NDCD1, T5_DESC);
  338. MS_PIN_DECL(T5, GPIOL1, VPIDE, NDCD1);
  339. FUNC_GROUP_DECL(NDCD1, T5);
  340. #define U3 90
  341. #define U3_DESC SIG_DESC_SET(SCU84, 18)
  342. SIG_EXPR_DECL(VPIODD, VPI18, VPI18_DESC, U3_DESC);
  343. SIG_EXPR_DECL(VPIODD, VPI24, VPI24_DESC, U3_DESC);
  344. SIG_EXPR_DECL(VPIODD, VPI30, VPI30_DESC, U3_DESC);
  345. SIG_EXPR_LIST_DECL(VPIODD, SIG_EXPR_PTR(VPIODD, VPI18),
  346. SIG_EXPR_PTR(VPIODD, VPI24),
  347. SIG_EXPR_PTR(VPIODD, VPI30));
  348. SIG_EXPR_LIST_DECL_SINGLE(NDSR1, NDSR1, U3_DESC);
  349. MS_PIN_DECL(U3, GPIOL2, VPIODD, NDSR1);
  350. FUNC_GROUP_DECL(NDSR1, U3);
  351. #define V1 91
  352. #define V1_DESC SIG_DESC_SET(SCU84, 19)
  353. SIG_EXPR_DECL(VPIHS, VPI18, VPI18_DESC, V1_DESC);
  354. SIG_EXPR_DECL(VPIHS, VPI24, VPI24_DESC, V1_DESC);
  355. SIG_EXPR_DECL(VPIHS, VPI30, VPI30_DESC, V1_DESC);
  356. SIG_EXPR_LIST_DECL(VPIHS, SIG_EXPR_PTR(VPIHS, VPI18),
  357. SIG_EXPR_PTR(VPIHS, VPI24),
  358. SIG_EXPR_PTR(VPIHS, VPI30));
  359. SIG_EXPR_LIST_DECL_SINGLE(NRI1, NRI1, V1_DESC);
  360. MS_PIN_DECL(V1, GPIOL3, VPIHS, NRI1);
  361. FUNC_GROUP_DECL(NRI1, V1);
  362. #define U4 92
  363. #define U4_DESC SIG_DESC_SET(SCU84, 20)
  364. SIG_EXPR_DECL(VPIVS, VPI18, VPI18_DESC, U4_DESC);
  365. SIG_EXPR_DECL(VPIVS, VPI24, VPI24_DESC, U4_DESC);
  366. SIG_EXPR_DECL(VPIVS, VPI30, VPI30_DESC, U4_DESC);
  367. SIG_EXPR_LIST_DECL(VPIVS, SIG_EXPR_PTR(VPIVS, VPI18),
  368. SIG_EXPR_PTR(VPIVS, VPI24),
  369. SIG_EXPR_PTR(VPIVS, VPI30));
  370. SIG_EXPR_LIST_DECL_SINGLE(NDTR1, NDTR1, U4_DESC);
  371. MS_PIN_DECL(U4, GPIOL4, VPIVS, NDTR1);
  372. FUNC_GROUP_DECL(NDTR1, U4);
  373. #define V2 93
  374. #define V2_DESC SIG_DESC_SET(SCU84, 21)
  375. SIG_EXPR_DECL(VPICLK, VPI18, VPI18_DESC, V2_DESC);
  376. SIG_EXPR_DECL(VPICLK, VPI24, VPI24_DESC, V2_DESC);
  377. SIG_EXPR_DECL(VPICLK, VPI30, VPI30_DESC, V2_DESC);
  378. SIG_EXPR_LIST_DECL(VPICLK, SIG_EXPR_PTR(VPICLK, VPI18),
  379. SIG_EXPR_PTR(VPICLK, VPI24),
  380. SIG_EXPR_PTR(VPICLK, VPI30));
  381. SIG_EXPR_LIST_DECL_SINGLE(NRTS1, NRTS1, V2_DESC);
  382. MS_PIN_DECL(V2, GPIOL5, VPICLK, NRTS1);
  383. FUNC_GROUP_DECL(NRTS1, V2);
  384. #define W1 94
  385. #define W1_DESC SIG_DESC_SET(SCU84, 22)
  386. SIG_EXPR_LIST_DECL_SINGLE(VPIB0, VPI30, VPI30_DESC, W1_DESC);
  387. SIG_EXPR_LIST_DECL_SINGLE(TXD1, TXD1, W1_DESC);
  388. MS_PIN_DECL(W1, GPIOL6, VPIB0, TXD1);
  389. FUNC_GROUP_DECL(TXD1, W1);
  390. #define U5 95
  391. #define U5_DESC SIG_DESC_SET(SCU84, 23)
  392. SIG_EXPR_LIST_DECL_SINGLE(VPIB1, VPI30, VPI30_DESC, U5_DESC);
  393. SIG_EXPR_LIST_DECL_SINGLE(RXD1, RXD1, U5_DESC);
  394. MS_PIN_DECL(U5, GPIOL7, VPIB1, RXD1);
  395. FUNC_GROUP_DECL(RXD1, U5);
  396. #define W4 104
  397. #define W4_DESC SIG_DESC_SET(SCU88, 0)
  398. SIG_EXPR_LIST_DECL_SINGLE(VPIG0, VPI30, VPI30_DESC, W4_DESC);
  399. SIG_EXPR_LIST_DECL_SINGLE(PWM0, PWM0, W4_DESC);
  400. MS_PIN_DECL(W4, GPION0, VPIG0, PWM0);
  401. FUNC_GROUP_DECL(PWM0, W4);
  402. #define Y3 105
  403. #define Y3_DESC SIG_DESC_SET(SCU88, 1)
  404. SIG_EXPR_LIST_DECL_SINGLE(VPIG1, VPI30, VPI30_DESC, Y3_DESC);
  405. SIG_EXPR_LIST_DECL_SINGLE(PWM1, PWM1, Y3_DESC);
  406. MS_PIN_DECL(Y3, GPION1, VPIG1, PWM1);
  407. FUNC_GROUP_DECL(PWM1, Y3);
  408. #define AA2 106
  409. #define AA2_DESC SIG_DESC_SET(SCU88, 2)
  410. SIG_EXPR_DECL(VPIG2, VPI18, VPI18_DESC, AA2_DESC);
  411. SIG_EXPR_DECL(VPIG2, VPI24, VPI24_DESC, AA2_DESC);
  412. SIG_EXPR_DECL(VPIG2, VPI30, VPI30_DESC, AA2_DESC);
  413. SIG_EXPR_LIST_DECL(VPIG2, SIG_EXPR_PTR(VPIG2, VPI18),
  414. SIG_EXPR_PTR(VPIG2, VPI24),
  415. SIG_EXPR_PTR(VPIG2, VPI30));
  416. SIG_EXPR_LIST_DECL_SINGLE(PWM2, PWM2, AA2_DESC);
  417. MS_PIN_DECL(AA2, GPION2, VPIG2, PWM2);
  418. FUNC_GROUP_DECL(PWM2, AA2);
  419. #define AB1 107
  420. #define AB1_DESC SIG_DESC_SET(SCU88, 3)
  421. SIG_EXPR_DECL(VPIG3, VPI18, VPI18_DESC, AB1_DESC);
  422. SIG_EXPR_DECL(VPIG3, VPI24, VPI24_DESC, AB1_DESC);
  423. SIG_EXPR_DECL(VPIG3, VPI30, VPI30_DESC, AB1_DESC);
  424. SIG_EXPR_LIST_DECL(VPIG3, SIG_EXPR_PTR(VPIG3, VPI18),
  425. SIG_EXPR_PTR(VPIG2, VPI24),
  426. SIG_EXPR_PTR(VPIG2, VPI30));
  427. SIG_EXPR_LIST_DECL_SINGLE(PWM3, PWM3, AB1_DESC);
  428. MS_PIN_DECL(AB1, GPION3, VPIG3, PWM3);
  429. FUNC_GROUP_DECL(PWM3, AB1);
  430. #define W5 108
  431. #define W5_DESC SIG_DESC_SET(SCU88, 4)
  432. SIG_EXPR_DECL(VPIG4, VPI18, VPI18_DESC, W5_DESC);
  433. SIG_EXPR_DECL(VPIG4, VPI24, VPI24_DESC, W5_DESC);
  434. SIG_EXPR_DECL(VPIG4, VPI30, VPI30_DESC, W5_DESC);
  435. SIG_EXPR_LIST_DECL(VPIG4, SIG_EXPR_PTR(VPIG4, VPI18),
  436. SIG_EXPR_PTR(VPIG2, VPI24),
  437. SIG_EXPR_PTR(VPIG2, VPI30));
  438. SIG_EXPR_LIST_DECL_SINGLE(PWM4, PWM4, W5_DESC);
  439. MS_PIN_DECL(W5, GPION4, VPIG4, PWM4);
  440. FUNC_GROUP_DECL(PWM4, W5);
  441. #define Y4 109
  442. #define Y4_DESC SIG_DESC_SET(SCU88, 5)
  443. SIG_EXPR_DECL(VPIG5, VPI18, VPI18_DESC, Y4_DESC);
  444. SIG_EXPR_DECL(VPIG5, VPI24, VPI24_DESC, Y4_DESC);
  445. SIG_EXPR_DECL(VPIG5, VPI30, VPI30_DESC, Y4_DESC);
  446. SIG_EXPR_LIST_DECL(VPIG5, SIG_EXPR_PTR(VPIG5, VPI18),
  447. SIG_EXPR_PTR(VPIG2, VPI24),
  448. SIG_EXPR_PTR(VPIG2, VPI30));
  449. SIG_EXPR_LIST_DECL_SINGLE(PWM5, PWM5, Y4_DESC);
  450. MS_PIN_DECL(Y4, GPION5, VPIG5, PWM5);
  451. FUNC_GROUP_DECL(PWM5, Y4);
  452. #define AA3 110
  453. #define AA3_DESC SIG_DESC_SET(SCU88, 6)
  454. SIG_EXPR_LIST_DECL_SINGLE(VPIG6, VPI30, VPI30_DESC, AA3_DESC);
  455. SIG_EXPR_LIST_DECL_SINGLE(PWM6, PWM6, AA3_DESC);
  456. MS_PIN_DECL(AA3, GPION6, VPIG6, PWM6);
  457. FUNC_GROUP_DECL(PWM6, AA3);
  458. #define AB2 111
  459. #define AB2_DESC SIG_DESC_SET(SCU88, 7)
  460. SIG_EXPR_LIST_DECL_SINGLE(VPIG7, VPI30, VPI30_DESC, AB2_DESC);
  461. SIG_EXPR_LIST_DECL_SINGLE(PWM7, PWM7, AB2_DESC);
  462. MS_PIN_DECL(AB2, GPION7, VPIG7, PWM7);
  463. FUNC_GROUP_DECL(PWM7, AB2);
  464. #define V6 112
  465. SIG_EXPR_LIST_DECL_SINGLE(VPIG8, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 8));
  466. SS_PIN_DECL(V6, GPIOO0, VPIG8);
  467. #define Y5 113
  468. SIG_EXPR_LIST_DECL_SINGLE(VPIG9, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 9));
  469. SS_PIN_DECL(Y5, GPIOO1, VPIG9);
  470. FUNC_GROUP_DECL(VPI18, T5, U3, V1, U4, V2, AA22, W5, Y4, AA3, AB2);
  471. FUNC_GROUP_DECL(VPI24, T5, U3, V1, U4, V2, AA22, W5, Y4, AA3, AB2, V6, Y5);
  472. FUNC_GROUP_DECL(VPI30, T5, U3, V1, U4, V2, W1, U5, W4, Y3, AA22, W5, Y4, AA3,
  473. AB2);
  474. #define Y7 125
  475. SIG_EXPR_LIST_DECL_SINGLE(GPIOP5, GPIOP5);
  476. MS_PIN_DECL_(Y7, SIG_EXPR_LIST_PTR(GPIOP5));
  477. #define AA7 126
  478. SSSF_PIN_DECL(AA7, GPIOP6, BMCINT, SIG_DESC_SET(SCU88, 22));
  479. #define AB7 127
  480. SSSF_PIN_DECL(AB7, GPIOP7, FLACK, SIG_DESC_SET(SCU88, 23));
  481. #define I2C3_DESC SIG_DESC_SET(SCU90, 16)
  482. #define D3 128
  483. SIG_EXPR_LIST_DECL_SINGLE(SCL3, I2C3, I2C3_DESC);
  484. SS_PIN_DECL(D3, GPIOQ0, SCL3);
  485. #define C2 129
  486. SIG_EXPR_LIST_DECL_SINGLE(SDA3, I2C3, I2C3_DESC);
  487. SS_PIN_DECL(C2, GPIOQ1, SDA3);
  488. FUNC_GROUP_DECL(I2C3, D3, C2);
  489. #define I2C4_DESC SIG_DESC_SET(SCU90, 17)
  490. #define B1 130
  491. SIG_EXPR_LIST_DECL_SINGLE(SCL4, I2C4, I2C4_DESC);
  492. SS_PIN_DECL(B1, GPIOQ2, SCL4);
  493. #define F5 131
  494. SIG_EXPR_LIST_DECL_SINGLE(SDA4, I2C4, I2C4_DESC);
  495. SS_PIN_DECL(F5, GPIOQ3, SDA4);
  496. FUNC_GROUP_DECL(I2C4, B1, F5);
  497. #define DASH9028_DESC SIG_DESC_SET(SCU90, 28)
  498. #define H2 134
  499. SIG_EXPR_LIST_DECL_SINGLE(DASHH2, DASHH2, DASH9028_DESC);
  500. SS_PIN_DECL(H2, GPIOQ6, DASHH2);
  501. #define H1 135
  502. SIG_EXPR_LIST_DECL_SINGLE(DASHH1, DASHH1, DASH9028_DESC);
  503. SS_PIN_DECL(H1, GPIOQ7, DASHH1);
  504. #define V20 136
  505. SSSF_PIN_DECL(V20, GPIOR0, ROMCS1, SIG_DESC_SET(SCU88, 24));
  506. #define W21 137
  507. SSSF_PIN_DECL(W21, GPIOR1, ROMCS2, SIG_DESC_SET(SCU88, 25));
  508. #define Y22 138
  509. SSSF_PIN_DECL(Y22, GPIOR2, ROMCS3, SIG_DESC_SET(SCU88, 26));
  510. #define U19 139
  511. SSSF_PIN_DECL(U19, GPIOR3, ROMCS4, SIG_DESC_SET(SCU88, 27));
  512. #define VPOOFF0_DESC { SCU94, GENMASK(1, 0), 0, 0 }
  513. #define VPO12_DESC { SCU94, GENMASK(1, 0), 1, 0 }
  514. #define VPO24_DESC { SCU94, GENMASK(1, 0), 2, 0 }
  515. #define VPOOFF1_DESC { SCU94, GENMASK(1, 0), 3, 0 }
  516. #define VPO_OFF_12 { SCU94, 0x2, 0, 0 }
  517. #define VPO_24_OFF SIG_DESC_SET(SCU94, 1)
  518. #define V21 140
  519. #define V21_DESC SIG_DESC_SET(SCU88, 28)
  520. SIG_EXPR_DECL(ROMA24, ROM8, V21_DESC, VPO_OFF_12);
  521. SIG_EXPR_DECL(ROMA24, ROM16, V21_DESC, VPO_OFF_12);
  522. SIG_EXPR_DECL(ROMA24, ROM16S, V21_DESC, VPO_OFF_12);
  523. SIG_EXPR_LIST_DECL(ROMA24, SIG_EXPR_PTR(ROMA24, ROM8),
  524. SIG_EXPR_PTR(ROMA24, ROM16),
  525. SIG_EXPR_PTR(ROMA24, ROM16S));
  526. SIG_EXPR_LIST_DECL_SINGLE(VPOR6, VPO24, V21_DESC, VPO_24_OFF);
  527. MS_PIN_DECL(V21, GPIOR4, ROMA24, VPOR6);
  528. #define W22 141
  529. #define W22_DESC SIG_DESC_SET(SCU88, 29)
  530. SIG_EXPR_DECL(ROMA25, ROM8, W22_DESC, VPO_OFF_12);
  531. SIG_EXPR_DECL(ROMA25, ROM16, W22_DESC, VPO_OFF_12);
  532. SIG_EXPR_DECL(ROMA25, ROM16S, W22_DESC, VPO_OFF_12);
  533. SIG_EXPR_LIST_DECL(ROMA25, SIG_EXPR_PTR(ROMA25, ROM8),
  534. SIG_EXPR_PTR(ROMA25, ROM16),
  535. SIG_EXPR_PTR(ROMA25, ROM16S));
  536. SIG_EXPR_LIST_DECL_SINGLE(VPOR7, VPO24, W22_DESC, VPO_24_OFF);
  537. MS_PIN_DECL(W22, GPIOR5, ROMA25, VPOR7);
  538. #define C6 142
  539. SIG_EXPR_LIST_DECL_SINGLE(MDC1, MDIO1, SIG_DESC_SET(SCU88, 30));
  540. SS_PIN_DECL(C6, GPIOR6, MDC1);
  541. #define A5 143
  542. SIG_EXPR_LIST_DECL_SINGLE(MDIO1, MDIO1, SIG_DESC_SET(SCU88, 31));
  543. SS_PIN_DECL(A5, GPIOR7, MDIO1);
  544. FUNC_GROUP_DECL(MDIO1, C6, A5);
  545. #define U21 144
  546. #define U21_DESC SIG_DESC_SET(SCU8C, 0)
  547. SIG_EXPR_DECL(ROMD4, ROM8, U21_DESC, VPOOFF0_DESC);
  548. SIG_EXPR_DECL(ROMD4, ROM16, U21_DESC, VPOOFF0_DESC);
  549. SIG_EXPR_DECL(ROMD4, ROM16S, U21_DESC, VPOOFF0_DESC);
  550. SIG_EXPR_LIST_DECL(ROMD4, SIG_EXPR_PTR(ROMD4, ROM8),
  551. SIG_EXPR_PTR(ROMD4, ROM16),
  552. SIG_EXPR_PTR(ROMD4, ROM16S));
  553. SIG_EXPR_DECL(VPODE, VPO12, U21_DESC, VPO12_DESC);
  554. SIG_EXPR_DECL(VPODE, VPO24, U21_DESC, VPO12_DESC);
  555. SIG_EXPR_LIST_DECL_DUAL(VPODE, VPO12, VPO24);
  556. MS_PIN_DECL(U21, GPIOS0, ROMD4, VPODE);
  557. #define T19 145
  558. #define T19_DESC SIG_DESC_SET(SCU8C, 1)
  559. SIG_EXPR_DECL(ROMD5, ROM8, T19_DESC, VPOOFF0_DESC);
  560. SIG_EXPR_DECL(ROMD5, ROM16, T19_DESC, VPOOFF0_DESC);
  561. SIG_EXPR_DECL(ROMD5, ROM16S, T19_DESC, VPOOFF0_DESC);
  562. SIG_EXPR_LIST_DECL(ROMD5, SIG_EXPR_PTR(ROMD5, ROM8),
  563. SIG_EXPR_PTR(ROMD5, ROM16),
  564. SIG_EXPR_PTR(ROMD5, ROM16S));
  565. SIG_EXPR_DECL(VPOHS, VPO12, T19_DESC, VPO12_DESC);
  566. SIG_EXPR_DECL(VPOHS, VPO24, T19_DESC, VPO24_DESC);
  567. SIG_EXPR_LIST_DECL_DUAL(VPOHS, VPO12, VPO24);
  568. MS_PIN_DECL(T19, GPIOS1, ROMD5, VPOHS);
  569. #define V22 146
  570. #define V22_DESC SIG_DESC_SET(SCU8C, 2)
  571. SIG_EXPR_DECL(ROMD6, ROM8, V22_DESC, VPOOFF0_DESC);
  572. SIG_EXPR_DECL(ROMD6, ROM16, V22_DESC, VPOOFF0_DESC);
  573. SIG_EXPR_DECL(ROMD6, ROM16S, V22_DESC, VPOOFF0_DESC);
  574. SIG_EXPR_LIST_DECL(ROMD6, SIG_EXPR_PTR(ROMD6, ROM8),
  575. SIG_EXPR_PTR(ROMD6, ROM16),
  576. SIG_EXPR_PTR(ROMD6, ROM16S));
  577. SIG_EXPR_DECL(VPOVS, VPO12, V22_DESC, VPO12_DESC);
  578. SIG_EXPR_DECL(VPOVS, VPO24, V22_DESC, VPO24_DESC);
  579. SIG_EXPR_LIST_DECL_DUAL(VPOVS, VPO12, VPO24);
  580. MS_PIN_DECL(V22, GPIOS2, ROMD6, VPOVS);
  581. #define U20 147
  582. #define U20_DESC SIG_DESC_SET(SCU8C, 3)
  583. SIG_EXPR_DECL(ROMD7, ROM8, U20_DESC, VPOOFF0_DESC);
  584. SIG_EXPR_DECL(ROMD7, ROM16, U20_DESC, VPOOFF0_DESC);
  585. SIG_EXPR_DECL(ROMD7, ROM16S, U20_DESC, VPOOFF0_DESC);
  586. SIG_EXPR_LIST_DECL(ROMD7, SIG_EXPR_PTR(ROMD7, ROM8),
  587. SIG_EXPR_PTR(ROMD7, ROM16),
  588. SIG_EXPR_PTR(ROMD7, ROM16S));
  589. SIG_EXPR_DECL(VPOCLK, VPO12, U20_DESC, VPO12_DESC);
  590. SIG_EXPR_DECL(VPOCLK, VPO24, U20_DESC, VPO24_DESC);
  591. SIG_EXPR_LIST_DECL_DUAL(VPOCLK, VPO12, VPO24);
  592. MS_PIN_DECL(U20, GPIOS3, ROMD7, VPOCLK);
  593. #define R18 148
  594. #define ROMOE_DESC SIG_DESC_SET(SCU8C, 4)
  595. SIG_EXPR_LIST_DECL_SINGLE(GPIOS4, GPIOS4);
  596. SIG_EXPR_DECL(ROMOE, ROM8, ROMOE_DESC);
  597. SIG_EXPR_DECL(ROMOE, ROM16, ROMOE_DESC);
  598. SIG_EXPR_DECL(ROMOE, ROM16S, ROMOE_DESC);
  599. SIG_EXPR_LIST_DECL(ROMOE, SIG_EXPR_PTR(ROMOE, ROM8),
  600. SIG_EXPR_PTR(ROMOE, ROM16),
  601. SIG_EXPR_PTR(ROMOE, ROM16S));
  602. MS_PIN_DECL_(R18, SIG_EXPR_LIST_PTR(ROMOE), SIG_EXPR_LIST_PTR(GPIOS4));
  603. #define N21 149
  604. #define ROMWE_DESC SIG_DESC_SET(SCU8C, 5)
  605. SIG_EXPR_LIST_DECL_SINGLE(GPIOS5, GPIOS5);
  606. SIG_EXPR_DECL(ROMWE, ROM8, ROMWE_DESC);
  607. SIG_EXPR_DECL(ROMWE, ROM16, ROMWE_DESC);
  608. SIG_EXPR_DECL(ROMWE, ROM16S, ROMWE_DESC);
  609. SIG_EXPR_LIST_DECL(ROMWE, SIG_EXPR_PTR(ROMWE, ROM8),
  610. SIG_EXPR_PTR(ROMWE, ROM16),
  611. SIG_EXPR_PTR(ROMWE, ROM16S));
  612. MS_PIN_DECL_(N21, SIG_EXPR_LIST_PTR(ROMWE), SIG_EXPR_LIST_PTR(GPIOS5));
  613. #define L22 150
  614. #define L22_DESC SIG_DESC_SET(SCU8C, 6)
  615. SIG_EXPR_DECL(ROMA22, ROM8, L22_DESC, VPO_OFF_12);
  616. SIG_EXPR_DECL(ROMA22, ROM16, L22_DESC, VPO_OFF_12);
  617. SIG_EXPR_DECL(ROMA22, ROM16S, L22_DESC, VPO_OFF_12);
  618. SIG_EXPR_LIST_DECL(ROMA22, SIG_EXPR_PTR(ROMA22, ROM8),
  619. SIG_EXPR_PTR(ROMA22, ROM16),
  620. SIG_EXPR_PTR(ROMA22, ROM16S));
  621. SIG_EXPR_LIST_DECL_SINGLE(VPOR4, VPO24, L22_DESC, VPO_24_OFF);
  622. MS_PIN_DECL(L22, GPIOS6, ROMA22, VPOR4);
  623. #define K18 151
  624. #define K18_DESC SIG_DESC_SET(SCU8C, 7)
  625. SIG_EXPR_DECL(ROMA23, ROM8, K18_DESC, VPO_OFF_12);
  626. SIG_EXPR_DECL(ROMA23, ROM16, K18_DESC, VPO_OFF_12);
  627. SIG_EXPR_DECL(ROMA23, ROM16S, K18_DESC, VPO_OFF_12);
  628. SIG_EXPR_LIST_DECL(ROMA23, SIG_EXPR_PTR(ROMA23, ROM8),
  629. SIG_EXPR_PTR(ROMA23, ROM16),
  630. SIG_EXPR_PTR(ROMA23, ROM16S));
  631. SIG_EXPR_LIST_DECL_SINGLE(VPOR5, VPO24, K18_DESC, VPO_24_OFF);
  632. MS_PIN_DECL(K18, GPIOS7, ROMA23, VPOR5);
  633. FUNC_GROUP_DECL(ROM8, V20, U21, T19, V22, U20, R18, N21, L22, K18, W21, Y22,
  634. U19);
  635. FUNC_GROUP_DECL(ROM16, V20, U21, T19, V22, U20, R18, N21, L22, K18,
  636. A8, C7, B7, A7, D7, B6, A6, E7, W21, Y22, U19);
  637. FUNC_GROUP_DECL(VPO12, U21, T19, V22, U20);
  638. FUNC_GROUP_DECL(VPO24, U21, T19, V22, U20, L22, K18, V21, W22);
  639. #define RMII1_DESC SIG_DESC_BIT(HW_STRAP1, 6, 0)
  640. #define A12 152
  641. SIG_EXPR_LIST_DECL_SINGLE(GPIOT0, GPIOT0, SIG_DESC_SET(SCUA0, 0));
  642. SIG_EXPR_LIST_DECL_SINGLE(RMII1TXEN, RMII1, RMII1_DESC);
  643. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCK, RGMII1);
  644. MS_PIN_DECL_(A12, SIG_EXPR_LIST_PTR(GPIOT0), SIG_EXPR_LIST_PTR(RMII1TXEN),
  645. SIG_EXPR_LIST_PTR(RGMII1TXCK));
  646. #define B12 153
  647. SIG_EXPR_LIST_DECL_SINGLE(GPIOT1, GPIOT1, SIG_DESC_SET(SCUA0, 1));
  648. SIG_EXPR_LIST_DECL_SINGLE(DASHB12, RMII1, RMII1_DESC);
  649. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCTL, RGMII1);
  650. MS_PIN_DECL_(B12, SIG_EXPR_LIST_PTR(GPIOT1), SIG_EXPR_LIST_PTR(DASHB12),
  651. SIG_EXPR_LIST_PTR(RGMII1TXCTL));
  652. #define C12 154
  653. SIG_EXPR_LIST_DECL_SINGLE(GPIOT2, GPIOT2, SIG_DESC_SET(SCUA0, 2));
  654. SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD0, RMII1, RMII1_DESC);
  655. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD0, RGMII1);
  656. MS_PIN_DECL_(C12, SIG_EXPR_LIST_PTR(GPIOT2), SIG_EXPR_LIST_PTR(RMII1TXD0),
  657. SIG_EXPR_LIST_PTR(RGMII1TXD0));
  658. #define D12 155
  659. SIG_EXPR_LIST_DECL_SINGLE(GPIOT3, GPIOT3, SIG_DESC_SET(SCUA0, 3));
  660. SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD1, RMII1, RMII1_DESC);
  661. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD1, RGMII1);
  662. MS_PIN_DECL_(D12, SIG_EXPR_LIST_PTR(GPIOT3), SIG_EXPR_LIST_PTR(RMII1TXD1),
  663. SIG_EXPR_LIST_PTR(RGMII1TXD1));
  664. #define E12 156
  665. SIG_EXPR_LIST_DECL_SINGLE(GPIOT4, GPIOT4, SIG_DESC_SET(SCUA0, 4));
  666. SIG_EXPR_LIST_DECL_SINGLE(DASHE12, RMII1, RMII1_DESC);
  667. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD2, RGMII1);
  668. MS_PIN_DECL_(E12, SIG_EXPR_LIST_PTR(GPIOT4), SIG_EXPR_LIST_PTR(DASHE12),
  669. SIG_EXPR_LIST_PTR(RGMII1TXD2));
  670. #define A13 157
  671. SIG_EXPR_LIST_DECL_SINGLE(GPIOT5, GPIOT5, SIG_DESC_SET(SCUA0, 5));
  672. SIG_EXPR_LIST_DECL_SINGLE(DASHA13, RMII1, RMII1_DESC);
  673. SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD3, RGMII1);
  674. MS_PIN_DECL_(A13, SIG_EXPR_LIST_PTR(GPIOT5), SIG_EXPR_LIST_PTR(DASHA13),
  675. SIG_EXPR_LIST_PTR(RGMII1TXD3));
  676. #define E11 164
  677. SIG_EXPR_LIST_DECL_SINGLE(GPIOU4, GPIOU4, SIG_DESC_SET(SCUA0, 12));
  678. SIG_EXPR_LIST_DECL_SINGLE(RMII1RCLK, RMII1, RMII1_DESC);
  679. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCK, RGMII1);
  680. MS_PIN_DECL_(E11, SIG_EXPR_LIST_PTR(GPIOU4), SIG_EXPR_LIST_PTR(RMII1RCLK),
  681. SIG_EXPR_LIST_PTR(RGMII1RXCK));
  682. #define D11 165
  683. SIG_EXPR_LIST_DECL_SINGLE(GPIOU5, GPIOU5, SIG_DESC_SET(SCUA0, 13));
  684. SIG_EXPR_LIST_DECL_SINGLE(DASHD11, RMII1, RMII1_DESC);
  685. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCTL, RGMII1);
  686. MS_PIN_DECL_(D11, SIG_EXPR_LIST_PTR(GPIOU5), SIG_EXPR_LIST_PTR(DASHD11),
  687. SIG_EXPR_LIST_PTR(RGMII1RXCTL));
  688. #define C11 166
  689. SIG_EXPR_LIST_DECL_SINGLE(GPIOU6, GPIOU6, SIG_DESC_SET(SCUA0, 14));
  690. SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD0, RMII1, RMII1_DESC);
  691. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD0, RGMII1);
  692. MS_PIN_DECL_(C11, SIG_EXPR_LIST_PTR(GPIOU6), SIG_EXPR_LIST_PTR(RMII1RXD0),
  693. SIG_EXPR_LIST_PTR(RGMII1RXD0));
  694. #define B11 167
  695. SIG_EXPR_LIST_DECL_SINGLE(GPIOU7, GPIOU7, SIG_DESC_SET(SCUA0, 15));
  696. SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD1, RMII1, RMII1_DESC);
  697. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD1, RGMII1);
  698. MS_PIN_DECL_(B11, SIG_EXPR_LIST_PTR(GPIOU7), SIG_EXPR_LIST_PTR(RMII1RXD1),
  699. SIG_EXPR_LIST_PTR(RGMII1RXD1));
  700. #define A11 168
  701. SIG_EXPR_LIST_DECL_SINGLE(GPIOV0, GPIOV0, SIG_DESC_SET(SCUA0, 16));
  702. SIG_EXPR_LIST_DECL_SINGLE(RMII1CRSDV, RMII1, RMII1_DESC);
  703. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD2, RGMII1);
  704. MS_PIN_DECL_(A11, SIG_EXPR_LIST_PTR(GPIOV0), SIG_EXPR_LIST_PTR(RMII1CRSDV),
  705. SIG_EXPR_LIST_PTR(RGMII1RXD2));
  706. #define E10 169
  707. SIG_EXPR_LIST_DECL_SINGLE(GPIOV1, GPIOV1, SIG_DESC_SET(SCUA0, 17));
  708. SIG_EXPR_LIST_DECL_SINGLE(RMII1RXER, RMII1, RMII1_DESC);
  709. SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD3, RGMII1);
  710. MS_PIN_DECL_(E10, SIG_EXPR_LIST_PTR(GPIOV1), SIG_EXPR_LIST_PTR(RMII1RXER),
  711. SIG_EXPR_LIST_PTR(RGMII1RXD3));
  712. FUNC_GROUP_DECL(RMII1, A12, B12, C12, D12, E12, A13, E11, D11, C11, B11, A11,
  713. E10);
  714. FUNC_GROUP_DECL(RGMII1, A12, B12, C12, D12, E12, A13, E11, D11, C11, B11, A11,
  715. E10);
  716. /* Note we account for GPIOY4-GPIOY7 even though they're not valid, thus 216
  717. * pins becomes 220.
  718. */
  719. #define ASPEED_G4_NR_PINS 220
  720. /* Pins, groups and functions are sort(1):ed alphabetically for sanity */
  721. static struct pinctrl_pin_desc aspeed_g4_pins[ASPEED_G4_NR_PINS] = {
  722. ASPEED_PINCTRL_PIN(A1),
  723. ASPEED_PINCTRL_PIN(A11),
  724. ASPEED_PINCTRL_PIN(A12),
  725. ASPEED_PINCTRL_PIN(A13),
  726. ASPEED_PINCTRL_PIN(A15),
  727. ASPEED_PINCTRL_PIN(A18),
  728. ASPEED_PINCTRL_PIN(A2),
  729. ASPEED_PINCTRL_PIN(A3),
  730. ASPEED_PINCTRL_PIN(A4),
  731. ASPEED_PINCTRL_PIN(A5),
  732. ASPEED_PINCTRL_PIN(A6),
  733. ASPEED_PINCTRL_PIN(A7),
  734. ASPEED_PINCTRL_PIN(A8),
  735. ASPEED_PINCTRL_PIN(AA2),
  736. ASPEED_PINCTRL_PIN(AA22),
  737. ASPEED_PINCTRL_PIN(AA3),
  738. ASPEED_PINCTRL_PIN(AA7),
  739. ASPEED_PINCTRL_PIN(AB1),
  740. ASPEED_PINCTRL_PIN(AB2),
  741. ASPEED_PINCTRL_PIN(AB7),
  742. ASPEED_PINCTRL_PIN(B1),
  743. ASPEED_PINCTRL_PIN(B11),
  744. ASPEED_PINCTRL_PIN(B12),
  745. ASPEED_PINCTRL_PIN(B14),
  746. ASPEED_PINCTRL_PIN(B15),
  747. ASPEED_PINCTRL_PIN(B19),
  748. ASPEED_PINCTRL_PIN(B2),
  749. ASPEED_PINCTRL_PIN(B3),
  750. ASPEED_PINCTRL_PIN(B4),
  751. ASPEED_PINCTRL_PIN(B6),
  752. ASPEED_PINCTRL_PIN(B7),
  753. ASPEED_PINCTRL_PIN(C1),
  754. ASPEED_PINCTRL_PIN(C11),
  755. ASPEED_PINCTRL_PIN(C12),
  756. ASPEED_PINCTRL_PIN(C14),
  757. ASPEED_PINCTRL_PIN(C15),
  758. ASPEED_PINCTRL_PIN(C17),
  759. ASPEED_PINCTRL_PIN(C2),
  760. ASPEED_PINCTRL_PIN(C3),
  761. ASPEED_PINCTRL_PIN(C4),
  762. ASPEED_PINCTRL_PIN(C5),
  763. ASPEED_PINCTRL_PIN(C6),
  764. ASPEED_PINCTRL_PIN(C7),
  765. ASPEED_PINCTRL_PIN(D1),
  766. ASPEED_PINCTRL_PIN(D11),
  767. ASPEED_PINCTRL_PIN(D12),
  768. ASPEED_PINCTRL_PIN(D14),
  769. ASPEED_PINCTRL_PIN(D15),
  770. ASPEED_PINCTRL_PIN(D16),
  771. ASPEED_PINCTRL_PIN(D17),
  772. ASPEED_PINCTRL_PIN(D18),
  773. ASPEED_PINCTRL_PIN(D2),
  774. ASPEED_PINCTRL_PIN(D3),
  775. ASPEED_PINCTRL_PIN(D4),
  776. ASPEED_PINCTRL_PIN(D5),
  777. ASPEED_PINCTRL_PIN(D7),
  778. ASPEED_PINCTRL_PIN(E10),
  779. ASPEED_PINCTRL_PIN(E11),
  780. ASPEED_PINCTRL_PIN(E12),
  781. ASPEED_PINCTRL_PIN(E14),
  782. ASPEED_PINCTRL_PIN(E16),
  783. ASPEED_PINCTRL_PIN(E2),
  784. ASPEED_PINCTRL_PIN(E3),
  785. ASPEED_PINCTRL_PIN(E5),
  786. ASPEED_PINCTRL_PIN(E7),
  787. ASPEED_PINCTRL_PIN(F3),
  788. ASPEED_PINCTRL_PIN(F4),
  789. ASPEED_PINCTRL_PIN(F5),
  790. ASPEED_PINCTRL_PIN(G5),
  791. ASPEED_PINCTRL_PIN(H1),
  792. ASPEED_PINCTRL_PIN(H19),
  793. ASPEED_PINCTRL_PIN(H2),
  794. ASPEED_PINCTRL_PIN(H20),
  795. ASPEED_PINCTRL_PIN(J3),
  796. ASPEED_PINCTRL_PIN(K18),
  797. ASPEED_PINCTRL_PIN(L22),
  798. ASPEED_PINCTRL_PIN(N21),
  799. ASPEED_PINCTRL_PIN(R18),
  800. ASPEED_PINCTRL_PIN(T1),
  801. ASPEED_PINCTRL_PIN(T19),
  802. ASPEED_PINCTRL_PIN(T2),
  803. ASPEED_PINCTRL_PIN(T4),
  804. ASPEED_PINCTRL_PIN(T5),
  805. ASPEED_PINCTRL_PIN(U1),
  806. ASPEED_PINCTRL_PIN(U18),
  807. ASPEED_PINCTRL_PIN(U19),
  808. ASPEED_PINCTRL_PIN(U2),
  809. ASPEED_PINCTRL_PIN(U20),
  810. ASPEED_PINCTRL_PIN(U21),
  811. ASPEED_PINCTRL_PIN(U3),
  812. ASPEED_PINCTRL_PIN(U4),
  813. ASPEED_PINCTRL_PIN(U5),
  814. ASPEED_PINCTRL_PIN(V1),
  815. ASPEED_PINCTRL_PIN(V2),
  816. ASPEED_PINCTRL_PIN(V20),
  817. ASPEED_PINCTRL_PIN(V21),
  818. ASPEED_PINCTRL_PIN(V22),
  819. ASPEED_PINCTRL_PIN(V6),
  820. ASPEED_PINCTRL_PIN(W1),
  821. ASPEED_PINCTRL_PIN(W21),
  822. ASPEED_PINCTRL_PIN(W22),
  823. ASPEED_PINCTRL_PIN(W4),
  824. ASPEED_PINCTRL_PIN(W5),
  825. ASPEED_PINCTRL_PIN(Y22),
  826. ASPEED_PINCTRL_PIN(Y3),
  827. ASPEED_PINCTRL_PIN(Y4),
  828. ASPEED_PINCTRL_PIN(Y5),
  829. ASPEED_PINCTRL_PIN(Y7),
  830. };
  831. static const struct aspeed_pin_group aspeed_g4_groups[] = {
  832. ASPEED_PINCTRL_GROUP(ACPI),
  833. ASPEED_PINCTRL_GROUP(BMCINT),
  834. ASPEED_PINCTRL_GROUP(DDCCLK),
  835. ASPEED_PINCTRL_GROUP(DDCDAT),
  836. ASPEED_PINCTRL_GROUP(FLACK),
  837. ASPEED_PINCTRL_GROUP(FLBUSY),
  838. ASPEED_PINCTRL_GROUP(FLWP),
  839. ASPEED_PINCTRL_GROUP(GPID0),
  840. ASPEED_PINCTRL_GROUP(GPIE0),
  841. ASPEED_PINCTRL_GROUP(GPIE2),
  842. ASPEED_PINCTRL_GROUP(GPIE4),
  843. ASPEED_PINCTRL_GROUP(GPIE6),
  844. ASPEED_PINCTRL_GROUP(I2C10),
  845. ASPEED_PINCTRL_GROUP(I2C11),
  846. ASPEED_PINCTRL_GROUP(I2C12),
  847. ASPEED_PINCTRL_GROUP(I2C13),
  848. ASPEED_PINCTRL_GROUP(I2C3),
  849. ASPEED_PINCTRL_GROUP(I2C4),
  850. ASPEED_PINCTRL_GROUP(I2C5),
  851. ASPEED_PINCTRL_GROUP(I2C6),
  852. ASPEED_PINCTRL_GROUP(I2C7),
  853. ASPEED_PINCTRL_GROUP(I2C8),
  854. ASPEED_PINCTRL_GROUP(I2C9),
  855. ASPEED_PINCTRL_GROUP(LPCPD),
  856. ASPEED_PINCTRL_GROUP(LPCPME),
  857. ASPEED_PINCTRL_GROUP(LPCPME),
  858. ASPEED_PINCTRL_GROUP(LPCSMI),
  859. ASPEED_PINCTRL_GROUP(MDIO1),
  860. ASPEED_PINCTRL_GROUP(MDIO2),
  861. ASPEED_PINCTRL_GROUP(NCTS1),
  862. ASPEED_PINCTRL_GROUP(NCTS3),
  863. ASPEED_PINCTRL_GROUP(NCTS4),
  864. ASPEED_PINCTRL_GROUP(NDCD1),
  865. ASPEED_PINCTRL_GROUP(NDCD3),
  866. ASPEED_PINCTRL_GROUP(NDCD4),
  867. ASPEED_PINCTRL_GROUP(NDSR1),
  868. ASPEED_PINCTRL_GROUP(NDSR3),
  869. ASPEED_PINCTRL_GROUP(NDTR1),
  870. ASPEED_PINCTRL_GROUP(NDTR3),
  871. ASPEED_PINCTRL_GROUP(NRI1),
  872. ASPEED_PINCTRL_GROUP(NRI3),
  873. ASPEED_PINCTRL_GROUP(NRI4),
  874. ASPEED_PINCTRL_GROUP(NRTS1),
  875. ASPEED_PINCTRL_GROUP(NRTS3),
  876. ASPEED_PINCTRL_GROUP(PWM0),
  877. ASPEED_PINCTRL_GROUP(PWM1),
  878. ASPEED_PINCTRL_GROUP(PWM2),
  879. ASPEED_PINCTRL_GROUP(PWM3),
  880. ASPEED_PINCTRL_GROUP(PWM4),
  881. ASPEED_PINCTRL_GROUP(PWM5),
  882. ASPEED_PINCTRL_GROUP(PWM6),
  883. ASPEED_PINCTRL_GROUP(PWM7),
  884. ASPEED_PINCTRL_GROUP(RGMII1),
  885. ASPEED_PINCTRL_GROUP(RMII1),
  886. ASPEED_PINCTRL_GROUP(ROM16),
  887. ASPEED_PINCTRL_GROUP(ROM8),
  888. ASPEED_PINCTRL_GROUP(ROMCS1),
  889. ASPEED_PINCTRL_GROUP(ROMCS2),
  890. ASPEED_PINCTRL_GROUP(ROMCS3),
  891. ASPEED_PINCTRL_GROUP(ROMCS4),
  892. ASPEED_PINCTRL_GROUP(RXD1),
  893. ASPEED_PINCTRL_GROUP(RXD3),
  894. ASPEED_PINCTRL_GROUP(RXD4),
  895. ASPEED_PINCTRL_GROUP(SD1),
  896. ASPEED_PINCTRL_GROUP(SGPMI),
  897. ASPEED_PINCTRL_GROUP(SIOPBI),
  898. ASPEED_PINCTRL_GROUP(SIOPBO),
  899. ASPEED_PINCTRL_GROUP(TIMER3),
  900. ASPEED_PINCTRL_GROUP(TIMER5),
  901. ASPEED_PINCTRL_GROUP(TIMER6),
  902. ASPEED_PINCTRL_GROUP(TIMER7),
  903. ASPEED_PINCTRL_GROUP(TIMER8),
  904. ASPEED_PINCTRL_GROUP(TXD1),
  905. ASPEED_PINCTRL_GROUP(TXD3),
  906. ASPEED_PINCTRL_GROUP(TXD4),
  907. ASPEED_PINCTRL_GROUP(UART6),
  908. ASPEED_PINCTRL_GROUP(VGAHS),
  909. ASPEED_PINCTRL_GROUP(VGAVS),
  910. ASPEED_PINCTRL_GROUP(VPI18),
  911. ASPEED_PINCTRL_GROUP(VPI24),
  912. ASPEED_PINCTRL_GROUP(VPI30),
  913. ASPEED_PINCTRL_GROUP(VPO12),
  914. ASPEED_PINCTRL_GROUP(VPO24),
  915. };
  916. static const struct aspeed_pin_function aspeed_g4_functions[] = {
  917. ASPEED_PINCTRL_FUNC(ACPI),
  918. ASPEED_PINCTRL_FUNC(BMCINT),
  919. ASPEED_PINCTRL_FUNC(DDCCLK),
  920. ASPEED_PINCTRL_FUNC(DDCDAT),
  921. ASPEED_PINCTRL_FUNC(FLACK),
  922. ASPEED_PINCTRL_FUNC(FLBUSY),
  923. ASPEED_PINCTRL_FUNC(FLWP),
  924. ASPEED_PINCTRL_FUNC(GPID0),
  925. ASPEED_PINCTRL_FUNC(GPIE0),
  926. ASPEED_PINCTRL_FUNC(GPIE2),
  927. ASPEED_PINCTRL_FUNC(GPIE4),
  928. ASPEED_PINCTRL_FUNC(GPIE6),
  929. ASPEED_PINCTRL_FUNC(I2C10),
  930. ASPEED_PINCTRL_FUNC(I2C11),
  931. ASPEED_PINCTRL_FUNC(I2C12),
  932. ASPEED_PINCTRL_FUNC(I2C13),
  933. ASPEED_PINCTRL_FUNC(I2C3),
  934. ASPEED_PINCTRL_FUNC(I2C4),
  935. ASPEED_PINCTRL_FUNC(I2C5),
  936. ASPEED_PINCTRL_FUNC(I2C6),
  937. ASPEED_PINCTRL_FUNC(I2C7),
  938. ASPEED_PINCTRL_FUNC(I2C8),
  939. ASPEED_PINCTRL_FUNC(I2C9),
  940. ASPEED_PINCTRL_FUNC(LPCPD),
  941. ASPEED_PINCTRL_FUNC(LPCPME),
  942. ASPEED_PINCTRL_FUNC(LPCSMI),
  943. ASPEED_PINCTRL_FUNC(MDIO1),
  944. ASPEED_PINCTRL_FUNC(MDIO2),
  945. ASPEED_PINCTRL_FUNC(NCTS1),
  946. ASPEED_PINCTRL_FUNC(NCTS3),
  947. ASPEED_PINCTRL_FUNC(NCTS4),
  948. ASPEED_PINCTRL_FUNC(NDCD1),
  949. ASPEED_PINCTRL_FUNC(NDCD3),
  950. ASPEED_PINCTRL_FUNC(NDCD4),
  951. ASPEED_PINCTRL_FUNC(NDSR1),
  952. ASPEED_PINCTRL_FUNC(NDSR3),
  953. ASPEED_PINCTRL_FUNC(NDTR1),
  954. ASPEED_PINCTRL_FUNC(NDTR3),
  955. ASPEED_PINCTRL_FUNC(NRI1),
  956. ASPEED_PINCTRL_FUNC(NRI3),
  957. ASPEED_PINCTRL_FUNC(NRI4),
  958. ASPEED_PINCTRL_FUNC(NRTS1),
  959. ASPEED_PINCTRL_FUNC(NRTS3),
  960. ASPEED_PINCTRL_FUNC(PWM0),
  961. ASPEED_PINCTRL_FUNC(PWM1),
  962. ASPEED_PINCTRL_FUNC(PWM2),
  963. ASPEED_PINCTRL_FUNC(PWM3),
  964. ASPEED_PINCTRL_FUNC(PWM4),
  965. ASPEED_PINCTRL_FUNC(PWM5),
  966. ASPEED_PINCTRL_FUNC(PWM6),
  967. ASPEED_PINCTRL_FUNC(PWM7),
  968. ASPEED_PINCTRL_FUNC(RGMII1),
  969. ASPEED_PINCTRL_FUNC(RMII1),
  970. ASPEED_PINCTRL_FUNC(ROM16),
  971. ASPEED_PINCTRL_FUNC(ROM8),
  972. ASPEED_PINCTRL_FUNC(ROMCS1),
  973. ASPEED_PINCTRL_FUNC(ROMCS2),
  974. ASPEED_PINCTRL_FUNC(ROMCS3),
  975. ASPEED_PINCTRL_FUNC(ROMCS4),
  976. ASPEED_PINCTRL_FUNC(RXD1),
  977. ASPEED_PINCTRL_FUNC(RXD3),
  978. ASPEED_PINCTRL_FUNC(RXD4),
  979. ASPEED_PINCTRL_FUNC(SD1),
  980. ASPEED_PINCTRL_FUNC(SGPMI),
  981. ASPEED_PINCTRL_FUNC(SIOPBI),
  982. ASPEED_PINCTRL_FUNC(SIOPBO),
  983. ASPEED_PINCTRL_FUNC(TIMER3),
  984. ASPEED_PINCTRL_FUNC(TIMER5),
  985. ASPEED_PINCTRL_FUNC(TIMER6),
  986. ASPEED_PINCTRL_FUNC(TIMER7),
  987. ASPEED_PINCTRL_FUNC(TIMER8),
  988. ASPEED_PINCTRL_FUNC(TXD1),
  989. ASPEED_PINCTRL_FUNC(TXD3),
  990. ASPEED_PINCTRL_FUNC(TXD4),
  991. ASPEED_PINCTRL_FUNC(UART6),
  992. ASPEED_PINCTRL_FUNC(VGAHS),
  993. ASPEED_PINCTRL_FUNC(VGAVS),
  994. ASPEED_PINCTRL_FUNC(VPI18),
  995. ASPEED_PINCTRL_FUNC(VPI24),
  996. ASPEED_PINCTRL_FUNC(VPI30),
  997. ASPEED_PINCTRL_FUNC(VPO12),
  998. ASPEED_PINCTRL_FUNC(VPO24),
  999. };
  1000. static struct aspeed_pinctrl_data aspeed_g4_pinctrl_data = {
  1001. .pins = aspeed_g4_pins,
  1002. .npins = ARRAY_SIZE(aspeed_g4_pins),
  1003. .groups = aspeed_g4_groups,
  1004. .ngroups = ARRAY_SIZE(aspeed_g4_groups),
  1005. .functions = aspeed_g4_functions,
  1006. .nfunctions = ARRAY_SIZE(aspeed_g4_functions),
  1007. };
  1008. static struct pinmux_ops aspeed_g4_pinmux_ops = {
  1009. .get_functions_count = aspeed_pinmux_get_fn_count,
  1010. .get_function_name = aspeed_pinmux_get_fn_name,
  1011. .get_function_groups = aspeed_pinmux_get_fn_groups,
  1012. .set_mux = aspeed_pinmux_set_mux,
  1013. .gpio_request_enable = aspeed_gpio_request_enable,
  1014. .strict = true,
  1015. };
  1016. static struct pinctrl_ops aspeed_g4_pinctrl_ops = {
  1017. .get_groups_count = aspeed_pinctrl_get_groups_count,
  1018. .get_group_name = aspeed_pinctrl_get_group_name,
  1019. .get_group_pins = aspeed_pinctrl_get_group_pins,
  1020. .pin_dbg_show = aspeed_pinctrl_pin_dbg_show,
  1021. .dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
  1022. .dt_free_map = pinctrl_utils_free_map,
  1023. };
  1024. static struct pinctrl_desc aspeed_g4_pinctrl_desc = {
  1025. .name = "aspeed-g4-pinctrl",
  1026. .pins = aspeed_g4_pins,
  1027. .npins = ARRAY_SIZE(aspeed_g4_pins),
  1028. .pctlops = &aspeed_g4_pinctrl_ops,
  1029. .pmxops = &aspeed_g4_pinmux_ops,
  1030. };
  1031. static int aspeed_g4_pinctrl_probe(struct platform_device *pdev)
  1032. {
  1033. int i;
  1034. for (i = 0; i < ARRAY_SIZE(aspeed_g4_pins); i++)
  1035. aspeed_g4_pins[i].number = i;
  1036. return aspeed_pinctrl_probe(pdev, &aspeed_g4_pinctrl_desc,
  1037. &aspeed_g4_pinctrl_data);
  1038. }
  1039. static const struct of_device_id aspeed_g4_pinctrl_of_match[] = {
  1040. { .compatible = "aspeed,ast2400-pinctrl", },
  1041. { .compatible = "aspeed,g4-pinctrl", },
  1042. { },
  1043. };
  1044. static struct platform_driver aspeed_g4_pinctrl_driver = {
  1045. .probe = aspeed_g4_pinctrl_probe,
  1046. .driver = {
  1047. .name = "aspeed-g4-pinctrl",
  1048. .of_match_table = aspeed_g4_pinctrl_of_match,
  1049. },
  1050. };
  1051. static int aspeed_g4_pinctrl_init(void)
  1052. {
  1053. return platform_driver_register(&aspeed_g4_pinctrl_driver);
  1054. }
  1055. arch_initcall(aspeed_g4_pinctrl_init);