summaryrefslogblamecommitdiff
path: root/nuttx/arch/mips/src/pic32mx/pic32mx-config.h
blob: c09adbd21383e93c889cdb217326f956be5e2da2 (plain) (tree)
1
2
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477

                                                                                      






























                                                                         
                                                                                       
 



                                                                                      
                  
                                                                                       

                          
                              
 


                               
                         
                            
 
                                                                                      
                             
                                                                                       






































































































































































































































































































































































































































                                                                                       
                                                                                       
                                                    
 






                              
 
                             
 



                                                                 
 















                                                                          





















































































































































































                                                                                               














                                                                                       
 
                                                   
/************************************************************************************
 * arch/mips/src/pic32mx/pic32mx-config.h
 *
 *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ************************************************************************************/

#ifndef __ARCH_MIPS_SRC_LPC17XX_LPC17_PIC32_H
#define __ARCH_MIPS_SRC_LPC17XX_LPC17_PIC32_H

/************************************************************************************
 * Included Files
 ************************************************************************************/

#include <nuttx/config.h>
#include <arch/board/board.h>

#include "chip.h"
#include "pic32mx-memorymap.h"
#include "pic32mx-uart.h"
#include "pic32mx-int.h"
#include "pic32mx-devcfg.h"

/************************************************************************************
 * Pre-processor Definitions
 ************************************************************************************/
