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 */
15  enum {
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 */
125  enum {
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  
230  void pic32_pps_input(int function, int pin);
231  void pic32_pps_output(int function, int pin);
232  
233  #endif
234