0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/clk.h>
0009 #include <linux/gpio/driver.h>
0010 #include <linux/interrupt.h>
0011 #include <linux/io.h>
0012 #include <linux/irq.h>
0013 #include <linux/of.h>
0014 #include <linux/of_device.h>
0015 #include <linux/pinctrl/pinconf.h>
0016 #include <linux/pinctrl/pinconf-generic.h>
0017 #include <linux/pinctrl/pinctrl.h>
0018 #include <linux/pinctrl/pinmux.h>
0019 #include <linux/platform_device.h>
0020 #include <linux/slab.h>
0021 #include <linux/spinlock.h>
0022
0023 #include <asm/mach-pic32/pic32.h>
0024
0025 #include "pinctrl-utils.h"
0026 #include "pinctrl-pic32.h"
0027
0028 #define PINS_PER_BANK 16
0029
0030 #define PIC32_CNCON_EDGE 11
0031 #define PIC32_CNCON_ON 15
0032
0033 #define PIN_CONFIG_MICROCHIP_DIGITAL (PIN_CONFIG_END + 1)
0034 #define PIN_CONFIG_MICROCHIP_ANALOG (PIN_CONFIG_END + 2)
0035
0036 static const struct pinconf_generic_params pic32_mpp_bindings[] = {
0037 {"microchip,digital", PIN_CONFIG_MICROCHIP_DIGITAL, 0},
0038 {"microchip,analog", PIN_CONFIG_MICROCHIP_ANALOG, 0},
0039 };
0040
0041 #define GPIO_BANK_START(bank) ((bank) * PINS_PER_BANK)
0042
0043 struct pic32_function {
0044 const char *name;
0045 const char * const *groups;
0046 unsigned int ngroups;
0047 };
0048
0049 struct pic32_pin_group {
0050 const char *name;
0051 unsigned int pin;
0052 struct pic32_desc_function *functions;
0053 };
0054
0055 struct pic32_desc_function {
0056 const char *name;
0057 u32 muxreg;
0058 u32 muxval;
0059 };
0060
0061 struct pic32_gpio_bank {
0062 void __iomem *reg_base;
0063 struct gpio_chip gpio_chip;
0064 struct irq_chip irq_chip;
0065 struct clk *clk;
0066 };
0067
0068 struct pic32_pinctrl {
0069 void __iomem *reg_base;
0070 struct device *dev;
0071 struct pinctrl_dev *pctldev;
0072 const struct pinctrl_pin_desc *pins;
0073 unsigned int npins;
0074 const struct pic32_function *functions;
0075 unsigned int nfunctions;
0076 const struct pic32_pin_group *groups;
0077 unsigned int ngroups;
0078 struct pic32_gpio_bank *gpio_banks;
0079 unsigned int nbanks;
0080 struct clk *clk;
0081 };
0082
0083 static const struct pinctrl_pin_desc pic32_pins[] = {
0084 PINCTRL_PIN(0, "A0"),
0085 PINCTRL_PIN(1, "A1"),
0086 PINCTRL_PIN(2, "A2"),
0087 PINCTRL_PIN(3, "A3"),
0088 PINCTRL_PIN(4, "A4"),
0089 PINCTRL_PIN(5, "A5"),
0090 PINCTRL_PIN(6, "A6"),
0091 PINCTRL_PIN(7, "A7"),
0092 PINCTRL_PIN(8, "A8"),
0093 PINCTRL_PIN(9, "A9"),
0094 PINCTRL_PIN(10, "A10"),
0095 PINCTRL_PIN(11, "A11"),
0096 PINCTRL_PIN(12, "A12"),
0097 PINCTRL_PIN(13, "A13"),
0098 PINCTRL_PIN(14, "A14"),
0099 PINCTRL_PIN(15, "A15"),
0100 PINCTRL_PIN(16, "B0"),
0101 PINCTRL_PIN(17, "B1"),
0102 PINCTRL_PIN(18, "B2"),
0103 PINCTRL_PIN(19, "B3"),
0104 PINCTRL_PIN(20, "B4"),
0105 PINCTRL_PIN(21, "B5"),
0106 PINCTRL_PIN(22, "B6"),
0107 PINCTRL_PIN(23, "B7"),
0108 PINCTRL_PIN(24, "B8"),
0109 PINCTRL_PIN(25, "B9"),
0110 PINCTRL_PIN(26, "B10"),
0111 PINCTRL_PIN(27, "B11"),
0112 PINCTRL_PIN(28, "B12"),
0113 PINCTRL_PIN(29, "B13"),
0114 PINCTRL_PIN(30, "B14"),
0115 PINCTRL_PIN(31, "B15"),
0116 PINCTRL_PIN(33, "C1"),
0117 PINCTRL_PIN(34, "C2"),
0118 PINCTRL_PIN(35, "C3"),
0119 PINCTRL_PIN(36, "C4"),
0120 PINCTRL_PIN(44, "C12"),
0121 PINCTRL_PIN(45, "C13"),
0122 PINCTRL_PIN(46, "C14"),
0123 PINCTRL_PIN(47, "C15"),
0124 PINCTRL_PIN(48, "D0"),
0125 PINCTRL_PIN(49, "D1"),
0126 PINCTRL_PIN(50, "D2"),
0127 PINCTRL_PIN(51, "D3"),
0128 PINCTRL_PIN(52, "D4"),
0129 PINCTRL_PIN(53, "D5"),
0130 PINCTRL_PIN(54, "D6"),
0131 PINCTRL_PIN(55, "D7"),
0132 PINCTRL_PIN(57, "D9"),
0133 PINCTRL_PIN(58, "D10"),
0134 PINCTRL_PIN(59, "D11"),
0135 PINCTRL_PIN(60, "D12"),
0136 PINCTRL_PIN(61, "D13"),
0137 PINCTRL_PIN(62, "D14"),
0138 PINCTRL_PIN(63, "D15"),
0139 PINCTRL_PIN(64, "E0"),
0140 PINCTRL_PIN(65, "E1"),
0141 PINCTRL_PIN(66, "E2"),
0142 PINCTRL_PIN(67, "E3"),
0143 PINCTRL_PIN(68, "E4"),
0144 PINCTRL_PIN(69, "E5"),
0145 PINCTRL_PIN(70, "E6"),
0146 PINCTRL_PIN(71, "E7"),
0147 PINCTRL_PIN(72, "E8"),
0148 PINCTRL_PIN(73, "E9"),
0149 PINCTRL_PIN(80, "F0"),
0150 PINCTRL_PIN(81, "F1"),
0151 PINCTRL_PIN(82, "F2"),
0152 PINCTRL_PIN(83, "F3"),
0153 PINCTRL_PIN(84, "F4"),
0154 PINCTRL_PIN(85, "F5"),
0155 PINCTRL_PIN(88, "F8"),
0156 PINCTRL_PIN(92, "F12"),
0157 PINCTRL_PIN(93, "F13"),
0158 PINCTRL_PIN(96, "G0"),
0159 PINCTRL_PIN(97, "G1"),
0160 PINCTRL_PIN(102, "G6"),
0161 PINCTRL_PIN(103, "G7"),
0162 PINCTRL_PIN(104, "G8"),
0163 PINCTRL_PIN(105, "G9"),
0164 PINCTRL_PIN(108, "G12"),
0165 PINCTRL_PIN(109, "G13"),
0166 PINCTRL_PIN(110, "G14"),
0167 PINCTRL_PIN(111, "G15"),
0168 PINCTRL_PIN(112, "H0"),
0169 PINCTRL_PIN(113, "H1"),
0170 PINCTRL_PIN(114, "H2"),
0171 PINCTRL_PIN(115, "H3"),
0172 PINCTRL_PIN(116, "H4"),
0173 PINCTRL_PIN(117, "H5"),
0174 PINCTRL_PIN(118, "H6"),
0175 PINCTRL_PIN(119, "H7"),
0176 PINCTRL_PIN(120, "H8"),
0177 PINCTRL_PIN(121, "H9"),
0178 PINCTRL_PIN(122, "H10"),
0179 PINCTRL_PIN(123, "H11"),
0180 PINCTRL_PIN(124, "H12"),
0181 PINCTRL_PIN(125, "H13"),
0182 PINCTRL_PIN(126, "H14"),
0183 PINCTRL_PIN(127, "H15"),
0184 PINCTRL_PIN(128, "J0"),
0185 PINCTRL_PIN(129, "J1"),
0186 PINCTRL_PIN(130, "J2"),
0187 PINCTRL_PIN(131, "J3"),
0188 PINCTRL_PIN(132, "J4"),
0189 PINCTRL_PIN(133, "J5"),
0190 PINCTRL_PIN(134, "J6"),
0191 PINCTRL_PIN(135, "J7"),
0192 PINCTRL_PIN(136, "J8"),
0193 PINCTRL_PIN(137, "J9"),
0194 PINCTRL_PIN(138, "J10"),
0195 PINCTRL_PIN(139, "J11"),
0196 PINCTRL_PIN(140, "J12"),
0197 PINCTRL_PIN(141, "J13"),
0198 PINCTRL_PIN(142, "J14"),
0199 PINCTRL_PIN(143, "J15"),
0200 PINCTRL_PIN(144, "K0"),
0201 PINCTRL_PIN(145, "K1"),
0202 PINCTRL_PIN(146, "K2"),
0203 PINCTRL_PIN(147, "K3"),
0204 PINCTRL_PIN(148, "K4"),
0205 PINCTRL_PIN(149, "K5"),
0206 PINCTRL_PIN(150, "K6"),
0207 PINCTRL_PIN(151, "K7"),
0208 };
0209
0210 static const char * const pic32_input0_group[] = {
0211 "D2", "G8", "F4", "F1", "B9", "B10", "C14", "B5",
0212 "C1", "D14", "G1", "A14", "D6",
0213 };
0214
0215 static const char * const pic32_input1_group[] = {
0216 "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
0217 "B3", "C4", "G0", "A15", "D7",
0218 };
0219
0220 static const char * const pic32_input2_group[] = {
0221 "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
0222 "F12", "D12", "F8", "C3", "E9",
0223 };
0224
0225 static const char * const pic32_input3_group[] = {
0226 "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
0227 "F2", "C2", "E8",
0228 };
0229
0230 static const char * const pic32_output0_group[] = {
0231 "D2", "G8", "F4", "D10", "F1", "B9", "B10", "C14",
0232 "B5", "C1", "D14", "G1", "A14", "D6",
0233 };
0234
0235 static const char * const pic32_output0_1_group[] = {
0236 "D2", "G8", "F4", "D10", "F1", "B9", "B10", "C14",
0237 "B5", "C1", "D14", "G1", "A14", "D6",
0238 "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
0239 "B3", "C4", "D15", "G0", "A15", "D7",
0240 };
0241
0242 static const char *const pic32_output1_group[] = {
0243 "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
0244 "B3", "C4", "D15", "G0", "A15", "D7",
0245 };
0246
0247 static const char *const pic32_output1_3_group[] = {
0248 "D3", "G7", "F5", "D11", "F0", "B1", "E5", "C13",
0249 "B3", "C4", "D15", "G0", "A15", "D7",
0250 "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
0251 "C2", "E8", "F2",
0252 };
0253
0254 static const char * const pic32_output2_group[] = {
0255 "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
0256 "F12", "D12", "F8", "C3", "E9",
0257 };
0258
0259 static const char * const pic32_output2_3_group[] = {
0260 "D9", "G6", "B8", "B15", "D4", "B0", "E3", "B7",
0261 "F12", "D12", "F8", "C3", "E9",
0262 "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
0263 "C2", "E8", "F2",
0264 };
0265
0266 static const char * const pic32_output3_group[] = {
0267 "G9", "B14", "D0", "B6", "D5", "B2", "F3", "F13",
0268 "C2", "E8", "F2",
0269 };
0270
0271 #define FUNCTION(_name, _gr) \
0272 { \
0273 .name = #_name, \
0274 .groups = pic32_##_gr##_group, \
0275 .ngroups = ARRAY_SIZE(pic32_##_gr##_group), \
0276 }
0277
0278 static const struct pic32_function pic32_functions[] = {
0279 FUNCTION(INT3, input0),
0280 FUNCTION(T2CK, input0),
0281 FUNCTION(T6CK, input0),
0282 FUNCTION(IC3, input0),
0283 FUNCTION(IC7, input0),
0284 FUNCTION(U1RX, input0),
0285 FUNCTION(U2CTS, input0),
0286 FUNCTION(U5RX, input0),
0287 FUNCTION(U6CTS, input0),
0288 FUNCTION(SDI1, input0),
0289 FUNCTION(SDI3, input0),
0290 FUNCTION(SDI5, input0),
0291 FUNCTION(SS6IN, input0),
0292 FUNCTION(REFCLKI1, input0),
0293 FUNCTION(INT4, input1),
0294 FUNCTION(T5CK, input1),
0295 FUNCTION(T7CK, input1),
0296 FUNCTION(IC4, input1),
0297 FUNCTION(IC8, input1),
0298 FUNCTION(U3RX, input1),
0299 FUNCTION(U4CTS, input1),
0300 FUNCTION(SDI2, input1),
0301 FUNCTION(SDI4, input1),
0302 FUNCTION(C1RX, input1),
0303 FUNCTION(REFCLKI4, input1),
0304 FUNCTION(INT2, input2),
0305 FUNCTION(T3CK, input2),
0306 FUNCTION(T8CK, input2),
0307 FUNCTION(IC2, input2),
0308 FUNCTION(IC5, input2),
0309 FUNCTION(IC9, input2),
0310 FUNCTION(U1CTS, input2),
0311 FUNCTION(U2RX, input2),
0312 FUNCTION(U5CTS, input2),
0313 FUNCTION(SS1IN, input2),
0314 FUNCTION(SS3IN, input2),
0315 FUNCTION(SS4IN, input2),
0316 FUNCTION(SS5IN, input2),
0317 FUNCTION(C2RX, input2),
0318 FUNCTION(INT1, input3),
0319 FUNCTION(T4CK, input3),
0320 FUNCTION(T9CK, input3),
0321 FUNCTION(IC1, input3),
0322 FUNCTION(IC6, input3),
0323 FUNCTION(U3CTS, input3),
0324 FUNCTION(U4RX, input3),
0325 FUNCTION(U6RX, input3),
0326 FUNCTION(SS2IN, input3),
0327 FUNCTION(SDI6, input3),
0328 FUNCTION(OCFA, input3),
0329 FUNCTION(REFCLKI3, input3),
0330 FUNCTION(U3TX, output0),
0331 FUNCTION(U4RTS, output0),
0332 FUNCTION(SDO1, output0_1),
0333 FUNCTION(SDO2, output0_1),
0334 FUNCTION(SDO3, output0_1),
0335 FUNCTION(SDO5, output0_1),
0336 FUNCTION(SS6OUT, output0),
0337 FUNCTION(OC3, output0),
0338 FUNCTION(OC6, output0),
0339 FUNCTION(REFCLKO4, output0),
0340 FUNCTION(C2OUT, output0),
0341 FUNCTION(C1TX, output0),
0342 FUNCTION(U1TX, output1),
0343 FUNCTION(U2RTS, output1),
0344 FUNCTION(U5TX, output1),
0345 FUNCTION(U6RTS, output1),
0346 FUNCTION(SDO4, output1_3),
0347 FUNCTION(OC4, output1),
0348 FUNCTION(OC7, output1),
0349 FUNCTION(REFCLKO1, output1),
0350 FUNCTION(U3RTS, output2),
0351 FUNCTION(U4TX, output2),
0352 FUNCTION(U6TX, output2_3),
0353 FUNCTION(SS1OUT, output2),
0354 FUNCTION(SS3OUT, output2),
0355 FUNCTION(SS4OUT, output2),
0356 FUNCTION(SS5OUT, output2),
0357 FUNCTION(SDO6, output2_3),
0358 FUNCTION(OC5, output2),
0359 FUNCTION(OC8, output2),
0360 FUNCTION(C1OUT, output2),
0361 FUNCTION(REFCLKO3, output2),
0362 FUNCTION(U1RTS, output3),
0363 FUNCTION(U2TX, output3),
0364 FUNCTION(U5RTS, output3),
0365 FUNCTION(SS2OUT, output3),
0366 FUNCTION(OC2, output3),
0367 FUNCTION(OC1, output3),
0368 FUNCTION(OC9, output3),
0369 FUNCTION(C2TX, output3),
0370 };
0371
0372 #define PIC32_PINCTRL_GROUP(_pin, _name, ...) \
0373 { \
0374 .name = #_name, \
0375 .pin = _pin, \
0376 .functions = (struct pic32_desc_function[]){ \
0377 __VA_ARGS__, { } }, \
0378 }
0379
0380 #define PIC32_PINCTRL_FUNCTION(_name, _muxreg, _muxval) \
0381 { \
0382 .name = #_name, \
0383 .muxreg = _muxreg, \
0384 .muxval = _muxval, \
0385 }
0386
0387 static const struct pic32_pin_group pic32_groups[] = {
0388 PIC32_PINCTRL_GROUP(14, A14,
0389 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 13),
0390 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 13),
0391 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 13),
0392 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 13),
0393 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 13),
0394 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 13),
0395 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 13),
0396 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 13),
0397 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 13),
0398 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 13),
0399 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 13),
0400 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 13),
0401 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 13),
0402 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 13),
0403 PIC32_PINCTRL_FUNCTION(U3TX, RPA14R, 1),
0404 PIC32_PINCTRL_FUNCTION(U4RTS, RPA14R, 2),
0405 PIC32_PINCTRL_FUNCTION(SDO1, RPA14R, 5),
0406 PIC32_PINCTRL_FUNCTION(SDO2, RPA14R, 6),
0407 PIC32_PINCTRL_FUNCTION(SDO3, RPA14R, 7),
0408 PIC32_PINCTRL_FUNCTION(SDO5, RPA14R, 9),
0409 PIC32_PINCTRL_FUNCTION(SS6OUT, RPA14R, 10),
0410 PIC32_PINCTRL_FUNCTION(OC3, RPA14R, 11),
0411 PIC32_PINCTRL_FUNCTION(OC6, RPA14R, 12),
0412 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPA14R, 13),
0413 PIC32_PINCTRL_FUNCTION(C2OUT, RPA14R, 14),
0414 PIC32_PINCTRL_FUNCTION(C1TX, RPA14R, 15)),
0415 PIC32_PINCTRL_GROUP(15, A15,
0416 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 13),
0417 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 13),
0418 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 13),
0419 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 13),
0420 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 13),
0421 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 13),
0422 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 13),
0423 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 13),
0424 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 13),
0425 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 13),
0426 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 13),
0427 PIC32_PINCTRL_FUNCTION(U1TX, RPA15R, 1),
0428 PIC32_PINCTRL_FUNCTION(U2RTS, RPA15R, 2),
0429 PIC32_PINCTRL_FUNCTION(U5TX, RPA15R, 3),
0430 PIC32_PINCTRL_FUNCTION(U6RTS, RPA15R, 4),
0431 PIC32_PINCTRL_FUNCTION(SDO1, RPA15R, 5),
0432 PIC32_PINCTRL_FUNCTION(SDO2, RPA15R, 6),
0433 PIC32_PINCTRL_FUNCTION(SDO3, RPA15R, 7),
0434 PIC32_PINCTRL_FUNCTION(SDO4, RPA15R, 8),
0435 PIC32_PINCTRL_FUNCTION(SDO5, RPA15R, 9),
0436 PIC32_PINCTRL_FUNCTION(OC4, RPA15R, 11),
0437 PIC32_PINCTRL_FUNCTION(OC7, RPA15R, 12),
0438 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPA15R, 15)),
0439 PIC32_PINCTRL_GROUP(16, B0,
0440 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 5),
0441 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 5),
0442 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 5),
0443 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 5),
0444 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 5),
0445 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 5),
0446 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 5),
0447 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 5),
0448 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 5),
0449 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 5),
0450 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 5),
0451 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 5),
0452 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 5),
0453 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 5),
0454 PIC32_PINCTRL_FUNCTION(U3RTS, RPB0R, 1),
0455 PIC32_PINCTRL_FUNCTION(U4TX, RPB0R, 2),
0456 PIC32_PINCTRL_FUNCTION(U6TX, RPB0R, 4),
0457 PIC32_PINCTRL_FUNCTION(SS1OUT, RPB0R, 5),
0458 PIC32_PINCTRL_FUNCTION(SS3OUT, RPB0R, 7),
0459 PIC32_PINCTRL_FUNCTION(SS4OUT, RPB0R, 8),
0460 PIC32_PINCTRL_FUNCTION(SS5OUT, RPB0R, 9),
0461 PIC32_PINCTRL_FUNCTION(SDO6, RPB0R, 10),
0462 PIC32_PINCTRL_FUNCTION(OC5, RPB0R, 11),
0463 PIC32_PINCTRL_FUNCTION(OC8, RPB0R, 12),
0464 PIC32_PINCTRL_FUNCTION(C1OUT, RPB0R, 14),
0465 PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB0R, 15)),
0466 PIC32_PINCTRL_GROUP(17, B1,
0467 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 5),
0468 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 5),
0469 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 5),
0470 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 5),
0471 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 5),
0472 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 5),
0473 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 5),
0474 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 5),
0475 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 5),
0476 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 5),
0477 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 5),
0478 PIC32_PINCTRL_FUNCTION(U1TX, RPB1R, 1),
0479 PIC32_PINCTRL_FUNCTION(U2RTS, RPB1R, 2),
0480 PIC32_PINCTRL_FUNCTION(U5TX, RPB1R, 3),
0481 PIC32_PINCTRL_FUNCTION(U6RTS, RPB1R, 4),
0482 PIC32_PINCTRL_FUNCTION(SDO1, RPB1R, 5),
0483 PIC32_PINCTRL_FUNCTION(SDO2, RPB1R, 6),
0484 PIC32_PINCTRL_FUNCTION(SDO3, RPB1R, 7),
0485 PIC32_PINCTRL_FUNCTION(SDO4, RPB1R, 8),
0486 PIC32_PINCTRL_FUNCTION(SDO5, RPB1R, 9),
0487 PIC32_PINCTRL_FUNCTION(OC4, RPB1R, 11),
0488 PIC32_PINCTRL_FUNCTION(OC7, RPB1R, 12),
0489 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPB1R, 15)),
0490 PIC32_PINCTRL_GROUP(18, B2,
0491 PIC32_PINCTRL_FUNCTION(INT1, INT1R, 7),
0492 PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 7),
0493 PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 7),
0494 PIC32_PINCTRL_FUNCTION(IC1, IC1R, 7),
0495 PIC32_PINCTRL_FUNCTION(IC6, IC6R, 7),
0496 PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 7),
0497 PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 7),
0498 PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 7),
0499 PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 7),
0500 PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 7),
0501 PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 7),
0502 PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 7),
0503 PIC32_PINCTRL_FUNCTION(U1RTS, RPB2R, 1),
0504 PIC32_PINCTRL_FUNCTION(U2TX, RPB2R, 2),
0505 PIC32_PINCTRL_FUNCTION(U5RTS, RPB2R, 3),
0506 PIC32_PINCTRL_FUNCTION(U6TX, RPB2R, 4),
0507 PIC32_PINCTRL_FUNCTION(SS2OUT, RPB2R, 6),
0508 PIC32_PINCTRL_FUNCTION(SDO4, RPB2R, 8),
0509 PIC32_PINCTRL_FUNCTION(SDO6, RPB2R, 10),
0510 PIC32_PINCTRL_FUNCTION(OC2, RPB2R, 11),
0511 PIC32_PINCTRL_FUNCTION(OC1, RPB2R, 12),
0512 PIC32_PINCTRL_FUNCTION(OC9, RPB2R, 13),
0513 PIC32_PINCTRL_FUNCTION(C2TX, RPB2R, 15)),
0514 PIC32_PINCTRL_GROUP(19, B3,
0515 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 8),
0516 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 8),
0517 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 8),
0518 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 8),
0519 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 8),
0520 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 8),
0521 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 8),
0522 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 8),
0523 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 8),
0524 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 8),
0525 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 8),
0526 PIC32_PINCTRL_FUNCTION(U1TX, RPB3R, 1),
0527 PIC32_PINCTRL_FUNCTION(U2RTS, RPB3R, 2),
0528 PIC32_PINCTRL_FUNCTION(U5TX, RPB3R, 3),
0529 PIC32_PINCTRL_FUNCTION(U6RTS, RPB3R, 4),
0530 PIC32_PINCTRL_FUNCTION(SDO1, RPB3R, 5),
0531 PIC32_PINCTRL_FUNCTION(SDO2, RPB3R, 6),
0532 PIC32_PINCTRL_FUNCTION(SDO3, RPB3R, 7),
0533 PIC32_PINCTRL_FUNCTION(SDO4, RPB3R, 8),
0534 PIC32_PINCTRL_FUNCTION(SDO5, RPB3R, 9),
0535 PIC32_PINCTRL_FUNCTION(OC4, RPB3R, 11),
0536 PIC32_PINCTRL_FUNCTION(OC7, RPB3R, 12),
0537 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPB3R, 15)),
0538 PIC32_PINCTRL_GROUP(21, B5,
0539 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 8),
0540 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 8),
0541 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 8),
0542 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 8),
0543 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 8),
0544 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 8),
0545 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 8),
0546 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 8),
0547 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 8),
0548 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 8),
0549 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 8),
0550 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 8),
0551 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 8),
0552 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 8),
0553 PIC32_PINCTRL_FUNCTION(U3TX, RPB5R, 1),
0554 PIC32_PINCTRL_FUNCTION(U4RTS, RPB5R, 2),
0555 PIC32_PINCTRL_FUNCTION(SDO1, RPB5R, 5),
0556 PIC32_PINCTRL_FUNCTION(SDO2, RPB5R, 6),
0557 PIC32_PINCTRL_FUNCTION(SDO3, RPB5R, 7),
0558 PIC32_PINCTRL_FUNCTION(SDO5, RPB5R, 9),
0559 PIC32_PINCTRL_FUNCTION(SS6OUT, RPB5R, 10),
0560 PIC32_PINCTRL_FUNCTION(OC3, RPB5R, 11),
0561 PIC32_PINCTRL_FUNCTION(OC6, RPB5R, 12),
0562 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB5R, 13),
0563 PIC32_PINCTRL_FUNCTION(C2OUT, RPB5R, 14),
0564 PIC32_PINCTRL_FUNCTION(C1TX, RPB5R, 15)),
0565 PIC32_PINCTRL_GROUP(22, B6,
0566 PIC32_PINCTRL_FUNCTION(INT1, INT1R, 4),
0567 PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 4),
0568 PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 4),
0569 PIC32_PINCTRL_FUNCTION(IC1, IC1R, 4),
0570 PIC32_PINCTRL_FUNCTION(IC6, IC6R, 4),
0571 PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 4),
0572 PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 4),
0573 PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 4),
0574 PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 4),
0575 PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 4),
0576 PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 4),
0577 PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 4),
0578 PIC32_PINCTRL_FUNCTION(U1RTS, RPB6R, 1),
0579 PIC32_PINCTRL_FUNCTION(U2TX, RPB6R, 2),
0580 PIC32_PINCTRL_FUNCTION(U5RTS, RPB6R, 3),
0581 PIC32_PINCTRL_FUNCTION(U6TX, RPB6R, 4),
0582 PIC32_PINCTRL_FUNCTION(SS2OUT, RPB6R, 6),
0583 PIC32_PINCTRL_FUNCTION(SDO4, RPB6R, 8),
0584 PIC32_PINCTRL_FUNCTION(SDO6, RPB6R, 10),
0585 PIC32_PINCTRL_FUNCTION(OC2, RPB6R, 11),
0586 PIC32_PINCTRL_FUNCTION(OC1, RPB6R, 12),
0587 PIC32_PINCTRL_FUNCTION(OC9, RPB6R, 13),
0588 PIC32_PINCTRL_FUNCTION(C2TX, RPB6R, 15)),
0589 PIC32_PINCTRL_GROUP(23, B7,
0590 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 7),
0591 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 7),
0592 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 7),
0593 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 7),
0594 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 7),
0595 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 7),
0596 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 7),
0597 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 7),
0598 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 7),
0599 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 7),
0600 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 7),
0601 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 7),
0602 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 7),
0603 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 7),
0604 PIC32_PINCTRL_FUNCTION(U3RTS, RPB7R, 1),
0605 PIC32_PINCTRL_FUNCTION(U4TX, RPB7R, 2),
0606 PIC32_PINCTRL_FUNCTION(U6TX, RPB7R, 4),
0607 PIC32_PINCTRL_FUNCTION(SS1OUT, RPB7R, 5),
0608 PIC32_PINCTRL_FUNCTION(SS3OUT, RPB7R, 7),
0609 PIC32_PINCTRL_FUNCTION(SS4OUT, RPB7R, 8),
0610 PIC32_PINCTRL_FUNCTION(SS5OUT, RPB7R, 9),
0611 PIC32_PINCTRL_FUNCTION(SDO6, RPB7R, 10),
0612 PIC32_PINCTRL_FUNCTION(OC5, RPB7R, 11),
0613 PIC32_PINCTRL_FUNCTION(OC8, RPB7R, 12),
0614 PIC32_PINCTRL_FUNCTION(C1OUT, RPB7R, 14),
0615 PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB7R, 15)),
0616 PIC32_PINCTRL_GROUP(24, B8,
0617 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 2),
0618 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 2),
0619 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 2),
0620 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 2),
0621 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 2),
0622 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 2),
0623 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 2),
0624 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 2),
0625 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 2),
0626 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 2),
0627 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 2),
0628 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 2),
0629 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 2),
0630 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 2),
0631 PIC32_PINCTRL_FUNCTION(U3RTS, RPB8R, 1),
0632 PIC32_PINCTRL_FUNCTION(U4TX, RPB8R, 2),
0633 PIC32_PINCTRL_FUNCTION(U6TX, RPB8R, 4),
0634 PIC32_PINCTRL_FUNCTION(SS1OUT, RPB8R, 5),
0635 PIC32_PINCTRL_FUNCTION(SS3OUT, RPB8R, 7),
0636 PIC32_PINCTRL_FUNCTION(SS4OUT, RPB8R, 8),
0637 PIC32_PINCTRL_FUNCTION(SS5OUT, RPB8R, 9),
0638 PIC32_PINCTRL_FUNCTION(SDO6, RPB8R, 10),
0639 PIC32_PINCTRL_FUNCTION(OC5, RPB8R, 11),
0640 PIC32_PINCTRL_FUNCTION(OC8, RPB8R, 12),
0641 PIC32_PINCTRL_FUNCTION(C1OUT, RPB8R, 14),
0642 PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB8R, 15)),
0643 PIC32_PINCTRL_GROUP(25, B9,
0644 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 5),
0645 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 5),
0646 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 5),
0647 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 5),
0648 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 5),
0649 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 5),
0650 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 5),
0651 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 5),
0652 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 5),
0653 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 5),
0654 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 5),
0655 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 5),
0656 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 5),
0657 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 5),
0658 PIC32_PINCTRL_FUNCTION(U3TX, RPB9R, 1),
0659 PIC32_PINCTRL_FUNCTION(U4RTS, RPB9R, 2),
0660 PIC32_PINCTRL_FUNCTION(SDO1, RPB9R, 5),
0661 PIC32_PINCTRL_FUNCTION(SDO2, RPB9R, 6),
0662 PIC32_PINCTRL_FUNCTION(SDO3, RPB9R, 7),
0663 PIC32_PINCTRL_FUNCTION(SDO5, RPB9R, 9),
0664 PIC32_PINCTRL_FUNCTION(SS6OUT, RPB9R, 10),
0665 PIC32_PINCTRL_FUNCTION(OC3, RPB9R, 11),
0666 PIC32_PINCTRL_FUNCTION(OC6, RPB9R, 12),
0667 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB9R, 13),
0668 PIC32_PINCTRL_FUNCTION(C2OUT, RPB9R, 14),
0669 PIC32_PINCTRL_FUNCTION(C1TX, RPB9R, 15)),
0670 PIC32_PINCTRL_GROUP(26, B10,
0671 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 6),
0672 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 6),
0673 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 6),
0674 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 6),
0675 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 6),
0676 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 6),
0677 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 6),
0678 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 6),
0679 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 6),
0680 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 6),
0681 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 6),
0682 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 6),
0683 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 6),
0684 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 6),
0685 PIC32_PINCTRL_FUNCTION(U3TX, RPB10R, 1),
0686 PIC32_PINCTRL_FUNCTION(U4RTS, RPB10R, 2),
0687 PIC32_PINCTRL_FUNCTION(SDO1, RPB10R, 5),
0688 PIC32_PINCTRL_FUNCTION(SDO2, RPB10R, 6),
0689 PIC32_PINCTRL_FUNCTION(SDO3, RPB10R, 7),
0690 PIC32_PINCTRL_FUNCTION(SDO5, RPB10R, 9),
0691 PIC32_PINCTRL_FUNCTION(SS6OUT, RPB10R, 10),
0692 PIC32_PINCTRL_FUNCTION(OC3, RPB10R, 11),
0693 PIC32_PINCTRL_FUNCTION(OC6, RPB10R, 12),
0694 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPB10R, 13),
0695 PIC32_PINCTRL_FUNCTION(C2OUT, RPB10R, 14),
0696 PIC32_PINCTRL_FUNCTION(C1TX, RPB10R, 15)),
0697 PIC32_PINCTRL_GROUP(30, B14,
0698 PIC32_PINCTRL_FUNCTION(INT1, INT1R, 2),
0699 PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 2),
0700 PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 2),
0701 PIC32_PINCTRL_FUNCTION(IC1, IC1R, 2),
0702 PIC32_PINCTRL_FUNCTION(IC6, IC6R, 2),
0703 PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 2),
0704 PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 2),
0705 PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 2),
0706 PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 2),
0707 PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 2),
0708 PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 2),
0709 PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 2),
0710 PIC32_PINCTRL_FUNCTION(U1RTS, RPB14R, 1),
0711 PIC32_PINCTRL_FUNCTION(U2TX, RPB14R, 2),
0712 PIC32_PINCTRL_FUNCTION(U5RTS, RPB14R, 3),
0713 PIC32_PINCTRL_FUNCTION(U6TX, RPB14R, 4),
0714 PIC32_PINCTRL_FUNCTION(SS2OUT, RPB14R, 6),
0715 PIC32_PINCTRL_FUNCTION(SDO4, RPB14R, 8),
0716 PIC32_PINCTRL_FUNCTION(SDO6, RPB14R, 10),
0717 PIC32_PINCTRL_FUNCTION(OC2, RPB14R, 11),
0718 PIC32_PINCTRL_FUNCTION(OC1, RPB14R, 12),
0719 PIC32_PINCTRL_FUNCTION(OC9, RPB14R, 13),
0720 PIC32_PINCTRL_FUNCTION(C2TX, RPB14R, 15)),
0721 PIC32_PINCTRL_GROUP(31, B15,
0722 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 3),
0723 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 3),
0724 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 3),
0725 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 3),
0726 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 3),
0727 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 3),
0728 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 3),
0729 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 3),
0730 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 3),
0731 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 3),
0732 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 3),
0733 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 3),
0734 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 3),
0735 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 3),
0736 PIC32_PINCTRL_FUNCTION(U3RTS, RPB15R, 1),
0737 PIC32_PINCTRL_FUNCTION(U4TX, RPB15R, 2),
0738 PIC32_PINCTRL_FUNCTION(U6TX, RPB15R, 4),
0739 PIC32_PINCTRL_FUNCTION(SS1OUT, RPB15R, 5),
0740 PIC32_PINCTRL_FUNCTION(SS3OUT, RPB15R, 7),
0741 PIC32_PINCTRL_FUNCTION(SS4OUT, RPB15R, 8),
0742 PIC32_PINCTRL_FUNCTION(SS5OUT, RPB15R, 9),
0743 PIC32_PINCTRL_FUNCTION(SDO6, RPB15R, 10),
0744 PIC32_PINCTRL_FUNCTION(OC5, RPB15R, 11),
0745 PIC32_PINCTRL_FUNCTION(OC8, RPB15R, 12),
0746 PIC32_PINCTRL_FUNCTION(C1OUT, RPB15R, 14),
0747 PIC32_PINCTRL_FUNCTION(REFCLKO3, RPB15R, 15)),
0748 PIC32_PINCTRL_GROUP(33, C1,
0749 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 10),
0750 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 10),
0751 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 10),
0752 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 10),
0753 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 10),
0754 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 10),
0755 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 10),
0756 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 10),
0757 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 10),
0758 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 10),
0759 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 10),
0760 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 10),
0761 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 10),
0762 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 10),
0763 PIC32_PINCTRL_FUNCTION(U3TX, RPC1R, 1),
0764 PIC32_PINCTRL_FUNCTION(U4RTS, RPC1R, 2),
0765 PIC32_PINCTRL_FUNCTION(SDO1, RPC1R, 5),
0766 PIC32_PINCTRL_FUNCTION(SDO2, RPC1R, 6),
0767 PIC32_PINCTRL_FUNCTION(SDO3, RPC1R, 7),
0768 PIC32_PINCTRL_FUNCTION(SDO5, RPC1R, 9),
0769 PIC32_PINCTRL_FUNCTION(SS6OUT, RPC1R, 10),
0770 PIC32_PINCTRL_FUNCTION(OC3, RPC1R, 11),
0771 PIC32_PINCTRL_FUNCTION(OC6, RPC1R, 12),
0772 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPC1R, 13),
0773 PIC32_PINCTRL_FUNCTION(C2OUT, RPC1R, 14),
0774 PIC32_PINCTRL_FUNCTION(C1TX, RPC1R, 15)),
0775 PIC32_PINCTRL_GROUP(34, C2,
0776 PIC32_PINCTRL_FUNCTION(INT1, INT1R, 12),
0777 PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 12),
0778 PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 12),
0779 PIC32_PINCTRL_FUNCTION(IC1, IC1R, 12),
0780 PIC32_PINCTRL_FUNCTION(IC6, IC6R, 12),
0781 PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 12),
0782 PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 12),
0783 PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 12),
0784 PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 12),
0785 PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 12),
0786 PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 12),
0787 PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 12),
0788 PIC32_PINCTRL_FUNCTION(U1RTS, RPC2R, 1),
0789 PIC32_PINCTRL_FUNCTION(U2TX, RPC2R, 2),
0790 PIC32_PINCTRL_FUNCTION(U5RTS, RPC2R, 3),
0791 PIC32_PINCTRL_FUNCTION(U6TX, RPC2R, 4),
0792 PIC32_PINCTRL_FUNCTION(SS2OUT, RPC2R, 6),
0793 PIC32_PINCTRL_FUNCTION(SDO4, RPC2R, 8),
0794 PIC32_PINCTRL_FUNCTION(SDO6, RPC2R, 10),
0795 PIC32_PINCTRL_FUNCTION(OC2, RPC2R, 11),
0796 PIC32_PINCTRL_FUNCTION(OC1, RPC2R, 12),
0797 PIC32_PINCTRL_FUNCTION(OC9, RPC2R, 13),
0798 PIC32_PINCTRL_FUNCTION(C2TX, RPC2R, 15)),
0799 PIC32_PINCTRL_GROUP(35, C3,
0800 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 12),
0801 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 12),
0802 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 12),
0803 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 12),
0804 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 12),
0805 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 12),
0806 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 12),
0807 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 12),
0808 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 12),
0809 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 12),
0810 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 12),
0811 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 12),
0812 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 12),
0813 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 12),
0814 PIC32_PINCTRL_FUNCTION(U3RTS, RPC3R, 1),
0815 PIC32_PINCTRL_FUNCTION(U4TX, RPC3R, 2),
0816 PIC32_PINCTRL_FUNCTION(U6TX, RPC3R, 4),
0817 PIC32_PINCTRL_FUNCTION(SS1OUT, RPC3R, 5),
0818 PIC32_PINCTRL_FUNCTION(SS3OUT, RPC3R, 7),
0819 PIC32_PINCTRL_FUNCTION(SS4OUT, RPC3R, 8),
0820 PIC32_PINCTRL_FUNCTION(SS5OUT, RPC3R, 9),
0821 PIC32_PINCTRL_FUNCTION(SDO6, RPC3R, 10),
0822 PIC32_PINCTRL_FUNCTION(OC5, RPC3R, 11),
0823 PIC32_PINCTRL_FUNCTION(OC8, RPC3R, 12),
0824 PIC32_PINCTRL_FUNCTION(C1OUT, RPC3R, 14),
0825 PIC32_PINCTRL_FUNCTION(REFCLKO3, RPC3R, 15)),
0826 PIC32_PINCTRL_GROUP(36, C4,
0827 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 10),
0828 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 10),
0829 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 10),
0830 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 10),
0831 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 10),
0832 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 10),
0833 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 10),
0834 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 10),
0835 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 10),
0836 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 10),
0837 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 10),
0838 PIC32_PINCTRL_FUNCTION(U1TX, RPC4R, 1),
0839 PIC32_PINCTRL_FUNCTION(U2RTS, RPC4R, 2),
0840 PIC32_PINCTRL_FUNCTION(U5TX, RPC4R, 3),
0841 PIC32_PINCTRL_FUNCTION(U6RTS, RPC4R, 4),
0842 PIC32_PINCTRL_FUNCTION(SDO1, RPC4R, 5),
0843 PIC32_PINCTRL_FUNCTION(SDO2, RPC4R, 6),
0844 PIC32_PINCTRL_FUNCTION(SDO3, RPC4R, 7),
0845 PIC32_PINCTRL_FUNCTION(SDO4, RPC4R, 8),
0846 PIC32_PINCTRL_FUNCTION(SDO5, RPC4R, 9),
0847 PIC32_PINCTRL_FUNCTION(OC4, RPC4R, 11),
0848 PIC32_PINCTRL_FUNCTION(OC7, RPC4R, 12),
0849 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPC4R, 15)),
0850 PIC32_PINCTRL_GROUP(45, C13,
0851 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 7),
0852 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 7),
0853 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 7),
0854 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 7),
0855 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 7),
0856 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 7),
0857 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 7),
0858 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 7),
0859 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 7),
0860 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 7),
0861 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 7),
0862 PIC32_PINCTRL_FUNCTION(U1TX, RPC13R, 1),
0863 PIC32_PINCTRL_FUNCTION(U2RTS, RPC13R, 2),
0864 PIC32_PINCTRL_FUNCTION(U5TX, RPC13R, 3),
0865 PIC32_PINCTRL_FUNCTION(U6RTS, RPC13R, 4),
0866 PIC32_PINCTRL_FUNCTION(SDO1, RPC13R, 5),
0867 PIC32_PINCTRL_FUNCTION(SDO2, RPC13R, 6),
0868 PIC32_PINCTRL_FUNCTION(SDO3, RPC13R, 7),
0869 PIC32_PINCTRL_FUNCTION(SDO4, RPC13R, 8),
0870 PIC32_PINCTRL_FUNCTION(SDO5, RPC13R, 9),
0871 PIC32_PINCTRL_FUNCTION(OC4, RPC13R, 11),
0872 PIC32_PINCTRL_FUNCTION(OC7, RPC13R, 12),
0873 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPC13R, 15)),
0874 PIC32_PINCTRL_GROUP(46, C14,
0875 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 7),
0876 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 7),
0877 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 7),
0878 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 7),
0879 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 7),
0880 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 7),
0881 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 7),
0882 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 7),
0883 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 7),
0884 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 7),
0885 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 7),
0886 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 7),
0887 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 7),
0888 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 7),
0889 PIC32_PINCTRL_FUNCTION(U3TX, RPC14R, 1),
0890 PIC32_PINCTRL_FUNCTION(U4RTS, RPC14R, 2),
0891 PIC32_PINCTRL_FUNCTION(SDO1, RPC14R, 5),
0892 PIC32_PINCTRL_FUNCTION(SDO2, RPC14R, 6),
0893 PIC32_PINCTRL_FUNCTION(SDO3, RPC14R, 7),
0894 PIC32_PINCTRL_FUNCTION(SDO5, RPC14R, 9),
0895 PIC32_PINCTRL_FUNCTION(SS6OUT, RPC14R, 10),
0896 PIC32_PINCTRL_FUNCTION(OC3, RPC14R, 11),
0897 PIC32_PINCTRL_FUNCTION(OC6, RPC14R, 12),
0898 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPC14R, 13),
0899 PIC32_PINCTRL_FUNCTION(C2OUT, RPC14R, 14),
0900 PIC32_PINCTRL_FUNCTION(C1TX, RPC14R, 15)),
0901 PIC32_PINCTRL_GROUP(48, D0,
0902 PIC32_PINCTRL_FUNCTION(INT1, INT1R, 3),
0903 PIC32_PINCTRL_FUNCTION(T4CK, T4CKR, 3),
0904 PIC32_PINCTRL_FUNCTION(T9CK, T9CKR, 3),
0905 PIC32_PINCTRL_FUNCTION(IC1, IC1R, 3),
0906 PIC32_PINCTRL_FUNCTION(IC6, IC6R, 3),
0907 PIC32_PINCTRL_FUNCTION(U3CTS, U3CTSR, 3),
0908 PIC32_PINCTRL_FUNCTION(U4RX, U4RXR, 3),
0909 PIC32_PINCTRL_FUNCTION(U6RX, U6RXR, 3),
0910 PIC32_PINCTRL_FUNCTION(SS2IN, SS2INR, 3),
0911 PIC32_PINCTRL_FUNCTION(SDI6, SDI6R, 3),
0912 PIC32_PINCTRL_FUNCTION(OCFA, OCFAR, 3),
0913 PIC32_PINCTRL_FUNCTION(REFCLKI3, REFCLKI3R, 3),
0914 PIC32_PINCTRL_FUNCTION(U1RTS, RPD0R, 1),
0915 PIC32_PINCTRL_FUNCTION(U2TX, RPD0R, 2),
0916 PIC32_PINCTRL_FUNCTION(U5RTS, RPD0R, 3),
0917 PIC32_PINCTRL_FUNCTION(U6TX, RPD0R, 4),
0918 PIC32_PINCTRL_FUNCTION(SS2OUT, RPD0R, 6),
0919 PIC32_PINCTRL_FUNCTION(SDO4, RPD0R, 8),
0920 PIC32_PINCTRL_FUNCTION(SDO6, RPD0R, 10),
0921 PIC32_PINCTRL_FUNCTION(OC2, RPD0R, 11),
0922 PIC32_PINCTRL_FUNCTION(OC1, RPD0R, 12),
0923 PIC32_PINCTRL_FUNCTION(OC9, RPD0R, 13),
0924 PIC32_PINCTRL_FUNCTION(C2TX, RPD0R, 15)),
0925 PIC32_PINCTRL_GROUP(50, D2,
0926 PIC32_PINCTRL_FUNCTION(INT3, INT3R, 0),
0927 PIC32_PINCTRL_FUNCTION(T2CK, T2CKR, 0),
0928 PIC32_PINCTRL_FUNCTION(T6CK, T6CKR, 0),
0929 PIC32_PINCTRL_FUNCTION(IC3, IC3R, 0),
0930 PIC32_PINCTRL_FUNCTION(IC7, IC7R, 0),
0931 PIC32_PINCTRL_FUNCTION(U1RX, U1RXR, 0),
0932 PIC32_PINCTRL_FUNCTION(U2CTS, U2CTSR, 0),
0933 PIC32_PINCTRL_FUNCTION(U5RX, U5RXR, 0),
0934 PIC32_PINCTRL_FUNCTION(U6CTS, U6CTSR, 0),
0935 PIC32_PINCTRL_FUNCTION(SDI1, SDI1R, 0),
0936 PIC32_PINCTRL_FUNCTION(SDI3, SDI3R, 0),
0937 PIC32_PINCTRL_FUNCTION(SDI5, SDI5R, 0),
0938 PIC32_PINCTRL_FUNCTION(SS6IN, SS6INR, 0),
0939 PIC32_PINCTRL_FUNCTION(REFCLKI1, REFCLKI1R, 0),
0940 PIC32_PINCTRL_FUNCTION(U3TX, RPD2R, 1),
0941 PIC32_PINCTRL_FUNCTION(U4RTS, RPD2R, 2),
0942 PIC32_PINCTRL_FUNCTION(SDO1, RPD2R, 5),
0943 PIC32_PINCTRL_FUNCTION(SDO2, RPD2R, 6),
0944 PIC32_PINCTRL_FUNCTION(SDO3, RPD2R, 7),
0945 PIC32_PINCTRL_FUNCTION(SDO5, RPD2R, 9),
0946 PIC32_PINCTRL_FUNCTION(SS6OUT, RPD2R, 10),
0947 PIC32_PINCTRL_FUNCTION(OC3, RPD2R, 11),
0948 PIC32_PINCTRL_FUNCTION(OC6, RPD2R, 12),
0949 PIC32_PINCTRL_FUNCTION(REFCLKO4, RPD2R, 13),
0950 PIC32_PINCTRL_FUNCTION(C2OUT, RPD2R, 14),
0951 PIC32_PINCTRL_FUNCTION(C1TX, RPD2R, 15)),
0952 PIC32_PINCTRL_GROUP(51, D3,
0953 PIC32_PINCTRL_FUNCTION(INT4, INT4R, 0),
0954 PIC32_PINCTRL_FUNCTION(T5CK, T5CKR, 0),
0955 PIC32_PINCTRL_FUNCTION(T7CK, T7CKR, 0),
0956 PIC32_PINCTRL_FUNCTION(IC4, IC4R, 0),
0957 PIC32_PINCTRL_FUNCTION(IC8, IC8R, 0),
0958 PIC32_PINCTRL_FUNCTION(U3RX, U3RXR, 0),
0959 PIC32_PINCTRL_FUNCTION(U4CTS, U4CTSR, 0),
0960 PIC32_PINCTRL_FUNCTION(SDI2, SDI2R, 0),
0961 PIC32_PINCTRL_FUNCTION(SDI4, SDI4R, 0),
0962 PIC32_PINCTRL_FUNCTION(C1RX, C1RXR, 0),
0963 PIC32_PINCTRL_FUNCTION(REFCLKI4, REFCLKI4R, 0),
0964 PIC32_PINCTRL_FUNCTION(U1TX, RPD3R, 1),
0965 PIC32_PINCTRL_FUNCTION(U2RTS, RPD3R, 2),
0966 PIC32_PINCTRL_FUNCTION(U5TX, RPD3R, 3),
0967 PIC32_PINCTRL_FUNCTION(U6RTS, RPD3R, 4),
0968 PIC32_PINCTRL_FUNCTION(SDO1, RPD3R, 5),
0969 PIC32_PINCTRL_FUNCTION(SDO2, RPD3R, 6),
0970 PIC32_PINCTRL_FUNCTION(SDO3, RPD3R, 7),
0971 PIC32_PINCTRL_FUNCTION(SDO4, RPD3R, 8),
0972 PIC32_PINCTRL_FUNCTION(SDO5, RPD3R, 9),
0973 PIC32_PINCTRL_FUNCTION(OC4, RPD3R, 11),
0974 PIC32_PINCTRL_FUNCTION(OC7, RPD3R, 12),
0975 PIC32_PINCTRL_FUNCTION(REFCLKO1, RPD3R, 15)),
0976 PIC32_PINCTRL_GROUP(52, D4,
0977 PIC32_PINCTRL_FUNCTION(INT2, INT2R, 4),
0978 PIC32_PINCTRL_FUNCTION(T3CK, T3CKR, 4),
0979 PIC32_PINCTRL_FUNCTION(T8CK, T8CKR, 4),
0980 PIC32_PINCTRL_FUNCTION(IC2, IC2R, 4),
0981 PIC32_PINCTRL_FUNCTION(IC5, IC5R, 4),
0982 PIC32_PINCTRL_FUNCTION(IC9, IC9R, 4),
0983 PIC32_PINCTRL_FUNCTION(U1CTS, U1CTSR, 4),
0984 PIC32_PINCTRL_FUNCTION(U2RX, U2RXR, 4),
0985 PIC32_PINCTRL_FUNCTION(U5CTS, U5CTSR, 4),
0986 PIC32_PINCTRL_FUNCTION(SS1IN, SS1INR, 4),
0987 PIC32_PINCTRL_FUNCTION(SS3IN, SS3INR, 4),
0988 PIC32_PINCTRL_FUNCTION(SS4IN, SS4INR, 4),
0989 PIC32_PINCTRL_FUNCTION(SS5IN, SS5INR, 4),
0990 PIC32_PINCTRL_FUNCTION(C2RX, C2RXR, 4),
0991 PIC32_PINCTRL_FUNCTION(U3RTS, RPD4R, 1),
0992 PIC32_PINCTRL_FUNCTION(U4TX, RPD4R, 2),
0993 PIC32_PINCTRL_FUNCTION(U6TX, RPD4R, 4),
0994 PIC32_PINCTRL_FUNCTION(SS1OUT, RPD4R, 5),
0995 PIC32_PINCTRL_FUNCTION(SS3OUT, RPD4R, 7),
0996 PIC32_PINCTRL_FUNCTION(SS4OUT, RPD4R, 8),
0997 PIC32_PINCTRL_FUNCTION(SS5OUT, RPD4R, 9),
0998 PIC32_PINCTRL_FUNCTION(SDO6, RPD4R, 10),
0999 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
1694 static 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
1699 static 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
1705 static 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
1712 static 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
1720 static 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
1733 static 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
1741 static 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
1748 static const char *
1749 pic32_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
1756 static 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
1769 static 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
1797 static 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
1813 static 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
1824 static 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
1831 static 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
1843 static 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
1855 static 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
1869 static 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
1878 static 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
1919 static 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
1975 static 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
1981 static 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
1989 static 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
1999 static 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
2006 static 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
2013 static 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
2020 static 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
2030 static 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
2038 writel(mask, bank->reg_base + PIC32_SET(CNEN_REG));
2039
2040 writel(mask, bank->reg_base + PIC32_CLR(CNNE_REG));
2041
2042 writel(BIT(PIC32_CNCON_EDGE), bank->reg_base + PIC32_SET(CNCON_REG));
2043 break;
2044 case IRQ_TYPE_EDGE_FALLING:
2045
2046 writel(mask, bank->reg_base + PIC32_CLR(CNEN_REG));
2047
2048 writel(mask, bank->reg_base + PIC32_SET(CNNE_REG));
2049
2050 writel(BIT(PIC32_CNCON_EDGE), bank->reg_base + PIC32_SET(CNCON_REG));
2051 break;
2052 case IRQ_TYPE_EDGE_BOTH:
2053
2054 writel(mask, bank->reg_base + PIC32_SET(CNEN_REG));
2055
2056 writel(mask, bank->reg_base + PIC32_SET(CNNE_REG));
2057
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
2069 static 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
2089 static 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
2135 static 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
2148 static 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
2202 static 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
2265 static const struct of_device_id pic32_pinctrl_of_match[] = {
2266 { .compatible = "microchip,pic32mzda-pinctrl", },
2267 { },
2268 };
2269
2270 static 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
2279 static const struct of_device_id pic32_gpio_of_match[] = {
2280 { .compatible = "microchip,pic32mzda-gpio", },
2281 { },
2282 };
2283
2284 static 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
2293 static int __init pic32_gpio_register(void)
2294 {
2295 return platform_driver_register(&pic32_gpio_driver);
2296 }
2297 arch_initcall(pic32_gpio_register);
2298
2299 static int __init pic32_pinctrl_register(void)
2300 {
2301 return platform_driver_register(&pic32_pinctrl_driver);
2302 }
2303 arch_initcall(pic32_pinctrl_register);