/* Interrupt Priorities *************************************************************/

       
#ifndef CONFIG_PIC32MX_WDTPRIO
#  define CONFIG_PIC32MX_WDTPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_WDTPRIO < 4
#  error "CONFIG_PIC32MX_WDTPRIO is too small"
#endif
#if CONFIG_PIC32MX_WDTPRIO > 31
#  error "CONFIG_PIC32MX_WDTPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_RTCCPRIO
#  define CONFIG_PIC32MX_RTCCPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_RTCCPRIO < 4
#  error "CONFIG_PIC32MX_RTCCPRIO is too small"
#endif
#if CONFIG_PIC32MX_RTCCPRIO > 31
#  error "CONFIG_PIC32MX_RTCCPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_T1PRIO
#  define CONFIG_PIC32MX_T1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T1PRIO < 4
#  error "CONFIG_PIC32MX_T1PRIO is too small"
#endif
#if CONFIG_PIC32MX_T1PRIO > 31
#  error "CONFIG_PIC32MX_T1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_T2PRIO
#  define CONFIG_PIC32MX_T2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T2PRIO < 4
#  error "CONFIG_PIC32MX_T2PRIO is too small"
#endif
#if CONFIG_PIC32MX_T2PRIO > 31
#  error "CONFIG_PIC32MX_T2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_T3PRIO
#  define CONFIG_PIC32MX_T3PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T3PRIO < 4
#  error "CONFIG_PIC32MX_T3PRIO is too small"
#endif
#if CONFIG_PIC32MX_T3PRIO > 31
#  error "CONFIG_PIC32MX_T3PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_T4PRIO
#  define CONFIG_PIC32MX_T4PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T4PRIO < 4
#  error "CONFIG_PIC32MX_T4PRIO is too small"
#endif
#if CONFIG_PIC32MX_T4PRIO > 31
#  error "CONFIG_PIC32MX_T4PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_T5PRIO
#  define CONFIG_PIC32MX_T5PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T5PRIO < 4
#  error "CONFIG_PIC32MX_T5PRIO is too small"
#endif
#if CONFIG_PIC32MX_T5PRIO > 31
#  error "CONFIG_PIC32MX_T5PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IC1PRIO
#  define CONFIG_PIC32MX_IC1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC1PRIO < 4
#  error "CONFIG_PIC32MX_IC1PRIO is too small"
#endif
#if CONFIG_PIC32MX_IC1PRIO > 31
#  error "CONFIG_PIC32MX_IC1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IC2PRIO
#  define CONFIG_PIC32MX_IC2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC2PRIO < 4
#  error "CONFIG_PIC32MX_IC2PRIO is too small"
#endif
#if CONFIG_PIC32MX_IC2PRIO > 31
#  error "CONFIG_PIC32MX_IC2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IC3PRIO
#  define CONFIG_PIC32MX_IC3PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC3PRIO < 4
#  error "CONFIG_PIC32MX_IC3PRIO is too small"
#endif
#if CONFIG_PIC32MX_IC3PRIO > 31
#  error "CONFIG_PIC32MX_IC3PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IC4PRIO
#  define CONFIG_PIC32MX_IC4PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC4PRIO < 4
#  error "CONFIG_PIC32MX_IC4PRIO is too small"
#endif
#if CONFIG_PIC32MX_IC4PRIO > 31
#  error "CONFIG_PIC32MX_IC4PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IC5PRIO
#  define CONFIG_PIC32MX_IC5PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC5PRIO < 4
#  error "CONFIG_PIC32MX_IC5PRIO is too small"
#endif
#if CONFIG_PIC32MX_IC5PRIO > 31
#  error "CONFIG_PIC32MX_IC5PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OC1PRIO
#  define CONFIG_PIC32MX_OC1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC1PRIO < 4
#  error "CONFIG_PIC32MX_OC1PRIO is too small"
#endif
#if CONFIG_PIC32MX_OC1PRIO > 31
#  error "CONFIG_PIC32MX_OC1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OC2PRIO
#  define CONFIG_PIC32MX_OC2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC2PRIO < 4
#  error "CONFIG_PIC32MX_OC2PRIO is too small"
#endif
#if CONFIG_PIC32MX_OC2PRIO > 31
#  error "CONFIG_PIC32MX_OC2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OC3PRIO
#  define CONFIG_PIC32MX_OC3PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC3PRIO < 4
#  error "CONFIG_PIC32MX_OC3PRIO is too small"
#endif
#if CONFIG_PIC32MX_OC3PRIO > 31
#  error "CONFIG_PIC32MX_OC3PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OC4PRIO
#  define CONFIG_PIC32MX_OC4PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC4PRIO < 4
#  error "CONFIG_PIC32MX_OC4PRIO is too small"
#endif
#if CONFIG_PIC32MX_OC4PRIO > 31
#  error "CONFIG_PIC32MX_OC4PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OC5PRIO
#  define CONFIG_PIC32MX_OC5PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC5PRIO < 4
#  error "CONFIG_PIC32MX_OC5PRIO is too small"
#endif
#if CONFIG_PIC32MX_OC5PRIO > 31
#  error "CONFIG_PIC32MX_OC5PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_I2C1PRIO
#  define CONFIG_PIC32MX_I2C1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_I2C1PRIO < 4
#  error "CONFIG_PIC32MX_I2C1PRIO is too small"
#endif
#if CONFIG_PIC32MX_I2C1PRIO > 31
#  error "CONFIG_PIC32MX_I2C1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_I2C2PRIO
#  define CONFIG_PIC32MX_I2C2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_I2C2PRIO < 4
#  error "CONFIG_PIC32MX_I2C2PRIO is too small"
#endif
#if CONFIG_PIC32MX_I2C2PRIO > 31
#  error "CONFIG_PIC32MX_I2C2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_SPI1PRIO
#  define CONFIG_PIC32MX_SPI1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_SPI1PRIO < 4
#  error "CONFIG_PIC32MX_SPI1PRIO is too small"
#endif
#if CONFIG_PIC32MX_SPI1PRIO > 31
#  error "CONFIG_PIC32MX_SPI1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_SPI2PRIO
#  define CONFIG_PIC32MX_SPI2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_SPI2PRIO < 4
#  error "CONFIG_PIC32MX_SPI2PRIO is too small"
#endif
#if CONFIG_PIC32MX_SPI2PRIO > 31
#  error "CONFIG_PIC32MX_SPI2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_UART1PRIO
#  define CONFIG_PIC32MX_UART1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_UART1PRIO < 4
#  error "CONFIG_PIC32MX_UART1PRIO is too small"
#endif
#if CONFIG_PIC32MX_UART1PRIO > 31
#  error "CONFIG_PIC32MX_UART1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_UART2PRIO
#  define CONFIG_PIC32MX_UART2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_UART2PRIO < 4
#  error "CONFIG_PIC32MX_UART2PRIO is too small"
#endif
#if CONFIG_PIC32MX_UART2PRIO > 31
#  error "CONFIG_PIC32MX_UART2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_PMPPRIO
#  define CONFIG_PIC32MX_PMPPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_PMPPRIO < 4
#  error "CONFIG_PIC32MX_PMPPRIO is too small"
#endif
#if CONFIG_PIC32MX_PMPPRIO > 31
#  error "CONFIG_PIC32MX_PMPPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_ADCPRIO
#  define CONFIG_PIC32MX_ADCPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_ADCPRIO < 4
#  error "CONFIG_PIC32MX_ADCPRIO is too small"
#endif
#if CONFIG_PIC32MX_ADCPRIO > 31
#  error "CONFIG_PIC32MX_ADCPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_CVRPRIO
#  define CONFIG_PIC32MX_CVRPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CVRPRIO < 4
#  error "CONFIG_PIC32MX_CVRPRIO is too small"
#endif
#if CONFIG_PIC32MX_CVRPRIO > 31
#  error "CONFIG_PIC32MX_CVRPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_CM1PRIO
#  define CONFIG_PIC32MX_CM1PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CM1PRIO < 4
#  error "CONFIG_PIC32MX_CM1PRIO is too small"
#endif
#if CONFIG_PIC32MX_CM1PRIO > 31
#  error "CONFIG_PIC32MX_CM1PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_CM2PRIO
#  define CONFIG_PIC32MX_CM2PRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CM2PRIO < 4
#  error "CONFIG_PIC32MX_CM2PRIO is too small"
#endif
#if CONFIG_PIC32MX_CM2PRIO > 31
#  error "CONFIG_PIC32MX_CM2PRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_OSCPRIO
#  define CONFIG_PIC32MX_OSCPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OSCPRIO < 4
#  error "CONFIG_PIC32MX_OSCPRIO is too small"
#endif
#if CONFIG_PIC32MX_OSCPRIO > 31
#  error "CONFIG_PIC32MX_OSCPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_DDPPRIO
#  define CONFIG_PIC32MX_DDPPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DDPPRIO < 4
#  error "CONFIG_PIC32MX_DDPPRIO is too small"
#endif
#if CONFIG_PIC32MX_DDPPRIO > 31
#  error "CONFIG_PIC32MX_DDPPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_FLASHPRIO
#  define CONFIG_PIC32MX_FLASHPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_FLASHPRIO < 4
#  error "CONFIG_PIC32MX_FLASHPRIO is too small"
#endif
#if CONFIG_PIC32MX_FLASHPRIO > 31
#  error "CONFIG_PIC32MX_FLASHPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_BMXPRIO
#  define CONFIG_PIC32MX_BMXPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_BMXPRIO < 4
#  error "CONFIG_PIC32MX_BMXPRIO is too small"
#endif
#if CONFIG_PIC32MX_BMXPRIO > 31
#  error "CONFIG_PIC32MX_BMXPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_DMAPRIO
#  define CONFIG_PIC32MX_DMAPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DMAPRIO < 4
#  error "CONFIG_PIC32MX_DMAPRIO is too small"
#endif
#if CONFIG_PIC32MX_DMAPRIO > 31
#  error "CONFIG_PIC32MX_DMAPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_CHEPRIO
#  define CONFIG_PIC32MX_CHEPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CHEPRIO < 4
#  error "CONFIG_PIC32MX_CHEPRIO is too small"
#endif
#if CONFIG_PIC32MX_CHEPRIO > 31
#  error "CONFIG_PIC32MX_CHEPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_USBPRIO
#  define CONFIG_PIC32MX_USBPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_USBPRIO < 4
#  error "CONFIG_PIC32MX_USBPRIO is too small"
#endif
#if CONFIG_PIC32MX_USBPRIO > 31
#  error "CONFIG_PIC32MX_USBPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTAPRIO
#  define CONFIG_PIC32MX_IOPORTAPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTAPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTAPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTAPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTAPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTBPRIO
#  define CONFIG_PIC32MX_IOPORTBPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTBPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTBPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTBPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTBPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTCPRIO
#  define CONFIG_PIC32MX_IOPORTCPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTCPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTCPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTCPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTCPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTDPRIO
#  define CONFIG_PIC32MX_IOPORTDPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTDPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTDPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTDPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTDPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTEPRIO
#  define CONFIG_PIC32MX_IOPORTEPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTEPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTEPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTEPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTEPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTFPRIO
#  define CONFIG_PIC32MX_IOPORTFPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTFPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTFPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTFPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTFPRIO is too large"
#endif

