summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-06-19 19:09:14 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-06-19 19:09:14 +0000
commitec7a135dd37dbf5d8fd5da72f0cf1ebf1f75f982 (patch)
treebd462ed545551d8166e99240ea8714f6eccbce42
parent3c607301046611f4fc12b4a172bfcce94d608865 (diff)
downloadpx4-nuttx-ec7a135dd37dbf5d8fd5da72f0cf1ebf1f75f982.tar.gz
px4-nuttx-ec7a135dd37dbf5d8fd5da72f0cf1ebf1f75f982.tar.bz2
px4-nuttx-ec7a135dd37dbf5d8fd5da72f0cf1ebf1f75f982.zip
Add support for PIC32 MX1 and MX2 families
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4851 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/ChangeLog2
-rw-r--r--nuttx/Documentation/NuttXDocumentation.html2
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/mips32/cp0.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/mips32/irq.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/mips32/registers.h0
-rw-r--r--nuttx/arch/mips/include/pic32mx/chip.h913
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/pic32mx/cp0.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/pic32mx/irq.h6
-rw-r--r--nuttx/arch/mips/include/pic32mx/irq_1xx2xx.h215
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/pic32mx/irq_3xx4xx.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/include/pic32mx/irq_5xx6xx7xx.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/common/up_etherstub.c0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/common/up_internal.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/mips32/mips32-memorymap.h0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/mips32/up_blocktask.c0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/mips32/up_releasepending.c0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/mips32/up_reprioritizertr.c0
-rw-r--r--[-rwxr-xr-x]nuttx/arch/mips/src/mips32/up_unblocktask.c0
-rw-r--r--nuttx/arch/mips/src/pic32mx/Kconfig134
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-config.h88
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-devcfg.h493
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-dma.h1383
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-int.h1957
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-internal.h10
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-ioport.h283
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-irq.c2
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-memorymap.h170
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-spi.h98
28 files changed, 3814 insertions, 1942 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index a7fc1633d..c5c1d2aa0 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -2910,3 +2910,5 @@
particular.
* Documentation/NfsHowTo.html: Add a How-To document for the new NFS
client feature.
+ * arch/mips/include/pic32mx and arch/mips/src/pic32mx: Add support for the
+ PIC32MX1 and PIC32MX2 families.
diff --git a/nuttx/Documentation/NuttXDocumentation.html b/nuttx/Documentation/NuttXDocumentation.html
index cec713135..b26c83175 100644
--- a/nuttx/Documentation/NuttXDocumentation.html
+++ b/nuttx/Documentation/NuttXDocumentation.html
@@ -35,7 +35,7 @@
<li><a href="NuttXNxFlat.html" target="main">NXFLAT</a></li>
<li><a href="NXGraphicsSubsystem.html" target="main">NX Graphics</a></li>
<li><a href="NxWidgets.html" target="main">NxWidgets</a></li>
- <li><a href="NfsHowTo.html" target="main">NFS How-To</a></li>
+ <li><a href="NfsHowto.html" target="main">NFS How-To</a></li>
<li><a href="NuttXDemandPaging.html" target="main">Demand Paging</a></li>
<li><a href="UsbTrace.html" target="main">USB Trace</a></li>
<li><a href="README.html" target="main">README Files</a></li>
diff --git a/nuttx/arch/mips/include/mips32/cp0.h b/nuttx/arch/mips/include/mips32/cp0.h
index 91f6d2d0e..91f6d2d0e 100755..100644
--- a/nuttx/arch/mips/include/mips32/cp0.h
+++ b/nuttx/arch/mips/include/mips32/cp0.h
diff --git a/nuttx/arch/mips/include/mips32/irq.h b/nuttx/arch/mips/include/mips32/irq.h
index 01a50029f..01a50029f 100755..100644
--- a/nuttx/arch/mips/include/mips32/irq.h
+++ b/nuttx/arch/mips/include/mips32/irq.h
diff --git a/nuttx/arch/mips/include/mips32/registers.h b/nuttx/arch/mips/include/mips32/registers.h
index e541a8e53..e541a8e53 100755..100644
--- a/nuttx/arch/mips/include/mips32/registers.h
+++ b/nuttx/arch/mips/include/mips32/registers.h
diff --git a/nuttx/arch/mips/include/pic32mx/chip.h b/nuttx/arch/mips/include/pic32mx/chip.h
index 834bb25fa..b997c4fc4 100644
--- a/nuttx/arch/mips/include/pic32mx/chip.h
+++ b/nuttx/arch/mips/include/pic32mx/chip.h
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/mips/include/pic32mx/chip.h
*
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -47,7 +47,825 @@
****************************************************************************/
/* Configuration ************************************************************/
-#if defined(CONFIG_ARCH_CHIP_PIC32MX320F032H)
+#if defined(PIC32MX110F016B)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 10 /* 10 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX110F016C)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX110F016D)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX120F032B)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 10 /* 10 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX120F032C)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX120F032D)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX130F064B)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 10 /* 10 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX130F064C)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX130F064D)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX150F128B)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 10 /* 10 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX150F128C)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX150F128D)
+# define CHIP_PIC32MX1 1
+# undef CHIP_PIC32MX2
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 0 /* No dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 0 /* No USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX210F016B)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 9 /* 9 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX210F016C)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX210F016D)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 16 /* 16Kb program FLASH */
+# define CHIP_DATAMEM_KB 4 /* 4Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX220F032B)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 9 /* 9 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX220F032C)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX220F032D)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 32 /* 32Kb program FLASH */
+# define CHIP_DATAMEM_KB 8 /* 8Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX230F064B)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 9 /* 9 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX230F064C)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX230F064D)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 64 /* 64Kb program FLASH */
+# define CHIP_DATAMEM_KB 16 /* 16Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX250F128B)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 28 /* Package SOIC, SSOP, SPDIP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 9 /* 9 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX250F128C)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 36 /* Package VTLA */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 12 /* 12 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(PIC32MX250F128D)
+# undef CHIP_PIC32MX1
+# define CHIP_PIC32MX2 1
+# undef CHIP_PIC32MX3
+# undef CHIP_PIC32MX4
+# undef CHIP_PIC32MX5
+# undef CHIP_PIC32MX6
+# undef CHIP_PIC32MX7
+# define CHIP_NPINS 44 /* Package VTLA, TQFP, QFN */
+# define CHIP_MHZ 40 /* 40MHz maximum frequency */
+# define CHIP_BOOTFLASH_KB 3 /* 3Kb boot FLASH */
+# define CHIP_PROGFLASH_KB 128 /* 128Kb program FLASH */
+# define CHIP_DATAMEM_KB 32 /* 32Kb data memory */
+# define CHIP_NTIMERS 5 /* 5 timers */
+# define CHIP_NIC 5 /* 5 input capture */
+# define CHIP_NOC 5 /* 5 output compare */
+# define CHIP_NDMACH 4 /* 4 programmable DMA channels */
+# define CHIP_NUSBDMACHAN 2 /* 2 dedicated DMA channels */
+# define CHIP_CTMU 1 /* Has CTMU */
+# deine CHIP_VRFSEL 1 /* Comparator voltage reference selection */
+# undef CHIP_TRACE /* No trace capability */
+# define CHIP_NUARTS 2 /* 2 UARTS */
+# define CHIP_UARTFIFOD 8 /* 8 level deep UART FIFOs */
+# define CHIP_NSPI 2 /* 2 SPI/I2S interfaces */
+# define CHIP_NI2C 2 /* 2 I2C interfaces */
+# define CHIP_NCAN 0 /* No CAN interface */
+# define CHIP_NADC10 13 /* 13 10-bit ADC channels */
+# define CHIP_NCM 3 /* 3 Analog comparators */
+# define CHIP_USBOTG 1 /* Has USB OTG */
+# define CHIP_RTCC 1 /* Has RTCC */
+# define CHIP_PMP 1 /* Have parallel master port */
+# define CHIP_PSP 0 /* No parallel slave port (?) */
+# define CHIP_NETHERNET 0 /* No Ethernet */
+# define CHIP_JTAG 1 /* Has JTAG */
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F032H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -64,7 +882,6 @@
# define CHIP_NDMACH 0 /* No programmable DMA channels */
# define CHIP_NUSBDMACHAN 0
# undef CHIP_VRFSEL /* No comparator voltage reference selection */
-
# undef CHIP_TRACE /* No trace capability */
# define CHIP_NUARTS 2 /* 2 UARTS */
# define CHIP_UARTFIFOD 8 /* 4 level deep UART FIFOs */
@@ -78,6 +895,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F064H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -94,7 +913,6 @@
# define CHIP_NDMACH 0 /* No programmable DMA channels */
# define CHIP_NUSBDMACHAN 0
# undef CHIP_VRFSEL /* No comparator voltage reference selection */
-
# undef CHIP_TRACE /* No trace capability */
# define CHIP_NUARTS 2 /* 2 UARTS */
# define CHIP_UARTFIFOD 8 /* 4 level deep UART FIFOs */
@@ -108,6 +926,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -124,7 +944,6 @@
# define CHIP_NDMACH 0 /* No programmable DMA channels */
# define CHIP_NUSBDMACHAN 0
# undef CHIP_VRFSEL /* No comparator voltage reference selection */
-
# undef CHIP_TRACE /* No trace capability */
# define CHIP_NUARTS 2 /* 2 UARTS */
# define CHIP_UARTFIFOD 8 /* 4 level deep UART FIFOs */
@@ -138,6 +957,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -167,6 +988,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F256H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -196,6 +1019,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -225,6 +1050,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# define CHIP_PIC32MX3 1
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -254,6 +1081,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -283,6 +1112,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX360F256L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -312,6 +1143,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX360F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -341,6 +1174,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX420F032H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -370,6 +1205,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -399,6 +1236,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F256H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -428,6 +1267,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -457,6 +1298,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -486,6 +1329,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX460F256L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -515,6 +1360,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX460F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# define CHIP_PIC32MX4 1
# undef CHIP_PIC32MX5
@@ -544,6 +1391,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX534F064H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -573,6 +1422,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX564F064H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -602,6 +1453,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX564F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -631,6 +1484,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX575F256H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -660,6 +1515,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX575F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -689,6 +1546,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX534F064L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -718,6 +1577,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX564F064L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -747,6 +1608,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX564F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -776,6 +1639,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX575F256L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -805,6 +1670,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX575F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# define CHIP_PIC32MX5 1
@@ -834,6 +1701,8 @@
# define CHIP_NETHERNET 0 /* No Ethernet */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX664F064H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -863,6 +1732,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX664F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -892,6 +1763,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX675F256H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -921,6 +1794,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX675F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -950,6 +1825,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX695F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -979,6 +1856,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX664F064L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1008,6 +1887,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX664F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1037,6 +1918,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX675F256L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1066,6 +1949,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX675F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1095,6 +1980,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX695F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1124,6 +2011,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX764F128H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1153,6 +2042,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX775F256H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1182,6 +2073,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX775F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1211,6 +2104,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX795F512H)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1240,6 +2135,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX764F128L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1269,6 +2166,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX775F256L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1298,6 +2197,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX775F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
@@ -1327,6 +2228,8 @@
# define CHIP_NETHERNET 1 /* 1 Ethernet interface */
# define CHIP_JTAG
#elif defined(CONFIG_ARCH_CHIP_PIC32MX795F512L)
+# undef CHIP_PIC32MX1
+# undef CHIP_PIC32MX2
# undef CHIP_PIC32MX3
# undef CHIP_PIC32MX4
# undef CHIP_PIC32MX5
diff --git a/nuttx/arch/mips/include/pic32mx/cp0.h b/nuttx/arch/mips/include/pic32mx/cp0.h
index 67ced8a2c..67ced8a2c 100755..100644
--- a/nuttx/arch/mips/include/pic32mx/cp0.h
+++ b/nuttx/arch/mips/include/pic32mx/cp0.h
diff --git a/nuttx/arch/mips/include/pic32mx/irq.h b/nuttx/arch/mips/include/pic32mx/irq.h
index de0970630..91fde196d 100755..100644
--- a/nuttx/arch/mips/include/pic32mx/irq.h
+++ b/nuttx/arch/mips/include/pic32mx/irq.h
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/mips/include/pic32mx/irq.h
*
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -45,7 +45,9 @@
****************************************************************************/
#include <arch/pic32mx/chip.h>
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# include <arch/pic32mx/irq_1xx2xx.h>
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
# include <arch/pic32mx/irq_3xx4xx.h>
#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
# include <arch/pic32mx/irq_5xx6xx7xx.h>
diff --git a/nuttx/arch/mips/include/pic32mx/irq_1xx2xx.h b/nuttx/arch/mips/include/pic32mx/irq_1xx2xx.h
new file mode 100644
index 000000000..9ca71690b
--- /dev/null
+++ b/nuttx/arch/mips/include/pic32mx/irq_1xx2xx.h
@@ -0,0 +1,215 @@
+/****************************************************************************
+ * arch/mips/include/pic32mx/irq_1xx2xx.h
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+/* This file should never be included directed but, rather, only indirectly
+ * through nuttx/irq.h
+ */
+
+#ifndef __ARCH_MIPS_INCLUDE_PIC32MX_IRQ_1XX2XX_H
+#define __ARCH_MIPS_INCLUDE_PIC32MX_IRQ_1XX2XX_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Interrupt vector numbers. These should be used to attach to interrupts
+ * and to change interrupt priorities.
+ */
+
+#define PIC32MX_IRQ_CT 0 /* Vector: 0, Core Timer Interrupt */
+#define PIC32MX_IRQ_CS0 1 /* Vector: 1, Core Software Interrupt 0 */
+#define PIC32MX_IRQ_CS1 2 /* Vector: 2, Core Software Interrupt 1 */
+#define PIC32MX_IRQ_INT0 3 /* Vector: 3, External Interrupt 0 */
+#define PIC32MX_IRQ_T1 4 /* Vector: 4, Timer 1 */
+#define PIC32MX_IRQ_IC1 5 /* Vector: 5, Input Capture 1 */
+#define PIC32MX_IRQ_OC1 6 /* Vector: 6, Output Compare 1 */
+#define PIC32MX_IRQ_INT1 7 /* Vector: 7, External Interrupt 1 */
+#define PIC32MX_IRQ_T2 8 /* Vector: 8, Timer 2 */
+#define PIC32MX_IRQ_IC2 9 /* Vector: 9, Input Capture 2 */
+#define PIC32MX_IRQ_OC2 10 /* Vector: 10, Output Compare 2 */
+#define PIC32MX_IRQ_INT2 11 /* Vector: 11, External Interrupt 2 */
+#define PIC32MX_IRQ_T3 12 /* Vector: 12, Timer 3 */
+#define PIC32MX_IRQ_IC3 13 /* Vector: 13, Input Capture 3 */
+#define PIC32MX_IRQ_OC3 14 /* Vector: 14, Output Compare 3 */
+#define PIC32MX_IRQ_INT3 15 /* Vector: 15, External Interrupt 3 */
+#define PIC32MX_IRQ_T4 16 /* Vector: 16, Timer 4 */
+#define PIC32MX_IRQ_IC4 17 /* Vector: 17, Input Capture 4 */
+#define PIC32MX_IRQ_OC4 18 /* Vector: 18, Output Compare 4 */
+#define PIC32MX_IRQ_INT4 19 /* Vector: 19, External Interrupt 4 */
+#define PIC32MX_IRQ_T5 20 /* Vector: 20, Timer 5 */
+#define PIC32MX_IRQ_IC5 21 /* Vector: 21, Input Capture 5 */
+#define PIC32MX_IRQ_OC5 22 /* Vector: 22, Output Compare 5 */
+#define PIC32MX_IRQ_AD1 23 /* Vector: 23, ADC1 Convert Done */
+#define PIC32MX_IRQ_FSCM 24 /* Vector: 24, Fail-Safe Clock Monitor */
+#define PIC32MX_IRQ_RTCC 25 /* Vector: 25, Real-Time Clock and Calendar */
+#define PIC32MX_IRQ_FCE 26 /* Vector: 26, Flash Control Event */
+#define PIC32MX_IRQ_CMP1 27 /* Vector: 27, Comparator 1 */
+#define PIC32MX_IRQ_CMP2 28 /* Vector: 28, Comparator 2 */
+#define PIC32MX_IRQ_CMP3 29 /* Vector: 29, Comparator 3 */
+#define PIC32MX_IRQ_USB 30 /* Vector: 30, USB */
+#define PIC32MX_IRQ_SPI1 31 /* Vector: 31, SPI1 */
+#define PIC32MX_IRQ_U1 32 /* Vector: 32, UART1 */
+#define PIC32MX_IRQ_I2C1 33 /* Vector: 33, I2C1 */
+#define PIC32MX_IRQ_CN 34 /* Vector: 34, Input Change */
+#define PIC32MX_IRQ_PMP 35 /* Vector: 35, Parallel Master Port */
+#define PIC32MX_IRQ_SPI2 36 /* Vector: 36, SPI2 */
+#define PIC32MX_IRQ_U2 37 /* Vector: 37, UART2 */
+#define PIC32MX_IRQ_I2C2 38 /* Vector: 38, I2C2 */
+#define PIC32MX_IRQ_CTMU 39 /* Vector: 39, CTMU */
+#define PIC32MX_IRQ_DMA0 40 /* Vector: 40, DMA Channel 0 */
+#define PIC32MX_IRQ_DMA1 41 /* Vector: 41, DMA Channel 1 */
+#define PIC32MX_IRQ_DMA2 42 /* Vector: 42, DMA Channel 2 */
+#define PIC32MX_IRQ_DMA3 43 /* Vector: 43, DMA Channel 3 */
+
+#define PIC32MX_IRQ_BAD 44 /* Not a real IRQ number */
+#define NR_IRQS 44
+
+/* Interrupt numbers. These should be used for enabling and disabling
+ * interrupt sources. Note that there are more interrupt sources than
+ * interrupt vectors and interrupt priorities. An offset of 128 is
+ * used so that there is no overlap with the IRQ numbers and to avoid
+ * errors due to misuse.
+ */
+
+#define PIC32MX_IRQSRC0_FIRST (128+0)
+#define PIC32MX_IRQSRC_CT (128+0) /* Vector: 0, Core Timer Interrupt */
+#define PIC32MX_IRQSRC_CS0 (128+1) /* Vector: 1, Core Software Interrupt 0 */
+#define PIC32MX_IRQSRC_CS1 (128+2) /* Vector: 2, Core Software Interrupt 1 */
+#define PIC32MX_IRQSRC_INT0 (128+3) /* Vector: 3, External Interrupt 0 */
+#define PIC32MX_IRQSRC_T1 (128+4) /* Vector: 4, Timer 1 */
+#define PIC32MX_IRQSRC_IC1E (128+5) /* Vector: 5, Input Capture 1 Error */
+#define PIC32MX_IRQSRC_IC1 (128+6) /* Vector: 5, Input Capture 1 */
+#define PIC32MX_IRQSRC_OC1 (128+7) /* Vector: 6, Output Compare 1 */
+#define PIC32MX_IRQSRC_INT1 (128+8) /* Vector: 7, External Interrupt 1 */
+#define PIC32MX_IRQSRC_T2 (128+9) /* Vector: 8, Timer 2 */
+#define PIC32MX_IRQSRC_IC2E (128+10) /* Vector: 9, Input Capture 2 Error */
+#define PIC32MX_IRQSRC_IC2 (128+11) /* Vector: 9, Input Capture 2 */
+#define PIC32MX_IRQSRC_OC2 (128+12) /* Vector: 10, Output Compare 2 */
+#define PIC32MX_IRQSRC_INT2 (128+13) /* Vector: 11, External Interrupt 2 */
+#define PIC32MX_IRQSRC_T3 (128+14) /* Vector: 12, Timer 3 */
+#define PIC32MX_IRQSRC_IC3E (128+15) /* Vector: 13, Input Capture 3 Error */
+#define PIC32MX_IRQSRC_IC3 (128+16) /* Vector: 13, Input Capture 3 */
+#define PIC32MX_IRQSRC_OC3 (128+17) /* Vector: 14, Output Compare 3 */
+#define PIC32MX_IRQSRC_INT3 (128+18) /* Vector: 15, External Interrupt 3 */
+#define PIC32MX_IRQSRC_T4 (128+19) /* Vector: 16, Timer 4 */
+#define PIC32MX_IRQSRC_IC4E (128+20) /* Vector: 17, Input Capture 4 Error */
+#define PIC32MX_IRQSRC_IC4 (128+21) /* Vector: 17, Input Capture 4 */
+#define PIC32MX_IRQSRC_OC4 (128+22) /* Vector: 18, Output Compare 4 */
+#define PIC32MX_IRQSRC_INT4 (128+23) /* Vector: 19, External Interrupt 4 */
+#define PIC32MX_IRQSRC_T5 (128+24) /* Vector: 20, Timer 5 */
+#define PIC32MX_IRQSRC_IC5E (128+25) /* Vector: 21, Input Capture 5 Error */
+#define PIC32MX_IRQSRC_IC5 (128+26) /* Vector: 21, Input Capture 5 */
+#define PIC32MX_IRQSRC_OC5 (128+27) /* Vector: 22, Output Compare 5 */
+#define PIC32MX_IRQSRC_AD1 (128+28) /* Vector: 23, ADC1 Convert Done */
+#define PIC32MX_IRQSRC_FSCM (128+29) /* Vector: 24, Fail-Safe Clock Monitor */
+#define PIC32MX_IRQSRC_RTCC (128+30) /* Vector: 25, Real-Time Clock and Calendar */
+#define PIC32MX_IRQSRC_FCE (128+31) /* Vector: 26, Flash Control Event */
+#define PIC32MX_IRQSRC0_LAST (128+31)
+
+#define PIC32MX_IRQSRC1_FIRST (128+32)
+#define PIC32MX_IRQSRC_CMP1 (128+32) /* Vector: 27, Comparator 1 Interrupt */
+#define PIC32MX_IRQSRC_CMP2 (128+33) /* Vector: 28, Comparator 2 Interrupt */
+#define PIC32MX_IRQSRC_CMP2 (128+34) /* Vector: 29, Comparator 3 Interrupt */
+#define PIC32MX_IRQSRC_USB (128+35) /* Vector: 30, USB */
+#define PIC32MX_IRQSRC_SPI1E (128+36) /* Vector: 31, SPI1 */
+#define PIC32MX_IRQSRC_SPI1TX (128+37) /* Vector: 31, " " */
+#define PIC32MX_IRQSRC_SPI1RX (128+38) /* Vector: 31, " " */
+#define PIC32MX_IRQSRC_U1E (128+39) /* Vector: 32, UART1 */
+#define PIC32MX_IRQSRC_U1RX (128+40) /* Vector: 32, " " */
+#define PIC32MX_IRQSRC_U1TX (128+41) /* Vector: 32, " " */
+#define PIC32MX_IRQSRC_I2C1B (128+42) /* Vector: 33, I2C1 */
+#define PIC32MX_IRQSRC_I2C1S (128+43) /* Vector: 33, " " */
+#define PIC32MX_IRQSRC_I2C1M (128+44) /* Vector: 33, " " */
+#define PIC32MX_IRQSRC_CNA (128+45) /* Vector: 34, Input Change Interrupt */
+#define PIC32MX_IRQSRC_CNB (128+46) /* Vector: 34, Input Change Interrupt */
+#define PIC32MX_IRQSRC_CNC (128+47) /* Vector: 34, Input Change Interrupt */
+#define PIC32MX_IRQSRC_PMP (128+48) /* Vector: 35, Parallel Master Port */
+#define PIC32MX_IRQSRC_PMPE (128+49) /* Vector: 35, Parallel Master Port */
+#define PIC32MX_IRQSRC_SPI2E (128+50) /* Vector: 36, SPI2 */
+#define PIC32MX_IRQSRC_SPI2TX (128+51) /* Vector: 36, " " */
+#define PIC32MX_IRQSRC_SPI2RX (128+52) /* Vector: 36, " " */
+#define PIC32MX_IRQSRC_U2E (128+53) /* Vector: 37, UART2 */
+#define PIC32MX_IRQSRC_U2RX (128+54) /* Vector: 37, " " */
+#define PIC32MX_IRQSRC_U2TX (128+55) /* Vector: 37, " " */
+#define PIC32MX_IRQSRC_I2C2B (128+56) /* Vector: 38, I2C2 */
+#define PIC32MX_IRQSRC_I2C2S (128+57) /* Vector: 38, " " */
+#define PIC32MX_IRQSRC_I2C2M (128+58) /* Vector: 38, " " */
+#define PIC32MX_IRQSRC_CTMU (128+59) /* Vector: 39, CTMU */
+#define PIC32MX_IRQSRC_DMA0 (128+60) /* Vector: 40, DMA Channel 0 */
+#define PIC32MX_IRQSRC_DMA1 (128+61) /* Vector: 41, DMA Channel 1 */
+#define PIC32MX_IRQSRC_DMA2 (128+62) /* Vector: 42, DMA Channel 2 */
+#define PIC32MX_IRQSRC_DMA3 (128+63) /* Vector: 43, DMA Channel 3 */
+#define PIC32MX_IRQSRC1_LAST (128+63)
+
+#define PIC32MX_IRQSRC_FIRST PIC32MX_IRQSRC0_FIRST
+#define PIC32MX_IRQSRC_LAST PIC32MX_IRQSRC1_LAST
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Variables
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_INCLUDE_PIC32MX_IRQ_1XX2XX_H */
+
diff --git a/nuttx/arch/mips/include/pic32mx/irq_3xx4xx.h b/nuttx/arch/mips/include/pic32mx/irq_3xx4xx.h
index 36b1b2418..36b1b2418 100755..100644
--- a/nuttx/arch/mips/include/pic32mx/irq_3xx4xx.h
+++ b/nuttx/arch/mips/include/pic32mx/irq_3xx4xx.h
diff --git a/nuttx/arch/mips/include/pic32mx/irq_5xx6xx7xx.h b/nuttx/arch/mips/include/pic32mx/irq_5xx6xx7xx.h
index e94079314..e94079314 100755..100644
--- a/nuttx/arch/mips/include/pic32mx/irq_5xx6xx7xx.h
+++ b/nuttx/arch/mips/include/pic32mx/irq_5xx6xx7xx.h
diff --git a/nuttx/arch/mips/src/common/up_etherstub.c b/nuttx/arch/mips/src/common/up_etherstub.c
index 1781c8c80..1781c8c80 100755..100644
--- a/nuttx/arch/mips/src/common/up_etherstub.c
+++ b/nuttx/arch/mips/src/common/up_etherstub.c
diff --git a/nuttx/arch/mips/src/common/up_internal.h b/nuttx/arch/mips/src/common/up_internal.h
index 62f9b8402..62f9b8402 100755..100644
--- a/nuttx/arch/mips/src/common/up_internal.h
+++ b/nuttx/arch/mips/src/common/up_internal.h
diff --git a/nuttx/arch/mips/src/mips32/mips32-memorymap.h b/nuttx/arch/mips/src/mips32/mips32-memorymap.h
index f4a0fed7d..f4a0fed7d 100755..100644
--- a/nuttx/arch/mips/src/mips32/mips32-memorymap.h
+++ b/nuttx/arch/mips/src/mips32/mips32-memorymap.h
diff --git a/nuttx/arch/mips/src/mips32/up_blocktask.c b/nuttx/arch/mips/src/mips32/up_blocktask.c
index 47fd4024b..47fd4024b 100755..100644
--- a/nuttx/arch/mips/src/mips32/up_blocktask.c
+++ b/nuttx/arch/mips/src/mips32/up_blocktask.c
diff --git a/nuttx/arch/mips/src/mips32/up_releasepending.c b/nuttx/arch/mips/src/mips32/up_releasepending.c
index 978df0c7d..978df0c7d 100755..100644
--- a/nuttx/arch/mips/src/mips32/up_releasepending.c
+++ b/nuttx/arch/mips/src/mips32/up_releasepending.c
diff --git a/nuttx/arch/mips/src/mips32/up_reprioritizertr.c b/nuttx/arch/mips/src/mips32/up_reprioritizertr.c
index 24e33693c..24e33693c 100755..100644
--- a/nuttx/arch/mips/src/mips32/up_reprioritizertr.c
+++ b/nuttx/arch/mips/src/mips32/up_reprioritizertr.c
diff --git a/nuttx/arch/mips/src/mips32/up_unblocktask.c b/nuttx/arch/mips/src/mips32/up_unblocktask.c
index ba29cb736..ba29cb736 100755..100644
--- a/nuttx/arch/mips/src/mips32/up_unblocktask.c
+++ b/nuttx/arch/mips/src/mips32/up_unblocktask.c
diff --git a/nuttx/arch/mips/src/pic32mx/Kconfig b/nuttx/arch/mips/src/pic32mx/Kconfig
index e4ced546b..9597e1eb1 100644
--- a/nuttx/arch/mips/src/pic32mx/Kconfig
+++ b/nuttx/arch/mips/src/pic32mx/Kconfig
@@ -9,6 +9,126 @@ choice
prompt "PIC32MX chip selection"
default ARCH_CHIP_PIC32MX460F512L
+config ARCH_CHIP_PIC32MX110F016B
+ bool "PIC32MX110F016B"
+ ---help---
+ Microchip PIC32MX110F016B (MIPS32)
+
+config ARCH_CHIP_PIC32MX110F016C
+ bool "PIC32MX110F016C"
+ ---help---
+ Microchip PIC32MX110F016C (MIPS32)
+
+config ARCH_CHIP_PIC32MX110F016D
+ bool "PIC32MX110F016D"
+ ---help---
+ Microchip PIC32MX110F016D (MIPS32)
+
+config ARCH_CHIP_PIC32MX120F032B
+ bool "PIC32MX120F032B"
+ ---help---
+ Microchip PIC32MX120F032B (MIPS32)
+
+config ARCH_CHIP_PIC32MX120F032C
+ bool "PIC32MX120F032C"
+ ---help---
+ Microchip PIC32MX120F032C (MIPS32)
+
+config ARCH_CHIP_PIC32MX120F032D
+ bool "PIC32MX120F032D"
+ ---help---
+ Microchip PIC32MX120F032D (MIPS32)
+
+config ARCH_CHIP_PIC32MX130F064B
+ bool "PIC32MX130F064B"
+ ---help---
+ Microchip PIC32MX130F064B (MIPS32)
+
+config ARCH_CHIP_PIC32MX130F064C
+ bool "PIC32MX130F064C"
+ ---help---
+ Microchip PIC32MX130F064C (MIPS32)
+
+config ARCH_CHIP_PIC32MX130F064D
+ bool "PIC32MX130F064D"
+ ---help---
+ Microchip PIC32MX130F064D (MIPS32)
+
+config ARCH_CHIP_PIC32MX150F128B
+ bool "PIC32MX150F128B"
+ ---help---
+ Microchip PIC32MX150F128B (MIPS32)
+
+config ARCH_CHIP_PIC32MX150F128C
+ bool "PIC32MX150F128C"
+ ---help---
+ Microchip PIC32MX150F128C (MIPS32)
+
+config ARCH_CHIP_PIC32MX150F128D
+ bool "PIC32MX150F128D"
+ ---help---
+ Microchip PIC32MX150F128D (MIPS32)
+
+config ARCH_CHIP_PIC32MX210F016B
+ bool "PIC32MX210F016B"
+ ---help---
+ Microchip PIC32MX210F016B (MIPS32)
+
+config ARCH_CHIP_PIC32MX210F016C
+ bool "PIC32MX210F016C"
+ ---help---
+ Microchip PIC32MX210F016C (MIPS32)
+
+config ARCH_CHIP_PIC32MX210F016D
+ bool "PIC32MX210F016D"
+ ---help---
+ Microchip PIC32MX210F016D (MIPS32)
+
+config ARCH_CHIP_PIC32MX220F032B
+ bool "PIC32MX220F032B"
+ ---help---
+ Microchip PIC32MX220F032B (MIPS32)
+
+config ARCH_CHIP_PIC32MX220F032C
+ bool "PIC32MX220F032C"
+ ---help---
+ Microchip PIC32MX220F032C (MIPS32)
+
+config ARCH_CHIP_PIC32MX220F032D
+ bool "PIC32MX220F032D"
+ ---help---
+ Microchip PIC32MX220F032D (MIPS32)
+
+config ARCH_CHIP_PIC32MX230F064B
+ bool "PIC32MX230F064B"
+ ---help---
+ Microchip PIC32MX230F064B (MIPS32)
+
+config ARCH_CHIP_PIC32MX230F064C
+ bool "PIC32MX230F064C"
+ ---help---
+ Microchip PIC32MX230F064C (MIPS32)
+
+config ARCH_CHIP_PIC32MX230F064D
+ bool "PIC32MX230F064D"
+ ---help---
+ Microchip PIC32MX230F064D (MIPS32)
+
+config ARCH_CHIP_PIC32MX250F128B
+ bool "PIC32MX250F128B"
+ ---help---
+ Microchip PIC32MX250F128B (MIPS32)
+
+config ARCH_CHIP_PIC32MX250F128C
+ bool "PIC32MX250F128C"
+ ---help---
+ Microchip PIC32MX250F128C (MIPS32)
+
+config ARCH_CHIP_PIC32MX250F128D
+ bool "PIC32MX250F128D"
+ ---help---
+ Microchip PIC32MX250F128D (MIPS32)
+
config ARCH_CHIP_PIC32MX320F032H
bool "PIC32MX320F032H"
---help---
@@ -236,10 +356,18 @@ config ARCH_CHIP_PIC32MX795F512L
endchoice
+config ARCH_CHIP_PIC322MX1
+ bool
+ default y if ARCH_CHIP_PIC32MX110F016B || ARCH_CHIP_PIC32MX110F016C || ARCH_CHIP_PIC32MX110F016D || ARCH_CHIP_PIC32MX120F032B || ARCH_CHIP_PIC32MX120F032C || ARCH_CHIP_PIC32MX120F032D || ARCH_CHIP_PIC32MX130F064B || ARCH_CHIP_PIC32MX130F064C || ARCH_CHIP_PIC32MX130F064D || ARCH_CHIP_PIC32MX150F128B || ARCH_CHIP_PIC32MX150F128C || ARCH_CHIP_PIC32MX150F128D
+
+config ARCH_CHIP_PIC322MX2
+ bool
+ default y if ARCH_CHIP_PIC32MX210F016B || ARCH_CHIP_PIC32MX210F016C || ARCH_CHIP_PIC32MX210F016D || ARCH_CHIP_PIC32MX220F032B || ARCH_CHIP_PIC32MX220F032C || ARCH_CHIP_PIC32MX220F032D || ARCH_CHIP_PIC32MX230F064B || ARCH_CHIP_PIC32MX230F064C || ARCH_CHIP_PIC32MX230F064D || ARCH_CHIP_PIC32MX250F128B || ARCH_CHIP_PIC32MX250F128C || ARCH_CHIP_PIC32MX250F128D
+
config ARCH_CHIP_PIC322MX3
bool
default y if ARCH_CHIP_PIC32MX320F032H || ARCH_CHIP_PIC32MX320F064H || ARCH_CHIP_PIC32MX320F128H || ARCH_CHIP_PIC32MX320F128L || ARCH_CHIP_PIC32MX340F128H || ARCH_CHIP_PIC32MX340F256H || ARCH_CHIP_PIC32MX340F512H || ARCH_CHIP_PIC32MX340F128L || ARCH_CHIP_PIC32MX360F256L || ARCH_CHIP_PIC32MX360F512L
-
+
config ARCH_CHIP_PIC322MX4
bool
default y if ARCH_CHIP_PIC32MX420F032H || ARCH_CHIP_PIC32MX440F128H || ARCH_CHIP_PIC32MX440F128L || ARCH_CHIP_PIC32MX440F256H || ARCH_CHIP_PIC32MX440F512H || ARCH_CHIP_PIC32MX460F256L || ARCH_CHIP_PIC32MX460F512L
@@ -434,6 +562,10 @@ config PIC32MX_ETHERNET
bool "Ethernet"
default n
+config PIC32MX_CTMU
+ bool "Charge Time Measurement Unit (CMTU)"
+ default n
+
endmenu
menu "PIC32MX Peripheral Interrupt Priorities"
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-config.h b/nuttx/arch/mips/src/pic32mx/pic32mx-config.h
index 4ef88508d..fc2a40fb5 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-config.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-config.h
@@ -55,7 +55,7 @@
/* Interrupt Priorities *************************************************************/
#ifndef CONFIG_PIC32MX_CTPRIO /* Core Timer Interrupt */
-# define CONFIG_PIC32MX_CTPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CTPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CTPRIO < 4
# error "CONFIG_PIC32MX_CTPRIO is too small"
@@ -65,7 +65,7 @@
#endif
#ifndef CONFIG_PIC32MX_CS0PRIO /* Core Software Interrupt 0 */
-# define CONFIG_PIC32MX_CS0PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CS0PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CS0PRIO < 4
# error "CONFIG_PIC32MX_CS0PRIO is too small"
@@ -75,7 +75,7 @@
#endif
#ifndef CONFIG_PIC32MX_CS1PRIO /* Core Software Interrupt 1 */
-# define CONFIG_PIC32MX_CS1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CS1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CS1PRIO < 4
# error "CONFIG_PIC32MX_CS1PRIO is too small"
@@ -85,7 +85,7 @@
#endif
#ifndef CONFIG_PIC32MX_INT0PRIO /* External interrupt 0 */
-# define CONFIG_PIC32MX_INT0PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_INT0PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_INT0PRIO < 4
# error "CONFIG_PIC32MX_INT0PRIO is too small"
@@ -95,7 +95,7 @@
#endif
#ifndef CONFIG_PIC32MX_INT1PRIO /* External interrupt 1 */
-# define CONFIG_PIC32MX_INT1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_INT1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_INT1PRIO < 4
# error "CONFIG_PIC32MX_INT1PRIO is too small"
@@ -105,7 +105,7 @@
#endif
#ifndef CONFIG_PIC32MX_INT2PRIO /* External interrupt 2 */
-# define CONFIG_PIC32MX_INT2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_INT2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_INT2PRIO < 4
# error "CONFIG_PIC32MX_INT2PRIO is too small"
@@ -115,7 +115,7 @@
#endif
#ifndef CONFIG_PIC32MX_INT3PRIO /* External interrupt 3 */
-# define CONFIG_PIC32MX_INT3PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_INT3PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_INT3PRIO < 4
# error "CONFIG_PIC32MX_INT3PRIO is too small"
@@ -125,7 +125,7 @@
#endif
#ifndef CONFIG_PIC32MX_INT4PRIO /* External interrupt 4 */
-# define CONFIG_PIC32MX_INT4PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_INT4PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_INT4PRIO < 4
# error "CONFIG_PIC32MX_INT4PRIO is too small"
@@ -135,7 +135,7 @@
#endif
#ifndef CONFIG_PIC32MX_FSCMPRIO /* Fail-Safe Clock Monitor */
-# define CONFIG_PIC32MX_FSCMPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_FSCMPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_FSCMPRIO < 4
# error "CONFIG_PIC32MX_FSCMPRIO is too small"
@@ -145,7 +145,7 @@
#endif
#ifndef CONFIG_PIC32MX_T1PRIO /* Timer 1 (System timer) priority */
-# define CONFIG_PIC32MX_T1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_T1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T1PRIO < 4
# error "CONFIG_PIC32MX_T1PRIO is too small"
@@ -155,7 +155,7 @@
#endif
#ifndef CONFIG_PIC32MX_T2PRIO /* Timer 2 priority */
-# define CONFIG_PIC32MX_T2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_T2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T2PRIO < 4
# error "CONFIG_PIC32MX_T2PRIO is too small"
@@ -165,7 +165,7 @@
#endif
#ifndef CONFIG_PIC32MX_T3PRIO /* Timer 3 priority */
-# define CONFIG_PIC32MX_T3PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_T3PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T3PRIO < 4
# error "CONFIG_PIC32MX_T3PRIO is too small"
@@ -175,7 +175,7 @@
#endif
#ifndef CONFIG_PIC32MX_T4PRIO /* Timer 4 priority */
-# define CONFIG_PIC32MX_T4PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_T4PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T4PRIO < 4
# error "CONFIG_PIC32MX_T4PRIO is too small"
@@ -185,7 +185,7 @@
#endif
#ifndef CONFIG_PIC32MX_T5PRIO /* Timer 5 priority */
-# define CONFIG_PIC32MX_T5PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_T5PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_T5PRIO < 4
# error "CONFIG_PIC32MX_T5PRIO is too small"
@@ -195,7 +195,7 @@
#endif
#ifndef CONFIG_PIC32MX_IC1PRIO /* Input Capture 1 */
-# define CONFIG_PIC32MX_IC1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_IC1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC1PRIO < 4
# error "CONFIG_PIC32MX_IC1PRIO is too small"
@@ -205,7 +205,7 @@
#endif
#ifndef CONFIG_PIC32MX_IC2PRIO /* Input Capture 2 */
-# define CONFIG_PIC32MX_IC2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_IC2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC2PRIO < 4
# error "CONFIG_PIC32MX_IC2PRIO is too small"
@@ -215,7 +215,7 @@
#endif
#ifndef CONFIG_PIC32MX_IC3PRIO /* Input Capture 3 */
-# define CONFIG_PIC32MX_IC3PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_IC3PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC3PRIO < 4
# error "CONFIG_PIC32MX_IC3PRIO is too small"
@@ -225,7 +225,7 @@
#endif
#ifndef CONFIG_PIC32MX_IC4PRIO /* Input Capture 4 */
-# define CONFIG_PIC32MX_IC4PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_IC4PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC4PRIO < 4
# error "CONFIG_PIC32MX_IC4PRIO is too small"
@@ -235,7 +235,7 @@
#endif
#ifndef CONFIG_PIC32MX_IC5PRIO /* Input Capture 5 */
-# define CONFIG_PIC32MX_IC5PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_IC5PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_IC5PRIO < 4
# error "CONFIG_PIC32MX_IC5PRIO is too small"
@@ -245,7 +245,7 @@
#endif
#ifndef CONFIG_PIC32MX_OC1PRIO /* Output Compare 1 */
-# define CONFIG_PIC32MX_OC1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_OC1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC1PRIO < 4
# error "CONFIG_PIC32MX_OC1PRIO is too small"
@@ -255,7 +255,7 @@
#endif
#ifndef CONFIG_PIC32MX_OC2PRIO /* Output Compare 2 */
-# define CONFIG_PIC32MX_OC2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_OC2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC2PRIO < 4
# error "CONFIG_PIC32MX_OC2PRIO is too small"
@@ -265,7 +265,7 @@
#endif
#ifndef CONFIG_PIC32MX_OC3PRIO /* Output Compare 3 */
-# define CONFIG_PIC32MX_OC3PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_OC3PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC3PRIO < 4
# error "CONFIG_PIC32MX_OC3PRIO is too small"
@@ -275,7 +275,7 @@
#endif
#ifndef CONFIG_PIC32MX_OC4PRIO /* Output Compare 4 */
-# define CONFIG_PIC32MX_OC4PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_OC4PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC4PRIO < 4
# error "CONFIG_PIC32MX_OC4PRIO is too small"
@@ -285,7 +285,7 @@
#endif
#ifndef CONFIG_PIC32MX_OC5PRIO /* Output Compare 5 */
-# define CONFIG_PIC32MX_OC5PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_OC5PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_OC5PRIO < 4
# error "CONFIG_PIC32MX_OC5PRIO is too small"
@@ -295,7 +295,7 @@
#endif
#ifndef CONFIG_PIC32MX_I2C1PRIO /* I2C 1 */
-# define CONFIG_PIC32MX_I2C1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_I2C1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_I2C1PRIO < 4
# error "CONFIG_PIC32MX_I2C1PRIO is too small"
@@ -305,7 +305,7 @@
#endif
#ifndef CONFIG_PIC32MX_I2C2PRIO /* I2C 2 */
-# define CONFIG_PIC32MX_I2C2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_I2C2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_I2C2PRIO < 4
# error "CONFIG_PIC32MX_I2C2PRIO is too small"
@@ -315,7 +315,7 @@
#endif
#ifndef CONFIG_PIC32MX_SPI1PRIO /* SPI 1 */
-# define CONFIG_PIC32MX_SPI1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_SPI1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_SPI1PRIO < 4
# error "CONFIG_PIC32MX_SPI1PRIO is too small"
@@ -325,7 +325,7 @@
#endif
#ifndef CONFIG_PIC32MX_SPI2PRIO /* SPI 2 */
-# define CONFIG_PIC32MX_SPI2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_SPI2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_SPI2PRIO < 4
# error "CONFIG_PIC32MX_SPI2PRIO is too small"
@@ -335,7 +335,7 @@
#endif
#ifndef CONFIG_PIC32MX_UART1PRIO /* UART 1 */
-# define CONFIG_PIC32MX_UART1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_UART1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_UART1PRIO < 4
# error "CONFIG_PIC32MX_UART1PRIO is too small"
@@ -345,7 +345,7 @@
#endif
#ifndef CONFIG_PIC32MX_UART2PRIO /* UART 2 */
-# define CONFIG_PIC32MX_UART2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_UART2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_UART2PRIO < 4
# error "CONFIG_PIC32MX_UART2PRIO is too small"
@@ -355,7 +355,7 @@
#endif
#ifndef CONFIG_PIC32MX_CNPRIO /* Input Change Interrupt */
-# define CONFIG_PIC32MX_CNPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CNPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CNPRIO < 4
# error "CONFIG_PIC32MX_CNPRIO is too small"
@@ -365,7 +365,7 @@
#endif
#ifndef CONFIG_PIC32MX_ADCPRIO /* ADC1 Convert Done */
-# define CONFIG_PIC32MX_ADCPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_ADCPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_ADCPRIO < 4
# error "CONFIG_PIC32MX_ADCPRIO is too small"
@@ -375,7 +375,7 @@
#endif
#ifndef CONFIG_PIC32MX_PMPPRIO /* Parallel Master Port */
-# define CONFIG_PIC32MX_PMPPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_PMPPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_PMPPRIO < 4
# error "CONFIG_PIC32MX_PMPPRIO is too small"
@@ -385,7 +385,7 @@
#endif
#ifndef CONFIG_PIC32MX_CM1PRIO /* Comparator 1 */
-# define CONFIG_PIC32MX_CM1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CM1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CM1PRIO < 4
# error "CONFIG_PIC32MX_CM1PRIO is too small"
@@ -395,7 +395,7 @@
#endif
#ifndef CONFIG_PIC32MX_CM2PRIO /* Comparator 2 */
-# define CONFIG_PIC32MX_CM2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_CM2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_CM2PRIO < 4
# error "CONFIG_PIC32MX_CM2PRIO is too small"
@@ -405,7 +405,7 @@
#endif
#ifndef CONFIG_PIC32MX_FSCMPRIO /* Fail-Safe Clock Monitor */
-# define CONFIG_PIC32MX_FSCMPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_FSCMPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_FSCMPRIO < 4
# error "CONFIG_PIC32MX_FSCMPRIO is too small"
@@ -415,7 +415,7 @@
#endif
#ifndef CONFIG_PIC32MX_RTCCPRIO /* Real-Time Clock and Calendar */
-# define CONFIG_PIC32MX_RTCCPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_RTCCPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_RTCCPRIO < 4
# error "CONFIG_PIC32MX_RTCCPRIO is too small"
@@ -425,7 +425,7 @@
#endif
#ifndef CONFIG_PIC32MX_DMA0PRIO /* DMA Channel 0 */
-# define CONFIG_PIC32MX_DMA0PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_DMA0PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DMA0PRIO < 4
# error "CONFIG_PIC32MX_DMA0PRIO is too small"
@@ -435,7 +435,7 @@
#endif
#ifndef CONFIG_PIC32MX_DMA1PRIO /* DMA Channel 1 */
-# define CONFIG_PIC32MX_DMA1PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_DMA1PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DMA1PRIO < 4
# error "CONFIG_PIC32MX_DMA1PRIO is too small"
@@ -445,7 +445,7 @@
#endif
#ifndef CONFIG_PIC32MX_DMA2PRIO /* DMA Channel 2 */
-# define CONFIG_PIC32MX_DMA2PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_DMA2PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DMA2PRIO < 4
# error "CONFIG_PIC32MX_DMA2PRIO is too small"
@@ -455,7 +455,7 @@
#endif
#ifndef CONFIG_PIC32MX_DMA3PRIO /* DMA Channel 3 */
-# define CONFIG_PIC32MX_DMA3PRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_DMA3PRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_DMA3PRIO < 4
# error "CONFIG_PIC32MX_DMA3PRIO is too small"
@@ -465,7 +465,7 @@
#endif
#ifndef CONFIG_PIC32MX_FCEPRIO /* Flash Control Event */
-# define CONFIG_PIC32MX_FCEPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_FCEPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_FCEPRIO < 4
# error "CONFIG_PIC32MX_FCEPRIO is too small"
@@ -475,7 +475,7 @@
#endif
#ifndef CONFIG_PIC32MX_USBPRIO /* USB */
-# define CONFIG_PIC32MX_USBPRIO (INT_ICP_MID_PRIORITY << 2)
+# define CONFIG_PIC32MX_USBPRIO (INT_IPC_MID_PRIORITY << 2)
#endif
#if CONFIG_PIC32MX_USBPRIO < 4
# error "CONFIG_PIC32MX_USBPRIO is too small"
@@ -602,7 +602,7 @@
#endif
#ifndef CONFIG_PIC32MX_SRSSEL /* Shadow register interrupt priority */
-# define CONFIG_PIC32MX_SRSSEL INT_ICP_MIN_PRIORITY
+# define CONFIG_PIC32MX_SRSSEL INT_IPC_MIN_PRIORITY
#endif
/* Unless overridden in the .config file, all pins are in the default setting */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-devcfg.h b/nuttx/arch/mips/src/pic32mx/pic32mx-devcfg.h
index e7224747f..410286d74 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-devcfg.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-devcfg.h
@@ -1,237 +1,256 @@
-/****************************************************************************
- * arch/mips/src/pic32mx/pic32mx-devcfg.h
- *
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * 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_PIC32MX_PIC32MX_DEVCFG_H
-#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include "pic32mx-memorymap.h"
-
-/****************************************************************************
- * Pre-Processor Definitions
- ****************************************************************************/
-/* Register Offsets *********************************************************/
-
-#define PIC32MX_DEVCFG3_OFFSET 0x0000 /* Device configuration word 3 */
-#define PIC32MX_DEVCFG2_OFFSET 0x0004 /* Device configuration word 2 */
-#define PIC32MX_DEVCFG1_OFFSET 0x0008 /* Device configuration word 1 */
-#define PIC32MX_DEVCFG0_OFFSET 0x000c /* Device configuration word 0 */
-
-/* Register Addresses *******************************************************/
-
-#define PIC32MX_DEVCFG3 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG3_OFFSET)
-#define PIC32MX_DEVCFG2 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG2_OFFSET)
-#define PIC32MX_DEVCFG1 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG1_OFFSET)
-#define PIC32MX_DEVCFG0 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG0_OFFSET)
-
-/* Register Bit-Field Definitions *******************************************/
-
-/* Device configuration word 3 */
-
-#define DEVCFG3_USERID_SHIFT (0) /* Bits 0-15: User-defined, readable via ICSP™ and JTAG */
-#define DEVCFG3_USERID_MASK (0xffff << DEVCFG3_USERID_SHIFT)
-#define DEVCFG3_FSRSSEL_SHIFT (16) /* Bits 16-18: SRS select */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define DEVCFG3_UNUSED 0xffff0000 /* Bits 16-31 */
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define DEVCFG3_FSRSSEL_MASK (7 << DEVCFG3_FSRSSEL_SHIFT)
-# define DEVCFG3_FMIIEN (1 << 24) /* Bit 24: Ethernet MII enable */
-# define DEVCFG3_FETHIO (1 << 25) /* Bit 25: Ethernet I/O pin selection */
-# define DEVCFG3_FCANIO (1 << 26) /* Bit 26: CAN I/O pin selection */
-# define DEVCFG3_FSCM1IO (1 << 29) /* Bit 29: SCM1 pin C selection */
-# define DEVCFG3_FUSBIDIO (1 << 30) /* Bit 30: USB USBID selection */
-# define DEVCFG3_FVBUSIO (1 << 31) /* Bit 31: USB VBUSON selection */
-# define DEVCFG3_UNUSED 0x18f80000 /* Bits 19-23, 27-28 */
-
-#endif
-
-/* Device configuration word 2 */
-
-#define DEVCFG2_FPLLIDIV_SHIFT (0) /* Bits 0-2: PLL input divider value */
-#define DEVCFG2_FPLLIDIV_MASK (7 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV1 (0 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV2 (1 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV3 (2 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV4 (3 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV5 (4 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV6 (5 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV10 (6 << DEVCFG2_FPLLIDIV_SHIFT)
-# define DEVCFG2_FPLLIDIV_DIV12 (7 << DEVCFG2_FPLLIDIV_SHIFT)
-#define DEVCFG2_FPLLMULT_SHIFT (4) /* Bits 4-6: Initial PLL multiplier value */
-#define DEVCFG2_FPLLMULT_MASK (7 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL15 (0 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL16 (1 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL17 (2 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL18 (3 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL19 (4 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL20 (5 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL21 (6 << DEVCFG2_FPLLMULT_SHIFT)
-# define DEVCFG2_FPLLMULT_MUL24 (7 << DEVCFG2_FPLLMULT_SHIFT)
-#define DEVCFG2_FUPLLIDIV_SHIFT (8) /* Bits 8-10: PLL input divider */
-#define DEVCFG2_FUPLLIDIV_MASK (7 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV1 (0 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV2 (1 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV3 (2 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV4 (3 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV5 (4 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV6 (5 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV10 (6 << DEVCFG2_FUPLLIDIV_SHIFT)
-# define DEVCFG2_FUPLLIDIV_DIV12 (7 << DEVCFG2_FUPLLIDIV_SHIFT)
-#define DEVCFG2_FUPLLEN (1 << 15) /* Bit 15: USB PLL enable */
-#define DEVCFG2_FPLLODIV_SHIFT (16) /* Bits 16-18: Default postscaler for PLL bits */
-#define DEVCFG2_FPLLODIV_MASK (7 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV1 (0 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV2 (1 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV4 (2 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV8 (3 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV16 (4 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV32 (5 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV64 (6 << DEVCFG2_FPLLODIV_SHIFT)
-# define DEVCFG2_FPLLODIV_DIV256 (7 << DEVCFG2_FPLLODIV_SHIFT)
-#define DEVCFG2_UNUSED 0xfff87888 /* Bits 3, 7, 11-14, 19-31 */
-
-/* Device configuration word 1 */
-
-#define DEVCFG1_FNOSC_SHIFT (0) /* Bits 0-2: Oscillator selection */
-#define DEVCFG1_FNOSC_MASK (7 << DEVCFG1_FNOSC_SHIFT)
-# define DEVCFG1_FNOSC_FRC (0 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator */
-# define DEVCFG1_FNOSC_FRCPLL (1 << DEVCFG1_FNOSC_SHIFT) /* FRC w/PLL module */
-# define DEVCFG1_FNOSC_POSC (2 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator */
-# define DEVCFG1_FNOSC_POSCPLL (3 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator w/PLL */
-# define DEVCFG1_FNOSC_SOSC (4 << DEVCFG1_FNOSC_SHIFT) /* Secondary oscillator */
-# define DEVCFG1_FNOSC_LPRC (5 << DEVCFG1_FNOSC_SHIFT) /* Low power RC oscillator */
-# define DEVCFG1_FNOSC_FRCDIV (7 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator with FRCDIV */
-#define DEVCFG1_FSOSCEN (1 << 5) /* Bit 5: Secondary oscillator (sosc) enable bit */
-#define DEVCFG1_IESO (1 << 7) /* Bit 7: Internal external switch over */
-#define DEVCFG1_POSCMOD_SHIFT (8) /* Bits 8-9: Primary oscillator (posc) configuration */
-#define DEVCFG1_POSCMOD_MASK (3 << DEVCFG1_POSCMOD_SHIFT)
-# define DEVCFG1_POSCMOD_EC (0 << DEVCFG1_POSCMOD_SHIFT) /* EC mode */
-# define DEVCFG1_POSCMOD_XT (1 << DEVCFG1_POSCMOD_SHIFT) /* XT mode */
-# define DEVCFG1_POSCMOD_HS (2 << DEVCFG1_POSCMOD_SHIFT) /* HS mode */
-# define DEVCFG1_POSCMOD_DIS (3 << DEVCFG1_POSCMOD_SHIFT) /* Primary Oscillator disabled */
-#define DEVCFG1_OSCIOFNC (1 << 10) /* Bit 10: CLKO (clock-out) enable configuration */
-#define DEVCFG1_FPBDIV_SHIFT (12) /* Bits 12-13: Peripheral bus clock divisor default value */
-#define DEVCFG1_FPBDIV_MASK (3 << DEVCFG1_FPBDIV_SHIFT)
-# define DEVCFG1_FPBDIV_DIV1 (0 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/1 */
-# define DEVCFG1_FPBDIV_DIV2 (1 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/2 */
-# define DEVCFG1_FPBDIV_DIV4 (2 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/4 */
-# define DEVCFG1_FPBDIV_DIV8 (3 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK /8 */
-#define DEVCFG1_FCKSM_SHIFT (14) /* Bits 14-15: Clock switching and monitor selection configuration */
-#define DEVCFG1_FCKSM_MASK (3 << DEVCFG1_FCKSM_SHIFT)
-# define DEVCFG1_FCKSM_BOTH (0 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are enabled */
-# define DEVCFG1_FCKSM_CSONLY (1 << DEVCFG1_FCKSM_SHIFT) /* Clock switching is enabled, FSCM is disabled */
-# define DEVCFG1_FCKSM_NONE (3 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are disabled */
-#define DEVCFG1_WDTPS_SHIFT (16) /* Bits 16-20: WDT postscaler select */
-#define DEVCFG1_WDTPS_MASK (31 << DEVCFG1_WDTPS_SHIFT)
-# define DEVCFG1_WDTPS_1 (0 << DEVCFG1_WDTPS_SHIFT) /* 1:1 */
-# define DEVCFG1_WDTPS_2 (1 << DEVCFG1_WDTPS_SHIFT) /* 1:2 */
-# define DEVCFG1_WDTPS_4 (2 << DEVCFG1_WDTPS_SHIFT) /* 1:4 */
-# define DEVCFG1_WDTPS_8 (3 << DEVCFG1_WDTPS_SHIFT) /* 1:8 */
-# define DEVCFG1_WDTPS_16 (4 << DEVCFG1_WDTPS_SHIFT) /* 1:16 */
-# define DEVCFG1_WDTPS_32 (5 << DEVCFG1_WDTPS_SHIFT) /* 1:32 */
-# define DEVCFG1_WDTPS_64 (6 << DEVCFG1_WDTPS_SHIFT) /* 1:64 */
-# define DEVCFG1_WDTPS_128 (7 << DEVCFG1_WDTPS_SHIFT) /* 1:128 */
-# define DEVCFG1_WDTPS_256 (8 << DEVCFG1_WDTPS_SHIFT) /* 1:256 */
-# define DEVCFG1_WDTPS_512 (9 << DEVCFG1_WDTPS_SHIFT) /* 1:512 */
-# define DEVCFG1_WDTPS_1024 (10 << DEVCFG1_WDTPS_SHIFT) /* 1:1024 */
-# define DEVCFG1_WDTPS_2048 (11 << DEVCFG1_WDTPS_SHIFT) /* 1:2048 */
-# define DEVCFG1_WDTPS_4096 (12 << DEVCFG1_WDTPS_SHIFT) /* 1:4096 */
-# define DEVCFG1_WDTPS_8192 (13 << DEVCFG1_WDTPS_SHIFT) /* 1:8192 */
-# define DEVCFG1_WDTPS_16384 (14 << DEVCFG1_WDTPS_SHIFT) /* 1:16384 */
-# define DEVCFG1_WDTPS_32768 (15 << DEVCFG1_WDTPS_SHIFT) /* 1:32768 */
-# define DEVCFG1_WDTPS_65536 (16 << DEVCFG1_WDTPS_SHIFT) /* 1:65536 */
-# define DEVCFG1_WDTPS_131072 (17 << DEVCFG1_WDTPS_SHIFT) /* 1:131072 */
-# define DEVCFG1_WDTPS_262144 (18 << DEVCFG1_WDTPS_SHIFT) /* 1:262144 */
-# define DEVCFG1_WDTPS_524288 (19 << DEVCFG1_WDTPS_SHIFT) /* 1:524288 */
-# define DEVCFG1_WDTPS_1048576 (20 << DEVCFG1_WDTPS_SHIFT) /* 1:1048576 */
-#define DEVCFG1_WINDIS (1 << 22) /* Bit 22: Windowed watchdog timer enable */
-#define DEVCFG1_FWDTEN (1 << 23) /* Bit 23: WDT enable */
-#define DEVCFG1_UNUSED 0xff200858 /* Bits 3-4, 6, 11, 21, 24-31 */
-
-/* Device configuration word 0 */
-
-#define PWP_CODE(a) (((~((a) >> 12)) - 1) & 0xff)
-
-#define DEVCFG0_DEBUG_SHIFT (0) /* Bits 0-1: Background debugger enable */
-#define DEVCFG0_DEBUG_MASK (3 << DEVCFG0_DEBUG_SHIFT)
-# define DEVCFG0_DEBUG_ENABLED (2 << DEVCFG0_DEBUG_SHIFT)
-# define DEVCFG0_DEBUG_DISABLED (3 << DEVCFG0_DEBUG_SHIFT)
-#define DEVCFG0_ICESEL (1 << 3) /* Bit 3: ICE/debugger channel select */
-#define DEVCFG0_PWP_SHIFT (12) /* Bits 12-19: Program flash write-protect */
-#define DEVCFG0_PWP_MASK (0xff << DEVCFG0_PWP_SHIFT)
-# define DEVCFG0_PWP_DISABLE (0xff << DEVCFG0_PWP_SHIFT)
-# define DEVCFG0_PWP(code) ((code) << DEVCFG0_PWP_SHIFT) /* See PWP_CODE above */
-#define DEVCFG0_BWP (1 << 24) /* Bit 24: Boot flash write-protect */
-#define DEVCFG0_CP (1 << 28) /* Bit 28: Code-protect */
-#define DEVCFG0_SIGN (1 << 31) /* Bit 31: Signature */
-#define DEVCFG0_UNUSED 0x6ef00ff0 /* Bits 4-11, 20-23, 25-27, 29-30 */
-
-/****************************************************************************
- * Public Types
- ****************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-/****************************************************************************
- * Inline Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
-
-#ifdef __cplusplus
-#define EXTERN extern "C"
-extern "C" {
-#else
-#define EXTERN extern
-#endif
-
-#undef EXTERN
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H */
+/****************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-devcfg.h
+ *
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_PIC32MX_PIC32MX_DEVCFG_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "pic32mx-memorymap.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Register Offsets *********************************************************/
+
+#define PIC32MX_DEVCFG3_OFFSET 0x0000 /* Device configuration word 3 */
+#define PIC32MX_DEVCFG2_OFFSET 0x0004 /* Device configuration word 2 */
+#define PIC32MX_DEVCFG1_OFFSET 0x0008 /* Device configuration word 1 */
+#define PIC32MX_DEVCFG0_OFFSET 0x000c /* Device configuration word 0 */
+
+/* Register Addresses *******************************************************/
+
+#define PIC32MX_DEVCFG3 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG3_OFFSET)
+#define PIC32MX_DEVCFG2 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG2_OFFSET)
+#define PIC32MX_DEVCFG1 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG1_OFFSET)
+#define PIC32MX_DEVCFG0 (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG0_OFFSET)
+
+/* Register Bit-Field Definitions *******************************************/
+
+/* Device configuration word 3 */
+
+#define DEVCFG3_USERID_SHIFT (0) /* Bits 0-15: User-defined, readable via ICSP™ and JTAG */
+#define DEVCFG3_USERID_MASK (0xffff << DEVCFG3_USERID_SHIFT)
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define DEVCFG3_PMDL1WAY (1 << 28) /* Bit 28: Peripheral Module Disable Configuration */
+# define DEVCFG3_IOL1WAY (1 << 29) /* Bit 29: Peripheral Pin Select Configuration */
+# define DEVCFG3_FUSBIDIO (1 << 30) /* Bit 30: USB USBID selection */
+# define DEVCFG3_FVBUSIO (1 << 31) /* Bit 31: USB VBUSON selection */
+# define DEVCFG3_UNUSED 0x0fff0000 /* Bits 16-28 */
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define DEVCFG3_UNUSED 0xffff0000 /* Bits 16-31 */
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define DEVCFG3_FSRSSEL_SHIFT (16) /* Bits 16-18: SRS select */
+# define DEVCFG3_FSRSSEL_MASK (7 << DEVCFG3_FSRSSEL_SHIFT)
+# define DEVCFG3_FMIIEN (1 << 24) /* Bit 24: Ethernet MII enable */
+# define DEVCFG3_FETHIO (1 << 25) /* Bit 25: Ethernet I/O pin selection */
+# define DEVCFG3_FCANIO (1 << 26) /* Bit 26: CAN I/O pin selection */
+# define DEVCFG3_FSCM1IO (1 << 29) /* Bit 29: SCM1 pin C selection */
+# define DEVCFG3_FUSBIDIO (1 << 30) /* Bit 30: USB USBID selection */
+# define DEVCFG3_FVBUSIO (1 << 31) /* Bit 31: USB VBUSON selection */
+# define DEVCFG3_UNUSED 0x18f80000 /* Bits 19-23, 27-28 */
+
+#endif
+
+/* Device configuration word 2 */
+
+#define DEVCFG2_FPLLIDIV_SHIFT (0) /* Bits 0-2: PLL input divider value */
+#define DEVCFG2_FPLLIDIV_MASK (7 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV1 (0 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV2 (1 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV3 (2 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV4 (3 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV5 (4 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV6 (5 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV10 (6 << DEVCFG2_FPLLIDIV_SHIFT)
+# define DEVCFG2_FPLLIDIV_DIV12 (7 << DEVCFG2_FPLLIDIV_SHIFT)
+#define DEVCFG2_FPLLMULT_SHIFT (4) /* Bits 4-6: Initial PLL multiplier value */
+#define DEVCFG2_FPLLMULT_MASK (7 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL15 (0 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL16 (1 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL17 (2 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL18 (3 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL19 (4 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL20 (5 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL21 (6 << DEVCFG2_FPLLMULT_SHIFT)
+# define DEVCFG2_FPLLMULT_MUL24 (7 << DEVCFG2_FPLLMULT_SHIFT)
+#define DEVCFG2_FUPLLIDIV_SHIFT (8) /* Bits 8-10: PLL input divider */
+#define DEVCFG2_FUPLLIDIV_MASK (7 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV1 (0 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV2 (1 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV3 (2 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV4 (3 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV5 (4 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV6 (5 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV10 (6 << DEVCFG2_FUPLLIDIV_SHIFT)
+# define DEVCFG2_FUPLLIDIV_DIV12 (7 << DEVCFG2_FUPLLIDIV_SHIFT)
+#define DEVCFG2_FUPLLEN (1 << 15) /* Bit 15: USB PLL enable */
+#define DEVCFG2_FPLLODIV_SHIFT (16) /* Bits 16-18: Default postscaler for PLL bits */
+#define DEVCFG2_FPLLODIV_MASK (7 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV1 (0 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV2 (1 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV4 (2 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV8 (3 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV16 (4 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV32 (5 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV64 (6 << DEVCFG2_FPLLODIV_SHIFT)
+# define DEVCFG2_FPLLODIV_DIV256 (7 << DEVCFG2_FPLLODIV_SHIFT)
+#define DEVCFG2_UNUSED 0xfff87888 /* Bits 3, 7, 11-14, 19-31 */
+
+/* Device configuration word 1 */
+
+#define DEVCFG1_FNOSC_SHIFT (0) /* Bits 0-2: Oscillator selection */
+#define DEVCFG1_FNOSC_MASK (7 << DEVCFG1_FNOSC_SHIFT)
+# define DEVCFG1_FNOSC_FRC (0 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator */
+# define DEVCFG1_FNOSC_FRCPLL (1 << DEVCFG1_FNOSC_SHIFT) /* FRC w/PLL module */
+# define DEVCFG1_FNOSC_POSC (2 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator */
+# define DEVCFG1_FNOSC_POSCPLL (3 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator w/PLL */
+# define DEVCFG1_FNOSC_SOSC (4 << DEVCFG1_FNOSC_SHIFT) /* Secondary oscillator */
+# define DEVCFG1_FNOSC_LPRC (5 << DEVCFG1_FNOSC_SHIFT) /* Low power RC oscillator */
+# define DEVCFG1_FNOSC_FRCDIV (7 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator with FRCDIV */
+#define DEVCFG1_FSOSCEN (1 << 5) /* Bit 5: Secondary oscillator (sosc) enable bit */
+#define DEVCFG1_IESO (1 << 7) /* Bit 7: Internal external switch over */
+#define DEVCFG1_POSCMOD_SHIFT (8) /* Bits 8-9: Primary oscillator (posc) configuration */
+#define DEVCFG1_POSCMOD_MASK (3 << DEVCFG1_POSCMOD_SHIFT)
+# define DEVCFG1_POSCMOD_EC (0 << DEVCFG1_POSCMOD_SHIFT) /* EC mode */
+# define DEVCFG1_POSCMOD_XT (1 << DEVCFG1_POSCMOD_SHIFT) /* XT mode */
+# define DEVCFG1_POSCMOD_HS (2 << DEVCFG1_POSCMOD_SHIFT) /* HS mode */
+# define DEVCFG1_POSCMOD_DIS (3 << DEVCFG1_POSCMOD_SHIFT) /* Primary Oscillator disabled */
+#define DEVCFG1_OSCIOFNC (1 << 10) /* Bit 10: CLKO (clock-out) enable configuration */
+#define DEVCFG1_FPBDIV_SHIFT (12) /* Bits 12-13: Peripheral bus clock divisor default value */
+#define DEVCFG1_FPBDIV_MASK (3 << DEVCFG1_FPBDIV_SHIFT)
+# define DEVCFG1_FPBDIV_DIV1 (0 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/1 */
+# define DEVCFG1_FPBDIV_DIV2 (1 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/2 */
+# define DEVCFG1_FPBDIV_DIV4 (2 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/4 */
+# define DEVCFG1_FPBDIV_DIV8 (3 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK /8 */
+#define DEVCFG1_FCKSM_SHIFT (14) /* Bits 14-15: Clock switching and monitor selection configuration */
+#define DEVCFG1_FCKSM_MASK (3 << DEVCFG1_FCKSM_SHIFT)
+# define DEVCFG1_FCKSM_BOTH (0 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are enabled */
+# define DEVCFG1_FCKSM_CSONLY (1 << DEVCFG1_FCKSM_SHIFT) /* Clock switching is enabled, FSCM is disabled */
+# define DEVCFG1_FCKSM_NONE (3 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are disabled */
+#define DEVCFG1_WDTPS_SHIFT (16) /* Bits 16-20: WDT postscaler select */
+#define DEVCFG1_WDTPS_MASK (31 << DEVCFG1_WDTPS_SHIFT)
+# define DEVCFG1_WDTPS_1 (0 << DEVCFG1_WDTPS_SHIFT) /* 1:1 */
+# define DEVCFG1_WDTPS_2 (1 << DEVCFG1_WDTPS_SHIFT) /* 1:2 */
+# define DEVCFG1_WDTPS_4 (2 << DEVCFG1_WDTPS_SHIFT) /* 1:4 */
+# define DEVCFG1_WDTPS_8 (3 << DEVCFG1_WDTPS_SHIFT) /* 1:8 */
+# define DEVCFG1_WDTPS_16 (4 << DEVCFG1_WDTPS_SHIFT) /* 1:16 */
+# define DEVCFG1_WDTPS_32 (5 << DEVCFG1_WDTPS_SHIFT) /* 1:32 */
+# define DEVCFG1_WDTPS_64 (6 << DEVCFG1_WDTPS_SHIFT) /* 1:64 */
+# define DEVCFG1_WDTPS_128 (7 << DEVCFG1_WDTPS_SHIFT) /* 1:128 */
+# define DEVCFG1_WDTPS_256 (8 << DEVCFG1_WDTPS_SHIFT) /* 1:256 */
+# define DEVCFG1_WDTPS_512 (9 << DEVCFG1_WDTPS_SHIFT) /* 1:512 */
+# define DEVCFG1_WDTPS_1024 (10 << DEVCFG1_WDTPS_SHIFT) /* 1:1024 */
+# define DEVCFG1_WDTPS_2048 (11 << DEVCFG1_WDTPS_SHIFT) /* 1:2048 */
+# define DEVCFG1_WDTPS_4096 (12 << DEVCFG1_WDTPS_SHIFT) /* 1:4096 */
+# define DEVCFG1_WDTPS_8192 (13 << DEVCFG1_WDTPS_SHIFT) /* 1:8192 */
+# define DEVCFG1_WDTPS_16384 (14 << DEVCFG1_WDTPS_SHIFT) /* 1:16384 */
+# define DEVCFG1_WDTPS_32768 (15 << DEVCFG1_WDTPS_SHIFT) /* 1:32768 */
+# define DEVCFG1_WDTPS_65536 (16 << DEVCFG1_WDTPS_SHIFT) /* 1:65536 */
+# define DEVCFG1_WDTPS_131072 (17 << DEVCFG1_WDTPS_SHIFT) /* 1:131072 */
+# define DEVCFG1_WDTPS_262144 (18 << DEVCFG1_WDTPS_SHIFT) /* 1:262144 */
+# define DEVCFG1_WDTPS_524288 (19 << DEVCFG1_WDTPS_SHIFT) /* 1:524288 */
+# define DEVCFG1_WDTPS_1048576 (20 << DEVCFG1_WDTPS_SHIFT) /* 1:1048576 */
+#define DEVCFG1_WINDIS (1 << 22) /* Bit 22: Windowed watchdog timer enable */
+#define DEVCFG1_FWDTEN (1 << 23) /* Bit 23: WDT enable */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define DEVCFG1_FWDTWINSZ_SHIFT (24) /* Bits 24-25: Watchdog Timer Window Size bits */
+# define DEVCFG1_FWDTWINSZ_MASK (3 << DEVCFG1_FWDTWINSZ_SHIFT)
+# define DEVCFG1_FWDTWINSZ_25 (0 << DEVCFG1_FWDTWINSZ_SHIFT) /* 25% */
+# define DEVCFG1_FWDTWINSZ_37p5 (1 << DEVCFG1_FWDTWINSZ_SHIFT) /* 37.5% */
+# define DEVCFG1_FWDTWINSZ_50 (2 << DEVCFG1_FWDTWINSZ_SHIFT) /* 50% */
+# define DEVCFG1_FWDTWINSZ_75 (3 << DEVCFG1_FWDTWINSZ_SHIFT) /* 75% */
+# define DEVCFG1_UNUSED 0xfc200858 /* Bits 3-4, 6, 11, 21, 26-31 */
+#else
+# define DEVCFG1_UNUSED 0xff200858 /* Bits 3-4, 6, 11, 21, 24-31 */
+#endif
+
+/* Device configuration word 0 */
+
+#define PWP_CODE(a) (((~((a) >> 12)) - 1) & 0xff)
+
+#define DEVCFG0_DEBUG_SHIFT (0) /* Bits 0-1: Background debugger enable */
+#define DEVCFG0_DEBUG_MASK (3 << DEVCFG0_DEBUG_SHIFT)
+# define DEVCFG0_DEBUG_ENABLED (2 << DEVCFG0_DEBUG_SHIFT)
+# define DEVCFG0_DEBUG_DISABLED (3 << DEVCFG0_DEBUG_SHIFT)
+#define DEVCFG0_ICESEL (1 << 3) /* Bit 3: ICE/debugger channel select */
+#define DEVCFG0_PWP_SHIFT (12) /* Bits 12-19: Program flash write-protect */
+#define DEVCFG0_PWP_MASK (0xff << DEVCFG0_PWP_SHIFT)
+# define DEVCFG0_PWP_DISABLE (0xff << DEVCFG0_PWP_SHIFT)
+# define DEVCFG0_PWP(code) ((code) << DEVCFG0_PWP_SHIFT) /* See PWP_CODE above */
+#define DEVCFG0_BWP (1 << 24) /* Bit 24: Boot flash write-protect */
+#define DEVCFG0_CP (1 << 28) /* Bit 28: Code-protect */
+#define DEVCFG0_SIGN (1 << 31) /* Bit 31: Signature */
+#define DEVCFG0_UNUSED 0x6ef00ff0 /* Bits 4-11, 20-23, 25-27, 29-30 */
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-dma.h b/nuttx/arch/mips/src/pic32mx/pic32mx-dma.h
index fd8af3087..ae96c35d7 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-dma.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-dma.h
@@ -1,687 +1,696 @@
-/********************************************************************************************
- * arch/mips/src/pic32mx/pic32mx-dma.h
- *
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * 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_PIC32MX_PIC32MX_DMA_H
-#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DMA_H
-
-/********************************************************************************************
- * Included Files
- ********************************************************************************************/
-
-#include <nuttx/config.h>
-
-#include "chip.h"
-#include "pic32mx-memorymap.h"
-
-#if CHIP_NDMACH > 0
-
-/********************************************************************************************
- * Pre-Processor Definitions
- ********************************************************************************************/
-/* Register Offsets *************************************************************************/
-/* Global DMA Registers */
-
-#define PIC32MX_DMA_CON_OFFSET 0x0000 /* DMA Controller Control Register */
-#define PIC32MX_DMA_CONCLR_OFFSET 0x0004 /* DMA Controller Control Clear Register */
-#define PIC32MX_DMA_CONSET_OFFSET 0x0008 /* DMA Controller Control Set Register */
-#define PIC32MX_DMA_CONINV_OFFSET 0x000c /* DMA Controller Control Invert Register */
-#define PIC32MX_DMA_STAT_OFFSET 0x0010 /* DMA Status Register */
-#define PIC32MX_DMA_ADD_OFFSETR 0x0020 /* DMA Address Register */
-#define PIC32MX_DMA_CRCCON_OFFSET 0x0030 /* DMA CRC Control Register */
-#define PIC32MX_DMA_CRCCONCLR_OFFSET 0x0034 /* DMA CRC Control Clear Register */
-#define PIC32MX_DMA_CRCCONSET_OFFSET 0x0038 /* DMA CRC Control Set Register */
-#define PIC32MX_DMA_CRCCONINV_OFFSET 0x003c /* DMA CRC Control Invert Register */
-#define PIC32MX_DMA_CRCDATA_OFFSET 0x0040 /* DMA CRC Data Register */
-#define PIC32MX_DMA_CRCDATACLR_OFFSET 0x0044 /* DMA CRC Data Clear Register */
-#define PIC32MX_DMA_CRCDATASET_OFFSET 0x0048 /* DMA CRC Data Set Register */
-#define PIC32MX_DMA_CRCDATAINV_OFFSET 0x004c /* DMA CRC Data Invert Register */
-#define PIC32MX_DMA_CRCXOR_OFFSET 0x0050 /* DMA CRCXOR Enable Register */
-#define PIC32MX_DMA_CRCXORCLR_OFFSET 0x0054 /* DMA CRCXOR Enable Clear Register */
-#define PIC32MX_DMA_CRCXORSET_OFFSET 0x0058 /* DMA CRCXOR Enable Set Register */
-#define PIC32MX_DMA_CRCXORINV_OFFSET 0x005c /* DMA CRCXOR Enable Invert Register */
-
-/* Per-Channel DMA Registers */
-
-#define PIC32MX_DMACH_CON_OFFSET 0x0000 /* DMA Channel Control Register */
-#define PIC32MX_DMACH_CONCLR_OFFSET 0x0004 /* DMA Channel Control Clear Register */
-#define PIC32MX_DMACH_CONSET_OFFSET 0x0008 /* DMA Channel Control Set Register */
-#define PIC32MX_DMACH_CONINV_OFFSET 0x000c /* DMA Channel Control Invert Register */
-#define PIC32MX_DMACH_ECON_OFFSET 0x0010 /* DMA Channel Event Control Register */
-#define PIC32MX_DMACH_ECONCLR_OFFSET 0x0014 /* DMA Channel Event Control Clear Register */
-#define PIC32MX_DMACH_ECONSET_OFFSET 0x0018 /* DMA Channel Event Control Set Register */
-#define PIC32MX_DMACH_ECONINV_OFFSET 0x001c /* DMA Channel Event Control Invert Register */
-#define PIC32MX_DMACH_INT_OFFSET 0x0020 /* DMA Channel Interrupt Control Register */
-#define PIC32MX_DMACH_INTCLR_OFFSET 0x0024 /* DMA Channel Interrupt Control Clear Register */
-#define PIC32MX_DMACH_INTSET_OFFSET 0x0028 /* DMA Channel Interrupt Control Set Register */
-#define PIC32MX_DMACH_INTINV_OFFSET 0x002c /* DMA Channel Interrupt Control Invert Register */
-#define PIC32MX_DMACH_SSA_OFFSET 0x0030 /* DMA Channel Source Start Address Register */
-#define PIC32MX_DMACH_SSACLR_OFFSET 0x0034 /* DMA Channel Source Start Address Clear Register */
-#define PIC32MX_DMACH_SSASET_OFFSET 0x0038 /* DMA Channel Source Start Address Set Register */
-#define PIC32MX_DMACH_SSAINV_OFFSET 0x003c /* DMA Channel Source Start Address Invert Register */
-#define PIC32MX_DMACH_DSA_OFFSET 0x0040 /* DMA Channel Destination Start Address Register */
-#define PIC32MX_DMACH_DSACLR_OFFSET 0x0044 /* DMA Channel Destination Start Address Clear Register */
-#define PIC32MX_DMACH_DSASET_OFFSET 0x0048 /* DMA Channel Destination Start Address Set Register */
-#define PIC32MX_DMACH_DSAINV_OFFSET 0x004c /* DMA Channel Destination Start Address Invert Register */
-#define PIC32MX_DMACH_SSIZ_OFFSET 0x0050 /* DMA Channel Source Size Register */
-#define PIC32MX_DMACH_SSIZCLR_OFFSET 0x0054 /* DMA Channel Source Size Clear Register */
-#define PIC32MX_DMACH_SSIZSET_OFFSET 0x0058 /* DMA Channel Source Size Set Register */
-#define PIC32MX_DMACH_SSIZINV_OFFSET 0x005c /* DMA Channel Source Size Invert Register */
-#define PIC32MX_DMACH_DSIZ_OFFSET 0x0060 /* DMA Channel Destination Size Register */
-#define PIC32MX_DMACH_DSIZCLR_OFFSET 0x0064 /* DMA Channel Destination Size Clear Register */
-#define PIC32MX_DMACH_DSIZSET_OFFSET 0x0068 /* DMA Channel Destination Size Set Register */
-#define PIC32MX_DMACH_DSIZINV_OFFSET 0x006c /* DMA Channel Destination Size Invert Register */
-#define PIC32MX_DMACH_SPTR_OFFSET 0x0070 /* DMA Channel Source Pointer Register */
-#define PIC32MX_DMACH_DPTR_OFFSET 0x0080 /* DMA Channel Destination Pointer Register */
-#define PIC32MX_DMACH_CSIZ_OFFSET 0x0090 /* DMA Channel Cell-Size Register */
-#define PIC32MX_DMACH_CSIZCLR_OFFSET 0x0094 /* DMA Channel Cell-Size Clear Register */
-#define PIC32MX_DMACH_CSIZSET_OFFSET 0x0098 /* DMA Channel Cell-Size Set Register */
-#define PIC32MX_DMACH_CSIZINV_OFFSET 0x009c /* DMA Channel Cell-Size Invert Register */
-#define PIC32MX_DMACH_CPTR_OFFSET 0x00a0 /* DMA Channel Cell Pointer Register */
-#define PIC32MX_DMACH_DAT_OFFSET 0x00b0 /* DMA Channel Pattern Data Register */
-#define PIC32MX_DMACH_DATCLR_OFFSET 0x00b4 /* DMA Channel Pattern Data Clear Register */
-#define PIC32MX_DMACH_DATSET_OFFSET 0x00b8 /* DMA Channel Pattern Data Set Register */
-#define PIC32MX_DMACH_DATINV_OFFSET 0x00bc /* DMA Channel Pattern Data Invert Register */
-
-/* Register Addresses ***********************************************************************/
-/* Global DMA Registers */
-
-#define PIC32MX_DMA_CON (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CON_OFFSET)
-#define PIC32MX_DMA_CONCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONCLR_OFFSET)
-#define PIC32MX_DMA_CONSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONSET_OFFSET)
-#define PIC32MX_DMA_CONINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONINV_OFFSET)
-#define PIC32MX_DMA_STAT (PIC32MX_DMA_K1BASE+PIC32MX_DMA_STAT_OFFSET)
-#define PIC32MX_DMA_ADDR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_ADDR_OFFSET)
-#define PIC32MX_DMA_CRCCON (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCON_OFFSET)
-#define PIC32MX_DMA_CRCCONCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONCLR_OFFSET)
-#define PIC32MX_DMA_CRCCONSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONSET_OFFSET)
-#define PIC32MX_DMA_CRCCONINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONINV_OFFSET)
-#define PIC32MX_DMA_CRCDATA (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATA_OFFSET)
-#define PIC32MX_DMA_CRCDATACLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATACLR_OFFSET)
-#define PIC32MX_DMA_CRCDATASET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATASET_OFFSET)
-#define PIC32MX_DMA_CRCDATAINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATAINV_OFFSET)
-#define PIC32MX_DMA_CRCXOR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXOR_OFFSET)
-#define PIC32MX_DMA_CRCXORCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORCLR_OFFSET)
-#define PIC32MX_DMA_CRCXORSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORSET_OFFSET)
-#define PIC32MX_DMA_CRCXORINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORINV_OFFSET)
-
-/* Per-Channel DMA Registers */
-
-#define PIC32MX_DMACH_CON(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CON_OFFSET)
-#define PIC32MX_DMACH_CONCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONCLR_OFFSET)
-#define PIC32MX_DMACH_CONSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONSET_OFFSET)
-#define PIC32MX_DMACH_CONINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONINV_OFFSET)
-#define PIC32MX_DMACH_ECON(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECON_OFFSET)
-#define PIC32MX_DMACH_ECONCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONCLR_OFFSET)
-#define PIC32MX_DMACH_ECONSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONSET_OFFSET)
-#define PIC32MX_DMACH_ECONINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONINV_OFFSET)
-#define PIC32MX_DMACH_INT(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INT_OFFSET)
-#define PIC32MX_DMACH_INTCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTCLR_OFFSET)
-#define PIC32MX_DMACH_INTSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTSET_OFFSET)
-#define PIC32MX_DMACH_INTINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTINV_OFFSET)
-#define PIC32MX_DMACH_SSA(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSA_OFFSET)
-#define PIC32MX_DMACH_SSACLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSACLR_OFFSET)
-#define PIC32MX_DMACH_SSASET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSASET_OFFSET)
-#define PIC32MX_DMACH_SSAINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSAINV_OFFSET)
-#define PIC32MX_DMACH_DSA(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSA_OFFSET)
-#define PIC32MX_DMACH_DSACLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSACLR_OFFSET)
-#define PIC32MX_DMACH_DSASET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSASET_OFFSET)
-#define PIC32MX_DMACH_DSAINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSAINV_OFFSET)
-#define PIC32MX_DMACH_SSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZ_OFFSET)
-#define PIC32MX_DMACH_SSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZCLR_OFFSET)
-#define PIC32MX_DMACH_SSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZSET_OFFSET)
-#define PIC32MX_DMACH_SSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZINV_OFFSET)
-#define PIC32MX_DMACH_DSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZ_OFFSET)
-#define PIC32MX_DMACH_DSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZCLR_OFFSET)
-#define PIC32MX_DMACH_DSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZSET_OFFSET)
-#define PIC32MX_DMACH_DSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZINV_OFFSET)
-#define PIC32MX_DMACH_SPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SPTR_OFFSET)
-#define PIC32MX_DMACH_DPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DPTR_OFFSET)
-#define PIC32MX_DMACH_CSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZ_OFFSET)
-#define PIC32MX_DMACH_CSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZCLR_OFFSET)
-#define PIC32MX_DMACH_CSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZSET_OFFSET)
-#define PIC32MX_DMACH_CSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZINV_OFFSET)
-#define PIC32MX_DMACH_CPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CPTR_OFFSET)
-#define PIC32MX_DMACH_DAT(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DAT_OFFSET)
-#define PIC32MX_DMACH_DATCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATCLR_OFFSET)
-#define PIC32MX_DMACH_DATSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATSET_OFFSET)
-#define PIC32MX_DMACH_DATINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATINV_OFFSET)
-
-#if CHIP_NDMACH > 0
-# define PIC32MX_DMACH0_CON (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH0_CONCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH0_CONSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH0_CONINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH0_ECON (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH0_ECONCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH0_ECONSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH0_ECONINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH0_INT (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH0_INTCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH0_INTSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH0_INTINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH0_SSA (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH0_SSACLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH0_SSASET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH0_SSAINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH0_DSA (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH0_DSACLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH0_DSASET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH0_DSAINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH0_SSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH0_SSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH0_SSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH0_SSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH0_DSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH0_DSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH0_DSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH0_DSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH0_SPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH0_DPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH0_CSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH0_CSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH0_CSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH0_CSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH0_CPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH0_DAT (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH0_DATCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH0_DATSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH0_DATINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 1
-# define PIC32MX_DMACH1_CON (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH1_CONCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH1_CONSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH1_CONINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH1_ECON (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH1_ECONCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH1_ECONSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH1_ECONINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH1_INT (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH1_INTCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH1_INTSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH1_INTINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH1_SSA (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH1_SSACLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH1_SSASET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH1_SSAINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH1_DSA (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH1_DSACLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH1_DSASET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH1_DSAINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH1_SSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH1_SSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH1_SSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH1_SSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH1_DSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH1_DSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH1_DSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH1_DSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH1_SPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH1_DPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH1_CSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH1_CSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH1_CSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH1_CSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH1_CPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH1_DAT (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH1_DATCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH1_DATSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH1_DATINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 2
-# define PIC32MX_DMACH2_CON (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH2_CONCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH2_CONSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH2_CONINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH2_ECON (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH2_ECONCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH2_ECONSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH2_ECONINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH2_INT (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH2_INTCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH2_INTSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH2_INTINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH2_SSA (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH2_SSACLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH2_SSASET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH2_SSAINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH2_DSA (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH2_DSACLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH2_DSASET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH2_DSAINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH2_SSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH2_SSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH2_SSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH2_SSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH2_DSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH2_DSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH2_DSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH2_DSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH2_SPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH2_DPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH2_CSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH2_CSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH2_CSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH2_CSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH2_CPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH2_DAT (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH2_DATCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH2_DATSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH2_DATINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-
-#if CHIP_NDMACH > 3
-# define PIC32MX_DMACH3_CON (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH3_CONCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH3_CONSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH3_CONINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH3_ECON (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH3_ECONCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH3_ECONSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH3_ECONINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH3_INT (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH3_INTCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH3_INTSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH3_INTINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH3_SSA (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH3_SSACLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH3_SSASET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH3_SSAINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH3_DSA (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH3_DSACLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH3_DSASET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH3_DSAINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH3_SSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH3_SSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH3_SSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH3_SSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH3_DSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH3_DSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH3_DSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH3_DSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH3_SPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH3_DPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH3_CSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH3_CSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH3_CSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH3_CSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH3_CPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH3_DAT (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH3_DATCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH3_DATSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH3_DATINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 4
-# define PIC32MX_DMACH4_CON (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH4_CONCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH4_CONSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH4_CONINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH4_ECON (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH4_ECONCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH4_ECONSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH4_ECONINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH4_INT (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH4_INTCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH4_INTSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH4_INTINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH4_SSA (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH4_SSACLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH4_SSASET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH4_SSAINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH4_DSA (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH4_DSACLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH4_DSASET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH4_DSAINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH4_SSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH4_SSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH4_SSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH4_SSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH4_DSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH4_DSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH4_DSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH4_DSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH4_SPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH4_DPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH4_CSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH4_CSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH4_CSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH4_CSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH4_CPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH4_DAT (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH4_DATCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH4_DATSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH4_DATINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 5
-# define PIC32MX_DMACH5_CON (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH5_CONCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH5_CONSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH5_CONINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH5_ECON (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH5_ECONCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH5_ECONSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH5_ECONINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH5_INT (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH5_INTCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH5_INTSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH5_INTINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH5_SSA (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH5_SSACLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH5_SSASET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH5_SSAINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH5_DSA (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH5_DSACLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH5_DSASET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH5_DSAINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH5_SSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH5_SSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH5_SSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH5_SSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH5_DSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH5_DSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH5_DSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH5_DSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH5_SPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH5_DPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH5_CSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH5_CSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH5_CSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH5_CSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH5_CPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH5_DAT (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH5_DATCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH5_DATSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH5_DATINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 6
-# define PIC32MX_DMACH6_CON (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH6_CONCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH6_CONSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH6_CONINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH6_ECON (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH6_ECONCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH6_ECONSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH6_ECONINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH6_INT (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH6_INTCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH6_INTSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH6_INTINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH6_SSA (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH6_SSACLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH6_SSASET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH6_SSAINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH6_DSA (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH6_DSACLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH6_DSASET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH6_DSAINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH6_SSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH6_SSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH6_SSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH6_SSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH6_DSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH6_DSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH6_DSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH6_DSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH6_SPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH6_DPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH6_CSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH6_CSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH6_CSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH6_CSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH6_CPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH6_DAT (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH6_DATCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH6_DATSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH6_DATINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-#if CHIP_NDMACH > 7
-# define PIC32MX_DMACH7_CON (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CON_OFFSET)
-# define PIC32MX_DMACH7_CONCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
-# define PIC32MX_DMACH7_CONSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
-# define PIC32MX_DMACH7_CONINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
-# define PIC32MX_DMACH7_ECON (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
-# define PIC32MX_DMACH7_ECONCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
-# define PIC32MX_DMACH7_ECONSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
-# define PIC32MX_DMACH7_ECONINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
-# define PIC32MX_DMACH7_INT (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INT_OFFSET)
-# define PIC32MX_DMACH7_INTCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
-# define PIC32MX_DMACH7_INTSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
-# define PIC32MX_DMACH7_INTINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
-# define PIC32MX_DMACH7_SSA (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
-# define PIC32MX_DMACH7_SSACLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
-# define PIC32MX_DMACH7_SSASET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
-# define PIC32MX_DMACH7_SSAINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
-# define PIC32MX_DMACH7_DSA (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
-# define PIC32MX_DMACH7_DSACLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
-# define PIC32MX_DMACH7_DSASET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
-# define PIC32MX_DMACH7_DSAINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
-# define PIC32MX_DMACH7_SSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
-# define PIC32MX_DMACH7_SSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
-# define PIC32MX_DMACH7_SSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
-# define PIC32MX_DMACH7_SSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
-# define PIC32MX_DMACH7_DSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
-# define PIC32MX_DMACH7_DSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
-# define PIC32MX_DMACH7_DSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
-# define PIC32MX_DMACH7_DSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
-# define PIC32MX_DMACH7_SPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
-# define PIC32MX_DMACH7_DPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
-# define PIC32MX_DMACH7_CSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
-# define PIC32MX_DMACH7_CSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
-# define PIC32MX_DMACH7_CSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
-# define PIC32MX_DMACH7_CSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
-# define PIC32MX_DMACH7_CPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
-# define PIC32MX_DMACH7_DAT (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
-# define PIC32MX_DMACH7_DATCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
-# define PIC32MX_DMACH7_DATSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
-# define PIC32MX_DMACH7_DATINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
-#endif
-
-/* Register Bit-Field Definitions ***********************************************************/
-/* Global DMA Registers */
-/* DMA Controller Control Register */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define DMA_CON_SUSPEND (1 << 12) /* Bit 12: DMA suspend */
-# define DMA_CON_SIDL (1 << 13) /* Bit 13: Stop in idle mode */
-# define DMA_CON_FRZ (1 << 14) /* Bit 14: DMA freeze */
-# define DMA_CON_ON (1 << 15) /* Bit 15: DMA on */
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define DMA_CON_DMABUSY (1 << 11) /* Bit 15: DMA module busy */
-# define DMA_CON_SUSPEND (1 << 12) /* Bit 12: DMA suspend */
-# define DMA_CON_FRZ (1 << 14) /* Bit 14: DMA freeze */
-# define DMA_CON_ON (1 << 15) /* Bit 15: DMA on */
-
-#endif
-
-/* DMA Status Register */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define DMA_STAT_DMACH_SHIFT (0) /* Bits 0-1: DMA channel */
-# define DMA_STAT_DMACH_MASK (3 << DMA_STAT_DMACH_SHIFT)
-# define DMA_STAT_RDWR (1 << 3) /* Bit 3: Read/write status */
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define DMA_STAT_DMACH_SHIFT (0) /* Bits 0-2: DMA channel */
-# define DMA_STAT_DMACH_MASK (7 << DMA_STAT_DMACH_SHIFT)
-# define DMA_STAT_RDWR (1 << 3) /* Bit 3: Read/write status */
-
-#endif
-
-/* DMA Address Register -- This register contains a 32-bit address value */
-
-/* DMA CRC Control Register */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define DMA_CRCCON_CRCCH_SHIFT (0) /* Bits 0-1: CRC channel select */
-# define DMA_CRCCON_CRCCH_MASK (3 << DMA_CRCCON_CRCCH_SHIFT)
-# define DMA_CRCCON_CRCAPP (1 << 6) /* Bit 6: CRC append mode */
-# define DMA_CRCCON_CRCEN (1 << 7) /* Bit 7: CRC enable */
-# define DMA_CRCCON_PLEN_SHIFT (8) /* Bits 8-11: Polynomial length */
-# define DMA_CRCCON_PLEN_MASK (15 << DMA_CRCCON_PLEN_SHIFT)
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define DMA_CRCCON_CRCCH_SHIFT (0) /* Bits 0-1: CRC channel select */
-# define DMA_CRCCON_CRCCH_MASK (3 << DMA_CRCCON_CRCCH_SHIFT)
-# define DMA_CRCCON_CRCTYP (1 << 5) /* Bit 5: CRC type selection */
-# define DMA_CRCCON_CRCAPP (1 << 6) /* Bit 6: CRC append mode */
-# define DMA_CRCCON_CRCEN (1 << 7) /* Bit 7: CRC enable */
-# define DMA_CRCCON_PLEN_SHIFT (8) /* Bits 8-11: Polynomial length */
-# define DMA_CRCCON_PLEN_MASK (15 << DMA_CRCCON_PLEN_SHIFT)
-# define DMA_CRCCON_BITO (1 << 24) /* Bit 24: CRC bit order selection */
-# define DMA_CRCCON_WBO (1 << 27) /* Bit 27: CRC write byte order selection */
-# define DMA_CRCCON_BYTO_SHIFT (28) /* Bits 28-29: CRC byte order selection */
-# define DMA_CRCCON_BYTO_MASK (3 << DMA_CRCCON_BYTO_SHIFT)
-# define DMA_CRCCON_BYTO_SRCORDER (0 << DMA_CRCCON_BYTO_SHIFT) /* No swapping (i.e., source byte order) */
-# define DMA_CRCCON_BYTO_SWAP32 (1 << DMA_CRCCON_BYTO_SHIFT) /* Endian byte swap on word boundaries */
-# define DMA_CRCCON_BYTO_SWAP32H (2 << DMA_CRCCON_BYTO_SHIFT) /* Swap half-words on word boundaries */
-# define DMA_CRCCON_BYTO_SWAP16 (3 << DMA_CRCCON_BYTO_SHIFT) /* Endian byte swap on half-word boundaries */
-
-#endif
-
-/* DMA CRC Data Register -- 16 or 32-bits of data */
-
-/* DMA CRCXOR Enable Register -- 16 or 32-bits of data */
-
-/* Per-Channel DMA Registers */
-/* DMA Channel Control Register */
-
-#define DMACH_CON_CHPRI_SHIFT (0) /* Bits 0-1: Channel priority */
-#define DMACH_CON_CHPRI_MASK (3 << DMACH_CON_CHPRI_SHIFT)
-# define DMACH_CON_CHPRI(n) ((n) << DMACH_CON_CHPRI_SHIFT)
-#define DMACH_CON_CHEDET (1 << 2) /* Bit 2: Channel event detected */
-#define DMACH_CON_CHAEN (1 << 4) /* Bit 4: Channel automatic enable */
-#define DMACH_CON_CHCHN (1 << 5) /* Bit 5: Channel chain enable */
-#define DMACH_CON_CHAED (1 << 6) /* Bit 6: Channel allow events if disabled */
-#define DMACH_CON_CHEN (1 << 7) /* Bit 7: Channel enable */
-#define DMACH_CON_CHCHNS (1 << 8) /* Bit 8: Chain channel selection */
-
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define DMACH_CON_CHBUSY (1 << 15) /* Bit 15: Channel busy */
-#endif
-
-/* DMA Channel Event Control Register */
-
-#define DMACH_ECON_AIRQEN (1 << 3) /* Bit 3: Channel abort IRQ enable */
-#define DMACH_ECON_SIRQEN (1 << 4) /* Bit 4: Channel start IRQ enable */
-#define DMACH_ECON_PATEN (1 << 5) /* Bit 5: Channel pattern match abort enable */
-#define DMACH_ECON_CABORT (1 << 6) /* Bit 6: DMA abort transfer */
-#define DMACH_ECON_CFORCE (1 << 7) /* Bit 7: DMA forced transfer */
-#define DMACH_ECON_CHSIRQ_SHIFT (8) /* Bits 8-15: Channel Transfer Start IRQ */
-#define DMACH_ECON_CHSIRQ_MASK (0xff << DMACH_ECON_CHSIRQ_SHIFT)
-# define DMACH_ECON_CHSIRQ(n) ((n) << DMACH_ECON_CHSIRQ_SHIFT) /* Interrupt n will initiate a DMA transfer */
-#define DMACH_ECON_CHAIRQ_SHIFT (16) /* Bits 16-23: Channel transfer abort irq */
-#define DMACH_ECON_CHAIRQ_MASK (0xff << DMACH_ECON_CHAIRQ_SHIFT)
-# define DMACH_ECON_CHAIRQ(n) ((n) << DMACH_ECON_CHAIRQ_SHIFT) /* Interrupt n will abort any transfers in progress and set CHAIF */
-
-/* DMA Channel Interrupt Control Register */
-
-#define DMACH_INT_CHERIF (1 << 0) /* Bit 0: Channel address error interrupt flag */
-#define DMACH_INT_CHTAIF (1 << 1) /* Bit 1: Channel transfer abort interrupt flag */
-#define DMACH_INT_CHCCIF (1 << 2) /* Bit 2: Channel cell transfer complete interrupt flag */
-#define DMACH_INT_CHBCIF (1 << 3) /* Bit 3: Channel block transfer complete interrupt flag */
-#define DMACH_INT_CHDHIF (1 << 4) /* Bit 4: Channel destination half full interrupt flag */
-#define DMACH_INT_CHDDIF (1 << 5) /* Bit 5: Channel destination done interrupt flag */
-#define DMACH_INT_CHSHIF (1 << 6) /* Bit 6: Channel source half empty interrupt flag */
-#define DMACH_INT_CHSDIF (1 << 7) /* Bit 7: Channel source done interrupt flag */
-#define DMACH_INT_CHERIE (1 << 16) /* Bit 16: Channel address error interrupt enable */
-#define DMACH_INT_CHTAIE (1 << 17) /* Bit 17: Channel transfer abort interrupt enable */
-#define DMACH_INT_CHCCIE (1 << 18) /* Bit 18: Channel cell transfer complete interrupt enable */
-#define DMACH_INT_CHBCIE (1 << 19) /* Bit 19: Channel block transfer complete interrupt enable */
-#define DMACH_INT_CHDHIE (1 << 20) /* Bit 20: Channel destination half full interrupt enable */
-#define DMACH_INT_CHDDIE (1 << 21) /* Bit 21: Channel destination done interrupt enable */
-#define DMACH_INT_CHSHIE (1 << 22) /* Bit 22: Channel source half empty interrupt enable */
-#define DMACH_INT_CHSDIE (1 << 23) /* Bit 23: Channel source done interrupt enable */
-
-/* DMA Channel Source Start Address Register -- This register contains a 32-bit address value */
-
-/* DMA Channel Destination Start Address Register -- This register contains a 32-bit address value */
-
-/* DMA Channel Source Size Register -- 8 or 16 bits of byte size data */
-
-/* DMA Channel Destination Size Register -- 8 or 16 bits of byte size data */
-
-/* DMA Channel Source Pointer Register -- 8 or 16 bits of byte index data */
-
-/* DMA Channel Destination Pointer Register -- 8 or 16 bits of byte index data */
-
-/* DMA Channel Cell-Size Register -- 8 or 16 bits of byte transferred data */
-
-/* DMA Channel Cell Pointer Register -- 8 or 16 bits of byte transferred data */
-
-/* DMA Channel Pattern Data Register -- 8-bits of pattern data */
-
-#define DMACH_DAT_MASK 0xff
-
-/********************************************************************************************
- * Public Types
- ********************************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-/********************************************************************************************
- * Inline Functions
- ********************************************************************************************/
-
-/********************************************************************************************
- * Public Function Prototypes
- ********************************************************************************************/
-
-#ifdef __cplusplus
-#define EXTERN extern "C"
-extern "C" {
-#else
-#define EXTERN extern
-#endif
-
-#undef EXTERN
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ASSEMBLY__ */
-#endif /* CHIP_NDMACH > 0 */
-#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DMA_H */
+/********************************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-dma.h
+ *
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_PIC32MX_PIC32MX_DMA_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DMA_H
+
+/********************************************************************************************
+ * Included Files
+ ********************************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "chip.h"
+#include "pic32mx-memorymap.h"
+
+#if CHIP_NDMACH > 0
+
+/********************************************************************************************
+ * Pre-Processor Definitions
+ ********************************************************************************************/
+/* Register Offsets *************************************************************************/
+/* Global DMA Registers */
+
+#define PIC32MX_DMA_CON_OFFSET 0x0000 /* DMA Controller Control Register */
+#define PIC32MX_DMA_CONCLR_OFFSET 0x0004 /* DMA Controller Control Clear Register */
+#define PIC32MX_DMA_CONSET_OFFSET 0x0008 /* DMA Controller Control Set Register */
+#define PIC32MX_DMA_CONINV_OFFSET 0x000c /* DMA Controller Control Invert Register */
+#define PIC32MX_DMA_STAT_OFFSET 0x0010 /* DMA Status Register */
+#define PIC32MX_DMA_ADDR_OFFSET 0x0020 /* DMA Address Register */
+#define PIC32MX_DMA_CRCCON_OFFSET 0x0030 /* DMA CRC Control Register */
+#define PIC32MX_DMA_CRCCONCLR_OFFSET 0x0034 /* DMA CRC Control Clear Register */
+#define PIC32MX_DMA_CRCCONSET_OFFSET 0x0038 /* DMA CRC Control Set Register */
+#define PIC32MX_DMA_CRCCONINV_OFFSET 0x003c /* DMA CRC Control Invert Register */
+#define PIC32MX_DMA_CRCDATA_OFFSET 0x0040 /* DMA CRC Data Register */
+#define PIC32MX_DMA_CRCDATACLR_OFFSET 0x0044 /* DMA CRC Data Clear Register */
+#define PIC32MX_DMA_CRCDATASET_OFFSET 0x0048 /* DMA CRC Data Set Register */
+#define PIC32MX_DMA_CRCDATAINV_OFFSET 0x004c /* DMA CRC Data Invert Register */
+#define PIC32MX_DMA_CRCXOR_OFFSET 0x0050 /* DMA CRCXOR Enable Register */
+#define PIC32MX_DMA_CRCXORCLR_OFFSET 0x0054 /* DMA CRCXOR Enable Clear Register */
+#define PIC32MX_DMA_CRCXORSET_OFFSET 0x0058 /* DMA CRCXOR Enable Set Register */
+#define PIC32MX_DMA_CRCXORINV_OFFSET 0x005c /* DMA CRCXOR Enable Invert Register */
+
+/* Per-Channel DMA Registers */
+
+#define PIC32MX_DMACH_CON_OFFSET 0x0000 /* DMA Channel Control Register */
+#define PIC32MX_DMACH_CONCLR_OFFSET 0x0004 /* DMA Channel Control Clear Register */
+#define PIC32MX_DMACH_CONSET_OFFSET 0x0008 /* DMA Channel Control Set Register */
+#define PIC32MX_DMACH_CONINV_OFFSET 0x000c /* DMA Channel Control Invert Register */
+#define PIC32MX_DMACH_ECON_OFFSET 0x0010 /* DMA Channel Event Control Register */
+#define PIC32MX_DMACH_ECONCLR_OFFSET 0x0014 /* DMA Channel Event Control Clear Register */
+#define PIC32MX_DMACH_ECONSET_OFFSET 0x0018 /* DMA Channel Event Control Set Register */
+#define PIC32MX_DMACH_ECONINV_OFFSET 0x001c /* DMA Channel Event Control Invert Register */
+#define PIC32MX_DMACH_INT_OFFSET 0x0020 /* DMA Channel Interrupt Control Register */
+#define PIC32MX_DMACH_INTCLR_OFFSET 0x0024 /* DMA Channel Interrupt Control Clear Register */
+#define PIC32MX_DMACH_INTSET_OFFSET 0x0028 /* DMA Channel Interrupt Control Set Register */
+#define PIC32MX_DMACH_INTINV_OFFSET 0x002c /* DMA Channel Interrupt Control Invert Register */
+#define PIC32MX_DMACH_SSA_OFFSET 0x0030 /* DMA Channel Source Start Address Register */
+#define PIC32MX_DMACH_SSACLR_OFFSET 0x0034 /* DMA Channel Source Start Address Clear Register */
+#define PIC32MX_DMACH_SSASET_OFFSET 0x0038 /* DMA Channel Source Start Address Set Register */
+#define PIC32MX_DMACH_SSAINV_OFFSET 0x003c /* DMA Channel Source Start Address Invert Register */
+#define PIC32MX_DMACH_DSA_OFFSET 0x0040 /* DMA Channel Destination Start Address Register */
+#define PIC32MX_DMACH_DSACLR_OFFSET 0x0044 /* DMA Channel Destination Start Address Clear Register */
+#define PIC32MX_DMACH_DSASET_OFFSET 0x0048 /* DMA Channel Destination Start Address Set Register */
+#define PIC32MX_DMACH_DSAINV_OFFSET 0x004c /* DMA Channel Destination Start Address Invert Register */
+#define PIC32MX_DMACH_SSIZ_OFFSET 0x0050 /* DMA Channel Source Size Register */
+#define PIC32MX_DMACH_SSIZCLR_OFFSET 0x0054 /* DMA Channel Source Size Clear Register */
+#define PIC32MX_DMACH_SSIZSET_OFFSET 0x0058 /* DMA Channel Source Size Set Register */
+#define PIC32MX_DMACH_SSIZINV_OFFSET 0x005c /* DMA Channel Source Size Invert Register */
+#define PIC32MX_DMACH_DSIZ_OFFSET 0x0060 /* DMA Channel Destination Size Register */
+#define PIC32MX_DMACH_DSIZCLR_OFFSET 0x0064 /* DMA Channel Destination Size Clear Register */
+#define PIC32MX_DMACH_DSIZSET_OFFSET 0x0068 /* DMA Channel Destination Size Set Register */
+#define PIC32MX_DMACH_DSIZINV_OFFSET 0x006c /* DMA Channel Destination Size Invert Register */
+#define PIC32MX_DMACH_SPTR_OFFSET 0x0070 /* DMA Channel Source Pointer Register */
+#define PIC32MX_DMACH_DPTR_OFFSET 0x0080 /* DMA Channel Destination Pointer Register */
+#define PIC32MX_DMACH_CSIZ_OFFSET 0x0090 /* DMA Channel Cell-Size Register */
+#define PIC32MX_DMACH_CSIZCLR_OFFSET 0x0094 /* DMA Channel Cell-Size Clear Register */
+#define PIC32MX_DMACH_CSIZSET_OFFSET 0x0098 /* DMA Channel Cell-Size Set Register */
+#define PIC32MX_DMACH_CSIZINV_OFFSET 0x009c /* DMA Channel Cell-Size Invert Register */
+#define PIC32MX_DMACH_CPTR_OFFSET 0x00a0 /* DMA Channel Cell Pointer Register */
+#define PIC32MX_DMACH_DAT_OFFSET 0x00b0 /* DMA Channel Pattern Data Register */
+#define PIC32MX_DMACH_DATCLR_OFFSET 0x00b4 /* DMA Channel Pattern Data Clear Register */
+#define PIC32MX_DMACH_DATSET_OFFSET 0x00b8 /* DMA Channel Pattern Data Set Register */
+#define PIC32MX_DMACH_DATINV_OFFSET 0x00bc /* DMA Channel Pattern Data Invert Register */
+
+/* Register Addresses ***********************************************************************/
+/* Global DMA Registers */
+
+#define PIC32MX_DMA_CON (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CON_OFFSET)
+#define PIC32MX_DMA_CONCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONCLR_OFFSET)
+#define PIC32MX_DMA_CONSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONSET_OFFSET)
+#define PIC32MX_DMA_CONINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CONINV_OFFSET)
+#define PIC32MX_DMA_STAT (PIC32MX_DMA_K1BASE+PIC32MX_DMA_STAT_OFFSET)
+#define PIC32MX_DMA_ADDR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_ADDR_OFFSET)
+#define PIC32MX_DMA_CRCCON (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCON_OFFSET)
+#define PIC32MX_DMA_CRCCONCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONCLR_OFFSET)
+#define PIC32MX_DMA_CRCCONSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONSET_OFFSET)
+#define PIC32MX_DMA_CRCCONINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCCONINV_OFFSET)
+#define PIC32MX_DMA_CRCDATA (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATA_OFFSET)
+#define PIC32MX_DMA_CRCDATACLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATACLR_OFFSET)
+#define PIC32MX_DMA_CRCDATASET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATASET_OFFSET)
+#define PIC32MX_DMA_CRCDATAINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCDATAINV_OFFSET)
+#define PIC32MX_DMA_CRCXOR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXOR_OFFSET)
+#define PIC32MX_DMA_CRCXORCLR (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORCLR_OFFSET)
+#define PIC32MX_DMA_CRCXORSET (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORSET_OFFSET)
+#define PIC32MX_DMA_CRCXORINV (PIC32MX_DMA_K1BASE+PIC32MX_DMA_CRCXORINV_OFFSET)
+
+/* Per-Channel DMA Registers */
+
+#define PIC32MX_DMACH_CON(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CON_OFFSET)
+#define PIC32MX_DMACH_CONCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONCLR_OFFSET)
+#define PIC32MX_DMACH_CONSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONSET_OFFSET)
+#define PIC32MX_DMACH_CONINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CONINV_OFFSET)
+#define PIC32MX_DMACH_ECON(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECON_OFFSET)
+#define PIC32MX_DMACH_ECONCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONCLR_OFFSET)
+#define PIC32MX_DMACH_ECONSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONSET_OFFSET)
+#define PIC32MX_DMACH_ECONINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_ECONINV_OFFSET)
+#define PIC32MX_DMACH_INT(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INT_OFFSET)
+#define PIC32MX_DMACH_INTCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTCLR_OFFSET)
+#define PIC32MX_DMACH_INTSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTSET_OFFSET)
+#define PIC32MX_DMACH_INTINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_INTINV_OFFSET)
+#define PIC32MX_DMACH_SSA(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSA_OFFSET)
+#define PIC32MX_DMACH_SSACLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSACLR_OFFSET)
+#define PIC32MX_DMACH_SSASET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSASET_OFFSET)
+#define PIC32MX_DMACH_SSAINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSAINV_OFFSET)
+#define PIC32MX_DMACH_DSA(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSA_OFFSET)
+#define PIC32MX_DMACH_DSACLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSACLR_OFFSET)
+#define PIC32MX_DMACH_DSASET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSASET_OFFSET)
+#define PIC32MX_DMACH_DSAINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSAINV_OFFSET)
+#define PIC32MX_DMACH_SSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZ_OFFSET)
+#define PIC32MX_DMACH_SSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZCLR_OFFSET)
+#define PIC32MX_DMACH_SSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZSET_OFFSET)
+#define PIC32MX_DMACH_SSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SSIZINV_OFFSET)
+#define PIC32MX_DMACH_DSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZ_OFFSET)
+#define PIC32MX_DMACH_DSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZCLR_OFFSET)
+#define PIC32MX_DMACH_DSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZSET_OFFSET)
+#define PIC32MX_DMACH_DSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DSIZINV_OFFSET)
+#define PIC32MX_DMACH_SPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_SPTR_OFFSET)
+#define PIC32MX_DMACH_DPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DPTR_OFFSET)
+#define PIC32MX_DMACH_CSIZ(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZ_OFFSET)
+#define PIC32MX_DMACH_CSIZCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZCLR_OFFSET)
+#define PIC32MX_DMACH_CSIZSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZSET_OFFSET)
+#define PIC32MX_DMACH_CSIZINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CSIZINV_OFFSET)
+#define PIC32MX_DMACH_CPTR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_CPTR_OFFSET)
+#define PIC32MX_DMACH_DAT(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DAT_OFFSET)
+#define PIC32MX_DMACH_DATCLR(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATCLR_OFFSET)
+#define PIC32MX_DMACH_DATSET(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATSET_OFFSET)
+#define PIC32MX_DMACH_DATINV(n) (PIC32MX_DMACH_K1BASE(n)+PIC32MX_DMACH_DATINV_OFFSET)
+
+#if CHIP_NDMACH > 0
+# define PIC32MX_DMACH0_CON (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH0_CONCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH0_CONSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH0_CONINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH0_ECON (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH0_ECONCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH0_ECONSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH0_ECONINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH0_INT (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH0_INTCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH0_INTSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH0_INTINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH0_SSA (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH0_SSACLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH0_SSASET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH0_SSAINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH0_DSA (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH0_DSACLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH0_DSASET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH0_DSAINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH0_SSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH0_SSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH0_SSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH0_SSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH0_DSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH0_DSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH0_DSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH0_DSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH0_SPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH0_DPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH0_CSIZ (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH0_CSIZCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH0_CSIZSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH0_CSIZINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH0_CPTR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH0_DAT (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH0_DATCLR (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH0_DATSET (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH0_DATINV (PIC32MX_DMACH0_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 1
+# define PIC32MX_DMACH1_CON (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH1_CONCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH1_CONSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH1_CONINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH1_ECON (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH1_ECONCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH1_ECONSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH1_ECONINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH1_INT (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH1_INTCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH1_INTSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH1_INTINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH1_SSA (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH1_SSACLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH1_SSASET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH1_SSAINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH1_DSA (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH1_DSACLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH1_DSASET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH1_DSAINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH1_SSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH1_SSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH1_SSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH1_SSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH1_DSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH1_DSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH1_DSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH1_DSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH1_SPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH1_DPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH1_CSIZ (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH1_CSIZCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH1_CSIZSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH1_CSIZINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH1_CPTR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH1_DAT (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH1_DATCLR (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH1_DATSET (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH1_DATINV (PIC32MX_DMACH1_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 2
+# define PIC32MX_DMACH2_CON (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH2_CONCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH2_CONSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH2_CONINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH2_ECON (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH2_ECONCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH2_ECONSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH2_ECONINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH2_INT (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH2_INTCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH2_INTSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH2_INTINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH2_SSA (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH2_SSACLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH2_SSASET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH2_SSAINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH2_DSA (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH2_DSACLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH2_DSASET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH2_DSAINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH2_SSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH2_SSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH2_SSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH2_SSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH2_DSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH2_DSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH2_DSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH2_DSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH2_SPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH2_DPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH2_CSIZ (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH2_CSIZCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH2_CSIZSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH2_CSIZINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH2_CPTR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH2_DAT (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH2_DATCLR (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH2_DATSET (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH2_DATINV (PIC32MX_DMACH2_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+
+#if CHIP_NDMACH > 3
+# define PIC32MX_DMACH3_CON (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH3_CONCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH3_CONSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH3_CONINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH3_ECON (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH3_ECONCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH3_ECONSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH3_ECONINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH3_INT (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH3_INTCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH3_INTSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH3_INTINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH3_SSA (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH3_SSACLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH3_SSASET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH3_SSAINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH3_DSA (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH3_DSACLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH3_DSASET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH3_DSAINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH3_SSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH3_SSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH3_SSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH3_SSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH3_DSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH3_DSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH3_DSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH3_DSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH3_SPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH3_DPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH3_CSIZ (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH3_CSIZCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH3_CSIZSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH3_CSIZINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH3_CPTR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH3_DAT (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH3_DATCLR (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH3_DATSET (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH3_DATINV (PIC32MX_DMACH3_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 4
+# define PIC32MX_DMACH4_CON (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH4_CONCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH4_CONSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH4_CONINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH4_ECON (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH4_ECONCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH4_ECONSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH4_ECONINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH4_INT (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH4_INTCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH4_INTSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH4_INTINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH4_SSA (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH4_SSACLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH4_SSASET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH4_SSAINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH4_DSA (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH4_DSACLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH4_DSASET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH4_DSAINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH4_SSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH4_SSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH4_SSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH4_SSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH4_DSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH4_DSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH4_DSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH4_DSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH4_SPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH4_DPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH4_CSIZ (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH4_CSIZCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH4_CSIZSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH4_CSIZINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH4_CPTR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH4_DAT (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH4_DATCLR (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH4_DATSET (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH4_DATINV (PIC32MX_DMACH4_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 5
+# define PIC32MX_DMACH5_CON (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH5_CONCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH5_CONSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH5_CONINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH5_ECON (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH5_ECONCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH5_ECONSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH5_ECONINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH5_INT (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH5_INTCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH5_INTSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH5_INTINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH5_SSA (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH5_SSACLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH5_SSASET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH5_SSAINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH5_DSA (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH5_DSACLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH5_DSASET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH5_DSAINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH5_SSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH5_SSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH5_SSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH5_SSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH5_DSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH5_DSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH5_DSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH5_DSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH5_SPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH5_DPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH5_CSIZ (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH5_CSIZCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH5_CSIZSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH5_CSIZINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH5_CPTR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH5_DAT (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH5_DATCLR (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH5_DATSET (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH5_DATINV (PIC32MX_DMACH5_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 6
+# define PIC32MX_DMACH6_CON (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH6_CONCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH6_CONSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH6_CONINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH6_ECON (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH6_ECONCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH6_ECONSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH6_ECONINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH6_INT (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH6_INTCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH6_INTSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH6_INTINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH6_SSA (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH6_SSACLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH6_SSASET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH6_SSAINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH6_DSA (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH6_DSACLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH6_DSASET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH6_DSAINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH6_SSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH6_SSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH6_SSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH6_SSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH6_DSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH6_DSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH6_DSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH6_DSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH6_SPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH6_DPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH6_CSIZ (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH6_CSIZCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH6_CSIZSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH6_CSIZINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH6_CPTR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH6_DAT (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH6_DATCLR (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH6_DATSET (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH6_DATINV (PIC32MX_DMACH6_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+#if CHIP_NDMACH > 7
+# define PIC32MX_DMACH7_CON (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CON_OFFSET)
+# define PIC32MX_DMACH7_CONCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONCLR_OFFSET)
+# define PIC32MX_DMACH7_CONSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONSET_OFFSET)
+# define PIC32MX_DMACH7_CONINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CONINV_OFFSET)
+# define PIC32MX_DMACH7_ECON (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECON_OFFSET)
+# define PIC32MX_DMACH7_ECONCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONCLR_OFFSET)
+# define PIC32MX_DMACH7_ECONSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONSET_OFFSET)
+# define PIC32MX_DMACH7_ECONINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_ECONINV_OFFSET)
+# define PIC32MX_DMACH7_INT (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INT_OFFSET)
+# define PIC32MX_DMACH7_INTCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTCLR_OFFSET)
+# define PIC32MX_DMACH7_INTSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTSET_OFFSET)
+# define PIC32MX_DMACH7_INTINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_INTINV_OFFSET)
+# define PIC32MX_DMACH7_SSA (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSA_OFFSET)
+# define PIC32MX_DMACH7_SSACLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSACLR_OFFSET)
+# define PIC32MX_DMACH7_SSASET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSASET_OFFSET)
+# define PIC32MX_DMACH7_SSAINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSAINV_OFFSET)
+# define PIC32MX_DMACH7_DSA (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSA_OFFSET)
+# define PIC32MX_DMACH7_DSACLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSACLR_OFFSET)
+# define PIC32MX_DMACH7_DSASET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSASET_OFFSET)
+# define PIC32MX_DMACH7_DSAINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSAINV_OFFSET)
+# define PIC32MX_DMACH7_SSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZ_OFFSET)
+# define PIC32MX_DMACH7_SSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZCLR_OFFSET)
+# define PIC32MX_DMACH7_SSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZSET_OFFSET)
+# define PIC32MX_DMACH7_SSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SSIZINV_OFFSET)
+# define PIC32MX_DMACH7_DSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZ_OFFSET)
+# define PIC32MX_DMACH7_DSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZCLR_OFFSET)
+# define PIC32MX_DMACH7_DSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZSET_OFFSET)
+# define PIC32MX_DMACH7_DSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DSIZINV_OFFSET)
+# define PIC32MX_DMACH7_SPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_SPTR_OFFSET)
+# define PIC32MX_DMACH7_DPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DPTR_OFFSET)
+# define PIC32MX_DMACH7_CSIZ (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZ_OFFSET)
+# define PIC32MX_DMACH7_CSIZCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZCLR_OFFSET)
+# define PIC32MX_DMACH7_CSIZSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZSET_OFFSET)
+# define PIC32MX_DMACH7_CSIZINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CSIZINV_OFFSET)
+# define PIC32MX_DMACH7_CPTR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_CPTR_OFFSET)
+# define PIC32MX_DMACH7_DAT (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DAT_OFFSET)
+# define PIC32MX_DMACH7_DATCLR (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATCLR_OFFSET)
+# define PIC32MX_DMACH7_DATSET (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATSET_OFFSET)
+# define PIC32MX_DMACH7_DATINV (PIC32MX_DMACH7_K1BASE+PIC32MX_DMACH_DATINV_OFFSET)
+#endif
+
+/* Register Bit-Field Definitions ***********************************************************/
+/* Global DMA Registers */
+/* DMA Controller Control Register */
+
+#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define DMA_CON_DMABUSY (1 << 11) /* Bit 15: DMA module busy */
+# define DMA_CON_SUSPEND (1 << 12) /* Bit 12: DMA suspend */
+# define DMA_CON_ON (1 << 15) /* Bit 15: DMA on */
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define DMA_CON_SUSPEND (1 << 12) /* Bit 12: DMA suspend */
+# define DMA_CON_SIDL (1 << 13) /* Bit 13: Stop in idle mode */
+# define DMA_CON_FRZ (1 << 14) /* Bit 14: DMA freeze */
+# define DMA_CON_ON (1 << 15) /* Bit 15: DMA on */
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define DMA_CON_DMABUSY (1 << 11) /* Bit 15: DMA module busy */
+# define DMA_CON_SUSPEND (1 << 12) /* Bit 12: DMA suspend */
+# define DMA_CON_FRZ (1 << 14) /* Bit 14: DMA freeze */
+# define DMA_CON_ON (1 << 15) /* Bit 15: DMA on */
+
+#endif
+
+/* DMA Status Register */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX3) || \
+ defined(CHIP_PIC32MX4)
+
+# define DMA_STAT_DMACH_SHIFT (0) /* Bits 0-1: DMA channel */
+# define DMA_STAT_DMACH_MASK (3 << DMA_STAT_DMACH_SHIFT)
+# define DMA_STAT_RDWR (1 << 3) /* Bit 3: Read/write status */
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define DMA_STAT_DMACH_SHIFT (0) /* Bits 0-2: DMA channel */
+# define DMA_STAT_DMACH_MASK (7 << DMA_STAT_DMACH_SHIFT)
+# define DMA_STAT_RDWR (1 << 3) /* Bit 3: Read/write status */
+
+#endif
+
+/* DMA Address Register -- This register contains a 32-bit address value */
+
+/* DMA CRC Control Register */
+
+#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define DMA_CRCCON_CRCCH_SHIFT (0) /* Bits 0-1: CRC channel select */
+# define DMA_CRCCON_CRCCH_MASK (3 << DMA_CRCCON_CRCCH_SHIFT)
+# define DMA_CRCCON_CRCAPP (1 << 6) /* Bit 6: CRC append mode */
+# define DMA_CRCCON_CRCEN (1 << 7) /* Bit 7: CRC enable */
+# define DMA_CRCCON_PLEN_SHIFT (8) /* Bits 8-11: Polynomial length */
+# define DMA_CRCCON_PLEN_MASK (15 << DMA_CRCCON_PLEN_SHIFT)
+
+#elif defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define DMA_CRCCON_CRCCH_SHIFT (0) /* Bits 0-2: CRC channel select */
+# define DMA_CRCCON_CRCCH_MASK (7 << DMA_CRCCON_CRCCH_SHIFT)
+# define DMA_CRCCON_CRCTYP (1 << 5) /* Bit 5: CRC type selection */
+# define DMA_CRCCON_CRCAPP (1 << 6) /* Bit 6: CRC append mode */
+# define DMA_CRCCON_CRCEN (1 << 7) /* Bit 7: CRC enable */
+# define DMA_CRCCON_PLEN_SHIFT (8) /* Bits 8-12: Polynomial length */
+# define DMA_CRCCON_PLEN_MASK (31 << DMA_CRCCON_PLEN_SHIFT)
+# define DMA_CRCCON_BITO (1 << 24) /* Bit 24: CRC bit order selection */
+# define DMA_CRCCON_WBO (1 << 27) /* Bit 27: CRC write byte order selection */
+# define DMA_CRCCON_BYTO_SHIFT (28) /* Bits 28-29: CRC byte order selection */
+# define DMA_CRCCON_BYTO_MASK (3 << DMA_CRCCON_BYTO_SHIFT)
+# define DMA_CRCCON_BYTO_SRCORDER (0 << DMA_CRCCON_BYTO_SHIFT) /* No swapping (i.e., source byte order) */
+# define DMA_CRCCON_BYTO_SWAP32 (1 << DMA_CRCCON_BYTO_SHIFT) /* Endian byte swap on word boundaries */
+# define DMA_CRCCON_BYTO_SWAP32H (2 << DMA_CRCCON_BYTO_SHIFT) /* Swap half-words on word boundaries */
+# define DMA_CRCCON_BYTO_SWAP16 (3 << DMA_CRCCON_BYTO_SHIFT) /* Endian byte swap on half-word boundaries */
+
+#endif
+
+/* DMA CRC Data Register -- 16 or 32-bits of data */
+
+/* DMA CRCXOR Enable Register -- 16 or 32-bits of data */
+
+/* Per-Channel DMA Registers */
+/* DMA Channel Control Register */
+
+#define DMACH_CON_CHPRI_SHIFT (0) /* Bits 0-1: Channel priority */
+#define DMACH_CON_CHPRI_MASK (3 << DMACH_CON_CHPRI_SHIFT)
+# define DMACH_CON_CHPRI(n) ((n) << DMACH_CON_CHPRI_SHIFT)
+#define DMACH_CON_CHEDET (1 << 2) /* Bit 2: Channel event detected */
+#define DMACH_CON_CHAEN (1 << 4) /* Bit 4: Channel automatic enable */
+#define DMACH_CON_CHCHN (1 << 5) /* Bit 5: Channel chain enable */
+#define DMACH_CON_CHAED (1 << 6) /* Bit 6: Channel allow events if disabled */
+#define DMACH_CON_CHEN (1 << 7) /* Bit 7: Channel enable */
+#define DMACH_CON_CHCHNS (1 << 8) /* Bit 8: Chain channel selection */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define DMACH_CON_CHBUSY (1 << 15) /* Bit 15: Channel busy */
+#endif
+
+/* DMA Channel Event Control Register */
+
+#define DMACH_ECON_AIRQEN (1 << 3) /* Bit 3: Channel abort IRQ enable */
+#define DMACH_ECON_SIRQEN (1 << 4) /* Bit 4: Channel start IRQ enable */
+#define DMACH_ECON_PATEN (1 << 5) /* Bit 5: Channel pattern match abort enable */
+#define DMACH_ECON_CABORT (1 << 6) /* Bit 6: DMA abort transfer */
+#define DMACH_ECON_CFORCE (1 << 7) /* Bit 7: DMA forced transfer */
+#define DMACH_ECON_CHSIRQ_SHIFT (8) /* Bits 8-15: Channel Transfer Start IRQ */
+#define DMACH_ECON_CHSIRQ_MASK (0xff << DMACH_ECON_CHSIRQ_SHIFT)
+# define DMACH_ECON_CHSIRQ(n) ((n) << DMACH_ECON_CHSIRQ_SHIFT) /* Interrupt n will initiate a DMA transfer */
+#define DMACH_ECON_CHAIRQ_SHIFT (16) /* Bits 16-23: Channel transfer abort irq */
+#define DMACH_ECON_CHAIRQ_MASK (0xff << DMACH_ECON_CHAIRQ_SHIFT)
+# define DMACH_ECON_CHAIRQ(n) ((n) << DMACH_ECON_CHAIRQ_SHIFT) /* Interrupt n will abort any transfers in progress and set CHAIF */
+
+/* DMA Channel Interrupt Control Register */
+
+#define DMACH_INT_CHERIF (1 << 0) /* Bit 0: Channel address error interrupt flag */
+#define DMACH_INT_CHTAIF (1 << 1) /* Bit 1: Channel transfer abort interrupt flag */
+#define DMACH_INT_CHCCIF (1 << 2) /* Bit 2: Channel cell transfer complete interrupt flag */
+#define DMACH_INT_CHBCIF (1 << 3) /* Bit 3: Channel block transfer complete interrupt flag */
+#define DMACH_INT_CHDHIF (1 << 4) /* Bit 4: Channel destination half full interrupt flag */
+#define DMACH_INT_CHDDIF (1 << 5) /* Bit 5: Channel destination done interrupt flag */
+#define DMACH_INT_CHSHIF (1 << 6) /* Bit 6: Channel source half empty interrupt flag */
+#define DMACH_INT_CHSDIF (1 << 7) /* Bit 7: Channel source done interrupt flag */
+#define DMACH_INT_CHERIE (1 << 16) /* Bit 16: Channel address error interrupt enable */
+#define DMACH_INT_CHTAIE (1 << 17) /* Bit 17: Channel transfer abort interrupt enable */
+#define DMACH_INT_CHCCIE (1 << 18) /* Bit 18: Channel cell transfer complete interrupt enable */
+#define DMACH_INT_CHBCIE (1 << 19) /* Bit 19: Channel block transfer complete interrupt enable */
+#define DMACH_INT_CHDHIE (1 << 20) /* Bit 20: Channel destination half full interrupt enable */
+#define DMACH_INT_CHDDIE (1 << 21) /* Bit 21: Channel destination done interrupt enable */
+#define DMACH_INT_CHSHIE (1 << 22) /* Bit 22: Channel source half empty interrupt enable */
+#define DMACH_INT_CHSDIE (1 << 23) /* Bit 23: Channel source done interrupt enable */
+
+/* DMA Channel Source Start Address Register -- This register contains a 32-bit address value */
+
+/* DMA Channel Destination Start Address Register -- This register contains a 32-bit address value */
+
+/* DMA Channel Source Size Register -- 8 or 16 bits of byte size data */
+
+/* DMA Channel Destination Size Register -- 8 or 16 bits of byte size data */
+
+/* DMA Channel Source Pointer Register -- 8 or 16 bits of byte index data */
+
+/* DMA Channel Destination Pointer Register -- 8 or 16 bits of byte index data */
+
+/* DMA Channel Cell-Size Register -- 8 or 16 bits of byte transferred data */
+
+/* DMA Channel Cell Pointer Register -- 8 or 16 bits of byte transferred data */
+
+/* DMA Channel Pattern Data Register -- 8-bits of pattern data */
+
+#define DMACH_DAT_MASK 0xff
+
+/********************************************************************************************
+ * Public Types
+ ********************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/********************************************************************************************
+ * Inline Functions
+ ********************************************************************************************/
+
+/********************************************************************************************
+ * Public Function Prototypes
+ ********************************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* CHIP_NDMACH > 0 */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DMA_H */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-int.h b/nuttx/arch/mips/src/pic32mx/pic32mx-int.h
index c774cd621..ba017bb04 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-int.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-int.h
@@ -1,873 +1,1084 @@
-/****************************************************************************
- * arch/mips/src/pic32mx/pic32mx-int.h
- *
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * 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_PIC32MX_PIC32MX_INT_H
-#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_INT_H
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include "chip.h"
-#include "pic32mx-memorymap.h"
-
-/****************************************************************************
- * Pre-Processor Definitions
- ****************************************************************************/
-/* Register Offsets *********************************************************/
-
-#define PIC32MX_INT_INTCON_OFFSET 0x0000 /* Interrupt control register */
-#define PIC32MX_INT_INTCONCLR_OFFSET 0x0004 /* Interrupt control clear register */
-#define PIC32MX_INT_INTCONSET_OFFSET 0x0008 /* Interrupt control set register */
-#define PIC32MX_INT_INTCONINV_OFFSET 0x000c /* Interrupt control invert register */
-#define PIC32MX_INT_INTSTAT_OFFSET 0x0010 /* Interrupt status register */
-#define PIC32MX_INT_INTSTATCLR_OFFSET 0x0014 /* Interrupt status clear register */
-#define PIC32MX_INT_INTSTATSET_OFFSET 0x0018 /* Interrupt status set register */
-#define PIC32MX_INT_INTSTATINV_OFFSET 0x001c /* Interrupt status invert register */
-#define PIC32MX_INT_TPTMR_OFFSET 0x0020 /* Temporal proximity timer register */
-#define PIC32MX_INT_TPTMRCLR_OFFSET 0x0024 /* Temporal proximity timer clear register */
-#define PIC32MX_INT_TPTMRSET_OFFSET 0x0028 /* Temporal proximity timer set register */
-#define PIC32MX_INT_TPTMRINV_OFFSET 0x002c /* Temporal proximity timer invert register */
-#define PIC32MX_INT_IFS_OFFSET(n) (0x0030 + ((n) << 4))
-#define PIC32MX_INT_IFSCLR_OFFSET(n) (0x0034 + ((n) << 4))
-#define PIC32MX_INT_IFSSET_OFFSET(n) (0x0038 + ((n) << 4))
-#define PIC32MX_INT_IFSINV_OFFSET(n) (0x003c + ((n) << 4))
-#define PIC32MX_INT_IFS0_OFFSET 0x0030 /* Interrupt flag status register 0 */
-#define PIC32MX_INT_IFS0CLR_OFFSET 0x0034 /* Interrupt flag status clear register 0 */
-#define PIC32MX_INT_IFS0SET_OFFSET 0x0038 /* Interrupt flag status set register 0 */
-#define PIC32MX_INT_IFS0INV_OFFSET 0x003c /* Interrupt flag status invert register 0 */
-#define PIC32MX_INT_IFS1_OFFSET 0x0040 /* Interrupt flag status register 1 */
-#define PIC32MX_INT_IFS1CLR_OFFSET 0x0044 /* Interrupt flag status clear register 1 */
-#define PIC32MX_INT_IFS1SET_OFFSET 0x0048 /* Interrupt flag status set register 1 */
-#define PIC32MX_INT_IFS1INV_OFFSET 0x004c /* Interrupt flag status invert register 1 */
-#define PIC32MX_INT_IFS2_OFFSET 0x0050 /* Interrupt flag status register 2 */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IFS2CLR_OFFSET 0x0054 /* Interrupt flag status clear register 2 */
-# define PIC32MX_INT_IFS2SET_OFFSET 0x0058 /* Interrupt flag status set register 2 */
-# define PIC32MX_INT_IFS2INV_OFFSET 0x005c /* Interrupt flag status invert register 2 */
-#endif
-#define PIC32MX_INT_IEC_OFFSET(n) (0x0060 + ((n) << 4))
-#define PIC32MX_INT_IECCLR_OFFSET(n) (0x0064 + ((n) << 4))
-#define PIC32MX_INT_IECSET_OFFSET(n) (0x0068 + ((n) << 4))
-#define PIC32MX_INT_IECINV_OFFSET(n) (0x006c + ((n) << 4))
-#define PIC32MX_INT_IEC0_OFFSET 0x0060 /* Interrupt enable control register 0 */
-#define PIC32MX_INT_IEC0CLR_OFFSET 0x0064 /* Interrupt enable control clear register 0 */
-#define PIC32MX_INT_IEC0SET_OFFSET 0x0068 /* Interrupt enable control set register 0 */
-#define PIC32MX_INT_IEC0INV_OFFSET 0x006c /* Interrupt enable control invert register 0 */
-#define PIC32MX_INT_IEC1_OFFSET 0x0070 /* Interrupt enable control register 1 */
-#define PIC32MX_INT_IEC1CLR_OFFSET 0x0074 /* Interrupt enable control clear register 1 */
-#define PIC32MX_INT_IEC1SET_OFFSET 0x0078 /* Interrupt enable control set register 1 */
-#define PIC32MX_INT_IEC1INV_OFFSET 0x007c /* Interrupt enable control invert register 1 */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IEC2_OFFSET 0x0080 /* Interrupt enable control register 2 */
-# define PIC32MX_INT_IEC2CLR_OFFSET 0x0084 /* Interrupt enable control clear register 2 */
-# define PIC32MX_INT_IEC2SET_OFFSET 0x0088 /* Interrupt enable control set register 2 */
-# define PIC32MX_INT_IEC2INV_OFFSET 0x008c /* Interrupt enable control invert register 2 */
-#endif
-#define PIC32MX_INT_IPC_OFFSET(n) (0x0090 + ((n) << 4))
-#define PIC32MX_INT_IPCCLR_OFFSET(n) (0x0094 + ((n) << 4))
-#define PIC32MX_INT_IPCSET_OFFSET(n) (0x0098 + ((n) << 4))
-#define PIC32MX_INT_IPCINV_OFFSET(n) (0x009c + ((n) << 4))
-#define PIC32MX_INT_IPC0_OFFSET 0x0090 /* Interrupt priority control register 0 */
-#define PIC32MX_INT_IPC0CLR_OFFSET 0x0094 /* Interrupt priority control clear register 0 */
-#define PIC32MX_INT_IPC0SET_OFFSET 0x0098 /* Interrupt priority control set register 0 */
-#define PIC32MX_INT_IPC0INV_OFFSET 0x009c /* Interrupt priority control invert register 0 */
-#define PIC32MX_INT_IPC1_OFFSET 0x00a0 /* Interrupt priority control register 1 */
-#define PIC32MX_INT_IPC1CLR_OFFSET 0x00a4 /* Interrupt priority control clear register 1 */
-#define PIC32MX_INT_IPC1SET_OFFSET 0x00a8 /* Interrupt priority control set register 1 */
-#define PIC32MX_INT_IPC1INV_OFFSET 0x00ac /* Interrupt priority control invert register 1 */
-#define PIC32MX_INT_IPC2_OFFSET 0x00b0 /* Interrupt priority control register 2 */
-#define PIC32MX_INT_IPC2CLR_OFFSET 0x00b4 /* Interrupt priority control clear register 2 */
-#define PIC32MX_INT_IPC2SET_OFFSET 0x00b8 /* Interrupt priority control set register 2 */
-#define PIC32MX_INT_IPC2INV_OFFSET 0x00bc /* Interrupt priority control invert register 2 */
-#define PIC32MX_INT_IPC3_OFFSET 0x00c0 /* Interrupt priority control register 3 */
-#define PIC32MX_INT_IPC3CLR_OFFSET 0x00c4 /* Interrupt priority control clear register 3 */
-#define PIC32MX_INT_IPC3SET_OFFSET 0x00c8 /* Interrupt priority control set register 3 */
-#define PIC32MX_INT_IPC3INV_OFFSET 0x00cc /* Interrupt priority control invert register 3 */
-#define PIC32MX_INT_IPC4_OFFSET 0x00d0 /* Interrupt priority control register 4 */
-#define PIC32MX_INT_IPC4CLR_OFFSET 0x00d4 /* Interrupt priority control clear register 4 */
-#define PIC32MX_INT_IPC4SET_OFFSET 0x00d8 /* Interrupt priority control set register 4 */
-#define PIC32MX_INT_IPC4INV_OFFSET 0x00dc /* Interrupt priority control invert register 4 */
-#define PIC32MX_INT_IPC5_OFFSET 0x00e0 /* Interrupt priority control register 5 */
-#define PIC32MX_INT_IPC5CLR_OFFSET 0x00e4 /* Interrupt priority control clear register 5 */
-#define PIC32MX_INT_IPC5SET_OFFSET 0x00e8 /* Interrupt priority control set register 5 */
-#define PIC32MX_INT_IPC5INV_OFFSET 0x00ec /* Interrupt priority control invert register 5 */
-#define PIC32MX_INT_IPC6_OFFSET 0x00f0 /* Interrupt priority control register 6 */
-#define PIC32MX_INT_IPC6CLR_OFFSET 0x00f4 /* Interrupt priority control clear register 6 */
-#define PIC32MX_INT_IPC6SET_OFFSET 0x00f8 /* Interrupt priority control set register 6 */
-#define PIC32MX_INT_IPC6INV_OFFSET 0x00fc /* Interrupt priority control invert register 6 */
-#define PIC32MX_INT_IPC7_OFFSET 0x0100 /* Interrupt priority control register 7 */
-#define PIC32MX_INT_IPC7CLR_OFFSET 0x0104 /* Interrupt priority control clear register 7 */
-#define PIC32MX_INT_IPC7SET_OFFSET 0x0108 /* Interrupt priority control set register 7 */
-#define PIC32MX_INT_IPC7INV_OFFSET 0x010c /* Interrupt priority control invert register 7 */
-#define PIC32MX_INT_IPC8_OFFSET 0x0110 /* Interrupt priority control register 8 */
-#define PIC32MX_INT_IPC8CLR_OFFSET 0x0114 /* Interrupt priority control clear register 8 */
-#define PIC32MX_INT_IPC8SET_OFFSET 0x0118 /* Interrupt priority control set register 8 */
-#define PIC32MX_INT_IPC8INV_OFFSET 0x011c /* Interrupt priority control invert register 8 */
-#define PIC32MX_INT_IPC9_OFFSET 0x0120 /* Interrupt priority control register 9 */
-#define PIC32MX_INT_IPC9CLR_OFFSET 0x0124 /* Interrupt priority control clear register 9 */
-#define PIC32MX_INT_IPC9SET_OFFSET 0x0128 /* Interrupt priority control set register 9 */
-#define PIC32MX_INT_IPC9INV_OFFSET 0x012c /* Interrupt priority control invert register 9 */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IPC10_OFFSET 0x0130 /* Interrupt priority control register 10 */
-# define PIC32MX_INT_IPC10CLR_OFFSET 0x0134 /* Interrupt priority control clear register 10 */
-# define PIC32MX_INT_IPC10SET_OFFSET 0x0138 /* Interrupt priority control set register 10 */
-# define PIC32MX_INT_IPC10INV_OFFSET 0x013c /* Interrupt priority control invert register 10 */
-#endif
-#define PIC32MX_INT_IPC11_OFFSET 0x0140 /* Interrupt priority control register 11 */
-#define PIC32MX_INT_IPC11CLR_OFFSET 0x0144 /* Interrupt priority control clear register 11 */
-#define PIC32MX_INT_IPC11SET_OFFSET 0x0148 /* Interrupt priority control set register 11 */
-#define PIC32MX_INT_IPC11INV_OFFSET 0x014c /* Interrupt priority control invert register 11 */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IPC12_OFFSET 0x0150 /* Interrupt priority control register 12 */
-# define PIC32MX_INT_IPC12CLR_OFFSET 0x0154 /* Interrupt priority control clear register 12 */
-# define PIC32MX_INT_IPC12SET_OFFSET 0x0158 /* Interrupt priority control set register 12 */
-# define PIC32MX_INT_IPC12INV_OFFSET 0x015c /* Interrupt priority control invert register 12 */
-#endif
-
-/* Register Addresses *******************************************************/
-
-#define PIC32MX_INT_INTCON (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCON_OFFSET)
-#define PIC32MX_INT_INTCONCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONCLR_OFFSET)
-#define PIC32MX_INT_INTCONSET (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONSET_OFFSET)
-#define PIC32MX_INT_INTCONINV (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONINV_OFFSET)
-#define PIC32MX_INT_INTSTAT (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTAT_OFFSET)
-#define PIC32MX_INT_INTSTATCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATCLR_OFFSET)
-#define PIC32MX_INT_INTSTATSET (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATSET_OFFSET)
-#define PIC32MX_INT_INTSTATINV (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATINV_OFFSET)
-#define PIC32MX_INT_TPTMR (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMR_OFFSET)
-#define PIC32MX_INT_TPTMRCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRCLR_OFFSET)
-#define PIC32MX_INT_TPTMRSET (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRSET_OFFSET)
-#define PIC32MX_INT_TPTMRINV (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRINV_OFFSET)
-#define PIC32MX_INT_IFS(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS_OFFSET(n))
-#define PIC32MX_INT_IFSCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSCLR_OFFSET(n))
-#define PIC32MX_INT_IFSSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSSET_OFFSET(n))
-#define PIC32MX_INT_IFSINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSINV_OFFSET(n))
-#define PIC32MX_INT_IFS0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0_OFFSET)
-#define PIC32MX_INT_IFS0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0CLR_OFFSET)
-#define PIC32MX_INT_IFS0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0SET_OFFSET)
-#define PIC32MX_INT_IFS0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0INV_OFFSET)
-#define PIC32MX_INT_IFS1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1_OFFSET)
-#define PIC32MX_INT_IFS1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1CLR_OFFSET)
-#define PIC32MX_INT_IFS1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1SET_OFFSET)
-#define PIC32MX_INT_IFS1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1INV_OFFSET)
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IFS2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2_OFFSET)
-# define PIC32MX_INT_IFS2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2CLR_OFFSET)
-# define PIC32MX_INT_IFS2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2SET_OFFSET)
-# define PIC32MX_INT_IFS2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2INV_OFFSET)
-#endif
-#define PIC32MX_INT_IEC(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC_OFFSET(n))
-#define PIC32MX_INT_IECCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECCLR_OFFSET(n))
-#define PIC32MX_INT_IECSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECSET_OFFSET(n))
-#define PIC32MX_INT_IECINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECINV_OFFSET(n))
-#define PIC32MX_INT_IEC0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0_OFFSET)
-#define PIC32MX_INT_IEC0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0CLR_OFFSET)
-#define PIC32MX_INT_IEC0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0SET_OFFSET)
-#define PIC32MX_INT_IEC0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0_OFFSET)
-#define PIC32MX_INT_IEC1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1_OFFSET)
-#define PIC32MX_INT_IEC1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1CLR_OFFSET)
-#define PIC32MX_INT_IEC1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1SET_OFFSET)
-#define PIC32MX_INT_IEC1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1INV_OFFSET)
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IEC2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2_OFFSET)
-# define PIC32MX_INT_IEC2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2CLR_OFFSET)
-# define PIC32MX_INT_IEC2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2SET_OFFSET)
-# define PIC32MX_INT_IEC2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2INV_OFFSET)
-#endif
-#define PIC32MX_INT_IPC(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC_OFFSET(n))
-#define PIC32MX_INT_IPCCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCCLR_OFFSET(n))
-#define PIC32MX_INT_IPCSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCSET_OFFSET(n))
-#define PIC32MX_INT_IPCINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCINV_OFFSET(n))
-#define PIC32MX_INT_IPC0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0_OFFSET)
-#define PIC32MX_INT_IPC0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0CLR_OFFSET)
-#define PIC32MX_INT_IPC0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0SET_OFFSET)
-#define PIC32MX_INT_IPC0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0INV_OFFSET)
-#define PIC32MX_INT_IPC1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1_OFFSET)
-#define PIC32MX_INT_IPC1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1CLR_OFFSET)
-#define PIC32MX_INT_IPC1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1SET_OFFSET)
-#define PIC32MX_INT_IPC1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1INV_OFFSET)
-#define PIC32MX_INT_IPC2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2_OFFSET)
-#define PIC32MX_INT_IPC2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2CLR_OFFSET)
-#define PIC32MX_INT_IPC2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2SET_OFFSET)
-#define PIC32MX_INT_IPC2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2INV_OFFSET)
-#define PIC32MX_INT_IPC3 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3_OFFSET)
-#define PIC32MX_INT_IPC3CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3CLR_OFFSET)
-#define PIC32MX_INT_IPC3SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3SET_OFFSET)
-#define PIC32MX_INT_IPC3INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3INV_OFFSET)
-#define PIC32MX_INT_IPC4 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4_OFFSET)
-#define PIC32MX_INT_IPC4CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4CLR_OFFSET)
-#define PIC32MX_INT_IPC4SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4SET_OFFSET)
-#define PIC32MX_INT_IPC4INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4INV_OFFSET)
-#define PIC32MX_INT_IPC5 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5_OFFSET)
-#define PIC32MX_INT_IPC5CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5CLR_OFFSET)
-#define PIC32MX_INT_IPC5SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5SET_OFFSET)
-#define PIC32MX_INT_IPC5INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5INV_OFFSET)
-#define PIC32MX_INT_IPC6 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6_OFFSET)
-#define PIC32MX_INT_IPC6CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6CLR_OFFSET)
-#define PIC32MX_INT_IPC6SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6SET_OFFSET)
-#define PIC32MX_INT_IPC6INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6INV_OFFSET)
-#define PIC32MX_INT_IPC7 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7_OFFSET)
-#define PIC32MX_INT_IPC7CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7CLR_OFFSET)
-#define PIC32MX_INT_IPC7SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7SET_OFFSET)
-#define PIC32MX_INT_IPC7INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7INV_OFFSET)
-#define PIC32MX_INT_IPC8 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8_OFFSET)
-#define PIC32MX_INT_IPC8CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8CLR_OFFSET)
-#define PIC32MX_INT_IPC8SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8SET_OFFSET)
-#define PIC32MX_INT_IPC8INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8INV_OFFSET)
-#define PIC32MX_INT_IPC9 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9_OFFSET)
-#define PIC32MX_INT_IPC9CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9CLR_OFFSET)
-#define PIC32MX_INT_IPC9SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9SET_OFFSET)
-#define PIC32MX_INT_IPC9INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9INV_OFFSET)
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IPC10 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10_OFFSET)
-# define PIC32MX_INT_IPC10CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10CLR_OFFSET)
-# define PIC32MX_INT_IPC10SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10SET_OFFSET)
-# define PIC32MX_INT_IPC10INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10INV_OFFSET)
-#endif
-#define PIC32MX_INT_IPC11 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11_OFFSET)
-#define PIC32MX_INT_IPC11CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11CLR_OFFSET)
-#define PIC32MX_INT_IPC11SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11SET_OFFSET)
-#define PIC32MX_INT_IPC11INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11INV_OFFSET)
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define PIC32MX_INT_IPC12 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12_OFFSET)
-# define PIC32MX_INT_IPC12CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12CLR_OFFSET)
-# define PIC32MX_INT_IPC12SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12SET_OFFSET)
-# define PIC32MX_INT_IPC12INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12INV_OFFSET)
-#endif
-
-/* Register Bit-Field Definitions *******************************************/
-
-/* Interrupt control register */
-
-#define INT_INTCON_INT0EP (1 << 0) /* Bit 0: External interrupt 0 edge polarity control */
-#define INT_INTCON_INT1EP (1 << 1) /* Bit 1: External interrupt 1 edge polarity control */
-#define INT_INTCON_INT2EP (1 << 2) /* Bit 2: External interrupt 2 edge polarity control */
-#define INT_INTCON_INT3EP (1 << 3) /* Bit 3: External interrupt 3 edge polarity control */
-#define INT_INTCON_INT4EP (1 << 4) /* Bit 4: External interrupt 4 edge polarity control */
-#define INT_INTCON_TPC_SHIFT (8) /* Bits 8-10: Temporal proximity control */
-#define INT_INTCON_TPC_MASK (7 << INT_INTCON_TPC_SHIFT)
-# define INT_INTCON_TPC_DIS (0 << INT_INTCON_TPC_SHIFT) /* Disables proximity timer */
-# define INT_INTCON_TPC_PRIO1 (1 << INT_INTCON_TPC_SHIFT) /* Int group priority 1 start IP timer */
-# define INT_INTCON_TPC_PRIO2 (2 << INT_INTCON_TPC_SHIFT) /* Int group priority <=2 start TP timer */
-# define INT_INTCON_TPC_PRIO3 (3 << INT_INTCON_TPC_SHIFT) /* Int group priority <=3 start TP timer */
-# define INT_INTCON_TPC_PRIO4 (4 << INT_INTCON_TPC_SHIFT) /* Int group priority <=4 start TP timer */
-# define INT_INTCON_TPC_PRIO5 (5 << INT_INTCON_TPC_SHIFT) /* Int group priority <=5 start TP timer */
-# define INT_INTCON_TPC_PRIO6 (6 << INT_INTCON_TPC_SHIFT) /* Int group priority <=6 start TP timer */
-# define INT_INTCON_TPC_PRIO7 (7 << INT_INTCON_TPC_SHIFT) /* Int group priority <=7 start TP timer */
-#define INT_INTCON_MVEC (1 << 12) /* Bit 12: Multi vector configuration */
-#define INT_INTCON_FRZ (1 << 14) /* Bit 14: Freeze in debug exception mode */
-#define INT_INTCON_SS0 (1 << 16) /* Bit 16: Single vector shadow register set */
-
-/* Interrupt status register */
-
-#define INT_INTSTAT_VEC_SHIFT (0) /* Bits 0-5: Interrupt vector */
-#define INT_INTSTAT_VEC_MASK (0x3f << INT_INTSTAT_VEC_SHIFT)
-#define INT_INTSTAT_RIPL_SHIFT (8) /* Bits 8-10: Requested priority level */
-#define INT_INTSTAT_RIPL_MASK (7 << INT_INTSTAT_RIPL_SHIFT)
-
-/* Temporal proximity timer register -- This register contains a 32-bit value
- * with no field definitions.
- */
-
-/* Interrupt flag status register 0 and Interrupt enable control register 0 */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define INT_CT (1 << 0) /* Vector: 0, Core Timer Interrupt */
-# define INT_CS0 (1 << 1) /* Vector: 1, Core Software Interrupt 0 */
-# define INT_CS1 (1 << 2) /* Vector: 2, Core Software Interrupt 1 */
-# define INT_INT0 (1 << 3) /* Vector: 3, External Interrupt 0 */
-# define INT_T1 (1 << 4) /* Vector: 4, Timer 1 */
-# define INT_IC1 (1 << 5) /* Vector: 5, Input Capture 1 */
-# define INT_OC1 (1 << 6) /* Vector: 6, Output Compare 1 */
-# define INT_INT1 (1 << 7) /* Vector: 7, External Interrupt 1 */
-# define INT_T2 (1 << 8) /* Vector: 8, Timer 2 */
-# define INT_IC2 (1 << 9) /* Vector: 9, Input Capture 2 */
-# define INT_OC2 (1 << 10) /* Vector: 10, Output Compare 2 */
-# define INT_INT2 (1 << 11) /* Vector: 11, External Interrupt 2 */
-# define INT_T3 (1 << 12) /* Vector: 12, Timer 3 */
-# define INT_IC3 (1 << 13) /* Vector: 13, Input Capture 3 */
-# define INT_OC3 (1 << 14) /* Vector: 14, Output Compare 3 */
-# define INT_INT3 (1 << 15) /* Vector: 15, External Interrupt 3 */
-# define INT_T4 (1 << 16) /* Vector: 16, Timer 4 */
-# define INT_IC4 (1 << 17) /* Vector: 17, Input Capture 4 */
-# define INT_OC4 (1 << 18) /* Vector: 18, Output Compare 4 */
-# define INT_INT4 (1 << 19) /* Vector: 19, External Interrupt 4 */
-# define INT_T5 (1 << 20) /* Vector: 20, Timer 5 */
-# define INT_IC5 (1 << 21) /* Vector: 21, Input Capture 5 */
-# define INT_OC5 (1 << 22) /* Vector: 22, Output Compare 5 */
-# define INT_SPI1E (1 << 23) /* Vector: 23, SPI1 Error */
-# define INT_SPI1TX (1 << 24) /* Vector: 23, " " Transfer done */
-# define INT_SPI1RX (1 << 25) /* Vector: 23, " " Receive done */
-# define INT_U1E (1 << 26) /* Vector: 24, UART1 Error */
-# define INT_U1RX (1 << 27) /* Vector: 24, " " Receiver */
-# define INT_U1TX (1 << 28) /* Vector: 24, " " Transmitter */
-# define INT_I2C1B (1 << 29) /* Vector: 25, I2C1 Bus collision event */
-# define INT_I2C1S (1 << 30) /* Vector: 25, " " Slave event */
-# define INT_I2C1M (1 << 31) /* Vector: 25, " " Master event */
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define INT_CT (1 << 0) /* Vector: 0, Core Timer Interrupt */
-# define INT_CS0 (1 << 1) /* Vector: 1, Core Software Interrupt 0 */
-# define INT_CS1 (1 << 2) /* Vector: 2, Core Software Interrupt 1 */
-# define INT_INT0 (1 << 3) /* Vector: 3, External Interrupt 0 */
-# define INT_T1 (1 << 4) /* Vector: 4, Timer 1 */
-# define INT_IC1 (1 << 5) /* Vector: 5, Input Capture 1 */
-# define INT_OC1 (1 << 6) /* Vector: 6, Output Compare 1 */
-# define INT_INT1 (1 << 7) /* Vector: 7, External Interrupt 1 */
-# define INT_T2 (1 << 8) /* Vector: 8, Timer 2 */
-# define INT_IC2 (1 << 9) /* Vector: 9, Input Capture 2 */
-# define INT_OC2 (1 << 10) /* Vector: 10, Output Compare 2 */
-# define INT_INT2 (1 << 11) /* Vector: 11, External Interrupt 2 */
-# define INT_T3 (1 << 12) /* Vector: 12, Timer 3 */
-# define INT_IC3 (1 << 13) /* Vector: 13, Input Capture 3 */
-# define INT_OC3 (1 << 14) /* Vector: 14, Output Compare 3 */
-# define INT_INT3 (1 << 15) /* Vector: 15, External Interrupt 3 */
-# define INT_T4 (1 << 16) /* Vector: 16, Timer 4 */
-# define INT_IC4 (1 << 17) /* Vector: 17, Input Capture 4 */
-# define INT_OC4 (1 << 18) /* Vector: 18, Output Compare 4 */
-# define INT_INT4 (1 << 19) /* Vector: 19, External Interrupt 4 */
-# define INT_T5 (1 << 20) /* Vector: 20, Timer 5 */
-# define INT_IC5 (1 << 21) /* Vector: 21, Input Capture 5 */
-# define INT_OC5 (1 << 22) /* Vector: 22, Output Compare 5 */
-# define INT_SPI1E (1 << 23) /* Vector: 23, SPI1 Error */
-# define INT_SPI1TX (1 << 24) /* Vector: 23, " " Transfer done */
-# define INT_SPI1RX (1 << 25) /* Vector: 23, " " Receive done */
-# define INT_26 (1 << 26) /* Vector: 24, UART1, SPI3, I2C3 */
-# define INT_U1E (1 << 26) /* Vector: 24, UART1 Error */
-# define INT_SPI3E (1 << 26) /* Vector: 24, SPI3 Fault */
-# define INT_I2C3B (1 << 26) /* Vector: 24, I2C3 Bus collision event */
-# define INT_27 (1 << 27) /* Vector: 24, UART1, SPI3, I2C3 */
-# define INT_U1RX (1 << 27) /* Vector: 24, UART1 Receiver */
-# define INT_SPI3RX (1 << 27) /* Vector: 24, SPI3 Receive done */
-# define INT_I2C3S (1 << 27) /* Vector: 24, I2C3 Slave event */
-# define INT_28 (1 << 28) /* Vector: 24, UART1, SPI3, I2C3 */
-# define INT_U1TX (1 << 28) /* Vector: 24, UART1 Transmitter */
-# define INT_SPI3TX (1 << 28) /* Vector: 24, SPI3 Transfer done */
-# define INT_I2C3M (1 << 28) /* Vector: 24, I2C3 Master event */
-# define INT_I2C1B (1 << 29) /* Vector: 25, I2C1 Bus collision event */
-# define INT_I2C1S (1 << 30) /* Vector: 25, " " Slave event */
-# define INT_I2C1M (1 << 31) /* Vector: 25, " " Master event */
-
-#else
-# error "Unknown PIC32MX family
-#endif
-
-/* Interrupt flag status register 1 and Interrupt enable control register 1 */
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define INT_CN (1 << 0) /* Vector: 26, Input Change Interrupt */
-# define INT_AD1 (1 << 1) /* Vector: 27, ADC1 Convert Done */
-# define INT_PMP (1 << 2) /* Vector: 28, Parallel Master Port */
-# define INT_CMP1 (1 << 3) /* Vector: 29, Comparator Interrupt */
-# define INT_CMP2 (1 << 4) /* Vector: 30, Comparator Interrupt */
-# define INT_SPI2E (1 << 5) /* Vector: 31, SPI2 Error */
-# define INT_SPI2TX (1 << 6) /* Vector: 31, " " Transfer done */
-# define INT_SPI2RX (1 << 7) /* Vector: 31, " " Receive done*/
-# define INT_U2E (1 << 8) /* Vector: 32, UART2 Error */
-# define INT_U2RX (1 << 9) /* Vector: 32, " " Receiver */
-# define INT_U2TX (1 << 10) /* Vector: 32, " " Transmitter */
-# define INT_I2C2B (1 << 11) /* Vector: 33, I2C2 Bus collision event */
-# define INT_I2C2S (1 << 12) /* Vector: 33, " " Master event */
-# define INT_I2C2M (1 << 13) /* Vector: 33, " " Slave event */
-# define INT_FSCM (1 << 14) /* Vector: 34, Fail-Safe Clock Monitor */
-# define INT_RTCC (1 << 15) /* Vector: 35, Real-Time Clock and Calendar */
-# define INT_DMA0 (1 << 16) /* Vector: 36, DMA Channel 0 */
-# define INT_DMA1 (1 << 17) /* Vector: 37, DMA Channel 1 */
-# define INT_DMA2 (1 << 18) /* Vector: 38, DMA Channel 2 */
-# define INT_DMA3 (1 << 19) /* Vector: 39, DMA Channel 3 */
-# define INT_FCE (1 << 24) /* Vector: 44, Flash Control Event */
-# define INT_USB (1 << 25) /* Vector: 45, USB Interrupt */
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define INT_CN (1 << 0) /* Vector: 26, Input Change Interrupt */
-# define INT_AD1 (1 << 1) /* Vector: 27, ADC1 Convert Done */
-# define INT_PMP (1 << 2) /* Vector: 28, Parallel Master Port */
-# define INT_CMP1 (1 << 3) /* Vector: 29, Comparator Interrupt */
-# define INT_CMP2 (1 << 4) /* Vector: 30, Comparator Interrupt */
-# define INT_37 (1 << 5) /* Vector: 31, UART3, SPI2, I2C4 */
-# define INT_U3E (1 << 5) /* Vector: 31, UART3 Error */
-# define INT_SPI2E (1 << 5) /* Vector: 31, SPI2 Fault */
-# define INT_I2C4B (1 << 5) /* Vector: 31, I2C4 Bus collision event */
-# define INT_38 (1 << 6) /* Vector: 31, UART3, SPI2, I2C4 */
-# define INT_U3RX (1 << 6) /* Vector: 31, UART3 Receiver */
-# define INT_SPI2RX (1 << 6) /* Vector: 31, SPI2 Receive done */
-# define INT_I2C4S (1 << 6) /* Vector: 31, I2C4 Slave event */
-# define INT_39 (1 << 7) /* Vector: 31, UART3, SPI2, I2C4 */
-# define INT_U3TX (1 << 7) /* Vector: 31, UART3 Transmitter */
-# define INT_SPI2TX (1 << 7) /* Vector: 31, SPI2 Transfer done */
-# define INT_I2C4M (1 << 7) /* Vector: 31, I2C4 Master event */
-# define INT_40 (1 << 8) /* Vector: 32, UART2, SPI4, I2C5 */
-# define INT_U2E (1 << 8) /* Vector: 32, UART2 Error */
-# define INT_SPI4E (1 << 8) /* Vector: 32, SPI4 Fault */
-# define INT_I2C5B (1 << 8) /* Vector: 32, I2C5 Bus collision event */
-# define INT_41 (1 << 9) /* Vector: 32, UART2, SPI4, I2C5 */
-# define INT_U2RX (1 << 9) /* Vector: 32, UART2 Receiver */
-# define INT_SPI4RX (1 << 9) /* Vector: 32, SPI4 Receive done */
-# define INT_I2C5S (1 << 9) /* Vector: 32, I2C5 Slave event */
-# define INT_42 (1 << 10) /* Vector: 32, UART2, SPI4, I2C5 */
-# define INT_U2TX (1 << 10) /* Vector: 32, UART2 Transmitter */
-# define INT_SPI4TX (1 << 10) /* Vector: 32, SPI4 Transfer done */
-# define INT_I2C5M (1 << 10) /* Vector: 32, I2C5 Master event */
-# define INT_I2C2B (1 << 11) /* Vector: 33, I2C2 Bus collision event */
-# define INT_I2C2S (1 << 12) /* Vector: 33, " " Master event */
-# define INT_I2C2M (1 << 13) /* Vector: 33, " " Slave event */
-# define INT_FSCM (1 << 14) /* Vector: 34, Fail-Safe Clock Monitor */
-# define INT_RTCC (1 << 15) /* Vector: 35, Real-Time Clock and Calendar */
-# define INT_DMA0 (1 << 16) /* Vector: 36, DMA Channel 0 */
-# define INT_DMA1 (1 << 17) /* Vector: 37, DMA Channel 1 */
-# define INT_DMA2 (1 << 18) /* Vector: 38, DMA Channel 2 */
-# define INT_DMA3 (1 << 19) /* Vector: 39, DMA Channel 3 */
-# define INT_DMA4 (1 << 20) /* Vector: 40, DMA Channel 3 */
-# define INT_DMA5 (1 << 21) /* Vector: 41, DMA Channel 3 */
-# define INT_DMA6 (1 << 22) /* Vector: 42, DMA Channel 3 */
-# define INT_DMA7 (1 << 23) /* Vector: 43, DMA Channel 3 */
-# define INT_FCE (1 << 24) /* Vector: 44, Flash Control Event */
-# define INT_USB (1 << 25) /* Vector: 45, USB Interrupt */
-# define INT_CAN1 (1 << 26) /* Vector: 46, Control Area Network 1 */
-# define INT_CAN2 (1 << 27) /* Vector: 47, Control Area Network 2 */
-# define INT_ETH (1 << 28) /* Vector: 48, Ethernet interrupt */
-# define INT_IC1E (1 << 29) /* Vector: 5, Input capture 1 error */
-# define INT_IC2E (1 << 30) /* Vector: 9, Input capture 1 error */
-# define INT_IC3E (1 << 31) /* Vector: 13, Input capture 1 error */
-
-#else
-# error "Unknown PIC32MX family
-#endif
-
-/* Interrupt flag status register 2 and Interrupt enable control register 2 */
-
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define INT_IC4E (1 << 0) /* Vector: 17, Input capture 1 error */
-# define INT_IC5E (1 << 1) /* Vector: 21, Input capture 1 error */
-# define INT_PMPE (1 << 2) /* Vector: 28, Parallel master port error */
-# define INT_U4E (1 << 3) /* Vector: 49, UART4 Error */
-# define INT_U4RX (1 << 4) /* Vector: 49, UART4 Receiver */
-# define INT_U4TX (1 << 5) /* Vector: 49, UART4 Transmitter */
-# define INT_U6E (1 << 6) /* Vector: 50, UART6 Error */
-# define INT_U6RX (1 << 7) /* Vector: 50, UART6 Receiver */
-# define INT_U6TX (1 << 8) /* Vector: 50, UART6 Transmitter */
-# define INT_U5E (1 << 9) /* Vector: 51, UART5 Error */
-# define INT_U5RX (1 << 10) /* Vector: 51, UART5 Receiver */
-# define INT_U5TX (1 << 11) /* Vector: 51, UART5 Transmitter */
-
-#endif
-
-/* Interrupt priority control register 0-11 */
-
-#define INT_ICP_DISABLED 0 /* Disabled! */
-#define INT_ICP_MIN_PRIORITY 1 /* Minimum (enabled) priority */
-#define INT_ICP_MID_PRIORITY 4 /* Can be used as the default */
-#define INT_ICP_MAX_PRIORITY 7 /* Maximum priority */
-#define INT_ICP_MIN_SUBPRIORITY 0 /* Minimum sub-priority */
-#define INT_ICP_MAX_SUBPRIORITY 0 /* Maximum sub-priority */
-
-#define INT_IPC0_CTIS_SHIFT (0) /* Bits 0-1, Vector: 0, Core Timer Interrupt */
-#define INT_IPC0_CTIS_MASK (3 << INT_IPC0_CTIS_SHIFT)
-#define INT_IPC0_CTIP_SHIFT (2) /* Bits 2-4, Vector: 0, Core Timer Interrupt */
-#define INT_IPC0_CTIP_MASK (7 << INT_IPC0_CTIP_SHIFT)
-#define INT_IPC0_CS0IS_SHIFT (8) /* Bits 8-9, Vector: 1, Core Software Interrupt 0 */
-#define INT_IPC0_CS0IS_MASK (3 << INT_IPC0_CS0IS_SHIFT)
-#define INT_IPC0_CS0IP_SHIFT (10) /* Bits 10-12, Vector: 1, Core Software Interrupt 0 */
-#define INT_IPC0_CS0IP_MASK (7 << INT_IPC0_CS0IP_SHIFT)
-#define INT_IPC0_CS1IS_SHIFT (16) /* Bits 16-17, Vector: 2, Core Software Interrupt 1 */
-#define INT_IPC0_CS1IS_MASK (3 << INT_IPC0_CS1IS_SHIFT)
-#define INT_IPC0_CS1IP_SHIFT (18) /* Bits 18-20, Vector: 2, Core Software Interrupt 1 */
-#define INT_IPC0_CS1IP_MASK (7 << INT_IPC0_CS1IP_SHIFT)
-#define INT_IPC0_INT0IS_SHIFT (24) /* Bits 24-25, Vector: 3, External Interrupt 0 */
-#define INT_IPC0_INT0IS_MASK (3 << INT_IPC0_INT0IS_SHIFT)
-#define INT_IPC0_INT0IP_SHIFT (26) /* Bits 26-28, Vector: 3, External Interrupt 0 */
-#define INT_IPC0_INT0IP_MASK (7 << INT_IPC0_INT0IP_SHIFT)
-
-#define INT_IPC1_T1IS_SHIFT (0) /* Bits 0-1, Vector: 4, Timer 1 */
-#define INT_IPC1_T1IS_MASK (3 << INT_IPC1_T1IS_SHIFT)
-#define INT_IPC1_T1IP_SHIFT (2) /* Bits 2-4, Vector: 4, Timer 1 */
-#define INT_IPC1_T1IP_MASK (7 << INT_IPC1_T1IP_SHIFT)
-#define INT_IPC1_IC1IS_SHIFT (8) /* Bits 8-9, Vector: 5, Input Capture 1 */
-#define INT_IPC1_IC1IS_MASK (3 << INT_IPC1_IC1IS_SHIFT)
-#define INT_IPC1_IC1IP_SHIFT (10) /* Bits 10-12, Vector: 5, Input Capture 1 */
-#define INT_IPC1_IC1IP_MASK (7 << INT_IPC1_IC1IP_SHIFT)
-#define INT_IPC1_OC1IS_SHIFT (16) /* Bits 16-17, Vector: 6, Output Compare 1 */
-#define INT_IPC1_OC1IS_MASK (3 << INT_IPC1_OC1IS_SHIFT)
-#define INT_IPC1_OC1IP_SHIFT (18) /* Bits 18-20, Vector: 6, Output Compare 1 */
-#define INT_IPC1_OC1IP_MASK (7 << INT_IPC1_OC1IP_SHIFT)
-#define INT_IPC1_INT1IS_SHIFT (24) /* Bits 24-25, Vector: 7, External Interrupt 1 */
-#define INT_IPC1_INT1IS_MASK (3 << INT_IPC1_INT1IS_SHIFT)
-#define INT_IPC1_INT1IP_SHIFT (26) /* Bits 26-28, Vector: 7, External Interrupt 1 */
-#define INT_IPC1_INT1IP_MASK (7 << INT_IPC1_INT1IP_SHIFT)
-
-#define INT_IPC2_T2IS_SHIFT (0) /* Bits 0-1, Vector: 8, Timer 2 */
-#define INT_IPC2_T2IS_MASK (3 << INT_IPC2_T2IS_SHIFT)
-#define INT_IPC2_T2IP_SHIFT (2) /* Bits 2-4, Vector: 8, Timer 2 */
-#define INT_IPC2_T2IP_MASK (7 << INT_IPC2_T2IP_SHIFT)
-#define INT_IPC2_IC2IS_SHIFT (8) /* Bits 8-9, Vector: 9, Input Capture 2 */
-#define INT_IPC2_IC2IS_MASK (3 << INT_IPC2_IC2IS_SHIFT)
-#define INT_IPC2_IC2IP_SHIFT (10) /* Bits 10-12, Vector: 9, Input Capture 2 */
-#define INT_IPC2_IC2IP_MASK (7 << INT_IPC2_IC2IP_SHIFT)
-#define INT_IPC2_OC2IS_SHIFT (16) /* Bits 16-17, Vector: 10, Output Compare 2 */
-#define INT_IPC2_OC2IS_MASK (3 << INT_IPC2_OC2IS_SHIFT)
-#define INT_IPC2_OC2IP_SHIFT (18) /* Bits 18-20, Vector: 10, Output Compare 2 */
-#define INT_IPC2_OC2IP_MASK (7 << INT_IPC2_OC2IP_SHIFT)
-#define INT_IPC2_INT2IS_SHIFT (24) /* Bits 24-25, Vector: 11, External Interrupt 2 */
-#define INT_IPC2_INT2IS_MASK (3 << INT_IPC2_INT2IS_SHIFT)
-#define INT_IPC2_INT2IP_SHIFT (26) /* Bits 26-28, Vector: 11, External Interrupt 2 */
-#define INT_IPC2_INT2IP_MASK (7 << INT_IPC2_INT2IP_SHIFT)
-
-#define INT_IPC3_T3IS_SHIFT (0) /* Bits 0-1, Vector: 12, Timer 3 */
-#define INT_IPC3_T3IS_MASK (3 << INT_IPC3_T3IS_SHIFT)
-#define INT_IPC3_T3IP_SHIFT (2) /* Bits 2-4, Vector: 12, Timer 3 */
-#define INT_IPC3_T3IP_MASK (7 << INT_IPC3_T3IP_SHIFT)
-#define INT_IPC3_IC3IS_SHIFT (8) /* Bits 8-9, Vector: 13, Input Capture 3 */
-#define INT_IPC3_IC3IS_MASK (3 << INT_IPC3_IC3IS_SHIFT)
-#define INT_IPC3_IC3IP_SHIFT (10) /* Bits 10-12, Vector: 13, Input Capture 3 */
-#define INT_IPC3_IC3IP_MASK (7 << INT_IPC3_IC3IP_SHIFT)
-#define INT_IPC3_OC3IS_SHIFT (16) /* Bits 16-17, Vector: 14, Output Compare 3 */
-#define INT_IPC3_OC3IS_MASK (3 << INT_IPC3_OC3IS_SHIFT)
-#define INT_IPC3_OC3IP_SHIFT (18) /* Bits 18-20, Vector: 14, Output Compare 3 */
-#define INT_IPC3_OC3IP_MASK (7 << INT_IPC3_OC3IP_SHIFT)
-#define INT_IPC3_INT3IS_SHIFT (24) /* Bits 24-25, Vector: 15, External Interrupt 3 */
-#define INT_IPC3_INT3IS_MASK (3 << INT_IPC3_INT3IS_SHIFT)
-#define INT_IPC3_INT3IP_SHIFT (26) /* Bits 26-28, Vector: 15, External Interrupt 3 */
-#define INT_IPC3_INT3IP_MASK (7 << INT_IPC3_INT3IP_SHIFT)
-
-#define INT_IPC4_T4IS_SHIFT (0) /* Bits 0-1, Vector: 16, Timer 4 */
-#define INT_IPC4_T4IS_MASK (3 << INT_IPC4_T4IS_SHIFT)
-#define INT_IPC4_T4IP_SHIFT (2) /* Bits 2-4, Vector: 16, Timer 4 */
-#define INT_IPC4_T4IP_MASK (7 << INT_IPC4_T4IP_SHIFT)
-#define INT_IPC4_IC4IS_SHIFT (8) /* Bits 8-9, Vector: 17, Input Capture 4 */
-#define INT_IPC4_IC4IS_MASK (3 << INT_IPC4_IC4IS_SHIFT)
-#define INT_IPC4_IC4IP_SHIFT (10) /* Bits 10-12, Vector: 17, Input Capture 4 */
-#define INT_IPC4_IC4IP_MASK (7 << INT_IPC4_IC4IP_SHIFT)
-#define INT_IPC4_OC4IS_SHIFT (16) /* Bits 16-17, Vector: 18, Output Compare 4 */
-#define INT_IPC4_OC4IS_MASK (3 << INT_IPC4_OC4IS_SHIFT)
-#define INT_IPC4_OC4IP_SHIFT (18) /* Bits 18-20, Vector: 18, Output Compare 4 */
-#define INT_IPC4_OC4IP_MASK (7 << INT_IPC4_OC4IP_SHIFT)
-#define INT_IPC4_INT4IS_SHIFT (24) /* Bits 24-25, Vector: 19, External Interrupt 4 */
-#define INT_IPC4_INT4IS_MASK (3 << INT_IPC4_INT4IS_SHIFT)
-#define INT_IPC4_INT4IP_SHIFT (26) /* Bits 26-28, Vector: 19, External Interrupt 4 */
-#define INT_IPC4_INT4IP_MASK (7 << INT_IPC4_INT4IP_SHIFT)
-
-#define INT_IPC5_T5IS_SHIFT (0) /* Bits 0-1, Vector: 20, Timer 5 */
-#define INT_IPC5_T5IS_MASK (3 << INT_IPC5_T5IS_SHIFT)
-#define INT_IPC5_T5IP_SHIFT (2) /* Bits 2-4, Vector: 20, Timer 5 */
-#define INT_IPC5_T5IP_MASK (7 << INT_IPC5_T5IP_SHIFT)
-#define INT_IPC5_IC5IS_SHIFT (8) /* Bits 8-9, Vector: 21, Input Capture 5 */
-#define INT_IPC5_IC5IS_MASK (3 << INT_IPC5_IC5IS_SHIFT)
-#define INT_IPC5_IC5IP_SHIFT (10) /* Bits 10-12, Vector: 21, Input Capture 5 */
-#define INT_IPC5_IC5IP_MASK (7 << INT_IPC5_IC5IP_SHIFT)
-#define INT_IPC5_OC5IS_SHIFT (16) /* Bits 16-17, Vector: 22, Output Compare 5 */
-#define INT_IPC5_OC5IS_MASK (3 << INT_IPC5_OC5IS_SHIFT)
-#define INT_IPC5_OC5IP_SHIFT (18) /* Bits 18-20, Vector: 22, Output Compare 5 */
-#define INT_IPC5_OC5IP_MASK (7 << INT_IPC5_OC5IP_SHIFT)
-#define INT_IPC5_SPI1IS_SHIFT (24) /* Bits 24-25, Vector: 23, SPI1 */
-#define INT_IPC5_SPI1IS_MASK (3 << INT_IPC5_SPI1IS_SHIFT)
-#define INT_IPC5_SPI1IP_SHIFT (26) /* Bits 26-28, Vector: 23, SPI1 */
-#define INT_IPC5_SPI1IP_MASK (7 << INT_IPC5_SPI1IP_SHIFT)
-
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-
-# define INT_IPC6_U1IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1 */
-# define INT_IPC6_U1IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
-# define INT_IPC6_U1IP_SHIFT (2) /* Bits 2-4, Vector: 24, UART1 */
-# define INT_IPC6_U1IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
-# define INT_IPC6_I2C1IS_SHIFT (8) /* Bits 8-9, Vector: 25, I2C1 */
-# define INT_IPC6_I2C1IS_MASK (3 << INT_IPC6_I2C1IS_SHIFT)
-# define INT_IPC6_I2C1IP_SHIFT (10) /* Bits 10-12, Vector: 25, I2C1 */
-# define INT_IPC6_I2C1IP_MASK (7 << INT_IPC6_I2C1IP_SHIFT)
-# define INT_IPC6_CNIS_SHIFT (16) /* Bits 16-17, Vector: 26, Input Change Interrupt */
-# define INT_IPC6_CNIS_MASK (3 << INT_IPC6_CNIS_SHIFT)
-# define INT_IPC6_CNIP_SHIFT (18) /* Bits 18-20, Vector: 26, Input Change Interrupt */
-# define INT_IPC6_CNIP_MASK (7 << INT_IPC6_CNIP_SHIFT)
-# define INT_IPC6_AD1IS_SHIFT (24) /* Bits 24-25, Vector: 27, ADC1 Convert Done */
-# define INT_IPC6_AD1IS_MASK (3 << INT_IPC6_AD1IS_SHIFT)
-# define INT_IPC6_AD1IP_SHIFT (26) /* Bits 26-28, Vector: 27, ADC1 Convert Done */
-# define INT_IPC6_AD1IP_MASK (7 << INT_IPC6_AD1IP_SHIFT)
-
-# define INT_IPC7_PMPIS_SHIFT (0) /* Bits 0-1, Vector: 28, Parallel Master Port */
-# define INT_IPC7_PMPIS_MASK (3 << INT_IPC7_PMPIS_SHIFT)
-# define INT_IPC7_PMPIP_SHIFT (2) /* Bits 2-4, Vector: 28, Parallel Master Port */
-# define INT_IPC7_PMPIP_MASK (7 << INT_IPC7_PMPIP_SHIFT)
-# define INT_IPC7_CMP1IS_SHIFT (8) /* Bits 8-9, Vector: 29, Comparator Interrupt */
-# define INT_IPC7_CMP1IS_MASK (3 << INT_IPC7_CMP1IS_SHIFT)
-# define INT_IPC7_CMP1IP_SHIFT (10) /* Bits 10-12, Vector: 29, Comparator Interrupt */
-# define INT_IPC7_CMP1IP_MASK (7 << INT_IPC7_CMP1IP_SHIFT)
-# define INT_IPC7_CMP2IS_SHIFT (16) /* Bits 16-17, Vector: 30, Comparator Interrupt */
-# define INT_IPC7_CMP2IS_MASK (3 << INT_IPC7_CMP2IS_SHIFT)
-# define INT_IPC7_CMP2IP_SHIFT (18) /* Bits 18-20, Vector: 30, Comparator Interrupt */
-# define INT_IPC7_CMP2IP_MASK (7 << INT_IPC7_CMP2IP_SHIFT)
-# define INT_IPC7_SPI2IS_SHIFT (24) /* Bits 24-25, Vector: 31, SPI2 */
-# define INT_IPC7_SPI2IS_MASK (3 << INT_IPC7_SPI2IS_SHIFT)
-# define INT_IPC7_SPI2IP_SHIFT (26) /* Bits 26-28, Vector: 31, SPI2 */
-# define INT_IPC7_SPI2IP_MASK (7 << INT_IPC7_SPI2IP_SHIFT)
-
-# define INT_IPC8_U2IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2 */
-# define INT_IPC8_U2IS_MASK (3 << INT_IPC8_U2IS_SHIFT)
-# define INT_IPC8_U2IP_SHIFT (2) /* Bits 2-4, Vector: 32, UART2 */
-# define INT_IPC8_U2IP_MASK (7 << INT_IPC8_U2IP_SHIFT)
-# define INT_IPC8_I2C2IS_SHIFT (8) /* Bits 8-9, Vector: 33, I2C2 */
-# define INT_IPC8_I2C2IS_MASK (3 << INT_IPC8_I2C2IS_SHIFT)
-# define INT_IPC8_I2C2IP_SHIFT (10) /* Bits 10-12, Vector: 33, I2C2 */
-# define INT_IPC8_I2C2IP_MASK (7 << INT_IPC8_I2C2IP_SHIFT)
-# define INT_IPC8_FSCMIS_SHIFT (16) /* Bits 16-17, Vector: 34, Fail-Safe Clock Monitor */
-# define INT_IPC8_FSCMIS_MASK (3 << INT_IPC8_FSCMIS_SHIFT)
-# define INT_IPC8_FSCMIP_SHIFT (18) /* Bits 18-20, Vector: 34, Fail-Safe Clock Monitor */
-# define INT_IPC8_FSCMIP_MASK (7 << INT_IPC8_FSCMIP_SHIFT)
-# define INT_IPC8_RTCCIS_SHIFT (24) /* Bits 24-25, Vector: 35, Real-Time Clock and Calendar */
-# define INT_IPC8_RTCCIS_MASK (3 << INT_IPC8_RTCCIS_SHIFT)
-# define INT_IPC8_RTCCIP_SHIFT (26) /* Bits 26-28, Vector: 35, Real-Time Clock and Calendar */
-# define INT_IPC8_RTCCIP_MASK (7 << INT_IPC8_RTCCIP_SHIFT)
-
-# define INT_IPC9_DMA0IS_SHIFT (0) /* Bits 0-1, Vector: 36, DMA Channel 0 */
-# define INT_IPC9_DMA0IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
-# define INT_IPC9_DMA0IP_SHIFT (2) /* Bits 2-4, Vector: 36, DMA Channel 0 */
-# define INT_IPC9_DMA0IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
-# define INT_IPC9_DMA1IS_SHIFT (8) /* Bits 8-9, Vector: 37, DMA Channel 1 */
-# define INT_IPC9_DMA1IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
-# define INT_IPC9_DMA1IP_SHIFT (10) /* Bits 10-12, Vector: 37, DMA Channel 1 */
-# define INT_IPC9_DMA1IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
-# define INT_IPC9_DMA2IS_SHIFT (16) /* Bits 16-17, Vector: 38, DMA Channel 2 */
-# define INT_IPC9_DMA2IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
-# define INT_IPC9_DMA2IP_SHIFT (18) /* Bits 18-20, Vector: 38, DMA Channel 2 */
-# define INT_IPC9_DMA2IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
-# define INT_IPC9_DMA3IS_SHIFT (24) /* Bits 24-25, Vector: 39, DMA Channel 3 */
-# define INT_IPC9_DMA3IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
-# define INT_IPC9_DMA3IP_SHIFT (26) /* Bits 26-28, Vector: 39, DMA Channel 3 */
-# define INT_IPC9_DMA3IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
-
-# define INT_IPC11_FCEIS_SHIFT (0) /* Bits 0-1, Vector: 44, Flash Control Event */
-# define INT_IPC11_FCEIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
-# define INT_IPC11_FCEIP_SHIFT (2) /* Bits 2-4, Vector: 44, Flash Control Event */
-# define INT_IPC11_FCEIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
-# define INT_IPC11_USBIS_SHIFT (8) /* Bits 8-9, Vector: 45, USB */
-# define INT_IPC11_USBIS_MASK (3 << INT_IPC11_USBIS_SHIFT)
-# define INT_IPC11_USBIP_SHIFT (10) /* Bits 10-12, Vector: 45, USB */
-# define INT_IPC11_USBIP_MASK (7 << INT_IPC11_USBIP_SHIFT)
-
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-
-# define INT_IPC6_VEC24IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1, SPI3, I2C3 */
-# define INT_IPC6_VEC24IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
-# define INT_IPC6_U1IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1 */
-# define INT_IPC6_U1IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
-# define INT_IPC6_SPI3IS_SHIFT (0) /* Bits 0-1, Vector: 24, SPI3 */
-# define INT_IPC6_SPI3IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
-# define INT_IPC6_I2C3IS_SHIFT (0) /* Bits 0-1, Vector: 24, I2C3 */
-# define INT_IPC6_I2C3IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
-# define INT_IPC6_VEC24IP_SHIFT (0) /* Bits 2-4, Vector: 24, UART1, SPI3, I2C3 */
-# define INT_IPC6_VEC24IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
-# define INT_IPC6_U1IP_SHIFT (2) /* Bits 2-4, Vector: 24, UART1 */
-# define INT_IPC6_U1IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
-# define INT_IPC6_SPI3IP_SHIFT (2) /* Bits 2-4, Vector: 24, SPI3 */
-# define INT_IPC6_SPI3IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
-# define INT_IPC6_I2C3IP_SHIFT (2) /* Bits 2-4, Vector: 24, I2C3 */
-# define INT_IPC6_I2C3IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
-# define INT_IPC6_I2C1IS_SHIFT (8) /* Bits 8-9, Vector: 25, I2C1 */
-# define INT_IPC6_I2C1IS_MASK (3 << INT_IPC6_I2C1IS_SHIFT)
-# define INT_IPC6_I2C1IP_SHIFT (10) /* Bits 10-12, Vector: 25, I2C1 */
-# define INT_IPC6_I2C1IP_MASK (7 << INT_IPC6_I2C1IP_SHIFT)
-# define INT_IPC6_CNIS_SHIFT (16) /* Bits 16-17, Vector: 26, Input Change Interrupt */
-# define INT_IPC6_CNIS_MASK (3 << INT_IPC6_CNIS_SHIFT)
-# define INT_IPC6_CNIP_SHIFT (18) /* Bits 18-20, Vector: 26, Input Change Interrupt */
-# define INT_IPC6_CNIP_MASK (7 << INT_IPC6_CNIP_SHIFT)
-# define INT_IPC6_AD1IS_SHIFT (24) /* Bits 24-25, Vector: 27, ADC1 Convert Done */
-# define INT_IPC6_AD1IS_MASK (3 << INT_IPC6_AD1IS_SHIFT)
-# define INT_IPC6_AD1IP_SHIFT (26) /* Bits 26-28, Vector: 27, ADC1 Convert Done */
-# define INT_IPC6_AD1IP_MASK (7 << INT_IPC6_AD1IP_SHIFT)
-
-# define INT_IPC7_PMPIS_SHIFT (0) /* Bits 0-1, Vector: 28, Parallel Master Port */
-# define INT_IPC7_PMPIS_MASK (3 << INT_IPC7_PMPIS_SHIFT)
-# define INT_IPC7_PMPIP_SHIFT (2) /* Bits 2-4, Vector: 28, Parallel Master Port */
-# define INT_IPC7_PMPIP_MASK (7 << INT_IPC7_PMPIP_SHIFT)
-# define INT_IPC7_CMP1IS_SHIFT (8) /* Bits 8-9, Vector: 29, Comparator Interrupt */
-# define INT_IPC7_CMP1IS_MASK (3 << INT_IPC7_CMP1IS_SHIFT)
-# define INT_IPC7_CMP1IP_SHIFT (10) /* Bits 10-12, Vector: 29, Comparator Interrupt */
-# define INT_IPC7_CMP1IP_MASK (7 << INT_IPC7_CMP1IP_SHIFT)
-# define INT_IPC7_CMP2IS_SHIFT (16) /* Bits 16-17, Vector: 30, Comparator Interrupt */
-# define INT_IPC7_CMP2IS_MASK (3 << INT_IPC7_CMP2IS_SHIFT)
-# define INT_IPC7_CMP2IP_SHIFT (18) /* Bits 18-20, Vector: 30, Comparator Interrupt */
-# define INT_IPC7_CMP2IP_MASK (7 << INT_IPC7_CMP2IP_SHIFT)
-# define INT_IPC6_VEC31IS_SHIFT (24) /* Bits 24-25, Vector: 31, UART3, SPI2, I2C4 */
-# define INT_IPC6_VEC31IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
-# define INT_IPC6_U3IS_SHIFT (24) /* Bits 24-25, Vector: 31, UART3 */
-# define INT_IPC6_U3IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
-# define INT_IPC6_SPI2IS_SHIFT (24) /* Bits 24-25, Vector: 31, SPI2 */
-# define INT_IPC6_SPI2IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
-# define INT_IPC6_I2C4IS_SHIFT (24) /* Bits 24-25, Vector: 31, I2C4 */
-# define INT_IPC6_I2C4IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
-# define INT_IPC6_VEC31IP_SHIFT (26) /* Bits 26-28, Vector: 31, UART3, SPI2, I2C4 */
-# define INT_IPC6_VEC31IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
-# define INT_IPC6_U3IP_SHIFT (26) /* Bits 26-28, Vector: 31, UART3 */
-# define INT_IPC6_U3IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
-# define INT_IPC6_SPI2IP_SHIFT (26) /* Bits 26-28, Vector: 31, SPI2 */
-# define INT_IPC6_SPI2IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
-# define INT_IPC6_I2C4IP_SHIFT (26) /* Bits 26-28, Vector: 31, I2C4 */
-# define INT_IPC6_I2C4IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
-
-# define INT_IPC6_VEC32IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2, SPI4, I2C5 */
-# define INT_IPC6_VEC32IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
-# define INT_IPC6_U2IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2 */
-# define INT_IPC6_U2IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
-# define INT_IPC6_SPI4IS_SHIFT (0) /* Bits 0-1, Vector: 32, SPI4 */
-# define INT_IPC6_SPI4IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
-# define INT_IPC6_I2C5IS_SHIFT (0) /* Bits 0-1, Vector: 32, I2C5 */
-# define INT_IPC6_I2C5IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
-# define INT_IPC6_VEC32IP_SHIFT (0) /* Bits 2-4, Vector: 32, UART2, SPI4, I2C5 */
-# define INT_IPC6_VEC32IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
-# define INT_IPC6_U2IP_SHIFT (2) /* Bits 2-4, Vector: 32, UART2 */
-# define INT_IPC6_U2IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
-# define INT_IPC6_SPI4IP_SHIFT (2) /* Bits 2-4, Vector: 32, SPI4 */
-# define INT_IPC6_SPI4IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
-# define INT_IPC6_I2C5IP_SHIFT (2) /* Bits 2-4, Vector: 32, I2C5 */
-# define INT_IPC6_I2C5IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
-# define INT_IPC8_I2C2IS_SHIFT (8) /* Bits 8-9, Vector: 33, I2C2 */
-# define INT_IPC8_I2C2IS_MASK (3 << INT_IPC8_I2C2IS_SHIFT)
-# define INT_IPC8_I2C2IP_SHIFT (10) /* Bits 10-12, Vector: 33, I2C2 */
-# define INT_IPC8_I2C2IP_MASK (7 << INT_IPC8_I2C2IP_SHIFT)
-# define INT_IPC8_FSCMIS_SHIFT (16) /* Bits 16-17, Vector: 34, Fail-Safe Clock Monitor */
-# define INT_IPC8_FSCMIS_MASK (3 << INT_IPC8_FSCMIS_SHIFT)
-# define INT_IPC8_FSCMIP_SHIFT (18) /* Bits 18-20, Vector: 34, Fail-Safe Clock Monitor */
-# define INT_IPC8_FSCMIP_MASK (7 << INT_IPC8_FSCMIP_SHIFT)
-# define INT_IPC8_RTCCIS_SHIFT (24) /* Bits 24-25, Vector: 35, Real-Time Clock and Calendar */
-# define INT_IPC8_RTCCIS_MASK (3 << INT_IPC8_RTCCIS_SHIFT)
-# define INT_IPC8_RTCCIP_SHIFT (26) /* Bits 26-28, Vector: 35, Real-Time Clock and Calendar */
-# define INT_IPC8_RTCCIP_MASK (7 << INT_IPC8_RTCCIP_SHIFT)
-
-# define INT_IPC9_DMA0IS_SHIFT (0) /* Bits 0-1, Vector: 36, DMA Channel 0 */
-# define INT_IPC9_DMA0IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
-# define INT_IPC9_DMA0IP_SHIFT (2) /* Bits 2-4, Vector: 36, DMA Channel 0 */
-# define INT_IPC9_DMA0IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
-# define INT_IPC9_DMA1IS_SHIFT (8) /* Bits 8-9, Vector: 37, DMA Channel 1 */
-# define INT_IPC9_DMA1IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
-# define INT_IPC9_DMA1IP_SHIFT (10) /* Bits 10-12, Vector: 37, DMA Channel 1 */
-# define INT_IPC9_DMA1IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
-# define INT_IPC9_DMA2IS_SHIFT (16) /* Bits 16-17, Vector: 38, DMA Channel 2 */
-# define INT_IPC9_DMA2IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
-# define INT_IPC9_DMA2IP_SHIFT (18) /* Bits 18-20, Vector: 38, DMA Channel 2 */
-# define INT_IPC9_DMA2IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
-# define INT_IPC9_DMA3IS_SHIFT (24) /* Bits 24-25, Vector: 39, DMA Channel 3 */
-# define INT_IPC9_DMA3IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
-# define INT_IPC9_DMA3IP_SHIFT (26) /* Bits 26-28, Vector: 39, DMA Channel 3 */
-# define INT_IPC9_DMA3IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
-
-# define INT_IPC10_DMA4IS_SHIFT (0) /* Bits 0-1, Vector: 36, DMA Channel 4 */
-# define INT_IPC10_DMA4IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
-# define INT_IPC10_DMA4IP_SHIFT (2) /* Bits 2-4, Vector: 36, DMA Channel 4 */
-# define INT_IPC10_DMA4IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
-# define INT_IPC10_DMA5IS_SHIFT (8) /* Bits 8-9, Vector: 37, DMA Channel 5 */
-# define INT_IPC10_DMA5IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
-# define INT_IPC10_DMA5IP_SHIFT (10) /* Bits 10-12, Vector: 37, DMA Channel 5 */
-# define INT_IPC10_DMA5IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
-# define INT_IPC10_DMA6IS_SHIFT (16) /* Bits 16-17, Vector: 38, DMA Channel 6 */
-# define INT_IPC10_DMA6IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
-# define INT_IPC10_DMA6IP_SHIFT (18) /* Bits 18-20, Vector: 38, DMA Channel 6 */
-# define INT_IPC10_DMA6IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
-# define INT_IPC10_DMA7IS_SHIFT (24) /* Bits 24-25, Vector: 39, DMA Channel 7 */
-# define INT_IPC10_DMA7IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
-# define INT_IPC10_DMA7IP_SHIFT (26) /* Bits 26-28, Vector: 39, DMA Channel 7 */
-# define INT_IPC10_DMA7IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
-
-# define INT_IPC11_FCEIS_SHIFT (0) /* Bits 0-1, Vector: 44, Flash Control Event */
-# define INT_IPC11_FCEIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
-# define INT_IPC11_FCEIP_SHIFT (2) /* Bits 2-4, Vector: 44, Flash Control Event */
-# define INT_IPC11_FCEIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
-# define INT_IPC11_USBIS_SHIFT (8) /* Bits 8-9, Vector: 45, USB */
-# define INT_IPC11_USBIS_MASK (3 << INT_IPC11_USBIS_SHIFT)
-# define INT_IPC11_USBIP_SHIFT (10) /* Bits 10-12, Vector: 45, USB */
-# define INT_IPC11_USBIP_MASK (7 << INT_IPC11_USBIP_SHIFT)
-# define INT_IPC11_CAN1IS_SHIFT (16) /* Bits 16-17, Vector: 46, Controller area network 1 */
-# define INT_IPC11_CAN1IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
-# define INT_IPC11_CAN1IP_SHIFT (18) /* Bits 18-20, Vector: 46, Controller area network 1 */
-# define INT_IPC11_CAN1IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
-# define INT_IPC11_CAN2IS_SHIFT (24) /* Bits 24-25, Vector: 47, Controller area network 2 */
-# define INT_IPC11_CAN2IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
-# define INT_IPC11_CAN2IP_SHIFT (26) /* Bits 26-28, Vector: 47, Controller area network 2 */
-# define INT_IPC11_CAN2IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
-
-# define INT_IPC12_ETHIS_SHIFT (0) /* Bits 0-1, Vector: 48, Ethernet interrupt */
-# define INT_IPC12_ETHIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
-# define INT_IPC12_ETHIP_SHIFT (2) /* Bits 2-4, Vector: 48, Ethernet interrupt */
-# define INT_IPC12_ETHIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
-# define INT_IPC12_U4IS_SHIFT (8) /* Bits 8-9, Vector: 49, UART4 */
-# define INT_IPC12_U4IS_MASK (3 << INT_IPC11_USBIS_SHIFT)
-# define INT_IPC12_U4IP_SHIFT (10) /* Bits 10-12, Vector: 49, UART4 */
-# define INT_IPC12_U4IP_MASK (7 << INT_IPC11_USBIP_SHIFT)
-# define INT_IPC12_U6IS_SHIFT (16) /* Bits 16-17, Vector: 50, UART6 */
-# define INT_IPC12_U6IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
-# define INT_IPC12_U6IP_SHIFT (18) /* Bits 18-20, Vector: 50, UART6 */
-# define INT_IPC12_U6IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
-# define INT_IPC12_U5IS_SHIFT (24) /* Bits 24-25, Vector: 51, UART5 */
-# define INT_IPC12_U5IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
-# define INT_IPC12_U5IP_SHIFT (26) /* Bits 26-28, Vector: 51, UART5 */
-# define INT_IPC12_U5IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
-
-#else
-# error "Unknown PIC32MX family
-#endif
-
-/****************************************************************************
- * Public Types
- ****************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-/****************************************************************************
- * Inline Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
-
-#ifdef __cplusplus
-#define EXTERN extern "C"
-extern "C" {
-#else
-#define EXTERN extern
-#endif
-
-#undef EXTERN
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_INT_H */
+/****************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-int.h
+ *
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_PIC32MX_PIC32MX_INT_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_INT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "chip.h"
+#include "pic32mx-memorymap.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Register Offsets *********************************************************/
+
+#define PIC32MX_INT_INTCON_OFFSET 0x0000 /* Interrupt control register */
+#define PIC32MX_INT_INTCONCLR_OFFSET 0x0004 /* Interrupt control clear register */
+#define PIC32MX_INT_INTCONSET_OFFSET 0x0008 /* Interrupt control set register */
+#define PIC32MX_INT_INTCONINV_OFFSET 0x000c /* Interrupt control invert register */
+#define PIC32MX_INT_INTSTAT_OFFSET 0x0010 /* Interrupt status register */
+#define PIC32MX_INT_INTSTATCLR_OFFSET 0x0014 /* Interrupt status clear register */
+#define PIC32MX_INT_INTSTATSET_OFFSET 0x0018 /* Interrupt status set register */
+#define PIC32MX_INT_INTSTATINV_OFFSET 0x001c /* Interrupt status invert register */
+#define PIC32MX_INT_TPTMR_OFFSET 0x0020 /* Temporal proximity timer register */
+#define PIC32MX_INT_TPTMRCLR_OFFSET 0x0024 /* Temporal proximity timer clear register */
+#define PIC32MX_INT_TPTMRSET_OFFSET 0x0028 /* Temporal proximity timer set register */
+#define PIC32MX_INT_TPTMRINV_OFFSET 0x002c /* Temporal proximity timer invert register */
+#define PIC32MX_INT_IFS_OFFSET(n) (0x0030 + ((n) << 4))
+#define PIC32MX_INT_IFSCLR_OFFSET(n) (0x0034 + ((n) << 4))
+#define PIC32MX_INT_IFSSET_OFFSET(n) (0x0038 + ((n) << 4))
+#define PIC32MX_INT_IFSINV_OFFSET(n) (0x003c + ((n) << 4))
+#define PIC32MX_INT_IFS0_OFFSET 0x0030 /* Interrupt flag status register 0 */
+#define PIC32MX_INT_IFS0CLR_OFFSET 0x0034 /* Interrupt flag status clear register 0 */
+#define PIC32MX_INT_IFS0SET_OFFSET 0x0038 /* Interrupt flag status set register 0 */
+#define PIC32MX_INT_IFS0INV_OFFSET 0x003c /* Interrupt flag status invert register 0 */
+#define PIC32MX_INT_IFS1_OFFSET 0x0040 /* Interrupt flag status register 1 */
+#define PIC32MX_INT_IFS1CLR_OFFSET 0x0044 /* Interrupt flag status clear register 1 */
+#define PIC32MX_INT_IFS1SET_OFFSET 0x0048 /* Interrupt flag status set register 1 */
+#define PIC32MX_INT_IFS1INV_OFFSET 0x004c /* Interrupt flag status invert register 1 */
+#define PIC32MX_INT_IFS2_OFFSET 0x0050 /* Interrupt flag status register 2 */
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IFS2CLR_OFFSET 0x0054 /* Interrupt flag status clear register 2 */
+# define PIC32MX_INT_IFS2SET_OFFSET 0x0058 /* Interrupt flag status set register 2 */
+# define PIC32MX_INT_IFS2INV_OFFSET 0x005c /* Interrupt flag status invert register 2 */
+#endif
+
+#define PIC32MX_INT_IEC_OFFSET(n) (0x0060 + ((n) << 4))
+#define PIC32MX_INT_IECCLR_OFFSET(n) (0x0064 + ((n) << 4))
+#define PIC32MX_INT_IECSET_OFFSET(n) (0x0068 + ((n) << 4))
+#define PIC32MX_INT_IECINV_OFFSET(n) (0x006c + ((n) << 4))
+#define PIC32MX_INT_IEC0_OFFSET 0x0060 /* Interrupt enable control register 0 */
+#define PIC32MX_INT_IEC0CLR_OFFSET 0x0064 /* Interrupt enable control clear register 0 */
+#define PIC32MX_INT_IEC0SET_OFFSET 0x0068 /* Interrupt enable control set register 0 */
+#define PIC32MX_INT_IEC0INV_OFFSET 0x006c /* Interrupt enable control invert register 0 */
+#define PIC32MX_INT_IEC1_OFFSET 0x0070 /* Interrupt enable control register 1 */
+#define PIC32MX_INT_IEC1CLR_OFFSET 0x0074 /* Interrupt enable control clear register 1 */
+#define PIC32MX_INT_IEC1SET_OFFSET 0x0078 /* Interrupt enable control set register 1 */
+#define PIC32MX_INT_IEC1INV_OFFSET 0x007c /* Interrupt enable control invert register 1 */
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IEC2_OFFSET 0x0080 /* Interrupt enable control register 2 */
+# define PIC32MX_INT_IEC2CLR_OFFSET 0x0084 /* Interrupt enable control clear register 2 */
+# define PIC32MX_INT_IEC2SET_OFFSET 0x0088 /* Interrupt enable control set register 2 */
+# define PIC32MX_INT_IEC2INV_OFFSET 0x008c /* Interrupt enable control invert register 2 */
+#endif
+
+#define PIC32MX_INT_IPC_OFFSET(n) (0x0090 + ((n) << 4))
+#define PIC32MX_INT_IPCCLR_OFFSET(n) (0x0094 + ((n) << 4))
+#define PIC32MX_INT_IPCSET_OFFSET(n) (0x0098 + ((n) << 4))
+#define PIC32MX_INT_IPCINV_OFFSET(n) (0x009c + ((n) << 4))
+#define PIC32MX_INT_IPC0_OFFSET 0x0090 /* Interrupt priority control register 0 */
+#define PIC32MX_INT_IPC0CLR_OFFSET 0x0094 /* Interrupt priority control clear register 0 */
+#define PIC32MX_INT_IPC0SET_OFFSET 0x0098 /* Interrupt priority control set register 0 */
+#define PIC32MX_INT_IPC0INV_OFFSET 0x009c /* Interrupt priority control invert register 0 */
+#define PIC32MX_INT_IPC1_OFFSET 0x00a0 /* Interrupt priority control register 1 */
+#define PIC32MX_INT_IPC1CLR_OFFSET 0x00a4 /* Interrupt priority control clear register 1 */
+#define PIC32MX_INT_IPC1SET_OFFSET 0x00a8 /* Interrupt priority control set register 1 */
+#define PIC32MX_INT_IPC1INV_OFFSET 0x00ac /* Interrupt priority control invert register 1 */
+#define PIC32MX_INT_IPC2_OFFSET 0x00b0 /* Interrupt priority control register 2 */
+#define PIC32MX_INT_IPC2CLR_OFFSET 0x00b4 /* Interrupt priority control clear register 2 */
+#define PIC32MX_INT_IPC2SET_OFFSET 0x00b8 /* Interrupt priority control set register 2 */
+#define PIC32MX_INT_IPC2INV_OFFSET 0x00bc /* Interrupt priority control invert register 2 */
+#define PIC32MX_INT_IPC3_OFFSET 0x00c0 /* Interrupt priority control register 3 */
+#define PIC32MX_INT_IPC3CLR_OFFSET 0x00c4 /* Interrupt priority control clear register 3 */
+#define PIC32MX_INT_IPC3SET_OFFSET 0x00c8 /* Interrupt priority control set register 3 */
+#define PIC32MX_INT_IPC3INV_OFFSET 0x00cc /* Interrupt priority control invert register 3 */
+#define PIC32MX_INT_IPC4_OFFSET 0x00d0 /* Interrupt priority control register 4 */
+#define PIC32MX_INT_IPC4CLR_OFFSET 0x00d4 /* Interrupt priority control clear register 4 */
+#define PIC32MX_INT_IPC4SET_OFFSET 0x00d8 /* Interrupt priority control set register 4 */
+#define PIC32MX_INT_IPC4INV_OFFSET 0x00dc /* Interrupt priority control invert register 4 */
+#define PIC32MX_INT_IPC5_OFFSET 0x00e0 /* Interrupt priority control register 5 */
+#define PIC32MX_INT_IPC5CLR_OFFSET 0x00e4 /* Interrupt priority control clear register 5 */
+#define PIC32MX_INT_IPC5SET_OFFSET 0x00e8 /* Interrupt priority control set register 5 */
+#define PIC32MX_INT_IPC5INV_OFFSET 0x00ec /* Interrupt priority control invert register 5 */
+#define PIC32MX_INT_IPC6_OFFSET 0x00f0 /* Interrupt priority control register 6 */
+#define PIC32MX_INT_IPC6CLR_OFFSET 0x00f4 /* Interrupt priority control clear register 6 */
+#define PIC32MX_INT_IPC6SET_OFFSET 0x00f8 /* Interrupt priority control set register 6 */
+#define PIC32MX_INT_IPC6INV_OFFSET 0x00fc /* Interrupt priority control invert register 6 */
+#define PIC32MX_INT_IPC7_OFFSET 0x0100 /* Interrupt priority control register 7 */
+#define PIC32MX_INT_IPC7CLR_OFFSET 0x0104 /* Interrupt priority control clear register 7 */
+#define PIC32MX_INT_IPC7SET_OFFSET 0x0108 /* Interrupt priority control set register 7 */
+#define PIC32MX_INT_IPC7INV_OFFSET 0x010c /* Interrupt priority control invert register 7 */
+#define PIC32MX_INT_IPC8_OFFSET 0x0110 /* Interrupt priority control register 8 */
+#define PIC32MX_INT_IPC8CLR_OFFSET 0x0114 /* Interrupt priority control clear register 8 */
+#define PIC32MX_INT_IPC8SET_OFFSET 0x0118 /* Interrupt priority control set register 8 */
+#define PIC32MX_INT_IPC8INV_OFFSET 0x011c /* Interrupt priority control invert register 8 */
+#define PIC32MX_INT_IPC9_OFFSET 0x0120 /* Interrupt priority control register 9 */
+#define PIC32MX_INT_IPC9CLR_OFFSET 0x0124 /* Interrupt priority control clear register 9 */
+#define PIC32MX_INT_IPC9SET_OFFSET 0x0128 /* Interrupt priority control set register 9 */
+#define PIC32MX_INT_IPC9INV_OFFSET 0x012c /* Interrupt priority control invert register 9 */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC10_OFFSET 0x0130 /* Interrupt priority control register 10 */
+# define PIC32MX_INT_IPC10CLR_OFFSET 0x0134 /* Interrupt priority control clear register 10 */
+# define PIC32MX_INT_IPC10SET_OFFSET 0x0138 /* Interrupt priority control set register 10 */
+# define PIC32MX_INT_IPC10INV_OFFSET 0x013c /* Interrupt priority control invert register 10 */
+#endif
+
+#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC11_OFFSET 0x0140 /* Interrupt priority control register 11 */
+# define PIC32MX_INT_IPC11CLR_OFFSET 0x0144 /* Interrupt priority control clear register 11 */
+# define PIC32MX_INT_IPC11SET_OFFSET 0x0148 /* Interrupt priority control set register 11 */
+# define PIC32MX_INT_IPC11INV_OFFSET 0x014c /* Interrupt priority control invert register 11 */
+#endif
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC12_OFFSET 0x0150 /* Interrupt priority control register 12 */
+# define PIC32MX_INT_IPC12CLR_OFFSET 0x0154 /* Interrupt priority control clear register 12 */
+# define PIC32MX_INT_IPC12SET_OFFSET 0x0158 /* Interrupt priority control set register 12 */
+# define PIC32MX_INT_IPC12INV_OFFSET 0x015c /* Interrupt priority control invert register 12 */
+#endif
+
+/* Register Addresses *******************************************************/
+
+#define PIC32MX_INT_INTCON (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCON_OFFSET)
+#define PIC32MX_INT_INTCONCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONCLR_OFFSET)
+#define PIC32MX_INT_INTCONSET (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONSET_OFFSET)
+#define PIC32MX_INT_INTCONINV (PIC32MX_INT_K1BASE+PIC32MX_INT_INTCONINV_OFFSET)
+#define PIC32MX_INT_INTSTAT (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTAT_OFFSET)
+#define PIC32MX_INT_INTSTATCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATCLR_OFFSET)
+#define PIC32MX_INT_INTSTATSET (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATSET_OFFSET)
+#define PIC32MX_INT_INTSTATINV (PIC32MX_INT_K1BASE+PIC32MX_INT_INTSTATINV_OFFSET)
+#define PIC32MX_INT_TPTMR (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMR_OFFSET)
+#define PIC32MX_INT_TPTMRCLR (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRCLR_OFFSET)
+#define PIC32MX_INT_TPTMRSET (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRSET_OFFSET)
+#define PIC32MX_INT_TPTMRINV (PIC32MX_INT_K1BASE+PIC32MX_INT_TPTMRINV_OFFSET)
+#define PIC32MX_INT_IFS(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS_OFFSET(n))
+#define PIC32MX_INT_IFSCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSCLR_OFFSET(n))
+#define PIC32MX_INT_IFSSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSSET_OFFSET(n))
+#define PIC32MX_INT_IFSINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IFSINV_OFFSET(n))
+#define PIC32MX_INT_IFS0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0_OFFSET)
+#define PIC32MX_INT_IFS0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0CLR_OFFSET)
+#define PIC32MX_INT_IFS0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0SET_OFFSET)
+#define PIC32MX_INT_IFS0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS0INV_OFFSET)
+#define PIC32MX_INT_IFS1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1_OFFSET)
+#define PIC32MX_INT_IFS1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1CLR_OFFSET)
+#define PIC32MX_INT_IFS1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1SET_OFFSET)
+#define PIC32MX_INT_IFS1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS1INV_OFFSET)
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IFS2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2_OFFSET)
+# define PIC32MX_INT_IFS2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2CLR_OFFSET)
+# define PIC32MX_INT_IFS2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2SET_OFFSET)
+# define PIC32MX_INT_IFS2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IFS2INV_OFFSET)
+#endif
+
+#define PIC32MX_INT_IEC(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC_OFFSET(n))
+#define PIC32MX_INT_IECCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECCLR_OFFSET(n))
+#define PIC32MX_INT_IECSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECSET_OFFSET(n))
+#define PIC32MX_INT_IECINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IECINV_OFFSET(n))
+#define PIC32MX_INT_IEC0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0_OFFSET)
+#define PIC32MX_INT_IEC0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0CLR_OFFSET)
+#define PIC32MX_INT_IEC0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0SET_OFFSET)
+#define PIC32MX_INT_IEC0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC0_OFFSET)
+#define PIC32MX_INT_IEC1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1_OFFSET)
+#define PIC32MX_INT_IEC1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1CLR_OFFSET)
+#define PIC32MX_INT_IEC1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1SET_OFFSET)
+#define PIC32MX_INT_IEC1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC1INV_OFFSET)
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IEC2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2_OFFSET)
+# define PIC32MX_INT_IEC2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2CLR_OFFSET)
+# define PIC32MX_INT_IEC2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2SET_OFFSET)
+# define PIC32MX_INT_IEC2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IEC2INV_OFFSET)
+#endif
+
+#define PIC32MX_INT_IPC(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC_OFFSET(n))
+#define PIC32MX_INT_IPCCLR(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCCLR_OFFSET(n))
+#define PIC32MX_INT_IPCSET(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCSET_OFFSET(n))
+#define PIC32MX_INT_IPCINV(n) (PIC32MX_INT_K1BASE+PIC32MX_INT_IPCINV_OFFSET(n))
+#define PIC32MX_INT_IPC0 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0_OFFSET)
+#define PIC32MX_INT_IPC0CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0CLR_OFFSET)
+#define PIC32MX_INT_IPC0SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0SET_OFFSET)
+#define PIC32MX_INT_IPC0INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC0INV_OFFSET)
+#define PIC32MX_INT_IPC1 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1_OFFSET)
+#define PIC32MX_INT_IPC1CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1CLR_OFFSET)
+#define PIC32MX_INT_IPC1SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1SET_OFFSET)
+#define PIC32MX_INT_IPC1INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC1INV_OFFSET)
+#define PIC32MX_INT_IPC2 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2_OFFSET)
+#define PIC32MX_INT_IPC2CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2CLR_OFFSET)
+#define PIC32MX_INT_IPC2SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2SET_OFFSET)
+#define PIC32MX_INT_IPC2INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC2INV_OFFSET)
+#define PIC32MX_INT_IPC3 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3_OFFSET)
+#define PIC32MX_INT_IPC3CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3CLR_OFFSET)
+#define PIC32MX_INT_IPC3SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3SET_OFFSET)
+#define PIC32MX_INT_IPC3INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC3INV_OFFSET)
+#define PIC32MX_INT_IPC4 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4_OFFSET)
+#define PIC32MX_INT_IPC4CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4CLR_OFFSET)
+#define PIC32MX_INT_IPC4SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4SET_OFFSET)
+#define PIC32MX_INT_IPC4INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC4INV_OFFSET)
+#define PIC32MX_INT_IPC5 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5_OFFSET)
+#define PIC32MX_INT_IPC5CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5CLR_OFFSET)
+#define PIC32MX_INT_IPC5SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5SET_OFFSET)
+#define PIC32MX_INT_IPC5INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC5INV_OFFSET)
+#define PIC32MX_INT_IPC6 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6_OFFSET)
+#define PIC32MX_INT_IPC6CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6CLR_OFFSET)
+#define PIC32MX_INT_IPC6SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6SET_OFFSET)
+#define PIC32MX_INT_IPC6INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC6INV_OFFSET)
+#define PIC32MX_INT_IPC7 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7_OFFSET)
+#define PIC32MX_INT_IPC7CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7CLR_OFFSET)
+#define PIC32MX_INT_IPC7SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7SET_OFFSET)
+#define PIC32MX_INT_IPC7INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC7INV_OFFSET)
+#define PIC32MX_INT_IPC8 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8_OFFSET)
+#define PIC32MX_INT_IPC8CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8CLR_OFFSET)
+#define PIC32MX_INT_IPC8SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8SET_OFFSET)
+#define PIC32MX_INT_IPC8INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC8INV_OFFSET)
+#define PIC32MX_INT_IPC9 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9_OFFSET)
+#define PIC32MX_INT_IPC9CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9CLR_OFFSET)
+#define PIC32MX_INT_IPC9SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9SET_OFFSET)
+#define PIC32MX_INT_IPC9INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC9INV_OFFSET)
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC10 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10_OFFSET)
+# define PIC32MX_INT_IPC10CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10CLR_OFFSET)
+# define PIC32MX_INT_IPC10SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10SET_OFFSET)
+# define PIC32MX_INT_IPC10INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC10INV_OFFSET)
+#endif
+
+#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC11 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11_OFFSET)
+# define PIC32MX_INT_IPC11CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11CLR_OFFSET)
+# define PIC32MX_INT_IPC11SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11SET_OFFSET)
+# define PIC32MX_INT_IPC11INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC11INV_OFFSET)
+#endif
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define PIC32MX_INT_IPC12 (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12_OFFSET)
+# define PIC32MX_INT_IPC12CLR (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12CLR_OFFSET)
+# define PIC32MX_INT_IPC12SET (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12SET_OFFSET)
+# define PIC32MX_INT_IPC12INV (PIC32MX_INT_K1BASE+PIC32MX_INT_IPC12INV_OFFSET)
+#endif
+
+/* Register Bit-Field Definitions *******************************************/
+
+/* Interrupt control register */
+
+#define INT_INTCON_INT0EP (1 << 0) /* Bit 0: External interrupt 0 edge polarity control */
+#define INT_INTCON_INT1EP (1 << 1) /* Bit 1: External interrupt 1 edge polarity control */
+#define INT_INTCON_INT2EP (1 << 2) /* Bit 2: External interrupt 2 edge polarity control */
+#define INT_INTCON_INT3EP (1 << 3) /* Bit 3: External interrupt 3 edge polarity control */
+#define INT_INTCON_INT4EP (1 << 4) /* Bit 4: External interrupt 4 edge polarity control */
+#define INT_INTCON_TPC_SHIFT (8) /* Bits 8-10: Temporal proximity control */
+#define INT_INTCON_TPC_MASK (7 << INT_INTCON_TPC_SHIFT)
+# define INT_INTCON_TPC_DIS (0 << INT_INTCON_TPC_SHIFT) /* Disables proximity timer */
+# define INT_INTCON_TPC_PRIO1 (1 << INT_INTCON_TPC_SHIFT) /* Int group priority 1 start IP timer */
+# define INT_INTCON_TPC_PRIO2 (2 << INT_INTCON_TPC_SHIFT) /* Int group priority <=2 start TP timer */
+# define INT_INTCON_TPC_PRIO3 (3 << INT_INTCON_TPC_SHIFT) /* Int group priority <=3 start TP timer */
+# define INT_INTCON_TPC_PRIO4 (4 << INT_INTCON_TPC_SHIFT) /* Int group priority <=4 start TP timer */
+# define INT_INTCON_TPC_PRIO5 (5 << INT_INTCON_TPC_SHIFT) /* Int group priority <=5 start TP timer */
+# define INT_INTCON_TPC_PRIO6 (6 << INT_INTCON_TPC_SHIFT) /* Int group priority <=6 start TP timer */
+# define INT_INTCON_TPC_PRIO7 (7 << INT_INTCON_TPC_SHIFT) /* Int group priority <=7 start TP timer */
+#define INT_INTCON_MVEC (1 << 12) /* Bit 12: Multi vector configuration */
+
+#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define INT_INTCON_FRZ (1 << 14) /* Bit 14: Freeze in debug exception mode */
+#endif
+
+#define INT_INTCON_SS0 (1 << 16) /* Bit 16: Single vector shadow register set */
+
+/* Interrupt status register */
+
+#define INT_INTSTAT_VEC_SHIFT (0) /* Bits 0-5: Interrupt vector */
+#define INT_INTSTAT_VEC_MASK (0x3f << INT_INTSTAT_VEC_SHIFT)
+#define INT_INTSTAT_RIPL_SHIFT (8) /* Bits 8-10: Requested priority level */
+#define INT_INTSTAT_RIPL_MASK (7 << INT_INTSTAT_RIPL_SHIFT)
+
+/* Temporal proximity timer register -- This register contains a 32-bit value
+ * with no field definitions.
+ */
+
+/* Interrupt flag status register 0 and Interrupt enable control register 0 */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+#define INT_CT (1 << 0) /* Vector: 0, Core Timer Interrupt */
+#define INT_CS0 (1 << 1) /* Vector: 1, Core Software Interrupt 0 */
+#define INT_CS1 (1 << 2) /* Vector: 2, Core Software Interrupt 1 */
+#define INT_INT0 (1 << 3) /* Vector: 3, External Interrupt 0 */
+#define INT_T1 (1 << 4) /* Vector: 4, Timer 1 */
+#define INT_IC1E (1 << 5) /* Vector: 5, Input Capture 1 Error */
+#define INT_IC1 (1 << 6) /* Vector: 5, Input Capture 1 */
+#define INT_OC1 (1 << 7) /* Vector: 6, Output Compare 1 */
+#define INT_INT1 (1 << 8) /* Vector: 7, External Interrupt 1 */
+#define INT_T2 (1 << 9) /* Vector: 8, Timer 2 */
+#define INT_IC2E (1 << 10) /* Vector: 9, Input Capture 2 Error */
+#define INT_IC2 (1 << 11) /* Vector: 9, Input Capture 2 */
+#define INT_OC2 (1 << 12) /* Vector: 10, Output Compare 2 */
+#define INT_INT2 (1 << 13) /* Vector: 11, External Interrupt 2 */
+#define INT_T3 (1 << 14) /* Vector: 12, Timer 3 */
+#define INT_IC3E (1 << 15) /* Vector: 13, Input Capture 3 Error */
+#define INT_IC3 (1 << 16) /* Vector: 13, Input Capture 3 */
+#define INT_OC3 (1 << 17) /* Vector: 14, Output Compare 3 */
+#define INT_INT3 (1 << 18) /* Vector: 15, External Interrupt 3 */
+#define INT_T4 (1 << 19) /* Vector: 16, Timer 4 */
+#define INT_IC4E (1 << 20) /* Vector: 17, Input Capture 4 Error */
+#define INT_IC4 (1 << 21) /* Vector: 17, Input Capture 4 */
+#define INT_OC4 (1 << 22) /* Vector: 18, Output Compare 4 */
+#define INT_INT4 (1 << 23) /* Vector: 19, External Interrupt 4 */
+#define INT_T5 (1 << 24) /* Vector: 20, Timer 5 */
+#define INT_IC5E (1 << 25) /* Vector: 21, Input Capture 5 Error */
+#define INT_IC5 (1 << 26) /* Vector: 21, Input Capture 5 */
+#define INT_OC5 (1 << 27) /* Vector: 22, Output Compare 5 */
+#define INT_AD1 (1 << 28) /* Vector: 23, ADC1 Convert Done */
+#define INT_FSCM (1 << 29) /* Vector: 24, Fail-Safe Clock Monitor */
+#define INT_RTCC (1 << 30) /* Vector: 25, Real-Time Clock and Calendar */
+#define INT_FCE (1 << 31) /* Vector: 26, Flash Control Event */
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define INT_CT (1 << 0) /* Vector: 0, Core Timer Interrupt */
+# define INT_CS0 (1 << 1) /* Vector: 1, Core Software Interrupt 0 */
+# define INT_CS1 (1 << 2) /* Vector: 2, Core Software Interrupt 1 */
+# define INT_INT0 (1 << 3) /* Vector: 3, External Interrupt 0 */
+# define INT_T1 (1 << 4) /* Vector: 4, Timer 1 */
+# define INT_IC1 (1 << 5) /* Vector: 5, Input Capture 1 */
+# define INT_OC1 (1 << 6) /* Vector: 6, Output Compare 1 */
+# define INT_INT1 (1 << 7) /* Vector: 7, External Interrupt 1 */
+# define INT_T2 (1 << 8) /* Vector: 8, Timer 2 */
+# define INT_IC2 (1 << 9) /* Vector: 9, Input Capture 2 */
+# define INT_OC2 (1 << 10) /* Vector: 10, Output Compare 2 */
+# define INT_INT2 (1 << 11) /* Vector: 11, External Interrupt 2 */
+# define INT_T3 (1 << 12) /* Vector: 12, Timer 3 */
+# define INT_IC3 (1 << 13) /* Vector: 13, Input Capture 3 */
+# define INT_OC3 (1 << 14) /* Vector: 14, Output Compare 3 */
+# define INT_INT3 (1 << 15) /* Vector: 15, External Interrupt 3 */
+# define INT_T4 (1 << 16) /* Vector: 16, Timer 4 */
+# define INT_IC4 (1 << 17) /* Vector: 17, Input Capture 4 */
+# define INT_OC4 (1 << 18) /* Vector: 18, Output Compare 4 */
+# define INT_INT4 (1 << 19) /* Vector: 19, External Interrupt 4 */
+# define INT_T5 (1 << 20) /* Vector: 20, Timer 5 */
+# define INT_IC5 (1 << 21) /* Vector: 21, Input Capture 5 */
+# define INT_OC5 (1 << 22) /* Vector: 22, Output Compare 5 */
+# define INT_SPI1E (1 << 23) /* Vector: 23, SPI1 Error */
+# define INT_SPI1TX (1 << 24) /* Vector: 23, " " Transfer done */
+# define INT_SPI1RX (1 << 25) /* Vector: 23, " " Receive done */
+# define INT_U1E (1 << 26) /* Vector: 24, UART1 Error */
+# define INT_U1RX (1 << 27) /* Vector: 24, " " Receiver */
+# define INT_U1TX (1 << 28) /* Vector: 24, " " Transmitter */
+# define INT_I2C1B (1 << 29) /* Vector: 25, I2C1 Bus collision event */
+# define INT_I2C1S (1 << 30) /* Vector: 25, " " Slave event */
+# define INT_I2C1M (1 << 31) /* Vector: 25, " " Master event */
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define INT_CT (1 << 0) /* Vector: 0, Core Timer Interrupt */
+# define INT_CS0 (1 << 1) /* Vector: 1, Core Software Interrupt 0 */
+# define INT_CS1 (1 << 2) /* Vector: 2, Core Software Interrupt 1 */
+# define INT_INT0 (1 << 3) /* Vector: 3, External Interrupt 0 */
+# define INT_T1 (1 << 4) /* Vector: 4, Timer 1 */
+# define INT_IC1 (1 << 5) /* Vector: 5, Input Capture 1 */
+# define INT_OC1 (1 << 6) /* Vector: 6, Output Compare 1 */
+# define INT_INT1 (1 << 7) /* Vector: 7, External Interrupt 1 */
+# define INT_T2 (1 << 8) /* Vector: 8, Timer 2 */
+# define INT_IC2 (1 << 9) /* Vector: 9, Input Capture 2 */
+# define INT_OC2 (1 << 10) /* Vector: 10, Output Compare 2 */
+# define INT_INT2 (1 << 11) /* Vector: 11, External Interrupt 2 */
+# define INT_T3 (1 << 12) /* Vector: 12, Timer 3 */
+# define INT_IC3 (1 << 13) /* Vector: 13, Input Capture 3 */
+# define INT_OC3 (1 << 14) /* Vector: 14, Output Compare 3 */
+# define INT_INT3 (1 << 15) /* Vector: 15, External Interrupt 3 */
+# define INT_T4 (1 << 16) /* Vector: 16, Timer 4 */
+# define INT_IC4 (1 << 17) /* Vector: 17, Input Capture 4 */
+# define INT_OC4 (1 << 18) /* Vector: 18, Output Compare 4 */
+# define INT_INT4 (1 << 19) /* Vector: 19, External Interrupt 4 */
+# define INT_T5 (1 << 20) /* Vector: 20, Timer 5 */
+# define INT_IC5 (1 << 21) /* Vector: 21, Input Capture 5 */
+# define INT_OC5 (1 << 22) /* Vector: 22, Output Compare 5 */
+# define INT_SPI1E (1 << 23) /* Vector: 23, SPI1 Error */
+# define INT_SPI1TX (1 << 24) /* Vector: 23, " " Transfer done */
+# define INT_SPI1RX (1 << 25) /* Vector: 23, " " Receive done */
+# define INT_26 (1 << 26) /* Vector: 24, UART1, SPI3, I2C3 */
+# define INT_U1E (1 << 26) /* Vector: 24, UART1 Error */
+# define INT_SPI3E (1 << 26) /* Vector: 24, SPI3 Fault */
+# define INT_I2C3B (1 << 26) /* Vector: 24, I2C3 Bus collision event */
+# define INT_27 (1 << 27) /* Vector: 24, UART1, SPI3, I2C3 */
+# define INT_U1RX (1 << 27) /* Vector: 24, UART1 Receiver */
+# define INT_SPI3RX (1 << 27) /* Vector: 24, SPI3 Receive done */
+# define INT_I2C3S (1 << 27) /* Vector: 24, I2C3 Slave event */
+# define INT_28 (1 << 28) /* Vector: 24, UART1, SPI3, I2C3 */
+# define INT_U1TX (1 << 28) /* Vector: 24, UART1 Transmitter */
+# define INT_SPI3TX (1 << 28) /* Vector: 24, SPI3 Transfer done */
+# define INT_I2C3M (1 << 28) /* Vector: 24, I2C3 Master event */
+# define INT_I2C1B (1 << 29) /* Vector: 25, I2C1 Bus collision event */
+# define INT_I2C1S (1 << 30) /* Vector: 25, " " Slave event */
+# define INT_I2C1M (1 << 31) /* Vector: 25, " " Master event */
+
+#else
+# error "Unknown PIC32MX family
+#endif
+
+/* Interrupt flag status register 1 and Interrupt enable control register 1 */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define INT_CMP1 (1 << 0) /* Vector: 27, Comparator 1 Interrupt */
+# define INT_CMP2 (1 << 1) /* Vector: 28, Comparator 2 Interrupt */
+# define INT_CMP2 (1 << 2) /* Vector: 29, Comparator 3 Interrupt */
+# define INT_USB (1 << 3) /* Vector: 30, USB */
+# define INT_SPI1E (1 << 4) /* Vector: 31, SPI1 */
+# define INT_SPI1TX (1 << 5) /* Vector: 31, " " */
+# define INT_SPI1RX (1 << 6) /* Vector: 31, " " */
+# define INT_U1E (1 << 7) /* Vector: 32, UART1 */
+# define INT_U1RX (1 << 8) /* Vector: 32, " " */
+# define INT_U1TX (1 << 9) /* Vector: 32, " " */
+# define INT_I2C1B (1 << 10) /* Vector: 33, I2C1 */
+# define INT_I2C1S (1 << 11) /* Vector: 33, " " */
+# define INT_I2C1M (1 << 12) /* Vector: 33, " " */
+# define INT_CNA (1 << 13) /* Vector: 34, Input Change Interrupt */
+# define INT_CNB (1 << 14) /* Vector: 34, Input Change Interrupt */
+# define INT_CNC (1 << 15) /* Vector: 34, Input Change Interrupt */
+# define INT_PMP (1 << 16) /* Vector: 35, Parallel Master Port */
+# define INT_PMPE (1 << 17) /* Vector: 35, Parallel Master Port */
+# define INT_SPI2E (1 << 18) /* Vector: 36, SPI2 */
+# define INT_SPI2TX (1 << 19) /* Vector: 36, " " */
+# define INT_SPI2RX (1 << 20) /* Vector: 36, " " */
+# define INT_U2E (1 << 21) /* Vector: 37, UART2 */
+# define INT_U2RX (1 << 22) /* Vector: 37, " " */
+# define INT_U2TX (1 << 23) /* Vector: 37, " " */
+# define INT_I2C2B (1 << 24) /* Vector: 38, I2C2 */
+# define INT_I2C2S (1 << 25) /* Vector: 38, " " */
+# define INT_I2C2M (1 << 26) /* Vector: 38, " " */
+# define INT_CTMU (1 << 27) /* Vector: 39, CTMU */
+# define INT_DMA0 (1 << 28) /* Vector: 40, DMA Channel 0 */
+# define INT_DMA1 (1 << 29) /* Vector: 41, DMA Channel 1 */
+# define INT_DMA2 (1 << 30) /* Vector: 42, DMA Channel 2 */
+# define INT_DMA3 (1 << 31) /* Vector: 43, DMA Channel 3 */
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define INT_CN (1 << 0) /* Vector: 26, Input Change Interrupt */
+# define INT_AD1 (1 << 1) /* Vector: 27, ADC1 Convert Done */
+# define INT_PMP (1 << 2) /* Vector: 28, Parallel Master Port */
+# define INT_CMP1 (1 << 3) /* Vector: 29, Comparator Interrupt */
+# define INT_CMP2 (1 << 4) /* Vector: 30, Comparator Interrupt */
+# define INT_SPI2E (1 << 5) /* Vector: 31, SPI2 Error */
+# define INT_SPI2TX (1 << 6) /* Vector: 31, " " Transfer done */
+# define INT_SPI2RX (1 << 7) /* Vector: 31, " " Receive done*/
+# define INT_U2E (1 << 8) /* Vector: 32, UART2 Error */
+# define INT_U2RX (1 << 9) /* Vector: 32, " " Receiver */
+# define INT_U2TX (1 << 10) /* Vector: 32, " " Transmitter */
+# define INT_I2C2B (1 << 11) /* Vector: 33, I2C2 Bus collision event */
+# define INT_I2C2S (1 << 12) /* Vector: 33, " " Master event */
+# define INT_I2C2M (1 << 13) /* Vector: 33, " " Slave event */
+# define INT_FSCM (1 << 14) /* Vector: 34, Fail-Safe Clock Monitor */
+# define INT_RTCC (1 << 15) /* Vector: 35, Real-Time Clock and Calendar */
+# define INT_DMA0 (1 << 16) /* Vector: 36, DMA Channel 0 */
+# define INT_DMA1 (1 << 17) /* Vector: 37, DMA Channel 1 */
+# define INT_DMA2 (1 << 18) /* Vector: 38, DMA Channel 2 */
+# define INT_DMA3 (1 << 19) /* Vector: 39, DMA Channel 3 */
+# define INT_FCE (1 << 24) /* Vector: 44, Flash Control Event */
+# define INT_USB (1 << 25) /* Vector: 45, USB Interrupt */
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define INT_CN (1 << 0) /* Vector: 26, Input Change Interrupt */
+# define INT_AD1 (1 << 1) /* Vector: 27, ADC1 Convert Done */
+# define INT_PMP (1 << 2) /* Vector: 28, Parallel Master Port */
+# define INT_CMP1 (1 << 3) /* Vector: 29, Comparator Interrupt */
+# define INT_CMP2 (1 << 4) /* Vector: 30, Comparator Interrupt */
+# define INT_37 (1 << 5) /* Vector: 31, UART3, SPI2, I2C4 */
+# define INT_U3E (1 << 5) /* Vector: 31, UART3 Error */
+# define INT_SPI2E (1 << 5) /* Vector: 31, SPI2 Fault */
+# define INT_I2C4B (1 << 5) /* Vector: 31, I2C4 Bus collision event */
+# define INT_38 (1 << 6) /* Vector: 31, UART3, SPI2, I2C4 */
+# define INT_U3RX (1 << 6) /* Vector: 31, UART3 Receiver */
+# define INT_SPI2RX (1 << 6) /* Vector: 31, SPI2 Receive done */
+# define INT_I2C4S (1 << 6) /* Vector: 31, I2C4 Slave event */
+# define INT_39 (1 << 7) /* Vector: 31, UART3, SPI2, I2C4 */
+# define INT_U3TX (1 << 7) /* Vector: 31, UART3 Transmitter */
+# define INT_SPI2TX (1 << 7) /* Vector: 31, SPI2 Transfer done */
+# define INT_I2C4M (1 << 7) /* Vector: 31, I2C4 Master event */
+# define INT_40 (1 << 8) /* Vector: 32, UART2, SPI4, I2C5 */
+# define INT_U2E (1 << 8) /* Vector: 32, UART2 Error */
+# define INT_SPI4E (1 << 8) /* Vector: 32, SPI4 Fault */
+# define INT_I2C5B (1 << 8) /* Vector: 32, I2C5 Bus collision event */
+# define INT_41 (1 << 9) /* Vector: 32, UART2, SPI4, I2C5 */
+# define INT_U2RX (1 << 9) /* Vector: 32, UART2 Receiver */
+# define INT_SPI4RX (1 << 9) /* Vector: 32, SPI4 Receive done */
+# define INT_I2C5S (1 << 9) /* Vector: 32, I2C5 Slave event */
+# define INT_42 (1 << 10) /* Vector: 32, UART2, SPI4, I2C5 */
+# define INT_U2TX (1 << 10) /* Vector: 32, UART2 Transmitter */
+# define INT_SPI4TX (1 << 10) /* Vector: 32, SPI4 Transfer done */
+# define INT_I2C5M (1 << 10) /* Vector: 32, I2C5 Master event */
+# define INT_I2C2B (1 << 11) /* Vector: 33, I2C2 Bus collision event */
+# define INT_I2C2S (1 << 12) /* Vector: 33, " " Master event */
+# define INT_I2C2M (1 << 13) /* Vector: 33, " " Slave event */
+# define INT_FSCM (1 << 14) /* Vector: 34, Fail-Safe Clock Monitor */
+# define INT_RTCC (1 << 15) /* Vector: 35, Real-Time Clock and Calendar */
+# define INT_DMA0 (1 << 16) /* Vector: 36, DMA Channel 0 */
+# define INT_DMA1 (1 << 17) /* Vector: 37, DMA Channel 1 */
+# define INT_DMA2 (1 << 18) /* Vector: 38, DMA Channel 2 */
+# define INT_DMA3 (1 << 19) /* Vector: 39, DMA Channel 3 */
+# define INT_DMA4 (1 << 20) /* Vector: 40, DMA Channel 3 */
+# define INT_DMA5 (1 << 21) /* Vector: 41, DMA Channel 3 */
+# define INT_DMA6 (1 << 22) /* Vector: 42, DMA Channel 3 */
+# define INT_DMA7 (1 << 23) /* Vector: 43, DMA Channel 3 */
+# define INT_FCE (1 << 24) /* Vector: 44, Flash Control Event */
+# define INT_USB (1 << 25) /* Vector: 45, USB Interrupt */
+# define INT_CAN1 (1 << 26) /* Vector: 46, Control Area Network 1 */
+# define INT_CAN2 (1 << 27) /* Vector: 47, Control Area Network 2 */
+# define INT_ETH (1 << 28) /* Vector: 48, Ethernet interrupt */
+# define INT_IC1E (1 << 29) /* Vector: 5, Input capture 1 error */
+# define INT_IC2E (1 << 30) /* Vector: 9, Input capture 1 error */
+# define INT_IC3E (1 << 31) /* Vector: 13, Input capture 1 error */
+
+#else
+# error "Unknown PIC32MX family
+#endif
+
+/* Interrupt flag status register 2 and Interrupt enable control register 2 */
+
+#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define INT_IC4E (1 << 0) /* Vector: 17, Input capture 1 error */
+# define INT_IC5E (1 << 1) /* Vector: 21, Input capture 1 error */
+# define INT_PMPE (1 << 2) /* Vector: 28, Parallel master port error */
+# define INT_U4E (1 << 3) /* Vector: 49, UART4 Error */
+# define INT_U4RX (1 << 4) /* Vector: 49, UART4 Receiver */
+# define INT_U4TX (1 << 5) /* Vector: 49, UART4 Transmitter */
+# define INT_U6E (1 << 6) /* Vector: 50, UART6 Error */
+# define INT_U6RX (1 << 7) /* Vector: 50, UART6 Receiver */
+# define INT_U6TX (1 << 8) /* Vector: 50, UART6 Transmitter */
+# define INT_U5E (1 << 9) /* Vector: 51, UART5 Error */
+# define INT_U5RX (1 << 10) /* Vector: 51, UART5 Receiver */
+# define INT_U5TX (1 << 11) /* Vector: 51, UART5 Transmitter */
+
+#endif
+
+/* Interrupt priority control register 0-11 */
+
+#define INT_IPC_DISABLED 0 /* Disabled! */
+#define INT_IPC_MIN_PRIORITY 1 /* Minimum (enabled) priority */
+#define INT_IPC_MID_PRIORITY 4 /* Can be used as the default */
+#define INT_IPC_MAX_PRIORITY 7 /* Maximum priority */
+#define INT_IPC_MIN_SUBPRIORITY 0 /* Minimum sub-priority */
+#define INT_IPC_MAX_SUBPRIORITY 0 /* Maximum sub-priority */
+
+#define INT_IPC0_CTIS_SHIFT (0) /* Bits 0-1, Vector: 0, Core Timer Interrupt */
+#define INT_IPC0_CTIS_MASK (3 << INT_IPC0_CTIS_SHIFT)
+#define INT_IPC0_CTIP_SHIFT (2) /* Bits 2-4, Vector: 0, Core Timer Interrupt */
+#define INT_IPC0_CTIP_MASK (7 << INT_IPC0_CTIP_SHIFT)
+#define INT_IPC0_CS0IS_SHIFT (8) /* Bits 8-9, Vector: 1, Core Software Interrupt 0 */
+#define INT_IPC0_CS0IS_MASK (3 << INT_IPC0_CS0IS_SHIFT)
+#define INT_IPC0_CS0IP_SHIFT (10) /* Bits 10-12, Vector: 1, Core Software Interrupt 0 */
+#define INT_IPC0_CS0IP_MASK (7 << INT_IPC0_CS0IP_SHIFT)
+#define INT_IPC0_CS1IS_SHIFT (16) /* Bits 16-17, Vector: 2, Core Software Interrupt 1 */
+#define INT_IPC0_CS1IS_MASK (3 << INT_IPC0_CS1IS_SHIFT)
+#define INT_IPC0_CS1IP_SHIFT (18) /* Bits 18-20, Vector: 2, Core Software Interrupt 1 */
+#define INT_IPC0_CS1IP_MASK (7 << INT_IPC0_CS1IP_SHIFT)
+#define INT_IPC0_INT0IS_SHIFT (24) /* Bits 24-25, Vector: 3, External Interrupt 0 */
+#define INT_IPC0_INT0IS_MASK (3 << INT_IPC0_INT0IS_SHIFT)
+#define INT_IPC0_INT0IP_SHIFT (26) /* Bits 26-28, Vector: 3, External Interrupt 0 */
+#define INT_IPC0_INT0IP_MASK (7 << INT_IPC0_INT0IP_SHIFT)
+
+#define INT_IPC1_T1IS_SHIFT (0) /* Bits 0-1, Vector: 4, Timer 1 */
+#define INT_IPC1_T1IS_MASK (3 << INT_IPC1_T1IS_SHIFT)
+#define INT_IPC1_T1IP_SHIFT (2) /* Bits 2-4, Vector: 4, Timer 1 */
+#define INT_IPC1_T1IP_MASK (7 << INT_IPC1_T1IP_SHIFT)
+#define INT_IPC1_IC1IS_SHIFT (8) /* Bits 8-9, Vector: 5, Input Capture 1 */
+#define INT_IPC1_IC1IS_MASK (3 << INT_IPC1_IC1IS_SHIFT)
+#define INT_IPC1_IC1IP_SHIFT (10) /* Bits 10-12, Vector: 5, Input Capture 1 */
+#define INT_IPC1_IC1IP_MASK (7 << INT_IPC1_IC1IP_SHIFT)
+#define INT_IPC1_OC1IS_SHIFT (16) /* Bits 16-17, Vector: 6, Output Compare 1 */
+#define INT_IPC1_OC1IS_MASK (3 << INT_IPC1_OC1IS_SHIFT)
+#define INT_IPC1_OC1IP_SHIFT (18) /* Bits 18-20, Vector: 6, Output Compare 1 */
+#define INT_IPC1_OC1IP_MASK (7 << INT_IPC1_OC1IP_SHIFT)
+#define INT_IPC1_INT1IS_SHIFT (24) /* Bits 24-25, Vector: 7, External Interrupt 1 */
+#define INT_IPC1_INT1IS_MASK (3 << INT_IPC1_INT1IS_SHIFT)
+#define INT_IPC1_INT1IP_SHIFT (26) /* Bits 26-28, Vector: 7, External Interrupt 1 */
+#define INT_IPC1_INT1IP_MASK (7 << INT_IPC1_INT1IP_SHIFT)
+
+#define INT_IPC2_T2IS_SHIFT (0) /* Bits 0-1, Vector: 8, Timer 2 */
+#define INT_IPC2_T2IS_MASK (3 << INT_IPC2_T2IS_SHIFT)
+#define INT_IPC2_T2IP_SHIFT (2) /* Bits 2-4, Vector: 8, Timer 2 */
+#define INT_IPC2_T2IP_MASK (7 << INT_IPC2_T2IP_SHIFT)
+#define INT_IPC2_IC2IS_SHIFT (8) /* Bits 8-9, Vector: 9, Input Capture 2 */
+#define INT_IPC2_IC2IS_MASK (3 << INT_IPC2_IC2IS_SHIFT)
+#define INT_IPC2_IC2IP_SHIFT (10) /* Bits 10-12, Vector: 9, Input Capture 2 */
+#define INT_IPC2_IC2IP_MASK (7 << INT_IPC2_IC2IP_SHIFT)
+#define INT_IPC2_OC2IS_SHIFT (16) /* Bits 16-17, Vector: 10, Output Compare 2 */
+#define INT_IPC2_OC2IS_MASK (3 << INT_IPC2_OC2IS_SHIFT)
+#define INT_IPC2_OC2IP_SHIFT (18) /* Bits 18-20, Vector: 10, Output Compare 2 */
+#define INT_IPC2_OC2IP_MASK (7 << INT_IPC2_OC2IP_SHIFT)
+#define INT_IPC2_INT2IS_SHIFT (24) /* Bits 24-25, Vector: 11, External Interrupt 2 */
+#define INT_IPC2_INT2IS_MASK (3 << INT_IPC2_INT2IS_SHIFT)
+#define INT_IPC2_INT2IP_SHIFT (26) /* Bits 26-28, Vector: 11, External Interrupt 2 */
+#define INT_IPC2_INT2IP_MASK (7 << INT_IPC2_INT2IP_SHIFT)
+
+#define INT_IPC3_T3IS_SHIFT (0) /* Bits 0-1, Vector: 12, Timer 3 */
+#define INT_IPC3_T3IS_MASK (3 << INT_IPC3_T3IS_SHIFT)
+#define INT_IPC3_T3IP_SHIFT (2) /* Bits 2-4, Vector: 12, Timer 3 */
+#define INT_IPC3_T3IP_MASK (7 << INT_IPC3_T3IP_SHIFT)
+#define INT_IPC3_IC3IS_SHIFT (8) /* Bits 8-9, Vector: 13, Input Capture 3 */
+#define INT_IPC3_IC3IS_MASK (3 << INT_IPC3_IC3IS_SHIFT)
+#define INT_IPC3_IC3IP_SHIFT (10) /* Bits 10-12, Vector: 13, Input Capture 3 */
+#define INT_IPC3_IC3IP_MASK (7 << INT_IPC3_IC3IP_SHIFT)
+#define INT_IPC3_OC3IS_SHIFT (16) /* Bits 16-17, Vector: 14, Output Compare 3 */
+#define INT_IPC3_OC3IS_MASK (3 << INT_IPC3_OC3IS_SHIFT)
+#define INT_IPC3_OC3IP_SHIFT (18) /* Bits 18-20, Vector: 14, Output Compare 3 */
+#define INT_IPC3_OC3IP_MASK (7 << INT_IPC3_OC3IP_SHIFT)
+#define INT_IPC3_INT3IS_SHIFT (24) /* Bits 24-25, Vector: 15, External Interrupt 3 */
+#define INT_IPC3_INT3IS_MASK (3 << INT_IPC3_INT3IS_SHIFT)
+#define INT_IPC3_INT3IP_SHIFT (26) /* Bits 26-28, Vector: 15, External Interrupt 3 */
+#define INT_IPC3_INT3IP_MASK (7 << INT_IPC3_INT3IP_SHIFT)
+
+#define INT_IPC4_T4IS_SHIFT (0) /* Bits 0-1, Vector: 16, Timer 4 */
+#define INT_IPC4_T4IS_MASK (3 << INT_IPC4_T4IS_SHIFT)
+#define INT_IPC4_T4IP_SHIFT (2) /* Bits 2-4, Vector: 16, Timer 4 */
+#define INT_IPC4_T4IP_MASK (7 << INT_IPC4_T4IP_SHIFT)
+#define INT_IPC4_IC4IS_SHIFT (8) /* Bits 8-9, Vector: 17, Input Capture 4 */
+#define INT_IPC4_IC4IS_MASK (3 << INT_IPC4_IC4IS_SHIFT)
+#define INT_IPC4_IC4IP_SHIFT (10) /* Bits 10-12, Vector: 17, Input Capture 4 */
+#define INT_IPC4_IC4IP_MASK (7 << INT_IPC4_IC4IP_SHIFT)
+#define INT_IPC4_OC4IS_SHIFT (16) /* Bits 16-17, Vector: 18, Output Compare 4 */
+#define INT_IPC4_OC4IS_MASK (3 << INT_IPC4_OC4IS_SHIFT)
+#define INT_IPC4_OC4IP_SHIFT (18) /* Bits 18-20, Vector: 18, Output Compare 4 */
+#define INT_IPC4_OC4IP_MASK (7 << INT_IPC4_OC4IP_SHIFT)
+#define INT_IPC4_INT4IS_SHIFT (24) /* Bits 24-25, Vector: 19, External Interrupt 4 */
+#define INT_IPC4_INT4IS_MASK (3 << INT_IPC4_INT4IS_SHIFT)
+#define INT_IPC4_INT4IP_SHIFT (26) /* Bits 26-28, Vector: 19, External Interrupt 4 */
+#define INT_IPC4_INT4IP_MASK (7 << INT_IPC4_INT4IP_SHIFT)
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define INT_IPC5_T5IS_SHIFT (0) /* Bits 0-1, Vector: 20, Timer 5 */
+# define INT_IPC5_T5IS_MASK (3 << INT_IPC5_T5IS_SHIFT)
+# define INT_IPC5_T5IP_SHIFT (2) /* Bits 2-4, Vector: 20, Timer 5 */
+# define INT_IPC5_T5IP_MASK (7 << INT_IPC5_T5IP_SHIFT)
+# define INT_IPC5_IC5IS_SHIFT (8) /* Bits 8-9, Vector: 21, Input Capture 5 */
+# define INT_IPC5_IC5IS_MASK (3 << INT_IPC5_IC5IS_SHIFT)
+# define INT_IPC5_IC5IP_SHIFT (10) /* Bits 10-12, Vector: 21, Input Capture 5 */
+# define INT_IPC5_IC5IP_MASK (7 << INT_IPC5_IC5IP_SHIFT)
+# define INT_IPC5_OC5IS_SHIFT (16) /* Bits 16-17, Vector: 22, Output Compare 5 */
+# define INT_IPC5_OC5IS_MASK (3 << INT_IPC5_OC5IS_SHIFT)
+# define INT_IPC5_OC5IP_SHIFT (18) /* Bits 18-20, Vector: 22, Output Compare 5 */
+# define INT_IPC5_OC5IP_MASK (7 << INT_IPC5_OC5IP_SHIFT)
+# define INT_IPC5_SPI1IS_SHIFT (24) /* Bits 24-25, Vector: 23, SPI1 */
+# define INT_IPC5_SPI1IS_MASK (3 << INT_IPC5_SPI1IS_SHIFT)
+# define INT_IPC5_SPI1IP_SHIFT (26) /* Bits 26-28, Vector: 23, SPI1 */
+# define INT_IPC5_SPI1IP_MASK (7 << INT_IPC5_SPI1IP_SHIFT)
+# define INT_IPC6_AD1IS_SHIFT (24) /* Bits 24-25, Vector: 23, ADC1 Convert Done */
+# define INT_IPC6_AD1IS_MASK (3 << INT_IPC6_AD1IS_SHIFT)
+# define INT_IPC6_AD1IP_SHIFT (26) /* Bits 26-28, Vector: 23, ADC1 Convert Done */
+# define INT_IPC6_AD1IP_MASK (7 << INT_IPC6_AD1IP_SHIFT)
+
+#else
+
+# define INT_IPC5_T5IS_SHIFT (0) /* Bits 0-1, Vector: 20, Timer 5 */
+# define INT_IPC5_T5IS_MASK (3 << INT_IPC5_T5IS_SHIFT)
+# define INT_IPC5_T5IP_SHIFT (2) /* Bits 2-4, Vector: 20, Timer 5 */
+# define INT_IPC5_T5IP_MASK (7 << INT_IPC5_T5IP_SHIFT)
+# define INT_IPC5_IC5IS_SHIFT (8) /* Bits 8-9, Vector: 21, Input Capture 5 */
+# define INT_IPC5_IC5IS_MASK (3 << INT_IPC5_IC5IS_SHIFT)
+# define INT_IPC5_IC5IP_SHIFT (10) /* Bits 10-12, Vector: 21, Input Capture 5 */
+# define INT_IPC5_IC5IP_MASK (7 << INT_IPC5_IC5IP_SHIFT)
+# define INT_IPC5_OC5IS_SHIFT (16) /* Bits 16-17, Vector: 22, Output Compare 5 */
+# define INT_IPC5_OC5IS_MASK (3 << INT_IPC5_OC5IS_SHIFT)
+# define INT_IPC5_OC5IP_SHIFT (18) /* Bits 18-20, Vector: 22, Output Compare 5 */
+# define INT_IPC5_OC5IP_MASK (7 << INT_IPC5_OC5IP_SHIFT)
+# define INT_IPC5_SPI1IS_SHIFT (24) /* Bits 24-25, Vector: 23, SPI1 */
+# define INT_IPC5_SPI1IS_MASK (3 << INT_IPC5_SPI1IS_SHIFT)
+# define INT_IPC5_SPI1IP_SHIFT (26) /* Bits 26-28, Vector: 23, SPI1 */
+# define INT_IPC5_SPI1IP_MASK (7 << INT_IPC5_SPI1IP_SHIFT)
+
+#endif
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define INT_IPC6_FSCMIS_SHIFT (0) /* Bits 0-1, Vector: 24, Fail-Safe Clock Monitor */
+# define INT_IPC6_FSCMIS_MASK (3 << INT_IPC6_FSCMIS_SHIFT)
+# define INT_IPC6_FSCMIP_SHIFT (2) /* Bits 2-4, Vector: 24, Fail-Safe Clock Monitor */
+# define INT_IPC6_FSCMIP_MASK (7 << INT_IPC6_FSCMIP_SHIFT)
+# define INT_IPC6_RTCCIS_SHIFT (8) /* Bits 8-9, Vector: 25, Real-Time Clock and Calendar */
+# define INT_IPC6_RTCCIS_MASK (3 << INT_IPC6_RTCCIS_SHIFT)
+# define INT_IPC6_RTCCIP_SHIFT (10) /* Bits 10-12, Vector: 25, Real-Time Clock and Calendar */
+# define INT_IPC6_RTCCIP_MASK (7 << INT_IPC6_RTCCIP_SHIFT)
+# define INT_IPC6_FCEIS_SHIFT (16) /* Bits 16-17, Vector: 26, Flash Control Event */
+# define INT_IPC6_FCEIS_MASK (3 << INT_IPC6_FCEIS_SHIFT)
+# define INT_IPC6_FCEIP_SHIFT (18) /* Bits 18-20, Vector: 26, Flash Control Event */
+# define INT_IPC6_FCEIP_MASK (7 << INT_IPC6_FCEIP_SHIFT)
+# define INT_IPC6_CMP1IS_SHIFT (24) /* Bits 24-25, Vector: 27, Comparator 1 */
+# define INT_IPC6_CMP1IS_MASK (3 << INT_IPC6_CMP1IS_SHIFT)
+# define INT_IPC6_CMP1IP_SHIFT (26) /* Bits 26-28, Vector: 27, Comparator 1 */
+# define INT_IPC6_CMP1IP_MASK (7 << INT_IPC6_CMP1IP_SHIFT)
+
+# define INT_IPC7_CMP2IS_SHIFT (0) /* Bits 0-1, Vector: 28, Comparator 2 */
+# define INT_IPC7_CMP2IS_MASK (3 << INT_IPC7_CMP2IS_SHIFT)
+# define INT_IPC7_CMP2IP_SHIFT (2) /* Bits 2-4, Vector: 28, Comparator 2 */
+# define INT_IPC7_CMP2IP_MASK (7 << INT_IPC7_CMP2IP_SHIFT)
+# define INT_IPC7_CMP3IS_SHIFT (8) /* Bits 8-9, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP3IS_MASK (3 << INT_IPC7_CMP3IS_SHIFT)
+# define INT_IPC7_CMP3IP_SHIFT (10) /* Bits 10-12, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP3IP_MASK (7 << INT_IPC7_CMP3IP_SHIFT)
+# define INT_IPC7_USBIS_SHIFT (16) /* Bits 16-17, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_USBIS_MASK (3 << INT_IPC7_USBIS_SHIFT)
+# define INT_IPC7_USBIP_SHIFT (18) /* Bits 18-20, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_USBIP_MASK (7 << INT_IPC7_USBIP_SHIFT)
+# define INT_IPC7_SPI1IS_SHIFT (24) /* Bits 24-25, Vector: 31, SPI1 */
+# define INT_IPC7_SPI1IS_MASK (3 << INT_IPC7_SPI1IS_SHIFT)
+# define INT_IPC7_SPI1IP_SHIFT (26) /* Bits 26-28, Vector: 31, SPI1 */
+# define INT_IPC7_SPI1IP_MASK (7 << INT_IPC7_SPI1IP_SHIFT)
+
+# define INT_IPC8_U1IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART1 */
+# define INT_IPC8_U1IS_MASK (3 << INT_IPC8_U1IS_SHIFT)
+# define INT_IPC8_U1IP_SHIFT (2) /* Bits 2-4, Vector: 32, UART1 */
+# define INT_IPC8_U1IP_MASK (7 << INT_IPC8_U1IP_SHIFT)
+# define INT_IPC8_I2C1IS_SHIFT (8) /* Bits 8-9, Vector: 33, I2C1 */
+# define INT_IPC8_I2C1IS_MASK (3 << INT_IPC8_I2C1IS_SHIFT)
+# define INT_IPC8_I2C1IP_SHIFT (10) /* Bits 10-12, Vector: 33, I2C1 */
+# define INT_IPC8_I2C1IP_MASK (7 << INT_IPC8_I2C1IP_SHIFT)
+# define INT_IPC8_CNIS_SHIFT (16) /* Bits 16-17, Vector: 34, Input Change */
+# define INT_IPC8_CNIS_MASK (3 << INT_IPC8_CNIS_SHIFT)
+# define INT_IPC8_CNIP_SHIFT (18) /* Bits 18-20, Vector: 34, Input Change */
+# define INT_IPC8_CNIP_MASK (7 << INT_IPC8_CNIP_SHIFT)
+# define INT_IPC8_PMPIS_SHIFT (24) /* Bits 24-25, Vector: 35, Parallel Master Port */
+# define INT_IPC8_PMPIS_MASK (3 << INT_IPC8_PMPIS_SHIFT)
+# define INT_IPC8_PMPIP_SHIFT (26) /* Bits 26-28, Vector: 35, RParallel Master Port */
+# define INT_IPC8_PMPIP_MASK (7 << INT_IPC8_PMPIP_SHIFT)
+
+# define INT_IPC9_SPI2IS_SHIFT (0) /* Bits 0-1, Vector: 36, SPI2 */
+# define INT_IPC9_SPI2IS_MASK (3 << INT_IPC9_SPI2IS_SHIFT)
+# define INT_IPC9_SPI2IP_SHIFT (2) /* Bits 2-4, Vector: 36, SPI2 */
+# define INT_IPC9_SPI2IP_MASK (7 << INT_IPC9_SPI2IP_SHIFT)
+# define INT_IPC9_U2IS_SHIFT (8) /* Bits 8-9, Vector: 37, UART2 */
+# define INT_IPC9_U2IS_MASK (3 << INT_IPC9_U2IS_SHIFT)
+# define INT_IPC9_U2IP_SHIFT (10) /* Bits 10-12, Vector: 37, UART2 */
+# define INT_IPC9_U2IP_MASK (7 << INT_IPC9_U2IP_SHIFT)
+# define INT_IPC9_I2C2IS_SHIFT (16) /* Bits 16-17, Vector: 38, I2C2 */
+# define INT_IPC9_I2C2IS_MASK (3 << INT_IPC9_I2C2IS_SHIFT)
+# define INT_IPC9_I2C2IP_SHIFT (18) /* Bits 18-20, Vector: 38, I2C2 */
+# define INT_IPC9_I2C2IP_MASK (7 << INT_IPC9_I2C2IP_SHIFT)
+# define INT_IPC9_CTMUIS_SHIFT (24) /* Bits 24-25, Vector: 39, CTMU */
+# define INT_IPC9_CTMUIS_MASK (3 << INT_IPC9_CTMUIS_SHIFT)
+# define INT_IPC9_CTMUIP_SHIFT (26) /* Bits 26-28, Vector: 39, CTMU */
+# define INT_IPC9_CTMUIP_MASK (7 << INT_IPC9_CTMUIP_SHIFT)
+
+# define INT_IPC10_DMA0IS_SHIFT (0) /* Bits 0-1, Vector: 40, DMA Channel 0 */
+# define INT_IPC10_DMA0IS_MASK (3 << INT_IPC10_DMA0IS_SHIFT)
+# define INT_IPC10_DMA0IP_SHIFT (2) /* Bits 2-4, Vector: 40, DMA Channel 0 */
+# define INT_IPC10_DMA0IP_MASK (7 << INT_IPC10_DMA0IP_SHIFT)
+# define INT_IPC10_DMA1IS_SHIFT (8) /* Bits 8-10, Vector: 41, DMA Channel 1 */
+# define INT_IPC10_DMA1IS_MASK (3 << INT_IPC10_DMA1IS_SHIFT)
+# define INT_IPC10_DMA1IP_SHIFT (10) /* Bits 10-12, Vector: 41, DMA Channel 1 */
+# define INT_IPC10_DMA1IP_MASK (7 << INT_IPC10_DMA1IP_SHIFT)
+# define INT_IPC10_DMA2IS_SHIFT (16) /* Bits 16-17, Vector: 42, DMA Channel 2 */
+# define INT_IPC10_DMA2IS_MASK (3 << INT_IPC10_DMA2IS_SHIFT)
+# define INT_IPC10_DMA2IP_SHIFT (18) /* Bits 18-20, Vector: 42, DMA Channel 2 */
+# define INT_IPC10_DMA2IP_MASK (7 << INT_IPC10_DMA2IP_SHIFT)
+# define INT_IPC10_DMA3IS_SHIFT (24) /* Bits 24-25, Vector: 43, DMA Channel 3 */
+# define INT_IPC10_DMA3IS_MASK (3 << INT_IPC10_DMA3IS_SHIFT)
+# define INT_IPC10_DMA3IP_SHIFT (26) /* Bits 26-28, Vector: 43, DMA Channel 3 */
+# define INT_IPC10_DMA3IP_MASK (7 << INT_IPC10_DMA3IP_SHIFT)
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+
+# define INT_IPC6_U1IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1 */
+# define INT_IPC6_U1IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
+# define INT_IPC6_U1IP_SHIFT (2) /* Bits 2-4, Vector: 24, UART1 */
+# define INT_IPC6_U1IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
+# define INT_IPC6_I2C1IS_SHIFT (8) /* Bits 8-9, Vector: 25, I2C1 */
+# define INT_IPC6_I2C1IS_MASK (3 << INT_IPC6_I2C1IS_SHIFT)
+# define INT_IPC6_I2C1IP_SHIFT (10) /* Bits 10-12, Vector: 25, I2C1 */
+# define INT_IPC6_I2C1IP_MASK (7 << INT_IPC6_I2C1IP_SHIFT)
+# define INT_IPC6_CNIS_SHIFT (16) /* Bits 16-17, Vector: 26, Input Change Interrupt */
+# define INT_IPC6_CNIS_MASK (3 << INT_IPC6_CNIS_SHIFT)
+# define INT_IPC6_CNIP_SHIFT (18) /* Bits 18-20, Vector: 26, Input Change Interrupt */
+# define INT_IPC6_CNIP_MASK (7 << INT_IPC6_CNIP_SHIFT)
+# define INT_IPC6_AD1IS_SHIFT (24) /* Bits 24-25, Vector: 27, ADC1 Convert Done */
+# define INT_IPC6_AD1IS_MASK (3 << INT_IPC6_AD1IS_SHIFT)
+# define INT_IPC6_AD1IP_SHIFT (26) /* Bits 26-28, Vector: 27, ADC1 Convert Done */
+# define INT_IPC6_AD1IP_MASK (7 << INT_IPC6_AD1IP_SHIFT)
+
+# define INT_IPC7_PMPIS_SHIFT (0) /* Bits 0-1, Vector: 28, Parallel Master Port */
+# define INT_IPC7_PMPIS_MASK (3 << INT_IPC7_PMPIS_SHIFT)
+# define INT_IPC7_PMPIP_SHIFT (2) /* Bits 2-4, Vector: 28, Parallel Master Port */
+# define INT_IPC7_PMPIP_MASK (7 << INT_IPC7_PMPIP_SHIFT)
+# define INT_IPC7_CMP1IS_SHIFT (8) /* Bits 8-9, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP1IS_MASK (3 << INT_IPC7_CMP1IS_SHIFT)
+# define INT_IPC7_CMP1IP_SHIFT (10) /* Bits 10-12, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP1IP_MASK (7 << INT_IPC7_CMP1IP_SHIFT)
+# define INT_IPC7_CMP2IS_SHIFT (16) /* Bits 16-17, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_CMP2IS_MASK (3 << INT_IPC7_CMP2IS_SHIFT)
+# define INT_IPC7_CMP2IP_SHIFT (18) /* Bits 18-20, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_CMP2IP_MASK (7 << INT_IPC7_CMP2IP_SHIFT)
+# define INT_IPC7_SPI2IS_SHIFT (24) /* Bits 24-25, Vector: 31, SPI2 */
+# define INT_IPC7_SPI2IS_MASK (3 << INT_IPC7_SPI2IS_SHIFT)
+# define INT_IPC7_SPI2IP_SHIFT (26) /* Bits 26-28, Vector: 31, SPI2 */
+# define INT_IPC7_SPI2IP_MASK (7 << INT_IPC7_SPI2IP_SHIFT)
+
+# define INT_IPC8_U2IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2 */
+# define INT_IPC8_U2IS_MASK (3 << INT_IPC8_U2IS_SHIFT)
+# define INT_IPC8_U2IP_SHIFT (2) /* Bits 2-4, Vector: 32, UART2 */
+# define INT_IPC8_U2IP_MASK (7 << INT_IPC8_U2IP_SHIFT)
+# define INT_IPC8_I2C2IS_SHIFT (8) /* Bits 8-9, Vector: 33, I2C2 */
+# define INT_IPC8_I2C2IS_MASK (3 << INT_IPC8_I2C2IS_SHIFT)
+# define INT_IPC8_I2C2IP_SHIFT (10) /* Bits 10-12, Vector: 33, I2C2 */
+# define INT_IPC8_I2C2IP_MASK (7 << INT_IPC8_I2C2IP_SHIFT)
+# define INT_IPC8_FSCMIS_SHIFT (16) /* Bits 16-17, Vector: 34, Fail-Safe Clock Monitor */
+# define INT_IPC8_FSCMIS_MASK (3 << INT_IPC8_FSCMIS_SHIFT)
+# define INT_IPC8_FSCMIP_SHIFT (18) /* Bits 18-20, Vector: 34, Fail-Safe Clock Monitor */
+# define INT_IPC8_FSCMIP_MASK (7 << INT_IPC8_FSCMIP_SHIFT)
+# define INT_IPC8_RTCCIS_SHIFT (24) /* Bits 24-25, Vector: 35, Real-Time Clock and Calendar */
+# define INT_IPC8_RTCCIS_MASK (3 << INT_IPC8_RTCCIS_SHIFT)
+# define INT_IPC8_RTCCIP_SHIFT (26) /* Bits 26-28, Vector: 35, Real-Time Clock and Calendar */
+# define INT_IPC8_RTCCIP_MASK (7 << INT_IPC8_RTCCIP_SHIFT)
+
+# define INT_IPC9_DMA0IS_SHIFT (0) /* Bits 0-1, Vector: 36, DMA Channel 0 */
+# define INT_IPC9_DMA0IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
+# define INT_IPC9_DMA0IP_SHIFT (2) /* Bits 2-4, Vector: 36, DMA Channel 0 */
+# define INT_IPC9_DMA0IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
+# define INT_IPC9_DMA1IS_SHIFT (8) /* Bits 8-9, Vector: 37, DMA Channel 1 */
+# define INT_IPC9_DMA1IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
+# define INT_IPC9_DMA1IP_SHIFT (10) /* Bits 10-12, Vector: 37, DMA Channel 1 */
+# define INT_IPC9_DMA1IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
+# define INT_IPC9_DMA2IS_SHIFT (16) /* Bits 16-17, Vector: 38, DMA Channel 2 */
+# define INT_IPC9_DMA2IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
+# define INT_IPC9_DMA2IP_SHIFT (18) /* Bits 18-20, Vector: 38, DMA Channel 2 */
+# define INT_IPC9_DMA2IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
+# define INT_IPC9_DMA3IS_SHIFT (24) /* Bits 24-25, Vector: 39, DMA Channel 3 */
+# define INT_IPC9_DMA3IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
+# define INT_IPC9_DMA3IP_SHIFT (26) /* Bits 26-28, Vector: 39, DMA Channel 3 */
+# define INT_IPC9_DMA3IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
+
+# define INT_IPC11_FCEIS_SHIFT (0) /* Bits 0-1, Vector: 44, Flash Control Event */
+# define INT_IPC11_FCEIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
+# define INT_IPC11_FCEIP_SHIFT (2) /* Bits 2-4, Vector: 44, Flash Control Event */
+# define INT_IPC11_FCEIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
+# define INT_IPC11_USBIS_SHIFT (8) /* Bits 8-9, Vector: 45, USB */
+# define INT_IPC11_USBIS_MASK (3 << INT_IPC11_USBIS_SHIFT)
+# define INT_IPC11_USBIP_SHIFT (10) /* Bits 10-12, Vector: 45, USB */
+# define INT_IPC11_USBIP_MASK (7 << INT_IPC11_USBIP_SHIFT)
+
+#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+
+# define INT_IPC6_VEC24IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1, SPI3, I2C3 */
+# define INT_IPC6_VEC24IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
+# define INT_IPC6_U1IS_SHIFT (0) /* Bits 0-1, Vector: 24, UART1 */
+# define INT_IPC6_U1IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
+# define INT_IPC6_SPI3IS_SHIFT (0) /* Bits 0-1, Vector: 24, SPI3 */
+# define INT_IPC6_SPI3IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
+# define INT_IPC6_I2C3IS_SHIFT (0) /* Bits 0-1, Vector: 24, I2C3 */
+# define INT_IPC6_I2C3IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
+# define INT_IPC6_VEC24IP_SHIFT (0) /* Bits 2-4, Vector: 24, UART1, SPI3, I2C3 */
+# define INT_IPC6_VEC24IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
+# define INT_IPC6_U1IP_SHIFT (2) /* Bits 2-4, Vector: 24, UART1 */
+# define INT_IPC6_U1IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
+# define INT_IPC6_SPI3IP_SHIFT (2) /* Bits 2-4, Vector: 24, SPI3 */
+# define INT_IPC6_SPI3IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
+# define INT_IPC6_I2C3IP_SHIFT (2) /* Bits 2-4, Vector: 24, I2C3 */
+# define INT_IPC6_I2C3IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
+# define INT_IPC6_I2C1IS_SHIFT (8) /* Bits 8-9, Vector: 25, I2C1 */
+# define INT_IPC6_I2C1IS_MASK (3 << INT_IPC6_I2C1IS_SHIFT)
+# define INT_IPC6_I2C1IP_SHIFT (10) /* Bits 10-12, Vector: 25, I2C1 */
+# define INT_IPC6_I2C1IP_MASK (7 << INT_IPC6_I2C1IP_SHIFT)
+# define INT_IPC6_CNIS_SHIFT (16) /* Bits 16-17, Vector: 26, Input Change Interrupt */
+# define INT_IPC6_CNIS_MASK (3 << INT_IPC6_CNIS_SHIFT)
+# define INT_IPC6_CNIP_SHIFT (18) /* Bits 18-20, Vector: 26, Input Change Interrupt */
+# define INT_IPC6_CNIP_MASK (7 << INT_IPC6_CNIP_SHIFT)
+# define INT_IPC6_AD1IS_SHIFT (24) /* Bits 24-25, Vector: 27, ADC1 Convert Done */
+# define INT_IPC6_AD1IS_MASK (3 << INT_IPC6_AD1IS_SHIFT)
+# define INT_IPC6_AD1IP_SHIFT (26) /* Bits 26-28, Vector: 27, ADC1 Convert Done */
+# define INT_IPC6_AD1IP_MASK (7 << INT_IPC6_AD1IP_SHIFT)
+
+# define INT_IPC7_PMPIS_SHIFT (0) /* Bits 0-1, Vector: 28, Parallel Master Port */
+# define INT_IPC7_PMPIS_MASK (3 << INT_IPC7_PMPIS_SHIFT)
+# define INT_IPC7_PMPIP_SHIFT (2) /* Bits 2-4, Vector: 28, Parallel Master Port */
+# define INT_IPC7_PMPIP_MASK (7 << INT_IPC7_PMPIP_SHIFT)
+# define INT_IPC7_CMP1IS_SHIFT (8) /* Bits 8-9, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP1IS_MASK (3 << INT_IPC7_CMP1IS_SHIFT)
+# define INT_IPC7_CMP1IP_SHIFT (10) /* Bits 10-12, Vector: 29, Comparator Interrupt */
+# define INT_IPC7_CMP1IP_MASK (7 << INT_IPC7_CMP1IP_SHIFT)
+# define INT_IPC7_CMP2IS_SHIFT (16) /* Bits 16-17, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_CMP2IS_MASK (3 << INT_IPC7_CMP2IS_SHIFT)
+# define INT_IPC7_CMP2IP_SHIFT (18) /* Bits 18-20, Vector: 30, Comparator Interrupt */
+# define INT_IPC7_CMP2IP_MASK (7 << INT_IPC7_CMP2IP_SHIFT)
+# define INT_IPC6_VEC31IS_SHIFT (24) /* Bits 24-25, Vector: 31, UART3, SPI2, I2C4 */
+# define INT_IPC6_VEC31IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
+# define INT_IPC6_U3IS_SHIFT (24) /* Bits 24-25, Vector: 31, UART3 */
+# define INT_IPC6_U3IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
+# define INT_IPC6_SPI2IS_SHIFT (24) /* Bits 24-25, Vector: 31, SPI2 */
+# define INT_IPC6_SPI2IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
+# define INT_IPC6_I2C4IS_SHIFT (24) /* Bits 24-25, Vector: 31, I2C4 */
+# define INT_IPC6_I2C4IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
+# define INT_IPC6_VEC31IP_SHIFT (26) /* Bits 26-28, Vector: 31, UART3, SPI2, I2C4 */
+# define INT_IPC6_VEC31IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
+# define INT_IPC6_U3IP_SHIFT (26) /* Bits 26-28, Vector: 31, UART3 */
+# define INT_IPC6_U3IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
+# define INT_IPC6_SPI2IP_SHIFT (26) /* Bits 26-28, Vector: 31, SPI2 */
+# define INT_IPC6_SPI2IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
+# define INT_IPC6_I2C4IP_SHIFT (26) /* Bits 26-28, Vector: 31, I2C4 */
+# define INT_IPC6_I2C4IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
+
+# define INT_IPC6_VEC32IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2, SPI4, I2C5 */
+# define INT_IPC6_VEC32IS_MASK (3 << INT_IPC6_INT26IS_SHIFT)
+# define INT_IPC6_U2IS_SHIFT (0) /* Bits 0-1, Vector: 32, UART2 */
+# define INT_IPC6_U2IS_MASK (3 << INT_IPC6_U1IS_SHIFT)
+# define INT_IPC6_SPI4IS_SHIFT (0) /* Bits 0-1, Vector: 32, SPI4 */
+# define INT_IPC6_SPI4IS_MASK (3 << INT_IPC6_SPI3IS_SHIFT)
+# define INT_IPC6_I2C5IS_SHIFT (0) /* Bits 0-1, Vector: 32, I2C5 */
+# define INT_IPC6_I2C5IS_MASK (3 << INT_IPC6_I2C3IS_SHIFT)
+# define INT_IPC6_VEC32IP_SHIFT (0) /* Bits 2-4, Vector: 32, UART2, SPI4, I2C5 */
+# define INT_IPC6_VEC32IP_MASK (7 << INT_IPC6_INT26IP_SHIFT)
+# define INT_IPC6_U2IP_SHIFT (2) /* Bits 2-4, Vector: 32, UART2 */
+# define INT_IPC6_U2IP_MASK (7 << INT_IPC6_U1IP_SHIFT)
+# define INT_IPC6_SPI4IP_SHIFT (2) /* Bits 2-4, Vector: 32, SPI4 */
+# define INT_IPC6_SPI4IP_MASK (7 << INT_IPC6_SPI3IP_SHIFT)
+# define INT_IPC6_I2C5IP_SHIFT (2) /* Bits 2-4, Vector: 32, I2C5 */
+# define INT_IPC6_I2C5IP_MASK (7 << INT_IPC6_I2C3IP_SHIFT)
+# define INT_IPC8_I2C2IS_SHIFT (8) /* Bits 8-9, Vector: 33, I2C2 */
+# define INT_IPC8_I2C2IS_MASK (3 << INT_IPC8_I2C2IS_SHIFT)
+# define INT_IPC8_I2C2IP_SHIFT (10) /* Bits 10-12, Vector: 33, I2C2 */
+# define INT_IPC8_I2C2IP_MASK (7 << INT_IPC8_I2C2IP_SHIFT)
+# define INT_IPC8_FSCMIS_SHIFT (16) /* Bits 16-17, Vector: 34, Fail-Safe Clock Monitor */
+# define INT_IPC8_FSCMIS_MASK (3 << INT_IPC8_FSCMIS_SHIFT)
+# define INT_IPC8_FSCMIP_SHIFT (18) /* Bits 18-20, Vector: 34, Fail-Safe Clock Monitor */
+# define INT_IPC8_FSCMIP_MASK (7 << INT_IPC8_FSCMIP_SHIFT)
+# define INT_IPC8_RTCCIS_SHIFT (24) /* Bits 24-25, Vector: 35, Real-Time Clock and Calendar */
+# define INT_IPC8_RTCCIS_MASK (3 << INT_IPC8_RTCCIS_SHIFT)
+# define INT_IPC8_RTCCIP_SHIFT (26) /* Bits 26-28, Vector: 35, Real-Time Clock and Calendar */
+# define INT_IPC8_RTCCIP_MASK (7 << INT_IPC8_RTCCIP_SHIFT)
+
+# define INT_IPC9_DMA0IS_SHIFT (0) /* Bits 0-1, Vector: 36, DMA Channel 0 */
+# define INT_IPC9_DMA0IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
+# define INT_IPC9_DMA0IP_SHIFT (2) /* Bits 2-4, Vector: 36, DMA Channel 0 */
+# define INT_IPC9_DMA0IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
+# define INT_IPC9_DMA1IS_SHIFT (8) /* Bits 8-9, Vector: 37, DMA Channel 1 */
+# define INT_IPC9_DMA1IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
+# define INT_IPC9_DMA1IP_SHIFT (10) /* Bits 10-12, Vector: 37, DMA Channel 1 */
+# define INT_IPC9_DMA1IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
+# define INT_IPC9_DMA2IS_SHIFT (16) /* Bits 16-17, Vector: 38, DMA Channel 2 */
+# define INT_IPC9_DMA2IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
+# define INT_IPC9_DMA2IP_SHIFT (18) /* Bits 18-20, Vector: 38, DMA Channel 2 */
+# define INT_IPC9_DMA2IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
+# define INT_IPC9_DMA3IS_SHIFT (24) /* Bits 24-25, Vector: 39, DMA Channel 3 */
+# define INT_IPC9_DMA3IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
+# define INT_IPC9_DMA3IP_SHIFT (26) /* Bits 26-28, Vector: 39, DMA Channel 3 */
+# define INT_IPC9_DMA3IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
+
+# define INT_IPC10_DMA4IS_SHIFT (0) /* Bits 0-1, Vector: 40, DMA Channel 4 */
+# define INT_IPC10_DMA4IS_MASK (3 << INT_IPC9_DMA0IS_SHIFT)
+# define INT_IPC10_DMA4IP_SHIFT (2) /* Bits 2-4, Vector: 40, DMA Channel 4 */
+# define INT_IPC10_DMA4IP_MASK (7 << INT_IPC9_DMA0IP_SHIFT)
+# define INT_IPC10_DMA5IS_SHIFT (8) /* Bits 8-9, Vector: 41, DMA Channel 5 */
+# define INT_IPC10_DMA5IS_MASK (3 << INT_IPC9_DMA1IS_SHIFT)
+# define INT_IPC10_DMA5IP_SHIFT (10) /* Bits 10-12, Vector: 41, DMA Channel 5 */
+# define INT_IPC10_DMA5IP_MASK (7 << INT_IPC9_DMA1IP_SHIFT)
+# define INT_IPC10_DMA6IS_SHIFT (16) /* Bits 16-17, Vector: 42, DMA Channel 6 */
+# define INT_IPC10_DMA6IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
+# define INT_IPC10_DMA6IP_SHIFT (18) /* Bits 18-20, Vector: 42, DMA Channel 6 */
+# define INT_IPC10_DMA6IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
+# define INT_IPC10_DMA7IS_SHIFT (24) /* Bits 24-25, Vector: 43, DMA Channel 7 */
+# define INT_IPC10_DMA7IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
+# define INT_IPC10_DMA7IP_SHIFT (26) /* Bits 26-28, Vector: 43, DMA Channel 7 */
+# define INT_IPC10_DMA7IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
+
+# define INT_IPC11_FCEIS_SHIFT (0) /* Bits 0-1, Vector: 44, Flash Control Event */
+# define INT_IPC11_FCEIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
+# define INT_IPC11_FCEIP_SHIFT (2) /* Bits 2-4, Vector: 44, Flash Control Event */
+# define INT_IPC11_FCEIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
+# define INT_IPC11_USBIS_SHIFT (8) /* Bits 8-9, Vector: 45, USB */
+# define INT_IPC11_USBIS_MASK (3 << INT_IPC11_USBIS_SHIFT)
+# define INT_IPC11_USBIP_SHIFT (10) /* Bits 10-12, Vector: 45, USB */
+# define INT_IPC11_USBIP_MASK (7 << INT_IPC11_USBIP_SHIFT)
+# define INT_IPC11_CAN1IS_SHIFT (16) /* Bits 16-17, Vector: 46, Controller area network 1 */
+# define INT_IPC11_CAN1IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
+# define INT_IPC11_CAN1IP_SHIFT (18) /* Bits 18-20, Vector: 46, Controller area network 1 */
+# define INT_IPC11_CAN1IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
+# define INT_IPC11_CAN2IS_SHIFT (24) /* Bits 24-25, Vector: 47, Controller area network 2 */
+# define INT_IPC11_CAN2IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
+# define INT_IPC11_CAN2IP_SHIFT (26) /* Bits 26-28, Vector: 47, Controller area network 2 */
+# define INT_IPC11_CAN2IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
+
+# define INT_IPC12_ETHIS_SHIFT (0) /* Bits 0-1, Vector: 48, Ethernet interrupt */
+# define INT_IPC12_ETHIS_MASK (3 << INT_IPC11_FCEIS_SHIFT)
+# define INT_IPC12_ETHIP_SHIFT (2) /* Bits 2-4, Vector: 48, Ethernet interrupt */
+# define INT_IPC12_ETHIP_MASK (7 << INT_IPC11_FCEIP_SHIFT)
+# define INT_IPC12_U4IS_SHIFT (8) /* Bits 8-9, Vector: 49, UART4 */
+# define INT_IPC12_U4IS_MASK (3 << INT_IPC11_USBIS_SHIFT)
+# define INT_IPC12_U4IP_SHIFT (10) /* Bits 10-12, Vector: 49, UART4 */
+# define INT_IPC12_U4IP_MASK (7 << INT_IPC11_USBIP_SHIFT)
+# define INT_IPC12_U6IS_SHIFT (16) /* Bits 16-17, Vector: 50, UART6 */
+# define INT_IPC12_U6IS_MASK (3 << INT_IPC9_DMA2IS_SHIFT)
+# define INT_IPC12_U6IP_SHIFT (18) /* Bits 18-20, Vector: 50, UART6 */
+# define INT_IPC12_U6IP_MASK (7 << INT_IPC9_DMA2IP_SHIFT)
+# define INT_IPC12_U5IS_SHIFT (24) /* Bits 24-25, Vector: 51, UART5 */
+# define INT_IPC12_U5IS_MASK (3 << INT_IPC9_DMA3IS_SHIFT)
+# define INT_IPC12_U5IP_SHIFT (26) /* Bits 26-28, Vector: 51, UART5 */
+# define INT_IPC12_U5IP_MASK (7 << INT_IPC9_DMA3IP_SHIFT)
+
+#else
+# error "Unknown PIC32MX family
+#endif
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_INT_H */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-internal.h b/nuttx/arch/mips/src/pic32mx/pic32mx-internal.h
index 6d9373df8..7ba2d239f 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-internal.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-internal.h
@@ -59,7 +59,7 @@
/* GPIO settings used in the configport, readport, writeport, etc.
*
* General encoding:
- * MMxV IIxx RRRx PPPP
+ * MMxV IIDx RRRx PPPP
*/
#define GPIO_MODE_SHIFT (14) /* Bits 14-15: I/O mode */
@@ -72,12 +72,20 @@
# define GPIO_VALUE_ONE (1 << 12)
# define GPIO_VALUE_ZERO (0)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define GPIO_PULLUP (1 << 11) /* Bit 11: Change notification pull-up */
+#endif
+
#define GPIO_INT_SHIFT (10) /* Bits 10-11: Interrupt mode */
#define GPIO_INT_MASK (3 << GPIO_INT_SHIFT)
# define GPIO_INT_NONE (0 << GPIO_INT_SHIFT) /* Bit 00: No interrupt */
# define GPIO_INT (1 << GPIO_INT_SHIFT) /* Bit 01: Change notification enable */
# define GPIO_PUINT (3 << GPIO_INT_SHIFT) /* Bit 11: Pulled-up interrupt input */
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define GPIO_PULLDOWN (1 << 9) /* Bit 11: Change notification pull-down */
+#endif
+
#define GPIO_PORT_SHIFT (5) /* Bits 5-7: Port number */
#define GPIO_PORT_MASK (7 << GPIO_PORT_SHIFT)
# define GPIO_PORTA (0 << GPIO_PORT_SHIFT)
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-ioport.h b/nuttx/arch/mips/src/pic32mx/pic32mx-ioport.h
index a84d05cb9..578ce055b 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-ioport.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-ioport.h
@@ -49,42 +49,92 @@
* Pre-Processor Definitions
********************************************************************************************/
/* Register Offsets *************************************************************************/
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+/* Offsets relative to PIC32MX_IOPORTn_K1BASE */
+
+# define PIC32MX_IOPORT_ANSEL_OFFSET 0x0000 /* Analog select register */
+# define PIC32MX_IOPORT_ANSELCLR_OFFSET 0x0004 /* Analog select clear register */
+# define PIC32MX_IOPORT_ANSELSET_OFFSET 0x0008 /* Analog select set register */
+# define PIC32MX_IOPORT_ANSELINV_OFFSET 0x000c /* Analog select invert register */
+# define PIC32MX_IOPORT_TRIS_OFFSET 0x0010 /* Tri-state register */
+# define PIC32MX_IOPORT_TRISCLR_OFFSET 0x0014 /* Tri-state clear register */
+# define PIC32MX_IOPORT_TRISSET_OFFSET 0x0018 /* Tri-state set register */
+# define PIC32MX_IOPORT_TRISINV_OFFSET 0x001c /* Tri-state invert register */
+# define PIC32MX_IOPORT_PORT_OFFSET 0x0020 /* Port register */
+# define PIC32MX_IOPORT_PORTCLR_OFFSET 0x0024 /* Port clear register */
+# define PIC32MX_IOPORT_PORTSET_OFFSET 0x0028 /* Port set register */
+# define PIC32MX_IOPORT_PORTINV_OFFSET 0x002c /* Port invert register */
+# define PIC32MX_IOPORT_LAT_OFFSET 0x0030 /* Port data latch register */
+# define PIC32MX_IOPORT_LATCLR_OFFSET 0x0034 /* Port data latch clear register */
+# define PIC32MX_IOPORT_LATSET_OFFSET 0x0038 /* Port data latch set register */
+# define PIC32MX_IOPORT_LATINV_OFFSET 0x003c /* Port data latch invert register */
+# define PIC32MX_IOPORT_ODC_OFFSET 0x0040 /* Open drain control register */
+# define PIC32MX_IOPORT_ODCCLR_OFFSET 0x0044 /* Open drain control clear register */
+# define PIC32MX_IOPORT_ODCSET_OFFSET 0x0048 /* Open drain control set register */
+# define PIC32MX_IOPORT_ODCINV_OFFSET 0x004c /* Open drain control invert register */
+# define PIC32MX_IOPORT_CNPU_OFFSET 0x0050 /* Change Notification Pull-up register */
+# define PIC32MX_IOPORT_CNPUCLR_OFFSET 0x0054 /* Change Notification Pull-up clear register */
+# define PIC32MX_IOPORT_CNPUSET_OFFSET 0x0058 /* Change Notification Pull-up set register */
+# define PIC32MX_IOPORT_CNPUINV_OFFSET 0x005c /* Change Notification Pull-up invert register */
+# define PIC32MX_IOPORT_CNPD_OFFSET 0x0060 /* Change Notification Pull-down register */
+# define PIC32MX_IOPORT_CNPDCLR_OFFSET 0x0064 /* Change Notification Pull-down clear register */
+# define PIC32MX_IOPORT_CNPDSET_OFFSET 0x0068 /* Change Notification Pull-down set register */
+# define PIC32MX_IOPORT_CNPDINV_OFFSET 0x006c /* Change Notification Pull-down invert register */
+# define PIC32MX_IOPORT_CNCON_OFFSET 0x0070 /* Change Notification Control register */
+# define PIC32MX_IOPORT_CNCONCLR_OFFSET 0x0074 /* Change Notification Control clear register */
+# define PIC32MX_IOPORT_CNCONSET_OFFSET 0x0078 /* Change Notification Control set register */
+# define PIC32MX_IOPORT_CNCONINV_OFFSET 0x007c /* Change Notification Control invert register */
+# define PIC32MX_IOPORT_CNEN_OFFSET 0x0080 /* Change Notification Interrupt Enable register */
+# define PIC32MX_IOPORT_CNENCLR_OFFSET 0x0084 /* Change Notification Interrupt Enable clear register */
+# define PIC32MX_IOPORT_CNENSET_OFFSET 0x0088 /* Change Notification Interrupt Enable set register */
+# define PIC32MX_IOPORT_CNENINV_OFFSET 0x008c /* Change Notification Interrupt Enable *invert register */
+
+#else
/* Offsets relative to PIC32MX_IOPORTn_K1BASE */
-#define PIC32MX_IOPORT_TRIS_OFFSET 0x0000 /* Tri-state register */
-#define PIC32MX_IOPORT_TRISCLR_OFFSET 0x0004 /* Tri-state clear register */
-#define PIC32MX_IOPORT_TRISSET_OFFSET 0x0008 /* Tri-state set register */
-#define PIC32MX_IOPORT_TRISINV_OFFSET 0x000c /* Tri-state invert register */
-#define PIC32MX_IOPORT_PORT_OFFSET 0x0010 /* Port register */
-#define PIC32MX_IOPORT_PORTCLR_OFFSET 0x0014 /* Port clear register */
-#define PIC32MX_IOPORT_PORTSET_OFFSET 0x0018 /* Port set register */
-#define PIC32MX_IOPORT_PORTINV_OFFSET 0x001c /* Port invert register */
-#define PIC32MX_IOPORT_LAT_OFFSET 0x0020 /* Port data latch register */
-#define PIC32MX_IOPORT_LATCLR_OFFSET 0x0024 /* Port data latch clear register */
-#define PIC32MX_IOPORT_LATSET_OFFSET 0x0028 /* Port data latch set register */
-#define PIC32MX_IOPORT_LATINV_OFFSET 0x002c /* Port data latch invert register */
-#define PIC32MX_IOPORT_ODC_OFFSET 0x0030 /* Open drain control register */
-#define PIC32MX_IOPORT_ODCCLR_OFFSET 0x0034 /* Open drain control clear register */
-#define PIC32MX_IOPORT_ODCSET_OFFSET 0x0038 /* Open drain control set register */
-#define PIC32MX_IOPORT_ODCINV_OFFSET 0x003c /* Open drain control invert register */
+# define PIC32MX_IOPORT_TRIS_OFFSET 0x0000 /* Tri-state register */
+# define PIC32MX_IOPORT_TRISCLR_OFFSET 0x0004 /* Tri-state clear register */
+# define PIC32MX_IOPORT_TRISSET_OFFSET 0x0008 /* Tri-state set register */
+# define PIC32MX_IOPORT_TRISINV_OFFSET 0x000c /* Tri-state invert register */
+# define PIC32MX_IOPORT_PORT_OFFSET 0x0010 /* Port register */
+# define PIC32MX_IOPORT_PORTCLR_OFFSET 0x0014 /* Port clear register */
+# define PIC32MX_IOPORT_PORTSET_OFFSET 0x0018 /* Port set register */
+# define PIC32MX_IOPORT_PORTINV_OFFSET 0x001c /* Port invert register */
+# define PIC32MX_IOPORT_LAT_OFFSET 0x0020 /* Port data latch register */
+# define PIC32MX_IOPORT_LATCLR_OFFSET 0x0024 /* Port data latch clear register */
+# define PIC32MX_IOPORT_LATSET_OFFSET 0x0028 /* Port data latch set register */
+# define PIC32MX_IOPORT_LATINV_OFFSET 0x002c /* Port data latch invert register */
+# define PIC32MX_IOPORT_ODC_OFFSET 0x0030 /* Open drain control register */
+# define PIC32MX_IOPORT_ODCCLR_OFFSET 0x0034 /* Open drain control clear register */
+# define PIC32MX_IOPORT_ODCSET_OFFSET 0x0038 /* Open drain control set register */
+# define PIC32MX_IOPORT_ODCINV_OFFSET 0x003c /* Open drain control invert register */
/* Offsets relative to PIC32MX_IOPORTCN_K1BASE */
-#define PIC32MX_IOPORT_CNCON_OFFSET 0x0000 /* Interrupt-on-change control register */
-#define PIC32MX_IOPORT_CNCONCLR_OFFSET 0x0004 /* Interrupt-on-change control clear register */
-#define PIC32MX_IOPORT_CNCONSET_OFFSET 0x0008 /* Interrupt-on-change control set register */
-#define PIC32MX_IOPORT_CNCONINV_OFFSET 0x000c /* Interrupt-on-change control invert register */
-#define PIC32MX_IOPORT_CNEN_OFFSET 0x0010 /* Input change notification interrupt enable */
-#define PIC32MX_IOPORT_CNENCLR_OFFSET 0x0014 /* Input change notification interrupt enable clear */
-#define PIC32MX_IOPORT_CNENSET_OFFSET 0x0018 /* Input change notification interrupt enable set */
-#define PIC32MX_IOPORT_CNENINV_OFFSET 0x001c /* Input change notification interrupt enable invert */
-#define PIC32MX_IOPORT_CNPUE_OFFSET 0x0020 /* Input change notification pull-up enable */
-#define PIC32MX_IOPORT_CNPUECLR_OFFSET 0x0024 /* Input change notification pull-up enable clear */
-#define PIC32MX_IOPORT_CNPUESET_OFFSET 0x0028 /* Input change notification pull-up enable set */
-#define PIC32MX_IOPORT_CNPUEINV_OFFSET 0x002c /* Input change notification pull-up enable invert */
+# define PIC32MX_IOPORT_CNCON_OFFSET 0x0000 /* Interrupt-on-change control register */
+# define PIC32MX_IOPORT_CNCONCLR_OFFSET 0x0004 /* Interrupt-on-change control clear register */
+# define PIC32MX_IOPORT_CNCONSET_OFFSET 0x0008 /* Interrupt-on-change control set register */
+# define PIC32MX_IOPORT_CNCONINV_OFFSET 0x000c /* Interrupt-on-change control invert register */
+# define PIC32MX_IOPORT_CNEN_OFFSET 0x0010 /* Input change notification interrupt enable */
+# define PIC32MX_IOPORT_CNENCLR_OFFSET 0x0014 /* Input change notification interrupt enable clear */
+# define PIC32MX_IOPORT_CNENSET_OFFSET 0x0018 /* Input change notification interrupt enable set */
+# define PIC32MX_IOPORT_CNENINV_OFFSET 0x001c /* Input change notification interrupt enable invert */
+# define PIC32MX_IOPORT_CNPUE_OFFSET 0x0020 /* Input change notification pull-up enable */
+# define PIC32MX_IOPORT_CNPUECLR_OFFSET 0x0024 /* Input change notification pull-up enable clear */
+# define PIC32MX_IOPORT_CNPUESET_OFFSET 0x0028 /* Input change notification pull-up enable set */
+# define PIC32MX_IOPORT_CNPUEINV_OFFSET 0x002c /* Input change notification pull-up enable invert */
+#endif
/* Register Addresses ***********************************************************************/
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORT_ANSEL(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ANSEL_OFFSET)
+# define PIC32MX_IOPORT_ANSELCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ANSELCLR_OFFSET)
+# define PIC32MX_IOPORT_ANSELSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ANSELSET_OFFSET)
+# define PIC32MX_IOPORT_ANSELINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ANSELINV_OFFSET)
+#endif
+
#define PIC32MX_IOPORT_TRIS(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_TRIS_OFFSET)
#define PIC32MX_IOPORT_TRISCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_TRISCLR_OFFSET)
#define PIC32MX_IOPORT_TRISSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_TRISSET_OFFSET)
@@ -102,6 +152,32 @@
#define PIC32MX_IOPORT_ODCSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ODCSET_OFFSET)
#define PIC32MX_IOPORT_ODCINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_ODCINV_OFFSET)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORT_CNPU(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPU_OFFSET)
+# define PIC32MX_IOPORT_CNPUCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPUCLR_OFFSET)
+# define PIC32MX_IOPORT_CNPUSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPUSET_OFFSET)
+# define PIC32MX_IOPORT_CNPUINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPUINV_OFFSET)
+# define PIC32MX_IOPORT_CNPD(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPD_OFFSET)
+# define PIC32MX_IOPORT_CNPDCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPDCLR_OFFSET)
+# define PIC32MX_IOPORT_CNPDSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPDSET_OFFSET)
+# define PIC32MX_IOPORT_CNPDINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNPDINV_OFFSET)
+# define PIC32MX_IOPORT_CNCON(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNCON_OFFSET)
+# define PIC32MX_IOPORT_CNCONCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNCONCLR_OFFSET)
+# define PIC32MX_IOPORT_CNCONSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNCONSET_OFFSET)
+# define PIC32MX_IOPORT_CNCONINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNCONINV_OFFSET)
+# define PIC32MX_IOPORT_CNEN(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNEN_OFFSET)
+# define PIC32MX_IOPORT_CNENCLR(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNENCLR_OFFSET)
+# define PIC32MX_IOPORT_CNENSET(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNENSET_OFFSET)
+# define PIC32MX_IOPORT_CNENINV(n) (PIC32MX_IOPORT_K1BASE(n)+PIC32MX_IOPORT_CNENINV_OFFSET)
+#endif
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTA_ANSEL (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ANSEL_OFFSET)
+# define PIC32MX_IOPORTA_ANSELCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ANSELCLR_OFFSET)
+# define PIC32MX_IOPORTA_ANSELSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ANSELSET_OFFSET)
+# define PIC32MX_IOPORTA_ANSELINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ANSELINV_OFFSET)
+#endif
+
#define PIC32MX_IOPORTA_TRIS (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_TRIS_OFFSET)
#define PIC32MX_IOPORTA_TRISCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_TRISCLR_OFFSET)
#define PIC32MX_IOPORTA_TRISSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_TRISSET_OFFSET)
@@ -119,6 +195,32 @@
#define PIC32MX_IOPORTA_ODCSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ODCSET_OFFSET)
#define PIC32MX_IOPORTA_ODCINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_ODCINV_OFFSET)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTA_CNPU (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPU_OFFSET)
+# define PIC32MX_IOPORTA_CNPUCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPUCLR_OFFSET)
+# define PIC32MX_IOPORTA_CNPUSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPUSET_OFFSET)
+# define PIC32MX_IOPORTA_CNPUINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPUINV_OFFSET)
+# define PIC32MX_IOPORTA_CNPD (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPD_OFFSET)
+# define PIC32MX_IOPORTA_CNPDCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPDCLR_OFFSET)
+# define PIC32MX_IOPORTA_CNPDSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPDSET_OFFSET)
+# define PIC32MX_IOPORTA_CNPDINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNPDINV_OFFSET)
+# define PIC32MX_IOPORTA_CNCON (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNCON_OFFSET)
+# define PIC32MX_IOPORTA_CNCONCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNCONCLR_OFFSET)
+# define PIC32MX_IOPORTA_CNCONSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNCONSET_OFFSET)
+# define PIC32MX_IOPORTA_CNCONINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNCONINV_OFFSET)
+# define PIC32MX_IOPORTA_CNEN (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNEN_OFFSET)
+# define PIC32MX_IOPORTA_CNENCLR (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNENCLR_OFFSET)
+# define PIC32MX_IOPORTA_CNENSET (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNENSET_OFFSET)
+# define PIC32MX_IOPORTA_CNENINV (PIC32MX_IOPORTA_K1BASE+PIC32MX_IOPORT_CNENINV_OFFSET)
+#endif
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTB_ANSEL (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ANSEL_OFFSET)
+# define PIC32MX_IOPORTB_ANSELCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ANSELCLR_OFFSET)
+# define PIC32MX_IOPORTB_ANSELSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ANSELSET_OFFSET)
+# define PIC32MX_IOPORTB_ANSELINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ANSELINV_OFFSET)
+#endif
+
#define PIC32MX_IOPORTB_TRIS (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_TRIS_OFFSET)
#define PIC32MX_IOPORTB_TRISCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_TRISCLR_OFFSET)
#define PIC32MX_IOPORTB_TRISSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_TRISSET_OFFSET)
@@ -136,6 +238,32 @@
#define PIC32MX_IOPORTB_ODCSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ODCSET_OFFSET)
#define PIC32MX_IOPORTB_ODCINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_ODCINV_OFFSET)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTB_CNPU (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPU_OFFSET)
+# define PIC32MX_IOPORTB_CNPUCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPUCLR_OFFSET)
+# define PIC32MX_IOPORTB_CNPUSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPUSET_OFFSET)
+# define PIC32MX_IOPORTB_CNPUINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPUINV_OFFSET)
+# define PIC32MX_IOPORTB_CNPD (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPD_OFFSET)
+# define PIC32MX_IOPORTB_CNPDCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPDCLR_OFFSET)
+# define PIC32MX_IOPORTB_CNPDSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPDSET_OFFSET)
+# define PIC32MX_IOPORTB_CNPDINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNPDINV_OFFSET)
+# define PIC32MX_IOPORTB_CNCON (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNCON_OFFSET)
+# define PIC32MX_IOPORTB_CNCONCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNCONCLR_OFFSET)
+# define PIC32MX_IOPORTB_CNCONSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNCONSET_OFFSET)
+# define PIC32MX_IOPORTB_CNCONINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNCONINV_OFFSET)
+# define PIC32MX_IOPORTB_CNEN (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNEN_OFFSET)
+# define PIC32MX_IOPORTB_CNENCLR (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNENCLR_OFFSET)
+# define PIC32MX_IOPORTB_CNENSET (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNENSET_OFFSET)
+# define PIC32MX_IOPORTB_CNENINV (PIC32MX_IOPORTB_K1BASE+PIC32MX_IOPORT_CNENINV_OFFSET)
+#endif
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTC_ANSEL (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ANSEL_OFFSET)
+# define PIC32MX_IOPORTC_ANSELCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ANSELCLR_OFFSET)
+# define PIC32MX_IOPORTC_ANSELSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ANSELSET_OFFSET)
+# define PIC32MX_IOPORTC_ANSELINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ANSELINV_OFFSET)
+#endif
+
#define PIC32MX_IOPORTC_TRIS (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_TRIS_OFFSET)
#define PIC32MX_IOPORTC_TRISCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_TRISCLR_OFFSET)
#define PIC32MX_IOPORTC_TRISSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_TRISSET_OFFSET)
@@ -153,6 +281,25 @@
#define PIC32MX_IOPORTC_ODCSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ODCSET_OFFSET)
#define PIC32MX_IOPORTC_ODCINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_ODCINV_OFFSET)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORTC_CNPU (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPU_OFFSET)
+# define PIC32MX_IOPORTC_CNPUCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPUCLR_OFFSET)
+# define PIC32MX_IOPORTC_CNPUSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPUSET_OFFSET)
+# define PIC32MX_IOPORTC_CNPUINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPUINV_OFFSET)
+# define PIC32MX_IOPORTC_CNPD (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPD_OFFSET)
+# define PIC32MX_IOPORTC_CNPDCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPDCLR_OFFSET)
+# define PIC32MX_IOPORTC_CNPDSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPDSET_OFFSET)
+# define PIC32MX_IOPORTC_CNPDINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNPDINV_OFFSET)
+# define PIC32MX_IOPORTC_CNCON (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNCON_OFFSET)
+# define PIC32MX_IOPORTC_CNCONCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNCONCLR_OFFSET)
+# define PIC32MX_IOPORTC_CNCONSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNCONSET_OFFSET)
+# define PIC32MX_IOPORTC_CNCONINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNCONINV_OFFSET)
+# define PIC32MX_IOPORTC_CNEN (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNEN_OFFSET)
+# define PIC32MX_IOPORTC_CNENCLR (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNENCLR_OFFSET)
+# define PIC32MX_IOPORTC_CNENSET (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNENSET_OFFSET)
+# define PIC32MX_IOPORTC_CNENINV (PIC32MX_IOPORTC_K1BASE+PIC32MX_IOPORT_CNENINV_OFFSET)
+#endif
+
#define PIC32MX_IOPORTD_TRIS (PIC32MX_IOPORTD_K1BASE+PIC32MX_IOPORT_TRIS_OFFSET)
#define PIC32MX_IOPORTD_TRISCLR (PIC32MX_IOPORTD_K1BASE+PIC32MX_IOPORT_TRISCLR_OFFSET)
#define PIC32MX_IOPORTD_TRISSET (PIC32MX_IOPORTD_K1BASE+PIC32MX_IOPORT_TRISSET_OFFSET)
@@ -221,21 +368,29 @@
#define PIC32MX_IOPORTG_ODCSET (PIC32MX_IOPORTG_K1BASE+PIC32MX_IOPORT_ODCSET_OFFSET)
#define PIC32MX_IOPORTG_ODCINV (PIC32MX_IOPORTG_K1BASE+PIC32MX_IOPORT_ODCINV_OFFSET)
-#define PIC32MX_IOPORT_CNCON (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCON_OFFSET)
-#define PIC32MX_IOPORT_CNCONCLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONCLR_OFFSET)
-#define PIC32MX_IOPORT_CNCONSET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONSET_OFFSET)
-#define PIC32MX_IOPORT_CNCONINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONINV_OFFSET)
-#define PIC32MX_IOPORT_CNEN (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNEN_OFFSET)
-#define PIC32MX_IOPORT_CNENCLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENCLR_OFFSET)
-#define PIC32MX_IOPORT_CNENSET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENSET_OFFSET)
-#define PIC32MX_IOPORT_CNENINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENINV_OFFSET)
-#define PIC32MX_IOPORT_CNPUE (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUE_OFFSET)
-#define PIC32MX_IOPORT_CNPUECLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUECLR_OFFSET)
-#define PIC32MX_IOPORT_CNPUESET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUESET_OFFSET)
-#define PIC32MX_IOPORT_CNPUEINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUEINV_OFFSET)
+#if !defined(CHIP_PIC32MX1) && !defined(CHIP_PIC32MX2)
+# define PIC32MX_IOPORT_CNCON (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCON_OFFSET)
+# define PIC32MX_IOPORT_CNCONCLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONCLR_OFFSET)
+# define PIC32MX_IOPORT_CNCONSET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONSET_OFFSET)
+# define PIC32MX_IOPORT_CNCONINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNCONINV_OFFSET)
+# define PIC32MX_IOPORT_CNEN (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNEN_OFFSET)
+# define PIC32MX_IOPORT_CNENCLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENCLR_OFFSET)
+# define PIC32MX_IOPORT_CNENSET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENSET_OFFSET)
+# define PIC32MX_IOPORT_CNENINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNENINV_OFFSET)
+# define PIC32MX_IOPORT_CNPUE (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUE_OFFSET)
+# define PIC32MX_IOPORT_CNPUECLR (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUECLR_OFFSET)
+# define PIC32MX_IOPORT_CNPUESET (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUESET_OFFSET)
+# define PIC32MX_IOPORT_CNPUEINV (PIC32MX_IOPORTCN_K1BASE+PIC32MX_IOPORT_CNPUEINV_OFFSET)
+#endif
/* Register Bit-Field Definitions ***********************************************************/
+/* Analog select register */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define IOPORT_ANSEL(n) (1 << (n)) /* Bits 0-15: Analog select */
+#endif
+
/* Tri-state register */
#define IOPORT_TRIS(n) (1 << (n)) /* Bits 0-15: 1: Input 0: Output */
@@ -252,26 +407,46 @@
#define IOPORT_ODC(n) (1 << (n)) /* Bits 0-15: 1: OD output enabled, 0: Disabled */
-/* Interrupt-on-change control register */
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+/* Change Notification Pull-up register */
+
+# define IOPORT_CNPU(n) (1 << (n)) /* Bits 0:15: 1=Pull-up enabled */
+
+/* Change Notification Pull-down register */
+
+# define IOPORT_CNPD(n) (1 << (n)) /* Bits 0:15: 1=Pull-down enabled */
+
+/* Change Notification Control register */
+
+# define IOPORT_CNCON_SIDL (1 << 13) /* Bit 13: Stop in idle mode */
+# define IOPORT_CNCON_ON (1 << 15) /* Bit 15: Change notice module enable */
+
+/* Change Notification Interrupt Enable register */
+
+# define IOPORT_CNEN(n) (1 << (n)) /* Bits 0:15: 1=Interrupt enabled */
+
+#else
+ /* Interrupt-on-change control register */
-#define IOPORT_CNCON_SIDL (1 << 13) /* Bit 13: Stop in idle mode */
-#define IOPORT_CNCON_FRZ (1 << 14) /* Bit 14: Freeze in debug exception mode */
-#define IOPORT_CNCON_ON (1 << 15) /* Bit 15: Change notice module enable */
+# define IOPORT_CNCON_SIDL (1 << 13) /* Bit 13: Stop in idle mode */
+# define IOPORT_CNCON_FRZ (1 << 14) /* Bit 14: Freeze in debug exception mode */
+# define IOPORT_CNCON_ON (1 << 15) /* Bit 15: Change notice module enable */
-/* Input change notification interrupt enable */
+ /* Input change notification interrupt enable */
-#define IOPORT_CNEN(n) (1 << (n)) /* Bits 0-18/21: Port pin input change notice enabled */
+# define IOPORT_CNEN(n) (1 << (n)) /* Bits 0-18/21: Port pin input change notice enabled */
-/* Input change notification pull-up enable */
+ /* Input change notification pull-up enable */
-#define IOPORT_CNPUE(n) (1 << (n)) /* Bits 0-18/21: Port pin pull-up enabled */
+# define IOPORT_CNPUE(n) (1 << (n)) /* Bits 0-18/21: Port pin pull-up enabled */
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-# define IOPORT_CN_ALL 0x0007ffff /* Bits 0-18 */
-# define IOPORT_NUMCN 19
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define IOPORT_CN_ALL 0x003fffff /* Bits 0-21 */
-# define IOPORT_NUMCN 22
+# if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+# define IOPORT_CN_ALL 0x0007ffff /* Bits 0-18 */
+# define IOPORT_NUMCN 19
+# elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define IOPORT_CN_ALL 0x003fffff /* Bits 0-21 */
+# define IOPORT_NUMCN 22
+# endif
#endif
/********************************************************************************************
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c b/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
index a50f3204d..601eeb071 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
@@ -105,7 +105,7 @@ void up_irqinitialize(void)
for (irq = 0; irq < NR_IRQS; irq++)
{
- (void)up_prioritize_irq(irq, (INT_ICP_MID_PRIORITY << 2));
+ (void)up_prioritize_irq(irq, (INT_IPC_MID_PRIORITY << 2));
}
/* Set the BEV bit in the STATUS register */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-memorymap.h b/nuttx/arch/mips/src/pic32mx/pic32mx-memorymap.h
index a3fe2791c..7126fa09a 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-memorymap.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-memorymap.h
@@ -48,41 +48,177 @@
/************************************************************************************
* Pre-Processor Definitions
************************************************************************************/
+/* Physical Memory Map **************************************************************/
+
+/* This top-level memory map is valid for the PIC32MX1xx/2xx families. */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define PIC32MX_DATAMEM_PBASE 0x00000000 /* Size depends on CHIP_DATAMEM_KB */
+# define PIC32MX_PROGFLASH_PBASE 0x1d000000 /* Size depends on CHIP_PROGFLASH_KB */
+# define PIC32MX_SFR_PBASE 0x1f800000 /* Special function registers */
+# define PIC32MX_BOOTFLASH_PBASE 0x1fc00000 /* Size depends on CHIP_BOOTFLASH_KB */
+# define PIC32MX_DEVCFG_PBASE 0x1fc00bf0 /* Device configuration registers */
+
/* This top-level memory map is valid for the PIC32MX3xx/4xx as well as the
* PIC32MX5xx/6xx/7xx families.
*/
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4) || defined(CHIP_PIC32MX5) || \
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4) || defined(CHIP_PIC32MX5) || \
defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-/* Physical Memory Map **************************************************************/
-
# define PIC32MX_DATAMEM_PBASE 0x00000000 /* Size depends on CHIP_DATAMEM_KB */
# define PIC32MX_PROGFLASH_PBASE 0x1d000000 /* Size depends on CHIP_PROGFLASH_KB */
# define PIC32MX_SFR_PBASE 0x1f800000 /* Special function registers */
# define PIC32MX_BOOTFLASH_PBASE 0x1fc00000 /* Size depends on CHIP_BOOTFLASH_KB */
# define PIC32MX_DEVCFG_PBASE 0x1fc02ff0 /* Device configuration registers */
-/* Virtual Memory Map ***************************************************************/
-
-# define PIC32MX_DATAMEM_K0BASE (KSEG0_BASE + PIC32MX_DATAMEM_PBASE)
-# define PIC32MX_PROGFLASH_K0BASE (KSEG0_BASE + PIC32MX_PROGFLASH_PBASE)
-# define PIC32MX_BOOTFLASH_K0BASE (KSEG0_BASE + PIC32MX_BOOTFLASH_PBASE)
-# define PIC32MX_DEVCFG_K0BASE (KSEG0_BASE + PIC32MX_DEVCFG_PBASE)
-
-# define PIC32MX_DATAMEM_K1BASE (KSEG1_BASE + PIC32MX_DATAMEM_PBASE)
-# define PIC32MX_PROGFLASH_K1BASE (KSEG1_BASE + PIC32MX_PROGFLASH_PBASE)
-# define PIC32MX_SFR_K1BASE (KSEG1_BASE + PIC32MX_SFR_PBASE)
-# define PIC32MX_BOOTFLASH_K1BASE (KSEG1_BASE + PIC32MX_BOOTFLASH_PBASE)
-# define PIC32MX_DEVCFG_K1BASE (KSEG1_BASE + PIC32MX_DEVCFG_PBASE)
-
#else
# error "Memory map unknown for this PIC32 chip"
#endif
+/* Virtual Memory Map ***************************************************************/
+
+#define PIC32MX_DATAMEM_K0BASE (KSEG0_BASE + PIC32MX_DATAMEM_PBASE)
+#define PIC32MX_PROGFLASH_K0BASE (KSEG0_BASE + PIC32MX_PROGFLASH_PBASE)
+#define PIC32MX_BOOTFLASH_K0BASE (KSEG0_BASE + PIC32MX_BOOTFLASH_PBASE)
+#define PIC32MX_DEVCFG_K0BASE (KSEG0_BASE + PIC32MX_DEVCFG_PBASE)
+
+#define PIC32MX_DATAMEM_K1BASE (KSEG1_BASE + PIC32MX_DATAMEM_PBASE)
+#define PIC32MX_PROGFLASH_K1BASE (KSEG1_BASE + PIC32MX_PROGFLASH_PBASE)
+#define PIC32MX_SFR_K1BASE (KSEG1_BASE + PIC32MX_SFR_PBASE)
+#define PIC32MX_BOOTFLASH_K1BASE (KSEG1_BASE + PIC32MX_BOOTFLASH_PBASE)
+#define PIC32MX_DEVCFG_K1BASE (KSEG1_BASE + PIC32MX_DEVCFG_PBASE)
+
/* Register Base Addresses **********************************************************/
-#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+/* Watchdog Register Base Address */
+
+# define PIC32MX_WDT_K1BASE (PIC32MX_SFR_K1BASE + 0x00000000)
+
+/* RTCC Register Base Address */
+
+# define PIC32MX_RTCC_K1BASE (PIC32MX_SFR_K1BASE + 0x00000200)
+
+/* Timer 1-5 Register Base Addresses */
+
+# define PIC32MX_TIMER_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00000600 + 0x200*(n-1))
+# define PIC32MX_TIMER1_K1BASE (PIC32MX_SFR_K1BASE + 0x00000600)
+# define PIC32MX_TIMER2_K1BASE (PIC32MX_SFR_K1BASE + 0x00000800)
+# define PIC32MX_TIMER3_K1BASE (PIC32MX_SFR_K1BASE + 0x00000a00)
+# define PIC32MX_TIMER4_K1BASE (PIC32MX_SFR_K1BASE + 0x00000c00)
+# define PIC32MX_TIMER5_K1BASE (PIC32MX_SFR_K1BASE + 0x00000e00)
+
+/* Input Capture 1-5 Register Base Addresses */
+
+# define PIC32MX_IC_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00002000 + 0x200*(n-1))
+# define PIC32MX_IC1_K1BASE (PIC32MX_SFR_K1BASE + 0x00002000)
+# define PIC32MX_IC2_K1BASE (PIC32MX_SFR_K1BASE + 0x00002200)
+# define PIC32MX_IC3_K1BASE (PIC32MX_SFR_K1BASE + 0x00002400)
+# define PIC32MX_IC4_K1BASE (PIC32MX_SFR_K1BASE + 0x00002600)
+# define PIC32MX_IC5_K1BASE (PIC32MX_SFR_K1BASE + 0x00002800)
+
+/* Output Compare 1-5 Register Base Addresses */
+
+# define PIC32MX_OC_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00003000 + 0x200*(n-1))
+# define PIC32MX_OC1_K1BASE (PIC32MX_SFR_K1BASE + 0x00003000)
+# define PIC32MX_OC2_K1BASE (PIC32MX_SFR_K1BASE + 0x00003200)
+# define PIC32MX_OC3_K1BASE (PIC32MX_SFR_K1BASE + 0x00003400)
+# define PIC32MX_OC4_K1BASE (PIC32MX_SFR_K1BASE + 0x00003600)
+# define PIC32MX_OC5_K1BASE (PIC32MX_SFR_K1BASE + 0x00003800)
+
+/* I2C 1-2 Register Base Addresses */
+
+# define PIC32MX_I2C1_K1BASE (PIC32MX_SFR_K1BASE + 0x00005000)
+# define PIC32MX_I2C2_K1BASE (PIC32MX_SFR_K1BASE + 0x00005100)
+
+/* SPI 1-2 Register Base Addresses */
+
+# define PIC32MX_SPI1_K1BASE (PIC32MX_SFR_K1BASE + 0x00005800)
+# define PIC32MX_SPI2_K1BASE (PIC32MX_SFR_K1BASE + 0x00005a00)
+
+/* UART 1-2 Register Base Addresses */
+
+# define PIC32MX_UART1_K1BASE (PIC32MX_SFR_K1BASE + 0x00006000)
+# define PIC32MX_UART2_K1BASE (PIC32MX_SFR_K1BASE + 0x00006200)
+
+/* Parallel Master Register Base Address */
+
+# define PIC32MX_PMP_K1BASE (PIC32MX_SFR_K1BASE + 0x00007000)
+
+/* ADC Register Base Addresses */
+
+# define PIC32MX_ADC_K1BASE (PIC32MX_SFR_K1BASE + 0x00009000)
+
+/* Comparator Voltage Reference Register Base Addresses */
+
+# define PIC32MX_CVR_K1BASE (PIC32MX_SFR_K1BASE + 0x00009800)
+
+/* Comparator Register Base Addresses */
+
+# define PIC32MX_CM_K1BASE (PIC32MX_SFR_K1BASE + 0x0000a000)
+
+/* CTMU Register Base Addresses */
+
+# define PIC32MX_CTMU_K1BASE (PIC32MX_SFR_K1BASE + 0x0000a200)
+
+/* Oscillator Control Register Base Addresses */
+
+# define PIC32MX_OSC_K1BASE (PIC32MX_SFR_K1BASE + 0x0000f000)
+
+/* Configuration Control Register Base Addresses */
+
+# define PIC32MX_CFG_K1BASE (PIC32MX_SFR_K1BASE + 0x0000f200)
+
+/* FLASH Controller Register Base Addresses */
+
+# define PIC32MX_FLASH_K1BASE (PIC32MX_SFR_K1BASE + 0x0000f400)
+
+/* Reset Control Register Base Address */
+
+# define PIC32MX_RESET_K1BASE (PIC32MX_SFR_K1BASE + 0x0000f600)
+
+/* Peripheral Pin Select Input/Ouput Register Base Address */
+
+# define PIC32MX_INSEL_K1BASE (PIC32MX_SFR_K1BASE + 0x0000fa00)
+# define PIC32MX_OUTSEL_K1BASE (PIC32MX_SFR_K1BASE + 0x0000fb00)
+
+/* Interrupt Register Base Address */
+
+# define PIC32MX_INT_K1BASE (PIC32MX_SFR_K1BASE + 0x00081000)
+
+/* Bus Matrix Register Base Address */
+
+# define PIC32MX_BMX_K1BASE (PIC32MX_SFR_K1BASE + 0x00082000)
+
+/* DMA Register Base Address */
+
+# define PIC32MX_DMA_K1BASE (PIC32MX_SFR_K1BASE + 0x00083000)
+# define PIC32MX_DMACH_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00083060 + 0xc0*(n))
+# define PIC32MX_DMACH0_K1BASE (PIC32MX_SFR_K1BASE + 0x00083060)
+# define PIC32MX_DMACH1_K1BASE (PIC32MX_SFR_K1BASE + 0x00083120)
+# define PIC32MX_DMACH2_K1BASE (PIC32MX_SFR_K1BASE + 0x000831e0)
+# define PIC32MX_DMACH3_K1BASE (PIC32MX_SFR_K1BASE + 0x000832a0)
+
+/* USBOTG Register Base Addresses */
+
+# define PIC32MX_USB_K1BASE (PIC32MX_SFR_K1BASE + 0x00085000)
+
+/* Port Register Base Addresses */
+
+# define PIC32MX_IOPORTA 0
+# define PIC32MX_IOPORTB 1
+# define PIC32MX_IOPORTC 2
+
+# define PIC32MX_IOPORT_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00086000 + 0x100*(n))
+
+# define PIC32MX_IOPORTA_K1BASE (PIC32MX_SFR_K1BASE + 0x00086000)
+# define PIC32MX_IOPORTB_K1BASE (PIC32MX_SFR_K1BASE + 0x00086100)
+# define PIC32MX_IOPORTC_K1BASE (PIC32MX_SFR_K1BASE + 0x00086200)
+
+#elif defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
/* Watchdog Register Base Address */
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-spi.h b/nuttx/arch/mips/src/pic32mx/pic32mx-spi.h
index fd01091e5..308a8b7f6 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-spi.h
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-spi.h
@@ -62,6 +62,10 @@
#define PIC32MX_SPI_BRGSET_OFFSET 0x0038 /* SPI baud rate set register */
#define PIC32MX_SPI_BRGINV_OFFSET 0x003c /* SPI baud rate invert register */
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+#define PIC32MX_SPI_CON2_OFFSET 0x0020 /* SPI control register 2*/
+#endif
+
/* Register Addresses *******************************************************/
#ifdef PIC32MX_SPI1_K1BASE
@@ -76,6 +80,9 @@
# define PIC32MX_SPI1_BRGCLR (PIC32MX_SPI1_K1BASE+PIC32MX_SPI_BRGCLR_OFFSET)
# define PIC32MX_SPI1_BRGSET (PIC32MX_SPI1_K1BASE+PIC32MX_SPI_BRGSET_OFFSET)
# define PIC32MX_SPI1_BRGINV (PIC32MX_SPI1_K1BASE+PIC32MX_SPI_BRGINV_OFFSET)
+# if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_SPI1_CON2 (PIC32MX_SPI1_K1BASE+PIC32MX_SPI_CON2_OFFSET)
+# endif
#endif
#ifdef PIC32MX_SPI2_K1BASE
@@ -90,6 +97,9 @@
# define PIC32MX_SPI2_BRGCLR (PIC32MX_SPI2_K1BASE+PIC32MX_SPI_BRGCLR_OFFSET)
# define PIC32MX_SPI2_BRGSET (PIC32MX_SPI2_K1BASE+PIC32MX_SPI_BRGSET_OFFSET)
# define PIC32MX_SPI2_BRGINV (PIC32MX_SPI2_K1BASE+PIC32MX_SPI_BRGINV_OFFSET)
+# if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define PIC32MX_SPI2_CON2 (PIC32MX_SPI2_K1BASE+PIC32MX_SPI_CON2_OFFSET)
+# endif
#endif
#ifdef PIC32MX_SPI3_K1BASE
@@ -124,11 +134,12 @@
/* SPI control register */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
# define SPI_CON_RTXISEL_SHIFT (0) /* Bits 0-1: SPI Receive Buffer Full Interrupt Mode */
# define SPI_CON_RTXISEL_MASK (3 << SPI_CON_RTXISEL_SHIFT)
-# define SPI_CON_RTXISEL_EMPTY (0 << SPI_CON_RTXISEL_SHIFT) /* Buffer empty*/
-# define SPI_CON_RTXISEL_NEMPTY (1 << SPI_CON_RTXISEL_SHIFT) /* Buffer not empty*/
+# define SPI_CON_RTXISEL_EMPTY (0 << SPI_CON_RTXISEL_SHIFT) /* Buffer empty */
+# define SPI_CON_RTXISEL_NEMPTY (1 << SPI_CON_RTXISEL_SHIFT) /* Buffer not empty */
# define SPI_CON_RTXISEL_HALF (2 << SPI_CON_RTXISEL_SHIFT) /* Buffer half full or more */
# define SPI_CON_RTXISEL_FULL (3 << SPI_CON_RTXISEL_SHIFT) /* Buffer full */
# define SPI_CON_STXISEL_SHIFT (2) /* Bits 2-3: SPI Transmit Buffer Empty Interrupt Mode */
@@ -138,7 +149,13 @@
# define SPI_CON_STXISEL_HALF (2 << SPI_CON_STXISEL_SHIFT) /* Buffer half empty or more */
# define SPI_CON_STXISEL_NFULL (3 << SPI_CON_STXISEL_SHIFT) /* Buffer not full */
#endif
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define SPI_CON_DISSDI (1 << 4) /* Bit 4: Disable SDI */
+#else
/* Bit 4: Reserved */
+#endif
+
#define SPI_CON_MSTEN (1 << 5) /* Bits 5: Master mode enable */
#define SPI_CON_CKP (1 << 6) /* Bits 6: Clock polarity select */
#define SPI_CON_SSEN (1 << 7) /* Bits 7: Slave select enable (slave mode) */
@@ -148,15 +165,30 @@
#define SPI_CON_MODE_MASK (3 << SPI_CON_MODE_SHIFT)
# define SPI_CON_MODE_8BIT (0 << SPI_CON_MODE_SHIFT) /* 8-bit data width */
# define SPI_CON_MODE_16BIT (1 << SPI_CON_MODE_SHIFT) /* 16-bit data width */
-# define SPI_CON_MODE_32BIT (2 << SPI_CON_MODE_SHIFT) /* 2-bit data width */
+# define SPI_CON_MODE_32BIT (2 << SPI_CON_MODE_SHIFT) /* 32-bit data width */
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+ /* With AUDEN=1: */
+# define SPI_CON_MODE_243232 (0 << SPI_CON_MODE_SHIFT) /* 24-bit data, 32-bit FIFO, 32-bit channel */
+# define SPI_CON_MODE_323232 (0 << SPI_CON_MODE_SHIFT) /* 32-bit data, 32-bit FIFO, 32-bit channel */
+# define SPI_CON_MODE_161632 (0 << SPI_CON_MODE_SHIFT) /* 16-bit data, 16-bit FIFO, 32-bit channel */
+# define SPI_CON_MODE_161616 (0 << SPI_CON_MODE_SHIFT) /* 16-bit data, 16-bit FIFO, 16-bit channel */
+#endif
#define SPI_CON_DISSDO (1 << 12) /* Bits 12: Disable SDOx pin */
#define SPI_CON_SIDL (1 << 13) /* Bits 13: Stop in idle mode */
-#define SPI_CON_FRZ (1 << 14) /* Bits 14: Freeze in debug exception */
+#if !defined(CHIP_PIC32MX1) && !defined(CHIP_PIC32MX2)
+# define SPI_CON_FRZ (1 << 14) /* Bits 14: Freeze in debug exception */
+#endif
#define SPI_CON_ON (1 << 15) /* Bits 15: SPI peripheral on */
#define SPI_CON_ENHBUF (1 << 16) /* Bits 16: Enhanced buffer enable */
#define SPI_CON_SPIFE (1 << 17) /* Bits 17: Frame sync pulse edge select */
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+ /* Bits 18-22: Reserved */
+# define SPI_CON_MCLKSEL (1 << 18) /* Master clock enable */
+#else
/* Bits 18-23: Reserved */
-#if defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+#endif
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
# define SPI_CON_FRMCNT_SHIFT (24) /* Bits 24-26: Frame Sync Pulse Counter bits */
# define SPI_CON_FRMCNT_MASK (7 << SPI_CON_FRMCNT_SHIFT)
# define SPI_CON_FRMCNT_CHAR1 (0 << SPI_CON_FRMCNT_SHIFT) /* Frame sync pulse each char */
@@ -172,22 +204,50 @@
#define SPI_CON_FRMSYNC (1 << 30) /* Bits 30: Frame sync pulse direction control on SSx pin */
#define SPI_CON_FRMEN (1 << 31) /* Bits 31: Framed SPI support */
+/* SPI control register 2 */
+
+#if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+
+# define SPI2_CON2_AUDMOD_SHIFT (0) /* Bits 0-1: Audio Protocol Mode */
+# define SPI2_CON2_AUDMOD_MASK (3 << SPI2_CON2_AUDMOD_SHIFT)
+# define SPI2_CON2_AUDMOD_I2S (0 << SPI2_CON2_AUDMOD_SHIFT) /* I2S mode */
+# define SPI2_CON2_AUDMOD_LJ (1 << SPI2_CON2_AUDMOD_SHIFT) /* Left Justified mode */
+# define SPI2_CON2_AUDMOD_RJ (2 << SPI2_CON2_AUDMOD_SHIFT) /* Right Justified mode */
+# define SPI2_CON2_AUDMOD_PCM (3 << SPI2_CON2_AUDMOD_SHIFT) /* PCM/DSP mode */
+ /* Bit 2: Reserved */
+# define SPI2_CON2_AUDMONO (1 << 6) /* Bit 3: Transmit Audio Data Format */
+ /* Bits 5-6: Reserved */
+# define SPI2_CON2_AUDEN (1 << 7) /* Bit 7: Enable Audio CODEC Support */
+# define SPI2_CON2_IGNTUR (1 << 8) /* Bit 8: Ignore Transmit Underrun bit */
+# define SPI2_CON2_IGNROV (1 << 9) /* Bit 9: Ignore Receive Overflow */
+# define SPI2_CON2_SPITUREN (1 << 10) /* Bit 10: Enable Interrupt Events via SPITUR */
+# define SPI2_CON2_SPIROVEN (1 << 11) /* Bit 11: Enable Interrupt Events via SPIROV */
+# define SPI2_CON2_FRMERREN (1 << 12) /* Bit 12: Enable Interrupt Events via FRMERR */
+ /* Bits 13-14: Reserved */
+# define SPI2_CON2_SPISGNEXT (1 << 15) /* Bit 15 : Sign Extend Read Data from the RX FIFO */
+ /* Bits 16-31: Reserved */
+#endif
+
/* SPI status register */
#if defined(CHIP_PIC32MX3) || defined(CHIP_PIC32MX4)
-# define SPI_STAT_SPIRBF (1 << 0) /* Bits 0: SPI receive buffer full status */
-# define SPI_STAT_SPITBE (1 << 3) /* Bits 3: SPI transmit buffer empty status */
-# define SPI_STAT_SPIROV (1 << 6) /* Bits 6: Receive overflow flag */
-# define SPI_STAT_SPIBUSY (1 << 11) /* Bits 11: SPI activity status */
-#elif defined(CHIP_PIC32MX5) || defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
-# define SPI_STAT_SPIRBF (1 << 0) /* Bits 0: SPI receive buffer full status */
-# define SPI_STAT_SPITBF (1 << 1) /* Bits 1: SPI transmit buffer full status */
-# define SPI_STAT_SPITBE (1 << 3) /* Bits 3: SPI transmit buffer empty status */
-# define SPI_STAT_SPIRBE (1 << 5) /* Bits 5: RX FIFO Empty */
-# define SPI_STAT_SPIROV (1 << 6) /* Bits 6: Receive overflow flag */
-# define SPI_STAT_SRMT (1 << 7) /* Bits 6: Shift Register Empty */
-# define SPI_STAT_SPITUR (1 << 6) /* Bits 8: Transmit under run */
-# define SPI_STAT_SPIBUSY (1 << 11) /* Bits 11: SPI activity status */
+# define SPI_STAT_SPIRBF (1 << 0) /* Bit 0: SPI receive buffer full status */
+# define SPI_STAT_SPITBE (1 << 3) /* Bit 3: SPI transmit buffer empty status */
+# define SPI_STAT_SPIROV (1 << 6) /* Bit 6: Receive overflow flag */
+# define SPI_STAT_SPIBUSY (1 << 11) /* Bit 11: SPI activity status */
+#elif defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2) || defined(CHIP_PIC32MX5) || \
+ defined(CHIP_PIC32MX6) || defined(CHIP_PIC32MX7)
+# define SPI_STAT_SPIRBF (1 << 0) /* Bit 0: SPI receive buffer full status */
+# define SPI_STAT_SPITBF (1 << 1) /* Bit 1: SPI transmit buffer full status */
+# define SPI_STAT_SPITBE (1 << 3) /* Bit 3: SPI transmit buffer empty status */
+# define SPI_STAT_SPIRBE (1 << 5) /* Bit 5: RX FIFO Empty */
+# define SPI_STAT_SPIROV (1 << 6) /* Bit 6: Receive overflow flag */
+# define SPI_STAT_SRMT (1 << 7) /* Bit 6: Shift Register Empty */
+# define SPI_STAT_SPITUR (1 << 8) /* Bit 8: Transmit under run */
+# define SPI_STAT_SPIBUSY (1 << 11) /* Bit 11: SPI activity status */
+# if defined(CHIP_PIC32MX1) || defined(CHIP_PIC32MX2)
+# define SPI_STAT_FRMERR (1 << 12) /* Bit 12: SPI Frame Error status */
+# endif
# define SPI_STAT_TXBUFELM_SHIFT (16) /* Bits 16-20: Transmit Buffer Element Count bits */
# define SPI_STAT_TXBUFELM_MASK (31 << SPI_STAT_TXBUFELM_SHIFT)
# define SPI_STAT_RXBUFELM_SHIFT (24) /* Bits 24-28: Receive Buffer Element Count bits */