pinctrl-pic32.c 81 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * PIC32 pinctrl driver
  4. *
  5. * Joshua Henderson, <joshua.henderson@microchip.com>
  6. * Copyright (C) 2015 Microchip Technology Inc. All rights reserved.
  7. */
  8. #include <linux/clk.h>
  9. #include <linux/gpio/driver.h>
  10. #include <linux/interrupt.h>
  11. #include <linux/io.h>
  12. #include <linux/irq.h>
  13. #include <linux/of.h>
  14. #include <linux/of_device.h>
  15. #include <linux/pinctrl/pinconf.h>
  16. #include <linux/pinctrl/pinconf-generic.h>
  17. #include <linux/pinctrl/pinctrl.h>
  18. #include <linux/pinctrl/pinmux.h>
  19. #include <linux/platform_device.h>
  20. #include <linux/slab.h>
  21. #include <linux/spinlock.h>
  22. #include <asm/mach-pic32/pic32.h>
  23. #include "pinctrl-utils.h"
  24. #include "pinctrl-pic32.h"
  25. #define PINS_PER_BANK 16
  26. #define PIC32_CNCON_EDGE 11
  27. #define PIC32_CNCON_ON 15
  28. #define PIN_CONFIG_MICROCHIP_DIGITAL (PIN_CONFIG_END + 1)
  29. #define PIN_CONFIG_MICROCHIP_ANALOG (PIN_CONFIG_END + 2)
  30. static const struct pinconf_generic_params pic32_mpp_bindings[] = {
  31. {"microchip,digital", PIN_CONFIG_MICROCHIP_DIGITAL, 0},
  32. {"microchip,analog", PIN_CONFIG_MICROCHIP_ANALOG, 0},
  33. };
  34. #define GPIO_BANK_START(bank) ((bank) * PINS_PER_BANK)
  35. struct pic32_function {
  36. const char *name;
  37. const char * const *groups;
  38. unsigned int ngroups;
  39. };
  40. struct pic32_pin_group {
  41. const char *name;
  42. unsigned int pin;
  43. struct pic32_desc_function *functions;
  44. };
  45. struct pic32_desc_function {
  46. const char *name;
  47. u32 muxreg;
  48. u32 muxval;
  49. };
  50. struct pic32_gpio_bank {
  51. void __iomem *reg_base;
  52. struct gpio_chip gpio_chip;
  53. struct irq_chip irq_chip;
  54. struct clk *clk;
  55. };
  56. struct pic32_pinctrl {
  57. void __iomem *reg_base;
  58. struct device *dev;
  59. struct pinctrl_dev *pctldev;
  60. const struct pinctrl_pin_desc *pins;
  61. unsigned int npins;
  62. const struct pic32_function *functions;
  63. unsigned int nfunctions;
  64. const struct pic32_pin_group *groups;
  65. unsigned int ngroups;
  66. struct pic32_gpio_bank *gpio_banks;
  67. unsigned int nbanks;
  68. struct clk *clk;
  69. };
  70. static const struct pinctrl_pin_desc pic32_pins[] = {
  71. PINCTRL_PIN(0, "A0"),
  72. PINCTRL_PIN(1, "A1"),
  73. PINCTRL_PIN(2, "A2"),
  74. PINCTRL_PIN(3, "A3"),
  75. PINCTRL_PIN(4, "A4"),
  76. PINCTRL_PIN(5, "A5"),
  77. PINCTRL_PIN(6, "A6"),
  78. PINCTRL_PIN(7, "A7"),
  79. PINCTRL_PIN(8, "A8"),
  80. PINCTRL_PIN(9, "A9"),
  81. PINCTRL_PIN(10, "A10"),
  82. PINCTRL_PIN(11, "A11"),
  83. PINCTRL_PIN(12, "A12"),
  84. PINCTRL_PIN(13, "A13"),
  85. PINCTRL_PIN(14, "A14"),
  86. PINCTRL_PIN(15, "A15"),
  87. PINCTRL_PIN(16, "B0"),
  88. PINCTRL_PIN(17, "B1"),
  89. PINCTRL_PIN(18, "B2"),
  90. PINCTRL_PIN(19, "B3"),
  91. PINCTRL_PIN(20, "B4"),
  92. PINCTRL_PIN(21, "B5"),
  93. PINCTRL_PIN(22, "B6"),
  94. PINCTRL_PIN(23, "B7"),
  95. PINCTRL_PIN(24, "B8"),
  96. PINCTRL_PIN(25, "B9"),
  97. PINCTRL_PIN(26, "B10"),
  98. PINCTRL_PIN(27, "B11"),
  99. PINCTRL_PIN(28, "B12"),
  100. PINCTRL_PIN(29, "B13"),
  101. PINCTRL_PIN(30, "B14"),
  102. PINCTRL_PIN(31, "B15"),
  103. PINCTRL_PIN(33, "C1"),
  104. PINCTRL_PIN(34, "C2"),
  105. PINCTRL_PIN(35, "C3"),
  106. PINCTRL_PIN(36, "C4"),
  107. PINCTRL_PIN(44, "C12"),
  108. PINCTRL_PIN(45, "C13"),
  109. PINCTRL_PIN(46, "C14"),
  110. PINCTRL_PIN(47, "C15"),
  111. PINCTRL_PIN(48, "D0"),
  112. PINCTRL_PIN(49, "D1"),
  113. PINCTRL_PIN(50, "D2"),
  114. PINCTRL_PIN(51, "D3"),
  115. PINCTRL_PIN(52, "D4"),
  116. PINCTRL_PIN(53, "D5"),
  117. PINCTRL_PIN(54, "D6"),
  118. PINCTRL_PIN(55, "D7"),
  119. PINCTRL_PIN(57, "D9"),
  120. PINCTRL_PIN(58, "D10"),
  121. PINCTRL_PIN(59, "D11"),
  122. PINCTRL_PIN(60, "D12"),
  123. PINCTRL_PIN(61, "D13"),
  124. PINCTRL_PIN(62, "D14"),
  125. PINCTRL_PIN(63, "D15"),
  126. PINCTRL_PIN(64, "E0"),
  127. PINCTRL_PIN(65, "E1"),
  128. PINCTRL_PIN(66, "E2"),
  129. PINCTRL_PIN(67, "E3"),
  130. PINCTRL_PIN(68, "E4"),
  131. PINCTRL_PIN(69, "E5"),
  132. PINCTRL_PIN(70, "E6"),
  133. PINCTRL_PIN(71, "E7"),
  134. PINCTRL_PIN(72, "E8"),
  135. PINCTRL_PIN(73, "E9"),
  136. PINCTRL_PIN(80, "F0"),
  137. PINCTRL_PIN(81, "F1"),
  138. PINCTRL_PIN(82, "F2"),
  139. PINCTRL_PIN(83, "F3"),
  140. PINCTRL_PIN(84, "F4"),
  141. PINCTRL_PIN(85, "F5"),
  142. PINCTRL_PIN(88, "F8"),
  143. PINCTRL_PIN(92, "F12"),
  144. PINCTRL_PIN(93, "F13"),
  145. PINCTRL_PIN(96, "G0"),
  146. PINCTRL_PIN(97, "G1"),
  147. PINCTRL_PIN(102, "G6"),
  148. PINCTRL_PIN(103, "G7"),
  149. PINCTRL_PIN(104, "G8"),
  150. PINCTRL_PIN(105, "G9"),
  151. PINCTRL_PIN(108, "G12"),
  152. PINCTRL_PIN(109, "G13"),
  153. PINCTRL_PIN(110, "G14"),
  154. PINCTRL_PIN(111, "G15"),
  155. PINCTRL_PIN(112, "H0"),
  156. PINCTRL_PIN(113, "H1"),
  157. PINCTRL_PIN(114, "H2"),
  158. PINCTRL_PIN(115, "H3"),
  159. PINCTRL_PIN(116, "H4"),
  160. PINCTRL_PIN(117, "H5"),
  161. PINCTRL_PIN(118, "H6"),
  162. PINCTRL_PIN(119, "H7"),
  163. PINCTRL_PIN(120, "H8"),
  164. PINCTRL_PIN(121, "H9"),
  165. PINCTRL_PIN(122, "H10"),
  166. PINCTRL_PIN(123, "H11"),
  167. PINCTRL_PIN(124, "H12"),
  168. PINCTRL_PIN(125, "H13"),
  169. PINCTRL_PIN(126, "H14"),
  170. PINCTRL_PIN(127, "H15"),
  171. PINCTRL_PIN(128, "J0"),
  172. PINCTRL_PIN(129, "J1"),
  173. PINCTRL_PIN(130, "J2"),
  174. PINCTRL_PIN(131, "J3"),
  175. PINCTRL_PIN(132, "J4"),
  176. PINCTRL_PIN(133, "J5"),
  177. PINCTRL_PIN(134, "J6"),
  178. PINCTRL_PIN(135, "J7"),
  179. PINCTRL_PIN(136, "J8"),
  180. PINCTRL_PIN(137, "J9"),
  181. PINCTRL_PIN(138, "J10"),
  182. PINCTRL_PIN(139, "J11"),
  183. PINCTRL_PIN(140, "J12"),
  184. PINCTRL_PIN(141, "J13"),
  185. PINCTRL_PIN(142, "J14"),
  186. PINCTRL_PIN(143, "J15"),
  187. PINCTRL_PIN(144, "K0"),
  188. PINCTRL_PIN(145, "K1"),
  189. PINCTRL_PIN(146, "K2"),
  190. PINCTRL_PIN(147, "K3"),
  191. PINCTRL_PIN(148, "K4"),
  192. PINCTRL_PIN(149, "K5"),
  193. PINCTRL_PIN(150, "K6"),
  194. PINCTRL_PIN(151, "K7"),
  195. };
  196. static const char * const pic32_input0_group[] = {
  197. "D2", "G8", "F4", "F1", "B9", "B10", "C14", "B5",
  198. "C1", "D14", "G1", "A14", "D6",
  199. };
  200. static const char * const pic32_input1_group[] = {
  201. "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
  202. "B3", "C4", "G0", "A15", "D7",
  203. };
  204. static const char * const pic32_input2_group[] = {
  205. "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
  206. "F12", "D12", "F8", "C3", "E9",
  207. };
  208. static const char * const pic32_input3_group[] = {
  209. "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
  210. "F2", "C2", "E8",
  211. };
  212. static const char * const pic32_output0_group[] = {
  213. "D2", "G8", "F4", "D10", "F1", "B9", "B10", "C14",
  214. "B5", "C1", "D14", "G1", "A14", "D6",
  215. };
  216. static const char * const pic32_output0_1_group[] = {
  217. "D2", "G8", "F4", "D10", "F1", "B9", "B10", "C14",
  218. "B5", "C1", "D14", "G1", "A14", "D6",
  219. "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
  220. "B3", "C4", "D15", "G0", "A15", "D7",
  221. };
  222. static const char *const pic32_output1_group[] = {
  223. "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
  224. "B3", "C4", "D15", "G0", "A15", "D7",
  225. };
  226. static const char *const pic32_output1_3_group[] = {
  227. "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
  228. "B3", "C4", "D15", "G0", "A15", "D7",
  229. "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
  230. "C2", "E8", "F2",
  231. };
  232. static const char * const pic32_output2_group[] = {
  233. "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
  234. "F12", "D12", "F8", "C3", "E9",
  235. };
  236. static const char * const pic32_output2_3_group[] = {
  237. "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
  238. "F12", "D12", "F8", "C3", "E9",
  239. "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
  240. "C2", "E8", "F2",
  241. };
  242. static const char * const pic32_output3_group[] = {
  243. "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
  244. "C2", "E8", "F2",
  245. };
  246. #define FUNCTION(_name, _gr) \
  247. { \
  248. .name = #_name, \
  249. .groups = pic32_##_gr##_group, \
  250. .ngroups = ARRAY_SIZE(pic32_##_gr##_group), \
  251. }
  252. static const struct pic32_function pic32_functions[] = {
  253. FUNCTION(INT3, input0),
  254. FUNCTION(T2CK, input0),
  255. FUNCTION(T6CK, input0),
  256. FUNCTION(IC3, input0),
  257. FUNCTION(IC7, input0),
  258. FUNCTION(U1RX, input0),
  259. FUNCTION(U2CTS, input0),
  260. FUNCTION(U5RX, input0),
  261. FUNCTION(U6CTS, input0),
  262. FUNCTION(SDI1, input0),
  263. FUNCTION(SDI3, input0),
  264. FUNCTION(SDI5, input0),
  265. FUNCTION(SS6IN, input0),
  266. FUNCTION(REFCLKI1, input0),
  267. FUNCTION(INT4, input1),
  268. FUNCTION(T5CK, input1),
  269. FUNCTION(T7CK, input1),
  270. FUNCTION(IC4, input1),
  271. FUNCTION(IC8, input1),
  272. FUNCTION(U3RX, input1),
  273. FUNCTION(U4CTS, input1),
  274. FUNCTION(SDI2, input1),
  275. FUNCTION(SDI4, input1),
  276. FUNCTION(C1RX, input1),
  277. FUNCTION(REFCLKI4, input1),
  278. FUNCTION(INT2, input2),
  279. FUNCTION(T3CK, input2),
  280. FUNCTION(T8CK, input2),
  281. FUNCTION(IC2, input2),
  282. FUNCTION(IC5, input2),
  283. FUNCTION(IC9, input2),
  284. FUNCTION(U1CTS, input2),
  285. FUNCTION(U2RX, input2),
  286. FUNCTION(U5CTS, input2),
  287. FUNCTION(SS1IN, input2),
  288. FUNCTION(SS3IN, input2),
  289. FUNCTION(SS4IN, input2),
  290. FUNCTION(SS5IN, input2),
  291. FUNCTION(C2RX, input2),
  292. FUNCTION(INT1, input3),
  293. FUNCTION(T4CK, input3),
  294. FUNCTION(T9CK, input3),
  295. FUNCTION(IC1, input3),
  296. FUNCTION(IC6, input3),
  297. FUNCTION(U3CTS, input3),
  298. FUNCTION(U4RX, input3),
  299. FUNCTION(U6RX, input3),
  300. FUNCTION(SS2IN, input3),
  301. FUNCTION(SDI6, input3),
  302. FUNCTION(OCFA, input3),
  303. FUNCTION(REFCLKI3, input3),
  304. FUNCTION(U3TX, output0),
  305. FUNCTION(U4RTS, output0),
  306. FUNCTION(SDO1, output0_1),
  307. FUNCTION(SDO2, output0_1),
  308. FUNCTION(SDO3, output0_1),
  309. FUNCTION(SDO5, output0_1),
  310. FUNCTION(SS6OUT, output0),
  311. FUNCTION(OC3, output0),
  312. FUNCTION(OC6, output0),
  313. FUNCTION(REFCLKO4, output0),
  314. FUNCTION(C2OUT, output0),
  315. FUNCTION(C1TX, output0),
  316. FUNCTION(U1TX, output1),
  317. FUNCTION(U2RTS, output1),
  318. FUNCTION(U5TX, output1),
  319. FUNCTION(U6RTS, output1),
  320. FUNCTION(SDO4, output1_3),
  321. FUNCTION(OC4, output1),
  322. FUNCTION(OC7, output1),
  323. FUNCTION(REFCLKO1, output1),
  324. FUNCTION(U3RTS, output2),
  325. FUNCTION(U4TX, output2),
  326. FUNCTION(U6TX, output2_3),
  327. FUNCTION(SS1OUT, output2),
  328. FUNCTION(SS3OUT, output2),
  329. FUNCTION(SS4OUT, output2),
  330. FUNCTION(SS5OUT, output2),
  331. FUNCTION(SDO6, output2_3),
  332. FUNCTION(OC5, output2),
  333. FUNCTION(OC8, output2),
  334. FUNCTION(C1OUT, output2),
  335. FUNCTION(REFCLKO3, output2),
  336. FUNCTION(U1RTS, output3),
  337. FUNCTION(U2TX, output3),
  338. FUNCTION(U5RTS, output3),
  339. FUNCTION(SS2OUT, output3),
  340. FUNCTION(OC2, output3),
  341. FUNCTION(OC1, output3),
  342. FUNCTION(OC9, output3),
  343. FUNCTION(C2TX, output3),
  344. };
  345. #define PIC32_PINCTRL_GROUP(_pin, _name, ...) \
  346. { \
  347. .name = #_name, \
  348. .pin = _pin, \
  349. .functions = (struct pic32_desc_function[]){ \
  350. __VA_ARGS__, { } }, \
  351. }
  352. #define PIC32_PINCTRL_FUNCTION(_name, _muxreg, _muxval) \
  353. { \
  354. .name = #_name, \
  355. .muxreg = _muxreg, \
  356. .muxval = _muxval, \
  357. }
  358. static const struct pic32_pin_group pic32_groups[] = {
  359. PIC32_PINCTRL_GROUP(14, A14,
  360. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 13),
  361. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 13),
  362. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 13),
  363. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 13),
  364. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 13),
  365. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 13),
  366. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 13),
  367. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 13),
  368. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 13),
  369. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 13),
  370. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 13),
  371. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 13),
  372. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 13),
  373. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 13),
  374. PIC32_PINCTRL_FUNCTION(U3TX, RPA14R, 1),
  375. PIC32_PINCTRL_FUNCTION(U4RTS, RPA14R, 2),
  376. PIC32_PINCTRL_FUNCTION(SDO1, RPA14R, 5),
  377. PIC32_PINCTRL_FUNCTION(SDO2, RPA14R, 6),
  378. PIC32_PINCTRL_FUNCTION(SDO3, RPA14R, 7),
  379. PIC32_PINCTRL_FUNCTION(SDO5, RPA14R, 9),
  380. PIC32_PINCTRL_FUNCTION(SS6OUT, RPA14R, 10),
  381. PIC32_PINCTRL_FUNCTION(OC3, RPA14R, 11),
  382. PIC32_PINCTRL_FUNCTION(OC6, RPA14R, 12),
  383. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPA14R, 13),
  384. PIC32_PINCTRL_FUNCTION(C2OUT, RPA14R, 14),
  385. PIC32_PINCTRL_FUNCTION(C1TX, RPA14R, 15)),
  386. PIC32_PINCTRL_GROUP(15, A15,
  387. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 13),
  388. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 13),
  389. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 13),
  390. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 13),
  391. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 13),
  392. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 13),
  393. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 13),
  394. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 13),
  395. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 13),
  396. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 13),
  397. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 13),
  398. PIC32_PINCTRL_FUNCTION(U1TX, RPA15R, 1),
  399. PIC32_PINCTRL_FUNCTION(U2RTS, RPA15R, 2),
  400. PIC32_PINCTRL_FUNCTION(U5TX, RPA15R, 3),
  401. PIC32_PINCTRL_FUNCTION(U6RTS, RPA15R, 4),
  402. PIC32_PINCTRL_FUNCTION(SDO1, RPA15R, 5),
  403. PIC32_PINCTRL_FUNCTION(SDO2, RPA15R, 6),
  404. PIC32_PINCTRL_FUNCTION(SDO3, RPA15R, 7),
  405. PIC32_PINCTRL_FUNCTION(SDO4, RPA15R, 8),
  406. PIC32_PINCTRL_FUNCTION(SDO5, RPA15R, 9),
  407. PIC32_PINCTRL_FUNCTION(OC4, RPA15R, 11),
  408. PIC32_PINCTRL_FUNCTION(OC7, RPA15R, 12),
  409. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPA15R, 15)),
  410. PIC32_PINCTRL_GROUP(16, B0,
  411. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 5),
  412. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 5),
  413. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 5),
  414. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 5),
  415. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 5),
  416. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 5),
  417. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 5),
  418. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 5),
  419. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 5),
  420. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 5),
  421. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 5),
  422. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 5),
  423. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 5),
  424. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 5),
  425. PIC32_PINCTRL_FUNCTION(U3RTS, RPB0R, 1),
  426. PIC32_PINCTRL_FUNCTION(U4TX, RPB0R, 2),
  427. PIC32_PINCTRL_FUNCTION(U6TX, RPB0R, 4),
  428. PIC32_PINCTRL_FUNCTION(SS1OUT, RPB0R, 5),
  429. PIC32_PINCTRL_FUNCTION(SS3OUT, RPB0R, 7),
  430. PIC32_PINCTRL_FUNCTION(SS4OUT, RPB0R, 8),
  431. PIC32_PINCTRL_FUNCTION(SS5OUT, RPB0R, 9),
  432. PIC32_PINCTRL_FUNCTION(SDO6, RPB0R, 10),
  433. PIC32_PINCTRL_FUNCTION(OC5, RPB0R, 11),
  434. PIC32_PINCTRL_FUNCTION(OC8, RPB0R, 12),
  435. PIC32_PINCTRL_FUNCTION(C1OUT, RPB0R, 14),
  436. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB0R, 15)),
  437. PIC32_PINCTRL_GROUP(17, B1,
  438. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 5),
  439. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 5),
  440. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 5),
  441. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 5),
  442. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 5),
  443. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 5),
  444. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 5),
  445. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 5),
  446. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 5),
  447. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 5),
  448. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 5),
  449. PIC32_PINCTRL_FUNCTION(U1TX, RPB1R, 1),
  450. PIC32_PINCTRL_FUNCTION(U2RTS, RPB1R, 2),
  451. PIC32_PINCTRL_FUNCTION(U5TX, RPB1R, 3),
  452. PIC32_PINCTRL_FUNCTION(U6RTS, RPB1R, 4),
  453. PIC32_PINCTRL_FUNCTION(SDO1, RPB1R, 5),
  454. PIC32_PINCTRL_FUNCTION(SDO2, RPB1R, 6),
  455. PIC32_PINCTRL_FUNCTION(SDO3, RPB1R, 7),
  456. PIC32_PINCTRL_FUNCTION(SDO4, RPB1R, 8),
  457. PIC32_PINCTRL_FUNCTION(SDO5, RPB1R, 9),
  458. PIC32_PINCTRL_FUNCTION(OC4, RPB1R, 11),
  459. PIC32_PINCTRL_FUNCTION(OC7, RPB1R, 12),
  460. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPB1R, 15)),
  461. PIC32_PINCTRL_GROUP(18, B2,
  462. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 7),
  463. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 7),
  464. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 7),
  465. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 7),
  466. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 7),
  467. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 7),
  468. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 7),
  469. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 7),
  470. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 7),
  471. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 7),
  472. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 7),
  473. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 7),
  474. PIC32_PINCTRL_FUNCTION(U1RTS, RPB2R, 1),
  475. PIC32_PINCTRL_FUNCTION(U2TX, RPB2R, 2),
  476. PIC32_PINCTRL_FUNCTION(U5RTS, RPB2R, 3),
  477. PIC32_PINCTRL_FUNCTION(U6TX, RPB2R, 4),
  478. PIC32_PINCTRL_FUNCTION(SS2OUT, RPB2R, 6),
  479. PIC32_PINCTRL_FUNCTION(SDO4, RPB2R, 8),
  480. PIC32_PINCTRL_FUNCTION(SDO6, RPB2R, 10),
  481. PIC32_PINCTRL_FUNCTION(OC2, RPB2R, 11),
  482. PIC32_PINCTRL_FUNCTION(OC1, RPB2R, 12),
  483. PIC32_PINCTRL_FUNCTION(OC9, RPB2R, 13),
  484. PIC32_PINCTRL_FUNCTION(C2TX, RPB2R, 15)),
  485. PIC32_PINCTRL_GROUP(19, B3,
  486. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 8),
  487. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 8),
  488. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 8),
  489. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 8),
  490. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 8),
  491. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 8),
  492. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 8),
  493. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 8),
  494. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 8),
  495. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 8),
  496. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 8),
  497. PIC32_PINCTRL_FUNCTION(U1TX, RPB3R, 1),
  498. PIC32_PINCTRL_FUNCTION(U2RTS, RPB3R, 2),
  499. PIC32_PINCTRL_FUNCTION(U5TX, RPB3R, 3),
  500. PIC32_PINCTRL_FUNCTION(U6RTS, RPB3R, 4),
  501. PIC32_PINCTRL_FUNCTION(SDO1, RPB3R, 5),
  502. PIC32_PINCTRL_FUNCTION(SDO2, RPB3R, 6),
  503. PIC32_PINCTRL_FUNCTION(SDO3, RPB3R, 7),
  504. PIC32_PINCTRL_FUNCTION(SDO4, RPB3R, 8),
  505. PIC32_PINCTRL_FUNCTION(SDO5, RPB3R, 9),
  506. PIC32_PINCTRL_FUNCTION(OC4, RPB3R, 11),
  507. PIC32_PINCTRL_FUNCTION(OC7, RPB3R, 12),
  508. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPB3R, 15)),
  509. PIC32_PINCTRL_GROUP(21, B5,
  510. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 8),
  511. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 8),
  512. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 8),
  513. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 8),
  514. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 8),
  515. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 8),
  516. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 8),
  517. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 8),
  518. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 8),
  519. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 8),
  520. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 8),
  521. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 8),
  522. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 8),
  523. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 8),
  524. PIC32_PINCTRL_FUNCTION(U3TX, RPB5R, 1),
  525. PIC32_PINCTRL_FUNCTION(U4RTS, RPB5R, 2),
  526. PIC32_PINCTRL_FUNCTION(SDO1, RPB5R, 5),
  527. PIC32_PINCTRL_FUNCTION(SDO2, RPB5R, 6),
  528. PIC32_PINCTRL_FUNCTION(SDO3, RPB5R, 7),
  529. PIC32_PINCTRL_FUNCTION(SDO5, RPB5R, 9),
  530. PIC32_PINCTRL_FUNCTION(SS6OUT, RPB5R, 10),
  531. PIC32_PINCTRL_FUNCTION(OC3, RPB5R, 11),
  532. PIC32_PINCTRL_FUNCTION(OC6, RPB5R, 12),
  533. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB5R, 13),
  534. PIC32_PINCTRL_FUNCTION(C2OUT, RPB5R, 14),
  535. PIC32_PINCTRL_FUNCTION(C1TX, RPB5R, 15)),
  536. PIC32_PINCTRL_GROUP(22, B6,
  537. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 4),
  538. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 4),
  539. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 4),
  540. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 4),
  541. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 4),
  542. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 4),
  543. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 4),
  544. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 4),
  545. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 4),
  546. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 4),
  547. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 4),
  548. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 4),
  549. PIC32_PINCTRL_FUNCTION(U1RTS, RPB6R, 1),
  550. PIC32_PINCTRL_FUNCTION(U2TX, RPB6R, 2),
  551. PIC32_PINCTRL_FUNCTION(U5RTS, RPB6R, 3),
  552. PIC32_PINCTRL_FUNCTION(U6TX, RPB6R, 4),
  553. PIC32_PINCTRL_FUNCTION(SS2OUT, RPB6R, 6),
  554. PIC32_PINCTRL_FUNCTION(SDO4, RPB6R, 8),
  555. PIC32_PINCTRL_FUNCTION(SDO6, RPB6R, 10),
  556. PIC32_PINCTRL_FUNCTION(OC2, RPB6R, 11),
  557. PIC32_PINCTRL_FUNCTION(OC1, RPB6R, 12),
  558. PIC32_PINCTRL_FUNCTION(OC9, RPB6R, 13),
  559. PIC32_PINCTRL_FUNCTION(C2TX, RPB6R, 15)),
  560. PIC32_PINCTRL_GROUP(23, B7,
  561. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 7),
  562. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 7),
  563. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 7),
  564. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 7),
  565. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 7),
  566. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 7),
  567. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 7),
  568. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 7),
  569. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 7),
  570. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 7),
  571. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 7),
  572. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 7),
  573. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 7),
  574. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 7),
  575. PIC32_PINCTRL_FUNCTION(U3RTS, RPB7R, 1),
  576. PIC32_PINCTRL_FUNCTION(U4TX, RPB7R, 2),
  577. PIC32_PINCTRL_FUNCTION(U6TX, RPB7R, 4),
  578. PIC32_PINCTRL_FUNCTION(SS1OUT, RPB7R, 5),
  579. PIC32_PINCTRL_FUNCTION(SS3OUT, RPB7R, 7),
  580. PIC32_PINCTRL_FUNCTION(SS4OUT, RPB7R, 8),
  581. PIC32_PINCTRL_FUNCTION(SS5OUT, RPB7R, 9),
  582. PIC32_PINCTRL_FUNCTION(SDO6, RPB7R, 10),
  583. PIC32_PINCTRL_FUNCTION(OC5, RPB7R, 11),
  584. PIC32_PINCTRL_FUNCTION(OC8, RPB7R, 12),
  585. PIC32_PINCTRL_FUNCTION(C1OUT, RPB7R, 14),
  586. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB7R, 15)),
  587. PIC32_PINCTRL_GROUP(24, B8,
  588. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 2),
  589. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 2),
  590. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 2),
  591. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 2),
  592. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 2),
  593. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 2),
  594. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 2),
  595. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 2),
  596. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 2),
  597. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 2),
  598. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 2),
  599. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 2),
  600. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 2),
  601. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 2),
  602. PIC32_PINCTRL_FUNCTION(U3RTS, RPB8R, 1),
  603. PIC32_PINCTRL_FUNCTION(U4TX, RPB8R, 2),
  604. PIC32_PINCTRL_FUNCTION(U6TX, RPB8R, 4),
  605. PIC32_PINCTRL_FUNCTION(SS1OUT, RPB8R, 5),
  606. PIC32_PINCTRL_FUNCTION(SS3OUT, RPB8R, 7),
  607. PIC32_PINCTRL_FUNCTION(SS4OUT, RPB8R, 8),
  608. PIC32_PINCTRL_FUNCTION(SS5OUT, RPB8R, 9),
  609. PIC32_PINCTRL_FUNCTION(SDO6, RPB8R, 10),
  610. PIC32_PINCTRL_FUNCTION(OC5, RPB8R, 11),
  611. PIC32_PINCTRL_FUNCTION(OC8, RPB8R, 12),
  612. PIC32_PINCTRL_FUNCTION(C1OUT, RPB8R, 14),
  613. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB8R, 15)),
  614. PIC32_PINCTRL_GROUP(25, B9,
  615. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 5),
  616. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 5),
  617. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 5),
  618. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 5),
  619. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 5),
  620. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 5),
  621. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 5),
  622. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 5),
  623. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 5),
  624. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 5),
  625. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 5),
  626. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 5),
  627. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 5),
  628. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 5),
  629. PIC32_PINCTRL_FUNCTION(U3TX, RPB9R, 1),
  630. PIC32_PINCTRL_FUNCTION(U4RTS, RPB9R, 2),
  631. PIC32_PINCTRL_FUNCTION(SDO1, RPB9R, 5),
  632. PIC32_PINCTRL_FUNCTION(SDO2, RPB9R, 6),
  633. PIC32_PINCTRL_FUNCTION(SDO3, RPB9R, 7),
  634. PIC32_PINCTRL_FUNCTION(SDO5, RPB9R, 9),
  635. PIC32_PINCTRL_FUNCTION(SS6OUT, RPB9R, 10),
  636. PIC32_PINCTRL_FUNCTION(OC3, RPB9R, 11),
  637. PIC32_PINCTRL_FUNCTION(OC6, RPB9R, 12),
  638. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB9R, 13),
  639. PIC32_PINCTRL_FUNCTION(C2OUT, RPB9R, 14),
  640. PIC32_PINCTRL_FUNCTION(C1TX, RPB9R, 15)),
  641. PIC32_PINCTRL_GROUP(26, B10,
  642. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 6),
  643. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 6),
  644. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 6),
  645. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 6),
  646. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 6),
  647. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 6),
  648. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 6),
  649. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 6),
  650. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 6),
  651. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 6),
  652. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 6),
  653. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 6),
  654. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 6),
  655. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 6),
  656. PIC32_PINCTRL_FUNCTION(U3TX, RPB10R, 1),
  657. PIC32_PINCTRL_FUNCTION(U4RTS, RPB10R, 2),
  658. PIC32_PINCTRL_FUNCTION(SDO1, RPB10R, 5),
  659. PIC32_PINCTRL_FUNCTION(SDO2, RPB10R, 6),
  660. PIC32_PINCTRL_FUNCTION(SDO3, RPB10R, 7),
  661. PIC32_PINCTRL_FUNCTION(SDO5, RPB10R, 9),
  662. PIC32_PINCTRL_FUNCTION(SS6OUT, RPB10R, 10),
  663. PIC32_PINCTRL_FUNCTION(OC3, RPB10R, 11),
  664. PIC32_PINCTRL_FUNCTION(OC6, RPB10R, 12),
  665. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB10R, 13),
  666. PIC32_PINCTRL_FUNCTION(C2OUT, RPB10R, 14),
  667. PIC32_PINCTRL_FUNCTION(C1TX, RPB10R, 15)),
  668. PIC32_PINCTRL_GROUP(30, B14,
  669. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 2),
  670. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 2),
  671. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 2),
  672. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 2),
  673. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 2),
  674. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 2),
  675. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 2),
  676. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 2),
  677. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 2),
  678. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 2),
  679. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 2),
  680. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 2),
  681. PIC32_PINCTRL_FUNCTION(U1RTS, RPB14R, 1),
  682. PIC32_PINCTRL_FUNCTION(U2TX, RPB14R, 2),
  683. PIC32_PINCTRL_FUNCTION(U5RTS, RPB14R, 3),
  684. PIC32_PINCTRL_FUNCTION(U6TX, RPB14R, 4),
  685. PIC32_PINCTRL_FUNCTION(SS2OUT, RPB14R, 6),
  686. PIC32_PINCTRL_FUNCTION(SDO4, RPB14R, 8),
  687. PIC32_PINCTRL_FUNCTION(SDO6, RPB14R, 10),
  688. PIC32_PINCTRL_FUNCTION(OC2, RPB14R, 11),
  689. PIC32_PINCTRL_FUNCTION(OC1, RPB14R, 12),
  690. PIC32_PINCTRL_FUNCTION(OC9, RPB14R, 13),
  691. PIC32_PINCTRL_FUNCTION(C2TX, RPB14R, 15)),
  692. PIC32_PINCTRL_GROUP(31, B15,
  693. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 3),
  694. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 3),
  695. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 3),
  696. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 3),
  697. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 3),
  698. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 3),
  699. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 3),
  700. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 3),
  701. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 3),
  702. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 3),
  703. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 3),
  704. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 3),
  705. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 3),
  706. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 3),
  707. PIC32_PINCTRL_FUNCTION(U3RTS, RPB15R, 1),
  708. PIC32_PINCTRL_FUNCTION(U4TX, RPB15R, 2),
  709. PIC32_PINCTRL_FUNCTION(U6TX, RPB15R, 4),
  710. PIC32_PINCTRL_FUNCTION(SS1OUT, RPB15R, 5),
  711. PIC32_PINCTRL_FUNCTION(SS3OUT, RPB15R, 7),
  712. PIC32_PINCTRL_FUNCTION(SS4OUT, RPB15R, 8),
  713. PIC32_PINCTRL_FUNCTION(SS5OUT, RPB15R, 9),
  714. PIC32_PINCTRL_FUNCTION(SDO6, RPB15R, 10),
  715. PIC32_PINCTRL_FUNCTION(OC5, RPB15R, 11),
  716. PIC32_PINCTRL_FUNCTION(OC8, RPB15R, 12),
  717. PIC32_PINCTRL_FUNCTION(C1OUT, RPB15R, 14),
  718. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB15R, 15)),
  719. PIC32_PINCTRL_GROUP(33, C1,
  720. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 10),
  721. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 10),
  722. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 10),
  723. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 10),
  724. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 10),
  725. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 10),
  726. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 10),
  727. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 10),
  728. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 10),
  729. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 10),
  730. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 10),
  731. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 10),
  732. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 10),
  733. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 10),
  734. PIC32_PINCTRL_FUNCTION(U3TX, RPC1R, 1),
  735. PIC32_PINCTRL_FUNCTION(U4RTS, RPC1R, 2),
  736. PIC32_PINCTRL_FUNCTION(SDO1, RPC1R, 5),
  737. PIC32_PINCTRL_FUNCTION(SDO2, RPC1R, 6),
  738. PIC32_PINCTRL_FUNCTION(SDO3, RPC1R, 7),
  739. PIC32_PINCTRL_FUNCTION(SDO5, RPC1R, 9),
  740. PIC32_PINCTRL_FUNCTION(SS6OUT, RPC1R, 10),
  741. PIC32_PINCTRL_FUNCTION(OC3, RPC1R, 11),
  742. PIC32_PINCTRL_FUNCTION(OC6, RPC1R, 12),
  743. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPC1R, 13),
  744. PIC32_PINCTRL_FUNCTION(C2OUT, RPC1R, 14),
  745. PIC32_PINCTRL_FUNCTION(C1TX, RPC1R, 15)),
  746. PIC32_PINCTRL_GROUP(34, C2,
  747. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 12),
  748. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 12),
  749. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 12),
  750. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 12),
  751. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 12),
  752. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 12),
  753. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 12),
  754. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 12),
  755. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 12),
  756. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 12),
  757. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 12),
  758. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 12),
  759. PIC32_PINCTRL_FUNCTION(U1RTS, RPC2R, 1),
  760. PIC32_PINCTRL_FUNCTION(U2TX, RPC2R, 2),
  761. PIC32_PINCTRL_FUNCTION(U5RTS, RPC2R, 3),
  762. PIC32_PINCTRL_FUNCTION(U6TX, RPC2R, 4),
  763. PIC32_PINCTRL_FUNCTION(SS2OUT, RPC2R, 6),
  764. PIC32_PINCTRL_FUNCTION(SDO4, RPC2R, 8),
  765. PIC32_PINCTRL_FUNCTION(SDO6, RPC2R, 10),
  766. PIC32_PINCTRL_FUNCTION(OC2, RPC2R, 11),
  767. PIC32_PINCTRL_FUNCTION(OC1, RPC2R, 12),
  768. PIC32_PINCTRL_FUNCTION(OC9, RPC2R, 13),
  769. PIC32_PINCTRL_FUNCTION(C2TX, RPC2R, 15)),
  770. PIC32_PINCTRL_GROUP(35, C3,
  771. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 12),
  772. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 12),
  773. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 12),
  774. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 12),
  775. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 12),
  776. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 12),
  777. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 12),
  778. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 12),
  779. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 12),
  780. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 12),
  781. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 12),
  782. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 12),
  783. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 12),
  784. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 12),
  785. PIC32_PINCTRL_FUNCTION(U3RTS, RPC3R, 1),
  786. PIC32_PINCTRL_FUNCTION(U4TX, RPC3R, 2),
  787. PIC32_PINCTRL_FUNCTION(U6TX, RPC3R, 4),
  788. PIC32_PINCTRL_FUNCTION(SS1OUT, RPC3R, 5),
  789. PIC32_PINCTRL_FUNCTION(SS3OUT, RPC3R, 7),
  790. PIC32_PINCTRL_FUNCTION(SS4OUT, RPC3R, 8),
  791. PIC32_PINCTRL_FUNCTION(SS5OUT, RPC3R, 9),
  792. PIC32_PINCTRL_FUNCTION(SDO6, RPC3R, 10),
  793. PIC32_PINCTRL_FUNCTION(OC5, RPC3R, 11),
  794. PIC32_PINCTRL_FUNCTION(OC8, RPC3R, 12),
  795. PIC32_PINCTRL_FUNCTION(C1OUT, RPC3R, 14),
  796. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPC3R, 15)),
  797. PIC32_PINCTRL_GROUP(36, C4,
  798. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 10),
  799. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 10),
  800. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 10),
  801. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 10),
  802. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 10),
  803. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 10),
  804. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 10),
  805. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 10),
  806. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 10),
  807. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 10),
  808. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 10),
  809. PIC32_PINCTRL_FUNCTION(U1TX, RPC4R, 1),
  810. PIC32_PINCTRL_FUNCTION(U2RTS, RPC4R, 2),
  811. PIC32_PINCTRL_FUNCTION(U5TX, RPC4R, 3),
  812. PIC32_PINCTRL_FUNCTION(U6RTS, RPC4R, 4),
  813. PIC32_PINCTRL_FUNCTION(SDO1, RPC4R, 5),
  814. PIC32_PINCTRL_FUNCTION(SDO2, RPC4R, 6),
  815. PIC32_PINCTRL_FUNCTION(SDO3, RPC4R, 7),
  816. PIC32_PINCTRL_FUNCTION(SDO4, RPC4R, 8),
  817. PIC32_PINCTRL_FUNCTION(SDO5, RPC4R, 9),
  818. PIC32_PINCTRL_FUNCTION(OC4, RPC4R, 11),
  819. PIC32_PINCTRL_FUNCTION(OC7, RPC4R, 12),
  820. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPC4R, 15)),
  821. PIC32_PINCTRL_GROUP(45, C13,
  822. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 7),
  823. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 7),
  824. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 7),
  825. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 7),
  826. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 7),
  827. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 7),
  828. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 7),
  829. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 7),
  830. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 7),
  831. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 7),
  832. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 7),
  833. PIC32_PINCTRL_FUNCTION(U1TX, RPC13R, 1),
  834. PIC32_PINCTRL_FUNCTION(U2RTS, RPC13R, 2),
  835. PIC32_PINCTRL_FUNCTION(U5TX, RPC13R, 3),
  836. PIC32_PINCTRL_FUNCTION(U6RTS, RPC13R, 4),
  837. PIC32_PINCTRL_FUNCTION(SDO1, RPC13R, 5),
  838. PIC32_PINCTRL_FUNCTION(SDO2, RPC13R, 6),
  839. PIC32_PINCTRL_FUNCTION(SDO3, RPC13R, 7),
  840. PIC32_PINCTRL_FUNCTION(SDO4, RPC13R, 8),
  841. PIC32_PINCTRL_FUNCTION(SDO5, RPC13R, 9),
  842. PIC32_PINCTRL_FUNCTION(OC4, RPC13R, 11),
  843. PIC32_PINCTRL_FUNCTION(OC7, RPC13R, 12),
  844. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPC13R, 15)),
  845. PIC32_PINCTRL_GROUP(46, C14,
  846. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 7),
  847. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 7),
  848. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 7),
  849. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 7),
  850. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 7),
  851. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 7),
  852. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 7),
  853. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 7),
  854. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 7),
  855. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 7),
  856. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 7),
  857. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 7),
  858. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 7),
  859. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 7),
  860. PIC32_PINCTRL_FUNCTION(U3TX, RPC14R, 1),
  861. PIC32_PINCTRL_FUNCTION(U4RTS, RPC14R, 2),
  862. PIC32_PINCTRL_FUNCTION(SDO1, RPC14R, 5),
  863. PIC32_PINCTRL_FUNCTION(SDO2, RPC14R, 6),
  864. PIC32_PINCTRL_FUNCTION(SDO3, RPC14R, 7),
  865. PIC32_PINCTRL_FUNCTION(SDO5, RPC14R, 9),
  866. PIC32_PINCTRL_FUNCTION(SS6OUT, RPC14R, 10),
  867. PIC32_PINCTRL_FUNCTION(OC3, RPC14R, 11),
  868. PIC32_PINCTRL_FUNCTION(OC6, RPC14R, 12),
  869. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPC14R, 13),
  870. PIC32_PINCTRL_FUNCTION(C2OUT, RPC14R, 14),
  871. PIC32_PINCTRL_FUNCTION(C1TX, RPC14R, 15)),
  872. PIC32_PINCTRL_GROUP(48, D0,
  873. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 3),
  874. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 3),
  875. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 3),
  876. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 3),
  877. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 3),
  878. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 3),
  879. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 3),
  880. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 3),
  881. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 3),
  882. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 3),
  883. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 3),
  884. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 3),
  885. PIC32_PINCTRL_FUNCTION(U1RTS, RPD0R, 1),
  886. PIC32_PINCTRL_FUNCTION(U2TX, RPD0R, 2),
  887. PIC32_PINCTRL_FUNCTION(U5RTS, RPD0R, 3),
  888. PIC32_PINCTRL_FUNCTION(U6TX, RPD0R, 4),
  889. PIC32_PINCTRL_FUNCTION(SS2OUT, RPD0R, 6),
  890. PIC32_PINCTRL_FUNCTION(SDO4, RPD0R, 8),
  891. PIC32_PINCTRL_FUNCTION(SDO6, RPD0R, 10),
  892. PIC32_PINCTRL_FUNCTION(OC2, RPD0R, 11),
  893. PIC32_PINCTRL_FUNCTION(OC1, RPD0R, 12),
  894. PIC32_PINCTRL_FUNCTION(OC9, RPD0R, 13),
  895. PIC32_PINCTRL_FUNCTION(C2TX, RPD0R, 15)),
  896. PIC32_PINCTRL_GROUP(50, D2,
  897. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 0),
  898. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 0),
  899. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 0),
  900. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 0),
  901. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 0),
  902. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 0),
  903. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 0),
  904. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 0),
  905. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 0),
  906. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 0),
  907. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 0),
  908. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 0),
  909. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 0),
  910. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 0),
  911. PIC32_PINCTRL_FUNCTION(U3TX, RPD2R, 1),
  912. PIC32_PINCTRL_FUNCTION(U4RTS, RPD2R, 2),
  913. PIC32_PINCTRL_FUNCTION(SDO1, RPD2R, 5),
  914. PIC32_PINCTRL_FUNCTION(SDO2, RPD2R, 6),
  915. PIC32_PINCTRL_FUNCTION(SDO3, RPD2R, 7),
  916. PIC32_PINCTRL_FUNCTION(SDO5, RPD2R, 9),
  917. PIC32_PINCTRL_FUNCTION(SS6OUT, RPD2R, 10),
  918. PIC32_PINCTRL_FUNCTION(OC3, RPD2R, 11),
  919. PIC32_PINCTRL_FUNCTION(OC6, RPD2R, 12),
  920. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPD2R, 13),
  921. PIC32_PINCTRL_FUNCTION(C2OUT, RPD2R, 14),
  922. PIC32_PINCTRL_FUNCTION(C1TX, RPD2R, 15)),
  923. PIC32_PINCTRL_GROUP(51, D3,
  924. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 0),
  925. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 0),
  926. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 0),
  927. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 0),
  928. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 0),
  929. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 0),
  930. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 0),
  931. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 0),
  932. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 0),
  933. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 0),
  934. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 0),
  935. PIC32_PINCTRL_FUNCTION(U1TX, RPD3R, 1),
  936. PIC32_PINCTRL_FUNCTION(U2RTS, RPD3R, 2),
  937. PIC32_PINCTRL_FUNCTION(U5TX, RPD3R, 3),
  938. PIC32_PINCTRL_FUNCTION(U6RTS, RPD3R, 4),
  939. PIC32_PINCTRL_FUNCTION(SDO1, RPD3R, 5),
  940. PIC32_PINCTRL_FUNCTION(SDO2, RPD3R, 6),
  941. PIC32_PINCTRL_FUNCTION(SDO3, RPD3R, 7),
  942. PIC32_PINCTRL_FUNCTION(SDO4, RPD3R, 8),
  943. PIC32_PINCTRL_FUNCTION(SDO5, RPD3R, 9),
  944. PIC32_PINCTRL_FUNCTION(OC4, RPD3R, 11),
  945. PIC32_PINCTRL_FUNCTION(OC7, RPD3R, 12),
  946. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPD3R, 15)),
  947. PIC32_PINCTRL_GROUP(52, D4,
  948. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 4),
  949. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 4),
  950. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 4),
  951. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 4),
  952. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 4),
  953. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 4),
  954. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 4),
  955. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 4),
  956. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 4),
  957. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 4),
  958. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 4),
  959. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 4),
  960. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 4),
  961. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 4),
  962. PIC32_PINCTRL_FUNCTION(U3RTS, RPD4R, 1),
  963. PIC32_PINCTRL_FUNCTION(U4TX, RPD4R, 2),
  964. PIC32_PINCTRL_FUNCTION(U6TX, RPD4R, 4),
  965. PIC32_PINCTRL_FUNCTION(SS1OUT, RPD4R, 5),
  966. PIC32_PINCTRL_FUNCTION(SS3OUT, RPD4R, 7),
  967. PIC32_PINCTRL_FUNCTION(SS4OUT, RPD4R, 8),
  968. PIC32_PINCTRL_FUNCTION(SS5OUT, RPD4R, 9),
  969. PIC32_PINCTRL_FUNCTION(SDO6, RPD4R, 10),
  970. PIC32_PINCTRL_FUNCTION(OC5, RPD4R, 11),
  971. PIC32_PINCTRL_FUNCTION(OC8, RPD4R, 12),
  972. PIC32_PINCTRL_FUNCTION(C1OUT, RPD4R, 14),
  973. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPD4R, 15)),
  974. PIC32_PINCTRL_GROUP(53, D5,
  975. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 6),
  976. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 6),
  977. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 6),
  978. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 6),
  979. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 6),
  980. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 6),
  981. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 6),
  982. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 6),
  983. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 6),
  984. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 6),
  985. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 6),
  986. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 6),
  987. PIC32_PINCTRL_FUNCTION(U1RTS, RPD5R, 1),
  988. PIC32_PINCTRL_FUNCTION(U2TX, RPD5R, 2),
  989. PIC32_PINCTRL_FUNCTION(U5RTS, RPD5R, 3),
  990. PIC32_PINCTRL_FUNCTION(U6TX, RPD5R, 4),
  991. PIC32_PINCTRL_FUNCTION(SS2OUT, RPD5R, 6),
  992. PIC32_PINCTRL_FUNCTION(SDO4, RPD5R, 8),
  993. PIC32_PINCTRL_FUNCTION(SDO6, RPD5R, 10),
  994. PIC32_PINCTRL_FUNCTION(OC2, RPD5R, 11),
  995. PIC32_PINCTRL_FUNCTION(OC1, RPD5R, 12),
  996. PIC32_PINCTRL_FUNCTION(OC9, RPD5R, 13),
  997. PIC32_PINCTRL_FUNCTION(C2TX, RPD5R, 15)),
  998. PIC32_PINCTRL_GROUP(54, D6,
  999. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 14),
  1000. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 14),
  1001. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 14),
  1002. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 14),
  1003. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 14),
  1004. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 14),
  1005. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 14),
  1006. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 14),
  1007. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 14),
  1008. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 14),
  1009. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 14),
  1010. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 14),
  1011. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 14),
  1012. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 14),
  1013. PIC32_PINCTRL_FUNCTION(U3TX, RPD6R, 1),
  1014. PIC32_PINCTRL_FUNCTION(U4RTS, RPD6R, 2),
  1015. PIC32_PINCTRL_FUNCTION(SDO1, RPD6R, 5),
  1016. PIC32_PINCTRL_FUNCTION(SDO2, RPD6R, 6),
  1017. PIC32_PINCTRL_FUNCTION(SDO3, RPD6R, 7),
  1018. PIC32_PINCTRL_FUNCTION(SDO5, RPD6R, 9),
  1019. PIC32_PINCTRL_FUNCTION(SS6OUT, RPD6R, 10),
  1020. PIC32_PINCTRL_FUNCTION(OC3, RPD6R, 11),
  1021. PIC32_PINCTRL_FUNCTION(OC6, RPD6R, 12),
  1022. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPD6R, 13),
  1023. PIC32_PINCTRL_FUNCTION(C2OUT, RPD6R, 14),
  1024. PIC32_PINCTRL_FUNCTION(C1TX, RPD6R, 15)),
  1025. PIC32_PINCTRL_GROUP(55, D7,
  1026. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 14),
  1027. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 14),
  1028. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 14),
  1029. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 14),
  1030. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 14),
  1031. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 14),
  1032. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 14),
  1033. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 14),
  1034. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 14),
  1035. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 14),
  1036. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 14),
  1037. PIC32_PINCTRL_FUNCTION(U1TX, RPD7R, 1),
  1038. PIC32_PINCTRL_FUNCTION(U2RTS, RPD7R, 2),
  1039. PIC32_PINCTRL_FUNCTION(U5TX, RPD7R, 3),
  1040. PIC32_PINCTRL_FUNCTION(U6RTS, RPD7R, 4),
  1041. PIC32_PINCTRL_FUNCTION(SDO1, RPD7R, 5),
  1042. PIC32_PINCTRL_FUNCTION(SDO2, RPD7R, 6),
  1043. PIC32_PINCTRL_FUNCTION(SDO3, RPD7R, 7),
  1044. PIC32_PINCTRL_FUNCTION(SDO4, RPD7R, 8),
  1045. PIC32_PINCTRL_FUNCTION(SDO5, RPD7R, 9),
  1046. PIC32_PINCTRL_FUNCTION(OC4, RPD7R, 11),
  1047. PIC32_PINCTRL_FUNCTION(OC7, RPD7R, 12),
  1048. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPD7R, 15)),
  1049. PIC32_PINCTRL_GROUP(57, D9,
  1050. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 0),
  1051. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 0),
  1052. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 0),
  1053. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 0),
  1054. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 0),
  1055. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 0),
  1056. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 0),
  1057. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 0),
  1058. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 0),
  1059. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 0),
  1060. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 0),
  1061. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 0),
  1062. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 0),
  1063. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 0),
  1064. PIC32_PINCTRL_FUNCTION(U3RTS, RPD9R, 1),
  1065. PIC32_PINCTRL_FUNCTION(U4TX, RPD9R, 2),
  1066. PIC32_PINCTRL_FUNCTION(U6TX, RPD9R, 4),
  1067. PIC32_PINCTRL_FUNCTION(SS1OUT, RPD9R, 5),
  1068. PIC32_PINCTRL_FUNCTION(SS3OUT, RPD9R, 7),
  1069. PIC32_PINCTRL_FUNCTION(SS4OUT, RPD9R, 8),
  1070. PIC32_PINCTRL_FUNCTION(SS5OUT, RPD9R, 9),
  1071. PIC32_PINCTRL_FUNCTION(SDO6, RPD9R, 10),
  1072. PIC32_PINCTRL_FUNCTION(OC5, RPD9R, 11),
  1073. PIC32_PINCTRL_FUNCTION(OC8, RPD9R, 12),
  1074. PIC32_PINCTRL_FUNCTION(C1OUT, RPD9R, 14),
  1075. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPD9R, 15)),
  1076. PIC32_PINCTRL_GROUP(58, D10,
  1077. PIC32_PINCTRL_FUNCTION(U3TX, RPD10R, 1),
  1078. PIC32_PINCTRL_FUNCTION(U4RTS, RPD10R, 2),
  1079. PIC32_PINCTRL_FUNCTION(SDO1, RPD10R, 5),
  1080. PIC32_PINCTRL_FUNCTION(SDO2, RPD10R, 6),
  1081. PIC32_PINCTRL_FUNCTION(SDO3, RPD10R, 7),
  1082. PIC32_PINCTRL_FUNCTION(SDO5, RPD10R, 9),
  1083. PIC32_PINCTRL_FUNCTION(SS6OUT, RPD10R, 10),
  1084. PIC32_PINCTRL_FUNCTION(OC3, RPD10R, 11),
  1085. PIC32_PINCTRL_FUNCTION(OC6, RPD10R, 12),
  1086. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPD10R, 13),
  1087. PIC32_PINCTRL_FUNCTION(C2OUT, RPD10R, 14),
  1088. PIC32_PINCTRL_FUNCTION(C1TX, RPD10R, 15)),
  1089. PIC32_PINCTRL_GROUP(59, D11,
  1090. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 3),
  1091. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 3),
  1092. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 3),
  1093. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 3),
  1094. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 3),
  1095. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 3),
  1096. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 3),
  1097. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 3),
  1098. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 3),
  1099. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 3),
  1100. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 3),
  1101. PIC32_PINCTRL_FUNCTION(U1TX, RPD11R, 1),
  1102. PIC32_PINCTRL_FUNCTION(U2RTS, RPD11R, 2),
  1103. PIC32_PINCTRL_FUNCTION(U5TX, RPD11R, 3),
  1104. PIC32_PINCTRL_FUNCTION(U6RTS, RPD11R, 4),
  1105. PIC32_PINCTRL_FUNCTION(SDO1, RPD11R, 5),
  1106. PIC32_PINCTRL_FUNCTION(SDO2, RPD11R, 6),
  1107. PIC32_PINCTRL_FUNCTION(SDO3, RPD11R, 7),
  1108. PIC32_PINCTRL_FUNCTION(SDO4, RPD11R, 8),
  1109. PIC32_PINCTRL_FUNCTION(SDO5, RPD11R, 9),
  1110. PIC32_PINCTRL_FUNCTION(OC4, RPD11R, 11),
  1111. PIC32_PINCTRL_FUNCTION(OC7, RPD11R, 12),
  1112. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPD11R, 15)),
  1113. PIC32_PINCTRL_GROUP(60, D12,
  1114. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 10),
  1115. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 10),
  1116. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 10),
  1117. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 10),
  1118. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 10),
  1119. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 10),
  1120. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 10),
  1121. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 10),
  1122. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 10),
  1123. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 10),
  1124. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 10),
  1125. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 10),
  1126. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 10),
  1127. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 10),
  1128. PIC32_PINCTRL_FUNCTION(U3RTS, RPD12R, 1),
  1129. PIC32_PINCTRL_FUNCTION(U4TX, RPD12R, 2),
  1130. PIC32_PINCTRL_FUNCTION(U6TX, RPD12R, 4),
  1131. PIC32_PINCTRL_FUNCTION(SS1OUT, RPD12R, 5),
  1132. PIC32_PINCTRL_FUNCTION(SS3OUT, RPD12R, 7),
  1133. PIC32_PINCTRL_FUNCTION(SS4OUT, RPD12R, 8),
  1134. PIC32_PINCTRL_FUNCTION(SS5OUT, RPD12R, 9),
  1135. PIC32_PINCTRL_FUNCTION(SDO6, RPD12R, 10),
  1136. PIC32_PINCTRL_FUNCTION(OC5, RPD12R, 11),
  1137. PIC32_PINCTRL_FUNCTION(OC8, RPD12R, 12),
  1138. PIC32_PINCTRL_FUNCTION(C1OUT, RPD12R, 14),
  1139. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPD12R, 15)),
  1140. PIC32_PINCTRL_GROUP(62, D14,
  1141. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 11),
  1142. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 11),
  1143. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 11),
  1144. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 11),
  1145. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 11),
  1146. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 11),
  1147. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 11),
  1148. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 11),
  1149. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 11),
  1150. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 11),
  1151. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 11),
  1152. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 11),
  1153. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 11),
  1154. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 11),
  1155. PIC32_PINCTRL_FUNCTION(U3TX, RPD14R, 1),
  1156. PIC32_PINCTRL_FUNCTION(U4RTS, RPD14R, 2),
  1157. PIC32_PINCTRL_FUNCTION(SDO1, RPD14R, 5),
  1158. PIC32_PINCTRL_FUNCTION(SDO2, RPD14R, 6),
  1159. PIC32_PINCTRL_FUNCTION(SDO3, RPD14R, 7),
  1160. PIC32_PINCTRL_FUNCTION(SDO5, RPD14R, 9),
  1161. PIC32_PINCTRL_FUNCTION(SS6OUT, RPD14R, 10),
  1162. PIC32_PINCTRL_FUNCTION(OC3, RPD14R, 11),
  1163. PIC32_PINCTRL_FUNCTION(OC6, RPD14R, 12),
  1164. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPD14R, 13),
  1165. PIC32_PINCTRL_FUNCTION(C2OUT, RPD14R, 14),
  1166. PIC32_PINCTRL_FUNCTION(C1TX, RPD14R, 15)),
  1167. PIC32_PINCTRL_GROUP(63, D15,
  1168. PIC32_PINCTRL_FUNCTION(U1TX, RPD15R, 1),
  1169. PIC32_PINCTRL_FUNCTION(U2RTS, RPD15R, 2),
  1170. PIC32_PINCTRL_FUNCTION(U5TX, RPD15R, 3),
  1171. PIC32_PINCTRL_FUNCTION(U6RTS, RPD15R, 4),
  1172. PIC32_PINCTRL_FUNCTION(SDO1, RPD15R, 5),
  1173. PIC32_PINCTRL_FUNCTION(SDO2, RPD15R, 6),
  1174. PIC32_PINCTRL_FUNCTION(SDO3, RPD15R, 7),
  1175. PIC32_PINCTRL_FUNCTION(SDO4, RPD15R, 8),
  1176. PIC32_PINCTRL_FUNCTION(SDO5, RPD15R, 9),
  1177. PIC32_PINCTRL_FUNCTION(OC4, RPD15R, 11),
  1178. PIC32_PINCTRL_FUNCTION(OC7, RPD15R, 12),
  1179. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPD15R, 15)),
  1180. PIC32_PINCTRL_GROUP(67, E3,
  1181. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 6),
  1182. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 6),
  1183. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 6),
  1184. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 6),
  1185. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 6),
  1186. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 6),
  1187. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 6),
  1188. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 6),
  1189. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 6),
  1190. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 6),
  1191. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 6),
  1192. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 6),
  1193. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 6),
  1194. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 6),
  1195. PIC32_PINCTRL_FUNCTION(U3RTS, RPE3R, 1),
  1196. PIC32_PINCTRL_FUNCTION(U4TX, RPE3R, 2),
  1197. PIC32_PINCTRL_FUNCTION(U6TX, RPE3R, 4),
  1198. PIC32_PINCTRL_FUNCTION(SS1OUT, RPE3R, 5),
  1199. PIC32_PINCTRL_FUNCTION(SS3OUT, RPE3R, 7),
  1200. PIC32_PINCTRL_FUNCTION(SS4OUT, RPE3R, 8),
  1201. PIC32_PINCTRL_FUNCTION(SS5OUT, RPE3R, 9),
  1202. PIC32_PINCTRL_FUNCTION(SDO6, RPE3R, 10),
  1203. PIC32_PINCTRL_FUNCTION(OC5, RPE3R, 11),
  1204. PIC32_PINCTRL_FUNCTION(OC8, RPE3R, 12),
  1205. PIC32_PINCTRL_FUNCTION(C1OUT, RPE3R, 14),
  1206. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPE3R, 15)),
  1207. PIC32_PINCTRL_GROUP(69, E5,
  1208. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 6),
  1209. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 6),
  1210. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 6),
  1211. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 6),
  1212. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 6),
  1213. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 6),
  1214. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 6),
  1215. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 6),
  1216. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 6),
  1217. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 6),
  1218. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 6),
  1219. PIC32_PINCTRL_FUNCTION(U1TX, RPE5R, 1),
  1220. PIC32_PINCTRL_FUNCTION(U2RTS, RPE5R, 2),
  1221. PIC32_PINCTRL_FUNCTION(U5TX, RPE5R, 3),
  1222. PIC32_PINCTRL_FUNCTION(U6RTS, RPE5R, 4),
  1223. PIC32_PINCTRL_FUNCTION(SDO1, RPE5R, 5),
  1224. PIC32_PINCTRL_FUNCTION(SDO2, RPE5R, 6),
  1225. PIC32_PINCTRL_FUNCTION(SDO3, RPE5R, 7),
  1226. PIC32_PINCTRL_FUNCTION(SDO4, RPE5R, 8),
  1227. PIC32_PINCTRL_FUNCTION(SDO5, RPE5R, 9),
  1228. PIC32_PINCTRL_FUNCTION(OC4, RPE5R, 11),
  1229. PIC32_PINCTRL_FUNCTION(OC7, RPE5R, 12),
  1230. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPE5R, 15)),
  1231. PIC32_PINCTRL_GROUP(72, E8,
  1232. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 13),
  1233. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 13),
  1234. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 13),
  1235. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 13),
  1236. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 13),
  1237. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 13),
  1238. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 13),
  1239. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 13),
  1240. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 13),
  1241. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 13),
  1242. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 13),
  1243. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 13),
  1244. PIC32_PINCTRL_FUNCTION(U1RTS, RPE8R, 1),
  1245. PIC32_PINCTRL_FUNCTION(U2TX, RPE8R, 2),
  1246. PIC32_PINCTRL_FUNCTION(U5RTS, RPE8R, 3),
  1247. PIC32_PINCTRL_FUNCTION(U6TX, RPE8R, 4),
  1248. PIC32_PINCTRL_FUNCTION(SS2OUT, RPE8R, 6),
  1249. PIC32_PINCTRL_FUNCTION(SDO4, RPE8R, 8),
  1250. PIC32_PINCTRL_FUNCTION(SDO6, RPE8R, 10),
  1251. PIC32_PINCTRL_FUNCTION(OC2, RPE8R, 11),
  1252. PIC32_PINCTRL_FUNCTION(OC1, RPE8R, 12),
  1253. PIC32_PINCTRL_FUNCTION(OC9, RPE8R, 13),
  1254. PIC32_PINCTRL_FUNCTION(C2TX, RPE8R, 15)),
  1255. PIC32_PINCTRL_GROUP(73, E9,
  1256. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 13),
  1257. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 13),
  1258. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 13),
  1259. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 13),
  1260. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 13),
  1261. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 13),
  1262. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 13),
  1263. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 13),
  1264. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 13),
  1265. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 13),
  1266. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 13),
  1267. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 13),
  1268. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 13),
  1269. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 13),
  1270. PIC32_PINCTRL_FUNCTION(U3RTS, RPE9R, 1),
  1271. PIC32_PINCTRL_FUNCTION(U4TX, RPE9R, 2),
  1272. PIC32_PINCTRL_FUNCTION(U6TX, RPE9R, 4),
  1273. PIC32_PINCTRL_FUNCTION(SS1OUT, RPE9R, 5),
  1274. PIC32_PINCTRL_FUNCTION(SS3OUT, RPE9R, 7),
  1275. PIC32_PINCTRL_FUNCTION(SS4OUT, RPE9R, 8),
  1276. PIC32_PINCTRL_FUNCTION(SS5OUT, RPE9R, 9),
  1277. PIC32_PINCTRL_FUNCTION(SDO6, RPE9R, 10),
  1278. PIC32_PINCTRL_FUNCTION(OC5, RPE9R, 11),
  1279. PIC32_PINCTRL_FUNCTION(OC8, RPE9R, 12),
  1280. PIC32_PINCTRL_FUNCTION(C1OUT, RPE9R, 14),
  1281. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPE9R, 15)),
  1282. PIC32_PINCTRL_GROUP(80, F0,
  1283. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 4),
  1284. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 4),
  1285. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 4),
  1286. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 4),
  1287. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 4),
  1288. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 4),
  1289. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 4),
  1290. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 4),
  1291. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 4),
  1292. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 4),
  1293. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 4),
  1294. PIC32_PINCTRL_FUNCTION(U1TX, RPF0R, 1),
  1295. PIC32_PINCTRL_FUNCTION(U2RTS, RPF0R, 2),
  1296. PIC32_PINCTRL_FUNCTION(U5TX, RPF0R, 3),
  1297. PIC32_PINCTRL_FUNCTION(U6RTS, RPF0R, 4),
  1298. PIC32_PINCTRL_FUNCTION(SDO1, RPF0R, 5),
  1299. PIC32_PINCTRL_FUNCTION(SDO2, RPF0R, 6),
  1300. PIC32_PINCTRL_FUNCTION(SDO3, RPF0R, 7),
  1301. PIC32_PINCTRL_FUNCTION(SDO4, RPF0R, 8),
  1302. PIC32_PINCTRL_FUNCTION(SDO5, RPF0R, 9),
  1303. PIC32_PINCTRL_FUNCTION(OC4, RPF0R, 11),
  1304. PIC32_PINCTRL_FUNCTION(OC7, RPF0R, 12),
  1305. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPF0R, 15)),
  1306. PIC32_PINCTRL_GROUP(81, F1,
  1307. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 4),
  1308. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 4),
  1309. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 4),
  1310. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 4),
  1311. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 4),
  1312. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 4),
  1313. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 4),
  1314. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 4),
  1315. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 4),
  1316. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 4),
  1317. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 4),
  1318. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 4),
  1319. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 4),
  1320. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 4),
  1321. PIC32_PINCTRL_FUNCTION(U3TX, RPF1R, 1),
  1322. PIC32_PINCTRL_FUNCTION(U4RTS, RPF1R, 2),
  1323. PIC32_PINCTRL_FUNCTION(SDO1, RPF1R, 5),
  1324. PIC32_PINCTRL_FUNCTION(SDO2, RPF1R, 6),
  1325. PIC32_PINCTRL_FUNCTION(SDO3, RPF1R, 7),
  1326. PIC32_PINCTRL_FUNCTION(SDO5, RPF1R, 9),
  1327. PIC32_PINCTRL_FUNCTION(SS6OUT, RPF1R, 10),
  1328. PIC32_PINCTRL_FUNCTION(OC3, RPF1R, 11),
  1329. PIC32_PINCTRL_FUNCTION(OC6, RPF1R, 12),
  1330. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPF1R, 13),
  1331. PIC32_PINCTRL_FUNCTION(C2OUT, RPF1R, 14),
  1332. PIC32_PINCTRL_FUNCTION(C1TX, RPF1R, 15)),
  1333. PIC32_PINCTRL_GROUP(82, F2,
  1334. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 11),
  1335. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 11),
  1336. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 11),
  1337. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 11),
  1338. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 11),
  1339. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 11),
  1340. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 11),
  1341. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 11),
  1342. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 11),
  1343. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 11),
  1344. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 11),
  1345. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 11),
  1346. PIC32_PINCTRL_FUNCTION(U1RTS, RPF2R, 1),
  1347. PIC32_PINCTRL_FUNCTION(U2TX, RPF2R, 2),
  1348. PIC32_PINCTRL_FUNCTION(U5RTS, RPF2R, 3),
  1349. PIC32_PINCTRL_FUNCTION(U6TX, RPF2R, 4),
  1350. PIC32_PINCTRL_FUNCTION(SS2OUT, RPF2R, 6),
  1351. PIC32_PINCTRL_FUNCTION(SDO4, RPF2R, 8),
  1352. PIC32_PINCTRL_FUNCTION(SDO6, RPF2R, 10),
  1353. PIC32_PINCTRL_FUNCTION(OC2, RPF2R, 11),
  1354. PIC32_PINCTRL_FUNCTION(OC1, RPF2R, 12),
  1355. PIC32_PINCTRL_FUNCTION(OC9, RPF2R, 13),
  1356. PIC32_PINCTRL_FUNCTION(C2TX, RPF2R, 15)),
  1357. PIC32_PINCTRL_GROUP(83, F3,
  1358. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 8),
  1359. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 8),
  1360. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 8),
  1361. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 8),
  1362. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 8),
  1363. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 8),
  1364. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 8),
  1365. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 8),
  1366. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 8),
  1367. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 8),
  1368. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 8),
  1369. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 8),
  1370. PIC32_PINCTRL_FUNCTION(U1RTS, RPF3R, 1),
  1371. PIC32_PINCTRL_FUNCTION(U2TX, RPF3R, 2),
  1372. PIC32_PINCTRL_FUNCTION(U5RTS, RPF3R, 3),
  1373. PIC32_PINCTRL_FUNCTION(U6TX, RPF3R, 4),
  1374. PIC32_PINCTRL_FUNCTION(SS2OUT, RPF3R, 6),
  1375. PIC32_PINCTRL_FUNCTION(SDO4, RPF3R, 8),
  1376. PIC32_PINCTRL_FUNCTION(SDO6, RPF3R, 10),
  1377. PIC32_PINCTRL_FUNCTION(OC2, RPF3R, 11),
  1378. PIC32_PINCTRL_FUNCTION(OC1, RPF3R, 12),
  1379. PIC32_PINCTRL_FUNCTION(OC9, RPF3R, 13),
  1380. PIC32_PINCTRL_FUNCTION(C2TX, RPF3R, 15)),
  1381. PIC32_PINCTRL_GROUP(84, F4,
  1382. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 2),
  1383. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 2),
  1384. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 2),
  1385. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 2),
  1386. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 2),
  1387. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 2),
  1388. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 2),
  1389. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 2),
  1390. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 2),
  1391. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 2),
  1392. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 2),
  1393. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 2),
  1394. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 2),
  1395. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 2),
  1396. PIC32_PINCTRL_FUNCTION(U3TX, RPF4R, 1),
  1397. PIC32_PINCTRL_FUNCTION(U4RTS, RPF4R, 2),
  1398. PIC32_PINCTRL_FUNCTION(SDO1, RPF4R, 5),
  1399. PIC32_PINCTRL_FUNCTION(SDO2, RPF4R, 6),
  1400. PIC32_PINCTRL_FUNCTION(SDO3, RPF4R, 7),
  1401. PIC32_PINCTRL_FUNCTION(SDO5, RPF4R, 9),
  1402. PIC32_PINCTRL_FUNCTION(SS6OUT, RPF4R, 10),
  1403. PIC32_PINCTRL_FUNCTION(OC3, RPF4R, 11),
  1404. PIC32_PINCTRL_FUNCTION(OC6, RPF4R, 12),
  1405. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPF4R, 13),
  1406. PIC32_PINCTRL_FUNCTION(C2OUT, RPF4R, 14),
  1407. PIC32_PINCTRL_FUNCTION(C1TX, RPF4R, 15)),
  1408. PIC32_PINCTRL_GROUP(85, F5,
  1409. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 2),
  1410. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 2),
  1411. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 2),
  1412. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 2),
  1413. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 2),
  1414. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 2),
  1415. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 2),
  1416. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 2),
  1417. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 2),
  1418. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 2),
  1419. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 2),
  1420. PIC32_PINCTRL_FUNCTION(U1TX, RPF5R, 1),
  1421. PIC32_PINCTRL_FUNCTION(U2RTS, RPF5R, 2),
  1422. PIC32_PINCTRL_FUNCTION(U5TX, RPF5R, 3),
  1423. PIC32_PINCTRL_FUNCTION(U6RTS, RPF5R, 4),
  1424. PIC32_PINCTRL_FUNCTION(SDO1, RPF5R, 5),
  1425. PIC32_PINCTRL_FUNCTION(SDO2, RPF5R, 6),
  1426. PIC32_PINCTRL_FUNCTION(SDO3, RPF5R, 7),
  1427. PIC32_PINCTRL_FUNCTION(SDO4, RPF5R, 8),
  1428. PIC32_PINCTRL_FUNCTION(SDO5, RPF5R, 9),
  1429. PIC32_PINCTRL_FUNCTION(OC4, RPF5R, 11),
  1430. PIC32_PINCTRL_FUNCTION(OC7, RPF5R, 12),
  1431. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPF5R, 15)),
  1432. PIC32_PINCTRL_GROUP(88, F8,
  1433. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 11),
  1434. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 11),
  1435. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 11),
  1436. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 11),
  1437. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 11),
  1438. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 11),
  1439. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 11),
  1440. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 11),
  1441. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 11),
  1442. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 11),
  1443. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 11),
  1444. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 11),
  1445. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 11),
  1446. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 11),
  1447. PIC32_PINCTRL_FUNCTION(U3RTS, RPF8R, 1),
  1448. PIC32_PINCTRL_FUNCTION(U4TX, RPF8R, 2),
  1449. PIC32_PINCTRL_FUNCTION(U6TX, RPF8R, 4),
  1450. PIC32_PINCTRL_FUNCTION(SS1OUT, RPF8R, 5),
  1451. PIC32_PINCTRL_FUNCTION(SS3OUT, RPF8R, 7),
  1452. PIC32_PINCTRL_FUNCTION(SS4OUT, RPF8R, 8),
  1453. PIC32_PINCTRL_FUNCTION(SS5OUT, RPF8R, 9),
  1454. PIC32_PINCTRL_FUNCTION(SDO6, RPF8R, 10),
  1455. PIC32_PINCTRL_FUNCTION(OC5, RPF8R, 11),
  1456. PIC32_PINCTRL_FUNCTION(OC8, RPF8R, 12),
  1457. PIC32_PINCTRL_FUNCTION(C1OUT, RPF8R, 14),
  1458. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPF8R, 15)),
  1459. PIC32_PINCTRL_GROUP(92, F12,
  1460. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 9),
  1461. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 9),
  1462. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 9),
  1463. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 9),
  1464. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 9),
  1465. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 9),
  1466. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 9),
  1467. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 9),
  1468. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 9),
  1469. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 9),
  1470. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 9),
  1471. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 9),
  1472. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 9),
  1473. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 9),
  1474. PIC32_PINCTRL_FUNCTION(U3RTS, RPF12R, 1),
  1475. PIC32_PINCTRL_FUNCTION(U4TX, RPF12R, 2),
  1476. PIC32_PINCTRL_FUNCTION(U6TX, RPF12R, 4),
  1477. PIC32_PINCTRL_FUNCTION(SS1OUT, RPF12R, 5),
  1478. PIC32_PINCTRL_FUNCTION(SS3OUT, RPF12R, 7),
  1479. PIC32_PINCTRL_FUNCTION(SS4OUT, RPF12R, 8),
  1480. PIC32_PINCTRL_FUNCTION(SS5OUT, RPF12R, 9),
  1481. PIC32_PINCTRL_FUNCTION(SDO6, RPF12R, 10),
  1482. PIC32_PINCTRL_FUNCTION(OC5, RPF12R, 11),
  1483. PIC32_PINCTRL_FUNCTION(OC8, RPF12R, 12),
  1484. PIC32_PINCTRL_FUNCTION(C1OUT, RPF12R, 14),
  1485. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPF12R, 15)),
  1486. PIC32_PINCTRL_GROUP(93, F13,
  1487. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 9),
  1488. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 9),
  1489. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 9),
  1490. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 9),
  1491. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 9),
  1492. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 9),
  1493. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 9),
  1494. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 9),
  1495. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 9),
  1496. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 9),
  1497. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 9),
  1498. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 9),
  1499. PIC32_PINCTRL_FUNCTION(U1RTS, RPF13R, 1),
  1500. PIC32_PINCTRL_FUNCTION(U2TX, RPF13R, 2),
  1501. PIC32_PINCTRL_FUNCTION(U5RTS, RPF13R, 3),
  1502. PIC32_PINCTRL_FUNCTION(U6TX, RPF13R, 4),
  1503. PIC32_PINCTRL_FUNCTION(SS2OUT, RPF13R, 6),
  1504. PIC32_PINCTRL_FUNCTION(SDO4, RPF13R, 8),
  1505. PIC32_PINCTRL_FUNCTION(SDO6, RPF13R, 10),
  1506. PIC32_PINCTRL_FUNCTION(OC2, RPF13R, 11),
  1507. PIC32_PINCTRL_FUNCTION(OC1, RPF13R, 12),
  1508. PIC32_PINCTRL_FUNCTION(OC9, RPF13R, 13),
  1509. PIC32_PINCTRL_FUNCTION(C2TX, RPF13R, 15)),
  1510. PIC32_PINCTRL_GROUP(96, G0,
  1511. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 12),
  1512. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 12),
  1513. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 12),
  1514. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 12),
  1515. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 12),
  1516. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 12),
  1517. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 12),
  1518. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 12),
  1519. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 12),
  1520. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 12),
  1521. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 12),
  1522. PIC32_PINCTRL_FUNCTION(U1TX, RPG0R, 1),
  1523. PIC32_PINCTRL_FUNCTION(U2RTS, RPG0R, 2),
  1524. PIC32_PINCTRL_FUNCTION(U5TX, RPG0R, 3),
  1525. PIC32_PINCTRL_FUNCTION(U6RTS, RPG0R, 4),
  1526. PIC32_PINCTRL_FUNCTION(SDO1, RPG0R, 5),
  1527. PIC32_PINCTRL_FUNCTION(SDO2, RPG0R, 6),
  1528. PIC32_PINCTRL_FUNCTION(SDO3, RPG0R, 7),
  1529. PIC32_PINCTRL_FUNCTION(SDO4, RPG0R, 8),
  1530. PIC32_PINCTRL_FUNCTION(SDO5, RPG0R, 9),
  1531. PIC32_PINCTRL_FUNCTION(OC4, RPG0R, 11),
  1532. PIC32_PINCTRL_FUNCTION(OC7, RPG0R, 12),
  1533. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPG0R, 15)),
  1534. PIC32_PINCTRL_GROUP(97, G1,
  1535. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 12),
  1536. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 12),
  1537. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 12),
  1538. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 12),
  1539. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 12),
  1540. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 12),
  1541. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 12),
  1542. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 12),
  1543. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 12),
  1544. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 12),
  1545. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 12),
  1546. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 12),
  1547. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 12),
  1548. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 12),
  1549. PIC32_PINCTRL_FUNCTION(U3TX, RPG1R, 1),
  1550. PIC32_PINCTRL_FUNCTION(U4RTS, RPG1R, 2),
  1551. PIC32_PINCTRL_FUNCTION(SDO1, RPG1R, 5),
  1552. PIC32_PINCTRL_FUNCTION(SDO2, RPG1R, 6),
  1553. PIC32_PINCTRL_FUNCTION(SDO3, RPG1R, 7),
  1554. PIC32_PINCTRL_FUNCTION(SDO5, RPG1R, 9),
  1555. PIC32_PINCTRL_FUNCTION(SS6OUT, RPG1R, 10),
  1556. PIC32_PINCTRL_FUNCTION(OC3, RPG1R, 11),
  1557. PIC32_PINCTRL_FUNCTION(OC6, RPG1R, 12),
  1558. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPG1R, 13),
  1559. PIC32_PINCTRL_FUNCTION(C2OUT, RPG1R, 14),
  1560. PIC32_PINCTRL_FUNCTION(C1TX, RPG1R, 15)),
  1561. PIC32_PINCTRL_GROUP(102, G6,
  1562. PIC32_PINCTRL_FUNCTION(INT2, INT2R, 1),
  1563. PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 1),
  1564. PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 1),
  1565. PIC32_PINCTRL_FUNCTION(IC2, IC2R, 1),
  1566. PIC32_PINCTRL_FUNCTION(IC5, IC5R, 1),
  1567. PIC32_PINCTRL_FUNCTION(IC9, IC9R, 1),
  1568. PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 1),
  1569. PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 1),
  1570. PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 1),
  1571. PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 1),
  1572. PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 1),
  1573. PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 1),
  1574. PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 1),
  1575. PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 1),
  1576. PIC32_PINCTRL_FUNCTION(U3RTS, RPG6R, 1),
  1577. PIC32_PINCTRL_FUNCTION(U4TX, RPG6R, 2),
  1578. PIC32_PINCTRL_FUNCTION(U6TX, RPG6R, 4),
  1579. PIC32_PINCTRL_FUNCTION(SS1OUT, RPG6R, 5),
  1580. PIC32_PINCTRL_FUNCTION(SS3OUT, RPG6R, 7),
  1581. PIC32_PINCTRL_FUNCTION(SS4OUT, RPG6R, 8),
  1582. PIC32_PINCTRL_FUNCTION(SS5OUT, RPG6R, 9),
  1583. PIC32_PINCTRL_FUNCTION(SDO6, RPG6R, 10),
  1584. PIC32_PINCTRL_FUNCTION(OC5, RPG6R, 11),
  1585. PIC32_PINCTRL_FUNCTION(OC8, RPG6R, 12),
  1586. PIC32_PINCTRL_FUNCTION(C1OUT, RPG6R, 14),
  1587. PIC32_PINCTRL_FUNCTION(REFCLKO3, RPG6R, 15)),
  1588. PIC32_PINCTRL_GROUP(103, G7,
  1589. PIC32_PINCTRL_FUNCTION(INT4, INT4R, 1),
  1590. PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 1),
  1591. PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 1),
  1592. PIC32_PINCTRL_FUNCTION(IC4, IC4R, 1),
  1593. PIC32_PINCTRL_FUNCTION(IC8, IC8R, 1),
  1594. PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 1),
  1595. PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 1),
  1596. PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 1),
  1597. PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 1),
  1598. PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 1),
  1599. PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 1),
  1600. PIC32_PINCTRL_FUNCTION(U1TX, RPG7R, 1),
  1601. PIC32_PINCTRL_FUNCTION(U2RTS, RPG7R, 2),
  1602. PIC32_PINCTRL_FUNCTION(U5TX, RPG7R, 3),
  1603. PIC32_PINCTRL_FUNCTION(U6RTS, RPG7R, 4),
  1604. PIC32_PINCTRL_FUNCTION(SDO1, RPG7R, 5),
  1605. PIC32_PINCTRL_FUNCTION(SDO2, RPG7R, 6),
  1606. PIC32_PINCTRL_FUNCTION(SDO3, RPG7R, 7),
  1607. PIC32_PINCTRL_FUNCTION(SDO4, RPG7R, 8),
  1608. PIC32_PINCTRL_FUNCTION(SDO5, RPG7R, 9),
  1609. PIC32_PINCTRL_FUNCTION(OC4, RPG7R, 11),
  1610. PIC32_PINCTRL_FUNCTION(OC7, RPG7R, 12),
  1611. PIC32_PINCTRL_FUNCTION(REFCLKO1, RPG7R, 15)),
  1612. PIC32_PINCTRL_GROUP(104, G8,
  1613. PIC32_PINCTRL_FUNCTION(INT3, INT3R, 1),
  1614. PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 1),
  1615. PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 1),
  1616. PIC32_PINCTRL_FUNCTION(IC3, IC3R, 1),
  1617. PIC32_PINCTRL_FUNCTION(IC7, IC7R, 1),
  1618. PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 1),
  1619. PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 1),
  1620. PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 1),
  1621. PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 1),
  1622. PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 1),
  1623. PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 1),
  1624. PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 1),
  1625. PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 1),
  1626. PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 1),
  1627. PIC32_PINCTRL_FUNCTION(U3TX, RPG8R, 1),
  1628. PIC32_PINCTRL_FUNCTION(U4RTS, RPG8R, 2),
  1629. PIC32_PINCTRL_FUNCTION(SDO1, RPG8R, 5),
  1630. PIC32_PINCTRL_FUNCTION(SDO2, RPG8R, 6),
  1631. PIC32_PINCTRL_FUNCTION(SDO3, RPG8R, 7),
  1632. PIC32_PINCTRL_FUNCTION(SDO5, RPG8R, 9),
  1633. PIC32_PINCTRL_FUNCTION(SS6OUT, RPG8R, 10),
  1634. PIC32_PINCTRL_FUNCTION(OC3, RPG8R, 11),
  1635. PIC32_PINCTRL_FUNCTION(OC6, RPG8R, 12),
  1636. PIC32_PINCTRL_FUNCTION(REFCLKO4, RPG8R, 13),
  1637. PIC32_PINCTRL_FUNCTION(C2OUT, RPG8R, 14),
  1638. PIC32_PINCTRL_FUNCTION(C1TX, RPG8R, 15)),
  1639. PIC32_PINCTRL_GROUP(105, G9,
  1640. PIC32_PINCTRL_FUNCTION(INT1, INT1R, 1),
  1641. PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 1),
  1642. PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 1),
  1643. PIC32_PINCTRL_FUNCTION(IC1, IC1R, 1),
  1644. PIC32_PINCTRL_FUNCTION(IC6, IC6R, 1),
  1645. PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 1),
  1646. PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 1),
  1647. PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 1),
  1648. PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 1),
  1649. PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 1),
  1650. PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 1),
  1651. PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 1),
  1652. PIC32_PINCTRL_FUNCTION(U1RTS, RPG9R, 1),
  1653. PIC32_PINCTRL_FUNCTION(U2TX, RPG9R, 2),
  1654. PIC32_PINCTRL_FUNCTION(U5RTS, RPG9R, 3),
  1655. PIC32_PINCTRL_FUNCTION(U6TX, RPG9R, 4),
  1656. PIC32_PINCTRL_FUNCTION(SS2OUT, RPG9R, 6),
  1657. PIC32_PINCTRL_FUNCTION(SDO4, RPG9R, 8),
  1658. PIC32_PINCTRL_FUNCTION(SDO6, RPG9R, 10),
  1659. PIC32_PINCTRL_FUNCTION(OC2, RPG9R, 11),
  1660. PIC32_PINCTRL_FUNCTION(OC1, RPG9R, 12),
  1661. PIC32_PINCTRL_FUNCTION(OC9, RPG9R, 13),
  1662. PIC32_PINCTRL_FUNCTION(C2TX, RPG9R, 15)),
  1663. };
  1664. static inline struct pic32_gpio_bank *irqd_to_bank(struct irq_data *d)
  1665. {
  1666. return gpiochip_get_data(irq_data_get_irq_chip_data(d));
  1667. }
  1668. static inline struct pic32_gpio_bank *pctl_to_bank(struct pic32_pinctrl *pctl,
  1669. unsigned pin)
  1670. {
  1671. return &pctl->gpio_banks[pin / PINS_PER_BANK];
  1672. }
  1673. static int pic32_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
  1674. {
  1675. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1676. return pctl->ngroups;
  1677. }
  1678. static const char *pic32_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
  1679. unsigned group)
  1680. {
  1681. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1682. return pctl->groups[group].name;
  1683. }
  1684. static int pic32_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
  1685. unsigned group,
  1686. const unsigned **pins,
  1687. unsigned *num_pins)
  1688. {
  1689. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1690. *pins = &pctl->groups[group].pin;
  1691. *num_pins = 1;
  1692. return 0;
  1693. }
  1694. static const struct pinctrl_ops pic32_pinctrl_ops = {
  1695. .get_groups_count = pic32_pinctrl_get_groups_count,
  1696. .get_group_name = pic32_pinctrl_get_group_name,
  1697. .get_group_pins = pic32_pinctrl_get_group_pins,
  1698. .dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
  1699. .dt_free_map = pinctrl_utils_free_map,
  1700. };
  1701. static int pic32_pinmux_get_functions_count(struct pinctrl_dev *pctldev)
  1702. {
  1703. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1704. return pctl->nfunctions;
  1705. }
  1706. static const char *
  1707. pic32_pinmux_get_function_name(struct pinctrl_dev *pctldev, unsigned func)
  1708. {
  1709. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1710. return pctl->functions[func].name;
  1711. }
  1712. static int pic32_pinmux_get_function_groups(struct pinctrl_dev *pctldev,
  1713. unsigned func,
  1714. const char * const **groups,
  1715. unsigned * const num_groups)
  1716. {
  1717. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1718. *groups = pctl->functions[func].groups;
  1719. *num_groups = pctl->functions[func].ngroups;
  1720. return 0;
  1721. }
  1722. static int pic32_pinmux_enable(struct pinctrl_dev *pctldev,
  1723. unsigned func, unsigned group)
  1724. {
  1725. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1726. const struct pic32_pin_group *pg = &pctl->groups[group];
  1727. const struct pic32_function *pf = &pctl->functions[func];
  1728. const char *fname = pf->name;
  1729. struct pic32_desc_function *functions = pg->functions;
  1730. while (functions->name) {
  1731. if (!strcmp(functions->name, fname)) {
  1732. dev_dbg(pctl->dev,
  1733. "setting function %s reg 0x%x = %d\n",
  1734. fname, functions->muxreg, functions->muxval);
  1735. writel(functions->muxval, pctl->reg_base + functions->muxreg);
  1736. return 0;
  1737. }
  1738. functions++;
  1739. }
  1740. dev_err(pctl->dev, "cannot mux pin %u to function %u\n", group, func);
  1741. return -EINVAL;
  1742. }
  1743. static int pic32_gpio_request_enable(struct pinctrl_dev *pctldev,
  1744. struct pinctrl_gpio_range *range,
  1745. unsigned offset)
  1746. {
  1747. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1748. struct pic32_gpio_bank *bank = gpiochip_get_data(range->gc);
  1749. u32 mask = BIT(offset - bank->gpio_chip.base);
  1750. dev_dbg(pctl->dev, "requesting gpio %d in bank %d with mask 0x%x\n",
  1751. offset, bank->gpio_chip.base, mask);
  1752. writel(mask, bank->reg_base + PIC32_CLR(ANSEL_REG));
  1753. return 0;
  1754. }
  1755. static int pic32_gpio_direction_input(struct gpio_chip *chip,
  1756. unsigned offset)
  1757. {
  1758. struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
  1759. u32 mask = BIT(offset);
  1760. writel(mask, bank->reg_base + PIC32_SET(TRIS_REG));
  1761. return 0;
  1762. }
  1763. static int pic32_gpio_get(struct gpio_chip *chip, unsigned offset)
  1764. {
  1765. struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
  1766. return !!(readl(bank->reg_base + PORT_REG) & BIT(offset));
  1767. }
  1768. static void pic32_gpio_set(struct gpio_chip *chip, unsigned offset,
  1769. int value)
  1770. {
  1771. struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
  1772. u32 mask = BIT(offset);
  1773. if (value)
  1774. writel(mask, bank->reg_base + PIC32_SET(PORT_REG));
  1775. else
  1776. writel(mask, bank->reg_base + PIC32_CLR(PORT_REG));
  1777. }
  1778. static int pic32_gpio_direction_output(struct gpio_chip *chip,
  1779. unsigned offset, int value)
  1780. {
  1781. struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
  1782. u32 mask = BIT(offset);
  1783. pic32_gpio_set(chip, offset, value);
  1784. writel(mask, bank->reg_base + PIC32_CLR(TRIS_REG));
  1785. return 0;
  1786. }
  1787. static int pic32_gpio_set_direction(struct pinctrl_dev *pctldev,
  1788. struct pinctrl_gpio_range *range,
  1789. unsigned offset, bool input)
  1790. {
  1791. struct gpio_chip *chip = range->gc;
  1792. if (input)
  1793. pic32_gpio_direction_input(chip, offset);
  1794. else
  1795. pic32_gpio_direction_output(chip, offset, 0);
  1796. return 0;
  1797. }
  1798. static const struct pinmux_ops pic32_pinmux_ops = {
  1799. .get_functions_count = pic32_pinmux_get_functions_count,
  1800. .get_function_name = pic32_pinmux_get_function_name,
  1801. .get_function_groups = pic32_pinmux_get_function_groups,
  1802. .set_mux = pic32_pinmux_enable,
  1803. .gpio_request_enable = pic32_gpio_request_enable,
  1804. .gpio_set_direction = pic32_gpio_set_direction,
  1805. };
  1806. static int pic32_pinconf_get(struct pinctrl_dev *pctldev, unsigned pin,
  1807. unsigned long *config)
  1808. {
  1809. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1810. struct pic32_gpio_bank *bank = pctl_to_bank(pctl, pin);
  1811. unsigned param = pinconf_to_config_param(*config);
  1812. u32 mask = BIT(pin - bank->gpio_chip.base);
  1813. u32 arg;
  1814. switch (param) {
  1815. case PIN_CONFIG_BIAS_PULL_UP:
  1816. arg = !!(readl(bank->reg_base + CNPU_REG) & mask);
  1817. break;
  1818. case PIN_CONFIG_BIAS_PULL_DOWN:
  1819. arg = !!(readl(bank->reg_base + CNPD_REG) & mask);
  1820. break;
  1821. case PIN_CONFIG_MICROCHIP_DIGITAL:
  1822. arg = !(readl(bank->reg_base + ANSEL_REG) & mask);
  1823. break;
  1824. case PIN_CONFIG_MICROCHIP_ANALOG:
  1825. arg = !!(readl(bank->reg_base + ANSEL_REG) & mask);
  1826. break;
  1827. case PIN_CONFIG_DRIVE_OPEN_DRAIN:
  1828. arg = !!(readl(bank->reg_base + ODCU_REG) & mask);
  1829. break;
  1830. case PIN_CONFIG_INPUT_ENABLE:
  1831. arg = !!(readl(bank->reg_base + TRIS_REG) & mask);
  1832. break;
  1833. case PIN_CONFIG_OUTPUT:
  1834. arg = !(readl(bank->reg_base + TRIS_REG) & mask);
  1835. break;
  1836. default:
  1837. dev_err(pctl->dev, "Property %u not supported\n", param);
  1838. return -ENOTSUPP;
  1839. }
  1840. *config = pinconf_to_config_packed(param, arg);
  1841. return 0;
  1842. }
  1843. static int pic32_pinconf_set(struct pinctrl_dev *pctldev, unsigned pin,
  1844. unsigned long *configs, unsigned num_configs)
  1845. {
  1846. struct pic32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
  1847. struct pic32_gpio_bank *bank = pctl_to_bank(pctl, pin);
  1848. unsigned param;
  1849. u32 arg;
  1850. unsigned int i;
  1851. u32 offset = pin - bank->gpio_chip.base;
  1852. u32 mask = BIT(offset);
  1853. dev_dbg(pctl->dev, "setting pin %d bank %d mask 0x%x\n",
  1854. pin, bank->gpio_chip.base, mask);
  1855. for (i = 0; i < num_configs; i++) {
  1856. param = pinconf_to_config_param(configs[i]);
  1857. arg = pinconf_to_config_argument(configs[i]);
  1858. switch (param) {
  1859. case PIN_CONFIG_BIAS_PULL_UP:
  1860. dev_dbg(pctl->dev, " pullup\n");
  1861. writel(mask, bank->reg_base +PIC32_SET(CNPU_REG));
  1862. break;
  1863. case PIN_CONFIG_BIAS_PULL_DOWN:
  1864. dev_dbg(pctl->dev, " pulldown\n");
  1865. writel(mask, bank->reg_base + PIC32_SET(CNPD_REG));
  1866. break;
  1867. case PIN_CONFIG_MICROCHIP_DIGITAL:
  1868. dev_dbg(pctl->dev, " digital\n");
  1869. writel(mask, bank->reg_base + PIC32_CLR(ANSEL_REG));
  1870. break;
  1871. case PIN_CONFIG_MICROCHIP_ANALOG:
  1872. dev_dbg(pctl->dev, " analog\n");
  1873. writel(mask, bank->reg_base + PIC32_SET(ANSEL_REG));
  1874. break;
  1875. case PIN_CONFIG_DRIVE_OPEN_DRAIN:
  1876. dev_dbg(pctl->dev, " opendrain\n");
  1877. writel(mask, bank->reg_base + PIC32_SET(ODCU_REG));
  1878. break;
  1879. case PIN_CONFIG_INPUT_ENABLE:
  1880. pic32_gpio_direction_input(&bank->gpio_chip, offset);
  1881. break;
  1882. case PIN_CONFIG_OUTPUT:
  1883. pic32_gpio_direction_output(&bank->gpio_chip,
  1884. offset, arg);
  1885. break;
  1886. default:
  1887. dev_err(pctl->dev, "Property %u not supported\n",
  1888. param);
  1889. return -ENOTSUPP;
  1890. }
  1891. }
  1892. return 0;
  1893. }
  1894. static const struct pinconf_ops pic32_pinconf_ops = {
  1895. .pin_config_get = pic32_pinconf_get,
  1896. .pin_config_set = pic32_pinconf_set,
  1897. .is_generic = true,
  1898. };
  1899. static struct pinctrl_desc pic32_pinctrl_desc = {
  1900. .name = "pic32-pinctrl",
  1901. .pctlops = &pic32_pinctrl_ops,
  1902. .pmxops = &pic32_pinmux_ops,
  1903. .confops = &pic32_pinconf_ops,
  1904. .owner = THIS_MODULE,
  1905. };
  1906. static int pic32_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
  1907. {
  1908. struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
  1909. if (readl(bank->reg_base + TRIS_REG) & BIT(offset))
  1910. return GPIO_LINE_DIRECTION_IN;
  1911. return GPIO_LINE_DIRECTION_OUT;
  1912. }
  1913. static void pic32_gpio_irq_ack(struct irq_data *data)
  1914. {
  1915. struct pic32_gpio_bank *bank = irqd_to_bank(data);
  1916. writel(0, bank->reg_base + CNF_REG);
  1917. }
  1918. static void pic32_gpio_irq_mask(struct irq_data *data)
  1919. {
  1920. struct pic32_gpio_bank *bank = irqd_to_bank(data);
  1921. writel(BIT(PIC32_CNCON_ON), bank->reg_base + PIC32_CLR(CNCON_REG));
  1922. }
  1923. static void pic32_gpio_irq_unmask(struct irq_data *data)
  1924. {
  1925. struct pic32_gpio_bank *bank = irqd_to_bank(data);
  1926. writel(BIT(PIC32_CNCON_ON), bank->reg_base + PIC32_SET(CNCON_REG));
  1927. }
  1928. static unsigned int pic32_gpio_irq_startup(struct irq_data *data)
  1929. {
  1930. struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
  1931. pic32_gpio_direction_input(chip, data->hwirq);
  1932. pic32_gpio_irq_unmask(data);
  1933. return 0;
  1934. }
  1935. static int pic32_gpio_irq_set_type(struct irq_data *data, unsigned int type)
  1936. {
  1937. struct pic32_gpio_bank *bank = irqd_to_bank(data);
  1938. u32 mask = BIT(data->hwirq);
  1939. switch (type & IRQ_TYPE_SENSE_MASK) {
  1940. case IRQ_TYPE_EDGE_RISING:
  1941. /* enable RISE */
  1942. writel(mask, bank->reg_base + PIC32_SET(CNEN_REG));
  1943. /* disable FALL */
  1944. writel(mask, bank->reg_base + PIC32_CLR(CNNE_REG));
  1945. /* enable EDGE */
  1946. writel(BIT(PIC32_CNCON_EDGE), bank->reg_base + PIC32_SET(CNCON_REG));
  1947. break;
  1948. case IRQ_TYPE_EDGE_FALLING:
  1949. /* disable RISE */
  1950. writel(mask, bank->reg_base + PIC32_CLR(CNEN_REG));
  1951. /* enable FALL */
  1952. writel(mask, bank->reg_base + PIC32_SET(CNNE_REG));
  1953. /* enable EDGE */
  1954. writel(BIT(PIC32_CNCON_EDGE), bank->reg_base + PIC32_SET(CNCON_REG));
  1955. break;
  1956. case IRQ_TYPE_EDGE_BOTH:
  1957. /* enable RISE */
  1958. writel(mask, bank->reg_base + PIC32_SET(CNEN_REG));
  1959. /* enable FALL */
  1960. writel(mask, bank->reg_base + PIC32_SET(CNNE_REG));
  1961. /* enable EDGE */
  1962. writel(BIT(PIC32_CNCON_EDGE), bank->reg_base + PIC32_SET(CNCON_REG));
  1963. break;
  1964. default:
  1965. return -EINVAL;
  1966. }
  1967. irq_set_handler_locked(data, handle_edge_irq);
  1968. return 0;
  1969. }
  1970. static u32 pic32_gpio_get_pending(struct gpio_chip *gc, unsigned long status)
  1971. {
  1972. struct pic32_gpio_bank *bank = gpiochip_get_data(gc);
  1973. u32 pending = 0;
  1974. u32 cnen_rise, cnne_fall;
  1975. u32 pin;
  1976. cnen_rise = readl(bank->reg_base + CNEN_REG);
  1977. cnne_fall = readl(bank->reg_base + CNNE_REG);
  1978. for_each_set_bit(pin, &status, BITS_PER_LONG) {
  1979. u32 mask = BIT(pin);
  1980. if ((mask & cnen_rise) || (mask && cnne_fall))
  1981. pending |= mask;
  1982. }
  1983. return pending;
  1984. }
  1985. static void pic32_gpio_irq_handler(struct irq_desc *desc)
  1986. {
  1987. struct gpio_chip *gc = irq_desc_get_handler_data(desc);
  1988. struct pic32_gpio_bank *bank = gpiochip_get_data(gc);
  1989. struct irq_chip *chip = irq_desc_get_chip(desc);
  1990. unsigned long pending;
  1991. unsigned int pin;
  1992. u32 stat;
  1993. chained_irq_enter(chip, desc);
  1994. stat = readl(bank->reg_base + CNF_REG);
  1995. pending = pic32_gpio_get_pending(gc, stat);
  1996. for_each_set_bit(pin, &pending, BITS_PER_LONG)
  1997. generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
  1998. chained_irq_exit(chip, desc);
  1999. }
  2000. #define GPIO_BANK(_bank, _npins) \
  2001. { \
  2002. .gpio_chip = { \
  2003. .label = "GPIO" #_bank, \
  2004. .request = gpiochip_generic_request, \
  2005. .free = gpiochip_generic_free, \
  2006. .get_direction = pic32_gpio_get_direction, \
  2007. .direction_input = pic32_gpio_direction_input, \
  2008. .direction_output = pic32_gpio_direction_output, \
  2009. .get = pic32_gpio_get, \
  2010. .set = pic32_gpio_set, \
  2011. .ngpio = _npins, \
  2012. .base = GPIO_BANK_START(_bank), \
  2013. .owner = THIS_MODULE, \
  2014. .can_sleep = 0, \
  2015. }, \
  2016. .irq_chip = { \
  2017. .name = "GPIO" #_bank, \
  2018. .irq_startup = pic32_gpio_irq_startup, \
  2019. .irq_ack = pic32_gpio_irq_ack, \
  2020. .irq_mask = pic32_gpio_irq_mask, \
  2021. .irq_unmask = pic32_gpio_irq_unmask, \
  2022. .irq_set_type = pic32_gpio_irq_set_type, \
  2023. }, \
  2024. }
  2025. static struct pic32_gpio_bank pic32_gpio_banks[] = {
  2026. GPIO_BANK(0, PINS_PER_BANK),
  2027. GPIO_BANK(1, PINS_PER_BANK),
  2028. GPIO_BANK(2, PINS_PER_BANK),
  2029. GPIO_BANK(3, PINS_PER_BANK),
  2030. GPIO_BANK(4, PINS_PER_BANK),
  2031. GPIO_BANK(5, PINS_PER_BANK),
  2032. GPIO_BANK(6, PINS_PER_BANK),
  2033. GPIO_BANK(7, PINS_PER_BANK),
  2034. GPIO_BANK(8, PINS_PER_BANK),
  2035. GPIO_BANK(9, PINS_PER_BANK),
  2036. };
  2037. static int pic32_pinctrl_probe(struct platform_device *pdev)
  2038. {
  2039. struct pic32_pinctrl *pctl;
  2040. struct resource *res;
  2041. int ret;
  2042. pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL);
  2043. if (!pctl)
  2044. return -ENOMEM;
  2045. pctl->dev = &pdev->dev;
  2046. dev_set_drvdata(&pdev->dev, pctl);
  2047. res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  2048. pctl->reg_base = devm_ioremap_resource(&pdev->dev, res);
  2049. if (IS_ERR(pctl->reg_base))
  2050. return PTR_ERR(pctl->reg_base);
  2051. pctl->clk = devm_clk_get(&pdev->dev, NULL);
  2052. if (IS_ERR(pctl->clk)) {
  2053. ret = PTR_ERR(pctl->clk);
  2054. dev_err(&pdev->dev, "clk get failed\n");
  2055. return ret;
  2056. }
  2057. ret = clk_prepare_enable(pctl->clk);
  2058. if (ret) {
  2059. dev_err(&pdev->dev, "clk enable failed\n");
  2060. return ret;
  2061. }
  2062. pctl->pins = pic32_pins;
  2063. pctl->npins = ARRAY_SIZE(pic32_pins);
  2064. pctl->functions = pic32_functions;
  2065. pctl->nfunctions = ARRAY_SIZE(pic32_functions);
  2066. pctl->groups = pic32_groups;
  2067. pctl->ngroups = ARRAY_SIZE(pic32_groups);
  2068. pctl->gpio_banks = pic32_gpio_banks;
  2069. pctl->nbanks = ARRAY_SIZE(pic32_gpio_banks);
  2070. pic32_pinctrl_desc.pins = pctl->pins;
  2071. pic32_pinctrl_desc.npins = pctl->npins;
  2072. pic32_pinctrl_desc.custom_params = pic32_mpp_bindings;
  2073. pic32_pinctrl_desc.num_custom_params = ARRAY_SIZE(pic32_mpp_bindings);
  2074. pctl->pctldev = devm_pinctrl_register(&pdev->dev, &pic32_pinctrl_desc,
  2075. pctl);
  2076. if (IS_ERR(pctl->pctldev)) {
  2077. dev_err(&pdev->dev, "Failed to register pinctrl device\n");
  2078. return PTR_ERR(pctl->pctldev);
  2079. }
  2080. return 0;
  2081. }
  2082. static int pic32_gpio_probe(struct platform_device *pdev)
  2083. {
  2084. struct device_node *np = pdev->dev.of_node;
  2085. struct pic32_gpio_bank *bank;
  2086. u32 id;
  2087. int irq, ret;
  2088. struct gpio_irq_chip *girq;
  2089. if (of_property_read_u32(np, "microchip,gpio-bank", &id)) {
  2090. dev_err(&pdev->dev, "microchip,gpio-bank property not found\n");
  2091. return -EINVAL;
  2092. }
  2093. if (id >= ARRAY_SIZE(pic32_gpio_banks)) {
  2094. dev_err(&pdev->dev, "invalid microchip,gpio-bank property\n");
  2095. return -EINVAL;
  2096. }
  2097. bank = &pic32_gpio_banks[id];
  2098. bank->reg_base = devm_platform_ioremap_resource(pdev, 0);
  2099. if (IS_ERR(bank->reg_base))
  2100. return PTR_ERR(bank->reg_base);
  2101. irq = platform_get_irq(pdev, 0);
  2102. if (irq < 0)
  2103. return irq;
  2104. bank->clk = devm_clk_get(&pdev->dev, NULL);
  2105. if (IS_ERR(bank->clk)) {
  2106. ret = PTR_ERR(bank->clk);
  2107. dev_err(&pdev->dev, "clk get failed\n");
  2108. return ret;
  2109. }
  2110. ret = clk_prepare_enable(bank->clk);
  2111. if (ret) {
  2112. dev_err(&pdev->dev, "clk enable failed\n");
  2113. return ret;
  2114. }
  2115. bank->gpio_chip.parent = &pdev->dev;
  2116. bank->gpio_chip.of_node = np;
  2117. girq = &bank->gpio_chip.irq;
  2118. girq->chip = &bank->irq_chip;
  2119. girq->parent_handler = pic32_gpio_irq_handler;
  2120. girq->num_parents = 1;
  2121. girq->parents = devm_kcalloc(&pdev->dev, 1, sizeof(*girq->parents),
  2122. GFP_KERNEL);
  2123. if (!girq->parents)
  2124. return -ENOMEM;
  2125. girq->default_type = IRQ_TYPE_NONE;
  2126. girq->handler = handle_level_irq;
  2127. girq->parents[0] = irq;
  2128. ret = gpiochip_add_data(&bank->gpio_chip, bank);
  2129. if (ret < 0) {
  2130. dev_err(&pdev->dev, "Failed to add GPIO chip %u: %d\n",
  2131. id, ret);
  2132. return ret;
  2133. }
  2134. return 0;
  2135. }
  2136. static const struct of_device_id pic32_pinctrl_of_match[] = {
  2137. { .compatible = "microchip,pic32mzda-pinctrl", },
  2138. { },
  2139. };
  2140. static struct platform_driver pic32_pinctrl_driver = {
  2141. .driver = {
  2142. .name = "pic32-pinctrl",
  2143. .of_match_table = pic32_pinctrl_of_match,
  2144. .suppress_bind_attrs = true,
  2145. },
  2146. .probe = pic32_pinctrl_probe,
  2147. };
  2148. static const struct of_device_id pic32_gpio_of_match[] = {
  2149. { .compatible = "microchip,pic32mzda-gpio", },
  2150. { },
  2151. };
  2152. static struct platform_driver pic32_gpio_driver = {
  2153. .driver = {
  2154. .name = "pic32-gpio",
  2155. .of_match_table = pic32_gpio_of_match,
  2156. .suppress_bind_attrs = true,
  2157. },
  2158. .probe = pic32_gpio_probe,
  2159. };
  2160. static int __init pic32_gpio_register(void)
  2161. {
  2162. return platform_driver_register(&pic32_gpio_driver);
  2163. }
  2164. arch_initcall(pic32_gpio_register);
  2165. static int __init pic32_pinctrl_register(void)
  2166. {
  2167. return platform_driver_register(&pic32_pinctrl_driver);
  2168. }
  2169. arch_initcall(pic32_pinctrl_register);