#ifndef CONFIG_PIC32MX_IOPORTGPRIO
#  define CONFIG_PIC32MX_IOPORTGPRIO (INT_CP0_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IOPORTGPRIO < 4
#  error "CONFIG_PIC32MX_IOPORTGPRIO is too small"
#endif
#if CONFIG_PIC32MX_IOPORTGPRIO > 31
#  error "CONFIG_PIC32MX_IOPORTGPRIO is too large"
#endif

/* UARTs ****************************************************************************/
/* Don't enable UARTs not supported by the chip. */

#if CHIP_NEUARTS < 1
#  undef CONFIG_PIC32MX_UART1
#  undef CONFIG_PIC32MX_UART2
#endif
#if CHIP_NEUARTS < 2
#  undef CONFIG_PIC32MX_UART2
#endif

/* Are any UARTs enabled? */

#undef HAVE_UART_DEVICE
#if defined(CONFIG_PIC32MX_UART1) || defined(CONFIG_LPC17_UART1)
#  define HAVE_UART_DEVICE 1
#endif

/* Is there a serial console?  There should be at most one defined.  It
 * could be on any UARTn, n=0,1
 */

#if defined(CONFIG_UART1_SERIAL_CONSOLE) && defined(CONFIG_PIC32MX_UART1)
#  undef CONFIG_UART2_SERIAL_CONSOLE
#  define HAVE_SERIAL_CONSOLE 1
#elif defined(CONFIG_UART2_SERIAL_CONSOLE) && defined(CONFIG_LPC17_UART2)
#  undef CONFIG_UART1_SERIAL_CONSOLE
#  define HAVE_SERIAL_CONSOLE 1
#else
#  undef CONFIG_UART1_SERIAL_CONSOLE
#  undef CONFIG_UART2_SERIAL_CONSOLE
#  undef HAVE_SERIAL_CONSOLE
#endif

