1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Joshua Henderson <joshua.henderson@microchip.com>
4 * Copyright (C) 2015 Microchip Technology Inc.  All rights reserved.
5 */
6#ifndef _PIC32MZDA_EARLY_PIN_H
7#define _PIC32MZDA_EARLY_PIN_H
8
9/*
10 * This is a complete, yet overly simplistic and unoptimized, PIC32MZDA PPS
11 * configuration only useful before we have full pinctrl initialized.
12 */
13
14/* Input PPS Functions */
15enum {
16	IN_FUNC_INT3,
17	IN_FUNC_T2CK,
18	IN_FUNC_T6CK,
19	IN_FUNC_IC3,
20	IN_FUNC_IC7,
21	IN_FUNC_U1RX,
22	IN_FUNC_U2CTS,
23	IN_FUNC_U5RX,
24	IN_FUNC_U6CTS,
25	IN_FUNC_SDI1,
26	IN_FUNC_SDI3,
27	IN_FUNC_SDI5,
28	IN_FUNC_SS6,
29	IN_FUNC_REFCLKI1,
30	IN_FUNC_INT4,
31	IN_FUNC_T5CK,
32	IN_FUNC_T7CK,
33	IN_FUNC_IC4,
34	IN_FUNC_IC8,
35	IN_FUNC_U3RX,
36	IN_FUNC_U4CTS,
37	IN_FUNC_SDI2,
38	IN_FUNC_SDI4,
39	IN_FUNC_C1RX,
40	IN_FUNC_REFCLKI4,
41	IN_FUNC_INT2,
42	IN_FUNC_T3CK,
43	IN_FUNC_T8CK,
44	IN_FUNC_IC2,
45	IN_FUNC_IC5,
46	IN_FUNC_IC9,
47	IN_FUNC_U1CTS,
48	IN_FUNC_U2RX,
49	IN_FUNC_U5CTS,
50	IN_FUNC_SS1,
51	IN_FUNC_SS3,
52	IN_FUNC_SS4,
53	IN_FUNC_SS5,
54	IN_FUNC_C2RX,
55	IN_FUNC_INT1,
56	IN_FUNC_T4CK,
57	IN_FUNC_T9CK,
58	IN_FUNC_IC1,
59	IN_FUNC_IC6,
60	IN_FUNC_U3CTS,
61	IN_FUNC_U4RX,
62	IN_FUNC_U6RX,
63	IN_FUNC_SS2,
64	IN_FUNC_SDI6,
65	IN_FUNC_OCFA,
66	IN_FUNC_REFCLKI3,
67};
68
69/* Input PPS Pins */
70#define IN_RPD2 0x00
71#define IN_RPG8 0x01
72#define IN_RPF4 0x02
73#define IN_RPD10 0x03
74#define IN_RPF1 0x04
75#define IN_RPB9 0x05
76#define IN_RPB10 0x06
77#define IN_RPC14 0x07
78#define IN_RPB5 0x08
79#define IN_RPC1 0x0A
80#define IN_RPD14 0x0B
81#define IN_RPG1 0x0C
82#define IN_RPA14 0x0D
83#define IN_RPD6 0x0E
84#define IN_RPD3 0x00
85#define IN_RPG7 0x01
86#define IN_RPF5 0x02
87#define IN_RPD11 0x03
88#define IN_RPF0 0x04
89#define IN_RPB1 0x05
90#define IN_RPE5 0x06
91#define IN_RPC13 0x07
92#define IN_RPB3 0x08
93#define IN_RPC4 0x0A
94#define IN_RPD15 0x0B
95#define IN_RPG0 0x0C
96#define IN_RPA15 0x0D
97#define IN_RPD7 0x0E
98#define IN_RPD9 0x00
99#define IN_RPG6 0x01
100#define IN_RPB8 0x02
101#define IN_RPB15 0x03
102#define IN_RPD4 0x04
103#define IN_RPB0 0x05
104#define IN_RPE3 0x06
105#define IN_RPB7 0x07
106#define IN_RPF12 0x09
107#define IN_RPD12 0x0A
108#define IN_RPF8 0x0B
109#define IN_RPC3 0x0C
110#define IN_RPE9 0x0D
111#define IN_RPD1 0x00
112#define IN_RPG9 0x01
113#define IN_RPB14 0x02
114#define IN_RPD0 0x03
115#define IN_RPB6 0x05
116#define IN_RPD5 0x06
117#define IN_RPB2 0x07
118#define IN_RPF3 0x08
119#define IN_RPF13 0x09
120#define IN_RPF2 0x0B
121#define IN_RPC2 0x0C
122#define IN_RPE8 0x0D
123
124/* Output PPS Pins */
125enum {
126	OUT_RPD2,
127	OUT_RPG8,
128	OUT_RPF4,
129	OUT_RPD10,
130	OUT_RPF1,
131	OUT_RPB9,
132	OUT_RPB10,
133	OUT_RPC14,
134	OUT_RPB5,
135	OUT_RPC1,
136	OUT_RPD14,
137	OUT_RPG1,
138	OUT_RPA14,
139	OUT_RPD6,
140	OUT_RPD3,
141	OUT_RPG7,
142	OUT_RPF5,
143	OUT_RPD11,
144	OUT_RPF0,
145	OUT_RPB1,
146	OUT_RPE5,
147	OUT_RPC13,
148	OUT_RPB3,
149	OUT_RPC4,
150	OUT_RPD15,
151	OUT_RPG0,
152	OUT_RPA15,
153	OUT_RPD7,
154	OUT_RPD9,
155	OUT_RPG6,
156	OUT_RPB8,
157	OUT_RPB15,
158	OUT_RPD4,
159	OUT_RPB0,
160	OUT_RPE3,
161	OUT_RPB7,
162	OUT_RPF12,
163	OUT_RPD12,
164	OUT_RPF8,
165	OUT_RPC3,
166	OUT_RPE9,
167	OUT_RPD1,
168	OUT_RPG9,
169	OUT_RPB14,
170	OUT_RPD0,
171	OUT_RPB6,
172	OUT_RPD5,
173	OUT_RPB2,
174	OUT_RPF3,
175	OUT_RPF13,
176	OUT_RPC2,
177	OUT_RPE8,
178	OUT_RPF2,
179};
180
181/* Output PPS Functions */
182#define OUT_FUNC_U3TX 0x01
183#define OUT_FUNC_U4RTS 0x02
184#define OUT_FUNC_SDO1 0x05
185#define OUT_FUNC_SDO2 0x06
186#define OUT_FUNC_SDO3 0x07
187#define OUT_FUNC_SDO5 0x09
188#define OUT_FUNC_SS6 0x0A
189#define OUT_FUNC_OC3 0x0B
190#define OUT_FUNC_OC6 0x0C
191#define OUT_FUNC_REFCLKO4 0x0D
192#define OUT_FUNC_C2OUT 0x0E
193#define OUT_FUNC_C1TX 0x0F
194#define OUT_FUNC_U1TX 0x01
195#define OUT_FUNC_U2RTS 0x02
196#define OUT_FUNC_U5TX 0x03
197#define OUT_FUNC_U6RTS 0x04
198#define OUT_FUNC_SDO1 0x05
199#define OUT_FUNC_SDO2 0x06
200#define OUT_FUNC_SDO3 0x07
201#define OUT_FUNC_SDO4 0x08
202#define OUT_FUNC_SDO5 0x09
203#define OUT_FUNC_OC4 0x0B
204#define OUT_FUNC_OC7 0x0C
205#define OUT_FUNC_REFCLKO1 0x0F
206#define OUT_FUNC_U3RTS 0x01
207#define OUT_FUNC_U4TX 0x02
208#define OUT_FUNC_U6TX 0x04
209#define OUT_FUNC_SS1 0x05
210#define OUT_FUNC_SS3 0x07
211#define OUT_FUNC_SS4 0x08
212#define OUT_FUNC_SS5 0x09
213#define OUT_FUNC_SDO6 0x0A
214#define OUT_FUNC_OC5 0x0B
215#define OUT_FUNC_OC8 0x0C
216#define OUT_FUNC_C1OUT 0x0E
217#define OUT_FUNC_REFCLKO3 0x0F
218#define OUT_FUNC_U1RTS 0x01
219#define OUT_FUNC_U2TX 0x02
220#define OUT_FUNC_U5RTS 0x03
221#define OUT_FUNC_U6TX 0x04
222#define OUT_FUNC_SS2 0x06
223#define OUT_FUNC_SDO4 0x08
224#define OUT_FUNC_SDO6 0x0A
225#define OUT_FUNC_OC2 0x0B
226#define OUT_FUNC_OC1 0x0C
227#define OUT_FUNC_OC9 0x0D
228#define OUT_FUNC_C2TX 0x0F
229
230void pic32_pps_input(int function, int pin);
231void pic32_pps_output(int function, int pin);
232
233#endif
234