cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-pic32.c (82754B)


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