/* Device Configuration *************************************************************/
/* DEVCFG3 */

#ifndef CONFIG_PIC32MX_USERID
#  define CONFIG_PIC32MX_USERID   0x584e   /* "NutX" */
#endif

#ifndef CONFIG_PIC32MX_SRSSEL
#  define CONFIG_PIC32MX_SRSSEL   4         /* Middle priority */
#endif

#ifdef CONFIG_PIC32MX_USB
#  ifndef CONFIG_PIC32MX_USBIDO
#    define CONFIG_PIC32MX_USBIDO 1        /* USBID pin is controlled by the USB module */
#  endif
#  ifndef CONFIG_PIC32MX_VBUSIO
#    define CONFIG_PIC32MX_VBUSIO 1        /* VBUSON pin is controlled by the USB module */
#  endif
#else
#  ifndef CONFIG_PIC32MX_USBIDO
#    define CONFIG_PIC32MX_USBIDO 0        /* USBID pin is controlled by the Port function */
#  endif
#  ifndef CONFIG_PIC32MX_VBUSIO
#    define CONFIG_PIC32MX_VBUSIO 0        /* VBUSON pin is controlled by the Port function */
#  endif
#endif

/* DEVCFG2 */

#undef CONFIG_PIC32MX_PLLIDIV
#if BOARD_PLL_IDIV == 1
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV1
#elif BOARD_PLL_IDIV == 2
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV2
#elif BOARD_PLL_IDIV == 3
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV3
#elif BOARD_PLL_IDIV == 4
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV4
#elif BOARD_PLL_IDIV == 5
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV5
#elif BOARD_PLL_IDIV == 6
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV6
#elif BOARD_PLL_IDIV == 10
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV10
#elif BOARD_PLL_IDIV == 12
#  define CONFIG_PIC32MX_PLLIDIV  DEVCFG2_FPLLIDIV_DIV12
#else
#  error "Unsupported BOARD_PLL_IDIV"
#endif

#undef CONFIG_PIC32MX_PLLMULT
#if BOARD_PLL_MULT == 15
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL15
#elif BOARD_PLL_MULT == 16
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL16
#elif BOARD_PLL_MULT == 17
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL17
#elif BOARD_PLL_MULT == 18
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL18
#elif BOARD_PLL_MULT == 19
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL19
#elif BOARD_PLL_MULT == 20
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL20
#elif BOARD_PLL_MULT == 21
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL21
#elif BOARD_PLL_MULT == 24
#  define CONFIG_PIC32MX_PLLMULT  DEVCFG2_FPLLMULT_MUL24
#else
#  error "Unsupported BOARD_PLL_MULT"
#endif

#undef CONFIG_PIC32MX_UPLLIDIV
#if BOARD_UPLL_IDIV == 15
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL15
#elif BOARD_UPLL_IDIV == 16
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL16
#elif BOARD_UPLL_IDIV == 17
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL17
#elif BOARD_UPLL_IDIV == 18
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL18
#elif BOARD_UPLL_IDIV == 19
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL19
#elif BOARD_UPLL_IDIV == 20
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL20
#elif BOARD_UPLL_IDIV == 21
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL21
#elif BOARD_UPLL_IDIV == 24
#  define CONFIG_PIC32MX_UPLLIDIV DEVCFG2_FPLLMULT_MUL24
#else
#  error "Unsupported BOARD_UPLL_IDIV"
#endif

#undef CONFIG_PIC32MX_PLLODIV
#if BOARD_PLL_ODIV == 1
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV1
#elif BOARD_PLL_ODIV == 2
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 4
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 8
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 16
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 32
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 64
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#elif BOARD_PLL_ODIV == 128
#  define CONFIG_PIC32MX_PLLODIV  DEVCFG2_FPLLODIV_DIV2
#else
#  error "Unsupported BOARD_PLL_ODIV"
#endif

/* DEVCFG1 */

#undef CONFIG_PIC32MX_PBDIV
#if BOARD_PBDIV == 1
#  define CONFIG_PIC32MX_PBDIV DEVCFG1_FPBDIV_DIV1
#elif BOARD_PBDIV == 2
#  define CONFIG_PIC32MX_PBDIV DEVCFG1_FPBDIV_DIV2
#elif BOARD_PBDIV == 4
#  define CONFIG_PIC32MX_PBDIV DEVCFG1_FPBDIV_DIV4
#elif BOARD_PBDIV == 8
#  define CONFIG_PIC32MX_PBDIV DEVCFG1_FPBDIV_DIV8
#else
#  error "Unsupported BOARD_PBDIV"
#endif

#undef CONFIG_PIC32MX_WDPS
#if BOARD_WD_PRESCALER == 1
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_1
#elif BOARD_WD_PRESCALER == 2
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_2
#elif BOARD_WD_PRESCALER == 4
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_4
#elif BOARD_WD_PRESCALER == 8
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_8
#elif BOARD_WD_PRESCALER == 16
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_16
#elif BOARD_WD_PRESCALER == 32
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_32
#elif BOARD_WD_PRESCALER == 64
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_64
#elif BOARD_WD_PRESCALER == 128
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_128
#elif BOARD_WD_PRESCALER == 256
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_256
#elif BOARD_WD_PRESCALER == 512
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_512
#elif BOARD_WD_PRESCALER == 1024
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_1024
#elif BOARD_WD_PRESCALER == 2048
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_2048
#elif BOARD_WD_PRESCALER == 4096
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_4096
#elif BOARD_WD_PRESCALER == 8192
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_8192
#elif BOARD_WD_PRESCALER == 16384
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_16384
#elif BOARD_WD_PRESCALER == 32768
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_32768
#elif BOARD_WD_PRESCALER == 65536
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_65536
#elif BOARD_WD_PRESCALER == 131072
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_131072
#elif BOARD_WD_PRESCALER == 262144
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_262144
#elif BOARD_WD_PRESCALER == 524288
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_524288
#elif BOARD_WD_PRESCALER == 1048576
#  define CONFIG_PIC32MX_WDPS DEVCFG1_WDTPS_1048576
#else
#  error "Unsupported BOARD_WD_PRESCALER"
#endif

#undef CONFIG_PIC32MX_WDENABLE
#if BOARD_WD_ENABLE
#  define CONFIG_PIC32MX_WDENABLE DEVCFG1_FWDTEN
#else
#  define CONFIG_PIC32MX_WDENABLE 0
#endif

/************************************************************************************
 * Public Types
 ************************************************************************************/

/************************************************************************************
 * Public Data
 ************************************************************************************/

/************************************************************************************
 * Inline Functions
 ************************************************************************************/

/************************************************************************************
 * Public Functions
 ************************************************************************************/

#endif /* __ARCH_MIPS_SRC_LPC17XX_LPC17_PIC32_H */