summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/lpc313x
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-27 15:26:52 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-27 15:26:52 +0000
commitbe85acd0f71ce088b4e1584e6ce485015288f63c (patch)
treec282e67081fdd2164b636f646cb75909d1bc137e /nuttx/arch/arm/src/lpc313x
parentcfc63f3cffcdcb89261c4bfc065d5591f5b6b561 (diff)
downloadpx4-nuttx-be85acd0f71ce088b4e1584e6ce485015288f63c.tar.gz
px4-nuttx-be85acd0f71ce088b4e1584e6ce485015288f63c.tar.bz2
px4-nuttx-be85acd0f71ce088b4e1584e6ce485015288f63c.zip
Rename all lpc313x to lpc31xx
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3644 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/lpc313x')
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/Make.defs67
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/chip.h62
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_adc.h132
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_allocateheap.c206
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_bcrndx.c100
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_boot.c397
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_cgu.h1626
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_cgudrvr.h819
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_clkdomain.c125
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_clkexten.c152
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_clkfreq.c177
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_clkinit.c298
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_decodeirq.c137
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_defclk.c119
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_dma.h423
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_esrndx.c134
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_evntrtr.h264
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_fdcndx.c127
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_fdivinit.c204
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_freqin.c82
-rw-r--r--nuttx/arch/arm/src/lpc313x/lpc313x_i2c.c608
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_i2c.h207
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_i2s.h315
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_intc.h198
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_internal.h300
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_ioconfig.h357
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_irq.c218
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_lcd.h161
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_lowputc.c356
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_mci.h270
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_memorymap.h414
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_mpmc.h340
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_nand.h378
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_pcm.h174
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_pllconfig.c267
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_pwm.h97
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_resetclks.c151
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_rng.h85
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_serial.c856
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_setfdiv.c135
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_setfreqin.c119
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_softreset.c90
-rw-r--r--nuttx/arch/arm/src/lpc313x/lpc313x_spi.c971
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_spi.h252
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_syscreg.h611
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_timer.h119
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_timerisr.c162
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_uart.h263
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_usbdev.c2653
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_usbotg.h654
-rwxr-xr-xnuttx/arch/arm/src/lpc313x/lpc313x_wdt.h130
51 files changed, 0 insertions, 17562 deletions
diff --git a/nuttx/arch/arm/src/lpc313x/Make.defs b/nuttx/arch/arm/src/lpc313x/Make.defs
deleted file mode 100755
index 464c5bf31..000000000
--- a/nuttx/arch/arm/src/lpc313x/Make.defs
+++ /dev/null
@@ -1,67 +0,0 @@
-############################################################################
-# arch/arm/lpc313x/Make.defs
-#
-# Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name Gregory Nutt 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.
-#
-############################################################################
-
-HEAD_ASRC = up_head.S
-
-CMN_ASRCS = up_cache.S up_fullcontextrestore.S up_saveusercontext.S \
- up_vectors.S up_vectoraddrexcptn.S up_vectortab.S
-CMN_CSRCS = up_assert.c up_blocktask.c up_copystate.c up_createstack.c \
- up_dataabort.c up_mdelay.c up_udelay.c up_exit.c up_idle.c \
- up_initialize.c up_initialstate.c up_interruptcontext.c \
- up_modifyreg8.c up_modifyreg16.c up_modifyreg32.c \
- up_prefetchabort.c up_releasepending.c up_releasestack.c \
- up_reprioritizertr.c up_schedulesigaction.c \
- up_sigdeliver.c up_syscall.c up_unblocktask.c \
- up_undefinedinsn.c up_usestack.c
-
-ifeq ($(CONFIG_PAGING),y)
-CMN_CSRCS += up_pginitialize.c up_checkmapping.c up_allocpage.c up_va2pte.c
-endif
-
-CGU_ASRCS =
-CGU_CSRCS = lpc313x_bcrndx.c lpc313x_clkdomain.c lpc313x_clkexten.c \
- lpc313x_clkfreq.c lpc313x_clkinit.c lpc313x_defclk.c \
- lpc313x_esrndx.c lpc313x_fdcndx.c lpc313x_fdivinit.c \
- lpc313x_freqin.c lpc313x_pllconfig.c lpc313x_resetclks.c \
- lpc313x_setfreqin.c lpc313x_setfdiv.c lpc313x_softreset.c
-
-CHIP_ASRCS = $(CGU_ASRCS)
-CHIP_CSRCS = lpc313x_allocateheap.c lpc313x_boot.c lpc313x_decodeirq.c \
- lpc313x_irq.c lpc313x_lowputc.c lpc313x_serial.c lpc313x_i2c.c \
- lpc313x_spi.c lpc313x_timerisr.c $(CGU_CSRCS)
-
-ifeq ($(CONFIG_USBDEV),y)
-CHIP_CSRCS += lpc313x_usbdev.c
-endif
diff --git a/nuttx/arch/arm/src/lpc313x/chip.h b/nuttx/arch/arm/src/lpc313x/chip.h
deleted file mode 100755
index 35cf83eaa..000000000
--- a/nuttx/arch/arm/src/lpc313x/chip.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/************************************************************************************
- * arch/arm/src/lpc313x/chip.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_CHIP_H
-#define __ARCH_ARM_SRC_LPC313X_CHIP_H
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************/
-
-/************************************************************************************
- * Public Types
- ************************************************************************************/
-
-/************************************************************************************
- * Public Data
- ************************************************************************************/
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_CHIP_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_adc.h b/nuttx/arch/arm/src/lpc313x/lpc313x_adc.h
deleted file mode 100755
index 4cbbbee10..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_adc.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_adc.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_ADC_H
-#define __ARCH_ARM_SRC_LPC313X_ADC_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* ADC register base address offset into the APB0 domain ****************************************/
-
-#define LPC313X_ADC_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_ADC_OFFSET)
-#define LPC313X_ADC_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_ADC_OFFSET)
-
-/* ADC register offsets (with respect to the ADC base) ******************************************/
-
-#define LPC313X_ADC_R0_OFFSET 0x000 /* Data for analog input channel 0 */
-#define LPC313X_ADC_R1_OFFSET 0x004 /* Data for analog input channel 1 */
-#define LPC313X_ADC_R2_OFFSET 0x008 /* Data for analog input channel 2 */
-#define LPC313X_ADC_R3_OFFSET 0x00c /* Data for analog input channel 3 */
- /* 0x010-0x01c: Reserved */
-#define LPC313X_ADC_CON_OFFSET 0x020 /* ADC control register */
-#define LPC313X_ADC_CSEL_OFFSET 0x024 /* Configure and select analog input channels */
-#define LPC313X_ADC_INTEN_OFFSET 0x028 /* Enable ADC interrupts */
-#define LPC313X_ADC_INTST_OFFSET 0x02C /* ADC interrupt status */
-#define LPC313X_ADC_INTCLR_OFFSET 0x030 /* Clear ADC interrupt status */
- /* 0x034-: Reserved */
-
-/* ADC register (virtual) addresses *************************************************************/
-
-#define LPC313X_ADC_R0 (LPC313X_ADC_VBASE+LPC313X_ADC_R0_OFFSET)
-#define LPC313X_ADC_R1 (LPC313X_ADC_VBASE+LPC313X_ADC_R1_OFFSET)
-#define LPC313X_ADC_R2 (LPC313X_ADC_VBASE+LPC313X_ADC_R2_OFFSET)
-#define LPC313X_ADC_R3 (LPC313X_ADC_VBASE+LPC313X_ADC_R3_OFFSET)
-#define LPC313X_ADC_CON (LPC313X_ADC_VBASE+LPC313X_ADC_CON_OFFSET)
-#define LPC313X_ADC_CSEL (LPC313X_ADC_VBASE+LPC313X_ADC_CSEL_OFFSET)
-#define LPC313X_ADC_INTEN (LPC313X_ADC_VBASE+LPC313X_ADC_INTEN_OFFSET)
-#define LPC313X_ADC_INTST (LPC313X_ADC_VBASE+LPC313X_ADC_INTST_OFFSET)
-#define LPC313X_ADC_INTCLR (LPC313X_ADC_VBASE+LPC313X_ADC_INTCLR_OFFSET)
-
-/* ADC register bit definitions *****************************************************************/
-
-/* ADC_Rx (ADC_R0, address 0x13002000; ADC_R1, address 0x13002004, ADC_R2, address 0x13002008;
- * ADC_R3, address 0x1300200c)
- */
-
-#define ADC_RX_SHIFT (0) /* Bits 0-9: Digital conversion data */
-#define ADC_RX_MASK (0x3ff << ADC_RX_SHIFT)
-
-/* ADC_CON, address 0x13002020 */
-
-#define ADC_CON_STATUS (1 << 4) /* Bit 4: ADC Status */
-#define ADC_CON_START (1 << 3) /* Bit 3: Start command */
-#define ADC_CON_CSCAN (1 << 2) /* Bit 2: Continuous scan */
-#define ADC_CON_ENABLE (1 << 1) /* Bit 1: ADC enable */
-
-/* ADC_CSEL, address 0x13002024 */
-
-#define ADC_CSEL_CHAN3_SHIFT (12) /* Bits 12-15: Select and configure channel 3*/
-#define ADC_CSEL_CHAN3_MASK (15 << ADC_CSEL_CHAN3_SHIFT)
-#define ADC_CSEL_CHAN2_SHIFT (8) /* Bits 8-10: Select and configure channel 2*/
-#define ADC_CSEL_CHAN2_MASK (15 << ADC_CSEL_CHAN2_SHIFT)
-#define ADC_CSEL_CHAN1_SHIFT (4) /* Bits 4-7: Select and configure channel 1*/
-#define ADC_CSEL_CHAN1_MASK (15 << ADC_CSEL_CHAN1_SHIFT)
-#define ADC_CSEL_CHAN0_SHIFT (0) /* Bits 0-3: Select and configure channel 0*/
-#define ADC_CSEL_CHAN0_MASK (15 << ADC_CSEL_CHAN0_SHIFT)
-
-/* ADC_INTEN, address 0x13002028 */
-
-#define ADC_INTEN_ENABLE (1 << 0)
-
-/* ADC_INTST, address 0x1300202c */
-
-#define ADC_INTST_PENDING (1 << 0)
-
-/* ADC_INTCLR, address 0x13002030 */
-
-#define ADC_INTCLR_CLEAR (1 << 0)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_ADC_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_allocateheap.c b/nuttx/arch/arm/src/lpc313x/lpc313x_allocateheap.c
deleted file mode 100755
index 79ba8464e..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_allocateheap.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_allocateheap.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <arch/board/board.h>
-
-#include "arm.h"
-#include "chip.h"
-#include "up_arch.h"
-#include "up_internal.h"
-#include "lpc313x_memorymap.h"
-
-#ifdef CONFIG_PAGING
-# include <nuttx/page.h>
-# include "pg_macros.h"
-#endif
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/* Configuration ********************************************************/
-
-/* Some sanity checking. If external memory regions are defined, verify
- * that CONFIG_MM_REGIONS is set to match, exactly, the number of external
- * memory regions that we have been asked to add to the heap.
- */
-
-#if defined(CONFIG_LPC313X_EXTSRAM0) && defined(CONFIG_LPC313X_EXTSRAM0HEAP)
-# if defined(CONFIG_LPC313X_EXTSRAM1) && defined(CONFIG_LPC313X_EXTSRAM1HEAP)
-# if defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
-# /* SRAM+EXTSRAM0+EXTSRAM1+EXTSDRAM */
-# define LPC313X_NEXT_REGIONS 4
-# else
-# /* SRAM+EXTSRAM0+EXTSRAM1 */
-# define LPC313X_NEXT_REGIONS 3
-# endif
-# elif defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
-# /* SRAM+EXTSRAM0+EXTSDRAM */
-# define LPC313X_NEXT_REGIONS 3
-# else
-# /* SRAM+EXTSRAM0 */
-# define LPC313X_NEXT_REGIONS 2
-# endif
-#elif defined(CONFIG_LPC313X_EXTSRAM1) && defined(CONFIG_LPC313X_EXTSRAM1HEAP)
-# if defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
-# /* SRAM+EXTSRAM1+EXTSDRAM */
-# define LPC313X_NEXT_REGIONS 3
-# else
-# /* SRAM+EXTSRAM1 */
-# define LPC313X_NEXT_REGIONS 2
-# endif
-#elif defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
-# /* SRAM+EXTSDRAM */
-# define LPC313X_NEXT_REGIONS 2
-#else
-# /* SRAM */
-# define LPC313X_NEXT_REGIONS 1
-#endif
-
-#if CONFIG_MM_REGIONS != LPC313X_NEXT_REGIONS
-# if CONFIG_MM_REGIONS < LPC313X_NEXT_REGIONS
-# error "CONFIG_MM_REGIONS is large enough for the selected memory regions"
-# else
-# error "CONFIG_MM_REGIONS is too large for the selected memory regions"
-# endif
-# if defined(CONFIG_LPC313X_EXTSRAM0) && defined(CONFIG_LPC313X_EXTSRAM0HEAP)
-# error "External SRAM0 is selected for heap"
-# endif
-# if defined(CONFIG_LPC313X_EXTSRAM1) && defined(CONFIG_LPC313X_EXTSRAM1HEAP)
-# error "External SRAM1 is selected for heap"
-# endif
-# if defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
-# error "External SRAM1 is selected for heap"
-# endif
-#endif
-
-/* The following determines the end+1 address the heap (in SRAM0 or SRAM1)
- * and that, in turn, determines the size of the heap. Specifically, this
- * logic it checks if a page table has been allocated at the end of SRAM
- * and, if so, subtracts that the size of the page table from the end+1
- * address of heap.
- *
- * If the page table was not allocated at the end of SRAM, then this logic
- * will let the heap run all the way to the end of SRAM.
- */
-
-#ifdef CONFIG_PAGING
-# ifdef PGTABLE_IN_HIGHSRAM
-# define LPC313X_HEAP_VEND (PG_LOCKED_VBASE + PG_TOTAL_VSIZE - PGTABLE_SIZE)
-# else
-# define LPC313X_HEAP_VEND (PG_LOCKED_VBASE + PG_TOTAL_VSIZE)
-# endif
-#else
-# ifdef PGTABLE_IN_HIGHSRAM
-# define LPC313X_HEAP_VEND (LPC313X_INTSRAM_VSECTION + LPC313X_ISRAM_SIZE - PGTABLE_SIZE)
-# else
-# define LPC313X_HEAP_VEND (LPC313X_INTSRAM_VSECTION + LPC313X_ISRAM_SIZE)
-# endif
-#endif
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: up_allocate_heap
- *
- * Description:
- * The heap may be statically allocated by defining CONFIG_HEAP_BASE
- * and CONFIG_HEAP_SIZE. If these are not defined, then this function
- * will be called to dynamically set aside the heap region to the end
- * of SRAM.
- *
- * SRAM layout:
- * Start of SRAM: .data
- * .bss
- * IDLE thread stack
- * End of SRAm: heap
- *
- * NOTE: Ignore the erroneous nomenclature DRAM and SDRAM. That names
- * date back to an earlier platform that had SDRAM.
- *
- ************************************************************************/
-
-void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
-{
- up_ledon(LED_HEAPALLOCATE);
- *heap_start = (FAR void*)g_heapbase;
- *heap_size = LPC313X_HEAP_VEND - g_heapbase;
-}
-
-/************************************************************************
- * Name: up_addregion
- *
- * Description:
- * Memory may be added in non-contiguous chunks. Additional chunks are
- * added by calling this function.
- *
- ************************************************************************/
-
-#if CONFIG_MM_REGIONS > 1
-void up_addregion(void)
-{
-#if defined(CONFIG_LPC313X_EXTSRAM0) && defined(CONFIG_LPC313X_EXTSRAM0HEAP)
- mm_addregion((FAR void*)LPC313X_EXTSRAM0_VSECTION, CONFIG_LPC313X_EXTSRAM0SIZE);
-#endif
-
-#if defined(CONFIG_LPC313X_EXTSRAM1) && defined(CONFIG_LPC313X_EXTSRAM1HEAP)
- mm_addregion((FAR void*)LPC313X_EXTSRAM1_VSECTION, CONFIG_LPC313X_EXTSRAM1SIZE);
-#endif
-
-#if defined(CONFIG_LPC313X_EXTSDRAM) && defined(CONFIG_LPC313X_EXTSDRAMHEAP)
- mm_addregion((FAR void*)LPC313X_EXTSDRAM_VSECTION, CONFIG_LPC313X_EXTSDRAMSIZE);
-#endif
-}
-#endif
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_bcrndx.c b/nuttx/arch/arm/src/lpc313x/lpc313x_bcrndx.c
deleted file mode 100755
index 99935387d..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_bcrndx.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_bcrndx.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_bcrndx
- *
- * Description:
- * Only 5 of the 12 domains have an associated BCR register. This
- * function returns the index to the associated BCR register (if any)
- * or BCRNDX_INVALID otherwise.
- *
- ************************************************************************/
-
-int lpc313x_bcrndx(enum lpc313x_domainid_e dmnid)
-{
- switch (dmnid)
- {
- /* BCR0-3 correspond directly to domains 0-3 */
-
- case DOMAINID_SYS: /* Domain 0: SYS_BASE */
- case DOMAINID_AHB0APB0: /* Domain 1: AHB0APB0_BASE */
- case DOMAINID_AHB0APB1: /* Domain 2: AHB0APB1_BASE */
- case DOMAINID_AHB0APB2: /* Domain 3: AHB0APB2_BASE */
- return (int)dmnid;
-
- /* There is a BCR register corresponding to domain 7, but it is at
- * index 4
- */
-
- case DOMAINID_CLK1024FS: /* Domain 7: CLK1024FS_BASE */
- return 4;
-
- default: /* There is no BCR register for the other
- * domains. */
- break;
- }
- return BCRNDX_INVALID;
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_boot.c b/nuttx/arch/arm/src/lpc313x/lpc313x_boot.c
deleted file mode 100755
index 6f9934b87..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_boot.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_boot.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "chip.h"
-#include "arm.h"
-#include "up_internal.h"
-#include "up_arch.h"
-
-#include "lpc313x_syscreg.h"
-#include "lpc313x_cgudrvr.h"
-#include "lpc313x_internal.h"
-
-#ifdef CONFIG_PAGING
-# include <nuttx/page.h>
-# include "pg_macros.h"
-#endif
-
-/************************************************************************************
- * Private Types
- ************************************************************************************/
-
-/************************************************************************************
- * Private Types
- ************************************************************************************/
-
-struct section_mapping_s
-{
- uint32_t physbase; /* Physical address of the region to be mapped */
- uint32_t virtbase; /* Virtual address of the region to be mapped */
- uint32_t mmuflags; /* MMU settings for the region (e.g., cache-able) */
- uint32_t nsections; /* Number of mappings in the region */
-};
-
-/************************************************************************************
- * Public Variables
- ************************************************************************************/
-
-extern uint32_t _vector_start; /* Beginning of vector block */
-extern uint32_t _vector_end; /* End+1 of vector block */
-
-/************************************************************************************
- * Private Variables
- ************************************************************************************/
-
-/* This table describes how to map a set of 1Mb pages to space the physical address
- * space of the LPCD313x.
- */
-
-#ifndef CONFIG_ARCH_ROMPGTABLE
-static const struct section_mapping_s section_mapping[] =
-{
- { LPC313X_SHADOWSPACE_PSECTION, LPC313X_SHADOWSPACE_VSECTION,
- LPC313X_SHADOWSPACE_MMUFLAGS, LPC313X_SHADOWSPACE_NSECTIONS},
-#ifndef CONFIG_PAGING /* SRAM is already fully mapped */
- { LPC313X_INTSRAM_PSECTION, LPC313X_INTSRAM_VSECTION,
- LPC313X_INTSRAM_MMUFLAGS, LPC313X_INTSRAM_NSECTIONS},
-#endif
-#ifdef CONFIG_ARCH_ROMPGTABLE
- { LPC313X_INTSROM0_PSECTION, LPC313X_INTSROM0_VSECTION,
- LPC313X_INTSROM_MMUFLAGS, LPC313X_INTSROM0_NSECTIONS},
-#endif
- { LPC313X_APB01_PSECTION, LPC313X_APB01_VSECTION,
- LPC313X_APB01_MMUFLAGS, LPC313X_APB01_NSECTIONS},
- { LPC313X_APB2_PSECTION, LPC313X_APB2_VSECTION,
- LPC313X_APB2_MMUFLAGS, LPC313X_APB2_NSECTIONS},
- { LPC313X_APB3_PSECTION, LPC313X_APB3_VSECTION,
- LPC313X_APB3_MMUFLAGS, LPC313X_APB3_NSECTIONS},
- { LPC313X_APB4MPMC_PSECTION, LPC313X_APB4MPMC_VSECTION,
- LPC313X_APB4MPMC_MMUFLAGS, LPC313X_APB4MPMC_NSECTIONS},
- { LPC313X_MCI_PSECTION, LPC313X_MCI_VSECTION,
- LPC313X_MCI_MMUFLAGS, LPC313X_MCI_NSECTIONS},
- { LPC313X_USBOTG_PSECTION, LPC313X_USBOTG_VSECTION,
- LPC313X_USBOTG_MMUFLAGS, LPC313X_USBOTG_NSECTIONS},
-#if defined(CONFIG_LPC313X_EXTSRAM0) && CONFIG_LPC313X_EXTSRAM0SIZE > 0
- { LPC313X_EXTSRAM_PSECTION, LPC313X_EXTSRAM_VSECTION,
- LPC313X_EXTSDRAM_MMUFLAGS, LPC313X_EXTSRAM_NSECTIONS},
-#endif
-#if defined(CONFIG_LPC313X_EXTSDRAM) && CONFIG_LPC313X_EXTSDRAMSIZE > 0
- { LPC313X_EXTSDRAM0_PSECTION, LPC313X_EXTSDRAM0_VSECTION,
- LPC313X_EXTSDRAM_MMUFLAGS, LPC313X_EXTSDRAM0_NSECTIONS},
-#endif
- { LPC313X_INTC_PSECTION, LPC313X_INTC_VSECTION,
- LPC313X_INTC_MMUFLAGS, LPC313X_INTC_NSECTIONS},
-#ifdef CONFIG_LPC313X_EXTNAND
- { LPC313X_NAND_PSECTION, LPC313X_NAND_VSECTION
- LPC313X_NAND_MMUFLAGS, LPC313X_NAND_NSECTIONS},
-#endif
-};
-#define NMAPPINGS (sizeof(section_mapping) / sizeof(struct section_mapping_s))
-#endif
-
-/************************************************************************************
- * Private Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: up_setlevel1entry
- ************************************************************************************/
-
-#ifndef CONFIG_ARCH_ROMPGTABLE
-static inline void up_setlevel1entry(uint32_t paddr, uint32_t vaddr, uint32_t mmuflags)
-{
- uint32_t *pgtable = (uint32_t*)PGTABLE_BASE_VADDR;
- uint32_t index = vaddr >> 20;
-
- /* Save the page table entry */
-
- pgtable[index] = (paddr | mmuflags);
-}
-#endif
-
-/************************************************************************************
- * Name: up_setlevel2coarseentry
- ************************************************************************************/
-
-static inline void up_setlevel2coarseentry(uint32_t ctabvaddr, uint32_t paddr,
- uint32_t vaddr, uint32_t mmuflags)
-{
- uint32_t *ctable = (uint32_t*)ctabvaddr;
- uint32_t index;
-
- /* The coarse table divides a 1Mb address space up into 256 entries, each
- * corresponding to 4Kb of address space. The coarse page table index is
- * related to the offset from the beginning of 1Mb region.
- */
-
- index = (vaddr & 0x000ff000) >> 12;
-
- /* Save the coarse table entry */
-
- ctable[index] = (paddr | mmuflags);
-}
-
-/************************************************************************************
- * Name: up_setupmappings
- ************************************************************************************/
-
-#ifndef CONFIG_ARCH_ROMPGTABLE
-static void up_setupmappings(void)
-{
- int i, j;
-
- for (i = 0; i < NMAPPINGS; i++)
- {
- uint32_t sect_paddr = section_mapping[i].physbase;
- uint32_t sect_vaddr = section_mapping[i].virtbase;
- uint32_t mmuflags = section_mapping[i].mmuflags;
-
- for (j = 0; j < section_mapping[i].nsections; j++)
- {
- up_setlevel1entry(sect_paddr, sect_vaddr, mmuflags);
- sect_paddr += SECTION_SIZE;
- sect_vaddr += SECTION_SIZE;
- }
- }
-}
-#endif
-
-/************************************************************************************
- * Name: up_vectorpermissions
- *
- * Description:
- * Set permissions on the vector mapping.
- *
- ************************************************************************************/
-
-#if !defined(CONFIG_ARCH_ROMPGTABLE) && defined(CONFIG_ARCH_LOWVECTORS) && defined(CONFIG_PAGING)
-static void up_vectorpermissions(uint32_t mmuflags)
-{
- /* The PTE for the beginning of ISRAM is at the base of the L2 page table */
-
- uint32_t *ptr = (uint32_t*)PG_L2_VECT_VADDR;
- uint32_t pte;
-
- /* The pte might be zero the first time this function is called. */
-
- pte = *ptr;
- if (pte == 0)
- {
- pte = PG_VECT_PBASE;
- }
- else
- {
- pte &= PG_L1_PADDRMASK;
- }
-
- /* Update the MMU flags and save */
-
- *ptr = pte | mmuflags;
-
- /* Invalid the TLB for this address */
-
- tlb_invalidate_single(PG_L2_VECT_VADDR);
-}
-#endif
-
-/************************************************************************************
- * Name: up_vectormapping
- *
- * Description:
- * Setup a special mapping for the interrupt vectors when (1) the interrupt
- * vectors are not positioned in ROM, and when (2) the interrupt vectors are
- * located at the high address, 0xffff0000. When the interrupt vectors are located
- * in ROM, we just have to assume that they were set up correctly; When vectors
- * are located in low memory, 0x00000000, the shadow memory region will be mapped
- * to support them.
- *
- ************************************************************************************/
-
-#if !defined(CONFIG_ARCH_ROMPGTABLE) && !defined(CONFIG_ARCH_LOWVECTORS)
-static void up_vectormapping(void)
-{
- uint32_t vector_paddr = LPC313X_VECTOR_PADDR;
- uint32_t vector_vaddr = LPC313X_VECTOR_VADDR;
- uint32_t end_paddr = vector_paddr + VECTOR_TABLE_SIZE;
-
- /* We want to keep our interrupt vectors and interrupt-related logic in zero-wait
- * state internal RAM (IRAM). The DM320 has 16Kb of IRAM positioned at physical
- * address 0x0000:0000; we need to map this to 0xffff:0000.
- */
-
- while (vector_paddr < end_paddr)
- {
- up_setlevel2coarseentry(PGTABLE_L2_COARSE_VBASE, vector_paddr,
- vector_vaddr, MMU_L2_VECTORFLAGS);
- vector_paddr += 4096;
- vector_vaddr += 4096;
- }
-
- /* Now set the level 1 descriptor to refer to the level 2 coarse page table. */
-
- up_setlevel1entry(PGTABLE_L2_COARSE_PBASE, LPC313X_VECTOR_VCOARSE,
- MMU_L1_VECTORFLAGS);
-}
-#endif
-
-/************************************************************************************
- * Name: up_copyvectorblock
- *
- * Description:
- * Copy the interrupt block to its final destination.
- *
- ************************************************************************************/
-
-static void up_copyvectorblock(void)
-{
- uint32_t *src;
- uint32_t *end;
- uint32_t *dest;
-
- /* If we are using vectors in low memory but RAM in that area has been marked
- * read only, then temparily mark the mapping write-able (non-buffered).
- */
-
-#if !defined(CONFIG_ARCH_ROMPGTABLE) && defined(CONFIG_ARCH_LOWVECTORS) && defined(CONFIG_PAGING)
- up_vectorpermissions(MMU_L2_VECTRWFLAGS);
-#endif
-
- /* Copy the vectors into ISRAM at the address that will be mapped to the vector
- * address:
- *
- * LPC313X_VECTOR_PADDR - Unmapped, physical address of vector table in SRAM
- * LPC313X_VECTOR_VSRAM - Virtual address of vector table in SRAM
- * LPC313X_VECTOR_VADDR - Virtual address of vector table (0x00000000 or 0xffff0000)
- */
-
- src = (uint32_t*)&_vector_start;
- end = (uint32_t*)&_vector_end;
- dest = (uint32_t*)LPC313X_VECTOR_VSRAM;
-
- while (src < end)
- {
- *dest++ = *src++;
- }
-
- /* Make the vectors read-only, cacheable again */
-
-#if !defined(CONFIG_ARCH_ROMPGTABLE) && defined(CONFIG_ARCH_LOWVECTORS) && defined(CONFIG_PAGING)
- up_vectorpermissions(MMU_L2_VECTROFLAGS);
-#endif
-
- /* Then set the LPC313x shadow register, LPC313X_SYSCREG_ARM926SHADOWPTR, so that
- * the vector table is mapped to address 0x0000:0000 - NOTE: that there is not yet
- * full support for the vector table at address 0xffff0000.
- */
-
- putreg32(LPC313X_VECTOR_PADDR, LPC313X_SYSCREG_ARM926SHADOWPTR);
-}
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: up_boot
- *
- * Description:
- * Complete boot operations started in up_head.S
- *
- ************************************************************************************/
-
-void up_boot(void)
-{
- /* __start provided the basic MMU mappings for SRAM. Now provide mappings for all
- * IO regions (Including the vector region).
- */
-
-#ifndef CONFIG_ARCH_ROMPGTABLE
- up_setupmappings();
-
- /* Provide a special mapping for the IRAM interrupt vector positioned in high
- * memory.
- */
-
-#ifndef CONFIG_ARCH_LOWVECTORS
- up_vectormapping();
-#endif
-#endif /* CONFIG_ARCH_ROMPGTABLE */
-
- /* Setup up vector block. _vector_start and _vector_end are exported from
- * up_vector.S
- */
-
- up_copyvectorblock();
-
- /* Reset all clocks */
-
- lpc313x_resetclks();
-
- /* Initialize the PLLs */
-
- lpc313x_hp1pllconfig();
- lpc313x_hp0pllconfig();
-
- /* Initialize clocking to settings provided by board-specific logic */
-
- lpc313x_clkinit(&g_boardclks);
-
- /* Map first 4KB of ARM space to ISRAM area */
-
- putreg32(LPC313X_INTSRAM0_PADDR, LPC313X_SYSCREG_ARM926SHADOWPTR);
-
- /* Perform common, low-level chip initialization (might do nothing) */
-
- lpc313x_lowsetup();
-
- /* Perform early serial initialization if we are going to use the serial driver */
-
-#ifdef CONFIG_USE_EARLYSERIALINIT
- up_earlyserialinit();
-#endif
-
- /* Perform board-specific initialization */
-
- lpc313x_boardinitialize();
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_cgu.h b/nuttx/arch/arm/src/lpc313x/lpc313x_cgu.h
deleted file mode 100755
index 961258e39..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_cgu.h
+++ /dev/null
@@ -1,1626 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_cgu.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- *
- * 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_ARM_SRC_LPC313X_CGU_H
-#define __ARCH_ARM_SRC_LPC313X_CGU_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* CGU register base address offset into the APB0 domain ****************************************/
-
-/* APB0 offsets to Clock Switch Box (CSB) and CGU Configuration (CFG) register groups */
-
-#define LPC313X_APB0_GCU_CSB_OFFSET (LPC313X_APB0_GCU_OFFSET)
-#define LPC313X_APB0_GCU_CFG_OFFSET (LPC313X_APB0_GCU_OFFSET+0x0c00)
-
-/* Virtual and physical base address of the CGU block and CSB and CFG register groups */
-
-#define LPC313X_CGU_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_CGU_OFFSET)
-#define LPC313X_CGU_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_CGU_OFFSET)
-
-#define LPC313X_CGU_CSB_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_GCU_CSB_OFFSET)
-#define LPC313X_CGU_CSB_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_GCU_CSB_OFFSET)
-
-#define LPC313X_CGU_CFG_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_GCU_CFG_OFFSET)
-#define LPC313X_CGU_CFG_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_GCU_CFG_OFFSET)
-
-/* CGU register offsets *************************************************************************/
-/* CGU clock switchbox register offsets (with respect to the CGU CSB register base) *************/
-/* Switch configuration registers (SCR) for base clocks */
-
-#define LPC313X_CGU_SCR_OFFSET(n) (0x000+((n)<<2))
-#define LPC313X_CGU_SCR0_OFFSET 0x000 /* SYS base */
-#define LPC313X_CGU_SCR1_OFFSET 0x004 /* AHB0_APB0 base */
-#define LPC313X_CGU_SCR2_OFFSET 0x008 /* AHB0_APB1 base */
-#define LPC313X_CGU_SCR3_OFFSET 0x00c /* AHB0_APB2 base */
-#define LPC313X_CGU_SCR4_OFFSET 0x010 /* AHB0_APB3 base */
-#define LPC313X_CGU_SCR5_OFFSET 0x014 /* PCM base */
-#define LPC313X_CGU_SCR6_OFFSET 0x018 /* UART base */
-#define LPC313X_CGU_SCR7_OFFSET 0x01c /* CLK1024FS base */
-#define LPC313X_CGU_SCR8_OFFSET 0x020 /* I2SRX_BCK0 base */
-#define LPC313X_CGU_SCR9_OFFSET 0x024 /* I2SRX_BCK1 base */
-#define LPC313X_CGU_SCR10_OFFSET 0x028 /* SPI_CLK base */
-#define LPC313X_CGU_SCR11_OFFSET 0x02c /* SYSCLK_O base */
-
-/* Frequency select (FS) registers 1 for base clocks */
-
-#define LPC313X_CGU_FS1_OFFSET(n) (0x030+((n)<<2))
-#define LPC313X_CGU_FS1_0_OFFSET 0x030 /* SYS base */
-#define LPC313X_CGU_FS1_1_OFFSET 0x034 /* AHB0_APB0 base */
-#define LPC313X_CGU_FS1_2_OFFSET 0x038 /* AHB0_APB1 base */
-#define LPC313X_CGU_FS1_3_OFFSET 0x03c /* AHB0_APB2 base */
-#define LPC313X_CGU_FS1_4_OFFSET 0x040 /* AHB0_APB3 base */
-#define LPC313X_CGU_FS1_5_OFFSET 0x044 /* PCM base */
-#define LPC313X_CGU_FS1_6_OFFSET 0x048 /* UART base */
-#define LPC313X_CGU_FS1_7_OFFSET 0x04c /* CLK1024FS base */
-#define LPC313X_CGU_FS1_8_OFFSET 0x050 /* I2SRX_BCK0 base */
-#define LPC313X_CGU_FS1_9_OFFSET 0x054 /* I2SRX_BCK1 base */
-#define LPC313X_CGU_FS1_10_OFFSET 0x058 /* SPI_CLK base */
-#define LPC313X_CGU_FS1_11_OFFSET 0x05c /* SYSCLK_O base */
-
-/* Frequency select (FS) registers 2 for base clocks */
-
-#define LPC313X_CGU_FS2_OFFSET(n) (0x060+((n)<<2))
-#define LPC313X_CGU_FS2_0_OFFSET 0x060 /* SYS base */
-#define LPC313X_CGU_FS2_1_OFFSET 0x064 /* AHB0_APB0 base */
-#define LPC313X_CGU_FS2_2_OFFSET 0x068 /* AHB0_APB1 base */
-#define LPC313X_CGU_FS2_3_OFFSET 0x06c /* AHB0_APB2 base */
-#define LPC313X_CGU_FS2_4_OFFSET 0x070 /* AHB0_APB3 base */
-#define LPC313X_CGU_FS2_5_OFFSET 0x074 /* PCM base */
-#define LPC313X_CGU_FS2_6_OFFSET 0x078 /* UART base */
-#define LPC313X_CGU_FS2_7_OFFSET 0x07c /* CLK1024FS base */
-#define LPC313X_CGU_FS2_8_OFFSET 0x080 /* I2SRX_BCK0 base */
-#define LPC313X_CGU_FS2_9_OFFSET 0x084 /* I2SRX_BCK1 base */
-#define LPC313X_CGU_FS2_10_OFFSET 0x088 /* SPI_CLK base */
-#define LPC313X_CGU_FS2_11_OFFSET 0x08c /* SYSCLK_O base */
-
-/* Switch status registers (SSR) for base clocks */
-
-#define LPC313X_CGU_SSR_OFFSET(n) (0x090+((n)<<2))
-#define LPC313X_CGU_SSR0_OFFSET 0x090 /* SYS base */
-#define LPC313X_CGU_SSR1_OFFSET 0x094 /* AHB0_APB0 base */
-#define LPC313X_CGU_SSR2_OFFSET 0x098 /* AHB0_APB1 base */
-#define LPC313X_CGU_SSR3_OFFSET 0x09c /* AHB0_APB2 base */
-#define LPC313X_CGU_SSR4_OFFSET 0x0a0 /* AHB0_APB3 base */
-#define LPC313X_CGU_SSR5_OFFSET 0x0a4 /* PCM base */
-#define LPC313X_CGU_SSR6_OFFSET 0x0a8 /* UART base */
-#define LPC313X_CGU_SSR7_OFFSET 0x0ac /* CLK1024FS base */
-#define LPC313X_CGU_SSR8_OFFSET 0x0b0 /* I2SRX_BCK0 base */
-#define LPC313X_CGU_SSR9_OFFSET 0x0b4 /* I2SRX_BCK1 base */
-#define LPC313X_CGU_SSR10_OFFSET 0x0b8 /* SPI_CLK base */
-#define LPC313X_CGU_SSR11_OFFSET 0x0bc /* SYSCLK_O base */
-
-/* Power control registers (PCR), spreading stage */
-
-#define LPC313X_CGU_PCR_OFFSET(n) (0x0c0+((n)<<2))
-#define LPC313X_CGU_PCR0_OFFSET 0x0c0 /* APB0_CLK */
-#define LPC313X_CGU_PCR1_OFFSET 0x0c4 /* APB1_CLK */
-#define LPC313X_CGU_PCR2_OFFSET 0x0c8 /* APB2_CLK */
-#define LPC313X_CGU_PCR3_OFFSET 0x0cc /* APB3_CLK */
-#define LPC313X_CGU_PCR4_OFFSET 0x0d0 /* APB4_CLK */
-#define LPC313X_CGU_PCR5_OFFSET 0x0d4 /* AHB_TO_INTC_CLK */
-#define LPC313X_CGU_PCR6_OFFSET 0x0d8 /* AHB0_CLK */
-#define LPC313X_CGU_PCR7_OFFSET 0x0dc /* EBI_CLK */
-#define LPC313X_CGU_PCR8_OFFSET 0x0e0 /* DMA_PCLK */
-#define LPC313X_CGU_PCR9_OFFSET 0x0e4 /* DMA_CLK_GATED */
-#define LPC313X_CGU_PCR10_OFFSET 0x0e8 /* NANDFLASH_S0_CLK */
-#define LPC313X_CGU_PCR11_OFFSET 0x0ec /* NANDFLASH_ECC_CLK */
-#define LPC313X_CGU_PCR12_OFFSET 0x0f0 /* Reserved */
-#define LPC313X_CGU_PCR13_OFFSET 0x0f4 /* NANDFLASH_NAND_CLK */
-#define LPC313X_CGU_PCR14_OFFSET 0x0f8 /* NANDFLASH_PCLK */
-#define LPC313X_CGU_PCR15_OFFSET 0x0fc /* CLOCK_OUT */
-#define LPC313X_CGU_PCR16_OFFSET 0x100 /* ARM926_CORE_CLK */
-#define LPC313X_CGU_PCR17_OFFSET 0x104 /* ARM926_BUSIF_CLK */
-#define LPC313X_CGU_PCR18_OFFSET 0x108 /* ARM926_RETIME_CLK */
-#define LPC313X_CGU_PCR19_OFFSET 0x10c /* SD_MMC_HCLK */
-#define LPC313X_CGU_PCR20_OFFSET 0x110 /* SD_MMC_CCLK_IN */
-#define LPC313X_CGU_PCR21_OFFSET 0x114 /* USB_OTG_AHB_CLK */
-#define LPC313X_CGU_PCR22_OFFSET 0x118 /* ISRAM0_CLK */
-#define LPC313X_CGU_PCR23_OFFSET 0x11c /* RED_CTL_RSCLK */
-#define LPC313X_CGU_PCR24_OFFSET 0x120 /* ISRAM1_CLK (LPC313x only) */
-#define LPC313X_CGU_PCR25_OFFSET 0x124 /* ISROM_CLK */
-#define LPC313X_CGU_PCR26_OFFSET 0x128 /* MPMC_CFG_CLK */
-#define LPC313X_CGU_PCR27_OFFSET 0x12c /* MPMC_CFG_CLK2 */
-#define LPC313X_CGU_PCR28_OFFSET 0x130 /* MPMC_CFG_CLK3 */
-#define LPC313X_CGU_PCR29_OFFSET 0x134 /* INTC_CLK */
-#define LPC313X_CGU_PCR30_OFFSET 0x138 /* AHB_TO_APB0_PCLK */
-#define LPC313X_CGU_PCR31_OFFSET 0x13c /* EVENT_ROUTER_PCLK */
-#define LPC313X_CGU_PCR32_OFFSET 0x140 /* ADC_PCLK */
-#define LPC313X_CGU_PCR33_OFFSET 0x144 /* ADC_CLK */
-#define LPC313X_CGU_PCR34_OFFSET 0x148 /* WDOG_PCLK */
-#define LPC313X_CGU_PCR35_OFFSET 0x14c /* IOCONF_PCLK */
-#define LPC313X_CGU_PCR36_OFFSET 0x150 /* CGU_PCLK */
-#define LPC313X_CGU_PCR37_OFFSET 0x154 /* SYSCREG_PCLK */
-#define LPC313X_CGU_PCR38_OFFSET 0x158 /* Reserved */
-#define LPC313X_CGU_PCR39_OFFSET 0x15c /* RNG_PCLK */
-#define LPC313X_CGU_PCR40_OFFSET 0x160 /* AHB_TO_APB1_PCLK */
-#define LPC313X_CGU_PCR41_OFFSET 0x164 /* TIMER0_PCLK */
-#define LPC313X_CGU_PCR42_OFFSET 0x168 /* TIMER1_PCLK */
-#define LPC313X_CGU_PCR43_OFFSET 0x16c /* TIMER2_PCLK */
-#define LPC313X_CGU_PCR44_OFFSET 0x170 /* TIMER3_PCLK */
-#define LPC313X_CGU_PCR45_OFFSET 0x174 /* PWM_PCLK */
-#define LPC313X_CGU_PCR46_OFFSET 0x178 /* PWM_PCLK_REGS */
-#define LPC313X_CGU_PCR47_OFFSET 0x17c /* PWM_CLK */
-#define LPC313X_CGU_PCR48_OFFSET 0x180 /* I2C0_PCLK */
-#define LPC313X_CGU_PCR49_OFFSET 0x184 /* I2C1_PCLK */
-#define LPC313X_CGU_PCR50_OFFSET 0x188 /* AHB_TO_APB2_PCLK */
-#define LPC313X_CGU_PCR51_OFFSET 0x18c /* PCM_PCLK */
-#define LPC313X_CGU_PCR52_OFFSET 0x190 /* PCM_APB_PCLK */
-#define LPC313X_CGU_PCR53_OFFSET 0x194 /* UART_APB_CLK */
-#define LPC313X_CGU_PCR54_OFFSET 0x198 /* LCD_PCLK */
-#define LPC313X_CGU_PCR55_OFFSET 0x19c /* LCD_CLK */
-#define LPC313X_CGU_PCR56_OFFSET 0x1a0 /* SPI_PCLK */
-#define LPC313X_CGU_PCR57_OFFSET 0x1a4 /* SPI_PCLK_GATED */
-#define LPC313X_CGU_PCR58_OFFSET 0x1a8 /* AHB_TO_APB3_PCLK */
-#define LPC313X_CGU_PCR59_OFFSET 0x1ac /* I2S_CFG_PCLK */
-#define LPC313X_CGU_PCR60_OFFSET 0x1b0 /* EDGE_DET_PCLK */
-#define LPC313X_CGU_PCR61_OFFSET 0x1b4 /* I2STX_FIFO_0_PCLK */
-#define LPC313X_CGU_PCR62_OFFSET 0x1b8 /* I2STX_IF_0_PCLK */
-#define LPC313X_CGU_PCR63_OFFSET 0x1bc /* I2STX_FIFO_1_PCLK */
-#define LPC313X_CGU_PCR64_OFFSET 0x1c0 /* I2STX_IF_1_PCLK */
-#define LPC313X_CGU_PCR65_OFFSET 0x1c4 /* I2SRX_FIFO_0_PCLK */
-#define LPC313X_CGU_PCR66_OFFSET 0x1c8 /* I2SRX_IF_0_PCLK */
-#define LPC313X_CGU_PCR67_OFFSET 0x1cc /* I2SRX_FIFO_1_PCLK */
-#define LPC313X_CGU_PCR68_OFFSET 0x1d0 /* I2SRX_IF_1_PCLK */
-#define LPC313X_CGU_PCR69_OFFSET 0x1d4 /* Reserved */
-#define LPC313X_CGU_PCR70_OFFSET 0x1d8 /* Reserved */
-#define LPC313X_CGU_PCR71_OFFSET 0x1dc /* PCM_CLK_IP */
-#define LPC313X_CGU_PCR72_OFFSET 0x1e0 /* UART_U_CLK */
-#define LPC313X_CGU_PCR73_OFFSET 0x1e4 /* I2S_EDGE_DETECT_CLK */
-#define LPC313X_CGU_PCR74_OFFSET 0x1e8 /* I2STX_BCK0_N */
-#define LPC313X_CGU_PCR75_OFFSET 0x1ec /* I2STX_WS0 */
-#define LPC313X_CGU_PCR76_OFFSET 0x1f0 /* I2STX_CLK0 */
-#define LPC313X_CGU_PCR77_OFFSET 0x1f4 /* I2STX_BCK1_N */
-#define LPC313X_CGU_PCR78_OFFSET 0x1f8 /* I2STX_WS1 */
-#define LPC313X_CGU_PCR79_OFFSET 0x1fc /* CLK_256FS */
-#define LPC313X_CGU_PCR80_OFFSET 0x200 /* I2SRX_BCK0_N */
-#define LPC313X_CGU_PCR81_OFFSET 0x204 /* I2SRX_WS0 */
-#define LPC313X_CGU_PCR82_OFFSET 0x208 /* I2SRX_BCK1_N */
-#define LPC313X_CGU_PCR83_OFFSET 0x20c /* I2SRX_WS1 */
-#define LPC313X_CGU_PCR84_OFFSET 0x210 /* Reserved */
-#define LPC313X_CGU_PCR85_OFFSET 0x214 /* Reserved */
-#define LPC313X_CGU_PCR86_OFFSET 0x218 /* Reserved */
-#define LPC313X_CGU_PCR87_OFFSET 0x21c /* I2SRX_BCK0 */
-#define LPC313X_CGU_PCR88_OFFSET 0x220 /* I2SRX_BCK1 */
-#define LPC313X_CGU_PCR89_OFFSET 0x224 /* SPI_CLK */
-#define LPC313X_CGU_PCR90_OFFSET 0x228 /* SPI_CLK_GATED */
-#define LPC313X_CGU_PCR91_OFFSET 0x22c /* SYSCLK_O */
-
-/* Power status registers (PSR), spreading stage */
-
-#define LPC313X_CGU_PSR_OFFSET(n) (0x230+((n)<<2))
-#define LPC313X_CGU_PSR0_OFFSET 0x230 /* PB0_CLK */
-#define LPC313X_CGU_PSR1_OFFSET 0x234 /* PB1_CLK */
-#define LPC313X_CGU_PSR2_OFFSET 0x238 /* PB2_CLK */
-#define LPC313X_CGU_PSR3_OFFSET 0x23c /* PB3_CLK */
-#define LPC313X_CGU_PSR4_OFFSET 0x240 /* PB4_CLK */
-#define LPC313X_CGU_PSR5_OFFSET 0x244 /* HB_TO_INTC_CLK */
-#define LPC313X_CGU_PSR6_OFFSET 0x248 /* HB0_CLK */
-#define LPC313X_CGU_PSR7_OFFSET 0x24c /* EBI_CLK */
-#define LPC313X_CGU_PSR8_OFFSET 0x250 /* DMA_PCLK */
-#define LPC313X_CGU_PSR9_OFFSET 0x254 /* DMA_CLK_GATED */
-#define LPC313X_CGU_PSR10_OFFSET 0x258 /* NANDFLASH_S0_CLK */
-#define LPC313X_CGU_PSR11_OFFSET 0x25c /* NANDFLASH_ECC_CLK */
-#define LPC313X_CGU_PSR12_OFFSET 0x260 /* Reserved */
-#define LPC313X_CGU_PSR13_OFFSET 0x264 /* NANDFLASH_NAND_CLK */
-#define LPC313X_CGU_PSR14_OFFSET 0x268 /* NANDFLASH_PCLK */
-#define LPC313X_CGU_PSR15_OFFSET 0x26c /* CLOCK_OUT */
-#define LPC313X_CGU_PSR16_OFFSET 0x270 /* RM926_CORE_CLK */
-#define LPC313X_CGU_PSR17_OFFSET 0x274 /* RM926_BUSIF_CLK */
-#define LPC313X_CGU_PSR18_OFFSET 0x278 /* RM926_RETIME_CLK */
-#define LPC313X_CGU_PSR19_OFFSET 0x27c /* SD_MMC_HCLK */
-#define LPC313X_CGU_PSR20_OFFSET 0x280 /* SD_MMC_CCLK_IN */
-#define LPC313X_CGU_PSR21_OFFSET 0x284 /* USB_OTG_AHB_CLK */
-#define LPC313X_CGU_PSR22_OFFSET 0x288 /* ISRAM0_CLK */
-#define LPC313X_CGU_PSR23_OFFSET 0x28c /* RED_CTL_RSCLK */
-#define LPC313X_CGU_PSR24_OFFSET 0x290 /* ISRAM1_CLK */
-#define LPC313X_CGU_PSR25_OFFSET 0x294 /* ISROM_CLK */
-#define LPC313X_CGU_PSR26_OFFSET 0x298 /* MPMC_CFG_CLK */
-#define LPC313X_CGU_PSR27_OFFSET 0x29c /* MPMC_CFG_CLK2 */
-#define LPC313X_CGU_PSR28_OFFSET 0x2a0 /* MPMC_CFG_CLK3 */
-#define LPC313X_CGU_PSR29_OFFSET 0x2a4 /* INTC_CLK */
-#define LPC313X_CGU_PSR30_OFFSET 0x2a8 /* HB_TO_APB0_PCLK */
-#define LPC313X_CGU_PSR31_OFFSET 0x2ac /* EVENT_ROUTER_PCLK */
-#define LPC313X_CGU_PSR32_OFFSET 0x2b0 /* DC_PCLK */
-#define LPC313X_CGU_PSR33_OFFSET 0x2b4 /* DC_CLK */
-#define LPC313X_CGU_PSR34_OFFSET 0x2b8 /* WDOG_PCLK */
-#define LPC313X_CGU_PSR35_OFFSET 0x2bc /* IOCONF_PCLK */
-#define LPC313X_CGU_PSR36_OFFSET 0x2c0 /* CGU_PCLK */
-#define LPC313X_CGU_PSR37_OFFSET 0x2c4 /* SYSCREG_PCLK */
-#define LPC313X_CGU_PSR38_OFFSET 0x2c8 /* Reserved */
-#define LPC313X_CGU_PSR39_OFFSET 0x2cc /* RNG_PCLK */
-#define LPC313X_CGU_PSR40_OFFSET 0x2d0 /* HB_TO_APB1_PCLK */
-#define LPC313X_CGU_PSR41_OFFSET 0x2d4 /* TIMER0_PCLK */
-#define LPC313X_CGU_PSR42_OFFSET 0x2d8 /* TIMER1_PCLK */
-#define LPC313X_CGU_PSR43_OFFSET 0x2dc /* TIMER2_PCLK */
-#define LPC313X_CGU_PSR44_OFFSET 0x2e0 /* TIMER3_PCLK */
-#define LPC313X_CGU_PSR45_OFFSET 0x2e4 /* PWM_PCLK */
-#define LPC313X_CGU_PSR46_OFFSET 0x2e8 /* PWM_PCLK_REGS */
-#define LPC313X_CGU_PSR47_OFFSET 0x2ec /* PWM_CLK */
-#define LPC313X_CGU_PSR48_OFFSET 0x2f0 /* I2C0_PCLK */
-#define LPC313X_CGU_PSR49_OFFSET 0x2f4 /* I2C1_PCLK */
-#define LPC313X_CGU_PSR50_OFFSET 0x2f8 /* HB_TO_APB2_PCLK */
-#define LPC313X_CGU_PSR51_OFFSET 0x2fc /* PCM_PCLK */
-#define LPC313X_CGU_PSR52_OFFSET 0x300 /* PCM_APB_PCLK */
-#define LPC313X_CGU_PSR53_OFFSET 0x304 /* UART_APB_CLK */
-#define LPC313X_CGU_PSR54_OFFSET 0x308 /* LCD_PCLK */
-#define LPC313X_CGU_PSR55_OFFSET 0x30c /* LCD_CLK */
-#define LPC313X_CGU_PSR56_OFFSET 0x310 /* SPI_PCLK */
-#define LPC313X_CGU_PSR57_OFFSET 0x314 /* SPI_PCLK_GATED */
-#define LPC313X_CGU_PSR58_OFFSET 0x318 /* HB_TO_APB3_PCLK */
-#define LPC313X_CGU_PSR59_OFFSET 0x31c /* I2S_CFG_PCLK */
-#define LPC313X_CGU_PSR60_OFFSET 0x320 /* EDGE_DET_PCLK */
-#define LPC313X_CGU_PSR61_OFFSET 0x324 /* I2STX_FIFO_0_PCLK */
-#define LPC313X_CGU_PSR62_OFFSET 0x328 /* I2STX_IF_0_PCLK */
-#define LPC313X_CGU_PSR63_OFFSET 0x32c /* I2STX_FIFO_1_PCLK */
-#define LPC313X_CGU_PSR64_OFFSET 0x330 /* I2STX_IF_1_PCLK */
-#define LPC313X_CGU_PSR65_OFFSET 0x334 /* I2SRX_FIFO_0_PCLK */
-#define LPC313X_CGU_PSR66_OFFSET 0x338 /* I2SRX_IF_0_PCLK */
-#define LPC313X_CGU_PSR67_OFFSET 0x33c /* I2SRX_FIFO_1_PCLK */
-#define LPC313X_CGU_PSR68_OFFSET 0x340 /* I2SRX_IF_1_PCLK */
-#define LPC313X_CGU_PSR69_OFFSET 0x344 /* Reserved */
-#define LPC313X_CGU_PSR70_OFFSET 0x348 /* Reserved */
-#define LPC313X_CGU_PSR71_OFFSET 0x34c /* PCM_CLK_IP */
-#define LPC313X_CGU_PSR72_OFFSET 0x350 /* UART_U_CLK */
-#define LPC313X_CGU_PSR73_OFFSET 0x354 /* I2S_EDGE_DETECT_CLK */
-#define LPC313X_CGU_PSR74_OFFSET 0x358 /* I2STX_BCK0_N */
-#define LPC313X_CGU_PSR75_OFFSET 0x35c /* I2STX_WS0 */
-#define LPC313X_CGU_PSR76_OFFSET 0x360 /* I2STX_CLK0 */
-#define LPC313X_CGU_PSR77_OFFSET 0x364 /* I2STX_BCK1_N */
-#define LPC313X_CGU_PSR78_OFFSET 0x368 /* I2STX_WS1 */
-#define LPC313X_CGU_PSR79_OFFSET 0x36c /* CLK_256FS */
-#define LPC313X_CGU_PSR80_OFFSET 0x370 /* I2SRX_BCK0_N */
-#define LPC313X_CGU_PSR81_OFFSET 0x374 /* I2SRX_WS0 */
-#define LPC313X_CGU_PSR82_OFFSET 0x378 /* I2SRX_BCK1_N */
-#define LPC313X_CGU_PSR83_OFFSET 0x37c /* I2SRX_WS1 */
-#define LPC313X_CGU_PSR84_OFFSET 0x380 /* Reserved */
-#define LPC313X_CGU_PSR85_OFFSET 0x384 /* Reserved */
-#define LPC313X_CGU_PSR86_OFFSET 0x388 /* Reserved */
-#define LPC313X_CGU_PSR87_OFFSET 0x38c /* I2SRX_BCK0 */
-#define LPC313X_CGU_PSR88_OFFSET 0x390 /* I2SRX_BCK1 */
-#define LPC313X_CGU_PSR89_OFFSET 0x394 /* SPI_CLK */
-#define LPC313X_CGU_PSR90_OFFSET 0x398 /* SPI_CLK_GATED */
-#define LPC313X_CGU_PSR91_OFFSET 0x39c /* SYSCLK_O */
-
-/* Enable select registers (ESR), spreading stage */
-
-#define LPC313X_CGU_ESR_OFFSET(n) (0x3a0+((n)<<2))
-#define LPC313X_CGU_ESR0_OFFSET 0x3a0 /* APB0_CLK */
-#define LPC313X_CGU_ESR1_OFFSET 0x3a4 /* APB1_CLK */
-#define LPC313X_CGU_ESR2_OFFSET 0x3A8 /* APB2_CLK */
-#define LPC313X_CGU_ESR3_OFFSET 0x3ac /* APB3_CLK */
-#define LPC313X_CGU_ESR4_OFFSET 0x3b0 /* APB4_CLK */
-#define LPC313X_CGU_ESR5_OFFSET 0x3b4 /* AHB_TO_INTC_CLK */
-#define LPC313X_CGU_ESR6_OFFSET 0x3b8 /* AHB0_CLK */
-#define LPC313X_CGU_ESR7_OFFSET 0x3bc /* EBI_CLK */
-#define LPC313X_CGU_ESR8_OFFSET 0x3c0 /* DMA_PCLK */
-#define LPC313X_CGU_ESR9_OFFSET 0x3c4 /* DMA_CLK_GATED */
-#define LPC313X_CGU_ESR10_OFFSET 0x3c8 /* NANDFLASH_S0_CLK */
-#define LPC313X_CGU_ESR11_OFFSET 0x3cc /* NANDFLASH_ECC_CLK */
-#define LPC313X_CGU_ESR12_OFFSET 0x3d0 /* Reserved */
-#define LPC313X_CGU_ESR13_OFFSET 0x3d4 /* NANDFLASH_NAND_CLK */
-#define LPC313X_CGU_ESR14_OFFSET 0x3d8 /* NANDFLASH_PCLK */
-#define LPC313X_CGU_ESR15_OFFSET 0x3dc /* CLOCK_OUT */
-#define LPC313X_CGU_ESR16_OFFSET 0x3e0 /* ARM926_CORE_CLK */
-#define LPC313X_CGU_ESR17_OFFSET 0x3e4 /* ARM926_BUSIF_CLK */
-#define LPC313X_CGU_ESR18_OFFSET 0x3e8 /* ARM926_RETIME_CLK */
-#define LPC313X_CGU_ESR19_OFFSET 0x3ec /* SD_MMC_HCLK */
-#define LPC313X_CGU_ESR20_OFFSET 0x3f0 /* SD_MMC_CCLK_IN */
-#define LPC313X_CGU_ESR21_OFFSET 0x3f4 /* USB_OTG_AHB_CLK */
-#define LPC313X_CGU_ESR22_OFFSET 0x3f8 /* ISRAM0_CLK */
-#define LPC313X_CGU_ESR23_OFFSET 0x3fc /* RED_CTL_RSCLK */
-#define LPC313X_CGU_ESR24_OFFSET 0x400 /* ISRAM1_CLK */
-#define LPC313X_CGU_ESR25_OFFSET 0x404 /* ISROM_CLK */
-#define LPC313X_CGU_ESR26_OFFSET 0x408 /* MPMC_CFG_CLK */
-#define LPC313X_CGU_ESR27_OFFSET 0x40c /* MPMC_CFG_CLK2 */
-#define LPC313X_CGU_ESR28_OFFSET 0x410 /* MPMC_CFG_CLK3 */
-#define LPC313X_CGU_ESR29_OFFSET 0x414 /* INTC_CLK */
-#define LPC313X_CGU_ESR30_OFFSET 0x418 /* AHB_TO_APB0_PCLK */
-#define LPC313X_CGU_ESR31_OFFSET 0x41c /* EVENT_ROUTER_PCLK */
-#define LPC313X_CGU_ESR32_OFFSET 0x420 /* ADC_PCLK */
-#define LPC313X_CGU_ESR33_OFFSET 0x424 /* ADC_CLK */
-#define LPC313X_CGU_ESR34_OFFSET 0x428 /* WDOG_PCLK */
-#define LPC313X_CGU_ESR35_OFFSET 0x42c /* IOCONF_PCLK */
-#define LPC313X_CGU_ESR36_OFFSET 0x430 /* CGU_PCLK */
-#define LPC313X_CGU_ESR37_OFFSET 0x434 /* SYSCREG_PCLK */
-#define LPC313X_CGU_ESR38_OFFSET 0x438 /* Reserved */
-#define LPC313X_CGU_ESR39_OFFSET 0x43c /* RNG_PCLK */
-#define LPC313X_CGU_ESR40_OFFSET 0x440 /* AHB_TO_APB1_PCLK */
-#define LPC313X_CGU_ESR41_OFFSET 0x444 /* TIMER0_PCLK */
-#define LPC313X_CGU_ESR42_OFFSET 0x448 /* TIMER1_PCLK */
-#define LPC313X_CGU_ESR43_OFFSET 0x44c /* TIMER2_PCLK */
-#define LPC313X_CGU_ESR44_OFFSET 0x450 /* TIMER3_PCLK */
-#define LPC313X_CGU_ESR45_OFFSET 0x454 /* PWM_PCLK */
-#define LPC313X_CGU_ESR46_OFFSET 0x458 /* PWM_PCLK_REGS */
-#define LPC313X_CGU_ESR47_OFFSET 0x45c /* PWM_CLK */
-#define LPC313X_CGU_ESR48_OFFSET 0x460 /* I2C0_PCLK */
-#define LPC313X_CGU_ESR49_OFFSET 0x464 /* I2C1_PCLK */
-#define LPC313X_CGU_ESR50_OFFSET 0x468 /* AHB_TO_APB2_PCLK */
-#define LPC313X_CGU_ESR51_OFFSET 0x46c /* PCM_PCLK */
-#define LPC313X_CGU_ESR52_OFFSET 0x470 /* PCM_APB_PCLK */
-#define LPC313X_CGU_ESR53_OFFSET 0x474 /* UART_APB_CLK */
-#define LPC313X_CGU_ESR54_OFFSET 0x478 /* LCD_PCLK */
-#define LPC313X_CGU_ESR55_OFFSET 0x47c /* LCD_CLK */
-#define LPC313X_CGU_ESR56_OFFSET 0x480 /* SPI_PCLK */
-#define LPC313X_CGU_ESR57_OFFSET 0x484 /* SPI_PCLK_GATED */
-#define LPC313X_CGU_ESR58_OFFSET 0x488 /* AHB_TO_APB3_PCLK */
-#define LPC313X_CGU_ESR59_OFFSET 0x48c /* I2S_CFG_PCLK */
-#define LPC313X_CGU_ESR60_OFFSET 0x490 /* EDGE_DET_PCLK */
-#define LPC313X_CGU_ESR61_OFFSET 0x494 /* I2STX_FIFO_0_PCLK */
-#define LPC313X_CGU_ESR62_OFFSET 0x498 /* I2STX_IF_0_PCLK */
-#define LPC313X_CGU_ESR63_OFFSET 0x49c /* I2STX_FIFO_1_PCLK */
-#define LPC313X_CGU_ESR64_OFFSET 0x4a0 /* I2STX_IF_1_PCLK */
-#define LPC313X_CGU_ESR65_OFFSET 0x4a4 /* I2SRX_FIFO_0_PCLK */
-#define LPC313X_CGU_ESR66_OFFSET 0x4a8 /* I2SRX_IF_0_PCLK */
-#define LPC313X_CGU_ESR67_OFFSET 0x4ac /* I2SRX_FIFO_1_PCLK */
-#define LPC313X_CGU_ESR68_OFFSET 0x4b0 /* I2SRX_IF_1_PCLK */
-#define LPC313X_CGU_ESR69_OFFSET 0x4b4 /* Reserved */
-#define LPC313X_CGU_ESR70_OFFSET 0x4b8 /* Reserved */
-#define LPC313X_CGU_ESR71_OFFSET 0x4bc /* PCM_CLK_IP */
-#define LPC313X_CGU_ESR72_OFFSET 0x4c0 /* UART_U_CLK */
-#define LPC313X_CGU_ESR73_OFFSET 0x4c4 /* I2S_EDGE_DETECT_CLK */
-#define LPC313X_CGU_ESR74_OFFSET 0x4c8 /* R_I2STX_BCK0_N */
-#define LPC313X_CGU_ESR75_OFFSET 0x4cc /* I2STX_WS0 */
-#define LPC313X_CGU_ESR76_OFFSET 0x4d0 /* I2STX_CLK0 */
-#define LPC313X_CGU_ESR77_OFFSET 0x4d4 /* I2STX_IF_BCK1_N */
-#define LPC313X_CGU_ESR78_OFFSET 0x4d8 /* I2STX_WS1 */
-#define LPC313X_CGU_ESR79_OFFSET 0x4dc /* CLK_256FS */
-#define LPC313X_CGU_ESR80_OFFSET 0x4e0 /* I2SRX_BCK0_N */
-#define LPC313X_CGU_ESR81_OFFSET 0x4e4 /* I2SRX_WS0 */
-#define LPC313X_CGU_ESR82_OFFSET 0x4e8 /* I2SRX_BCK1_N */
-#define LPC313X_CGU_ESR83_OFFSET 0x4ec /* I2SRX_WS1 */
-#define LPC313X_CGU_ESR84_OFFSET 0x4f0 /* Reserved */
-#define LPC313X_CGU_ESR85_OFFSET 0x4f4 /* Reserved */
-#define LPC313X_CGU_ESR86_OFFSET 0x4f8 /* Reserved */
-#define LPC313X_CGU_ESR87_OFFSET 0x4fc /* SPI_CLK */
-#define LPC313X_CGU_ESR88_OFFSET 0x500 /* SPI_CLK_GATED */
-
-/* Base control registers (BCR) for SYS base */
-
-#define LPC313X_CGU_BCR_OFFSET(n) (0x504+((n)<<2))
-#define LPC313X_CGU_BCR0_OFFSET 0x504 /* SYS base */
-#define LPC313X_CGU_BCR1_OFFSET 0x508 /* AHB0_APB0 base */
-#define LPC313X_CGU_BCR2_OFFSET 0x50c /* AHB0_APB1 base */
-#define LPC313X_CGU_BCR3_OFFSET 0x510 /* AHB0_APB2 base */
-#define LPC313X_CGU_BCR7_OFFSET 0x514 /* CLK1024FS base */
-
-/* Fractional divider configuration (FDC) registers */
-
-#define LPC313X_CGU_FDC_OFFSET(n) (0x518+((n)<<2))
-#define LPC313X_CGU_FDC0_OFFSET 0x518 /* Fractional Divider 0 (SYS base) */
-#define LPC313X_CGU_FDC1_OFFSET 0x51c /* Fractional Divider 1 (SYS base) */
-#define LPC313X_CGU_FDC2_OFFSET 0x520 /* Fractional Divider 2 (SYS base) */
-#define LPC313X_CGU_FDC3_OFFSET 0x524 /* Fractional Divider 3 (SYS base) */
-#define LPC313X_CGU_FDC4_OFFSET 0x528 /* Fractional Divider 4 (SYS base) */
-#define LPC313X_CGU_FDC5_OFFSET 0x52c /* Fractional Divider 5 (SYS base) */
-#define LPC313X_CGU_FDC6_OFFSET 0x530 /* Fractional Divider 6 (SYS base) */
-#define LPC313X_CGU_FDC7_OFFSET 0x534 /* Fractional Divider 7 (AHB0_APB0 base) */
-#define LPC313X_CGU_FDC8_OFFSET 0x538 /* Fractional Divider 8 (AHB0_APB0 base) */
-#define LPC313X_CGU_FDC9_OFFSET 0x53c /* Fractional Divider 9 (AHB0_APB1 base) */
-#define LPC313X_CGU_FDC10_OFFSET 0x540 /* Fractional Divider 10 (AHB0_APB1 base) */
-#define LPC313X_CGU_FDC11_OFFSET 0x544 /* Fractional Divider 11 (AHB0_APB2 base) */
-#define LPC313X_CGU_FDC12_OFFSET 0x548 /* Fractional Divider 12 (AHB0_APB2 base) */
-#define LPC313X_CGU_FDC13_OFFSET 0x54c /* Fractional Divider 13 (AHB0_APB2 base) */
-#define LPC313X_CGU_FDC14_OFFSET 0x550 /* Fractional Divider 14 (AHB0_APB3 base) */
-#define LPC313X_CGU_FDC15_OFFSET 0x554 /* Fractional Divider 15 (PCM base) */
-#define LPC313X_CGU_FDC16_OFFSET 0x558 /* Fractional Divider 16 (UART base) */
-#define LPC313X_CGU_FDC17_OFFSET 0x55c /* Fractional Divider 17 (CLK1024FS base) */
-#define LPC313X_CGU_FDC18_OFFSET 0x560 /* Fractional Divider 18 (CLK1024FS base) */
-#define LPC313X_CGU_FDC19_OFFSET 0x564 /* Fractional Divider 19 (CLK1024FS base) */
-#define LPC313X_CGU_FDC20_OFFSET 0x568 /* Fractional Divider 20 (CLK1024FS base) */
-#define LPC313X_CGU_FDC21_OFFSET 0x56c /* Fractional Divider 21 (CLK1024FS base) */
-#define LPC313X_CGU_FDC22_OFFSET 0x570 /* Fractional Divider 22 (CLK1024FS base) */
-#define LPC313X_CGU_FDC23_OFFSET 0x574 /* Fractional Divider 23 (SPI_CLK base) */
-
-/* Dynamic fractional divider configuration (DYNFDC) registers (SYS base only) */
-
-#define LPC313X_CGU_DYNFDC_OFFSET(n) (0x578+((n)<<2))
-#define LPC313X_CGU_DYNFDC0_OFFSET 0x578 /* Fractional Divider 0 (SYS base) */
-#define LPC313X_CGU_DYNFDC1_OFFSET 0x57c /* Fractional Divider 1 (SYS base) */
-#define LPC313X_CGU_DYNFDC2_OFFSET 0x580 /* Fractional Divider 2 (SYS base) */
-#define LPC313X_CGU_DYNFDC3_OFFSET 0x584 /* Fractional Divider 3 (SYS base) */
-#define LPC313X_CGU_DYNFDC4_OFFSET 0x588 /* Fractional Divider 4 (SYS base) */
-#define LPC313X_CGU_DYNFDC5_OFFSET 0x58c /* Fractional Divider 5 (SYS base) */
-#define LPC313X_CGU_DYNFDC6_OFFSET 0x590 /* Fractional Divider 6 (SYS base) */
-
-/* Dynamic fractional divider selection (DYNSEL) registers (SYS base only) */
-
-#define LPC313X_CGU_DYNSEL_OFFSET(n) (0x594+((n)<<2))
-#define LPC313X_CGU_DYNSEL0_OFFSET 0x594 /* Fractional Divider 0 (SYS base) */
-#define LPC313X_CGU_DYNSEL1_OFFSET 0x598 /* Fractional Divider 1 (SYS base) */
-#define LPC313X_CGU_DYNSEL2_OFFSET 0x59c /* Fractional Divider 2 (SYS base) */
-#define LPC313X_CGU_DYNSEL3_OFFSET 0x5a0 /* Fractional Divider 3 (SYS base) */
-#define LPC313X_CGU_DYNSEL4_OFFSET 0x5a4 /* Fractional Divider 4 (SYS base) */
-#define LPC313X_CGU_DYNSEL5_OFFSET 0x5a8 /* Fractional Divider 5 (SYS base) */
-#define LPC313X_CGU_DYNSEL6_OFFSET 0x5ac /* Fractional Divider 6 (SYS base) */
-
-/* CGU configuration register offsets (with respect to the CGU CFG register base) ***************/
-/* Power and oscillator control */
-
-#define LPC313X_CGU_POWERMODE_OFFSET 0x000 /* Power mode register */
-#define LPC313X_CGU_WDBARK_OFFSET 0x004 /* Watch dog bark register */
-#define LPC313X_CGU_FFASTON_OFFSET 0x008 /* Activate fast oscillator register */
-#define LPC313X_CGU_FFASTBYP_OFFSET 0x00c /* Bypass comparator register fast oscillator reset */
-
-/* Reset control */
-
-#define LPC313X_CGU_SOFTRST_OFFSET(n) (0x010+((n)<<2))
-#define LPC313X_CGU_APB0RST_OFFSET 0x010 /* Reset AHB part of AHB_TO_APB0 bridge */
-#define LPC313X_CGU_AHB2APB0RST_OFFSET 0x014 /* Reset APB part of AHB_TO_APB0 bridge */
-#define LPC313X_CGU_APB1RST_OFFSET 0x018 /* Reset AHB part of AHB_TO_APB1 bridge */
-#define LPC313X_CGU_AHB2PB1RST_OFFSET 0x01c /* Reset APB part of AHB_TO_APB1 bridge */
-#define LPC313X_CGU_APB2RST_OFFSET 0x020 /* Reset AHB part of AHB_TO_APB2 bridge */
-#define LPC313X_CGU_AHB2APB2RST_OFFSET 0x024 /* Reset APB part of AHB_TO_APB2 bridge */
-#define LPC313X_CGU_APB3RST_OFFSET 0x028 /* Reset AHB part of AHB_TO_APB3 bridge */
-#define LPC313X_CGU_AHB2APB3RST_OFFSET 0x02c /* Reset APB part of AHB_TO_APB3 bridge */
-#define LPC313X_CGU_APB4RST_OFFSET 0x030 /* Reset AHB_TO_APB4 bridge */
-#define LPC313X_CGU_AHB2INTCRST_OFFSET 0x034 /* Reset AHB_TO_INTC */
-#define LPC313X_CGU_AHB0RST_OFFSET 0x038 /* Reset AHB0 */
-#define LPC313X_CGU_EBIRST_OFFSET 0x03c /* Reset EBI */
-#define LPC313X_CGU_PCMAPBRST_OFFSET 0x040 /* Reset APB domain of PCM */
-#define LPC313X_CGU_PCMCLKIPRST_OFFSET 0x044 /* Reset synchronous clk_ip domain of PCM */
-#define LPC313X_CGU_PCMRSTASYNC_OFFSET 0x048 /* Reset asynchronous clk_ip domain of PCM */
-#define LPC313X_CGU_TIMER0RST_OFFSET 0x04c /* Reset Timer0 */
-#define LPC313X_CGU_TIMER1RST_OFFSET 0x050 /* Reset Timer1 */
-#define LPC313X_CGU_TIMER2RST_OFFSET 0x054 /* Reset Timer2 */
-#define LPC313X_CGU_TIMER3RST_OFFSET 0x058 /* Reset Timer3 */
-#define LPC313X_CGU_ADCPRST_OFFSET 0x05c /* Reset controller of 10 bit ADC Interface */
-#define LPC313X_CGU_ADCRST_OFFSET 0x060 /* Reset A/D converter of ADC Interface */
-#define LPC313X_CGU_PWMRST_OFFSET 0x064 /* Reset PWM */
-#define LPC313X_CGU_UARTRST_OFFSET 0x068 /* Reset UART/IrDA */
-#define LPC313X_CGU_I2C0RST_OFFSET 0x06c /* Reset I2C0 */
-#define LPC313X_CGU_I2C1RST_OFFSET 0x070 /* Reset I2C1 */
-#define LPC313X_CGU_I2SCFGRST_OFFSET 0x074 /* Reset I2S_Config */
-#define LPC313X_CGU_I2SNSOFRST_OFFSET 0x078 /* Reset NSOF counter of I2S_CONFIG */
-#define LPC313X_CGU_EDGEDETRST_OFFSET 0x07c /* Reset Edge_det */
-#define LPC313X_CGU_I2STXFF0RST_OFFSET 0x080 /* Reset I2STX_FIFO_0 */
-#define LPC313X_CGU_I2STXIF0RST_OFFSET 0x084 /* Reset I2STX_IF_0 */
-#define LPC313X_CGU_I2STXFF1RST_OFFSET 0x088 /* Reset I2STX_FIFO_1 */
-#define LPC313X_CGU_I2STXIF1RST_OFFSET 0x08c /* Reset I2STX_IF_1 */
-#define LPC313X_CGU_I2SRXFF0RST_OFFSET 0x090 /* Reset I2SRX_FIFO_0 */
-#define LPC313X_CGU_I2SRXIF0RST_OFFSET 0x094 /* Reset I2SRX_IF_0 */
-#define LPC313X_CGU_I2SRXFF1RST_OFFSET 0x098 /* Reset I2SRX_FIFO_1 */
-#define LPC313X_CGU_I2SRXIF1RST_OFFSET 0x09c /* Reset I2SRX_IF_1 */
- /* 0x0a0 to 0x0b0: Reserved */
-#define LPC313X_CGU_LCDRST_OFFSET 0x0b4 /* Reset LCD Interface */
-#define LPC313X_CGU_SPIRSTAPB_OFFSET 0x0b8 /* Reset apb_clk domain of SPI */
-#define LPC313X_CGU_SPIRSTIP_OFFSET 0x0bc /* Reset ip_clk domain of SPI */
-#define LPC313X_CGU_DMARST_OFFSET 0x0c0 /* Reset DMA */
-#define LPC313X_CGU_NANDECCRST_OFFSET 0x0c4 /* Reset Nandflash Controller ECC clock */
- /* 0x0c8: Reserved */
-#define LPC313X_CGU_NANDCTRLRST_OFFSET 0x0cc /* Reset of Nandflash Controller */
-#define LPC313X_CGU_RNGRST_OFFSET 0x0d0 /* Reset of RNG */
-#define LPC313X_CGU_SDMMCRST_OFFSET 0x0d4 /* Reset MCI (on AHB clock) */
-#define LPC313X_CGU_SDMMCRSTCKIN_OFFSET 0x0d8 /* Reset MCI synchronous (on IP clock) */
-#define LPC313X_CGU_USBOTGAHBRST_OFFSET 0x0dc /* Reset USB_OTG */
-#define LPC313X_CGU_REDCTLRST_OFFSET 0x0e0 /* Reset Redundancy Controller */
-#define LPC313X_CGU_AHBMPMCHRST_OFFSET 0x0e4 /* Reset MPMC */
-#define LPC313X_CGU_AHBMPMCRFRST_OFFSET 0x0e8 /* Reset refresh generator used for MPMC */
-#define LPC313X_CGU_INTCRST_OFFSET 0x0ec /* Reset Interrupt Controller */
-
-/* HP PLL controls */
-
-#define LPC313x_CGU_HP0PLL_OFFSET 0x0f0 /* Base offset to HP0 PLL registers */
-#define LPC313x_CGU_HP1PLL_OFFSET 0x128 /* Base offset to HP1 PLL registers */
-#define CGU_HP0PLL 0 /* HP0 PLL selector */
-#define CGU_HP1PLL 1 /* HP1 PLL selector */
-#define LPC313x_CGU_HPPLL_OFFSET(n) ((n) ? LPC313x_CGU_HP1PLL_OFFSET : LPC313x_CGU_HP0PLL_OFFSET)
-
-#define LPC313X_CGU_HPFINSEL_OFFSET 0x000 /* Register for selecting input to high HPPLL0/1 */
-#define LPC313X_CGU_HPMDEC_OFFSET 0x004 /* M-divider register of HP0/1 PLL */
-#define LPC313X_CGU_HPNDEC_OFFSET 0x008 /* N-divider register of HP0/1 PLL */
-#define LPC313X_CGU_HPPDEC_OFFSET 0x00c /* P-divider register of HP0/1 PLL */
-#define LPC313X_CGU_HPMODE_OFFSET 0x010 /* Mode register of HP0/1 PLL */
-#define LPC313X_CGU_HPSTATUS_OFFSET 0x014 /* Status register of HP0/1 PLL */
-#define LPC313X_CGU_HPACK_OFFSET 0x018 /* Ratio change acknowledge register of HP0/1 PLL */
-#define LPC313X_CGU_HPREQ_OFFSET 0x01c /* Ratio change request register of HP0/1 PLL */
-#define LPC313X_CGU_HPINSELR_OFFSET 0x020 /* Bandwidth selection register of HP0/1 PLL */
-#define LPC313X_CGU_HPINSELI_OFFSET 0x024 /* Bandwidth selection register of HP0/1 PLL */
-#define LPC313X_CGU_HPINSELP_OFFSET 0x028 /* Bandwidth selection register of HP0/1 PLL */
-#define LPC313X_CGU_HPSELR_OFFSET 0x02c /* Bandwidth selection register of HP0/1 PLL */
-#define LPC313X_CGU_HPSELI_OFFSET 0x030 /* Bandwidth selection register of HP0/1 PLL */
-#define LPC313X_CGU_HPSELP_OFFSET 0x034 /* Bandwidth selection register of HP0/1 PLL */
-
-/* HP0 PLL control (audio PLL) */
-
-#define LPC313X_CGU_HP0FINSEL_OFFSET 0x0f0 /* Register for selecting input to high HPPLL0 */
-#define LPC313X_CGU_HP0MDEC_OFFSET 0x0f4 /* M-divider register of HP0 PLL */
-#define LPC313X_CGU_HP0NDEC_OFFSET 0x0f8 /* N-divider register of HP0 PLL */
-#define LPC313X_CGU_HP0PDEC_OFFSET 0x0fc /* P-divider register of HP0 PLL */
-#define LPC313X_CGU_HP0MODE_OFFSET 0x100 /* Mode register of HP0 PLL */
-#define LPC313X_CGU_HP0STATUS_OFFSET 0x104 /* Status register of HP0 PLL */
-#define LPC313X_CGU_HP0ACK_OFFSET 0x108 /* Ratio change acknowledge register of HP0 PLL */
-#define LPC313X_CGU_HP0REQ_OFFSET 0x10c /* Ratio change request register of HP0 PLL */
-#define LPC313X_CGU_HP0INSELR_OFFSET 0x110 /* Bandwidth selection register of HP0 PLL */
-#define LPC313X_CGU_HP0INSELI_OFFSET 0x114 /* Bandwidth selection register of HP0 PLL */
-#define LPC313X_CGU_HP0INSELP_OFFSET 0x118 /* Bandwidth selection register of HP0 PLL */
-#define LPC313X_CGU_HP0SELR_OFFSET 0x11c /* Bandwidth selection register of HP0 PLL */
-#define LPC313X_CGU_HP0SELI_OFFSET 0x120 /* Bandwidth selection register of HP0 PLL */
-#define LPC313X_CGU_HP0SELP_OFFSET 0x124 /* Bandwidth selection register of HP0 PLL */
-
-/* HP1 PLL control (system PLL) */
-
-#define LPC313X_CGU_HP1FINSEL_OFFSET 0x128 /* Register for selecting input to high HP1 PLL */
-#define LPC313X_CGU_HP1MDEC_OFFSET 0x12c /* M-divider register of HP1 PLL */
-#define LPC313X_CGU_HP1NDEC_OFFSET 0x130 /* N-divider register of HP1 PLL */
-#define LPC313X_CGU_HP1PDEC_OFFSET 0x134 /* P-divider register of HP1 PLL */
-#define LPC313X_CGU_HP1MODE_OFFSET 0x138 /* Mode register of HP1 PLL */
-#define LPC313X_CGU_HP1STATUS_OFFSET 0x13c /* Status register of HP1 PLL */
-#define LPC313X_CGU_HP1ACK_OFFSET 0x140 /* Ratio change acknowledge register of HP1 PLL */
-#define LPC313X_CGU_HP1REQ_OFFSET 0x144 /* Ratio change request register of HP1 PLL */
-#define LPC313X_CGU_HP1INSELR_OFFSET 0x148 /* Bandwidth selection register of HP1 PLL */
-#define LPC313X_CGU_HP1INSELI_OFFSET 0x14c /* Bandwidth selection register of HP1 PLL */
-#define LPC313X_CGU_HP1INSELP_OFFSET 0x150 /* Bandwidth selection register of HP1 PLL */
-#define LPC313X_CGU_HP1SELR_OFFSET 0x154 /* Bandwidth selection register of HP1 PLL */
-#define LPC313X_CGU_HP1SELI_OFFSET 0x158 /* Bandwidth selection register of HP1 PLL */
-#define LPC313X_CGU_HP1SELP_OFFSET 0x15c /* Bandwidth selection register of HP1 PLL */
-
-/* CGU register (virtual) addresses *************************************************************/
-/* CGU clock switchbox (virtual) register addresses *********************************************/
-/* Switch configuration registers (SCR) for base clocks */
-
-#define LPC313X_CGU_SCR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR_OFFSET(n))
-#define LPC313X_CGU_SCR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR0_OFFSET)
-#define LPC313X_CGU_SCR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR1_OFFSET)
-#define LPC313X_CGU_SCR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR2_OFFSET)
-#define LPC313X_CGU_SCR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR3_OFFSET)
-#define LPC313X_CGU_SCR4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR4_OFFSET)
-#define LPC313X_CGU_SCR5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR5_OFFSET)
-#define LPC313X_CGU_SCR6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR6_OFFSET)
-#define LPC313X_CGU_SCR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR7_OFFSET)
-#define LPC313X_CGU_SCR8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR8_OFFSET)
-#define LPC313X_CGU_SCR9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR9_OFFSET)
-#define LPC313X_CGU_SCR10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR10_OFFSET)
-#define LPC313X_CGU_SCR11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SCR11_OFFSET)
-
-/* Frequency select (FS) registers 1 for base clocks */
-
-#define LPC313X_CGU_FS1(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_OFFSET(n))
-#define LPC313X_CGU_FS1_0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_0_OFFSET)
-#define LPC313X_CGU_FS1_1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_1_OFFSET)
-#define LPC313X_CGU_FS1_2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_2_OFFSET)
-#define LPC313X_CGU_FS1_3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_3_OFFSET)
-#define LPC313X_CGU_FS1_4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_4_OFFSET)
-#define LPC313X_CGU_FS1_5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_5_OFFSET)
-#define LPC313X_CGU_FS1_6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_6_OFFSET)
-#define LPC313X_CGU_FS1_7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_7_OFFSET)
-#define LPC313X_CGU_FS1_8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_8_OFFSET)
-#define LPC313X_CGU_FS1_9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_9_OFFSET)
-#define LPC313X_CGU_FS1_10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_10_OFFSET)
-#define LPC313X_CGU_FS1_11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS1_11_OFFSET)
-
-/* Frequency select (FS) registers 2 for base clocks */
-
-#define LPC313X_CGU_FS2(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_OFFSET(n))
-#define LPC313X_CGU_FS2_0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_0_OFFSET)
-#define LPC313X_CGU_FS2_1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_1_OFFSET)
-#define LPC313X_CGU_FS2_2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_2_OFFSET)
-#define LPC313X_CGU_FS2_3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_3_OFFSET)
-#define LPC313X_CGU_FS2_4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_4_OFFSET)
-#define LPC313X_CGU_FS2_5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_5_OFFSET)
-#define LPC313X_CGU_FS2_6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_6_OFFSET)
-#define LPC313X_CGU_FS2_7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_7_OFFSET)
-#define LPC313X_CGU_FS2_8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_8_OFFSET)
-#define LPC313X_CGU_FS2_9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_9_OFFSET)
-#define LPC313X_CGU_FS2_10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_10_OFFSET)
-#define LPC313X_CGU_FS2_11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FS2_11_OFFSET)
-
-/* Switch status registers (SSR) for base clocks */
-
-#define LPC313X_CGU_SSR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR_OFFSET(n))
-#define LPC313X_CGU_SSR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR0_OFFSET)
-#define LPC313X_CGU_SSR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR1_OFFSET)
-#define LPC313X_CGU_SSR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR2_OFFSET)
-#define LPC313X_CGU_SSR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR3_OFFSET)
-#define LPC313X_CGU_SSR4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR4_OFFSET)
-#define LPC313X_CGU_SSR5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR5_OFFSET)
-#define LPC313X_CGU_SSR6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR6_OFFSET)
-#define LPC313X_CGU_SSR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR7_OFFSET)
-#define LPC313X_CGU_SSR8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR8_OFFSET)
-#define LPC313X_CGU_SSR9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR9_OFFSET)
-#define LPC313X_CGU_SSR10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR10_OFFSET)
-#define LPC313X_CGU_SSR11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_SSR11_OFFSET)
-
-/* Power control registers (PCR), spreading stage */
-
-#define LPC313X_CGU_PCR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR_OFFSET(n))
-#define LPC313X_CGU_PCR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR0_OFFSET)
-#define LPC313X_CGU_PCR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR1_OFFSET)
-#define LPC313X_CGU_PCR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR2_OFFSET)
-#define LPC313X_CGU_PCR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR3_OFFSET)
-#define LPC313X_CGU_PCR4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR4_OFFSET)
-#define LPC313X_CGU_PCR5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR5_OFFSET)
-#define LPC313X_CGU_PCR6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR6_OFFSET)
-#define LPC313X_CGU_PCR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR7_OFFSET)
-#define LPC313X_CGU_PCR8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR8_OFFSET)
-#define LPC313X_CGU_PCR9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR9_OFFSET)
-#define LPC313X_CGU_PCR10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR10_OFFSET)
-#define LPC313X_CGU_PCR11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR11_OFFSET)
-#define LPC313X_CGU_PCR12 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR12_OFFSET)
-#define LPC313X_CGU_PCR13 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR13_OFFSET)
-#define LPC313X_CGU_PCR14 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR14_OFFSET)
-#define LPC313X_CGU_PCR15 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR15_OFFSET)
-#define LPC313X_CGU_PCR16 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR16_OFFSET)
-#define LPC313X_CGU_PCR17 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR17_OFFSET)
-#define LPC313X_CGU_PCR18 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR18_OFFSET)
-#define LPC313X_CGU_PCR19 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR19_OFFSET)
-#define LPC313X_CGU_PCR20 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR20_OFFSET)
-#define LPC313X_CGU_PCR21 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR21_OFFSET)
-#define LPC313X_CGU_PCR22 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR22_OFFSET)
-#define LPC313X_CGU_PCR23 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR23_OFFSET)
-#define LPC313X_CGU_PCR24 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR24_OFFSET)
-#define LPC313X_CGU_PCR25 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR25_OFFSET)
-#define LPC313X_CGU_PCR26 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR26_OFFSET)
-#define LPC313X_CGU_PCR27 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR27_OFFSET)
-#define LPC313X_CGU_PCR28 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR28_OFFSET)
-#define LPC313X_CGU_PCR29 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR29_OFFSET)
-#define LPC313X_CGU_PCR30 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR30_OFFSET)
-#define LPC313X_CGU_PCR31 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR31_OFFSET)
-#define LPC313X_CGU_PCR32 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR32_OFFSET)
-#define LPC313X_CGU_PCR33 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR33_OFFSET)
-#define LPC313X_CGU_PCR34 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR34_OFFSET)
-#define LPC313X_CGU_PCR35 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR35_OFFSET)
-#define LPC313X_CGU_PCR36 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR36_OFFSET)
-#define LPC313X_CGU_PCR37 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR37_OFFSET)
-#define LPC313X_CGU_PCR38 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR38_OFFSET)
-#define LPC313X_CGU_PCR39 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR39_OFFSET)
-#define LPC313X_CGU_PCR40 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR40_OFFSET)
-#define LPC313X_CGU_PCR41 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR41_OFFSET)
-#define LPC313X_CGU_PCR42 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR42_OFFSET)
-#define LPC313X_CGU_PCR43 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR43_OFFSET)
-#define LPC313X_CGU_PCR44 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR44_OFFSET)
-#define LPC313X_CGU_PCR45 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR45_OFFSET)
-#define LPC313X_CGU_PCR46 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR46_OFFSET)
-#define LPC313X_CGU_PCR47 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR47_OFFSET)
-#define LPC313X_CGU_PCR48 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR48_OFFSET)
-#define LPC313X_CGU_PCR49 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR49_OFFSET)
-#define LPC313X_CGU_PCR50 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR50_OFFSET)
-#define LPC313X_CGU_PCR51 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR51_OFFSET)
-#define LPC313X_CGU_PCR52 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR52_OFFSET)
-#define LPC313X_CGU_PCR53 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR53_OFFSET)
-#define LPC313X_CGU_PCR54 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR54_OFFSET)
-#define LPC313X_CGU_PCR55 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR55_OFFSET)
-#define LPC313X_CGU_PCR56 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR56_OFFSET)
-#define LPC313X_CGU_PCR57 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR57_OFFSET)
-#define LPC313X_CGU_PCR58 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR58_OFFSET)
-#define LPC313X_CGU_PCR59 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR59_OFFSET)
-#define LPC313X_CGU_PCR60 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR60_OFFSET)
-#define LPC313X_CGU_PCR61 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR61_OFFSET)
-#define LPC313X_CGU_PCR62 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR62_OFFSET)
-#define LPC313X_CGU_PCR63 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR63_OFFSET)
-#define LPC313X_CGU_PCR64 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR64_OFFSET)
-#define LPC313X_CGU_PCR65 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR65_OFFSET)
-#define LPC313X_CGU_PCR66 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR66_OFFSET)
-#define LPC313X_CGU_PCR67 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR67_OFFSET)
-#define LPC313X_CGU_PCR68 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR68_OFFSET)
-#define LPC313X_CGU_PCR69 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR69_OFFSET)
-#define LPC313X_CGU_PCR70 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR70_OFFSET)
-#define LPC313X_CGU_PCR71 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR71_OFFSET)
-#define LPC313X_CGU_PCR72 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR72_OFFSET)
-#define LPC313X_CGU_PCR73 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR73_OFFSET)
-#define LPC313X_CGU_PCR74 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR74_OFFSET)
-#define LPC313X_CGU_PCR75 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR75_OFFSET)
-#define LPC313X_CGU_PCR76 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR76_OFFSET)
-#define LPC313X_CGU_PCR77 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR77_OFFSET)
-#define LPC313X_CGU_PCR78 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR78_OFFSET)
-#define LPC313X_CGU_PCR79 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR79_OFFSET)
-#define LPC313X_CGU_PCR80 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR80_OFFSET)
-#define LPC313X_CGU_PCR81 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR81_OFFSET)
-#define LPC313X_CGU_PCR82 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR82_OFFSET)
-#define LPC313X_CGU_PCR83 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR83_OFFSET)
-#define LPC313X_CGU_PCR84 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR84_OFFSET)
-#define LPC313X_CGU_PCR85 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR85_OFFSET)
-#define LPC313X_CGU_PCR86 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR86_OFFSET)
-#define LPC313X_CGU_PCR87 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR87_OFFSET)
-#define LPC313X_CGU_PCR88 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR88_OFFSET)
-#define LPC313X_CGU_PCR89 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR89_OFFSET)
-#define LPC313X_CGU_PCR90 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR90_OFFSET)
-#define LPC313X_CGU_PCR91 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PCR91_OFFSET)
-
-/* Power status registers (PSR), spreading stage */
-
-#define LPC313X_CGU_PSR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR_OFFSET(n))
-#define LPC313X_CGU_PSR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR0_OFFSET)
-#define LPC313X_CGU_PSR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR1_OFFSET)
-#define LPC313X_CGU_PSR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR2_OFFSET)
-#define LPC313X_CGU_PSR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR3_OFFSET)
-#define LPC313X_CGU_PSR4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR4_OFFSET)
-#define LPC313X_CGU_PSR5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR5_OFFSET)
-#define LPC313X_CGU_PSR6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR6_OFFSET)
-#define LPC313X_CGU_PSR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR7_OFFSET)
-#define LPC313X_CGU_PSR8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR8_OFFSET)
-#define LPC313X_CGU_PSR9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR9_OFFSET)
-#define LPC313X_CGU_PSR10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR10_OFFSET)
-#define LPC313X_CGU_PSR11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR11_OFFSET)
-#define LPC313X_CGU_PSR12 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR12_OFFSET)
-#define LPC313X_CGU_PSR13 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR13_OFFSET)
-#define LPC313X_CGU_PSR14 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR14_OFFSET)
-#define LPC313X_CGU_PSR15 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR15_OFFSET)
-#define LPC313X_CGU_PSR16 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR16_OFFSET)
-#define LPC313X_CGU_PSR17 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR17_OFFSET)
-#define LPC313X_CGU_PSR18 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR18_OFFSET)
-#define LPC313X_CGU_PSR19 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR19_OFFSET)
-#define LPC313X_CGU_PSR20 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR20_OFFSET)
-#define LPC313X_CGU_PSR21 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR21_OFFSET)
-#define LPC313X_CGU_PSR22 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR22_OFFSET)
-#define LPC313X_CGU_PSR23 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR23_OFFSET)
-#define LPC313X_CGU_PSR24 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR24_OFFSET)
-#define LPC313X_CGU_PSR25 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR25_OFFSET)
-#define LPC313X_CGU_PSR26 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR26_OFFSET)
-#define LPC313X_CGU_PSR27 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR27_OFFSET)
-#define LPC313X_CGU_PSR28 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR28_OFFSET)
-#define LPC313X_CGU_PSR29 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR29_OFFSET)
-#define LPC313X_CGU_PSR30 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR30_OFFSET)
-#define LPC313X_CGU_PSR31 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR31_OFFSET)
-#define LPC313X_CGU_PSR32 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR32_OFFSET)
-#define LPC313X_CGU_PSR33 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR33_OFFSET)
-#define LPC313X_CGU_PSR34 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR34_OFFSET)
-#define LPC313X_CGU_PSR35 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR35_OFFSET)
-#define LPC313X_CGU_PSR36 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR36_OFFSET)
-#define LPC313X_CGU_PSR37 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR37_OFFSET)
-#define LPC313X_CGU_PSR38 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR38_OFFSET)
-#define LPC313X_CGU_PSR39 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR39_OFFSET)
-#define LPC313X_CGU_PSR40 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR40_OFFSET)
-#define LPC313X_CGU_PSR41 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR41_OFFSET)
-#define LPC313X_CGU_PSR42 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR42_OFFSET)
-#define LPC313X_CGU_PSR43 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR43_OFFSET)
-#define LPC313X_CGU_PSR44 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR44_OFFSET)
-#define LPC313X_CGU_PSR45 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR45_OFFSET)
-#define LPC313X_CGU_PSR46 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR46_OFFSET)
-#define LPC313X_CGU_PSR47 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR47_OFFSET)
-#define LPC313X_CGU_PSR48 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR48_OFFSET)
-#define LPC313X_CGU_PSR49 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR49_OFFSET)
-#define LPC313X_CGU_PSR50 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR50_OFFSET)
-#define LPC313X_CGU_PSR51 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR51_OFFSET)
-#define LPC313X_CGU_PSR52 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR52_OFFSET)
-#define LPC313X_CGU_PSR53 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR53_OFFSET)
-#define LPC313X_CGU_PSR54 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR54_OFFSET)
-#define LPC313X_CGU_PSR55 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR55_OFFSET)
-#define LPC313X_CGU_PSR56 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR56_OFFSET)
-#define LPC313X_CGU_PSR57 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR57_OFFSET)
-#define LPC313X_CGU_PSR58 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR58_OFFSET)
-#define LPC313X_CGU_PSR59 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR59_OFFSET)
-#define LPC313X_CGU_PSR60 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR60_OFFSET)
-#define LPC313X_CGU_PSR61 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR61_OFFSET)
-#define LPC313X_CGU_PSR62 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR62_OFFSET)
-#define LPC313X_CGU_PSR63 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR63_OFFSET)
-#define LPC313X_CGU_PSR64 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR64_OFFSET)
-#define LPC313X_CGU_PSR65 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR65_OFFSET)
-#define LPC313X_CGU_PSR66 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR66_OFFSET)
-#define LPC313X_CGU_PSR67 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR67_OFFSET)
-#define LPC313X_CGU_PSR68 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR68_OFFSET)
-#define LPC313X_CGU_PSR69 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR69_OFFSET)
-#define LPC313X_CGU_PSR70 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR70_OFFSET)
-#define LPC313X_CGU_PSR71 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR71_OFFSET)
-#define LPC313X_CGU_PSR72 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR72_OFFSET)
-#define LPC313X_CGU_PSR73 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR73_OFFSET)
-#define LPC313X_CGU_PSR74 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR74_OFFSET)
-#define LPC313X_CGU_PSR75 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR75_OFFSET)
-#define LPC313X_CGU_PSR76 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR76_OFFSET)
-#define LPC313X_CGU_PSR77 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR77_OFFSET)
-#define LPC313X_CGU_PSR78 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR78_OFFSET)
-#define LPC313X_CGU_PSR79 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR79_OFFSET)
-#define LPC313X_CGU_PSR80 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR80_OFFSET)
-#define LPC313X_CGU_PSR81 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR81_OFFSET)
-#define LPC313X_CGU_PSR82 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR82_OFFSET)
-#define LPC313X_CGU_PSR83 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR83_OFFSET)
-#define LPC313X_CGU_PSR84 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR84_OFFSET)
-#define LPC313X_CGU_PSR85 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR85_OFFSET)
-#define LPC313X_CGU_PSR86 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR86_OFFSET)
-#define LPC313X_CGU_PSR87 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR87_OFFSET)
-#define LPC313X_CGU_PSR88 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR88_OFFSET)
-#define LPC313X_CGU_PSR89 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR89_OFFSET)
-#define LPC313X_CGU_PSR90 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR90_OFFSET)
-#define LPC313X_CGU_PSR91 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_PSR91_OFFSET)
-
-/* Enable select registers (ESR), spreading stage */
-
-#define LPC313X_CGU_ESR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR_OFFSET(n))
-#define LPC313X_CGU_ESR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR0_OFFSET)
-#define LPC313X_CGU_ESR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR1_OFFSET)
-#define LPC313X_CGU_ESR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR2_OFFSET)
-#define LPC313X_CGU_ESR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR3_OFFSET)
-#define LPC313X_CGU_ESR4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR4_OFFSET)
-#define LPC313X_CGU_ESR5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR5_OFFSET)
-#define LPC313X_CGU_ESR6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR6_OFFSET)
-#define LPC313X_CGU_ESR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR7_OFFSET)
-#define LPC313X_CGU_ESR8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR8_OFFSET)
-#define LPC313X_CGU_ESR9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR9_OFFSET)
-#define LPC313X_CGU_ESR10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR10_OFFSET)
-#define LPC313X_CGU_ESR11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR11_OFFSET)
-#define LPC313X_CGU_ESR12 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR12_OFFSET)
-#define LPC313X_CGU_ESR13 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR13_OFFSET)
-#define LPC313X_CGU_ESR14 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR14_OFFSET)
-#define LPC313X_CGU_ESR15 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR15_OFFSET)
-#define LPC313X_CGU_ESR16 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR16_OFFSET)
-#define LPC313X_CGU_ESR17 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR17_OFFSET)
-#define LPC313X_CGU_ESR18 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR18_OFFSET)
-#define LPC313X_CGU_ESR19 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR19_OFFSET)
-#define LPC313X_CGU_ESR20 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR20_OFFSET)
-#define LPC313X_CGU_ESR21 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR21_OFFSET)
-#define LPC313X_CGU_ESR22 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR22_OFFSET)
-#define LPC313X_CGU_ESR23 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR23_OFFSET)
-#define LPC313X_CGU_ESR24 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR24_OFFSET)
-#define LPC313X_CGU_ESR25 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR25_OFFSET)
-#define LPC313X_CGU_ESR26 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR26_OFFSET)
-#define LPC313X_CGU_ESR27 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR27_OFFSET)
-#define LPC313X_CGU_ESR28 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR28_OFFSET)
-#define LPC313X_CGU_ESR29 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR29_OFFSET)
-#define LPC313X_CGU_ESR30 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR30_OFFSET)
-#define LPC313X_CGU_ESR31 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR31_OFFSET)
-#define LPC313X_CGU_ESR32 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR32_OFFSET)
-#define LPC313X_CGU_ESR33 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR33_OFFSET)
-#define LPC313X_CGU_ESR34 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR34_OFFSET)
-#define LPC313X_CGU_ESR35 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR35_OFFSET)
-#define LPC313X_CGU_ESR36 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR36_OFFSET)
-#define LPC313X_CGU_ESR37 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR37_OFFSET)
-#define LPC313X_CGU_ESR38 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR38_OFFSET)
-#define LPC313X_CGU_ESR39 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR39_OFFSET)
-#define LPC313X_CGU_ESR40 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR40_OFFSET)
-#define LPC313X_CGU_ESR41 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR41_OFFSET)
-#define LPC313X_CGU_ESR42 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR42_OFFSET)
-#define LPC313X_CGU_ESR43 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR43_OFFSET)
-#define LPC313X_CGU_ESR44 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR44_OFFSET)
-#define LPC313X_CGU_ESR45 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR45_OFFSET)
-#define LPC313X_CGU_ESR46 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR46_OFFSET)
-#define LPC313X_CGU_ESR47 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR47_OFFSET)
-#define LPC313X_CGU_ESR48 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR48_OFFSET)
-#define LPC313X_CGU_ESR49 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR49_OFFSET)
-#define LPC313X_CGU_ESR50 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR50_OFFSET)
-#define LPC313X_CGU_ESR51 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR51_OFFSET)
-#define LPC313X_CGU_ESR52 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR52_OFFSET)
-#define LPC313X_CGU_ESR53 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR53_OFFSET)
-#define LPC313X_CGU_ESR54 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR54_OFFSET)
-#define LPC313X_CGU_ESR55 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR55_OFFSET)
-#define LPC313X_CGU_ESR56 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR56_OFFSET)
-#define LPC313X_CGU_ESR57 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR57_OFFSET)
-#define LPC313X_CGU_ESR58 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR58_OFFSET)
-#define LPC313X_CGU_ESR59 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR59_OFFSET)
-#define LPC313X_CGU_ESR60 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR60_OFFSET)
-#define LPC313X_CGU_ESR61 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR61_OFFSET)
-#define LPC313X_CGU_ESR62 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR62_OFFSET)
-#define LPC313X_CGU_ESR63 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR63_OFFSET)
-#define LPC313X_CGU_ESR64 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR64_OFFSET)
-#define LPC313X_CGU_ESR65 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR65_OFFSET)
-#define LPC313X_CGU_ESR66 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR66_OFFSET)
-#define LPC313X_CGU_ESR67 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR67_OFFSET)
-#define LPC313X_CGU_ESR68 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR68_OFFSET)
-#define LPC313X_CGU_ESR69 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR69_OFFSET)
-#define LPC313X_CGU_ESR70 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR70_OFFSET)
-#define LPC313X_CGU_ESR71 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR71_OFFSET)
-#define LPC313X_CGU_ESR72 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR72_OFFSET)
-#define LPC313X_CGU_ESR73 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR73_OFFSET)
-#define LPC313X_CGU_ESR74 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR74_OFFSET)
-#define LPC313X_CGU_ESR75 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR75_OFFSET)
-#define LPC313X_CGU_ESR76 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR76_OFFSET)
-#define LPC313X_CGU_ESR77 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR77_OFFSET)
-#define LPC313X_CGU_ESR78 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR78_OFFSET)
-#define LPC313X_CGU_ESR79 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR79_OFFSET)
-#define LPC313X_CGU_ESR80 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR80_OFFSET)
-#define LPC313X_CGU_ESR81 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR81_OFFSET)
-#define LPC313X_CGU_ESR82 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR82_OFFSET)
-#define LPC313X_CGU_ESR83 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR83_OFFSET)
-#define LPC313X_CGU_ESR84 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR84_OFFSET)
-#define LPC313X_CGU_ESR85 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR85_OFFSET)
-#define LPC313X_CGU_ESR86 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR86_OFFSET)
-#define LPC313X_CGU_ESR87 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR87_OFFSET)
-#define LPC313X_CGU_ESR88 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_ESR88_OFFSET)
-
-/* Base control registers (BCR) for SYS base */
-
-#define LPC313X_CGU_BCR(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR_OFFSET(n))
-#define LPC313X_CGU_BCR0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR0_OFFSET)
-#define LPC313X_CGU_BCR1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR1_OFFSET)
-#define LPC313X_CGU_BCR2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR2_OFFSET)
-#define LPC313X_CGU_BCR3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR3_OFFSET)
-#define LPC313X_CGU_BCR7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_BCR7_OFFSET)
-
-/* Fractional divider configuration (FDC) registers */
-
-#define LPC313X_CGU_FDC(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC_OFFSET(n))
-#define LPC313X_CGU_FDC0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC0_OFFSET)
-#define LPC313X_CGU_FDC1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC1_OFFSET)
-#define LPC313X_CGU_FDC2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC2_OFFSET)
-#define LPC313X_CGU_FDC3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC3_OFFSET)
-#define LPC313X_CGU_FDC4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC4_OFFSET)
-#define LPC313X_CGU_FDC5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC5_OFFSET)
-#define LPC313X_CGU_FDC6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC6_OFFSET)
-#define LPC313X_CGU_FDC7 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC7_OFFSET)
-#define LPC313X_CGU_FDC8 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC8_OFFSET)
-#define LPC313X_CGU_FDC9 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC9_OFFSET)
-#define LPC313X_CGU_FDC10 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC10_OFFSET)
-#define LPC313X_CGU_FDC11 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC11_OFFSET)
-#define LPC313X_CGU_FDC12 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC12_OFFSET)
-#define LPC313X_CGU_FDC13 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC13_OFFSET)
-#define LPC313X_CGU_FDC14 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC14_OFFSET)
-#define LPC313X_CGU_FDC15 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC15_OFFSET)
-#define LPC313X_CGU_FDC16 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC16_OFFSET)
-#define LPC313X_CGU_FDC17 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC17_OFFSET)
-#define LPC313X_CGU_FDC18 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC18_OFFSET)
-#define LPC313X_CGU_FDC19 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC19_OFFSET)
-#define LPC313X_CGU_FDC20 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC20_OFFSET)
-#define LPC313X_CGU_FDC21 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC21_OFFSET)
-#define LPC313X_CGU_FDC22 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC22_OFFSET)
-#define LPC313X_CGU_FDC23 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_FDC23_OFFSET)
-
-/* Dynamic fractional divider configuration (DYNFDC) registers (SYS base only) */
-
-#define LPC313X_CGU_DYNFDC(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC_OFFSET(n))
-#define LPC313X_CGU_DYNFDC0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC0_OFFSET)
-#define LPC313X_CGU_DYNFDC1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC1_OFFSET)
-#define LPC313X_CGU_DYNFDC2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC2_OFFSET)
-#define LPC313X_CGU_DYNFDC3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC3_OFFSET)
-#define LPC313X_CGU_DYNFDC4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC4_OFFSET)
-#define LPC313X_CGU_DYNFDC5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC5_OFFSET)
-#define LPC313X_CGU_DYNFDC6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNFDC6_OFFSET)
-
-/* Dynamic fractional divider selection (DYNSEL) registers (SYS base only) */
-
-#define LPC313X_CGU_DYNSEL(n) (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL_OFFSET(n))
-#define LPC313X_CGU_DYNSEL0 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL0_OFFSET)
-#define LPC313X_CGU_DYNSEL1 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL1_OFFSET)
-#define LPC313X_CGU_DYNSEL2 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL2_OFFSET)
-#define LPC313X_CGU_DYNSEL3 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL3_OFFSET)
-#define LPC313X_CGU_DYNSEL4 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL4_OFFSET)
-#define LPC313X_CGU_DYNSEL5 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL5_OFFSET)
-#define LPC313X_CGU_DYNSEL6 (LPC313X_CGU_CSB_VBASE+LPC313X_CGU_DYNSEL6_OFFSET)
-
-/* CGU configuration (virtural) register address ************************************************/
-/* Power and oscillator control */
-
-#define LPC313X_CGU_POWERMODE (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_POWERMODE_OFFSET)
-#define LPC313X_CGU_WDBARK (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_WDBARK_OFFSET)
-#define LPC313X_CGU_FFASTON (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_FFASTON_OFFSET)
-#define LPC313X_CGU_FFASTBYP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_FFASTBYP_OFFSET)
-
-/* Reset control */
-
-#define LPC313X_CGU_SOFTRST(n) (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_SOFTRST_OFFSET(n))
-#define LPC313X_CGU_APB0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_APB0RST_OFFSET)
-#define LPC313X_CGU_AHB2APB0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB2APB0RST_OFFSET)
-#define LPC313X_CGU_APB1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_APB1RST_OFFSET)
-#define LPC313X_CGU_AHB2PB1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB2PB1RST_OFFSET)
-#define LPC313X_CGU_APB2RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_APB2RST_OFFSET)
-#define LPC313X_CGU_AHB2APB2RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB2APB2RST_OFFSET)
-#define LPC313X_CGU_APB3RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_APB3RST_OFFSET)
-#define LPC313X_CGU_AHB2APB3RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB2APB3RST_OFFSET)
-#define LPC313X_CGU_APB4RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_APB4RST_OFFSET)
-#define LPC313X_CGU_AHB2INTCRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB2INTCRST_OFFSET)
-#define LPC313X_CGU_AHB0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHB0RST_OFFSET)
-#define LPC313X_CGU_EBIRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_EBIRST_OFFSET)
-#define LPC313X_CGU_PCMAPBRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_PCMAPBRST_OFFSET)
-#define LPC313X_CGU_PCMCLKIPRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_PCMCLKIPRST_OFFSET)
-#define LPC313X_CGU_PCMRSTASYNC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_PCMRSTASYNC_OFFSET)
-#define LPC313X_CGU_TIMER0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_TIMER0RST_OFFSET)
-#define LPC313X_CGU_TIMER1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_TIMER1RST_OFFSET)
-#define LPC313X_CGU_TIMER2RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_TIMER2RST_OFFSET)
-#define LPC313X_CGU_TIMER3RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_TIMER3RST_OFFSET)
-#define LPC313X_CGU_ADCPRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_ADCPRST_OFFSET)
-#define LPC313X_CGU_ADCRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_ADCRST_OFFSET)
-#define LPC313X_CGU_PWMRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_PWMRST_OFFSET)
-#define LPC313X_CGU_UARTRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_UARTRST_OFFSET)
-#define LPC313X_CGU_I2C0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2C0RST_OFFSET)
-#define LPC313X_CGU_I2C1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2C1RST_OFFSET)
-#define LPC313X_CGU_I2SCFGRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SCFGRST_OFFSET)
-#define LPC313X_CGU_I2SNSOFRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SNSOFRST_OFFSET)
-#define LPC313X_CGU_EDGEDETRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_EDGEDETRST_OFFSET)
-#define LPC313X_CGU_I2STXFF0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2STXFF0RST_OFFSET)
-#define LPC313X_CGU_I2STXIF0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2STXIF0RST_OFFSET)
-#define LPC313X_CGU_I2STXFF1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2STXFF1RST_OFFSET)
-#define LPC313X_CGU_I2STXIF1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2STXIF1RST_OFFSET)
-#define LPC313X_CGU_I2SRXFF0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SRXFF0RST_OFFSET)
-#define LPC313X_CGU_I2SRXIF0RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SRXIF0RST_OFFSET)
-#define LPC313X_CGU_I2SRXFF1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SRXFF1RST_OFFSET)
-#define LPC313X_CGU_I2SRXIF1RST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_I2SRXIF1RST_OFFSET)
-#define LPC313X_CGU_LCDRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_LCDRST_OFFSET)
-#define LPC313X_CGU_SPIRSTAPB (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_SPIRSTAPB_OFFSET)
-#define LPC313X_CGU_SPIRSTIP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_SPIRSTIP_OFFSET)
-#define LPC313X_CGU_DMARST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_DMARST_OFFSET)
-#define LPC313X_CGU_NANDECCRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_NANDECCRST_OFFSET)
-#define LPC313X_CGU_NANDCTRLRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_NANDCTRLRST_OFFSET)
-#define LPC313X_CGU_SDMMCRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_SDMMCRST_OFFSET)
-#define LPC313X_CGU_SDMMCRSTCKIN (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_SDMMCRSTCKIN_OFFSET)
-#define LPC313X_CGU_USBOTGAHBRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_USBOTGAHBRST_OFFSET)
-#define LPC313X_CGU_REDCTLRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_REDCTLRST_OFFSET)
-#define LPC313X_CGU_AHBMPMCHRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHBMPMCHRST_OFFSET)
-#define LPC313X_CGU_AHBMPMCRFRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_AHBMPMCRFRST_OFFSET)
-#define LPC313X_CGU_INTCRST (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_INTCRST_OFFSET)
-
-/* HP PLL controls */
-
-#define LPC313x_CGU_HP0PLL (LPC313X_CGU_CFG_VBASE+LPC313x_CGU_HP0PLL_OFFSET)
-#define LPC313x_CGU_HP1PLL (LPC313X_CGU_CFG_VBASE+LPC313x_CGU_HP1PLL_OFFSET)
-#define LPC313x_CGU_HPPLL(n) ((n) ? LPC313x_CGU_HP1PLL : LPC313x_CGU_HP0PLL)
-
-/* HPO PLL control (audio PLL) */
-
-#define LPC313X_CGU_HP0FINSEL (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0FINSEL_OFFSET)
-#define LPC313X_CGU_HP0MDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0MDEC_OFFSET)
-#define LPC313X_CGU_HP0NDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0NDEC_OFFSET)
-#define LPC313X_CGU_HP0PDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0PDEC_OFFSET)
-#define LPC313X_CGU_HP0MODE (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0MODE_OFFSET)
-#define LPC313X_CGU_HP0STATUS (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0STATUS_OFFSET)
-#define LPC313X_CGU_HP0ACK (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0ACK_OFFSET)
-#define LPC313X_CGU_HP0REQ (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0REQ_OFFSET)
-#define LPC313X_CGU_HP0INSELR (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0INSELR_OFFSET)
-#define LPC313X_CGU_HP0INSELI (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0INSELI_OFFSET)
-#define LPC313X_CGU_HP0INSELP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0INSELP_OFFSET)
-#define LPC313X_CGU_HP0SELR (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0SELR_OFFSET)
-#define LPC313X_CGU_HP0SELI (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0SELI_OFFSET)
-#define LPC313X_CGU_HP0SELP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP0SELP_OFFSET)
-
-/* HP1 PLL control (system PLL) */
-
-#define LPC313X_CGU_HP1FINSEL (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1FINSEL_OFFSET)
-#define LPC313X_CGU_HP1MDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1MDEC_OFFSET)
-#define LPC313X_CGU_HP1NDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1NDEC_OFFSET)
-#define LPC313X_CGU_HP1PDEC (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1PDEC_OFFSET)
-#define LPC313X_CGU_HP1MODE (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1MODE_OFFSET)
-#define LPC313X_CGU_HP1STATUS (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1STATUS_OFFSET)
-#define LPC313X_CGU_HP1ACK (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1ACK_OFFSET)
-#define LPC313X_CGU_HP1REQ (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1REQ_OFFSET)
-#define LPC313X_CGU_HP1INSELR (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1INSELR_OFFSET)
-#define LPC313X_CGU_HP1INSELI (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1INSELI_OFFSET)
-#define LPC313X_CGU_HP1INSELP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1INSELP_OFFSET)
-#define LPC313X_CGU_HP1SELR (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1SELR_OFFSET)
-#define LPC313X_CGU_HP1SELI (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1SELI_OFFSET)
-#define LPC313X_CGU_HP1SELP (LPC313X_CGU_CFG_VBASE+LPC313X_CGU_HP1SELP_OFFSET)
-
-/* CGU register bit definitions *****************************************************************/
-
-/* Frequency inputs */
-
-#define CGU_FREQIN_FFAST 0 /* ffast 12 MHz */
-#define CGU_FREQIN_I2SRXBCK0 1 /* I2SRX_BCK0 */
-#define CGU_FREQIN_I2SRXWS0 2 /* I2SRX_WS0 */
-#define CGU_FREQIN_I2SRXBCK1 3 /* I2SRX_BCK1 */
-#define CGU_FREQIN_I2SRXWS1 4 /* I2SRX_WS1 */
-#define CGU_FREQIN_HPPLL0 5 /* HPPLL0 (Audio/I2S PLL) */
-#define CGU_FREQIN_HPPLL1 6 /* HPPLL1 (System PLL) */
-#define CGU_NFREQIN 7
-
-/* CGU clock switchbox register bit definitions *************************************************/
-
-/* Switch configuration register SCR0 to SCR11, addresses 0x13004000 to 0x1300402c */
-
-#define CGU_SCR_STOP (1 << 3) /* Bit 3: Forces switch in disable mode */
-#define CGU_SCR_RESET (1 << 2) /* Bit 2: Asynchronous reset of both switches */
-#define CGU_SCR_ENF2 (1 << 1) /* Bit 1: Enable side #2 of switch */
-#define CGU_SCR_ENF1 (1 << 0) /* Bit 0: Enable side #1 of switch */
-
-/* Frequency select register 1 FS1_0 to FS1_11, addresses 0x13004030 to 0x1300405c,
- * Frequency Select register 2 FS2_0 to FS2_11, addresses 0x13004060 to 0x1300408c
- */
-
-#define CGU_FS_SHIFT (0) /* Bits 0-2: Selects input frequency for either side of frequency switch */
-#define CGU_FS_MASK (7 << CGU_FS_SHIFT)
-# define CGU_FS_FFAST (CGU_FREQIN_FFAST << CGU_FS_SHIFT) /* ffast 12 MHz */
-# define CGU_FS_I2SRXBCK0 (CGU_FREQIN_I2SRXBCK0 << CGU_FS_SHIFT) /* I2SRX_BCK0 */
-# define CGU_FS_I2SRXWS0 (CGU_FREQIN_I2SRXWS0 << CGU_FS_SHIFT) /* I2SRX_WS0 */
-# define CGU_FS_I2SRXBCK1 (CGU_FREQIN_I2SRXBCK1 << CGU_FS_SHIFT) /* I2SRX_BCK1 */
-# define CGU_FS_I2SRXWS1 (CGU_FREQIN_I2SRXWS1 << CGU_FS_SHIFT) /* I2SRX_WS1 */
-# define CGU_FS_HPPLL0 (CGU_FREQIN_HPPLL0 << CGU_FS_SHIFT) /* HPPLL0 (Audio/I2S PLL) */
-# define CGU_FS_HPPLL1 (CGU_FREQIN_HPPLL1 << CGU_FS_SHIFT) /* HPPLL1 (System PLL) */
-
-/* Switch Status register SSR0 to SSR11, addresses 0x13004090 to 0x1300 40bc */
-
-#define CGU_SSR_FS_SHIFT (2) /* Bits 2-4: Feedback of current frequency selection */
-#define CGU_SSR_FS_MASK (7 << CGU_SSR_FS_SHIFT)
-# define CGU_SSR_FFAST (CGU_FREQIN_FFAST << CGU_SSR_FS_SHIFT) /* ffast 12 MHz */
-# define CGU_SSR_I2SRXBCK0 (CGU_FREQIN_I2SRXBCK0 << CGU_SSR_FS_SHIFT) /* I2SRX_BCK0 */
-# define CGU_SSR_I2SRXWS0 (CGU_FREQIN_I2SRXWS0 << CGU_SSR_FS_SHIFT) /* I2SRX_WS0 */
-# define CGU_SSR_I2SRXBCK1 (CGU_FREQIN_I2SRXBCK1 << CGU_SSR_FS_SHIFT) /* I2SRX_BCK1 */
-# define CGU_SSR_I2SRXWS1 (CGU_FREQIN_I2SRXWS1 << CGU_SSR_FS_SHIFT) /* I2SRX_WS1 */
-# define CGU_SSR_HPPLL0 (CGU_FREQIN_HPPLL0 << CGU_SSR_FS_SHIFT) /* HPPLL0 (Audio/I2S PLL) */
-# define CGU_SSR_HPPLL1 (CGU_FREQIN_HPPLL1 << CGU_SSR_FS_SHIFT) /* HPPLL1 (System PLL) */
-#define CGU_SSR_FS2STAT (1 << 1) /* Bit 1: Enable side #2 of the frequency switch */
-#define CGU_SSR_FS1STAT (1 << 0) /* Bit 0: Enable side #1 of the frequency switch */
-
-/* Power Control register PCR0 to PCR91, addresses 0x130040c0 to 0x1300422c */
-
-#define CGU_PCR_ENOUTEN (1 << 4) /* Bit 4: Enable clock preview signal */
-#define CGU_PCR_EXTENEN (1 << 3) /* Bit 3: Enable external enabling */
-#define CGU_PCR_WAKEEN (1 << 2) /* Bit 2: Enable central wakeup */
-#define CGU_PCR_AUTO (1 << 1) /* Bit 1: Enable wakeup and external enable */
-#define CGU_PCR_RUN (1 << 0) /* Bit 0: Enable clocks */
-
-/* Power Status register PSR0 to PSR91, addresses 0x13004230 to 0x1300439c */
-
-#define CGU_PSR_WAKEUP (1 << 1) /* Bit 1: Clock wakeup condition */
-#define CGU_PSR_ACTIVE (1 << 0) /* Bit 0: Indicates clock is active */
-
-/* Enable Select register ESR0 to ESR88, addresses 0x130043a0 to 0x13004500 */
-/* The ESR_SEL varies according to the selected clock */
-
-#define CGU_ESR_ESRSEL_SHIFT (1) /* Bits 1-n: Common shift value */
-#define CGU_ESR0_29_ESRSEL_SHIFT (1) /* Bits 1-3: Selection of fractional dividers */
-#define CGU_ESR0_29_ESRSEL_MASK (7 << CGU_ESR0_29_ESRSEL_SHIFT)
-# define CGU_ESR0_29_ESRSEL_FDC0 (0 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC0 */
-# define CGU_ESR0_29_ESRSEL_FDC1 (1 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC1 */
-# define CGU_ESR0_29_ESRSEL_FDC2 (2 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC2 */
-# define CGU_ESR0_29_ESRSEL_FDC3 (3 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC3 */
-# define CGU_ESR0_29_ESRSEL_FDC4 (4 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC4 */
-# define CGU_ESR0_29_ESRSEL_FDC5 (5 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC5 */
-# define CGU_ESR0_29_ESRSEL_FDC6 (6 << CGU_ESR0_29_ESRSEL_SHIFT) /* Selects FDC6 */
-
-#define CGU_ESR30_39_ESRSEL_FDC7 (0) /* Bit 1=0 selects FDC7 */
-#define CGU_ESR30_39_ESRSEL_FDC8 (1 << 1) /* Bit 1=1 selects FDC8 */
-
-#define CGU_ESR40_49_ESRSEL_FDC9 (0) /* Bit 1=0 selects FDC9 */
-#define CGU_ESR40_49_ESRSEL_FDC10 (1 << 1) /* Bit 1=1 selects FDC10 */
-
-#define CGU_ESR50_57_ESRSEL_SHIFT (1) /* Bits 1-3: Selection of fractional dividers */
-#define CGU_ESR50_57_ESRSEL_MASK (3 << CGU_ESR50_57_ESRSEL_SHIFT)
-# define CGU_ESR50_57_ESRSEL_FDC11 (0 << CGU_ESR50_57_ESRSEL_SHIFT) /* Selects FDC11 */
-# define CGU_ESR50_57_ESRSEL_FDC12 (1 << CGU_ESR50_57_ESRSEL_SHIFT) /* Selects FDC12 */
-# define CGU_ESR50_57_ESRSEL_FDC13 (2 << CGU_ESR50_57_ESRSEL_SHIFT) /* Selects FDC13 */
-
-#define CGU_ESR58_70_ESRSEL_FDC14 (0) /* Only option */
-#define CGU_ESR71_ESRSEL_FDC15 (0) /* Only option */
-#define CGU_ESR72_ESRSEL_FDC16 (0) /* Only option */
-
-#define CGU_ESR73_86_ESRSEL_SHIFT (1) /* Bits 1-3: Selection of fractional dividers */
-#define CGU_ESR73_86_ESRSEL_MASK (7 << CGU_ESR73_86_ESRSEL_SHIFT)
-# define CGU_ESR73_86_ESRSEL_FDC17 (0 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC17 */
-# define CGU_ESR73_86_ESRSEL_FDC18 (1 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC18 */
-# define CGU_ESR73_86_ESRSEL_FDC19 (2 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC19 */
-# define CGU_ESR73_86_ESRSEL_FDC20 (3 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC20 */
-# define CGU_ESR73_86_ESRSEL_FDC21 (4 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC21 */
-# define CGU_ESR73_86_ESRSEL_FDC22 (5 << CGU_ESR73_86_ESRSEL_SHIFT) /* Selects FDC22 */
-
-#define CGU_ESR87_88_ESRSEL_FDC23 (0) /* Only option */
-
-#define CGU_ESR_ESREN (1 << 0) /* Bit 0: Enable from FD selected by ESRSEL */
-
-/* Base control registers 0 BCR0 to BCR7, addresses 0x13004504 to 0x13004514 */
-
-#define CGU_BCR_FDRUN (1 << 0) /* Bit 0: Enable fractional dividers */
-
-/* Fractional divider register 0 to 23 FDC0 to FDC23 (except FDC17) addresses 0x13004518 to 0x13004574 */
-
-#define CGU_FDC_MSUB_SHIFT (11) /* Bits 11-18: Modulo subtraction value */
-#define CGU_FDC_MSUB_MASK (0x000000ff << CGU_FDC_MSUB_SHIFT)
-#define CGU_FDC_MSUB_EXTEND (0xffffff00)
-#define CGU_FDC_MADD_SHIFT (3) /* Bits 3-10: Modulo addition value */
-#define CGU_FDC_MADD_MASK (0x000000ff << CGU_FDC_MADD_SHIFT)
-#define CGU_FDC_STRETCH (1 << 2) /* Bit 2: Enables the stretching option */
-#define CGU_FDC_RESET (1 << 1) /* Bit 1: Reset fractional divider */
-#define CGU_FDC_RUN (1 << 0) /* Bit 0: Enable fractional divider */
-
-#define CGU_FDC17_MSUB_SHIFT (16) /* Bits 16-28: Modulo subtraction value */
-#define CGU_FDC17_MSUB_MASK (0x00001fff << CGU_FDC17_MSUB_SHIFT)
-#define CGU_FDC17_MSUB_EXTEND (0xffffe000)
-#define CGU_FDC17_MADD_SHIFT (3) /* Bits 3-15: Modulo addition value */
-#define CGU_FDC17_MADD_MASK (0x00001fff << CGU_FDC17_MADD_SHIFT)
-#define CGU_FDC17_STRETCH (1 << 2) /* Bit 2: Enables the stretching option */
-#define CGU_FDC17_RESET (1 << 1) /* Bit 1: Reset fractional divider */
-#define CGU_FDC17_RUN (1 << 0) /* Bit 0: Enable fractional divider */
-
-#define CGU_FDC_FIELDWIDTH 8 /* MSUB and MADD fields are 8-bits in width */
-#define CGU_FDC17_FIELDWIDTH 13 /* Exept for FDC17 which is 13-bits in width */
-
-/* Dynamic Fractional Divider registers DYNFDC0 to DYNFDC6, addresses 0x13004578 to 0x13004590 */
-
-#define CGU_DYNFDC_STOPAUTORST (1 << 19) /* Bit 19: Disable auto reset of fractional divider */
-#define CGU_DYNFDC_MSUB_SHIFT (11) /* Bits 11-18: Modulo subtraction value */
-#define CGU_DYNFDC_MSUB_MASK (255 << CGU_DYNFDC_MSUB_SHIFT)
-#define CGU_DYNFDC_MADD_SHIFT (3) /* Bits 3-10: Modulo addition value */
-#define CGU_DYNFDC_MADD_MASK (255 << CGU_DYNFDC_MADD_SHIFT)
-#define CGU_DYNFDC_STRETCH (1 << 2) /* Bit 2: Enables the stretching option */
-#define CGU_DYNFDC_ALLOW (1 << 1) /* Bit 1: Enable dynamic fractional divider */
-#define CGU_DYNFDC_RUN (1 << 0) /* Bit 0: Enable the fractional divider during low speeds */
-
-/* Dynamic Fractional Divider Selection register DYNSEL0 to DYNSEL6, addresses 0x13004594 to 0x130045ac */
-
-#define CGU_DYNSEL_MPMCREFRESHREQ (1 << 8) /* Bit 8: Ext SDRAM refresh can enable high speed */
-#define CGU_DYNSEL_ECCRAMBUSY (1 << 7) /* Bit 7: Hispeed mode during NAND ECC */
-#define CGU_DYNSEL_USBOTGMSTTRANS (1 << 6) /* Bit 6: USB OTG transfers can enable high speed */
-#define CGU_DYNSEL_ARM926LPDREADY (1 << 5) /* Bit 5: ARM926 data transfers can enable high-speed */
-#define CGU_DYNSEL_ARM926LPDTRANS (1 << 4) /* Bit 4: ARM926 data transfers can enable high-speed */
-#define CGU_DYNSEL_ARM926LPIREADY (1 << 3) /* Bit 3: ARM926 instr last transfers can enable high-speed */
-#define CGU_DYNSEL_ARM926LPITRANS (1 << 2) /* Bit 2: ARM926 instr transfers can enable high-speed */
-#define CGU_DYNSEL_DMAREADY (1 << 1) /* Bit 1: dma last transfers can enable high-speed */
-#define CGU_DYNSEL_DMATRANS (1 << 0) /* Bit 0: dma transfers can enable high-speed */
-#define CGU_DYNSEL_ALLBITS (0x1ff)
-
-/* CGU configuration register bit definitions ***************************************************/
-/* Power and oscillator control registers */
-/* Powermode register POWERMODE, address 0x13004c00 */
-
-#define CGU_POWERMODE_SHIFT (0) /* Bits 0-1: Powermode */
-#define CGU_POWERMODE_MASK (3 << bb)
-#define CGU_POWERMODE_NORMAL (1 << bb) /* Normal operational mode */
-#define CGU_POWERMODE_WAKEUP (3 << bb) /* Wakeup clocks disabled until wakeup event */
-
-/* Watchdog Bark register WDBARK, address 0x13004c04 */
-
-#define CGU_WDBARK_RESET (1 << 0) /* Bit 0: Set when a watchdog reset has occurred */
-
-/* Fast Oscillator activate register FFASTON, 0x13004c08 */
-
-#define CGU_FFASTON_ACTIVATE (1 << 0) /* Bit 0: Activate fast oscillator */
-
-/* Fast Oscillator Bypass comparator register FFASTBYP, 0x13004c0c */
-
-#define CGU_FFASTBYP_TESTMODE (1 << 0) /* Bit 0: Oscillator test mode */
-
-/* Reset control registers */
-
-#define CGU_SOFTRESET (1 << 0) /* Bit 0: in all of the reset control registers */
-
-/* APB0_RESETN_SOFT register, address 0x13004c10 */
-
-#define CGU_APB0RST_RESET (1 << 0) /* Bit 0: Reserved */
-
-/* AHB_TO_APB0_PNRES_SOFT register, address 0x13004c14 */
-
-#define CGU_AHB2APB0RST_RESET (1 << 0) /* Bit 0: Reserved */
-
-/* APB1_RESETN_SOFT register, address 0x13004c18 */
-
-#define CGU_APB1RST_RESET (1 << 0) /* Bit 0: Reset for AHB part of AHB_TO_APB1 bridge */
-
-/* AHB_TO_APB1_PNRES_SOFT register, address 0x13004c1c */
-
-#define CGU_AHB2PB1RST_RESET (1 << 0) /* Bit 0: Reset for APB part of AHB_TO_APB1 bridge */
-
-/* APB2_RESETN_SOFT register, address 0x13004c20 */
-
-#define CGU_APB2RST_RESET (1 << 0) /* Bit 0: Reset for AHB part of AHB_TO_APB2 bridge */
-
-/* AHB_TO_APB2_PNRES_SOFT register, address 0x13004c24 */
-
-#define CGU_AHB2APB2RST_RESET (1 << 0) /* Bit 0: Reset for APB part of AHB_TO_APB2 bridge */
-
-/* APB3_RESETN_SOFT register, address 0x13004c28 */
-
-#define CGU_APB3RST_RESET (1 << 0) /* Bit 0: Reset for AHB part of AHB_TO_APB3 bridge */
-
-/* AHB_TO_APB3_PNRES_SOFT register, address 0x13004c2c */
-
-#define CGU_AHB2APB3RST_RESET (1 << 0) /* Bit 0: Reset for APB part of AHB_TO_APB3 bridge */
-
-/* APB4_RESETN_SOFT register, address 0x13004c30 */
-
-#define CGU_APB4RST_RESET (1 << 0) /* Bit 0: Reset for AHB part of AHB_TO_APB4 bridge */
-
-/* AHB_TO_INTC_RESETN_SOFT register, address 0x13004c34 */
-
-#define CGU_AHB2INTCRST_RESET (1 << 0) /* Bit 0: Reset for AHB_TO_INTC */
-
-/* AHB0_RESETN_SOFT register, address 0x13004c38 */
-
-#define CGU_AHB0RST_RESET (1 << 0) /* Bit 0: Reserved */
-
-/* EBI_RESETN_SOFT register, address 0x13004c2c */
-
-#define CGU_EBIRST_RESET (1 << 0) /* Bit 0: Reset for EBI */
-
-/* PCM_PNRES_SOFT UNIT register, address 0x13004c40 */
-
-#define CGU_PCMAPBRST_RESET (1 << 0) /* Bit 0: Reset for APB domain of PCM */
-
-/* PCM_RESET_N_SOFT register, address 0x13004c44 */
-
-#define CGU_PCMCLKIPRST_RESET (1 << 0) /* Bit 0: Reset for synchronous clk_ip domain of PCM */
-
-/* PCM_RESET_ASYNC_N_SOFT register, address 0x13004c48 */
-
-#define CGU_PCMRSTASYNC_RESET (1 << 0) /* Bit 0: Reset for asynchronous clk_ip domain of PCM */
-
-/* TIMER0_PNRES_SOFT register, address 0x13004c4c */
-
-#define CGU_TIMER0RST_RESET (1 << 0) /* Bit 0: Reset for Timer0 */
-
-/* TIMER1_PNRES_SOFT register, address 0x13004c50 */
-
-#define CGU_TIMER1RST_RESET (1 << 0) /* Bit 0: Reset for Timer1 */
-
-/* TIMER2_PNRES_SOFT register, address 0x13004c54 */
-
-#define CGU_TIMER2RST_RESET (1 << 0) /* Bit 0: Reset for Timer2 */
-
-/* TIMER3_PNRES_SOFT register, address 0x13004c58 */
-
-#define CGU_TIMER3RST_RESET (1 << 0) /* Bit 0: Reset for Timer3 */
-
-/* ADC_PRESETN_SOFT register, address 0x13004c5c */
-
-#define CGU_ADCPRST_RESET (1 << 0) /* Bit 0: Reset for controller of 10 bit ADC Interface */
-
-/* ADC_RESETN_ADC10BITS_SOFT register, address 0x1300 4c60 */
-
-#define CGU_ADCRST_RESET (1 << 0) /* Bit 0: Reset for A/D converter of ADC Interface */
-
-/* PWM_RESET_AN_SOFT register, address 0x13004c64 */
-
-#define CGU_PWMRST_RESET (1 << 0) /* Bit 0: Reset for PWM */
-
-/* UART_SYS_RST_AN_SOFT register, address 0x13004c68 */
-
-#define CGU_UARTRST_RESET (1 << 0) /* Bit 0: Reset for UART/IrDA */
-
-/* I2C0_PNRES_SOFT register, address 0x13004c6c */
-
-#define CGU_I2C0RST_RESET (1 << 0) /* Bit 0: Reset for I2C0 */
-
-/* I2C1_PNRES_SOFT register, address 0x13004c70 */
-
-#define CGU_I2C1RST_RESET (1 << 0) /* Bit 0: Reset for I2C1 */
-
-/* I2S_CFG_RST_N_SOFT register, address 0x13004c74 */
-
-#define CGU_I2SCFGRST_RESET (1 << 0) /* Bit 0: Reset for I2S_Config */
-
-/* I2S_NSOF_RST_N_SOFT register, address 0x13004c78 */
-
-#define CGU_I2SNSOFRST_RESET (1 << 0) /* Bit 0: Reset for NSOF counter of I2S_CONFIG */
-
-/* EDGE_DET_RST_N_SOFT register, address 0x13004c7c */
-
-#define CGU_EDGEDETRST_RESET (1 << 0) /* Bit 0: Reset for Edge_det */
-
-/* I2STX_FIFO_0_RST_N_SOFT register, address 0x13004c80 */
-
-#define CGU_I2STXFF0RST_RESET (1 << 0) /* Bit 0: Reset for I2STX_FIFO_0 */
-
-/* I2STX_IF_0_RST_N_SOFT register, address 0x13004c84 */
-
-#define CGU_I2STXIF0RST_RESET (1 << 0) /* Bit 0: Reset for I2STX_IF_0 */
-
-/* I2STX_FIFO_1_RST_N_SOFT register, address 0x13004c88 */
-
-#define CGU_I2STXFF1RST_RESET (1 << 0) /* Bit 0: Reset for I2STX_FIFO_1 */
-
-/* I2STX_IF_1_RST_N_SOFT register, address 0x13004c8c */
-
-#define CGU_I2STXIF1RST_RESET (1 << 0) /* Bit 0: Reset for I2STX_IF_1 */
-
-/* I2SRX_FIFO_0_RST_N_SOFT register, address 0x13004c90 */
-
-#define CGU_I2SRXFF0RST_RESET (1 << 0) /* Bit 0: Reset for I2SRX_FIFO_0 */
-
-/* I2SRX_IF_0_RST_N_SOFT register, address 0x13004c94 */
-
-#define CGU_I2SRXIF0RST_RESET (1 << 0) /* Bit 0: Reset for I2SRX_IF_0 */
-
-/* I2SRX_FIFO_1_RST_N_SOFT register, address 0x13004c98 */
-
-#define CGU_I2SRXFF1RST_RESET (1 << 0) /* Bit 0: Reset for I2SRX_FIFO_1 */
-
-/* I2SRX_IF_1_RST_N_SOFT register, address 0x13004c9c */
-
-#define CGU_I2SRXIF1RST_RESET (1 << 0) /* Bit 0: Reset for I2SRX_IF_1 */
-
-/* LCD_PNRES_SOFT register, address 0x13004cB4 */
-
-#define CGU_LCDRST_RESET (1 << 0) /* Bit 0: Reset for LCD Interface */
-
-/* SPI_PNRES_APB_SOFT register, address 0x13004cb8 */
-
-#define CGU_SPIRSTAPB_RESET (1 << 0) /* Bit 0: Reset register for apb_clk domain of SPI */
-
-/* SPI_PNRES_IP_SOFT register, address 0x13004cbc */
-
-#define CGU_SPIRSTIP_RESET (1 << 0) /* Bit 0: Reset for ip_clk domain of SPI */
-
-/* DMA_PNRES_SOFT register, address 0x13004cc0 */
-
-#define CGU_DMARST_RESET (1 << 0) /* Bit 0: Reset for DMA */
-
-/* NANDFLASH_CTRL_ECC_RESET_N_SOFT register, address 0x13004cc4 */
-
-#define CGU_NANDECCRST_RESET (1 << 0) /* Bit 0: Reset for ECC clock domain of Nandflash Controller */
-
-/* NANDFLASH_CTRL_NAND_RESET_N_SOFT register, address 0x13004ccc */
-
-#define CGU_NANDCTRLRST_RESET (1 << 0) /* Bit 0: Reset for Nandflash Controller */
-
-/* SD_MMC_PNRES_SOFT register, address 0x13004cd4 */
-
-#define CGU_SDMMCRST_RESET (1 << 0) /* Bit 0: Reset for MCI synchronous with AHB clock */
-
-/* SD_MMC_NRES_CCLK_IN_SOFT register, address 0x1300 4cd8 */
-
-#define CGU_SDMMCRSTCKIN_RESET (1 << 0) /* Bit 0: Reset register for MCI synchronous with IP clock */
-
-/* USB_OTG_AHB_RST_N_SOFT, address 0x13004cdc */
-
-#define CGU_USBOTGAHBRST_RESET (1 << 0) /* Bit 0: Reset for USB_OTG */
-
-/* RED_CTL_RESET_N_SOFT, address 0x13004ce0 */
-
-#define CGU_REDCTLRST_RESET (1 << 0) /* Bit 0: Reset for Redundancy Controller */
-
-/* AHB_MPMC_HRESETN_SOFT, address 0x13004ce4 */
-
-#define CGU_AHBMPMCHRST_RESET (1 << 0) /* Bit 0: Reset for MPMC */
-
-/* AHB_MPMC_REFRESH_RESETN_SOFT, address 0x13004ce8 */
-
-#define CGU_AHBMPMCRFRST_RESET (1 << 0) /* Bit 0: Reset for refresh generator used for MPMC */
-
-/* INTC_RESETN_SOFT, address 0x13004cec */
-
-#define CGU_INTCRST_RESET (1 << 0) /* Bit 0: Reset for Interrupt Controller */
-
-/* PLL control registers */
-/* HP0 Frequency Input Select register HP0_FIN_SELECT, address 0x13004cf0,
- * HP1 Frequency Input Select register HP1_FIN_SELECT, address 0x13004d28
- */
-
-#define CGU_HPFINSEL_SHIFT (0) /* Bits 0-3: Select input to high HPPLL0 */
-#define CGU_HPFINSEL_MASK (15 << CGU_HPFINSEL_SHIFT)
-# define CGU_HPFINSEL_FFAST (CGU_FREQIN_FFAST << CGU_HPFINSEL_SHIFT) /* ffast (12 Mhz) */
-# define CGU_HPFINSEL_I2SRXBCK0 (CGU_FREQIN_I2SRXBCK0 << CGU_HPFINSEL_SHIFT) /* I2SRX_BCK0 */
-# define CGU_HPFINSEL_I2SRXWS0 (CGU_FREQIN_I2SRXWS0 << CGU_HPFINSEL_SHIFT) /* I2SRX_WS0 */
-# define CGU_HPFINSEL_I2SRXBCK1 (CGU_FREQIN_I2SRXBCK1 << CGU_HPFINSEL_SHIFT) /* I2SRX_BCK1 */
-# define CGU_HPFINSEL_I2SRXWS1 (CGU_FREQIN_I2SRXWS1 << CGU_HPFINSEL_SHIFT) /* I2SRX_WS1 */
-# define CGU_HPFINSEL_HP0FOUT (CGU_FREQIN_HPPLL0 << CGU_HPFINSEL_SHIFT) /* HP0_FOUT */
-# define CGU_HPFINSEL_HP1FOUT (CGU_FREQIN_HPPLL1 << CGU_HPFINSEL_SHIFT) /* HP1_FOUT */
-
-/* HP0 M-divider register HP0_MDEC, address 0x13004cF4,
- * HP1 M-divider register HP1_MDEC, address 0x13004d2C
- */
-
-#define CGU_HPMDEC_SHIFT (0) /* Bits 0-16: Decoded divider ratio for M-divider */
-#define CGU_HPMDEC_MASK (0x1ffff << CGU_HPMDEC_SHIFT)
-
-/* HP0 N-divider register HP0_NDEC, address 0x13004cf8,
- * HP1 N-divider register HP1_NDEC, address 0x13004D30
- */
-
-#define CGU_HPNDEC_SHIFT (0) /* Bits 0-9: Decoded divider ratio for N-divider */
-#define CGU_HPNDEC_MASK (0x3ff << CGU_HPNDEC_SHIFT)
-
-/* HP0 P-divider register HP0_PDEC, address 0x13004cfc.
- * HP1 P-divider register HP1_PDEC, address 0x13004D34
- */
-
-#define CGU_HPPDEC_SHIFT (0) /* Bits 0-6: Decoded divider ratio for P-divider */
-#define CGU_HPPDEC_MASK (0x7F << CGU_HPPDEC_SHIFT)
-
-/* HP0 Mode register HP0_MODE, address 0x13004d00,
- * HP1 Mode register HP1_MODE, address 0x13004d38
- */
-
-#define CGU_HPMODE_BYPASS (1 << 8) /* Bit 8: Bypass mode */
-#define CGU_HPMODE_LIMUPOFF (1 << 7) /* Bit 7: Up limiter */
-#define CGU_HPMODE_BANDSEL (1 << 6) /* Bit 6: Bandwidth adjustment pin */
-#define CGU_HPMODE_FRM (1 << 5) /* Bit 5: Free Running Mode */
-#define CGU_HPMODE_DIRECTI (1 << 4) /* Bit 4: Normal operation with DIRECTO */
-#define CGU_HPMODE_DIRECTO (1 << 3) /* Bit 3: Normal operation with DIRECTI */
-#define CGU_HPMODE_PD (1 << 2) /* Bit 2: Power down mode */
-#define CGU_HPMODE_SKEWEN (1 << 1) /* Bit 1: Skew mode */
-#define CGU_HPMODE_CLKEN (1 << 0) /* Bit 0: Enable mode */
-
-/* HP0 Status register HP0_STATUS, address 0x13004d04,
- * HP1 Status register HP1_STATUS, address 0x13004d3c
- */
-
-#define CGU_HPSTATUS_FR (1 << 1) /* Bit 1: Free running detector */
-#define CGU_HPSTATUS_LOCK (1 << 0) /* Bit 0: Lock detector */
-
-/* HP0 Acknowledge register HP0_ACK, address 0x13004d08,
- * HP1 Acknowledge register HP1_ACK, address 0x13004d40
- */
-
-#define CGU_HPACK_P (1 << 2) /* Bit 2: Post-divider ratio change acknowledge */
-#define CGU_HPACK_N (1 << 1) /* Bit 1: Pre-divider ratio change acknowledge */
-#define CGU_HPACK_M (1 << 0) /* Bit 0: Feedback divider ratio change acknowledge */
-
-/* HP0 request register HP0_REQ, address 0x13004d0c,
- * HP1 Request register HP1_REQ, address 0x13004d44
- */
-
-#define CGU_HPREQ_P (1 << 2) /* Bit 2: Post-divider ratio change request */
-#define CGU_HPREQ_N (1 << 1) /* Bit 1: Pre-divider ratio change request */
-#define CGU_HPREQ_M (1 << 0) /* Bit 0: Feedback divider ratio change request */
-
-/* HP0 Bandwith Selection register HP0_INSELR, address 0x13004d10,
- * HP1 bandwith Selection register HP1_INSELR, address 0x13004d48
- */
-
-#define CGU_HPINSELR_SHIFT (0) /* Bits 0-3: Pins to select the bandwidth */
-#define CGU_HPINSELR_MASK (15 << CGU_HPINSELR_SHIFT)
-
-/* HP0 Bandwith Selection register HP0_INSELI, address 0x13004d14,
- * HP1 bandwith Selection register HP1_INSELI, address 0x13004d4c
- */
-
-#define CGU_HPINSELI_SHIFT (0) /* Bits 0-5: Bandwidth selection register of HP0/1 PLL */
-#define CGU_HPINSELI_MASK (63 << CGU_HPINSELI_SHIFT)
-
-
-/* HP0 Bandwith Selection register HP0_INSELP, address 0x13004d18,
- * HP1 bandwith Selection register HP1_INSELP, address 0x13004d50
- */
-
-#define CGU_HPINSELP_SHIFT (0) /* Bits 0-4: Bandwidth selection register of HP0/1 PLL */
-#define CGU_HPINSELP_MASK (31 << CGU_HPINSELP_SHIFT)
-
-/* HP0 Bandwith Selection register HP0_SELR, address 0x13004d1c,
- * HP1 bandwith Selection register HP1_SELR, address 0x13004d54
- */
-
-#define CGU_HPSELR_SHIFT (0) /* Bits 0-3: Bandwidth selection register of HP0/1 PLL */
-#define CGU_HPSELR_MASK (15 << CGU_HPSELR_SHIFT)
-
-/* HP0 Bandwith Selection register HP0_SELI, address 0x13004d20
- * HP1 bandwith Selection register HP1_SELI, address 0x13004d58
- */
-
-#define CGU_HPSELI_SHIFT (0) /* Bits 0-5: Bandwidth selection register of HP0/1 PLL */
-#define CGU_HPSELI_MASK (63 << CGU_HPSELI_SHIFT)
-
-/* HP0 Bandwith Selection register HP0_SELP, address 0x13004d24,
- * HP1 bandwith Selection register HP1_SELP, address 0x13004d5c
- */
-
-#define CGU_HPSELP_SHIFT (0) /* Bits 0-4: Bandwidth selection register of HP0/1 PLL */
-#define CGU_HPIELP_MASK (31 << CGU_HPSELP_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Inline Functions
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_ARM_SRC_LPC313X_CGU_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_cgudrvr.h b/nuttx/arch/arm/src/lpc313x/lpc313x_cgudrvr.h
deleted file mode 100755
index b728d2b2e..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_cgudrvr.h
+++ /dev/null
@@ -1,819 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_cgudrvr.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - NXP UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - NXP lpc313x.cdl.drivers.zip example driver code
- *
- * 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_ARM_SRC_LPC313X_CGUDRVR_H
-#define __ARCH_ARM_SRC_LPC313X_CGUDRVR_H
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgu.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/* Maps a valid, x, relative to a base value, b, and converts that to a bit position */
-
-#define _RBIT(x,b) (1<<((x)-(b)))
-
-/* Clock ID ranges (see enum lpc313x_clockid_e) *************************************************/
-
-#define CLKID_FIRST CLKID_APB0CLK
-#define CLKID_SYSBASE_FIRST CLKID_APB0CLK /* Domain 0: SYS_BASE */
-#define CLKID_SYSBASE_LAST CLKID_INTCCLK
-#define _D0B(id) _RBIT(id,CLKID_SYSBASE_FIRST)
-
-#define CLKID_AHB0APB0_FIRST CLKID_AHB2APB0PCLK /* Domain 1: AHB0APB0_BASE */
-#define CLKID_AHB0APB0_LAST CLKID_RNGPCLK
-#define _D1B(id) _RBIT(id,CLKID_AHB0APB0_FIRST)
-
-#define CLKID_AHB0APB1_FIRST CLKID_AHB2APB1PCLK /* Domain 2: AHB0APB1_BASE */
-#define CLKID_AHB0APB1_LAST CLKID_I2C1PCLK
-#define _D2B(id) _RBIT(id,CLKID_AHB0APB1_FIRST)
-
-#define CLKID_AHB0APB2_FIRST CLKID_AHB2APB2PCLK /* Domain 3: AHB0APB2_BASE */
-#define CLKID_AHB0APB2_LAST CLKID_SPIPCLKGATED
-#define _D3B(id) _RBIT(id,CLKID_AHB0APB2_FIRST)
-
-#define CLKID_AHB0APB3_FIRST CLKID_AHB2APB3PCLK /* Domain 4: AHB0APB3_BASE */
-#define CLKID_AHB0APB3_LAST CLKID_RESERVED70
-#define _D4B(id) _RBIT(id,CLKID_AHB0APB3_FIRST)
-
-#define CLKID_PCM_FIRST CLKID_PCMCLKIP /* Domain 5: PCM_BASE */
-#define CLKID_PCM_LAST CLKID_PCMCLKIP
-#define _D5B(id) _RBIT(id,CLKID_PCM_FIRST)
-
-#define CLKID_UART_FIRST CLKID_UARTUCLK /* Domain 6: UART_BASE */
-#define CLKID_UART_LAST CLKID_UARTUCLK
-#define _D6B(id) _RBIT(id,CLKID_UART_FIRST)
-
-#define CLKID_CLK1024FS_FIRST CLKID_I2SEDGEDETECTCLK /* Domain 7: CLK1024FS_BASE */
-#define CLKID_CLK1024FS_LAST CLKID_RESERVED86
-#define _D7B(id) _RBIT(id,CLKID_CLK1024FS_FIRST)
-
-#define CLKID_I2SRXBCK0_FIRST CLKID_I2SRXBCK0 /* Domain 8: BCK0_BASE */
-#define CLKID_I2SRXBCK0_LAST CLKID_I2SRXBCK0
-#define _D8B(id) _RBIT(id,CLKID_I2SRXBCK0_FIRST)
-
-#define CLKID_I2SRXBCK1_FIRST CLKID_I2SRXBCK1 /* Domain 9: BCK1_BASE */
-#define CLKID_I2SRXBCK1_LAST CLKID_I2SRXBCK1
-#define _D9B(id) _RBIT(id,CLKID_SYSBASE_FIRST)
-
-#define CLKID_SPI_FIRST CLKID_SPICLK /* Domain 10: SPI_BASE */
-#define CLKID_SPI_LAST CLKID_SPICLKGATED
-#define _D10B(id) _RBIT(id,CLKID_I2SRXBCK1_FIRST)
-
-#define CLKID_SYSCLKO_FIRST CLKID_SYSCLKO /* Domain 11: SYSCLKO_BASE */
-#define CLKID_SYSCLKO_LAST CLKID_SYSCLKO
-#define _D11B(id) _RBIT(id,CLKID_SYSCLKO_FIRST)
-#define CLKID_LAST CLKID_SYSCLKO
-
-#define CGU_NDOMAINS 12 /* The number of clock domains */
-#define CLKID_INVALIDCLK -1 /* Indicates and invalid clock ID */
-#define DOMAINID_INVALID -1 /* Indicates an invalid domain ID */
-#define ESRNDX_INVALID -1 /* Indicates an invalid ESR register index */
-#define BCRNDX_INVALID -1 /* Indicates an invalid BCR register index */
-
-/* There are 24 fractional dividers, indexed 0 to 23. The following definitions
- * provide (1) the number of fractional dividers available for each base frequency,
- * (2) start and end indices, and (3) extraction info for sub elements from the
- * fractional divider configuration register
- */
-
-#define FRACDIV_BASE0_CNT 7 /* 7 fractional dividers available */
-#define FRACDIV_BASE0_LOW 0 /* First is index 0 */
-#define FRACDIV_BASE0_HIGH 6 /* Last is index 6 */
-#define FRACDIV_BASE0_FDIV0W 8
-
-#define FRACDIV_BASE1_CNT 2 /* 2 fractional dividers available */
-#define FRACDIV_BASE1_LOW 7 /* First is index 7 */
-#define FRACDIV_BASE1_HIGH 8 /* Last is index 8 */
-#define FRACDIV_BASE1_FDIV0W 8
-
-#define FRACDIV_BASE2_CNT 2 /* 2 fractional dividers available */
-#define FRACDIV_BASE2_LOW 9 /* First is index 9 */
-#define FRACDIV_BASE2_HIGH 10 /* Last is index 10 */
-#define FRACDIV_BASE2_FDIV0W 8
-
-#define FRACDIV_BASE3_CNT 3 /* 3 fractional dividers available */
-#define FRACDIV_BASE3_LOW 11 /* First is index 11 */
-#define FRACDIV_BASE3_HIGH 13 /* Last is index 12 */
-#define FRACDIV_BASE3_FDIV0W 8
-
-#define FRACDIV_BASE4_CNT 1 /* 1 fractional divider available */
-#define FRACDIV_BASE4_LOW 14 /* First is index 14 */
-#define FRACDIV_BASE4_HIGH 14 /* Last is index 14 */
-#define FRACDIV_BASE4_FDIV0W 8
-
-#define FRACDIV_BASE5_CNT 1 /* 1 fractional divider available */
-#define FRACDIV_BASE5_LOW 15 /* First is index 15 */
-#define FRACDIV_BASE5_HIGH 15 /* Last is index 15 */
-#define FRACDIV_BASE5_FDIV0W 8
-
-#define FRACDIV_BASE6_CNT 1 /* 1 fractional divider available */
-#define FRACDIV_BASE6_LOW 16 /* First is index 16 */
-#define FRACDIV_BASE6_HIGH 16 /* Last is index 16 */
-#define FRACDIV_BASE6_FDIV0W 8
-
-#define FRACDIV_BASE7_CNT 6 /* 6 fractional dividers available */
-#define FRACDIV_BASE7_LOW 17 /* First is index 17 */
-#define FRACDIV_BASE7_HIGH 22 /* Last is index 22 */
-#define FRACDIV_BASE7_FDIV0W 13
-
-#define FRACDIV_BASE8_CNT 0 /* No fractional divider available */
-#define FRACDIV_BASE9_CNT 0 /* No fractional divider available */
-
-#define FRACDIV_BASE10_CNT 1 /* 1 fractional divider available */
-#define FRACDIV_BASE10_LOW 23 /* First is index 23 */
-#define FRACDIV_BASE10_HIGH 23 /* Last is index 23 */
-#define FRACDIV_BASE10_FDIV0W 8
-
-#define FRACDIV_BASE11_CNT 0 /* No fractional divider available */
-
-#define CGU_NFRACDIV 24 /* Number of fractional dividers: 0-23 */
-#define CGU_NDYNFRACDIV 7 /* Number of dynamic fractional dividers: 0-6 */
-#define FDCNDX_INVALID -1 /* Indicates an invalid fractional
- * divider index */
-
-/************************************************************************
- * Public Types
- ************************************************************************/
-
-#ifndef __ASSEMBLY__
-#ifdef __cplusplus
-#define EXTERN extern "C"
-extern "C" {
-#else
-#define EXTERN extern
-#endif
-
-/* Clock domains */
-
-enum lpc313x_domainid_e
-{
- DOMAINID_SYS = 0, /* Domain 0: SYS_BASE */
- DOMAINID_AHB0APB0, /* Domain 1: AHB0APB0_BASE */
- DOMAINID_AHB0APB1, /* Domain 2: AHB0APB1_BASE */
- DOMAINID_AHB0APB2, /* Domain 3: AHB0APB2_BASE */
- DOMAINID_AHB0APB3, /* Domain 4: AHB0APB3_BASE */
- DOMAINID_PCM, /* Domain 5: PCM_BASE */
- DOMAINID_UART, /* Domain 6: UART_BASE */
- DOMAINID_CLK1024FS, /* Domain 7: CLK1024FS_BASE */
- DOMAINID_BCK0, /* Domain 8: BCK0_BASE */
- DOMAINID_BCK1, /* Domain 9: BCK1_BASE */
- DOMAINID_SPI, /* Domain 10: SPI_BASE */
- DOMAINID_SYSCLKO /* Domain 11: SYSCLKO_BASE */
-};
-
-/* Clock IDs -- These are indices must correspond to the register
- * offsets in lpc313x_cgu.h
- */
-
-enum lpc313x_clockid_e
-{
- /* Domain 0: SYS_BASE */
-
- CLKID_APB0CLK = 0, /* 0 APB0_CLK */
- CLKID_APB1CLK, /* 1 APB1_CLK */
- CLKID_APB2CLK, /* 2 APB2_CLK */
- CLKID_APB3CLK, /* 3 APB3_CLK */
- CLKID_APB4CLK, /* 4 APB4_CLK */
- CLKID_AHB2INTCCLK, /* 5 AHB_TO_INTC_CLK */
- CLKID_AHB0CLK, /* 6 AHB0_CLK */
- CLKID_EBICLK, /* 7 EBI_CLK */
- CLKID_DMAPCLK, /* 8 DMA_PCLK */
- CLKID_DMACLKGATED, /* 9 DMA_CLK_GATED */
- CLKID_NANDFLASHS0CLK, /* 10 NANDFLASH_S0_CLK */
- CLKID_NANDFLASHECCCLK, /* 11 NANDFLASH_ECC_CLK */
- CLKID_NANDFLASHAESCLK, /* 12 NANDFLASH_AES_CLK (Reserved on LPC313x) */
- CLKID_NANDFLASHNANDCLK, /* 13 NANDFLASH_NAND_CLK */
- CLKID_NANDFLASHPCLK, /* 14 NANDFLASH_PCLK */
- CLKID_CLOCKOUT, /* 15 CLOCK_OUT */
- CLKID_ARM926CORECLK, /* 16 ARM926_CORE_CLK */
- CLKID_ARM926BUSIFCLK, /* 17 ARM926_BUSIF_CLK */
- CLKID_ARM926RETIMECLK, /* 18 ARM926_RETIME_CLK */
- CLKID_SDMMCHCLK, /* 19 SD_MMC_HCLK */
- CLKID_SDMMCCCLKIN, /* 20 SD_MMC_CCLK_IN */
- CLKID_USBOTGAHBCLK, /* 21 USB_OTG_AHB_CLK */
- CLKID_ISRAM0CLK, /* 22 ISRAM0_CLK */
- CLKID_REDCTLRSCLK, /* 23 RED_CTL_RSCLK */
- CLKID_ISRAM1CLK, /* 24 ISRAM1_CLK (LPC313x only) */
- CLKID_ISROMCLK, /* 25 ISROM_CLK */
- CLKID_MPMCCFGCLK, /* 26 MPMC_CFG_CLK */
- CLKID_MPMCCFGCLK2, /* 27 MPMC_CFG_CLK2 */
- CLKID_MPMCCFGCLK3, /* 28 MPMC_CFG_CLK3 */
- CLKID_INTCCLK, /* 29 INTC_CLK */
-
- /* Domain 1: AHB0APB0_BASE */
-
- CLKID_AHB2APB0PCLK, /* 30 AHB_TO_APB0_PCLK */
- CLKID_EVENTROUTERPCLK, /* 31 EVENT_ROUTER_PCLK */
- CLKID_ADCPCLK, /* 32 ADC_PCLK */
- CLKID_ADCCLK, /* 33 ADC_CLK */
- CLKID_WDOGPCLK, /* 34 WDOG_PCLK */
- CLKID_IOCONFPCLK, /* 35 IOCONF_PCLK */
- CLKID_CGUPCLK, /* 36 CGU_PCLK */
- CLKID_SYSCREGPCLK, /* 37 SYSCREG_PCLK */
- CLKID_OTPPCLK, /* 38 OTP_PCLK (Reserved on LPC313X) */
- CLKID_RNGPCLK, /* 39 RNG_PCLK */
-
- /* Domain 2: AHB0APB1_BASE */
-
- CLKID_AHB2APB1PCLK, /* 40 AHB_TO_APB1_PCLK */
- CLKID_TIMER0PCLK, /* 41 TIMER0_PCLK */
- CLKID_TIMER1PCLK, /* 42 TIMER1_PCLK */
- CLKID_TIMER2PCLK, /* 43 TIMER2_PCLK */
- CLKID_TIMER3PCLK, /* 44 TIMER3_PCLK */
- CLKID_PWMPCLK, /* 45 PWM_PCLK */
- CLKID_PWMPCLKREGS, /* 46 PWM_PCLK_REGS */
- CLKID_PWMCLK, /* 47 PWM_CLK */
- CLKID_I2C0PCLK, /* 48 I2C0_PCLK */
- CLKID_I2C1PCLK, /* 49 I2C1_PCLK */
-
- /* Domain 3: AHB0APB2_BASE */
-
- CLKID_AHB2APB2PCLK, /* 50 AHB_TO_APB2_PCLK */
- CLKID_PCMPCLK, /* 51 PCM_PCLK */
- CLKID_PCMAPBPCLK, /* 52 PCM_APB_PCLK */
- CLKID_UARTAPBCLK, /* 53 UART_APB_CLK */
- CLKID_LCDPCLK, /* 54 LCD_PCLK */
- CLKID_LCDCLK, /* 55 LCD_CLK */
- CLKID_SPIPCLK, /* 56 SPI_PCLK */
- CLKID_SPIPCLKGATED, /* 57 SPI_PCLK_GATED */
-
- /* Domain 4: AHB0APB3BASE */
- CLKID_AHB2APB3PCLK, /* 58 AHB_TO_APB3_PCLK */
- CLKID_I2SCFGPCLK, /* 59 I2S_CFG_PCLK */
- CLKID_EDGEDETPCLK, /* 60 EDGE_DET_PCLK */
- CLKID_I2STXFIFO0PCLK, /* 61 I2STX_FIFO_0_PCLK */
- CLKID_I2STXIF0PCLK, /* 62 I2STX_IF_0_PCLK */
- CLKID_I2STXFIFO1PCLK, /* 63 I2STX_FIFO_1_PCLK */
- CLKID_I2STXIF1PCLK, /* 64 I2STX_IF_1_PCLK */
- CLKID_I2SRXFIFO0PCLK, /* 65 I2SRX_FIFO_0_PCLK */
- CLKID_I2SRXIF0PCLK, /* 66 I2SRX_IF_0_PCLK */
- CLKID_I2SRXFIFO1PCLK, /* 67 I2SRX_FIFO_1_PCLK */
- CLKID_I2SRXIF1PCLK, /* 68 I2SRX_IF_1_PCLK */
- CLKID_RESERVED69, /* 69 Reserved */
- CLKID_RESERVED70, /* 70 Reserved */
-
- /* Domain 5: PCM_BASE */
-
- CLKID_PCMCLKIP, /* 71 PCM_CLK_IP */
-
- /* Domain 6: UART_BASE */
-
- CLKID_UARTUCLK, /* 72 UART_U_CLK */
-
- /* Domain 7: CLK1024FS_BASE */
-
- CLKID_I2SEDGEDETECTCLK, /* 73 I2S_EDGE_DETECT_CLK */
- CLKID_I2STXBCK0N, /* 74 I2STX_BCK0_N */
- CLKID_I2STXWS0, /* 75 I2STX_WS0 */
- CLKID_I2STXCLK0, /* 76 I2STX_CLK0 */
- CLKID_I2STXBCK1N, /* 77 I2STX_BCK1_N */
- CLKID_I2STXWS1, /* 78 I2STX_WS1 */
- CLKID_CLK256FS, /* 79 CLK_256FS */
- CLKID_I2SRXBCK0N, /* 80 I2SRX_BCK0_N */
- CLKID_I2SRXWS0, /* 81 I2SRX_WS0 */
- CLKID_I2SRXBCK1N, /* 82 I2SRX_BCK1_N */
- CLKID_I2SRXWS1, /* 83 I2SRX_WS1 */
- CLKID_RESERVED84, /* 84 Reserved */
- CLKID_RESERVED85, /* 85 Reserved */
- CLKID_RESERVED86, /* 86 Reserved */
-
- /* Domain 8: BCK0_BASE */
-
- CLKID_I2SRXBCK0, /* 87 I2SRX_BCK0 */
-
- /* Domain 9: BCK1_BASE */
-
- CLKID_I2SRXBCK1, /* 88 I2SRX_BCK1 */
-
- /* Domain 10: SPI_BASE */
-
- CLKID_SPICLK, /* 89 SPI_CLK */
- CLKID_SPICLKGATED, /* 90 SPI_CLK_GATED */
-
- /* Domain 11: SYSCLKO_BASE */
-
- CLKID_SYSCLKO /* 91 SYSCLK_O */
-};
-
-/* Indices into the CGU configuration reset control registers */
-
-enum lpc313x_resetid_e
-{
- RESETID_APB0RST, /* 0 AHB part of AHB_TO_APB0 bridge (Reserved) */
- RESETID_AHB2APB0RST, /* 1 APB part of AHB_TO_APB0 bridge (Reserved) */
- RESETID_APB1RST, /* 2 AHB part of AHB_TO_APB1 bridge */
- RESETID_AHB2PB1RST, /* 3 APB part of AHB_TO_APB1 bridge */
- RESETID_APB2RST, /* 4 AHB part of AHB_TO_APB2 bridge */
- RESETID_AHB2APB2RST, /* 5 APB part of AHB_TO_APB2 bridge */
- RESETID_APB3RST, /* 6 AHB part of AHB_TO_APB3 bridge */
- RESETID_AHB2APB3RST, /* 7 APB part of AHB_TO_APB3 bridge */
- RESETID_APB4RST, /* 8 AHB_TO_APB4 bridge */
- RESETID_AHB2INTCRST, /* 9 AHB_TO_INTC */
- RESETID_AHB0RST, /* 10 AHB0 */
- RESETID_EBIRST, /* 11 EBI */
- RESETID_PCMAPBRST, /* 12 APB domain of PCM */
- RESETID_PCMCLKIPRST, /* 13 synchronous clk_ip domain of PCM */
- RESETID_PCMRSTASYNC, /* 14 asynchronous clk_ip domain of PCM */
- RESETID_TIMER0RST, /* 15 Timer0 */
- RESETID_TIMER1RST, /* 16 Timer1 */
- RESETID_TIMER2RST, /* 17 Timer2 */
- RESETID_TIMER3RST, /* 18 Timer3 */
- RESETID_ADCPRST, /* 19 controller of 10 bit ADC Interface */
- RESETID_ADCRST, /* 20 A/D converter of ADC Interface */
- RESETID_PWMRST, /* 21 PWM */
- RESETID_UARTRST, /* 22 UART/IrDA */
- RESETID_I2C0RST, /* 23 I2C0 */
- RESETID_I2C1RST, /* 24 I2C1 */
- RESETID_I2SCFGRST, /* 25 I2S_Config */
- RESETID_I2SNSOFRST, /* 26 NSOF counter of I2S_CONFIG */
- RESETID_EDGEDETRST, /* 27 Edge_det */
- RESETID_I2STXFF0RST, /* 28 I2STX_FIFO_0 */
- RESETID_I2STXIF0RST, /* 29 I2STX_IF_0 */
- RESETID_I2STXFF1RST, /* 30 I2STX_FIFO_1 */
- RESETID_I2STXIF1RST, /* 31 I2STX_IF_1 */
- RESETID_I2SRXFF0RST, /* 32 I2SRX_FIFO_0 */
- RESETID_I2SRXIF0RST, /* 33 I2SRX_IF_0 */
- RESETID_I2SRXFF1RST, /* 34 I2SRX_FIFO_1 */
- RESETID_I2SRXIF1RST, /* 35 I2SRX_IF_1 */
- RESETID_RESERVED40, /* 36 Reserved */
- RESETID_RESERVED41, /* 37 Reserved */
- RESETID_RESERVED42, /* 38 Reserved */
- RESETID_RESERVED43, /* 39 Reserved */
- RESETID_RESERVED44, /* 40 Reserved */
- RESETID_LCDRST, /* 41 LCD Interface */
- RESETID_SPIRSTAPB, /* 42 apb_clk domain of SPI */
- RESETID_SPIRSTIP, /* 43 ip_clk domain of SPI */
- RESETID_DMARST, /* 44 DMA */
- RESETID_NANDECCRST, /* 45 Nandflash Controller ECC clock */
- RESETID_NANDAESRST, /* 46 Nandflash Controller AES clock (reserved for lpc313x) */
- RESETID_NANDCTRLRST, /* 47 Nandflash Controller */
- RESETID_RNG, /* 48 RNG */
- RESETID_SDMMCRST, /* 49 MCI (on AHB clock) */
- RESETID_SDMMCRSTCKIN, /* 50 CI synchronous (on IP clock) */
- RESETID_USBOTGAHBRST, /* 51 USB_OTG */
- RESETID_REDCTLRST, /* 52 Redundancy Controller */
- RESETID_AHBMPMCHRST, /* 53 MPMC */
- RESETID_AHBMPMCRFRST, /* 54 refresh generator used for MPMC */
- RESETID_INTCRST, /* 55 Interrupt Controller */
-};
-
-/* This structure describes one CGU fractional divider configuration */
-
-struct lpc313x_fdivconfig_s
-{
- uint8_t stretch; /* Fractional divider stretch enable. */
- uint8_t n; /* Fractional divider nominal nominator */
- uint16_t m; /* Fractional divider nominal denominator */
-};
-
-/* The structure describes the configuration of one CGU sub-domain */
-
-struct lpc313x_subdomainconfig_s
-{
- struct lpc313x_fdivconfig_s fdiv; /* Fractional divider settings */
- uint32_t clkset; /* Bitset of all clocks in the sub-domain */
-};
-
-/* CGU clock initilization structure. Describes the platform-specific
- * configuration of every clock domain.
- */
-
-struct lpc313x_clkinit_s
-{
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE0_CNT];
- } domain0;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE1_CNT];
- } domain1;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE2_CNT];
- } domain2;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE3_CNT];
- } domain3;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE4_CNT];
- } domain4;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE5_CNT];
- } domain5;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE6_CNT];
- } domain6;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE7_CNT];
- } domain7;
-
- struct
- {
- uint8_t finsel;
- } domain8;
-
- struct
- {
- uint8_t finsel;
- } domain9;
-
- struct
- {
- uint8_t finsel;
- struct lpc313x_subdomainconfig_s sub[FRACDIV_BASE10_CNT];
- } domain10;
-
- struct
- {
- uint8_t finsel;
- } domain11;
-
-#if 0 /* Dynamic fractional divider initialization not implemented */
- struct
- {
- uint16_t sel;
- struct lpc313x_fdivconfig_s cfg;
- } dynfdiv[CGU_NDYNFRACDIV];
-#endif
-};
-
-/* This structure is used to pass PLL configuration data to
- * lpc313x_pllconfig()
- */
-
-struct lpc313x_pllconfig_s
-{
- uint8_t hppll; /* PLL selection: 0=HPLL0 1=HPLL1 */
- uint8_t pdec; /* PLL P-divider value: 0-0x7f */
- uint8_t selr; /* SELR bandwidth selection: 0-15 */
- uint8_t seli; /* SELI bandwidth selection: 0-63 */
- uint8_t selp; /* SELP bandwidth selection: 0-31 */
- uint16_t ndec; /* PLL N-divider value: 0-0x3ff */
- uint16_t mode; /* PLL mode: 9-bits */
- uint32_t freq; /* Frequency of the PLL in MHz */
- uint32_t finsel; /* Frequency input selection: CGU_HPFINSEL_* */
- uint32_t mdec; /* PLL M-divider value: 0-0x1ffff */
-};
-
-/************************************************************************
- * Public Data
- ************************************************************************/
-
-/* This array is managed by the chip-specific logic and provides the
- * programmed frequency of every input source
- */
-
-EXTERN uint32_t g_boardfreqin[CGU_NFREQIN];
-
-/* This instance of the lpc313x_clkinit_s structure provides the initial,
- * default clock configuration for the board. Every board must provide
- * an implementation of g_boardclks. This rather complex structure is
- * used by the boot-up logic to configure initial lpc313x clocking.
- */
-
-EXTERN const struct lpc313x_clkinit_s g_boardclks;
-
-/************************************************************************
- * Inline Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_getbasefreq
- *
- * Description:
- * Return the base frequency associated with a clock domain
- *
- ************************************************************************/
-
-static inline uint32_t lpc313x_getbasefreq(enum lpc313x_domainid_e dmnid)
-{
- uint32_t regval;
- int ndx;
-
- /* Fetch the SSR register associated with this clock domain */
-
- regval = getreg32(LPC313X_CGU_SSR((int)dmnid));
-
- /* Extract the last frequency input selection */
-
- ndx = (regval & CGU_SSR_FS_MASK) >> CGU_SSR_FS_SHIFT;
-
- /* And return the user-supplied value for that frequency input */
-
- return g_boardfreqin[ndx];
-}
-
-/************************************************************************
- * Name: lpc313x_enableclock
- *
- * Description:
- * Enable the specified clock
- *
- ************************************************************************/
-
-static inline void lpc313x_enableclock(enum lpc313x_clockid_e clkid)
-{
- uint32_t address = LPC313X_CGU_PCR((int)clkid);
- uint32_t regval = getreg32(address);
-
- regval |= CGU_PCR_RUN;
- putreg32(regval, address);
-}
-
-/************************************************************************
- * Name: lpc313x_disableclock
- *
- * Description:
- * Disable the specified clock
- *
- ************************************************************************/
-
-static inline void lpc313x_disableclock(enum lpc313x_clockid_e clkid)
-{
- uint32_t address = LPC313X_CGU_PCR((int)clkid);
- uint32_t regval = getreg32(address);
-
- regval &= ~CGU_PCR_RUN;
- putreg32(regval, address);
-}
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_defclk
- *
- * Description:
- * Enable the specified clock if it is one of the default clocks needed
- * by the board.
- *
- ****************************************************************************/
-
-EXTERN bool lpc313x_defclk(enum lpc313x_clockid_e clkid);
-
-/****************************************************************************
- * Name: lpc313x_resetclks
- *
- * Description:
- * Put all clocks into a known, initial state
- *
- ****************************************************************************/
-
-EXTERN void lpc313x_resetclks(void);
-
-/************************************************************************
- * Name: lpc313x_clkinit
- *
- * Description:
- * Initialize all clock domains based on board-specific clock
- * configuration data
- *
- ************************************************************************/
-
-EXTERN void lpc313x_clkinit(const struct lpc313x_clkinit_s* cfg);
-
-/************************************************************************
- * Name: lpc313x_fdivinit
- *
- * Description:
- * Enable and configure (or disable) a fractional divider. For
- * internal us only... see lpc313x_setfdiv() the externally usable
- * function.
- *
- ************************************************************************/
-
-EXTERN uint32_t lpc313x_fdivinit(int fdcndx,
- const struct lpc313x_fdivconfig_s *fdiv,
- bool enable);
-
-/************************************************************************
- * Name: lpc313x_setfdiv
- *
- * Description:
- * Set/reset subdomain frequency containing the specified clock using
- * the provided divider settings
- *
- ************************************************************************/
-
-EXTERN void lpc313x_setfdiv(enum lpc313x_domainid_e dmnid,
- enum lpc313x_clockid_e clkid,
- const struct lpc313x_fdivconfig_s *fdiv);
-
-/****************************************************************************
- * Name: lpc313x_pllconfig
- *
- * Description:
- * Re-onfigure the PLL according to the provided selections.
- *
- ****************************************************************************/
-
-EXTERN void lpc313x_pllconfig(const struct lpc313x_pllconfig_s * const cfg);
-
-/************************************************************************
- * Name: lpc313x_hp0pllconfig
- *
- * Description:
- * Configure the HP0 PLL according to the board.h default selections.
- *
- ************************************************************************/
-
-EXTERN void lpc313x_hp0pllconfig(void);
-
-/************************************************************************
- * Name: lpc313x_hp1pllconfig
- *
- * Description:
- * Configure the HP1 PLL according to the board.h default selections.
- *
- ************************************************************************/
-
-EXTERN void lpc313x_hp1pllconfig(void);
-
-/************************************************************************
- * Name: lpc313x_softreset
- *
- * Description:
- * Perform a soft reset on the specified module.
- *
- ************************************************************************/
-
-EXTERN void lpc313x_softreset(enum lpc313x_resetid_e resetid);
-
-/************************************************************************
- * Name: lpc313x_clkdomain
- *
- * Description:
- * Given a clock ID, return the ID of the domain in which the clock
- * resides.
- *
- ************************************************************************/
-
-EXTERN enum lpc313x_domainid_e lpc313x_clkdomain(enum lpc313x_clockid_e clkid);
-
-/************************************************************************
- * Name: lpc313x_esrndx
- *
- * Description:
- * Given a clock ID, return the index of the corresponding ESR
- * register (or ESRNDX_INVALID if there is no ESR associated with
- * this clock ID). Indexing of ESRs differs slightly from the clock
- * ID: There are 92 clock IDs but only 89 ESR regisers. There are no
- * ESR registers for :
- *
- *
- * CLKID_I2SRXBCK0 Clock ID 87: I2SRX_BCK0
- * CLKID_I2SRXBCK1, Clock ID 88: I2SRX_BCK1
- *
- * and
- *
- * CLKID_SYSCLKO Clock ID 91: SYSCLK_O
- *
- ************************************************************************/
-
-EXTERN int lpc313x_esrndx(enum lpc313x_clockid_e clkid);
-
-/************************************************************************
- * Name: lpc313x_bcrndx
- *
- * Description:
- * Only 5 of the 12 domains have an associated BCR register. This
- * function returns the index to the associated BCR register (if any)
- * or BCRNDX_INVALID otherwise.
- *
- ************************************************************************/
-
-EXTERN int lpc313x_bcrndx(enum lpc313x_domainid_e dmnid);
-
-/************************************************************************
- * Name: lpc313x_fdcndx
- *
- * Description:
- * Given a clock ID and its domain ID, return the index of the
- * corresponding fractional divider register (or FDCNDX_INVALID if
- * there is no fractional divider associated with this clock).
- *
- ************************************************************************/
-
-EXTERN int lpc313x_fdcndx(enum lpc313x_clockid_e clkid,
- enum lpc313x_domainid_e dmnid);
-
-/************************************************************************
- * Name: lpc313x_selectfreqin
- *
- * Description:
- * Set the base frequency source selection for with a clock domain
- *
- ************************************************************************/
-
-EXTERN void lpc313x_selectfreqin(enum lpc313x_domainid_e dmnid,
- uint32_t finsel);
-
-/************************************************************************
- * Name: lpc313x_clkfreq
- *
- * Description:
- * Given a clock ID and its domain ID, return the frequency of the
- * clock.
- *
- ************************************************************************/
-
-EXTERN uint32_t lpc313x_clkfreq(enum lpc313x_clockid_e clkid,
- enum lpc313x_domainid_e dmnid);
-
-/************************************************************************
- * Name: lpc313x_enableexten
- *
- * Description:
- * Enable external enabling for the the specified possible clocks.
- *
- ************************************************************************/
-
-EXTERN void lpc313x_enableexten(enum lpc313x_clockid_e clkid);
-
-/************************************************************************
- * Name: lpc313x_disableexten
- *
- * Description:
- * Disable external enabling for the the specified possible clocks.
- *
- ************************************************************************/
-
-EXTERN void lpc313x_disableexten(enum lpc313x_clockid_e clkid);
-
-#undef EXTERN
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_ARM_SRC_LPC313X_CGUDRVR_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_clkdomain.c b/nuttx/arch/arm/src/lpc313x/lpc313x_clkdomain.c
deleted file mode 100755
index e02300e24..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_clkdomain.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_clkdomain.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_clkdomain
- *
- * Description:
- * Given a clock ID, return the ID of the domain in which the clock
- * resides.
- *
- ************************************************************************/
-
-enum lpc313x_domainid_e lpc313x_clkdomain(enum lpc313x_clockid_e clkid)
-{
- if (clkid <= CLKID_SYSBASE_LAST) /* Domain 0: SYS_BASE */
- {
- return DOMAINID_SYS;
- }
- else if (clkid <= CLKID_AHB0APB0_LAST) /* Domain 1: AHB0APB0_BASE */
- {
- return DOMAINID_AHB0APB0;
- }
- else if (clkid <= CLKID_AHB0APB1_LAST) /* Domain 2: AHB0APB1_BASE */
- {
- return DOMAINID_AHB0APB1;
- }
- else if (clkid <= CLKID_AHB0APB2_LAST) /* Domain 3: AHB0APB2_BASE */
- {
- return DOMAINID_AHB0APB2;
- }
- else if (clkid <= CLKID_AHB0APB3_LAST) /* Domain 4: AHB0APB3_BASE */
- {
- return DOMAINID_AHB0APB3;
- }
- else if (clkid <= CLKID_PCM_LAST) /* Domain 5: PCM_BASE */
- {
- return DOMAINID_PCM;
- }
- else if (clkid <= CLKID_UART_LAST) /* Domain 6: UART_BASE */
- {
- return DOMAINID_UART;
- }
- else if (clkid <= CLKID_CLK1024FS_LAST) /* Domain 7: CLK1024FS_BASE */
- {
- return DOMAINID_CLK1024FS;
- }
- else if (clkid <= CLKID_I2SRXBCK0_LAST) /* Domain 8: BCK0_BASE */
- {
- return DOMAINID_BCK0;
- }
- else if (clkid <= CLKID_I2SRXBCK1_LAST) /* Domain 9: BCK1_BASE */
- {
- return DOMAINID_BCK1;
- }
- else if (clkid <= CLKID_SPI_LAST) /* Domain 10: SPI_BASE */
- {
- return DOMAINID_SPI;
- }
- else /* if (clkid <= CLKID_SYSCLKO_LAST) */ /* Domain 11: SYSCLKO_BASE */
- {
- return DOMAINID_SYSCLKO;
- }
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_clkexten.c b/nuttx/arch/arm/src/lpc313x/lpc313x_clkexten.c
deleted file mode 100755
index 20e42a83a..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_clkexten.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_exten.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_enableexten
- *
- * Description:
- * Enable external enabling for the the specified possible clocks.
- *
- ****************************************************************************/
-
-void lpc313x_enableexten(enum lpc313x_clockid_e clkid)
-{
- uint32_t regaddr;
- uint32_t regval;
-
- switch (clkid)
- {
- case CLKID_DMACLKGATED: /* 9 DMA_CLK_GATED */
- case CLKID_EVENTROUTERPCLK: /* 31 EVENT_ROUTER_PCLK */
- case CLKID_ADCPCLK: /* 32 ADC_PCLK */
- case CLKID_IOCONFPCLK: /* 35 IOCONF_PCLK */
- case CLKID_CGUPCLK: /* 36 CGU_PCLK */
- case CLKID_SYSCREGPCLK: /* 37 SYSCREG_PCLK */
- case CLKID_OTPPCLK: /* 38 OTP_PCLK (Reserved on LPC313X) */
- case CLKID_PWMPCLKREGS: /* 46 PWM_PCLK_REGS */
- case CLKID_PCMAPBPCLK: /* 52 PCM_APB_PCLK */
- case CLKID_SPIPCLKGATED: /* 57 SPI_PCLK_GATED */
- case CLKID_SPICLKGATED: /* 90 SPI_CLK_GATED */
- case CLKID_PCMCLKIP: /* 71 PCM_CLK_IP */
- regaddr = LPC313X_CGU_PCR(clkid);
- regval = getreg32(regaddr);
- regval |= CGU_PCR_EXTENEN;
- putreg32(regval, regaddr);
- break;
-
- /* Otherwise, force disable for the clocks. NOTE that a larger set will
- * be disabled than will be enabled.
- */
-
- default:
- lpc313x_disableexten(clkid);
- break;
- }
-}
-
-/****************************************************************************
- * Name: lpc313x_disableexten
- *
- * Description:
- * Disable external enabling for the the specified possible clocks.
- *
- ****************************************************************************/
-
-void lpc313x_disableexten(enum lpc313x_clockid_e clkid)
-{
- uint32_t regaddr;
- uint32_t regval;
-
- switch (clkid)
- {
- case CLKID_DMACLKGATED: /* 9 DMA_CLK_GATED */
- case CLKID_EVENTROUTERPCLK: /* 31 EVENT_ROUTER_PCLK */
- case CLKID_ADCPCLK: /* 32 ADC_PCLK */
- case CLKID_WDOGPCLK: /* 34 WDOG_PCLK */
- case CLKID_IOCONFPCLK: /* 35 IOCONF_PCLK */
- case CLKID_CGUPCLK: /* 36 CGU_PCLK */
- case CLKID_SYSCREGPCLK: /* 37 SYSCREG_PCLK */
- case CLKID_OTPPCLK: /* 38 OTP_PCLK (Reserved on LPC313X) */
- case CLKID_PWMPCLKREGS: /* 46 PWM_PCLK_REGS */
- case CLKID_I2C0PCLK: /* 48 I2C0_PCLK */
- case CLKID_I2C1PCLK: /* 49 I2C1_PCLK */
- case CLKID_PCMAPBPCLK: /* 52 PCM_APB_PCLK */
- case CLKID_UARTAPBCLK: /* 53 UART_APB_CLK */
- case CLKID_SPIPCLKGATED: /* 57 SPI_PCLK_GATED */
- case CLKID_SPICLKGATED: /* 90 SPI_CLK_GATED */
- case CLKID_PCMCLKIP: /* 71 PCM_CLK_IP */
- case CLKID_LCDPCLK: /* 54 LCD_PCLK */
- regaddr = LPC313X_CGU_PCR(clkid);
- regval = getreg32(regaddr);
- regval &= ~CGU_PCR_EXTENEN;
- putreg32(regval, regaddr);
- break;
-
- default:
- break;
- }
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_clkfreq.c b/nuttx/arch/arm/src/lpc313x/lpc313x_clkfreq.c
deleted file mode 100755
index b2cb0361f..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_clkfreq.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_clkfreq.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_fdcndx
- *
- * Description:
- * Given a clock ID and its domain ID, return the frequency of the
- * clock.
- *
- ************************************************************************/
-
-uint32_t lpc313x_clkfreq(enum lpc313x_clockid_e clkid,
- enum lpc313x_domainid_e dmnid)
-{
- uint32_t freq = 0;
- uint32_t fdcndx;
- uint32_t regval;
-
- /* Get then fractional divider register index for this clock */
-
- fdcndx = lpc313x_fdcndx(clkid, dmnid);
-
- /* Get base frequency for the domain */
-
- freq = lpc313x_getbasefreq(dmnid);
-
- /* If there is no fractional divider associated with the clodk, then the
- * connection is directo and we just return the base frequency.
- */
-
- if (fdcndx == FDCNDX_INVALID)
- {
- return freq;
- }
-
- /* Read fractional divider control (FDC) register value and double check that
- * it is enabled (not necessary since lpc313x_fdcndx() also does this check
- */
-
- regval = getreg32(LPC313X_CGU_FDC(fdcndx));
- if ((regval & CGU_ESR_ESREN) != 0)
- {
- int32_t msub;
- int32_t madd;
- int32_t n;
- int32_t m;
-
- /* Yes, extract modulo subtraction and addition values, msub and madd.
- * Fractional divider 17 is a special case because its msub and madd
- * fields have greater range.
- */
-
- if (fdcndx == 17)
- {
- /* Range is 0-0x1fff for both */
-
- msub = ((regval & CGU_FDC17_MSUB_MASK) >> CGU_FDC17_MSUB_SHIFT) | CGU_FDC17_MSUB_EXTEND;
- madd = (regval & CGU_FDC17_MADD_MASK) >> CGU_FDC17_MADD_SHIFT;
- }
- else
- {
- /* Range is 0-255 for both */
-
- msub = ((regval & CGU_FDC_MSUB_MASK) >> CGU_FDC_MSUB_SHIFT) | CGU_FDC_MSUB_EXTEND;
- madd = (regval & CGU_FDC_MADD_MASK) >> CGU_FDC_MADD_SHIFT;
- }
-
- /* Handle a corner case that would result in an infinite loop below */
-
- if (msub == 0 && madd == 0)
- {
- return 0;
- }
-
- /* Reduce to the greatest common power-of-2 denominator. To minimize
- * power consumption, the lpc313x user manual recommends that madd and msub
- * be shifted right to have as many trailing zero's as possible. The
- * following undoes that shift.
- */
-
- while ((msub & 1) == 0 && (madd & 1) == 0)
- {
- madd = madd >> 1;
- msub = msub >> 1;
- }
-
- /* Then compute n and m values:
- *
- * fout = n/m * fin
- *
- * where
- *
- * madd = m - n
- * msub = -n
- */
-
- n = -msub;
- m = madd + n;
-
- /* Check that both m and n are non-zero values */
-
- if ((n == 0) || (m == 0))
- {
- return 0;
- }
-
- /* Finally, calculate the frequency based on m and n values */
-
- freq = (freq * n) / m ;
- }
-
- return freq;
-}
-
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_clkinit.c b/nuttx/arch/arm/src/lpc313x/lpc313x_clkinit.c
deleted file mode 100755
index 81bf3fb0f..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_clkinit.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_clkinit.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgu.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************/
-
-/************************************************************************************
- * Private Types
- ************************************************************************************/
-
-/* This structure describes the configuration of one domain */
-
-struct lpc313x_domainconfig_s
-{
- enum lpc313x_domainid_e dmnid; /* Domain ID */
- uint32_t finsel; /* Frequency input selection */
- uint32_t clk1; /* ID of first clock in the domain */
- uint32_t nclks; /* Number of clocks in the domain */
- uint32_t fdiv1; /* First frequency divider in the domain */
- uint32_t nfdiv; /* Number of frequency dividers in the domain */
- const struct lpc313x_subdomainconfig_s* sub; /* Sub=domain array */
-};
-
-/************************************************************************************
- * Private Data
- ************************************************************************************/
-
-/************************************************************************************
- * Public Data
- ************************************************************************************/
-
-/************************************************************************************
- * Private Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: lpc313x_domaininit
- *
- * Description:
- * Initialize one clock domain based on board-specific clock configuration data
- *
- ************************************************************************************/
-
-static void lpc313x_domaininit(struct lpc313x_domainconfig_s* dmn)
-{
- const struct lpc313x_subdomainconfig_s * sub = dmn->sub;
- uint32_t fdivcfg;
- uint32_t regaddr;
- uint32_t regval;
- int fdndx;
- int clkndx;
- int bcrndx = lpc313x_bcrndx(dmn->dmnid);
- int esrndx;
-
- if (bcrndx != BCRNDX_INVALID)
- {
- /* Disable BCR for domain */
-
- regaddr = LPC313X_CGU_BCR(bcrndx);
- putreg32(0, regaddr);
- }
-
- /* Configure the fractional dividers in this domain */
-
- for (fdndx = 0; fdndx < dmn->nfdiv; fdndx++, sub++)
- {
- /* Set fractional divider confiruation but don't enable it yet */
-
- fdivcfg = lpc313x_fdivinit(fdndx + dmn->fdiv1, &sub->fdiv, false);
-
- /* Enable frac divider only if it has valid settings */
-
- if (fdivcfg != 0)
- {
- /* Select the fractional dividir for each clock in this
- * sub domain.
- */
-
- for (clkndx = 0; clkndx <= dmn->nclks; clkndx++)
- {
- /* Does this clock have an ESR register? */
-
- esrndx = lpc313x_esrndx((enum lpc313x_clockid_e)(clkndx + dmn->clk1));
- if (esrndx != ESRNDX_INVALID)
- {
- /* Yes.. Check if this clock belongs to this sub-domain */
-
- if (sub->clkset & (1 << clkndx))
- {
- /* Yes.. configure the clock to use this fractional divider */
-
- regaddr = LPC313X_CGU_ESR(esrndx);
- putreg32((fdndx << CGU_ESR_ESRSEL_SHIFT) | CGU_ESR_ESREN, regaddr);
- }
- }
- }
-
- /* Enable the fractional divider */
-
- regaddr = LPC313X_CGU_FDC(fdndx + dmn->fdiv1);
- regval = getreg32(regaddr);
- regval |= CGU_FDC_RUN;
- putreg32(regval, regaddr);
- }
- }
-
- if (bcrndx != BCRNDX_INVALID)
- {
- /* Enable the BCR for domain */
-
- regaddr = LPC313X_CGU_BCR(bcrndx);
- putreg32(CGU_BCR_FDRUN, regaddr);
- }
-
- /* Select input base clock for domain*/
-
- lpc313x_selectfreqin(dmn->dmnid, dmn->finsel);
-}
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: lpc313x_clkinit
- *
- * Description:
- * Initialize all clock domains based on board-specific clock configuration data
- *
- ************************************************************************************/
-
-void lpc313x_clkinit(const struct lpc313x_clkinit_s* cfg)
-{
- struct lpc313x_domainconfig_s domain;
-
- /* Reset all clocks and connect them to FFAST */
-
- lpc313x_resetclks();
-
- /* Initialize Domain0 = SYS_BASE clocks */
-
- domain.dmnid = DOMAINID_SYS;
- domain.finsel = cfg->domain0.finsel;
- domain.clk1 = CLKID_SYSBASE_FIRST;
- domain.nclks = (CLKID_SYSBASE_LAST - CLKID_SYSBASE_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE0_LOW;
- domain.nfdiv = FRACDIV_BASE0_CNT;
- domain.sub = cfg->domain0.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain1 = AHB0APB0_BASE clocks */
-
- domain.dmnid = DOMAINID_AHB0APB0;
- domain.finsel = cfg->domain1.finsel;
- domain.clk1 = CLKID_AHB0APB0_FIRST;
- domain.nclks = (CLKID_AHB0APB0_LAST - CLKID_AHB0APB0_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE1_LOW;
- domain.nfdiv = FRACDIV_BASE1_CNT;
- domain.sub = cfg->domain1.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain2 = AHB0APB1_BASE clocks */
-
- domain.dmnid = DOMAINID_AHB0APB1;
- domain.finsel = cfg->domain2.finsel;
- domain.clk1 = CLKID_AHB0APB1_FIRST;
- domain.nclks = (CLKID_AHB0APB1_LAST - CLKID_AHB0APB1_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE2_LOW;
- domain.nfdiv = FRACDIV_BASE2_CNT;
- domain.sub = cfg->domain2.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain3 = AHB0APB2_BASE clocks */
-
- domain.dmnid = DOMAINID_AHB0APB2;
- domain.finsel = cfg->domain3.finsel;
- domain.clk1 = CLKID_AHB0APB2_FIRST;
- domain.nclks = (CLKID_AHB0APB2_LAST - CLKID_AHB0APB2_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE3_LOW;
- domain.nfdiv = FRACDIV_BASE3_CNT;
- domain.sub = cfg->domain3.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain4 = AHB0APB3_BASE clocks */
-
- domain.dmnid = DOMAINID_AHB0APB3;
- domain.finsel = cfg->domain4.finsel;
- domain.clk1 = CLKID_AHB0APB3_FIRST;
- domain.nclks = (CLKID_AHB0APB3_LAST - CLKID_AHB0APB3_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE4_LOW;
- domain.nfdiv = FRACDIV_BASE4_CNT;
- domain.sub = cfg->domain4.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain5 = PCM_BASE clocks */
-
- domain.dmnid = DOMAINID_PCM;
- domain.finsel = cfg->domain5.finsel;
- domain.clk1 = CLKID_PCM_FIRST;
- domain.nclks = 1;
- domain.fdiv1 = FRACDIV_BASE5_LOW;
- domain.nfdiv = FRACDIV_BASE5_CNT;
- domain.sub = cfg->domain5.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain6 = UART_BASE clocks */
-
- domain.dmnid = DOMAINID_UART;
- domain.finsel = cfg->domain6.finsel;
- domain.clk1 = CLKID_UART_FIRST;
- domain.nclks = 1;
- domain.fdiv1 = FRACDIV_BASE6_LOW;
- domain.nfdiv = FRACDIV_BASE6_CNT;
- domain.sub = cfg->domain6.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain7 = CLK1024FS_BASE clocks */
-
- domain.dmnid = DOMAINID_CLK1024FS;
- domain.finsel = cfg->domain7.finsel;
- domain.clk1 = CLKID_CLK1024FS_FIRST;
- domain.nclks = (CLKID_CLK1024FS_LAST - CLKID_CLK1024FS_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE7_LOW;
- domain.nfdiv = FRACDIV_BASE7_CNT;
- domain.sub = cfg->domain7.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain8 = I2SRX_BCK0_BASE clocks */
-
- lpc313x_selectfreqin(DOMAINID_BCK0, cfg->domain8.finsel);
-
- /* Initialize Domain9 = I2SRX_BCK1_BASE clocks */
-
- lpc313x_selectfreqin(DOMAINID_BCK1, cfg->domain9.finsel);
-
- /* Initialize Domain10 = SPI_BASE clocks */
-
- domain.dmnid = DOMAINID_SPI;
- domain.finsel = cfg->domain10.finsel;
- domain.clk1 = CLKID_SPI_FIRST;
- domain.nclks = (CLKID_SPI_LAST - CLKID_SPI_FIRST) + 1;
- domain.fdiv1 = FRACDIV_BASE10_LOW;
- domain.nfdiv = FRACDIV_BASE10_CNT;
- domain.sub = cfg->domain10.sub;
- lpc313x_domaininit(&domain);
-
- /* Initialize Domain11 = SYSCLK_O_BASE clocks */
-
- lpc313x_selectfreqin(DOMAINID_SYSCLKO, cfg->domain11.finsel);
-
- /* Initialize Dynamic fractional dividers -- to be provided */
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_decodeirq.c b/nuttx/arch/arm/src/lpc313x/lpc313x_decodeirq.c
deleted file mode 100755
index 119e65c50..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_decodeirq.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/********************************************************************************
- * arch/arm/src/lpc313x/lpc313x_decodeirq.c
- * arch/arm/src/chip/lpc313x_decodeirq.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ********************************************************************************/
-
-/********************************************************************************
- * Included Files
- ********************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <assert.h>
-#include <debug.h>
-
-#include "chip.h"
-#include "up_arch.h"
-
-#include "os_internal.h"
-#include "up_internal.h"
-
-#include "lpc313x_intc.h"
-
-/********************************************************************************
- * Pre-processor Definitions
- ********************************************************************************/
-
-/********************************************************************************
- * Public Data
- ********************************************************************************/
-
-/********************************************************************************
- * Private Data
- ********************************************************************************/
-
-/********************************************************************************
- * Private Functions
- ********************************************************************************/
-
-/********************************************************************************
- * Public Functions
- ********************************************************************************/
-
-void up_decodeirq(uint32_t *regs)
-{
-#ifdef CONFIG_SUPPRESS_INTERRUPTS
- lib_lowprintf("Unexpected IRQ\n");
- current_regs = regs;
- PANIC(OSERR_ERREXCEPTION);
-#else
- int index;
- int irq;
-
- /* Read the IRQ vector status register. Bits 3-10 provide the IRQ number
- * of the interrupt (the TABLE_ADDR was initialized to zero, so the
- * following masking should be unnecessary)
- */
-
- index = getreg32(LPC313X_INTC_VECTOR0) & INTC_VECTOR_INDEX_MASK;
- if (index != 0)
- {
- /* Shift the index so that the range of IRQ numbers are in bits 0-7 (values
- * 1-127) and back off the IRQ number by 1 so that the numbering is zero-based
- */
-
- irq = (index >> INTC_VECTOR_INDEX_SHIFT) -1;
-
- /* Verify that the resulting IRQ number is valid */
-
- if ((unsigned)irq < NR_IRQS)
- {
- uint32_t* savestate;
-
- /* Mask and acknowledge the interrupt */
-
- up_maskack_irq(irq);
-
- /* Current regs non-zero indicates that we are processing an interrupt;
- * current_regs is also used to manage interrupt level context switches.
- */
-
- savestate = (uint32_t*)current_regs;
- current_regs = regs;
-
- /* Deliver the IRQ */
-
- irq_dispatch(irq, regs);
-
- /* Restore the previous value of current_regs. NULL would indicate that
- * we are no longer in an interrupt handler. It will be non-NULL if we
- * are returning from a nested interrupt.
- */
-
- current_regs = savestate;
-
- /* Unmask the last interrupt (global interrupts are still
- * disabled).
- */
-
- up_enable_irq(irq);
- }
- }
-#endif
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_defclk.c b/nuttx/arch/arm/src/lpc313x/lpc313x_defclk.c
deleted file mode 100755
index bdef026b5..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_defclk.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_defclk.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_defclk
- *
- * Description:
- * Enable the specified clock if it is one of the default clocks needed
- * by the board.
- *
- ****************************************************************************/
-
-bool lpc313x_defclk(enum lpc313x_clockid_e clkid)
-{
-
- uint32_t regaddr;
- uint32_t regval;
- bool enable;
-
- /* Check if this clock should be enabled. This is determined by
- * 3 bitsets provided by board-specific logic in board/board.h.
- */
-
- if ((int)clkid < 32)
- {
- enable = ((BOARD_CLKS_0_31 & (1 << (int)clkid)) != 0);
- }
- else if ((int)clkid < 64)
- {
- enable = ((BOARD_CLKS_32_63 & (1 << ((int)clkid - 32))) != 0);
- }
- else
- {
- enable = ((BOARD_CLKS_64_92 & (1 << ((int)clkid - 64))) != 0);
- }
-
- /* Then set/clear the RUN bit in the PCR register for this clock
- * accordingly.
- */
-
- regaddr = LPC313X_CGU_PCR((int)clkid);
- regval = getreg32(regaddr);
- if (enable)
- {
- regval |= CGU_PCR_RUN;
- }
- else
- {
- regval &= ~CGU_PCR_RUN;
- }
- putreg32(regval, regaddr);
- return enable;
-}
-
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_dma.h b/nuttx/arch/arm/src/lpc313x/lpc313x_dma.h
deleted file mode 100755
index a36edeffe..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_dma.h
+++ /dev/null
@@ -1,423 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_dma.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_DMA_H
-#define __ARCH_ARM_SRC_LPC313X_DMA_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* DMA register base address offset into the APB4 domain ****************************************/
-
-#define LPC313X_DMA_VBASE (LPC313X_APB4_VADDR+LPC313X_APB4_DMA_OFFSET)
-#define LPC313X_DMA_PBASE (LPC313X_APB4_PADDR+LPC313X_APB4_DMA_OFFSET)
-
-/* DMA channel offsets (with respect to the DMA register base address) **************************/
-
-#define LPC313X_DMACHAN_OFFSET(n) ((n)*0x020)
-#define LPC313X_DMACHAN0_OFFSET 0x000
-#define LPC313X_DMACHAN1_OFFSET 0x020
-#define LPC313X_DMACHAN2_OFFSET 0x040
-#define LPC313X_DMACHAN3_OFFSET 0x060
-#define LPC313X_DMACHAN4_OFFSET 0x080
-#define LPC313X_DMACHAN5_OFFSET 0x0a0
-#define LPC313X_DMACHAN6_OFFSET 0x0c0
-#define LPC313X_DMACHAN7_OFFSET 0x0e0
-#define LPC313X_DMACHAN8_OFFSET 0x100
-#define LPC313X_DMACHAN9_OFFSET 0x120
-#define LPC313X_DMACHAN10_OFFSET 0x140
-#define LPC313X_DMACHAN11_OFFSET 0x160
-
-#define LPC313X_DMACHAN_ALT_OFFSET(n) (0x200+((n)*0x020))
-#define LPC313X_DMACHAN0_ALT_OFFSET 0x200
-#define LPC313X_DMACHAN1_ALT_OFFSET 0x220
-#define LPC313X_DMACHAN2_ALT_OFFSET 0x240
-#define LPC313X_DMACHAN3_ALT_OFFSET 0x260
-#define LPC313X_DMACHAN4_ALT_OFFSET 0x280
-#define LPC313X_DMACHAN5_ALT_OFFSET 0x2a0
-#define LPC313X_DMACHAN6_ALT_OFFSET 0x2c0
-#define LPC313X_DMACHAN7_ALT_OFFSET 0x2e0
-#define LPC313X_DMACHAN8_ALT_OFFSET 0x300
-#define LPC313X_DMACHAN9_ALT_OFFSET 0x320
-#define LPC313X_DMACHAN10_ALT_OFFSET 0x340
-#define LPC313X_DMACHAN11_ALT_OFFSET 0x360
-
-/* DMA channel virtual base addresses ***********************************************************/
-
-#define LPC313X_DMACHAN_VBASE(n) (LPC313X_DMA_VBASE+LPC313X_DMACHAN_OFFSET(n))
-#define LPC313X_DMACHAN0_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN0_OFFSET)
-#define LPC313X_DMACHAN1_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN1_OFFSET)
-#define LPC313X_DMACHAN2_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN2_OFFSET)
-#define LPC313X_DMACHAN3_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN3_OFFSET)
-#define LPC313X_DMACHAN4_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN4_OFFSET)
-#define LPC313X_DMACHAN5_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN5_OFFSET)
-#define LPC313X_DMACHAN6_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN6_OFFSET)
-#define LPC313X_DMACHAN7_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN7_OFFSET)
-#define LPC313X_DMACHAN8_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN8_OFFSET)
-#define LPC313X_DMACHAN9_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN9_OFFSET)
-#define LPC313X_DMACHAN10_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN10_OFFSET)
-#define LPC313X_DMACHAN11_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN11_OFFSET)
-
-#define LPC313X_DMACHAN_ALT_VBASE(n) (LPC313X_DMA_VBASE+LPC313X_DMACHAN_ALT_OFFSET(n))
-#define LPC313X_DMACHAN0_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN0_ALT_OFFSET)
-#define LPC313X_DMACHAN1_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN1_ALT_OFFSET)
-#define LPC313X_DMACHAN2_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN2_ALT_OFFSET)
-#define LPC313X_DMACHAN3_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN3_ALT_OFFSET)
-#define LPC313X_DMACHAN4_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN4_ALT_OFFSET)
-#define LPC313X_DMACHAN5_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN5_ALT_OFFSET)
-#define LPC313X_DMACHAN6_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN6_ALT_OFFSET)
-#define LPC313X_DMACHAN7_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN7_ALT_OFFSET)
-#define LPC313X_DMACHAN8_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN8_ALT_OFFSET)
-#define LPC313X_DMACHAN9_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN9_ALT_OFFSET)
-#define LPC313X_DMACHAN10_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN10_ALT_OFFSET)
-#define LPC313X_DMACHAN11_VBASE (LPC313X_DMA_VBASE+LPC313X_DMACHAN11_ALT_OFFSET)
-
-/* DMA channel register offsets (with respect to the DMA channel register base) *****************/
-
-#define LPC313X_DMACHAN_SRCADDR_OFFSET 0x000 /* Source address register of DMA channel */
-#define LPC313X_DMACHAN_DESTADDR_OFFSET 0X004 /* Destination address register of DMA channel */
-#define LPC313X_DMACHAN_XFERLEN_OFFSET 0X008 /* Transfer length register for DMA channel */
-#define LPC313X_DMACHAN_CONFIG_OFFSET 0x00c /* Configuration register for DMA channel */
-#define LPC313X_DMACHAN_ENABLE_OFFSET 0x010 /* Enable register for DMA channel */
-#define LPC313X_DMACHAN_XFERCOUNT_OFFSET 0x01c /* Transfer counter register for DMA channel */
-
-/* DMA global register offsets (with respect to the DMA register base) *************************/
-
-#define LPC313X_DMA_ALTENABLE_OFFSET 0x400 /* Alternative enable register */
-#define LPC313X_DMA_IRQSTATUSCLR_OFFSET 0x404 /* IRQ status clear register */
-#define LPC313X_DMA_IRQMASK_OFFSET 0x408 /* IRQ mask register */
-#define LPC313X_DMA_TESTSTATUS_OFFSET 0x40c /* Test FIFO response status register */
-#define LPC313X_DMA_SOFTINT_OFFSET 0x410 /* Software interrupt register */
-
-/* DMA channel register (virtual) addresses *****************************************************/
-
-#define LPC313X_DMACHAN_SRCADDR(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN_DESTADDR(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN_XFERLEN(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN_CONFIG(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN_ENABLE(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN_XFERCOUNT(n) (LPC313X_DMACHAN_VBASE(n)+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN0_SRCADDR (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN0_DESTADDR (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN0_XFERLEN (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN0_CONFIG (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN0_ENABLE (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN0_XFERCOUNT (LPC313X_DMACHAN0_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN1_SRCADDR (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN1_DESTADDR (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN1_XFERLEN (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN1_CONFIG (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN1_ENABLE (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN1_XFERCOUNT (LPC313X_DMACHAN1_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN2_SRCADDR (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN2_DESTADDR (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN2_XFERLEN (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN2_CONFIG (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN2_ENABLE (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN2_XFERCOUNT (LPC313X_DMACHAN2_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN3_SRCADDR (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN3_DESTADDR (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN3_XFERLEN (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN3_CONFIG (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN3_ENABLE (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN3_XFERCOUNT (LPC313X_DMACHAN3_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN4_SRCADDR (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN4_DESTADDR (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN4_XFERLEN (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN4_CONFIG (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN4_ENABLE (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN4_XFERCOUNT (LPC313X_DMACHAN4_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN5_SRCADDR (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN5_DESTADDR (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN5_XFERLEN (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN5_CONFIG (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN5_ENABLE (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN5_XFERCOUNT (LPC313X_DMACHAN5_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN6_SRCADDR (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN6_DESTADDR (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN6_XFERLEN (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN6_CONFIG (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN6_ENABLE (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN6_XFERCOUNT (LPC313X_DMACHAN6_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN7_SRCADDR (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN7_DESTADDR (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN7_XFERLEN (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN7_CONFIG (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN7_ENABLE (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN7_XFERCOUNT (LPC313X_DMACHAN7_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)7
-
-#define LPC313X_DMACHAN8_SRCADDR (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN8_DESTADDR (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN8_XFERLEN (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN8_CONFIG (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN8_ENABLE (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN8_XFERCOUNT (LPC313X_DMACHAN8_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN9_SRCADDR (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN9_DESTADDR (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN9_XFERLEN (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN9_CONFIG (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN9_ENABLE (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN9_XFERCOUNT (LPC313X_DMACHAN9_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN10_SRCADDR (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN10_DESTADDR (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN10_XFERLEN (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN10_CONFIG (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN10_ENABLE (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN10_XFERCOUNT (LPC313X_DMACHAN10_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN11_SRCADDR (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN11_DESTADDR (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN11_XFERLEN (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN11_CONFIG (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-#define LPC313X_DMACHAN11_ENABLE (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_ENABLE_OFFSET)
-#define LPC313X_DMACHAN11_XFERCOUNT (LPC313X_DMACHAN11_VBASE+LPC313X_DMACHAN_XFERCOUNT_OFFSET)
-
-#define LPC313X_DMACHAN_ALT_SRCADDR(n) (LPC313X_DMACHAN_ALT_VBASE(n)+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN_ALT_DESTADDR(n) (LPC313X_DMACHAN_ALT_VBASE(n)+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN_ALT_XFERLEN(n) (LPC313X_DMACHAN_ALT_VBASE(n)+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN_ALT_CONFIG(n) (LPC313X_DMACHAN_ALT_VBASE(n)+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN0_ALT_SRCADDR (LPC313X_DMACHAN0_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN0_ALT_DESTADDR (LPC313X_DMACHAN0_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN0_ALT_XFERLEN (LPC313X_DMACHAN0_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN0_ALT_CONFIG (LPC313X_DMACHAN0_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN1_ALT_SRCADDR (LPC313X_DMACHAN1_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN1_ALT_DESTADDR (LPC313X_DMACHAN1_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN1_ALT_XFERLEN (LPC313X_DMACHAN1_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN1_ALT_CONFIG (LPC313X_DMACHAN1_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN2_ALT_SRCADDR (LPC313X_DMACHAN2_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN2_ALT_DESTADDR (LPC313X_DMACHAN2_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN2_ALT_XFERLEN (LPC313X_DMACHAN2_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN2_ALT_CONFIG (LPC313X_DMACHAN2_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN3_ALT_SRCADDR (LPC313X_DMACHAN3_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN3_ALT_DESTADDR (LPC313X_DMACHAN3_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN3_ALT_XFERLEN (LPC313X_DMACHAN3_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN3_ALT_CONFIG (LPC313X_DMACHAN3_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN4_ALT_SRCADDR (LPC313X_DMACHAN4_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN4_ALT_DESTADDR (LPC313X_DMACHAN4_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN4_ALT_XFERLEN (LPC313X_DMACHAN4_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN4_ALT_CONFIG (LPC313X_DMACHAN4_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN5_ALT_SRCADDR (LPC313X_DMACHAN5_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN5_ALT_DESTADDR (LPC313X_DMACHAN5_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN5_ALT_XFERLEN (LPC313X_DMACHAN5_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN5_ALT_CONFIG (LPC313X_DMACHAN5_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN6_ALT_SRCADDR (LPC313X_DMACHAN6_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN6_ALT_DESTADDR (LPC313X_DMACHAN6_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN6_ALT_XFERLEN (LPC313X_DMACHAN6_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN6_ALT_CONFIG (LPC313X_DMACHAN6_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN7_ALT_SRCADDR (LPC313X_DMACHAN7_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN7_ALT_DESTADDR (LPC313X_DMACHAN7_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN7_ALT_XFERLEN (LPC313X_DMACHAN7_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN7_ALT_CONFIG (LPC313X_DMACHAN7_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN8_ALT_SRCADDR (LPC313X_DMACHAN8_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN8_ALT_DESTADDR (LPC313X_DMACHAN8_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN8_ALT_XFERLEN (LPC313X_DMACHAN8_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN8_ALT_CONFIG (LPC313X_DMACHAN8_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN9_ALT_SRCADDR (LPC313X_DMACHAN9_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN9_ALT_DESTADDR (LPC313X_DMACHAN9_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN9_ALT_XFERLEN (LPC313X_DMACHAN9_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN9_ALT_CONFIG (LPC313X_DMACHAN9_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN10_ALT_SRCADDR (LPC313X_DMACHAN10_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN10_ALT_DESTADDR (LPC313X_DMACHAN10_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN10_ALT_XFERLEN (LPC313X_DMACHAN10_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN10_ALT_CONFIG (LPC313X_DMACHAN10_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-#define LPC313X_DMACHAN11_ALT_SRCADDR (LPC313X_DMACHAN11_ALT_VBASE+LPC313X_DMACHAN_SRCADDR_OFFSET)
-#define LPC313X_DMACHAN11_ALT_DESTADDR (LPC313X_DMACHAN11_ALT_VBASE+LPC313X_DMACHAN_DESTADDR_OFFSET)
-#define LPC313X_DMACHAN11_ALT_XFERLEN (LPC313X_DMACHAN11_ALT_VBASE+LPC313X_DMACHAN_XFERLEN_OFFSET)
-#define LPC313X_DMACHAN11_ALT_CONFIG (LPC313X_DMACHAN11_ALT_VBASE+LPC313X_DMACHAN_CONFIG_OFFSET)
-
-/* DMA global register (virtual) addresses ******************************************************/
-
-#define LPC313X_DMA_ALTENABLE (LPC313X_DMA_VBASE+LPC313X_DMA_ALTENABLE_OFFSET)
-#define LPC313X_DMA_IRQSTATUSCLR (LPC313X_DMA_VBASE+LPC313X_DMA_IRQSTATUSCLR_OFFSET)
-#define LPC313X_DMA_IRQMASK (LPC313X_DMA_VBASE+LPC313X_DMA_IRQMASK_OFFSET)
-#define LPC313X_DMA_TESTSTATUS (LPC313X_DMA_VBASE+LPC313X_DMA_TESTSTATUS_OFFSET)
-#define LPC313X_DMA_SOFTINT (LPC313X_DMA_VBASE+LPC313X_DMA_SOFTINT_OFFSET)
-
-/* DMA channel register bit definitions *********************************************************/
-
-/* TRANSFER_LENGTH (addresses 0x17000008 (channel 0) to 0x17000168 (channel 11)) */
-
-#define DMACHAN_XFRLEN_SHIFT (0) /* Bits 0-20: Transfer length */
-#define DMACHAN_XFRLEN_MASK (0x001fffff << DMACHAN_XFRLEN_SHIFT)
-
-/* CONFIGURATION (addresses 0x1700000c (channel 0) to 0x1700016c (channel 11)) */
-
-#define DMACHAN_CONFIG_CIRC (1 << 18) /* Bit 18: Enable circular buffer */
-#define DMACHAN_CONFIG_COMPCHENABLE (1 << 17) /* Bit 17: Enable companion channel */
-#define DMACHAN_CONFIG_COMPCHNR_SHIFT (13) /* Bits 13-15: Companion channel number */
-#define DMACHAN_CONFIG_COMPCHNR_MASK (7 << DMACHAN_CONFIG_COMPCHNR_SHIFT)
-#define DMACHAN_CONFIG_INVENDIAN (1 << 12) /* Bit 12: Invert endian-ness */
-#define DMACHAN_CONFIG_XFERSIZE_SHIFT (10) /* Bits 10-11: Transfer size */
-#define DMACHAN_CONFIG_XFERSIZE_MASK (3 << DMACHAN_CONFIG_XFERSIZE_SHIFT)
-# define DMACHAN_CONFIG_XFERSIZE_WORDS (0 << DMACHAN_CONFIG_XFERSIZE_SHIFT) /* Transfer words */
-# define DMACHAN_CONFIG_XFERSIZE_HWORDS (1 << DMACHAN_CONFIG_XFERSIZE_SHIFT) /* Transfer half-words */
-# define DMACHAN_CONFIG_XFERSIZE_BYTES (2 << DMACHAN_CONFIG_XFERSIZE_SHIFT) /* Transfer bytes */
-# define DMACHAN_CONFIG_XFERSIZE_BURSTS (3 << DMACHAN_CONFIG_XFERSIZE_SHIFT) /* Transfer bursts */
-#define DMACHAN_CONFIG_RDSLAVENR_SHIFT (5) /* Bits 5-9: Read slave enable */
-#define DMACHAN_CONFIG_RDSLAVENR_MASK (31 << DMACHAN_CONFIG_RDSLAVENR_SHIFT)
-#define DMACHAN_CONFIG_WRSLAVENR_SHIFT (0) /* Bits 0-4: Write slave enable */
-#define DMACHAN_CONFIG_WRSLAVENR_MASK (31 << DMACHAN_CONFIG_WRSLAVENR_SHIFT)
-
-/* ENABLE (addresses 0x17000010 (channel 0) to 0x17000170 (channel 11)) */
-
-#define DMACHAN_ENABLE_BIT (1 << 0) /* Bit 0: Enable */
-
-/* TRANSFER_COUNTER (addresses 0x1700001v (channel 0) to 0x1700017c (channel 11)) */
-
-#define DMACHAN_XFRCOUNT_SHIFT (0) /* Bits 0-20: Transfer count */
-#define DMACHAN_XFRCOUNT_MASK (0x001fffff << DMACHAN_XFRCOUNT_SHIFT)
-
-/* DMA global register bit definitions **********************************************************/
-
-/* ALT_ENABLE (address 0x17000400) */
-
-#define DMA_ALTENABLE_CHAN11 (1 << 11) /* Bit 11: Enable channel 11 */
-#define DMA_ALTENABLE_CHAN10 (1 << 10) /* Bit 10: Enable channel 10 */
-#define DMA_ALTENABLE_CHAN9 (1 << 9) /* Bit 9: Enable channel 9 */
-#define DMA_ALTENABLE_CHAN8 (1 << 8) /* Bit 8: Enable channel 8 */
-#define DMA_ALTENABLE_CHAN7 (1 << 7) /* Bit 7: Enable channel 7 */
-#define DMA_ALTENABLE_CHAN6 (1 << 6) /* Bit 6: Enable channel 6 */
-#define DMA_ALTENABLE_CHAN5 (1 << 5) /* Bit 5: Enable channel 5 */
-#define DMA_ALTENABLE_CHAN4 (1 << 4) /* Bit 4: Enable channel 4 */
-#define DMA_ALTENABLE_CHAN3 (1 << 3) /* Bit 3: Enable channel 3 */
-#define DMA_ALTENABLE_CHAN2 (1 << 2) /* Bit 2: Enable channel 2 */
-#define DMA_ALTENABLE_CHAN1 (1 << 1) /* Bit 1: Enable channel 1 */
-#define DMA_ALTENABLE_CHAN0 (1 << 0) /* Bit 0: Enable channel 0 */
-
-/* IRQ_STATUS_CLR (address 0x17000404) */
-
-#define DMA_IRQSTATUSCLR_DMAABORT (1 << 31) /* Bit 31: DMA abort */
-#define DMA_IRQSTATUSCLR_SOFTINT (1 << 30) /* Bit 30: Soft interrupt, scatter gather */
-#define DMA_IRQSTATUSCLR_HALFWAY11 (1 << 23) /* Bit 23: Chan 11 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED11 (1 << 22) /* Bit 22: Chan 11 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY10 (1 << 21) /* Bit 21: Chan 10 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED10 (1 << 20) /* Bit 20: Chan 10 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY9 (1 << 19) /* Bit 19: Chan 9 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED9 (1 << 18) /* Bit 18: Chan 9 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY8 (1 << 17) /* Bit 17: Chan 8 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED8 (1 << 16) /* Bit 16: Chan 8 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY7 (1 << 15) /* Bit 15: Chan 7 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED7 (1 << 14) /* Bit 14: Chan 7 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY6 (1 << 13) /* Bit 13: Chan 6 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED6 (1 << 12) /* Bit 12: Chan 6 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY5 (1 << 11) /* Bit 11: Chan 5 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED5 (1 << 10) /* Bit 10: Chan 5 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY4 (1 << 9) /* Bit 9: Chan 4 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED4 (1 << 8) /* Bit 8: Chan 4 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY3 (1 << 7) /* Bit 7: Chan 3 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED3 (1 << 6) /* Bit 6: Chan 3 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY2 (1 << 5) /* Bit 5: Chan 2 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED2 (1 << 4) /* Bit 4: Chan 2 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY1 (1 << 3) /* Bit 3: Chan 1 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED1 (1 << 2) /* Bit 2: Chan 1 finished */
-#define DMA_IRQSTATUSCLR_HALFWAY0 (1 << 1) /* Bit 1: Chan 0 more than half finished */
-#define DMA_IRQSTATUSCLR_FINISHED0 (1 << 0) /* Bit 0: Chan 0 finished */
-
-/* IRQ_MASK (address 0x17000404) */
-
-#define DMA_IRQMASK_DMAABORT (1 << 31) /* Bit 31: DMA abort */
-#define DMA_IRQMASK_SOFTINT (1 << 30) /* Bit 30: Soft interrupt, scatter gather */
-#define DMA_IRQMASK_HALFWAY11 (1 << 23) /* Bit 23: Chan 11 more than half finished */
-#define DMA_IRQMASK_FINISHED11 (1 << 22) /* Bit 22: Chan 11 finished */
-#define DMA_IRQMASK_HALFWAY10 (1 << 21) /* Bit 21: Chan 10 more than half finished */
-#define DMA_IRQMASK_FINISHED10 (1 << 20) /* Bit 20: Chan 10 finished */
-#define DMA_IRQMASK_HALFWAY9 (1 << 19) /* Bit 19: Chan 9 more than half finished */
-#define DMA_IRQMASK_FINISHED9 (1 << 18) /* Bit 18: Chan 9 finished */
-#define DMA_IRQMASK_HALFWAY8 (1 << 17) /* Bit 17: Chan 8 more than half finished */
-#define DMA_IRQMASK_FINISHED8 (1 << 16) /* Bit 16: Chan 8 finished */
-#define DMA_IRQMASK_HALFWAY7 (1 << 15) /* Bit 15: Chan 7 more than half finished */
-#define DMA_IRQMASK_FINISHED7 (1 << 14) /* Bit 14: Chan 7 finished */
-#define DMA_IRQMASK_HALFWAY6 (1 << 13) /* Bit 13: Chan 6 more than half finished */
-#define DMA_IRQMASK_FINISHED6 (1 << 12) /* Bit 12: Chan 6 finished */
-#define DMA_IRQMASK_HALFWAY5 (1 << 11) /* Bit 11: Chan 5 more than half finished */
-#define DMA_IRQMASK_FINISHED5 (1 << 10) /* Bit 10: Chan 5 finished */
-#define DMA_IRQMASK_HALFWAY4 (1 << 9) /* Bit 9: Chan 4 more than half finished */
-#define DMA_IRQMASK_FINISHED4 (1 << 8) /* Bit 8: Chan 4 finished */
-#define DMA_IRQMASK_HALFWAY3 (1 << 7) /* Bit 7: Chan 3 more than half finished */
-#define DMA_IRQMASK_FINISHED3 (1 << 6) /* Bit 6: Chan 3 finished */
-#define DMA_IRQMASK_HALFWAY2 (1 << 5) /* Bit 5: Chan 2 more than half finished */
-#define DMA_IRQMASK_FINISHED2 (1 << 4) /* Bit 4: Chan 2 finished */
-#define DMA_IRQMASK_HALFWAY1 (1 << 3) /* Bit 3: Chan 1 more than half finished */
-#define DMA_IRQMASK_FINISHED1 (1 << 2) /* Bit 2: Chan 1 finished */
-#define DMA_IRQMASK_HALFWAY0 (1 << 1) /* Bit 1: Chan 0 more than half finished */
-#define DMA_IRQMASK_FINISHED0 (1 << 0) /* Bit 0: Chan 0 finished */
-
-/* SOFT_INT (address 0x1700040c) */
-
-#define DMA_SOFTINT_ENABLE (1 << 0) /* Bit 0: Enable soft interrupt */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_DMA_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_esrndx.c b/nuttx/arch/arm/src/lpc313x/lpc313x_esrndx.c
deleted file mode 100755
index 3fa300cfe..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_esrndx.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_esrndx.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_esrndx
- *
- * Description:
- * Given a clock ID, return the index of the corresponding ESR
- * register (or ESRNDX_INVALID if there is no ESR associated with
- * this clock ID). Indexing of ESRs differs slightly from the clock
- * ID: There are 92 clock IDs but only 89 ESR regisers. There are no
- * ESR registers for :
- *
- *
- * CLKID_I2SRXBCK0 Clock ID 87: I2SRX_BCK0
- * CLKID_I2SRXBCK1, Clock ID 88: I2SRX_BCK1
- *
- * and
- *
- * CLKID_SYSCLKO Clock ID 91: SYSCLK_O
- *
- ************************************************************************/
-
-int lpc313x_esrndx(enum lpc313x_clockid_e clkid)
-{
- int esrndx = (int)clkid;
-
- /* There ar 89 Enable Select Registers (ESR). Indexing for these
- * registers is identical to indexing to other registers (like PCR),
- * except that there are no ESR registers for
- *
- *
- * CLKID_I2SRXBCK0 Clock ID 87: I2SRX_BCK0
- * CLKID_I2SRXBCK1, Clock ID 88: I2SRX_BCK1
- *
- * and
- *
- * CLKID_SYSCLKO Clock ID 91: SYSCLK_O
- */
-
- switch (clkid)
- {
- /* There are no ESR registers corresponding to the following
- * three clocks:
- */
-
- case CLKID_I2SRXBCK0:
- case CLKID_I2SRXBCK1:
- case CLKID_SYSCLKO:
- esrndx = ESRNDX_INVALID;
- break;
-
- /* These clock IDs are a special case and need to be adjusted
- * by two:
- *
- * CLKID_SPICLK Clock ID 89, ESR index 87
- * CLKID_SPICLKGATED Clock ID 90, ESR index 88
- */
-
- case CLKID_SPICLK:
- case CLKID_SPICLKGATED:
- esrndx = esrndx - 2;
- break;
-
- /* The rest of the indices match up and we don't have to do anything. */
-
- default:
- break;
- }
-
- return esrndx;
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_evntrtr.h b/nuttx/arch/arm/src/lpc313x/lpc313x_evntrtr.h
deleted file mode 100755
index bf2162dbc..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_evntrtr.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/********************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_evntrtr.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ********************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_EVNTRTR_H
-#define __ARCH_ARM_SRC_LPC313X_EVNTRTR_H
-
-/********************************************************************************************************
- * Included Files
- ********************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/********************************************************************************************************
- * Pre-processor Definitions
- ********************************************************************************************************/
-
-/* EVNTRTR register base address offset into the APB0 domain ********************************************/
-
-#define LPC313X_EVNTRTR_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_EVNTRTR_OFFSET)
-#define LPC313X_EVNTRTR_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_EVNTRTR_OFFSET)
-
-/* Sizes of things */
-
-#define LPC313X_EVNTRTR_NBANKS 4 /* Banks b=0-3 */
-#define LPC313X_EVNTRTR_NOUTPUTS 5 /* Outputs o=0-4 (incl CGU Wakeup) */
-#define LPC313X_EVNTRTR_NEVENTS (32*LPC313X_EVNTRTR_NBANKS)
-
-#define _B(b) ((b)<<2) /* Maps bank number 0-3 to word offset */
-#define _O(o) ((o)<<5) /* Maps output to bank group offset */
-#define _OB(o,b) (_O(o)+_B(b)) /* Mqpw output and bank to word offset */
-
-#define EVNTRTR_EVENT(bank,bit) ((bank)<<5|bit) /* Makes a event number from a bank and bit */
-#define EVNTRTR_BANK(e) ((e)>>5) /* Maps a event to a bank */
-#define EVNTRTR_BIT(e) ((e)&0x1f) /* Maps a event to a bit */
-
-/* EVNTRTR register offsets (with respect to the EVNTRTR base) ******************************************/
-
- /* 0x0000-0x0bff: Reserved */
-#define LPC313X_EVNTRTR_PEND_OFFSET(b) (0x0c00+_B(b)) /* Input event pending */
-#define LPC313X_EVNTRTR_INTCLR_OFFSET(b) (0x0c20+_B(b)) /* Input event clear */
-#define LPC313X_EVNTRTR_INTSET_OFFSET(b) (0x0c40+_B(b)) /* Input event set */
-#define LPC313X_EVNTRTR_MASK_OFFSET(b) (0x0c60+_B(b)) /* Input event mask */
-#define LPC313X_EVNTRTR_MASKCLR_OFFSET(b) (0x0c80+_B(b)) /* Input event mask clear */
-#define LPC313X_EVNTRTR_MASKSET_OFFSET(b) (0x0ca0+_B(b)) /* Input event mask set */
-#define LPC313X_EVNTRTR_APR_OFFSET(b) (0x0cc0+_B(b)) /* Input event activation polarity */
-#define LPC313X_EVNTRTR_ATR_OFFSET(b) (0x0ce0+_B(b)) /* Input event activation type */
-#define LPC313X_EVNTRTR_RSR_OFFSET(b) (0x0d20+_B(b)) /* Input event raw status */
-#define LPC313X_EVNTRTR_INTOUT_OFFSET 0x0d40 /* State of interrupt output pins */
- /* 0x0e00-0x0ffc: Reserved */
-#define LPC313X_EVNTRTR_INTOUTPEND_OFFSET(o,b) (0x1000+_OB(o,b)) /* Interrupt output 'o' pending */
-#define LPC313X_EVNTRTR_CGUWKUPPEND_OFFSET(b) (0x1000+_OB(4,b)) /* cgu_wakeup pending */
-#define LPC313X_EVNTRTR_INTOUTMASK_OFFSET(o,b) (0x1400+_OB(o,b)) /* Interrupt output 'o' mask */
-#define LPC313X_EVNTRTR_CGUWKUPMASK_OFFSET(b) (0x1400+_OB(4,b)) /* cgu_wakeup mask */
-#define LPC313X_EVNTRTR_INTOUTMASKCLR_OFFSET(o,b) (0x1800+_OB(o,b)) /* Interrupt output 'o' mask clear */
-#define LPC313X_EVNTRTR_CGUWKUPMASKCLR_OFFSET(b) (0x1800+_OB(4,b)) /* cgu_wakeup mask clear */
-#define LPC313X_EVNTRTR_INTOUTMASKSET_OFFSET(o,b) (0x1c00+_OB(o,b)) /* Interrupt output 'o' mask set */
-#define LPC313X_EVNTRTR_CGUWKUPMASKSET_OFFSET(b) (0x1c00+_OB(4,b)) /* cgu_wakeup mask set */
-
-/* EVNTRTR register (virtual) addresses *********************************************************************/
-
-#define LPC313X_EVNTRTR_PEND(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_PEND_OFFSET(b))
-#define LPC313X_EVNTRTR_INTCLR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTCLR_OFFSET(b))
-#define LPC313X_EVNTRTR_INTSET(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTSET_OFFSET(b))
-#define LPC313X_EVNTRTR_MASK(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_MASK_OFFSET(b))
-#define LPC313X_EVNTRTR_MASKCLR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_MASKCLR_OFFSET(b))
-#define LPC313X_EVNTRTR_MASKSET(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_MASKSET_OFFSET(b))
-#define LPC313X_EVNTRTR_APR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_APR_OFFSET(b))
-#define LPC313X_EVNTRTR_ATR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_ATR_OFFSET(b))
-#define LPC313X_EVNTRTR_RSR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_RSR_OFFSET(b))
-#define LPC313X_EVNTRTR_INTOUT (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTOUT_OFFSET)
-#define LPC313X_EVNTRTR_INTOUTPEND(o,b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTOUTPEND_OFFSET(o,b))
-#define LPC313X_EVNTRTR_CGUWKUPPEND(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_CGUWKUPPEND_OFFSET(b))
-#define LPC313X_EVNTRTR_INTOUTMASK(o,b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTOUTMASK_OFFSET(o,b))
-#define LPC313X_EVNTRTR_CGUWKUPMASK(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_CGUWKUPMASK_OFFSET(b))
-#define LPC313X_EVNTRTR_INTOUTMASKCLR(o,b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTOUTMASKCLR_OFFSET(o,b))
-#define LPC313X_EVNTRTR_CGUWKUPMASKCLR(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_CGUWKUPMASKCLR_OFFSET(b))
-#define LPC313X_EVNTRTR_INTOUTMASKSET(o,b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_INTOUTMASKSET_OFFSET(o,b))
-#define LPC313X_EVNTRTR_CGUWKUPMASKSET(b) (LPC313X_EVNTRTR_VBASE+LPC313X_EVNTRTR_CGUWKUPMASKSET_OFFSET(b)
-
-/* EVNTRTR event definitions ********************************************************************************/
-/* Bank 0 */
-
-#define EVENTRTR_EBID6 EVNTRTR_EVENT(0,31) /* Input event from GPIO pin */
-#define EVENTRTR_EBID5 EVNTRTR_EVENT(0,30) /* Input event from GPIO pin */
-#define EVENTRTR_EBID4 EVNTRTR_EVENT(0,29) /* Input event from GPIO pin */
-#define EVENTRTR_EBID3 EVNTRTR_EVENT(0,28) /* Input event from GPIO pin */
-#define EVENTRTR_EBID2 EVNTRTR_EVENT(0,27) /* Input event from GPIO pin */
-#define EVENTRTR_EBID1 EVNTRTR_EVENT(0,26) /* Input event from GPIO pin */
-#define EVENTRTR_EBID0 EVNTRTR_EVENT(0,25) /* Input event from GPIO pin */
-#define EVENTRTR_MNANDRYBN3 EVNTRTR_EVENT(0,24) /* Input event from GPIO pin */
-#define EVENTRTR_MNANDRYBN2 EVNTRTR_EVENT(0,23) /* Input event from GPIO pin */
-#define EVENTRTR_MNANDRYBN1 EVNTRTR_EVENT(0,22) /* Input event from GPIO pin */
-#define EVENTRTR_MNANDRYBN0 EVNTRTR_EVENT(0,21) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDRWWR EVNTRTR_EVENT(0,20) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDERD EVNTRTR_EVENT(0,19) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDCSB EVNTRTR_EVENT(0,18) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDRS EVNTRTR_EVENT(0,17) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB15 EVNTRTR_EVENT(0,16) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB14 EVNTRTR_EVENT(0,15) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB13 EVNTRTR_EVENT(0,14) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB12 EVNTRTR_EVENT(0,13) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB11 EVNTRTR_EVENT(0,12) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB10 EVNTRTR_EVENT(0,11) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB9 EVNTRTR_EVENT(0,10) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB8 EVNTRTR_EVENT(0,9) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB7 EVNTRTR_EVENT(0,8) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB6 EVNTRTR_EVENT(0,7) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB5 EVNTRTR_EVENT(0,6) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB4 EVNTRTR_EVENT(0,5) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB3 EVNTRTR_EVENT(0,4) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB2 EVNTRTR_EVENT(0,3) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB1 EVNTRTR_EVENT(0,2) /* Input event from GPIO pin */
-#define EVENTRTR_MLCDDB0 EVNTRTR_EVENT(0,1) /* Input event from GPIO pin */
-#define EVENTRTR_PCMINT EVNTRTR_EVENT(0,0) /* Input event from PCM */
-
-/* Bank 1 */
-
-#define EVENTRTR_GPIO16 EVNTRTR_EVENT(1,31) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO15 EVNTRTR_EVENT(1,30) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO14 EVNTRTR_EVENT(1,29) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO13 EVNTRTR_EVENT(1,28) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO12 EVNTRTR_EVENT(1,27) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO11 EVNTRTR_EVENT(1,26) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO10 EVNTRTR_EVENT(1,25) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO9 EVNTRTR_EVENT(1,24) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO8 EVNTRTR_EVENT(1,23) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO7 EVNTRTR_EVENT(1,22) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO6 EVNTRTR_EVENT(1,21) /* Input event from GPIO pin */
-#define EVENTRTR_MGPIO5 EVNTRTR_EVENT(1,20) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO4 EVNTRTR_EVENT(1,19) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO3 EVNTRTR_EVENT(1,18) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO2 EVNTRTR_EVENT(1,17) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO1 EVNTRTR_EVENT(1,16) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO0 EVNTRTR_EVENT(1,15) /* Input event from GPIO pin */
-#define EVENTRTR_EBINRASBLOUT1 EVNTRTR_EVENT(1,14) /* Input event from GPIO pin */
-#define EVENTRTR_EBINCASBLOUT0 EVNTRTR_EVENT(1,13) /* Input event from GPIO pin */
-#define EVENTRTR_EBIDQM0NOE EVNTRTR_EVENT(1,12) /* Input event from GPIO pin */
-#define EVENTRTR_EBIA1CLE EVNTRTR_EVENT(1,11) /* Input event from GPIO pin */
-#define EVENTRTR_EBIA0ALE EVNTRTR_EVENT(1,10) /* Input event from GPIO pin */
-#define EVENTRTR_EBINWE EVNTRTR_EVENT(1,9) /* Input event from GPIO pin */
-#define EVENTRTR_EBID15 EVNTRTR_EVENT(1,8) /* Input event from GPIO pin */
-#define EVENTRTR_EBID14 EVNTRTR_EVENT(1,7) /* Input event from GPIO pin */
-#define EVENTRTR_EBID13 EVNTRTR_EVENT(1,6) /* Input event from GPIO pin */
-#define EVENTRTR_EBID12 EVNTRTR_EVENT(1,5) /* Input event from GPIO pin */
-#define EVENTRTR_EBID11 EVNTRTR_EVENT(1,4) /* Input event from GPIO pin */
-#define EVENTRTR_EBID10 EVNTRTR_EVENT(1,3) /* Input event from GPIO pin */
-#define EVENTRTR_EBID9 EVNTRTR_EVENT(1,2) /* Input event from GPIO pin */
-#define EVENTRTR_EBID8 EVNTRTR_EVENT(1,1) /* Input event from GPIO pin */
-#define EVENTRTR_EBID7 EVNTRTR_EVENT(1,0) /* Input event from GPIO pin */
-
-/* Bank 2 */
-
-#define EVENTRTR_PWMDATA EVNTRTR_EVENT(2,31) /* Input event from GPIO pin */
-#define EVENTRTR_I2CSCL1 EVNTRTR_EVENT(2,30) /* Input event from GPIO pin */
-#define EVENTRTR_I2CSDA1 EVNTRTR_EVENT(2,29) /* Input event from GPIO pin */
-#define EVENTRTR_CLK256FSO EVNTRTR_EVENT(2,28) /* Input event from GPIO pin */
-#define EVENTRTR_I2STXWS1 EVNTRTR_EVENT(2,27) /* Input event from GPIO pin */
-#define EVENTRTR_I2STXBCK1 EVNTRTR_EVENT(2,26) /* Input event from GPIO pin */
-#define EVENTRTR_I2STXDATA1 EVNTRTR_EVENT(2,25) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXWS1 EVNTRTR_EVENT(2,24) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXBCK1 EVNTRTR_EVENT(2,23) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXDATA1 EVNTRTR_EVENT(2,22) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXWS0 EVNTRTR_EVENT(2,21) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXDATA0 EVNTRTR_EVENT(2,20) /* Input event from GPIO pin */
-#define EVENTRTR_I2SRXBCK0 EVNTRTR_EVENT(2,19) /* Input event from GPIO pin */
-#define EVENTRTR_MI2STXWS0 EVNTRTR_EVENT(2,18) /* Input event from GPIO pin */
-#define EVENTRTR_MI2STXDATA0 EVNTRTR_EVENT(2,17) /* Input event from GPIO pin */
-#define EVENTRTR_MI2STXBCK0 EVNTRTR_EVENT(2,16) /* Input event from GPIO pin */
-#define EVENTRTR_MI2STXCLK0 EVNTRTR_EVENT(2,15) /* Input event from GPIO pin */
-#define EVENTRTR_MUARTRTSN EVNTRTR_EVENT(2,14) /* Input event from GPIO pin */
-#define EVENTRTR_MUARTCTSN EVNTRTR_EVENT(2,13) /* Input event from GPIO pin */
-#define EVENTRTR_UARTTXD EVNTRTR_EVENT(2,12) /* Input event from GPIO pin */
-#define EVENTRTR_UARTRXD EVNTRTR_EVENT(2,11) /* Input event from GPIO pin */
-#define EVENTRTR_SPICSOUT0 EVNTRTR_EVENT(2,10) /* Input event from GPIO pin */
-#define EVENTRTR_SPISCK EVNTRTR_EVENT(2,9) /* Input event from GPIO pin */
-#define EVENTRTR_SPICSIN EVNTRTR_EVENT(2,8) /* Input event from GPIO pin */
-#define EVENTRTR_SPIMOSI EVNTRTR_EVENT(2,7) /* Input event from GPIO pin */
-#define EVENTRTR_SPIMISO EVNTRTR_EVENT(2,6) /* Input event from GPIO pin */
-#define EVENTRTR_NANDNCS3 EVNTRTR_EVENT(2,5) /* Input event from GPIO pin */
-#define EVENTRTR_NANDNCS2 EVNTRTR_EVENT(2,4) /* Input event from GPIO pin */
-#define EVENTRTR_NANDNCS1 EVNTRTR_EVENT(2,3) /* Input event from GPIO pin */
-#define EVENTRTR_NANDNCS0 EVNTRTR_EVENT(2,2) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO18 EVNTRTR_EVENT(2,1) /* Input event from GPIO pin */
-#define EVENTRTR_GPIO17 EVNTRTR_EVENT(2,0) /* Input event from GPIO pin */
-
-/* Bank 3 */
- /* 30-31: Reserved */
-#define EVENTRTR_ISRAM1MRCFINISHED EVNTRTR_EVENT(3,29) /* ISRAM1 redundancy controller event */
-#define EVENTRTR_ISRAM0MRCFINISHED EVNTRTR_EVENT(3,28) /* ISRAM0 redundancy controller event */
-#define EVENTRTR_USBID EVNTRTR_EVENT(3,27) /* Input event from GPIO pin */
-#define EVENTRTR_USBOTGVBUSPWREN EVNTRTR_EVENT(3,26) /* Input event from USB */
-#define EVENTRTR_USBATXPLLLOCK EVNTRTR_EVENT(3,25) /* USB PLL lock event */
-#define EVENTRTR_USBOTGAHBNEEDCLK EVNTRTR_EVENT(3,24) /* Input event from USB */
-#define EVENTRTR_USBVBUS EVNTRTR_EVENT(3,23) /* Input event from USB VBUS pin */
-#define EVENTRTR_MCICLK EVNTRTR_EVENT(3,22) /* Input event from GPIO pin */
-#define EVENTRTR_MCICMD EVNTRTR_EVENT(3,21) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT7 EVNTRTR_EVENT(3,20) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT6 EVNTRTR_EVENT(3,19) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT5 EVNTRTR_EVENT(3,18) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT4 EVNTRTR_EVENT(3,17) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT3 EVNTRTR_EVENT(3,16) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT2 EVNTRTR_EVENT(3,15) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT1 EVNTRTR_EVENT(3,14) /* Input event from GPIO pin */
-#define EVENTRTR_MCIDAT0 EVNTRTR_EVENT(3,13) /* Input event from GPIO pin */
-#define EVENTRTR_ARM926LPNIRQ EVNTRTR_EVENT(3,12) /* Reflects nIRQ signal to ARM core */
-#define EVENTRTR_ARM926LPNFIQ EVNTRTR_EVENT(3,11) /* Reflects nFIQ signal to ARM core */
-#define EVENTRTR_I2C1SCLN EVNTRTR_EVENT(3,10) /* Input event from I2C1 */
-#define EVENTRTR_I2C0SCLN EVNTRTR_EVENT(3,9) /* Input event from I2C0 */
-#define EVENTRTR_UART EVNTRTR_EVENT(3,8) /* Input event from UART */
-#define EVENTRTR_WDOGM0 EVNTRTR_EVENT(3,7) /* Input event from Watchdog Timer */
-#define EVENTRTR_ADCINT EVNTRTR_EVENT(3,6) /* Input event from ADC */
-#define EVENTRTR_TIMER3INTCT1 EVNTRTR_EVENT(3,5) /* Input event from Timer 3 */
-#define EVENTRTR_TIMER2INTCT1 EVNTRTR_EVENT(3,4) /* Input event from Timer 2 */
-#define EVENTRTR_TIMER1INTCT1 EVNTRTR_EVENT(3,3) /* Input event from Timer 1 */
-#define EVENTRTR_TIMER0INTCT1 EVNTRTR_EVENT(3,2) /* Input event from Timer 0 */
-#define EVENTRTR_GPIO20 EVNTRTR_EVENT(3,1) /* Input event from GPIO20 */
-#define EVENTRTR_GPIO19 EVNTRTR_EVENT(3,0) /* Input event from GPIO19 */
-
-/********************************************************************************************************
- * Public Types
- ********************************************************************************************************/
-
-/********************************************************************************************************
- * Public Data
- ********************************************************************************************************/
-
-/********************************************************************************************************
- * Public Functions
- ********************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_EVNTRTR_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_fdcndx.c b/nuttx/arch/arm/src/lpc313x/lpc313x_fdcndx.c
deleted file mode 100755
index bd8824a0c..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_fdcndx.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_fdcndx.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/* The select register in the ESR registers vary in width from 1-3 bits.
- * Below is a macro to select the widest case (which is OK because the
- * undefined bits will be read as zero). Within the field, bits 0-7 to
- * indicate the offset from the base FDC index.
- */
-
-#define CGU_ESRSEL(n) (((n)>>1)&7)
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-static const uint8_t g_fdcbase[CGU_NDOMAINS] =
-{
- FRACDIV_BASE0_LOW, /* Domain 0: SYS_BASE */
- FRACDIV_BASE1_LOW, /* Domain 1: AHB0APB0_BASE */
- FRACDIV_BASE2_LOW, /* Domain 2: AHB0APB1_BASE */
- FRACDIV_BASE3_LOW, /* Domain 3: AHB0APB2_BASE */
- FRACDIV_BASE4_LOW, /* Domain 4: AHB0APB3_BASE */
- FRACDIV_BASE5_LOW, /* Domain 5: PCM_BASE */
- FRACDIV_BASE6_LOW, /* Domain 6: UART_BASE */
- FRACDIV_BASE7_LOW, /* Domain 7: CLK1024FS_BASE */
- 0, /* Domain 8: BCK0_BASE (no ESR register) */
- 0, /* Domain 9: BCK1_BASE (no ESR register) */
- FRACDIV_BASE10_LOW, /* Domain 10: SPI_BASE */
- 0, /* Domain 11: SYSCLKO_BASE (no ESR register) */
-};
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_fdcndx
- *
- * Description:
- * Given a clock ID and its domain ID, return the index of the
- * corresponding fractional divider register (or FDCNDX_INVALID if
- * there is no fractional divider associated with this clock).
- *
- ************************************************************************/
-
-int lpc313x_fdcndx(enum lpc313x_clockid_e clkid, enum lpc313x_domainid_e dmnid)
-{
- int esrndx;
- int fdcndx = FDCNDX_INVALID;
-
- /* Check if there is an ESR register associate with this clock ID */
-
- esrndx = lpc313x_esrndx(clkid);
- if (esrndx != ESRNDX_INVALID)
- {
- /* Read the clock's ESR to get the fractional divider */
-
- uint32_t regval = getreg32(LPC313X_CGU_ESR(esrndx));
-
- /* Check if any fractional divider is enabled for this clock. */
-
- if ((regval & CGU_ESR_ESREN) != 0)
- {
- /* Yes.. The FDC index is an offset from this fractional
- * divider base for this domain.
- */
-
- fdcndx = CGU_ESRSEL(regval) + (int)g_fdcbase[dmnid];
- }
- }
- return fdcndx;
-}
-
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_fdivinit.c b/nuttx/arch/arm/src/lpc313x/lpc313x_fdivinit.c
deleted file mode 100755
index 3d90bcba6..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_fdivinit.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_fdivinit.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgu.h"
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_bitwidth
- *
- * Description:
- * Find the bit width of a msub or madd value. This will be use to
- * extend the msub or madd values. To minimize power consumption, the
- * lpc313x user manual recommends that madd and msub be shifted right
- * to have as many trailing zero's as possible. This function detmines
- * the pre-shifted with of one of the msub or madd values.
- *
- * EXAMPLE:
- *
- * Say an input frequency of 13 MHz is given while a frequency of 12
- * MHz is required. In this case we want a frequency
- *
- * f’ = 12/13 × f
- *
- * So n = 12 and m = 13. This then gives
- *
- * madd = m - n = 13 - 12 = 1
- * msub = -n = -12
- *
- * In order to minimize power consumption madd and msub must be as
- * large as possible. The limit of their values is determined by the
- * madd/msub bit width. In this case msub is the largest value,
- * in order to express -12, five bits are required. However since msub is
- * always negative the fractional divider does not need the sign bit, leaving
- * 4 bits. If madd/msub bit width has been set to say 8 bits, it is allowed
- * to shift 4 bits, giving:
- *
- * msub’ = -(12<<4)= -12 × 24 = -12 × 16 = -192
- * madd’ = 1<<4 = 24 = 16
- *
- ****************************************************************************/
-
-static inline unsigned int
-lpc313x_bitwidth(unsigned int value, unsigned int fdwid)
-{
- unsigned int width = 0;
- int bit;
-
- /* Examine bits from the most significant down */
-
- for (bit = fdwid-1; bit >= 0; bit--)
- {
- /* Is this bit set? If so, then the width of the value is 0 to bit,
- * or bit+1.
- */
-
- if ((value & (1 << bit)) != 0)
- {
- width = bit + 1;
- break;
- }
- }
- return width;
-}
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-/****************************************************************************
- * Name: lpc313x_fdivinit
- *
- * Description:
- * Enable and configure (or disable) a fractional divider.
- *
- ****************************************************************************/
-
-uint32_t lpc313x_fdivinit(int fdcndx,
- const struct lpc313x_fdivconfig_s *fdiv, bool enable)
-{
- uint32_t regaddr;
- uint32_t regval;
- unsigned int fdshift;
- unsigned int fdwid;
- unsigned int fdmask;
- unsigned int maddshift;
- unsigned int msubshift;
- int madd;
- int msub;
-
- /* Calculating the (unshifted) divider values.To minimize power
- * consumption, the lpc313x user manual recommends that madd and msub
- * be shifted right to have as many trailing zero's as possible.
- */
-
- madd = fdiv->m - fdiv->n;
- msub = -fdiv->n;
-
- /* Determine the width of the madd and msub fields in the fractional divider
- * register. They are all 8-bits in width except for fractional divider 17.
- */
-
- fdwid = CGU_FDC_FIELDWIDTH;
- maddshift = CGU_FDC_MADD_SHIFT;
- msubshift = CGU_FDC_MSUB_SHIFT;
-
- if (fdcndx == 17)
- {
- /* For fractional divider 17, the msub/madd field width is 13 */
-
- fdwid = CGU_FDC17_FIELDWIDTH;
- maddshift = CGU_FDC17_MADD_SHIFT;
- msubshift = CGU_FDC17_MSUB_SHIFT;
- }
-
- /* Find maximum bit width of madd & msub. Here we calculate the width of the OR
- * of the two values. The width of the OR will be the width of the wider value
- */
-
- fdshift = fdwid - lpc313x_bitwidth((unsigned int)madd | (unsigned int)fdiv->n, fdwid);
-
- /* Calculate the fractional divider register values */
-
- fdmask = (1 << fdwid) - 1;
- madd = (madd << fdshift) & fdmask;
- msub = (msub << fdshift) & fdmask;
- regval = (madd << maddshift) | (msub << msubshift);
-
- /* Check if 50% duty cycle is needed for this divider */
-
- if (fdiv->stretch)
- {
- regval |= CGU_FDC_STRETCH;
- }
-
- /* Check if we should enable the divider immediately */
-
- if (enable)
- {
- regval |= CGU_FDC_RUN;
- }
-
- /* Finally configure the divider */
-
- regaddr = LPC313X_CGU_FDC(fdcndx);
- putreg32(regval, regaddr);
- return regval;
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_freqin.c b/nuttx/arch/arm/src/lpc313x/lpc313x_freqin.c
deleted file mode 100755
index deec49911..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_freqin.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_freqin.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/* This array provides the programmed frequency of every input source. The
- * board FFAST input crystal frequency is the only value known initially.
- * Additional frequencies will be added to the table as they are determined
- */
-
-uint32_t g_boardfreqin[CGU_NFREQIN] =
-{
- BOARD_FREQIN_FFAST, /* Index=CGU_FREQIN_FFAST */
- 0, /* Index=CGU_FREQIN_I2SRXBCK0 */
- 0, /* Index=CGU_FREQIN_I2SRXWS0 */
- 0, /* Index=CGU_FREQIN_I2SRXBCK1 */
- 0, /* Index=CGU_FREQIN_I2SRXWS1 */
- 0, /* Index=CGU_FREQIN_HPPLL0 (Audio/I2S PLL) */
- 0 /* Index=CGU_FREQIN_HPPLL1 (System PLL) */
-};
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.c b/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.c
deleted file mode 100644
index 3477b9e53..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/*******************************************************************************
- * arch/arm/src/lpc313x/lpc313x_i2c.c
- *
- * Author: David Hewson
- *
- * Copyright (C) 2010-2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- *******************************************************************************/
-
-/*******************************************************************************
- * Included Files
- *******************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/i2c.h>
-
-#include <arch/irq.h>
-#include <arch/board/board.h>
-
-#include "wdog.h"
-#include "chip.h"
-#include "up_arch.h"
-#include "up_internal.h"
-
-#include "lpc313x_i2c.h"
-#include "lpc313x_evntrtr.h"
-#include "lpc313x_syscreg.h"
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-#define I2C_TIMEOUT ((20 * CLK_TCK) / 1000) /* 20 mS */
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-struct lpc313x_i2cdev_s
-{
- struct i2c_dev_s dev; /* Generic I2C device */
- struct i2c_msg_s msg; /* a single message for legacy read/write */
- unsigned int base; /* Base address of registers */
- uint16_t clkid; /* Clock for this device */
- uint16_t rstid; /* Reset for this device */
- uint16_t irqid; /* IRQ for this device */
-
- sem_t mutex; /* Only one thread can access at a time */
-
- sem_t wait; /* Place to wait for state machine completion */
- volatile uint8_t state; /* State of state machine */
- WDOG_ID timeout; /* watchdog to timeout when bus hung */
-
- struct i2c_msg_s *msgs; /* remaining transfers - first one is in progress */
- unsigned int nmsg; /* number of transfer remaining */
-
- uint16_t header[3]; /* I2C address header */
- uint16_t hdrcnt; /* number of bytes of header */
- uint16_t wrcnt; /* number of bytes sent to tx fifo */
- uint16_t rdcnt; /* number of bytes read from rx fifo */
-};
-
-#define I2C_STATE_DONE 0
-#define I2C_STATE_START 1
-#define I2C_STATE_HEADER 2
-#define I2C_STATE_TRANSFER 3
-
-static struct lpc313x_i2cdev_s i2cdevices[2];
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-static int i2c_interrupt (int irq, FAR void *context);
-static void i2c_progress (struct lpc313x_i2cdev_s *priv);
-static void i2c_timeout (int argc, uint32_t arg, ...);
-static void i2c_reset (struct lpc313x_i2cdev_s *priv);
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * I2C device operations
- ****************************************************************************/
-
-static uint32_t i2c_setfrequency(FAR struct i2c_dev_s *dev, uint32_t frequency);
-static int i2c_setaddress(FAR struct i2c_dev_s *dev, int addr, int nbits);
-static int i2c_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen);
-static int i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen);
-static int i2c_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count);
-
-struct i2c_ops_s lpc313x_i2c_ops = {
- .setfrequency = i2c_setfrequency,
- .setaddress = i2c_setaddress,
- .write = i2c_write,
- .read = i2c_read,
-#ifdef CONFIG_I2C_TRANSFER
- .transfer = i2c_transfer
-#endif
-};
-
-/*******************************************************************************
- * Name: up_i2cinitialize
- *
- * Description:
- * Initialise an I2C device
- *
- *******************************************************************************/
-
-struct i2c_dev_s *up_i2cinitialize(int port)
-{
- struct lpc313x_i2cdev_s *priv = &i2cdevices[port];
-
- priv->base = (port == 0) ? LPC313X_I2C0_VBASE : LPC313X_I2C1_VBASE;
- priv->clkid = (port == 0) ? CLKID_I2C0PCLK : CLKID_I2C1PCLK;
- priv->rstid = (port == 0) ? RESETID_I2C0RST : RESETID_I2C1RST;
- priv->irqid = (port == 0) ? LPC313X_IRQ_I2C0 : LPC313X_IRQ_I2C1;
-
- sem_init (&priv->mutex, 0, 1);
- sem_init (&priv->wait, 0, 0);
-
- /* Enable I2C system clocks */
-
- lpc313x_enableclock (priv->clkid);
-
- /* Reset I2C blocks */
-
- lpc313x_softreset (priv->rstid);
-
- /* Soft reset the device */
-
- i2c_reset (priv);
-
- /* Allocate a watchdog timer */
- priv->timeout = wd_create();
-
- DEBUGASSERT(priv->timeout != 0);
-
- /* Attach Interrupt Handler */
- irq_attach (priv->irqid, i2c_interrupt);
-
- /* Enable Interrupt Handler */
- up_enable_irq(priv->irqid);
-
- /* Install our operations */
- priv->dev.ops = &lpc313x_i2c_ops;
-
- return &priv->dev;
-}
-
-/*******************************************************************************
- * Name: up_i2cuninitalize
- *
- * Description:
- * Uninitialise an I2C device
- *
- *******************************************************************************/
-
-void up_i2cuninitalize (struct lpc313x_i2cdev_s *priv)
-{
- /* Disable All Interrupts, soft reset the device */
-
- i2c_reset (priv);
-
- /* Detach Interrupt Handler */
-
- irq_detach (priv->irqid);
-
- /* Reset I2C blocks */
-
- lpc313x_softreset (priv->rstid);
-
- /* Disable I2C system clocks */
-
- lpc313x_disableclock (priv->clkid);
-}
-
-/*******************************************************************************
- * Name: lpc313x_i2c_setfrequency
- *
- * Description:
- * Set the frequence for the next transfer
- *
- *******************************************************************************/
-
-static uint32_t i2c_setfrequency(FAR struct i2c_dev_s *dev, uint32_t frequency)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) dev;
-
- uint32_t freq = lpc313x_clkfreq (priv->clkid, DOMAINID_AHB0APB1);
-
- if (freq > 100000)
- {
- /* asymetric per 400Khz I2C spec */
- putreg32 (((47 * freq) / (83 + 47)) / frequency, priv->base + LPC313X_I2C_CLKHI_OFFSET);
- putreg32 (((83 * freq) / (83 + 47)) / frequency, priv->base + LPC313X_I2C_CLKLO_OFFSET);
- }
- else
- {
- /* 50/50 mark space ratio */
- putreg32 (((50 * freq) / 100) / frequency, priv->base + LPC313X_I2C_CLKLO_OFFSET);
- putreg32 (((50 * freq) / 100) / frequency, priv->base + LPC313X_I2C_CLKHI_OFFSET);
- }
-
- /* FIXME: This function should return the actual selected frequency */
- return frequency;
-}
-
-/*******************************************************************************
- * Name: lpc313x_i2c_setaddress
- *
- * Description:
- * Set the I2C slave address for a subsequent read/write
- *
- *******************************************************************************/
-static int i2c_setaddress(FAR struct i2c_dev_s *dev, int addr, int nbits)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) dev;
-
- DEBUGASSERT(dev != NULL);
- DEBUGASSERT(nbits == 7 || nbits == 10);
-
- priv->msg.addr = addr;
- priv->msg.flags = (nbits == 7) ? 0 : I2C_M_TEN;
-
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_i2c_write
- *
- * Description:
- * Send a block of data on I2C using the previously selected I2C
- * frequency and slave address.
- *
- *******************************************************************************/
-static int i2c_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) dev;
- int ret;
-
- DEBUGASSERT (dev != NULL);
-
- priv->msg.flags &= ~I2C_M_READ;
- priv->msg.buffer = (uint8_t*)buffer;
- priv->msg.length = buflen;
-
- ret = i2c_transfer (dev, &priv->msg, 1);
-
- return ret == 1 ? OK : -ETIMEDOUT;
-}
-
-/*******************************************************************************
- * Name: lpc313x_i2c_read
- *
- * Description:
- * Receive a block of data on I2C using the previously selected I2C
- * frequency and slave address.
- *
- *******************************************************************************/
-static int i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) dev;
- int ret;
-
- DEBUGASSERT (dev != NULL);
-
- priv->msg.flags |= I2C_M_READ;
- priv->msg.buffer = buffer;
- priv->msg.length = buflen;
-
- ret = i2c_transfer (dev, &priv->msg, 1);
-
- return ret == 1 ? OK : -ETIMEDOUT;
-}
-
-/*******************************************************************************
- * Name: i2c_transfer
- *
- * Description:
- * Perform a sequence of I2C transfers
- *
- *******************************************************************************/
-
-static int i2c_transfer (FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) dev;
- irqstate_t flags;
- int ret;
-
- sem_wait (&priv->mutex);
- flags = irqsave();
-
- priv->state = I2C_STATE_START;
- priv->msgs = msgs;
- priv->nmsg = count;
-
- i2c_progress (priv);
-
- /* start a watchdog to timeout the transfer if
- * the bus is locked up... */
- wd_start (priv->timeout, I2C_TIMEOUT, i2c_timeout, 1, (uint32_t)priv);
-
- while (priv->state != I2C_STATE_DONE)
- {
- sem_wait (&priv->wait);
- }
-
- wd_cancel (priv->timeout);
-
- ret = count - priv->nmsg;
-
- irqrestore (flags);
- sem_post (&priv->mutex);
-
- return ret;
-}
-
-/*******************************************************************************
- * Name: i2c_interrupt
- *
- * Description:
- * The I2C Interrupt Handler
- *
- *******************************************************************************/
-
-static int i2c_interrupt (int irq, FAR void *context)
-{
- if (irq == LPC313X_IRQ_I2C0)
- {
- i2c_progress (&i2cdevices[0]);
- }
-
- if (irq == LPC313X_IRQ_I2C1)
- {
- i2c_progress (&i2cdevices[1]);
- }
-
- return OK;
-}
-
-/*******************************************************************************
- * Name: i2c_progress
- *
- * Description:
- * Progress any remaining I2C transfers
- *
- *******************************************************************************/
-
-static void i2c_progress (struct lpc313x_i2cdev_s *priv)
-{
- struct i2c_msg_s *msg;
- uint32_t stat, ctrl;
-
- stat = getreg32 (priv->base + LPC313X_I2C_STAT_OFFSET);
-
- /* Were there arbitration problems? */
- if ((stat & I2C_STAT_AFI) != 0)
- {
- /* Perform a soft reset */
- i2c_reset (priv);
-
- /* FIXME: automatic retry? */
-
- priv->state = I2C_STATE_DONE;
- sem_post (&priv->wait);
- return;
- }
-
- while (priv->nmsg > 0)
- {
- ctrl = I2C_CTRL_NAIE | I2C_CTRL_AFIE | I2C_CTRL_TDIE;
- msg = priv->msgs;
-
- switch (priv->state)
- {
- case I2C_STATE_START:
- if ((msg->flags & I2C_M_TEN) != 0)
- {
- priv->header[0] = I2C_TX_START | 0xF0 | ((msg->addr & 0x300) >> 7);
- priv->header[1] = msg->addr & 0xFF;
- priv->hdrcnt = 2;
- if (msg->flags & I2C_M_READ)
- {
- priv->header[2] = priv->header[0] | 1;
- priv->hdrcnt++;
- }
- }
- else
- {
- priv->header[0] = I2C_TX_START | (msg->addr << 1) | (msg->flags & I2C_M_READ);
- priv->hdrcnt = 1;
- }
-
- putreg32 (ctrl, priv->base + LPC313X_I2C_CTRL_OFFSET);
-
- priv->state = I2C_STATE_HEADER;
- priv->wrcnt = 0;
- /* DROP THROUGH */
-
- case I2C_STATE_HEADER:
- while ((priv->wrcnt != priv->hdrcnt) && (stat & I2C_STAT_TFF) == 0)
- {
- putreg32(priv->header[priv->wrcnt], priv->base + LPC313X_I2C_TX_OFFSET);
- priv->wrcnt++;
-
- stat = getreg32 (priv->base + LPC313X_I2C_STAT_OFFSET);
- }
-
- if (priv->wrcnt < priv->hdrcnt)
- {
- /* Enable Tx FIFO Not Full Interrupt */
- putreg32 (ctrl | I2C_CTRL_TFFIE, priv->base + LPC313X_I2C_CTRL_OFFSET);
- goto out;
- }
-
- priv->state = I2C_STATE_TRANSFER;
- priv->wrcnt = 0;
- priv->rdcnt = 0;
- /* DROP THROUGH */
-
- case I2C_STATE_TRANSFER:
- if (msg->flags & I2C_M_READ)
- {
- while ((priv->rdcnt != msg->length) && (stat & I2C_STAT_RFE) == 0)
- {
- msg->buffer[priv->rdcnt] = getreg32 (priv->base + LPC313X_I2C_RX_OFFSET);
- priv->rdcnt++;
-
- stat = getreg32 (priv->base + LPC313X_I2C_STAT_OFFSET);
- }
-
- if (priv->rdcnt < msg->length)
- {
- /* Not all data received, fill the Tx FIFO with more dummies */
- while ((priv->wrcnt != msg->length) && (stat & I2C_STAT_TFF) == 0)
- {
- if ((priv->wrcnt + 1) == msg->length && priv->nmsg == 1)
- putreg32 (I2C_TX_STOP, priv->base + LPC313X_I2C_TX_OFFSET);
- else
- putreg32 (0, priv->base + LPC313X_I2C_TX_OFFSET);
- priv->wrcnt++;
-
- stat = getreg32 (priv->base + LPC313X_I2C_STAT_OFFSET);
- }
-
- if (priv->wrcnt < msg->length)
- {
- /* Enable Tx FIFO not full and Rx Fifo Avail Interrupts */
- putreg32 (ctrl | I2C_CTRL_TFFIE | I2C_CTRL_RFDAIE, priv->base + LPC313X_I2C_CTRL_OFFSET);
- }
- else
- {
- /* Enable Rx Fifo Avail Interrupts */
- putreg32 (ctrl | I2C_CTRL_RFDAIE, priv->base + LPC313X_I2C_CTRL_OFFSET);
- }
- goto out;
- }
- }
- else /* WRITE */
- {
- while ((priv->wrcnt != msg->length) && (stat & I2C_STAT_TFF) == 0)
- {
- if ((priv->wrcnt + 1) == msg->length && priv->nmsg == 1)
- putreg32 (I2C_TX_STOP | msg->buffer[priv->wrcnt], priv->base + LPC313X_I2C_TX_OFFSET);
- else
- putreg32 (msg->buffer[priv->wrcnt], priv->base + LPC313X_I2C_TX_OFFSET);
-
- priv->wrcnt++;
-
- stat = getreg32 (priv->base + LPC313X_I2C_STAT_OFFSET);
- }
-
- if (priv->wrcnt < msg->length)
- {
- /* Enable Tx Fifo not full Interrupt */
- putreg32 (ctrl | I2C_CTRL_TFFIE, priv->base + LPC313X_I2C_CTRL_OFFSET);
- goto out;
- }
- }
-
- /* Transfer completed, move onto the next one */
- priv->state = I2C_STATE_START;
-
- if (--priv->nmsg == 0)
- {
- /* Final transfer, wait for Transmit Done Interrupt */
- putreg32 (ctrl, priv->base + LPC313X_I2C_CTRL_OFFSET);
- goto out;
- }
- priv->msgs++;
- break;
- }
- }
-
-out:
- if (stat & I2C_STAT_TDI)
- {
- putreg32 (I2C_STAT_TDI, priv->base + LPC313X_I2C_STAT_OFFSET);
-
- /* You'd expect the NAI bit to be set when no acknowledge was
- * received - but it gets cleared whenever a write it done to
- * the TXFIFO - so we've gone and cleared it while priming the
- * rest of the transfer! */
- if ((stat = getreg32 (priv->base + LPC313X_I2C_TXFL_OFFSET)) != 0)
- {
- if (priv->nmsg == 0)
- priv->nmsg++;
- i2c_reset (priv);
- }
-
- priv->state = I2C_STATE_DONE;
- sem_post (&priv->wait);
- }
-}
-
-/*******************************************************************************
- * Name: i2c_timeout
- *
- * Description:
- * Watchdog timer for timeout of I2C operation
- *
- *******************************************************************************/
-
-static void i2c_timeout (int argc, uint32_t arg, ...)
-{
- struct lpc313x_i2cdev_s *priv = (struct lpc313x_i2cdev_s *) arg;
-
- irqstate_t flags = irqsave();
-
- if (priv->state != I2C_STATE_DONE)
- {
- /* If there's data remaining in the TXFIFO, then ensure at least
- * one transfer has failed to complete.. */
-
- if (getreg32 (priv->base + LPC313X_I2C_TXFL_OFFSET) != 0)
- {
- if (priv->nmsg == 0)
- priv->nmsg++;
- }
-
- /* Soft reset the USB controller */
- i2c_reset (priv);
-
- /* Mark the transfer as finished */
- priv->state = I2C_STATE_DONE;
- sem_post (&priv->wait);
- }
-
- irqrestore (flags);
-}
-
-/*******************************************************************************
- * Name: i2c_reset
- *
- * Description:
- * Perform a soft reset of the I2C controller
- *
- *******************************************************************************/
-static void i2c_reset (struct lpc313x_i2cdev_s *priv)
-{
- putreg32 (I2C_CTRL_RESET, priv->base + LPC313X_I2C_CTRL_OFFSET);
-
- /* Wait for Reset to complete */
- while ((getreg32 (priv->base + LPC313X_I2C_CTRL_OFFSET) & I2C_CTRL_RESET) != 0)
- ;
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.h b/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.h
deleted file mode 100755
index 81b9608df..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_i2c.h
+++ /dev/null
@@ -1,207 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_i2c.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_I2C_H
-#define __ARCH_ARM_SRC_LPC313X_I2C_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* I2C register base address offset into the APB1 domain ****************************************/
-
-#define LPC313X_I2C0_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_I2C0_OFFSET)
-#define LPC313X_I2C0_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_I2C0_OFFSET)
-
-#define LPC313X_I2C1_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_I2C1_OFFSET)
-#define LPC313X_I2C1_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_I2C1_OFFSET)
-
-/* I2C register offsets (with respect to the I2C base) ******************************************/
-
-#define LPC313X_I2C_RX_OFFSET 0x00 /* I2C RX Data FIFO */
-#define LPC313X_I2C_TX_OFFSET 0x00 /* I2C TX Data FIFO */
-#define LPC313X_I2C_STAT_OFFSET 0x04 /* I2C Status Register */
-#define LPC313X_I2C_CTRL_OFFSET 0x08 /* I2C Control Register */
-#define LPC313X_I2C_CLKHI_OFFSET 0x0c /* I2C Clock Divider high */
-#define LPC313X_I2C_CLKLO_OFFSET 0x10 /* I2C Clock Divider low */
-#define LPC313X_I2C_ADR_OFFSET 0x14 /* I2C Slave Address */
-#define LPC313X_I2C_RXFL_OFFSET 0x18 /* I2C Rx FIFO level */
-#define LPC313X_I2C_TXFL_OFFSET 0x1c /* I2C Tx FIFO level */
-#define LPC313X_I2C_RXB_OFFSET 0x20 /* I2C Number of bytes received */
-#define LPC313X_I2C_TXB_OFFSET 0x24 /* I2C Number of bytes transmitted */
-#define LPC313X_I2C_STX_OFFSET 0x28 /* Slave Transmit FIFO */
-#define LPC313X_I2C_STXFL_OFFSET 0x2c /* Slave Transmit FIFO level */
-
-/* I2C register (virtual) addresses *************************************************************/
-
-#define LPC313X_I2C0_RX (LPC313X_I2C0_VBASE+LPC313X_I2C_RX_OFFSET)
-#define LPC313X_I2C0_TX (LPC313X_I2C0_VBASE+LPC313X_I2C_TX_OFFSET)
-#define LPC313X_I2C0_STAT (LPC313X_I2C0_VBASE+LPC313X_I2C_STAT_OFFSET)
-#define LPC313X_I2C0_CTRL (LPC313X_I2C0_VBASE+LPC313X_I2C_CTRL_OFFSET)
-#define LPC313X_I2C0_CLKHI (LPC313X_I2C0_VBASE+LPC313X_I2C_CLKHI_OFFSET)
-#define LPC313X_I2C0_CLKLO (LPC313X_I2C0_VBASE+LPC313X_I2C_CLKLO_OFFSET)
-#define LPC313X_I2C0_ADR (LPC313X_I2C0_VBASE+LPC313X_I2C_ADR_OFFSET)
-#define LPC313X_I2C0_RXFL (LPC313X_I2C0_VBASE+LPC313X_I2C_RXFL_OFFSET)
-#define LPC313X_I2C0_TXFL (LPC313X_I2C0_VBASE+LPC313X_I2C_TXFL_OFFSET)
-#define LPC313X_I2C0_RXB (LPC313X_I2C0_VBASE+LPC313X_I2C_RXB_OFFSET)
-#define LPC313X_I2C0_TXB (LPC313X_I2C0_VBASE+LPC313X_I2C_TXB_OFFSET)
-#define LPC313X_I2C0_STX (LPC313X_I2C0_VBASE+LPC313X_I2C_STX_OFFSET)
-#define LPC313X_I2C0_STXFL (LPC313X_I2C0_VBASE+LPC313X_I2C_STXFL_OFFSET)
-
-#define LPC313X_I2C1_RX (LPC313X_I2C1_VBASE+LPC313X_I2C_RX_OFFSET)
-#define LPC313X_I2C1_TX (LPC313X_I2C1_VBASE+LPC313X_I2C_TX_OFFSET)
-#define LPC313X_I2C1_STAT (LPC313X_I2C1_VBASE+LPC313X_I2C_STAT_OFFSET)
-#define LPC313X_I2C1_CTRL (LPC313X_I2C1_VBASE+LPC313X_I2C_CTRL_OFFSET)
-#define LPC313X_I2C1_CLKHI (LPC313X_I2C1_VBASE+LPC313X_I2C_CLKHI_OFFSET)
-#define LPC313X_I2C1_CLKLO (LPC313X_I2C1_VBASE+LPC313X_I2C_CLKLO_OFFSET)
-#define LPC313X_I2C1_ADR (LPC313X_I2C1_VBASE+LPC313X_I2C_ADR_OFFSET)
-#define LPC313X_I2C1_RXFL (LPC313X_I2C1_VBASE+LPC313X_I2C_RXFL_OFFSET)
-#define LPC313X_I2C1_TXFL (LPC313X_I2C1_VBASE+LPC313X_I2C_TXFL_OFFSET)
-#define LPC313X_I2C1_RXB (LPC313X_I2C1_VBASE+LPC313X_I2C_RXB_OFFSET)
-#define LPC313X_I2C1_TXB (LPC313X_I2C1_VBASE+LPC313X_I2C_TXB_OFFSET)
-#define LPC313X_I2C1_STX (LPC313X_I2C1_VBASE+LPC313X_I2C_STX_OFFSET)
-#define LPC313X_I2C1_STXFL (LPC313X_I2C1_VBASE+LPC313X_I2C_STXFL_OFFSET)
-
-/* I2C register bit definitions *****************************************************************/
-
-/* I2Cn RX Data FIFO I2C0_RX, address 0x1300a000, I2C1_RX, address 0x1300a400 */
-
-#define I2C_RX_DATA_SHIFT (0) /* Bits 0-7: RxData Receive FIFO data bits */
-#define I2C_RX_DATA_MASK (0xff << I2C_RX_DATA_HIFT)
-
-/* I2Cn TX Data FIFO I2C0_TX, 0x1300a000, I2C1_TX, address 0x1300a400 */
-
-#define I2C_TX_STOP (1 << 9) /* Bit 9: Issue STOP condition after transmitting byte */
-#define I2C_TX_START (1 << 8) /* Bit 8: Issue START condition before transmitting byte */
-#define I2C_TX_DATA_SHIFT (0) /* Bits 0-7: TxData Transmit FIFO data bits */
-#define I2C_TX_DATA_MASK (0xff << I2C_TX_DATA_SHIFT)
-
-/* I2Cn Status register I2C0_STAT, address 0x1300a004, I2C1_STAT, address 0x1300a404 */
-
-#define I2C_STAT_TFES (1 << 13) /* Bit 13: Slave Transmit FIFO Empty */
-#define I2C_STAT_TFFS (1 << 12) /* Bit 12: Slave Transmit FIFO Full */
-#define I2C_STAT_TFE (1 << 11) /* Bit 11: Transmit FIFO Empty */
-#define I2C_STAT_TFF (1 << 10) /* Bit 10: Transmit FIFO Full */
-#define I2C_STAT_RFE (1 << 9) /* Bit 9: Receive FIFO Empty */
-#define I2C_STAT_RFF (1 << 8) /* Bit 8: Receive FIFO Full */
-#define I2C_STAT_SDA (1 << 7) /* Bit 7: The current value of the SDA signal */
-#define I2C_STAT_SCL (1 << 6) /* Bit 6: The current value of the SCL signal */
-#define I2C_STAT_ACTIVE (1 << 5) /* Bit 5: Indicates whether the bus is busy */
-#define I2C_STAT_DRSI (1 << 4) /* Bit 4: Slave Data Request Interrupt */
-#define I2C_STAT_DRMI (1 << 3) /* Bit 3: Master Data Request Interrupt */
-#define I2C_STAT_NAI (1 << 2) /* Bit 2: No Acknowledge Interrupt */
-#define I2C_STAT_AFI (1 << 1) /* Bit 1: Arbitration Failure Interrupt */
-#define I2C_STAT_TDI (1 << 0) /* Bit 0: Transaction Done Interrupt */
-
-/* I2Cn Control register I2C0_CTRL, address 0x1300a008, I2C1_CTRL, address 0x1300a408 */
-
-#define I2C_CTRL_TFFSIE (1 << 10) /* Bit 10: Slave Transmit FIFO Not Full Interrupt Enable */
-#define I2C_CTRL_SEVEN (1 << 9) /* Bit 9: Seven-bit slave address */
-#define I2C_CTRL_RESET (1 << 8) /* Bit 8: Soft Reset */
-#define I2C_CTRL_TFFIE (1 << 7) /* Bit 7: Transmit FIFO Not Full Interrupt Enable */
-#define I2C_CTRL_RFDAIE (1 << 6) /* Bit 6: Receive FIFO Data Available Interrupt Enable */
-#define I2C_CTRL_RFFIE (1 << 5) /* Bit 5: Receive FIFO Full Interrupt Enable */
-#define I2C_CTRL_DRSIE (1 << 4) /* Bit 4: Data Request Slave Transmitter Interrupt Enable */
-#define I2C_CTRL_DRMIE (1 << 3) /* Bit 3: Data Request Master Transmitter Interrupt Enable */
-#define I2C_CTRL_NAIE (1 << 2) /* Bit 2: Transmitter No Acknowledge Interrupt Enable */
-#define I2C_CTRL_AFIE (1 << 1) /* Bit 1: Transmitter Arbitration Failure Interrupt Enable */
-#define I2C_CTRL_TDIE (1 << 0) /* Bit 0: Transmit Done Interrupt Enable */
-
-/* I2Cn Clock Divider High I2C0_CLKHI, address 0x1300a00c, I2C1_CLKHI, address 0x1300a40c */
-
-#define I2C_CLKHI_SHIFT (0) /* Bits 0-9: Clock Divisor High */
-#define I2C_CLKHI_MASK (0x3ff << I2C_CLKHI_SHIFT)
-
-/* I2Cn Clock Divider Low I2C0_CLKLO, address 0x1300a010, I2C1_CLKLO, address 0x1300a410 */
-
-#define I2C_CLKLO_SHIFT (0) /* Bits 0-9: Clock Divisor Low */
-#define I2C_CLKLO_MASK (0x3ff << I2C_CLKLO_SHIFT)
-
-
-/* I2Cn Slave Addres I2C0_ADDR, address 0x1300a014, I2C1_ADDR, address 0x1300a414 */
-
-#define I2C_ADR_SHIFT (0) /* Bits 0-9: I2C bus slave address */
-#define I2C_ADR_MASK (0x3ff << I2C_ADR_SHIFT)
-
-/* I2Cn RX FIFO level I2C0_RXFL, address 0x1300a018, I2C1_RXFL, address 0x1300a018 */
-
-#define I2C_RXFL_SHIFT (0) /* Bits 0-1: Receive FIFO level */
-#define I2C_RXFL_MASK (3 << I2C_RXFL_SHIFT)
-
-/* I2Cn TX FIFO level I2C0_TXFL, address 0x1300a01c, I2C1_TXFL, address 0x1300a01c */
-
-#define I2C_TXFL_SHIFT (0) /* Bits 0-1: Receive FIFO level */
-#define I2C_TXFL_MASK (3 << I2C_TXFL_SHIFT)
-
-/* I2Cn RX byte count I2C0_RXB, address 0x1300a020, I2C1_RXB, address 0x1300a420 */
-
-#define I2C_RXB_SHIFT (0) /* Bits 0-15: Number of bytes received */
-#define I2C_RXB_MASK (0xffff << I2C_RXB_SHIFT)
-
-/* I2Cn TX byte count I2C0_TXB, address 0x1300a024, I2C1_TXB, address 0x1300a424 */
-
-#define I2C_TXB_SHIFT (0) /* Bits 0-15: Number of bytes sent */
-#define I2C_TXB_MASK (0xffff << I2C_TXB_SHIFT)
-
-/* I2Cn Slave TX Data FIFO I2C0_STX, address 0x1300a028, I2C1_STX, 0x1300a428 */
-
-#define I2C_STX_SHIFT (0) /* Bits 0-7: Slave Transmit FIFO data */
-#define I2C_STX_MASK (0xff << I2C_STX_SHIFT)
-
-/* I2Cn Slave TX FIFO level I2C0_STXFL, address 0x1300a02c, I2C1_STXFL, address 0x1300a42c */
-
-#define I2C_STXFL_SHIFT (0) /* Bits 0-1: Slave Transmit FIFO level */
-#define I2C_STXFL_MASK (3 << I2C_STXFL_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_I2C_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_i2s.h b/nuttx/arch/arm/src/lpc313x/lpc313x_i2s.h
deleted file mode 100755
index 44ff86a09..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_i2s.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_i2s.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_I2S_H
-#define __ARCH_ARM_SRC_LPC313X_I2S_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* I2S register base address offset into the APB3 domain ****************************************/
-
-#define LPC313X_I2SCONFIG_VBASE (LPC313X_APB3_VSECTION+LPC313X_APB3_I2SCONFIG_OFFSET)
-#define LPC313X_I2SCONFIG_PBASE (LPC313X_APB3_PSECTION+LPC313X_APB3_I2SCONFIG_OFFSET)
-
-#define LPC313X_I2STX0_VBASE (LPC313X_APB3_VSECTION+LPC313X_APB3_I2STX0_OFFSET)
-#define LPC313X_I2STX0_PBASE (LPC313X_APB3_PSECTION+LPC313X_APB3_I2STX0_OFFSET)
-
-#define LPC313X_I2STX1_VBASE (LPC313X_APB3_VSECTION+LPC313X_APB3_I2STX1_OFFSET)
-#define LPC313X_I2STX1_PBASE (LPC313X_APB3_PSECTION+LPC313X_APB3_I2STX1_OFFSET)
-
-#define LPC313X_I2SRX0_VBASE (LPC313X_APB3_VSECTION+LPC313X_APB3_I2SRX0_OFFSET)
-#define LPC313X_I2SRX0_PBASE (LPC313X_APB3_PSECTION+LPC313X_APB3_I2SRX0_OFFSET)
-
-#define LPC313X_I2SRX1_VBASE (LPC313X_APB3_VSECTION+LPC313X_APB3_I2SRX1_OFFSET)
-#define LPC313X_I2SRX1_PBASE (LPC313X_APB3_PSECTION+LPC313X_APB3_I2SRX1_OFFSET)
-
-/* I2S register offsets (with respect to the I2S base) ******************************************/
-/* I2S configuration module offset */
-
-#define LPC313X_I2SCONFIG_FORMAT_OFFSET 0x000 /* I2S formats */
-#define LPC313X_I2SCONFIG_CFGMUX_OFFSET 0x004 /* Misc controls */
- /* 0x008-0x00c: Reserved */
-#define LPC313X_I2SCONFIG_NSOFCNTR_OFFSET 0x010 /* NSOF counter control */
-
-/* I2STX0, I2STX1, I2SRX0, and I2SRX1 module offsets */
-
-#define LPC313X_I2S_L16BIT_OFFSET 0x000 /* 16 bits left channel data */
-#define LPC313X_I2S_R16BIT_OFFSET 0x004 /* 16 bits right channel data */
-#define LPC313X_I2S_L24BIT_OFFSET 0x008 /* 24 bits left channel data */
-#define LPC313X_I2S_R24BIT_OFFSET 0x00c /* 24 bits right channel data */
-#define LPC313X_I2S_INTSTATUS_OFFSET 0x010 /* FIFO status register */
-#define LPC313X_I2S_INTMASK_OFFSET 0x014 /* Interrupt Mask register */
-#define LPC313X_I2S_L32BIT_OFFSET(n) (0x020+((n)<<2))
-#define LPC313X_I2S_L32BIT0_OFFSET 0x020 /* 2x16 bits left channel data */
-#define LPC313X_I2S_L32BIT1_OFFSET 0x024 /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT2_OFFSET 0x028 /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT3_OFFSET 0x02c /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT4_OFFSET 0x030 /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT5_OFFSET 0x034 /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT6_OFFSET 0x038 /* " " " " " " " " " " */
-#define LPC313X_I2S_L32BIT7_OFFSET 0x03c /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT_OFFSET(n) (0x040+((n)<<2))
-#define LPC313X_I2S_R32BIT0_OFFSET 0x040 /* 2x16 bits right channel data */
-#define LPC313X_I2S_R32BIT1_OFFSET 0x044 /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT2_OFFSET 0x048 /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT3_OFFSET 0x04c /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT4_OFFSET 0x050 /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT5_OFFSET 0x054 /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT6_OFFSET 0x058 /* " " " " " " " " " " */
-#define LPC313X_I2S_R32BIT7_OFFSET 0x05c /* " " " " " " " " " " */
-#define LPC313X_I2S_ILVD_OFFSET(n) (0x060+((n)<<2))
-#define LPC313X_I2S_ILVD0_OFFSET 0x060 /* Interleaved data */
-#define LPC313X_I2S_ILVD1_OFFSET 0x064 /* " " " " */
-#define LPC313X_I2S_ILVD2_OFFSET 0x068 /* " " " " */
-#define LPC313X_I2S_ILVD3_OFFSET 0x06c /* " " " " */
-#define LPC313X_I2S_ILVD4_OFFSET 0x070 /* " " " " */
-#define LPC313X_I2S_ILVD5_OFFSET 0x074 /* " " " " */
-#define LPC313X_I2S_ILVD6_OFFSET 0x078 /* " " " " */
-#define LPC313X_I2S_ILVD7_OFFSET 0x07c /* " " " " */
-
-/* I2S register (virtual) addresses *************************************************************/
-/* I2S configuration module registers */
-
-#define LPC313X_I2SCONFIG_FORMAT (LPC313X_I2SCONFIG_VBASE+lPC313X_I2SCONFIG_FORMAT_OFFSET)
-#define LPC313X_I2SCONFIG_CFGMUX (LPC313X_I2SCONFIG_VBASE+LPC313X_I2SCONFIG_CFGMUX_OFFSET)
-#define LPC313X_I2SCONFIG_NSOFCNTR (LPC313X_I2SCONFIG_VBASE+LPC313X_I2SCONFIG_NSOFCNTR_OFFSET)
-
-/* I2STX0 module registers */
-
-#define LPC313X_I2STX0_L16BIT (LPC313X_I2STX0_VBASE+LPC313X_I2S_L16BIT_OFFSET)
-#define LPC313X_I2STX0_R16BIT (LPC313X_I2STX0_VBASE+LPC313X_I2S_R16BIT_OFFSET)
-#define LPC313X_I2STX0_L24BIT (LPC313X_I2STX0_VBASE+LPC313X_I2S_L24BIT_OFFSET)
-#define LPC313X_I2STX0_R24BIT (LPC313X_I2STX0_VBASE+LPC313X_I2S_R24BIT_OFFSET)
-#define LPC313X_I2STX0_INTSTATUS (LPC313X_I2STX0_VBASE+LPC313X_I2S_INTSTATUS_OFFSET)
-#define LPC313X_I2STX0_INTMASK (LPC313X_I2STX0_VBASE+LPC313X_I2S_INTMASK_OFFSET)
-#define LPC313X_I2STX0_L32BIT(n) (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT_OFFSET(n))
-#define LPC313X_I2STX0_L32BIT0 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT0_OFFSET)
-#define LPC313X_I2STX0_L32BIT1 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT1_OFFSET)
-#define LPC313X_I2STX0_L32BIT2 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT2_OFFSET)
-#define LPC313X_I2STX0_L32BIT3 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT3_OFFSET)
-#define LPC313X_I2STX0_L32BIT4 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT4_OFFSET)
-#define LPC313X_I2STX0_L32BIT5 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT5_OFFSET)
-#define LPC313X_I2STX0_L32BIT6 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT6_OFFSET)
-#define LPC313X_I2STX0_L32BIT7 (LPC313X_I2STX0_VBASE+LPC313X_I2S_L32BIT7_OFFSET)
-#define LPC313X_I2STX0_R32BIT(n) (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT_OFFSET(n))
-#define LPC313X_I2STX0_R32BIT0 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT0_OFFSET)
-#define LPC313X_I2STX0_R32BIT1 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT1_OFFSET)
-#define LPC313X_I2STX0_R32BIT2 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT2_OFFSET)
-#define LPC313X_I2STX0_R32BIT3 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT3_OFFSET)
-#define LPC313X_I2STX0_R32BIT4 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT4_OFFSET)
-#define LPC313X_I2STX0_R32BIT5 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT5_OFFSET)
-#define LPC313X_I2STX0_R32BIT6 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT6_OFFSET)
-#define LPC313X_I2STX0_R32BIT7 (LPC313X_I2STX0_VBASE+LPC313X_I2S_R32BIT7_OFFSET)
-#define LPC313X_I2STX0_ILVD(n) (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD_OFFSET(n))
-#define LPC313X_I2STX0_ILVD0 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD0_OFFSET)
-#define LPC313X_I2STX0_ILVD1 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD1_OFFSET)
-#define LPC313X_I2STX0_ILVD2 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD2_OFFSET)
-#define LPC313X_I2STX0_ILVD3 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD3_OFFSET)
-#define LPC313X_I2STX0_ILVD4 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD4_OFFSET)
-#define LPC313X_I2STX0_ILVD5 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD5_OFFSET)
-#define LPC313X_I2STX0_ILVD6 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD6_OFFSET)
-#define LPC313X_I2STX0_ILVD7 (LPC313X_I2STX0_VBASE+LPC313X_I2S_ILVD7_OFFSET)
-
-/* I2STX1 module registers */
-
-#define LPC313X_I2STX1_L16BIT (LPC313X_I2STX1_VBASE+LPC313X_I2S_L16BIT_OFFSET)
-#define LPC313X_I2STX1_R16BIT (LPC313X_I2STX1_VBASE+LPC313X_I2S_R16BIT_OFFSET)
-#define LPC313X_I2STX1_L24BIT (LPC313X_I2STX1_VBASE+LPC313X_I2S_L24BIT_OFFSET)
-#define LPC313X_I2STX1_R24BIT (LPC313X_I2STX1_VBASE+LPC313X_I2S_R24BIT_OFFSET)
-#define LPC313X_I2STX1_INTSTATUS (LPC313X_I2STX1_VBASE+LPC313X_I2S_INTSTATUS_OFFSET)
-#define LPC313X_I2STX1_INTMASK (LPC313X_I2STX1_VBASE+LPC313X_I2S_INTMASK_OFFSET)
-#define LPC313X_I2STX1_L32BIT(n) (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT_OFFSET(n))
-#define LPC313X_I2STX1_L32BIT0 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT0_OFFSET)
-#define LPC313X_I2STX1_L32BIT1 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT1_OFFSET)
-#define LPC313X_I2STX1_L32BIT2 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT2_OFFSET)
-#define LPC313X_I2STX1_L32BIT3 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT3_OFFSET)
-#define LPC313X_I2STX1_L32BIT4 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT4_OFFSET)
-#define LPC313X_I2STX1_L32BIT5 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT5_OFFSET)
-#define LPC313X_I2STX1_L32BIT6 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT6_OFFSET)
-#define LPC313X_I2STX1_L32BIT7 (LPC313X_I2STX1_VBASE+LPC313X_I2S_L32BIT7_OFFSET)
-#define LPC313X_I2STX1_R32BIT(n) (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT_OFFSET(n))
-#define LPC313X_I2STX1_R32BIT0 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT0_OFFSET)
-#define LPC313X_I2STX1_R32BIT1 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT1_OFFSET)
-#define LPC313X_I2STX1_R32BIT2 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT2_OFFSET)
-#define LPC313X_I2STX1_R32BIT3 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT3_OFFSET)
-#define LPC313X_I2STX1_R32BIT4 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT4_OFFSET)
-#define LPC313X_I2STX1_R32BIT5 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT5_OFFSET)
-#define LPC313X_I2STX1_R32BIT6 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT6_OFFSET)
-#define LPC313X_I2STX1_R32BIT7 (LPC313X_I2STX1_VBASE+LPC313X_I2S_R32BIT7_OFFSET)
-#define LPC313X_I2STX1_ILVD(n) (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD_OFFSET(n))
-#define LPC313X_I2STX1_ILVD0 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD0_OFFSET)
-#define LPC313X_I2STX1_ILVD1 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD1_OFFSET)
-#define LPC313X_I2STX1_ILVD2 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD2_OFFSET)
-#define LPC313X_I2STX1_ILVD3 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD3_OFFSET)
-#define LPC313X_I2STX1_ILVD4 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD4_OFFSET)
-#define LPC313X_I2STX1_ILVD5 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD5_OFFSET)
-#define LPC313X_I2STX1_ILVD6 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD6_OFFSET)
-#define LPC313X_I2STX1_ILVD7 (LPC313X_I2STX1_VBASE+LPC313X_I2S_ILVD7_OFFSET)
-
-/* I2SRX0 module registers */
-
-#define LPC313X_I2SRX0_L16BIT (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L16BIT_OFFSET)
-#define LPC313X_I2SRX0_R16BIT (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R16BIT_OFFSET)
-#define LPC313X_I2SRX0_L24BIT (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L24BIT_OFFSET)
-#define LPC313X_I2SRX0_R24BIT (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R24BIT_OFFSET)
-#define LPC313X_I2SRX0_INTSTATUS (LPC313X_I2SRX0_VBASE+LPC313X_I2S_INTSTATUS_OFFSET)
-#define LPC313X_I2SRX0_INTMASK (LPC313X_I2SRX0_VBASE+LPC313X_I2S_INTMASK_OFFSET)
-#define LPC313X_I2SRX0_L32BIT(n) (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT_OFFSET(n))
-#define LPC313X_I2SRX0_L32BIT0 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT0_OFFSET)
-#define LPC313X_I2SRX0_L32BIT1 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT1_OFFSET)
-#define LPC313X_I2SRX0_L32BIT2 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT2_OFFSET)
-#define LPC313X_I2SRX0_L32BIT3 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT3_OFFSET)
-#define LPC313X_I2SRX0_L32BIT4 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT4_OFFSET)
-#define LPC313X_I2SRX0_L32BIT5 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT5_OFFSET)
-#define LPC313X_I2SRX0_L32BIT6 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT6_OFFSET)
-#define LPC313X_I2SRX0_L32BIT7 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_L32BIT7_OFFSET)
-#define LPC313X_I2SRX0_R32BIT(n) (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT_OFFSET(n))
-#define LPC313X_I2SRX0_R32BIT0 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT0_OFFSET)
-#define LPC313X_I2SRX0_R32BIT1 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT1_OFFSET)
-#define LPC313X_I2SRX0_R32BIT2 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT2_OFFSET)
-#define LPC313X_I2SRX0_R32BIT3 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT3_OFFSET)
-#define LPC313X_I2SRX0_R32BIT4 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT4_OFFSET)
-#define LPC313X_I2SRX0_R32BIT5 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT5_OFFSET)
-#define LPC313X_I2SRX0_R32BIT6 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT6_OFFSET)
-#define LPC313X_I2SRX0_R32BIT7 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_R32BIT7_OFFSET)
-#define LPC313X_I2SRX0_ILVD(n) (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD_OFFSET(n))
-#define LPC313X_I2SRX0_ILVD0 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD0_OFFSET)
-#define LPC313X_I2SRX0_ILVD1 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD1_OFFSET)
-#define LPC313X_I2SRX0_ILVD2 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD2_OFFSET)
-#define LPC313X_I2SRX0_ILVD3 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD3_OFFSET)
-#define LPC313X_I2SRX0_ILVD4 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD4_OFFSET)
-#define LPC313X_I2SRX0_ILVD5 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD5_OFFSET)
-#define LPC313X_I2SRX0_ILVD6 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD6_OFFSET)
-#define LPC313X_I2SRX0_ILVD7 (LPC313X_I2SRX0_VBASE+LPC313X_I2S_ILVD7_OFFSET)
-
-/* I2SRX1 module registers */
-
-#define LPC313X_I2SRX1_L16BIT (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L16BIT_OFFSET)
-#define LPC313X_I2SRX1_R16BIT (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R16BIT_OFFSET)
-#define LPC313X_I2SRX1_L24BIT (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L24BIT_OFFSET)
-#define LPC313X_I2SRX1_R24BIT (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R24BIT_OFFSET)
-#define LPC313X_I2SRX1_INTSTATUS (LPC313X_I2SRX1_VBASE+LPC313X_I2S_INTSTATUS_OFFSET)
-#define LPC313X_I2SRX1_INTMASK (LPC313X_I2SRX1_VBASE+LPC313X_I2S_INTMASK_OFFSET)
-#define LPC313X_I2SRX1_L32BIT(n) (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT_OFFSET(n))
-#define LPC313X_I2SRX1_L32BIT0 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT0_OFFSET)
-#define LPC313X_I2SRX1_L32BIT1 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT1_OFFSET)
-#define LPC313X_I2SRX1_L32BIT2 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT2_OFFSET)
-#define LPC313X_I2SRX1_L32BIT3 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT3_OFFSET)
-#define LPC313X_I2SRX1_L32BIT4 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT4_OFFSET)
-#define LPC313X_I2SRX1_L32BIT5 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT5_OFFSET)
-#define LPC313X_I2SRX1_L32BIT6 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT6_OFFSET)
-#define LPC313X_I2SRX1_L32BIT7 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_L32BIT7_OFFSET)
-#define LPC313X_I2SRX1_R32BIT(n) (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT_OFFSET(n))
-#define LPC313X_I2SRX1_R32BIT0 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT0_OFFSET)
-#define LPC313X_I2SRX1_R32BIT1 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT1_OFFSET)
-#define LPC313X_I2SRX1_R32BIT2 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT2_OFFSET)
-#define LPC313X_I2SRX1_R32BIT3 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT3_OFFSET)
-#define LPC313X_I2SRX1_R32BIT4 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT4_OFFSET)
-#define LPC313X_I2SRX1_R32BIT5 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT5_OFFSET)
-#define LPC313X_I2SRX1_R32BIT6 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT6_OFFSET)
-#define LPC313X_I2SRX1_R32BIT7 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_R32BIT7_OFFSET)
-#define LPC313X_I2SRX1_ILVD(n) (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD_OFFSET(n))
-#define LPC313X_I2SRX1_ILVD0 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD0_OFFSET)
-#define LPC313X_I2SRX1_ILVD1 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD1_OFFSET)
-#define LPC313X_I2SRX1_ILVD2 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD2_OFFSET)
-#define LPC313X_I2SRX1_ILVD3 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD3_OFFSET)
-#define LPC313X_I2SRX1_ILVD4 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD4_OFFSET)
-#define LPC313X_I2SRX1_ILVD5 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD5_OFFSET)
-#define LPC313X_I2SRX1_ILVD6 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD6_OFFSET)
-#define LPC313X_I2SRX1_ILVD7 (LPC313X_I2SRX1_VBASE+LPC313X_I2S_ILVD7_OFFSET)
-
-/* I2S register bit definitions *****************************************************************/
-/* I2S configuration module offset */
-
-/* I2SCONFIG_FORMAT address 0x16000000 */
-
-#define I2SCONFIG_FORMAT_I2SRX1_SHIFT (9) /* Bits 9-11: I2SRX1 I2S output format */
-#define I2SCONFIG_FORMAT_I2SRX1_MASK (7 << I2SCONFIG_FORMAT_I2SRX1_SHIFT)
-# define I2SCONFIG_FORMAT_I2SRX1_I2S (3 << I2SCONFIG_FORMAT_I2SRX1_SHIFT) /* I2S */
-# define I2SCONFIG_FORMAT_I2SRX1_16BIT (4 << I2SCONFIG_FORMAT_I2SRX1_SHIFT) /* LSB justified 16 bits */
-# define I2SCONFIG_FORMAT_I2SRX1_18BIT (5 << I2SCONFIG_FORMAT_I2SRX1_SHIFT) /* LSB justified 18 bits */
-# define I2SCONFIG_FORMAT_I2SRX1_20BIT (6 << I2SCONFIG_FORMAT_I2SRX1_SHIFT) /* LSB justified 20 bits */
-# define I2SCONFIG_FORMAT_I2SRX1_24BIT (7 << I2SCONFIG_FORMAT_I2SRX1_SHIFT) /* LSB justified 24 bits */
-#define I2SCONFIG_FORMAT_I2SRX0_SHIFT (6) /* Bits 6-8: I2SRX0 I2S output format */
-#define I2SCONFIG_FORMAT_I2SRX0_MASK (7 << I2SCONFIG_FORMAT_I2SRX0_SHIFT)
-# define I2SCONFIG_FORMAT_I2SRX0_I2S (3 << I2SCONFIG_FORMAT_I2SRX0_SHIFT) /* I2S */
-# define I2SCONFIG_FORMAT_I2SRX0_16BIT (4 << I2SCONFIG_FORMAT_I2SRX0_SHIFT) /* LSB justified 16 bits */
-# define I2SCONFIG_FORMAT_I2SRX0_18BIT (5 << I2SCONFIG_FORMAT_I2SRX0_SHIFT) /* LSB justified 18 bits */
-# define I2SCONFIG_FORMAT_I2SRX0_20BIT (6 << I2SCONFIG_FORMAT_I2SRX0_SHIFT) /* LSB justified 20 bits */
-# define I2SCONFIG_FORMAT_I2SRX0_24BIT (7 << I2SCONFIG_FORMAT_I2SRX0_SHIFT) /* LSB justified 24 bits */
-#define I2SCONFIG_FORMAT_I2STX1_SHIFT (3) /* Bits 3-5: 2STX1 I2S input format */
-#define I2SCONFIG_FORMAT_I2STX1_MASK (7 << I2SCONFIG_FORMAT_I2STX1_SHIFT)
-# define I2SCONFIG_FORMAT_I2STX1_I2S (3 << I2SCONFIG_FORMAT_I2STX1_SHIFT) /* I2S */
-# define I2SCONFIG_FORMAT_I2STX1_16BIT (4 << I2SCONFIG_FORMAT_I2STX1_SHIFT) /* LSB justified 16 bits */
-# define I2SCONFIG_FORMAT_I2STX1_18BIT (5 << I2SCONFIG_FORMAT_I2STX1_SHIFT) /* LSB justified 18 bits */
-# define I2SCONFIG_FORMAT_I2STX1_20BIT (6 << I2SCONFIG_FORMAT_I2STX1_SHIFT) /* LSB justified 20 bits */
-# define I2SCONFIG_FORMAT_I2STX1_24BIT (7 << I2SCONFIG_FORMAT_I2STX1_SHIFT) /* LSB justified 24 bits */
-#define I2SCONFIG_FORMAT_I2STX0_SHIFT (0) /* Bits 0-2: I2STX0 I2S input format */
-#define I2SCONFIG_FORMAT_I2STX0_MASK (7 << I2SCONFIG_FORMAT_I2STX0_SHIFT)
-# define I2SCONFIG_FORMAT_I2STX0_I2S (3 << I2SCONFIG_FORMAT_I2STX0_SHIFT) /* I2S */
-# define I2SCONFIG_FORMAT_I2STX0_16BIT (4 << I2SCONFIG_FORMAT_I2STX0_SHIFT) /* LSB justified 16 bits */
-# define I2SCONFIG_FORMAT_I2STX0_18BIT (5 << I2SCONFIG_FORMAT_I2STX0_SHIFT) /* LSB justified 18 bits */
-# define I2SCONFIG_FORMAT_I2STX0_20BIT (6 << I2SCONFIG_FORMAT_I2STX0_SHIFT) /* LSB justified 20 bits */
-# define I2SCONFIG_FORMAT_I2STX0_24BIT (7 << I2SCONFIG_FORMAT_I2STX0_SHIFT) /* LSB justified 24 bits */
-
-/* II2SCONFIG_CFGMUX address 0x16000004 */
-
-#define I2SCONFIG_CFGMUX_I2SRX1OEN (1 << 2) /* Bit 2: Selects faster mode for I2SRX1 */
-#define I2SCONFIG_CFGMUX_I2SRX0OEN (1 << 1) /* Bit 1: Slects master mode for I2SRX0 */
-
-/* I2SCONFIG_NSOFCNT address 0x16000010 */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_I2S_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_intc.h b/nuttx/arch/arm/src/lpc313x/lpc313x_intc.h
deleted file mode 100755
index 301272945..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_intc.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_intc.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_INTC_H
-#define __ARCH_ARM_SRC_LPC313X_INTC_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* INTC register base address *******************************************************************/
-
-#define LPC313X_INTC_VBASE (LPC313X_INTC_VSECTION)
-#define LPC313X_INTC_PBASE (LPC313X_INTC_PSECTION)
-
-/* INTC register offsets (with respect to the base of the INTC domain) **************************/
-
-#define LPC313X_INTC_PRIORITYMASK0_OFFSET 0x000 /* Interrupt target 0 priority threshold */
-#define LPC313X_INTC_PRIORITYMASK1_OFFSET 0x004 /* Interrupt target 0 priority threshold */
-#define LPC313X_INTC_VECTOR0_OFFSET 0x100 /* Vector register for target 0 => nIRQ */
-#define LPC313X_INTC_VECTOR1_OFFSET 0x104 /* Vector register for target 1 => nFIQ */
-#define LPC313X_INTC_PENDING_OFFSET 0x200 /* Status of interrupt request 1..29 */
-#define LPC313X_INTC_FEATURES_OFFSET 0x300 /* Interrupt controller configuration */
-#define LPC313X_INTC_REQUEST_OFFSET(n) (0x400+((n) << 2))
-#define LPC313X_INTC_REQUEST1_OFFSET 0x404 /* Interrupt request 1 configuration */
-#define LPC313X_INTC_REQUEST2_OFFSET 0x408 /* Interrupt request 2 configuration */
-#define LPC313X_INTC_REQUEST3_OFFSET 0x40c /* Interrupt request 3 configuration */
-#define LPC313X_INTC_REQUEST4_OFFSET 0x410 /* Interrupt request 4 configuration */
-#define LPC313X_INTC_REQUEST5_OFFSET 0x414 /* Interrupt request 5 configuration */
-#define LPC313X_INTC_REQUEST6_OFFSET 0x418 /* Interrupt request 6 configuration */
-#define LPC313X_INTC_REQUEST7_OFFSET 0x41c /* Interrupt request 7 configuration */
-#define LPC313X_INTC_REQUEST8_OFFSET 0x420 /* Interrupt request 8 configuration */
-#define LPC313X_INTC_REQUEST9_OFFSET 0x424 /* Interrupt request 9 configuration */
-#define LPC313X_INTC_REQUEST10_OFFSET 0x428 /* Interrupt request 10 configuration */
-#define LPC313X_INTC_REQUEST11_OFFSET 0x42c /* Interrupt request 11 configuration */
-#define LPC313X_INTC_REQUEST12_OFFSET 0x430 /* Interrupt request 12 configuration */
-#define LPC313X_INTC_REQUEST13_OFFSET 0x434 /* Interrupt request 13 configuration */
-#define LPC313X_INTC_REQUEST14_OFFSET 0x438 /* Interrupt request 14 configuration */
-#define LPC313X_INTC_REQUEST15_OFFSET 0x43c /* Interrupt request 15 configuration */
-#define LPC313X_INTC_REQUEST16_OFFSET 0x440 /* Interrupt request 16 configuration */
-#define LPC313X_INTC_REQUEST17_OFFSET 0x444 /* Interrupt request 17 configuration */
-#define LPC313X_INTC_REQUEST18_OFFSET 0x448 /* Interrupt request 18 configuration */
-#define LPC313X_INTC_REQUEST19_OFFSET 0x44c /* Interrupt request 19 configuration */
-#define LPC313X_INTC_REQUEST20_OFFSET 0x450 /* Interrupt request 20 configuration */
-#define LPC313X_INTC_REQUEST21_OFFSET 0x454 /* Interrupt request 21 configuration */
-#define LPC313X_INTC_REQUEST22_OFFSET 0x458 /* Interrupt request 22 configuration */
-#define LPC313X_INTC_REQUEST23_OFFSET 0x45c /* Interrupt request 23 configuration */
-#define LPC313X_INTC_REQUEST24_OFFSET 0x460 /* Interrupt request 24 configuration */
-#define LPC313X_INTC_REQUEST25_OFFSET 0x464 /* Interrupt request 25 configuration */
-#define LPC313X_INTC_REQUEST26_OFFSET 0x468 /* Interrupt request 26 configuration */
-#define LPC313X_INTC_REQUEST27_OFFSET 0x46c /* Interrupt request 27 configuration */
-#define LPC313X_INTC_REQUEST28_OFFSET 0x470 /* Interrupt request 28 configuration */
-#define LPC313X_INTC_REQUEST29_OFFSET 0x474 /* Interrupt request 29 configuration */
-
-/* INTC register (virtual) addresses ************************************************************/
-
-#define LPC313X_INTC_PRIORITYMASK0 (LPC313X_INTC_VBASE+LPC313X_INTC_PRIORITYMASK0_OFFSET)
-#define LPC313X_INTC_PRIORITYMASK1 (LPC313X_INTC_VBASE+LPC313X_INTC_PRIORITYMASK1_OFFSET)
-#define LPC313X_INTC_VECTOR0 (LPC313X_INTC_VBASE+LPC313X_INTC_VECTOR0_OFFSET)
-#define LPC313X_INTC_VECTOR1 (LPC313X_INTC_VBASE+LPC313X_INTC_VECTOR1_OFFSET)
-#define LPC313X_INTC_PENDING (LPC313X_INTC_VBASE+LPC313X_INTC_PENDING_OFFSET)
-#define LPC313X_INTC_FEATURES (LPC313X_INTC_VBASE+LPC313X_INTC_FEATURES_OFFSET)
-#define LPC313X_INTC_REQUEST(n) (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST_OFFSET(n))
-#define LPC313X_INTC_REQUEST1 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST1_OFFSET)
-#define LPC313X_INTC_REQUEST2 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST2_OFFSET)
-#define LPC313X_INTC_REQUEST3 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST3_OFFSET)
-#define LPC313X_INTC_REQUEST4 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST4_OFFSET)
-#define LPC313X_INTC_REQUEST5 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST5_OFFSET)
-#define LPC313X_INTC_REQUEST6 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST6_OFFSET)
-#define LPC313X_INTC_REQUEST7 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST7_OFFSET)
-#define LPC313X_INTC_REQUEST8 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST8_OFFSET)
-#define LPC313X_INTC_REQUEST9 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST9_OFFSET)
-#define LPC313X_INTC_REQUEST10 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST10_OFFSET)
-#define LPC313X_INTC_REQUEST11 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST11_OFFSET)
-#define LPC313X_INTC_REQUEST12 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST12_OFFSET)
-#define LPC313X_INTC_REQUEST13 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST13_OFFSET)
-#define LPC313X_INTC_REQUEST14 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST14_OFFSET)
-#define LPC313X_INTC_REQUEST15 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST15_OFFSET)
-#define LPC313X_INTC_REQUEST16 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST16_OFFSET)
-#define LPC313X_INTC_REQUEST17 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST17_OFFSET)
-#define LPC313X_INTC_REQUEST18 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST18_OFFSET)
-#define LPC313X_INTC_REQUEST19 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST19_OFFSET)
-#define LPC313X_INTC_REQUEST20 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST20_OFFSET)
-#define LPC313X_INTC_REQUEST21 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST21_OFFSET)
-#define LPC313X_INTC_REQUEST22 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST22_OFFSET)
-#define LPC313X_INTC_REQUEST23 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST23_OFFSET)
-#define LPC313X_INTC_REQUEST24 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST24_OFFSET)
-#define LPC313X_INTC_REQUEST25 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST25_OFFSET)
-#define LPC313X_INTC_REQUEST26 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST26_OFFSET)
-#define LPC313X_INTC_REQUEST27 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST27_OFFSET)
-#define LPC313X_INTC_REQUEST28 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST28_OFFSET)
-#define LPC313X_INTC_REQUEST29 (LPC313X_INTC_VBASE+LPC313X_INTC_REQUEST29_OFFSET)
-
-/* INTC register bit definitions ****************************************************************/
-
-/* Interrupt priority mask register (INT_PRIORITYMASK0 address 0x60000000 and
- * INTC_PRIORITYMASK1 address 0x60000004)
- */
-
-#define INTC_PRIORITYMASK_PRIOLIMIT_SHIFT (0) /* Bits 0-7: Priority threshold for interrupts */
-#define INTC_PRIORITYMASK_PRIOLIMIT_MASK (255 << INTC_PRIORITYMASK_PRIOLIMIT_MASK)
-
-/* Interrupt vector registers (INTC_VECTOR0 address 0x60000100 and INTC_VECTOR1 address
- * 0x60000104)
- */
-
-#define INTC_VECTOR_TABLEADDR_SHIFT (11) /* Bits 11-31: Table start address */
-#define INTC_VECTOR_TABLEADDR_MASK (0x001fffff << INTC_VECTOR_TABLEADDR_SHIFT)
-#define INTC_VECTOR_INDEX_SHIFT (3) /* Bits 3-10: IRQ number of interrupt */
-#define INTC_VECTOR_INDEX_MASK (255 << INTC_VECTOR_INDEX_SHIFT)
-
-/* Interrupt pending register (INT_PENDING1_31, address 0x60000200) */
-
-#define INTC_PENDING_SHIFT (1) /* Bits 1-29: Pending interrupt request */
-#define INTC_PENDING_MASK (0x1fffffff << INTC_PENDING_SHIFT)
-
-/* Interrupt controller features register (INT_FEATURES, address 0x60000300) */
-
-#define INTC_FEATURES_T_SHIFT (16) /* Bits 16-21: Number interrupt targets supported (+1) */
-#define INTC_FEATURES_T_MASK (63 << INTC_FEATURES_T_SHIFT)
-#define INTC_FEATURES_P_SHIFT (8) /* Bits 8-15: Number priority levels supported */
-#define INTC_FEATURES_P_MASK (255 << INTC_FEATURES_P_SHIFT)
-#define INTC_FEATURES_N_SHIFT (0) /* Bits 0-7: Number interrupt request inputs */
-#define INTC_FEATURES_N_MASK (255 << INTC_FEATURES_N_SHIFT)
-
-/* Interrupt request registers (INT_REQUEST1 address 0x60000404 to INTC_REQUEST29 address
- * 0x60000474)
- */
-
-#define INTC_REQUEST_PENDING (1 << 31) /* Bit 31: Pending interrupt request */
-#define INTC_REQUEST_SETSWINT (1 << 30) /* Bit 30: Set software interrupt request */
-#define INTC_REQUEST_CLRSWINT (1 << 29) /* Bit 29: Clear software interrupt request */
-#define INTC_REQUEST_WEPRIO (1 << 28) /* Bit 28: Write Enable PRIORITY_LEVEL */
-#define INTC_REQUEST_WETARGET (1 << 27) /* Bit 27: Write Enable TARGET */
-#define INTC_REQUEST_WEENABLE (1 << 26) /* Bit 26: Write Enable ENABLE */
-#define INTC_REQUEST_WEACTLOW (1 << 25) /* Bit 25: Write Enable ACTIVE_LOW */
-#define INTC_REQUEST_ACTLOW (1 << 17) /* Bit 17: Active Low */
-#define INTC_REQUEST_ENABLE (1 << 16) /* Bit 16: Enable interrupt request */
-#define INTC_REQUEST_TARGET_SHIFT (8) /* Bits 8-13: Interrupt target */
-#define INTC_REQUEST_TARGET_MASK (63 << INTC_REQUEST_TARGET_SHIFT)
-# define INTC_REQUEST_TARGET_IRQ (INTC_REQUEST_WETARGET | (0 << INTC_REQUEST_TARGET_SHIFT)) /* Proc interrupt request 0: IRQ */
-# define INTC_REQUEST_TARGET_FIQ (INTC_REQUEST_WETARGET | (1 << INTC_REQUEST_TARGET_SHIFT)) /* Proc interrupt request 1: FIQ */
-#define INTC_REQUEST_PRIOLEVEL_SHIFT (0) /* Bits 0-7: Priority level */
-#define INTC_REQUEST_PRIOLEVEL_MASK (255 << INTC_REQUEST_PRIOLEVEL_SHIFT)
-# define INTC_REQUEST_PRIOLEVEL(n) (((n) << INTC_REQUEST_PRIOLEVEL_SHIFT) & INTC_REQUEST_PRIOLEVEL_MASK)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_INTC_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_internal.h b/nuttx/arch/arm/src/lpc313x/lpc313x_internal.h
deleted file mode 100755
index 2ba9f94ab..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_internal.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_internal.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_LPC313X_INTERNAL_H
-#define __ARCH_ARM_SRC_LPC313X_LPC313X_INTERNAL_H
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "up_internal.h"
-#include "up_arch.h"
-#include "chip.h"
-#include "lpc313x_ioconfig.h"
-
-/************************************************************************************
- * Definitions
- ************************************************************************************/
-
-/* Configuration ********************************************************************/
-
-/* NVIC priority levels *************************************************************/
-
-/************************************************************************************
- * Public Types
- ************************************************************************************/
-
-/************************************************************************************
- * Inline Functions
- ************************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-/************************************************************************************
- * Public Data
- ************************************************************************************/
-
-#undef EXTERN
-#if defined(__cplusplus)
-#define EXTERN extern "C"
-extern "C" {
-#else
-#define EXTERN extern
-#endif
-
-/************************************************************************************
- * Inline Functions
- ************************************************************************************/
-
-/* Configure a pin as an input */
-
-static inline void gpio_configinput(uint32_t ioconfig, uint32_t bit)
-{
- uint32_t regaddr;
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE0RESET_OFFSET;
- putreg32(bit, regaddr);
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE1RESET_OFFSET;
- putreg32(bit, regaddr);
-}
-
-/* Return the current state of an input GPIO pin */
-
-static inline bool lpc313x_gpioread(uint32_t ioconfig, uint32_t bit)
-{
- uint32_t regaddr = ioconfig + LPC313X_IOCONFIG_PINS_OFFSET;
- return (getreg32(regaddr) & bit) != 0;
-}
-
-/* Configure the pin so that it is driven by the device */
-
-static inline void gpio_configdev(uint32_t ioconfig, uint32_t bit)
-{
- uint32_t regaddr;
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE1RESET_OFFSET;
- putreg32(bit, regaddr);
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE0SET_OFFSET;
- putreg32(bit, regaddr);
-}
-
-/* Configure a pin as a low output */
-
-static inline void gpio_outputlow(uint32_t ioconfig, uint32_t bit)
-{
- uint32_t regaddr;
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE1SET_OFFSET;
- putreg32(bit, regaddr);
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE0RESET_OFFSET;
- putreg32(bit, regaddr);
-}
-
-/* Configure a pin as a high output */
-
-static inline void gpio_outputhigh(uint32_t ioconfig, uint32_t bit)
-{
- uint32_t regaddr;
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE1SET_OFFSET;
- putreg32(bit, regaddr);
-
- regaddr = ioconfig + LPC313X_IOCONFIG_MODE0SET_OFFSET;
- putreg32(bit, regaddr);
-}
-
-/************************************************************************************
- * Public Function Prototypes
- ************************************************************************************/
-
-/************************************************************************************
- * Name: lpc313x_lowsetup
- *
- * Description:
- * Called early in up_boot. Performs chip-common low level initialization.
- *
- ************************************************************************************/
-
-EXTERN void lpc313x_lowsetup(void);
-
-/************************************************************************************
- * Name: lpc313x_clockconfig
- *
- * Description:
- * Called to change to new clock based on settings in board.h
- *
- ************************************************************************************/
-
-EXTERN void lpc313x_clockconfig(void);
-
-/************************************************************************************
- * Name: lpc313x_spiselect and lpc313x_spistatus
- *
- * Description:
- * The external functions, lpc313x_spiselect, lpc313x_spistatus, and
- * lpc313x_spicmddata must be provided by board-specific logic. These are
- * implementations of the select, status, and cmddata methods of the SPI interface
- * defined by struct spi_ops_s (see include/nuttx/spi.h). All other methods
- * (including up_spiinitialize()) are provided by common LPC313X logic. To use
- * this common SPI logic on your board:
- *
- * 1. Provide logic in lpc313x_boardinitialize() to configure SPI chip select
- * pins.
- * 2. Provide lpc313x_spiselect() and lpc313x_spistatus() functions in your
- * board-specific logic. These functions will perform chip selection and
- * status operations using GPIOs in the way your board is configured.
- * 3. If CONFIG_SPI_CMDDATA is selected in your NuttX configuration, provide
- * the lpc313x_spicmddata() function in your board-specific logic. This
- * function will perform cmd/data selection operations using GPIOs in the
- * way your board is configured.
- * 4. Add a calls to up_spiinitialize() in your low level application
- * initialization logic
- * 5. The handle returned by up_spiinitialize() may then be used to bind the
- * SPI driver to higher level logic (e.g., calling
- * mmcsd_spislotinitialize(), for example, will bind the SPI driver to
- * the SPI MMC/SD driver).
- *
- ************************************************************************************/
-
-struct spi_dev_s;
-enum spi_dev_e;
-EXTERN void lpc313x_spiselect(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected);
-EXTERN uint8_t lpc313x_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid);
-#ifdef CONFIG_SPI_CMDDATA
-EXTERN int lpc313x_spicmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd);
-#endif
-
-/************************************************************************************
- * Name: lpc313x_usbpullup
- *
- * Description:
- * If USB is supported and the board supports a pullup via GPIO (for USB software
- * connect and disconnect), then the board software must provide lpc313x_pullup.
- * See include/nuttx/usb/usbdev.h for additional description of this method.
- * Alternatively, if no pull-up GPIO the following EXTERN can be redefined to be
- * NULL.
- *
- ************************************************************************************/
-
-struct usbdev_s;
-EXTERN int lpc313x_usbpullup(FAR struct usbdev_s *dev, bool enable);
-
-/************************************************************************************
- * Name: lpc313x_usbsuspend
- *
- * Description:
- * Board logic must provide the lpc313x_usbsuspend logic if the USBDEV driver is
- * used. This function is called whenever the USB enters or leaves suspend mode.
- * This is an opportunity for the board logic to shutdown clocks, power, etc.
- * while the USB is suspended.
- *
- ************************************************************************************/
-
-struct usbdev_s;
-EXTERN void lpc313x_usbsuspend(FAR struct usbdev_s *dev, bool resume);
-
-/****************************************************************************
- * Name: sdio_initialize
- *
- * Description:
- * Initialize SDIO for operation.
- *
- * Input Parameters:
- * slotno - Not used.
- *
- * Returned Values:
- * A reference to an SDIO interface structure. NULL is returned on failures.
- *
- ****************************************************************************/
-
-struct sdio_dev_s; /* See include/nuttx/sdio.h */
-EXTERN FAR struct sdio_dev_s *sdio_initialize(int slotno);
-
-/****************************************************************************
- * Name: sdio_mediachange
- *
- * Description:
- * Called by board-specific logic -- posssible from an interrupt handler --
- * in order to signal to the driver that a card has been inserted or
- * removed from the slot
- *
- * Input Parameters:
- * dev - An instance of the SDIO driver device state structure.
- * cardinslot - true is a card has been detected in the slot; false if a
- * card has been removed from the slot. Only transitions
- * (inserted->removed or removed->inserted should be reported)
- *
- * Returned Values:
- * None
- *
- ****************************************************************************/
-
-EXTERN void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot);
-
-/****************************************************************************
- * Name: sdio_wrprotect
- *
- * Description:
- * Called by board-specific logic to report if the card in the slot is
- * mechanically write protected.
- *
- * Input Parameters:
- * dev - An instance of the SDIO driver device state structure.
- * wrprotect - true is a card is writeprotected.
- *
- * Returned Values:
- * None
- *
- ****************************************************************************/
-
-EXTERN void sdio_wrprotect(FAR struct sdio_dev_s *dev, bool wrprotect);
-
-#undef EXTERN
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_ARM_SRC_LPC313X_LPC313X_INTERNAL_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_ioconfig.h b/nuttx/arch/arm/src/lpc313x/lpc313x_ioconfig.h
deleted file mode 100755
index 739ac5ab1..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_ioconfig.h
+++ /dev/null
@@ -1,357 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_ioconfig.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_IOCONFIG_H
-#define __ARCH_ARM_SRC_LPC313X_IOCONFIG_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* IOCONFIG register base address offset into the APB0 domain ***********************************/
-
-#define LPC313X_IOCONFIG_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_IOCONFIG_OFFSET)
-#define LPC313X_IOCONFIG_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_IOCONFIG_OFFSET)
-
-/* IOCONFIG function block offsets (with respect to the IOCONFIG register base address) *********/
-
-#define LPC313X_IOCONFIG_EBIMCI_OFFSET 0x000 /* First set of 32 multiplexed pads */
-#define LPC313X_IOCONFIG_EBII2STX0_OFFSET 0X040 /* Second set of 32 of multiplexed pads */
-#define LPC313X_IOCONFIG_CGU_OFFSET 0X080 /* Clock Generation Unit function block */
-#define LPC313X_IOCONFIG_I2SRX0_OFFSET 0x0c0 /* I2SRX function block 0 */
-#define LPC313X_IOCONFIG_I2SRX1_OFFSET 0x100 /* I2SRX function block 1 */
-#define LPC313X_IOCONFIG_I2STX1_OFFSET 0x140 /* I2STX function block 1 */
-#define LPC313X_IOCONFIG_EBI_OFFSET 0x180 /* External Bus Interface function block */
-#define LPC313X_IOCONFIG_GPIO_OFFSET 0x1c0 /* General purpose IO */
-#define LPC313X_IOCONFIG_I2C1_OFFSET 0x200 /* I2C function block */
-#define LPC313X_IOCONFIG_SPI_OFFSET 0x240 /* SPI function block */
-#define LPC313X_IOCONFIG_NAND_OFFSET 0x280 /* NANDFLASH function block */
-#define LPC313X_IOCONFIG_PWM_OFFSET 0x2c0 /* PWM function block */
-#define LPC313X_IOCONFIG_UART_OFFSET 0x300 /* UART function block */
-
-/* IOCONFIG register offsets (with respect to any funcion block base address) *******************/
-
-#define LPC313X_IOCONFIG_PINS_OFFSET 0x000 /* WR: RD: Input pin state */
- /* 0x004-0x00c: Reserved */
-#define LPC313X_IOCONFIG_MODE0_OFFSET 0x010 /* WR:Load RD: */
-#define LPC313X_IOCONFIG_MODE0SET_OFFSET 0x014 /* WR:Set Bits RD:Read Mode 0 */
-#define LPC313X_IOCONFIG_MODE0RESET_OFFSET 0x018 /* WR:Reset Bits RD: */
- /* 0x01c: Reserved */
-#define LPC313X_IOCONFIG_MODE1_OFFSET 0x020 /* WR:Load RD: */
-#define LPC313X_IOCONFIG_MODE1SET_OFFSET 0x024 /* WR:Set Bits RD:Read Mode 1 */
-#define LPC313X_IOCONFIG_MODE1RESET_OFFSET 0x028 /* WR:Reset Bits RD: */
- /* 0x02c-0x3c: Reserved */
-
-/* IOCONFIG function block (virtual) base addresses *********************************************/
-
-#define LPC313X_IOCONFIG_EBIMCI (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_EBIMCI_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0 (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_EBII2STX0_OFFSET)
-#define LPC313X_IOCONFIG_CGU (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_CGU_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0 (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_I2SRX0_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1 (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_I2SRX1_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1 (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_I2STX1_OFFSET)
-#define LPC313X_IOCONFIG_EBI (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_EBI_OFFSET)
-#define LPC313X_IOCONFIG_GPIO (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_GPIO_OFFSET)
-#define LPC313X_IOCONFIG_I2C1 (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_I2C1_OFFSET)
-#define LPC313X_IOCONFIG_SPI (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_SPI_OFFSET)
-#define LPC313X_IOCONFIG_NAND (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_NAND_OFFSET)
-#define LPC313X_IOCONFIG_PWM (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_PWM_OFFSET)
-#define LPC313X_IOCONFIG_UART (LPC313X_IOCONFIG_VBASE+LPC313X_IOCONFIG_UART_OFFSET)
-
-/* IOCONFIG register (virtual) addresses ********************************************************/
-
-#define LPC313X_IOCONFIG_EBIMCI_PINS (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE0 (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE0SET (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE0RESET (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE1 (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE1SET (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_EBIMCI_MODE1RESET (LPC313X_IOCONFIG_EBIMCI+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_EBII2STX0_PINS (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE0 (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE0SET (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE0RESET (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE1 (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE1SET (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_EBII2STX0_MODE1RESET (LPC313X_IOCONFIG_EBII2STX0+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_CGU_PINS (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE0 (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE0SET (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE0RESET (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE1 (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE1SET (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_CGU_MODE1RESET (LPC313X_IOCONFIG_CGU+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_I2SRX0_PINS (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE0 (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE0SET (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE0RESET (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE1 (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE1SET (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX0_MODE1RESET (LPC313X_IOCONFIG_I2SRX0+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_I2SRX1_PINS (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE0 (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE0SET (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE0RESET (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE1 (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE1SET (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_I2SRX1_MODE1RESET (LPC313X_IOCONFIG_I2SRX1+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_I2STX1_PINS (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE0 (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE0SET (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE0RESET (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE1 (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE1SET (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_I2STX1_MODE1RESET (LPC313X_IOCONFIG_I2STX1+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_EBI_PINS (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE0 (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE0SET (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE0RESET (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE1 (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE1SET (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_EBI_MODE1RESET (LPC313X_IOCONFIG_EBI+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_GPIO_PINS (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE0 (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE0SET (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE0RESET (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE1 (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE1SET (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_GPIO_MODE1RESET (LPC313X_IOCONFIG_GPIO+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_I2C1_PINS (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE0 (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE0SET (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE0RESET (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE1 (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE1SET (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_I2C1_MODE1RESET (LPC313X_IOCONFIG_I2C1+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_SPI_PINS (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE0 (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE0SET (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE0RESET (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE1 (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE1SET (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_SPI_MODE1RESET (LPC313X_IOCONFIG_SPI+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_NAND_PINS (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE0 (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE0SET (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE0RESET (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE1 (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE1SET (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_NAND_MODE1RESET (LPC313X_IOCONFIG_NAND+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_PWM_PINS (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE0 (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE0SET (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE0RESET (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE1 (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE1SET (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_PWM_MODE1RESET (LPC313X_IOCONFIG_PWM+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-#define LPC313X_IOCONFIG_UART_PINS (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_PINS_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE0 (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE0_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE0SET (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE0SET_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE0RESET (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE0RESET_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE1 (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE1_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE1SET (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE1SET_OFFSET)
-#define LPC313X_IOCONFIG_UART_MODE1RESET (LPC313X_IOCONFIG_UART+LPC313X_IOCONFIG_MODE1RESET_OFFSET)
-
-/* IOCONFIG register bit definitions ************************************************************/
-/* EBI_MCI register bit definitions (all registers) */
-
-
-#define IOCONFIG_EBIMCI_MGPIO9 (1 << 0)
-#define IOCONFIG_EBIMCI_MGPIO6 (1 << 1)
-#define IOCONFIG_EBIMCI_MLCDDB7 (1 << 2)
-#define IOCONFIG_EBIMCI_MLCDDB4 (1 << 3)
-#define IOCONFIG_EBIMCI_MLCDDB2 (1 << 4)
-#define IOCONFIG_EBIMCI_MNANDRYBN0 (1 << 5)
-#define IOCONFIG_EBIMCI_MI2STXCLK0 (1 << 6)
-#define IOCONFIG_EBIMCI_MI2STXBCK0 (1 << 7)
-#define IOCONFIG_EBIMCI_EBIA1CLE (1 << 8)
-#define IOCONFIG_EBIMCI_EBINCASBLOUT0 (1 << 9)
-#define IOCONFIG_EBIMCI_MLCDDB0 (1 << 10)
-#define IOCONFIG_EBIMCI_EBIDQM0NOE (1 << 11)
-#define IOCONFIG_EBIMCI_MLCDCSB (1 << 12)
-#define IOCONFIG_EBIMCI_MLCDDB1 (1 << 13)
-#define IOCONFIG_EBIMCI_MLCDERD (1 << 14)
-#define IOCONFIG_EBIMCI_MLCDRS (1 << 15)
-#define IOCONFIG_EBIMCI_MLCDRWWR (1 << 16)
-#define IOCONFIG_EBIMCI_MLCDDB3 (1 << 17)
-#define IOCONFIG_EBIMCI_MLCDDB5 (1 << 18)
-#define IOCONFIG_EBIMCI_MLCDDB6 (1 << 19)
-#define IOCONFIG_EBIMCI_MLCDDB8 (1 << 20)
-#define IOCONFIG_EBIMCI_MLCDDB9 (1 << 21)
-#define IOCONFIG_EBIMCI_MLCDDB10 (1 << 22)
-#define IOCONFIG_EBIMCI_MLCDDB11 (1 << 23)
-#define IOCONFIG_EBIMCI_MLCDDB12 (1 << 24)
-#define IOCONFIG_EBIMCI_MLCDDB13 (1 << 25)
-#define IOCONFIG_EBIMCI_MLCDDB14 (1 << 26)
-#define IOCONFIG_EBIMCI_MLCDDB15 (1 << 27)
-#define IOCONFIG_EBIMCI_MGPIO5 (1 << 28)
-#define IOCONFIG_EBIMCI_MGPIO7 (1 << 29)
-#define IOCONFIG_EBIMCI_MGPIO8 (1 << 30)
-#define IOCONFIG_EBIMCI_MGPIO10 (1 << 31)
-
-/* EBI_I2STX_0 register bit definitions (all registers) */
-
-#define IOCONFIG_EBII2STX0_MNANDRYBN1 (1 << 0)
-#define IOCONFIG_EBII2STX0_MNANDRYBN2 (1 << 1)
-#define IOCONFIG_EBII2STX0_MNANDRYBN3 (1 << 2)
-#define IOCONFIG_EBII2STX0_MUARTCTSN (1 << 3)
-#define IOCONFIG_EBII2STX0_MUARTRTSN (1 << 4)
-#define IOCONFIG_EBII2STX0_MI2STXDATA0 (1 << 5)
-#define IOCONFIG_EBII2STX0_MI2STXWS0 (1 << 6)
-#define IOCONFIG_EBII2STX0_EBINRASBLOUT1 (1 << 7)
-#define IOCONFIG_EBII2STX0_EBIA0ALE (1 << 8)
-#define IOCONFIG_EBII2STX0_EBINWE (1 << 9)
-
-/* CGU register bit definitions (all registers) */
-
-#define IOCONFIG_CGU_SYSCLKO (1 << 0)
-
-/* I2SRX_0 register bit definitions (all registers) */
-
-#define IOCONFIG_I2SRX0_BCK (1 << 0)
-#define IOCONFIG_I2SRX0_DATA (1 << 1)
-#define IOCONFIG_I2SRX0_WS (1 << 2)
-
-/* I2SRX_1 register bit definitions (all registers) */
-
-#define IOCONFIG_I2SRX1_DATA (1 << 0)
-#define IOCONFIG_I2SRX1_BCK (1 << 1)
-#define IOCONFIG_I2SRX1_WS (1 << 2)
-
-/* I2STX_1 register bit definitions (all registers) */
-
-#define IOCONFIG_I2STX1_DATA (1 << 0)
-#define IOCONFIG_I2STX1_BCK (1 << 1)
-#define IOCONFIG_I2STX1_WS (1 << 2)
-#define IOCONFIG_I2STX1_256FSO (1 << 3)
-
-/* EBI register bit definitions (all registers) */
-
-#define IOCONFIG_EBI_D9 (1 << 0)
-#define IOCONFIG_EBI_D10 (1 << 1)
-#define IOCONFIG_EBI_D11 (1 << 2)
-#define IOCONFIG_EBI_D12 (1 << 3)
-#define IOCONFIG_EBI_D13 (1 << 4)
-#define IOCONFIG_EBI_D14 (1 << 5)
-#define IOCONFIG_EBI_D4 (1 << 6)
-#define IOCONFIG_EBI_D0 (1 << 7)
-#define IOCONFIG_EBI_D1 (1 << 8)
-#define IOCONFIG_EBI_D2 (1 << 9)
-#define IOCONFIG_EBI_D3 (1 << 10)
-#define IOCONFIG_EBI_D5 (1 << 11)
-#define IOCONFIG_EBI_D6 (1 << 12)
-#define IOCONFIG_EBI_D7 (1 << 13)
-#define IOCONFIG_EBI_D8 (1 << 14)
-#define IOCONFIG_EBI_D15 (1 << 15)
-
-/* GPIO register bit definitions (all registers) */
-
-#define IOCONFIG_GPIO_GPIO1 (1 << 0)
-#define IOCONFIG_GPIO_GPIO0 (1 << 1)
-#define IOCONFIG_GPIO_GPIO2 (1 << 2)
-#define IOCONFIG_GPIO_GPIO3 (1 << 3)
-#define IOCONFIG_GPIO_GPIO4 (1 << 4)
-#define IOCONFIG_GPIO_GPIO11 (1 << 5)
-#define IOCONFIG_GPIO_GPIO12 (1 << 6)
-#define IOCONFIG_GPIO_GPIO13 (1 << 7)
-#define IOCONFIG_GPIO_GPIO14 (1 << 8)
-#define IOCONFIG_GPIO_GPIO15 (1 << 9)
-#define IOCONFIG_GPIO_GPIO16 (1 << 10)
-#define IOCONFIG_GPIO_GPIO17 (1 << 11)
-#define IOCONFIG_GPIO_GPIO18 (1 << 12)
-#define IOCONFIG_GPIO_GPIO19 (1 << 13)
-#define IOCONFIG_GPIO_GPIO20 (1 << 14)
-
-/* I2C1 register bit definitions (all registers) */
-
-#define IOCONFIG_I2C1_SDA1 (1 << 0)
-#define IOCONFIG_I2C1_SCL1 (1 << 1)
-
-/* SPI register bit definitions (all registers) */
-
-#define IOCONFIG_SPI_MISO (1 << 0)
-#define IOCONFIG_SPI_MOSI (1 << 1)
-#define IOCONFIG_SPI_CSIN (1 << 2)
-#define IOCONFIG_SPI_SCK (1 << 3)
-#define IOCONFIG_SPI_CSOUT0 (1 << 4)
-
-/* NAND register bit definitions (all registers) */
-
-#define IOCONFIG_NAND_NCS3 (1 << 0)
-#define IOCONFIG_NAND_NCS0 (1 << 1)
-#define IOCONFIG_NAND_NCS1 (1 << 2)
-#define IOCONFIG_NAND_NCS2 (1 << 3)
-
-/* PWM register bit definitions (all registers) */
-
-#define IOCONFIG_PWM_DATA (1 << 0)
-
-/* UART register bit definitions (all registers) */
-
-#define IOCONFIG_UART_RXD (1 << 0)
-#define IOCONFIG_UART_TXD (1 << 1)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_IOCONFIG_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_irq.c b/nuttx/arch/arm/src/lpc313x/lpc313x_irq.c
deleted file mode 100755
index 9b7f10e12..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_irq.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_irq.c
- * arch/arm/src/chip/lpc313x_irq.c
- *
- * Copyright (C) 2009-2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <debug.h>
-
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <arch/irq.h>
-
-#include "arm.h"
-#include "up_arch.h"
-#include "os_internal.h"
-#include "up_internal.h"
-
-#include "lpc313x_intc.h"
-#include "lpc313x_cgudrvr.h"
-#include "lpc313x_internal.h"
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-volatile uint32_t *current_regs;
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_irqinitialize
- ****************************************************************************/
-
-void up_irqinitialize(void)
-{
- int irq;
-
- /* Enable clock to interrupt controller */
-
- lpc313x_enableclock(CLKID_AHB2INTCCLK); /* AHB_TO_INTC_CLK */
- lpc313x_enableclock(CLKID_INTCCLK); /* INTC_CLK */
-
- /* Set the vector base. We don't use direct vectoring, so these are set to 0. */
-
- putreg32(0, LPC313X_INTC_VECTOR0);
- putreg32(0, LPC313X_INTC_VECTOR1);
-
- /* Set the priority treshold to 0, i.e. don't mask any interrupt on the
- * basis of priority level, for both targets (IRQ/FIQ)
- */
-
- putreg32(0, LPC313X_INTC_PRIORITYMASK0); /* Proc interrupt request 0: IRQ */
- putreg32(0, LPC313X_INTC_PRIORITYMASK1); /* Proc interrupt request 1: FIQ */
-
- /* Disable all interrupts. Start from index 1 since 0 is unused.*/
-
- for (irq = 0; irq < NR_IRQS; irq++)
- {
- /* Initialize as high-active, disable the interrupt, set target to IRQ,
- * Set priority level to 1 (= lowest) for all the interrupt lines
- */
-
- uint32_t address = LPC313X_INTC_REQUEST(irq+1);
- putreg32(INTC_REQUEST_WEACTLOW|INTC_REQUEST_WEENABLE|INTC_REQUEST_TARGET_IRQ|
- INTC_REQUEST_PRIOLEVEL(1)|INTC_REQUEST_WEPRIO, address);
-
- }
-
- /* currents_regs is non-NULL only while processing an interrupt */
-
- current_regs = NULL;
-
- /* And finally, enable interrupts */
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
- irqrestore(SVC_MODE | PSR_F_BIT);
-#endif
-}
-
-/****************************************************************************
- * Name: up_disable_irq
- *
- * Description:
- * Disable the IRQ specified by 'irq'
- *
- ****************************************************************************/
-
-void up_disable_irq(int irq)
-{
- /* Get the address of the request register corresponding to this
- * interrupt source
- */
-
- uint32_t address = LPC313X_INTC_REQUEST(irq+1);
-
- /* Clear the ENABLE bit with WE_ENABLE=1. Configuration settings will be
- * preserved because WE_TARGET is zero.
- */
-
- putreg32(INTC_REQUEST_WEENABLE, address);
-}
-
-/****************************************************************************
- * Name: up_enable_irq
- *
- * Description:
- * Enable the IRQ specified by 'irq'
- *
- ****************************************************************************/
-
-void up_enable_irq(int irq)
-{
- /* Get the address of the request register corresponding to this
- * interrupt source
- */
-
- uint32_t address = LPC313X_INTC_REQUEST(irq+1);
-
- /* Set the ENABLE bit with WE_ENABLE=1. Configuration settings will be
- * preserved because WE_TARGET is zero.
- */
-
- putreg32(INTC_REQUEST_ENABLE|INTC_REQUEST_WEENABLE, address);
-}
-
-/****************************************************************************
- * Name: up_maskack_irq
- *
- * Description:
- * Mask the IRQ and acknowledge it
- *
- ****************************************************************************/
-
-void up_maskack_irq(int irq)
-{
- /* Get the address of the request register corresponding to this
- * interrupt source
- */
-
- uint32_t address = LPC313X_INTC_REQUEST(irq+1);
-
- /* Clear the pending interrupt (INTC_REQUEST_CLRSWINT=1) AND disable interrupts
- * (ENABLE=0 && WE_ENABLE=1). Configuration settings will be preserved because
- * WE_TARGET is zero.
- */
-
- putreg32(INTC_REQUEST_CLRSWINT|INTC_REQUEST_WEENABLE, address);
-}
-
-/****************************************************************************
- * Name: up_prioritize_irq
- *
- * Description:
- * Set the priority of an IRQ.
- *
- * Since this API is not supported on all architectures, it should be
- * avoided in common implementations where possible.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_IRQPRIO
-int up_prioritize_irq(int irq, int priority)
-{
-#warning "Not implemented"
- return OK;
-}
-#endif
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_lcd.h b/nuttx/arch/arm/src/lpc313x/lpc313x_lcd.h
deleted file mode 100755
index f248c32a3..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_lcd.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_lcd.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_LCD_H
-#define __ARCH_ARM_SRC_LPC313X_LCD_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* LCD register base address offset into the APB2 domain ****************************************/
-
-#define LPC313X_LCD_VBASE (LPC313X_APB2_VSECTION+LPC313X_APB2_LCD_OFFSET)
-#define LPC313X_LCD_PBASE (LPC313X_APB2_PSECTION+LPC313X_APB2_LCD_OFFSET)
-
-/* LCD register offsets (with respect to the LCD base) ******************************************/
-
-#define LPC313X_LCD_STATUS_OFFSET 0x000 /* Status register */
-#define LPC313X_LCD_CONTROL_OFFSET 0x004 /* Control register */
-#define LPC313X_LCD_INTRAW_OFFSET 0x008 /* Interrupt Raw register */
-#define LPC313X_LCD_INTCLEAR_OFFSET 0x00c /* Interrupt Clear register */
-#define LPC313X_LCD_INTMASK_OFFSET 0x010 /* Interrupt Mask Register */
-#define LPC313X_LCD_READCMD_OFFSET 0x014 /* Read Command register */
-#define LPC313X_LCD_INSTBYTE_OFFSET 0x020 /* Instruction Byte Register */
-#define LPC313X_LCD_DATABYTE_OFFSET 0x030 /* Data Byte Register */
-#define LPC313X_LCD_INSTWORD_OFFSET 0x040 /* Instruction Word register */
-#define LPC313X_LCD_DATAWORD_OFFSET 0x080 /* Data Word register */
-
-/* LCD register (virtual) addresses *************************************************************/
-
-#define LPC313X_LCD_STATUS (LPC313X_LCD_VBASE+LPC313X_LCD_STATUS_OFFSET)
-#define LPC313X_LCD_CONTROL (LPC313X_LCD_VBASE+LPC313X_LCD_CONTROL_OFFSET)
-#define LPC313X_LCD_INTRAW (LPC313X_LCD_VBASE+LPC313X_LCD_INTRAW_OFFSET)
-#define LPC313X_LCD_INTCLEAR (LPC313X_LCD_VBASE+LPC313X_LCD_INTCLEAR_OFFSET)
-#define LPC313X_LCD_INTMASK (LPC313X_LCD_VBASE+LPC313X_LCD_INTMASK_OFFSET)
-#define LPC313X_LCD_READCMD (LPC313X_LCD_VBASE+LPC313X_LCD_READCMD_OFFSET)
-#define LPC313X_LCD_INSTBYTE (LPC313X_LCD_VBASE+LPC313X_LCD_INSTBYTE_OFFSET)
-#define LPC313X_LCD_DATABYTE (LPC313X_LCD_VBASE+LPC313X_LCD_DATABYTE_OFFSET)
-#define LPC313X_LCD_INSTWORD (LPC313X_LCD_VBASE+LPC313X_LCD_INSTWORD_OFFSET)
-#define LPC313X_LCD_DATAWORD (LPC313X_LCD_VBASE+LPC313X_LCD_DATAWORD_OFFSET)
-
-/* LCD register bit definitions *****************************************************************/
-/* LCD interface Status Register LCD_STATUS, address 0x15000400 */
-
-#define LCD_STATUS_COUNTER_SHIFT (5) /* Bits 5-9: Current value of the FIFO counter */
-#define LCD_STATUS_COUNTER_MASK (0x1f << LCD_STATUS_COUNTER_SHIFT)
-#define LCD_STATUS_INTERFACEBUSY (1 << 4) /* Bit 4: LCD interface still reading value */
-#define LCD_STATUS_INTREADVALID (1 << 3) /* Bit 3: Value read from the LCD controller is valid */
-#define LCD_STATUS_INTFIFOOVERRUN (1 << 2) /* Bit 2: Value written is larger than the FIFO can hold */
-#define LCD_STATUS_INTFIFOHALFEMPTY (1 << 1) /* Bit 1: FIFO is less then half full */
-#define LCD_STATUS_INTFIFOEMPTY (1 << 0) /* Bit 0: FIFO is empty */
-
-/* LCD interface Control register LCD_CONTROL, address 0x15000404 */
-
-#define LCD_CONTROL_BYASYNCRELCLK (1 << 20) /* Bit 20: Bypass PCLK & LCDLCOK asynch logic */
-#define LCD_CONTROL_IF16 (1 << 19) /* Bit 19: Interface to 16 bit LCD-Controller*/
-#define LCD_CONTROL_LOOPBACK (1 << 18) /* Bit 18: LCD Interface in Loopback mode*/
-#define LCD_CONTROL_MSBFIRST (1 << 17) /* Bit 17: Send multi-byte data MSB first*/
-#define LCD_CONTROL_INVERTERD (1 << 16) /* Bit 16: Invert polarity of E_RD*/
-#define LCD_CONTROL_INVERTCS (1 << 15) /* Bit 15: Invert CS*/
-#define LCD_CONTROL_BUSYRSVALUE (1 << 14) /* Bit 14: Busy check on RS=1*/
-#define LCD_CONTROL_BUSYBITNR_SHIFT (10) /* Bits 10-13: Bit that represents busy flag*/
-#define LCD_CONTROL_BUSYBITNR_MASK (15 << LCD_CONTROL_BUSYBITNR_SHIFT)
-#define LCD_CONTROL_BUSYVALUE (1 << 9) /* Bit 9: LCD controller is busy if bit=1*/
-#define LCD_CONTROL_BUSYFLAGCHECK (1 << 8) /* Bit 8: Enable the busy-flag-checking*/
-#define LCD_CONTROL_SERRDPOSS_SHIFT (9) /* Bits 6-7: 7:6 Serial sample mode*/
-#define LCD_CONTROL_SERRDPOSS_MASK (3 << LCD_CONTROL_SERRDPOSS_SHIFT)
-# define LCD_CONTROL_SERRDPOSS_START (0 << LCD_CONTROL_SERRDPOSS_SHIFT) /* Sample at beginning of cycle*/
-# define LCD_CONTROL_SERRDPOSS_FOURTH (1 << LCD_CONTROL_SERRDPOSS_SHIFT) /* Sample at 0.25 * cycle*/
-# define LCD_CONTROL_SERRDPOSS_HALF (2 << LCD_CONTROL_SERRDPOSS_SHIFT) /* Sample at 0.5 * cycle*/
-# define LCD_CONTROL_SERRDPOSS_3FOURTHS (3 << LCD_CONTROL_SERRDPOSS_SHIFT) /* Sample at 0.75 * cycle*/
-#define LCD_CONTROL_SERCLKSHIFT_SHIFT (4) /* Bits 4-5: Serial clock mode*/
-#define LCD_CONTROL_SERCLKSHIFT_MASK (3 << LCD_CONTROL_SERCLKSHIFT_SHIFT)
-# define LCD_CONTROL_SERCLKSHIFT_MODE0 (0 << LCD_CONTROL_SERCLKSHIFT_SHIFT) /* Clock mode 0*/
-# define LCD_CONTROL_SERCLKSHIFT_MODE1 (1 << LCD_CONTROL_SERCLKSHIFT_SHIFT) /* Clock mode 1*/
-# define LCD_CONTROL_SERCLKSHIFT_MODE2 (2 << LCD_CONTROL_SERCLKSHIFT_SHIFT) /* Clock mode 2*/
-# define LCD_CONTROL_SERCLKSHIFT_MODE3 (3 << LCD_CONTROL_SERCLKSHIFT_SHIFT) /* Clock mode 3*/
-#define LCD_CONTROL_4BIT (1 << 3) /* Bit 2: LCD interface 4 bit mode (vs 8)*/
-#define LCD_CONTROL_MI (1 << 2) /* Bit 2: LCD interface 6800 mode (vs 8080 mode)*/
-#define LCD_CONTROL_PS (1 << 1) /* Bit 1: LCD interface serial mode (vs parallel)*/
-
-/* LCD interface Interrupt Raw register LCD_INTRAW, address 0x15000408
- * LCD interface Interrupt Clear register LCD_INTCLEAR, address 0x1500040c
- * LCD interface Interrupt Mask register LCD_INTMASK, address 0x15000410
- */
-
-#define LCD_INT_READVALID (1 << 3) /* Bit 3: Value that has been read from the LCD controller */
-#define LCD_INT_OVERRUN (1 << 2) /* Bit 2: FIFO overrun */
-#define LCD_INT_FIFOHALFEMPTY (1 << 1) /* Bit 1: FIFO is less then half full */
-#define LCD_INT_FIFO_EMPTY (1 << 0) /* Bit 0: FIFO is empty */
-
-/* LCD interface Read Command register LCD_READCMD, address 0x15000414 */
-
-#define LCD_READCMD_DATABYTE (1 << 0) /* Bit 0: Read in DATA byte (vs INST) */
-
-/* LCD interface Instruction Byte register LCD_INSTBYTE, address 0x15000420 */
-
-#define LCD_INSTBYTE_WORD_SHIFT (0) /* Bits 0-15: 16 bit mode = 15:0 Instruction */
-#define LCD_INSTBYTE_WORD_MASK (0xffff << LCD_INSTBYTE_WORD_SHIFT)
-#define LCD_INSTBYTE_BYTE_SHIFT (0) /* Bits 0-7: 8 bit mode = 7:0 Instruction */
-#define LCD_INSTBYTE_BYTE_MASK (0xff << LCD_INSTBYTE_BYTE_SHIFT)
-
-/* LCD interface Data Byte register LCD_DATABYTE, address 0x15000430 */
-
-#define LCD_DATABYTE_WORD_SHIFT (0) /* Bits 0-15: 16 bit mode = 15:0 Instruction */
-#define LCD_DATABYTE_WORD_MASK (0xffff << LCD_IDATABYTE_WORD_SHIFT)
-#define LCD_DATABYTE_BYTE_SHIFT (0) /* Bits 0-7: 8 bit mode = 7:0 Instruction */
-#define LCD_DATABYTE_BYTE_MASK (0xff << LCD_IDATABYTE_BYTE_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_LCD_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_lowputc.c b/nuttx/arch/arm/src/lpc313x/lpc313x_lowputc.c
deleted file mode 100755
index 5bfde83fc..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_lowputc.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_lowputc.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-
-#include "up_arch.h"
-#include "up_internal.h"
-
-#include "lpc313x_cgudrvr.h"
-#include "lpc313x_uart.h"
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-
-/* Configuration ************************************************************/
-
-/* Is the UART enabled? */
-
-#ifdef CONFIG_LPC313X_UART
-# define HAVE_UART 1
-
-/* Is it a serial console? */
-
-# ifdef CONFIG_UART_SERIAL_CONSOLE
-# define HAVE_CONSOLE 1
-
- /* Is initialization performed by up_earlyserialinit()? Or is UART
- * initialization suppressed?
- */
-
-# if defined(CONFIG_USE_EARLYSERIALINIT) || defined(CONFIG_SUPPRESS_LPC313X_UART_CONFIG)
-# undef NEED_LOWSETUP
-# else
-# define NEED_LOWSETUP 1
-# endif
-# else
-# undef HAVE_CONSOLE
-# undef NEED_LOWSETUP
-# endif
-
-#else
-# undef HAVE_UART
-# undef HAVE_CONSOLE
-# undef NEED_LOWSETUP
-#endif
-
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-/****************************************************************************
- * Private Variables
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_waittxready
- ****************************************************************************/
-
-#ifdef HAVE_CONSOLE
-static inline void up_waittxready(void)
-{
- int tmp;
-
- /* Limit how long we will wait for the TX available condition */
-
- for (tmp = 1000 ; tmp > 0 ; tmp--)
- {
- /* Check if the tranmitter holding register (THR) is empty */
-
- if ((getreg32(LPC313X_UART_LSR) & UART_LSR_THRE) != 0)
- {
- /* The THR is empty, return */
-
- break;
- }
- }
-}
-#endif
-
-/****************************************************************************
- * Name: up_configbaud
- ****************************************************************************/
-
-#ifdef NEED_LOWSETUP
-static inline void up_configbaud(void)
-{
- /* In a buckled-up, embedded system, there is no reason to constantly
- * calculate the following. The calculation can be skipped if the
- * MULVAL, DIVADDVAL, and DIVISOR values are provided in the configuration
- * file.
- */
-
-#ifndef CONFIG_LPC313X_UART_MULVAL
- uint32_t qtrclk;
- uint32_t regval;
-
- /* Test values calculated for every multiplier/divisor combination */
-
- uint32_t tdiv;
- uint32_t terr;
- int tmulval;
- int tdivaddval;
-
- /* Optimal multiplier/divider values */
-
- uint32_t div = 0;
- uint32_t err = 100000;
- int mulval = 1;
- int divaddval = 0;
-
- /* Baud is generated using FDR and DLL-DLM registers
- *
- * baud = clock * (mulval/(mulval+divaddval) / (16 * div)
- *
- * Or
- *
- * div = (clock/16) * (mulval/(mulval+divaddval) / baud
- *
- * Where mulval = Fractional divider multiplier
- * divaddval = Fractional divider pre-scale div
- * div = DLL-DLM divisor
- */
-
- /* Get UART block clock divided by 16 */
-
- qtrclk = lpc313x_clkfreq(CLKID_UARTUCLK, DOMAINID_UART) >> 4;
-
- /* Try every valid multiplier, tmulval (or until a perfect
- * match is found).
- */
-
- for (tmulval = 1 ; tmulval <= 15 && err > 0; tmulval++)
- {
- /* Try every valid pre-scale div, tdivaddval (or until a perfect
- * match is found).
- */
-
- for (tdivaddval = 0 ; tdivaddval <= 15 && err > 0; tdivaddval++)
- {
- /* Calculate the divisor with these fractional divider settings */
-
- uint32_t tmp = (tmulval * qtrclk) / ((tmulval + tdivaddval));
- tdiv = (tmp + (CONFIG_UART_BAUD>>1)) / CONFIG_UART_BAUD;
-
- /* Check if this candidate divisor is within a valid range */
-
- if (tdiv > 2 && tdiv < 0x10000)
- {
- /* Calculate the actual baud and the error */
-
- uint32_t actualbaud = tmp / tdiv;
-
- if (actualbaud <= CONFIG_UART_BAUD)
- {
- terr = CONFIG_UART_BAUD - actualbaud;
- }
- else
- {
- terr = actualbaud - CONFIG_UART_BAUD;
- }
-
- /* Is this the smallest error we have encountered? */
-
- if (terr < err)
- {
- /* Yes, save these settings as the new, candidate optimal settings */
-
- mulval = tmulval ;
- divaddval = tdivaddval;
- div = tdiv;
- err = terr;
- }
- }
- }
- }
-
- /* Set the Divisor Latch Access Bit (DLAB) to enable DLL/DLM access */
-
- regval = getreg32(LPC313X_UART_LCR);
- regval |= UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the MS and LS DLAB registers */
-
- putreg32(div & UART_DLL_MASK, LPC313X_UART_DLL);
- putreg32((div >> 8) & UART_DLL_MASK, LPC313X_UART_DLM);
-
- regval &= ~UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the Fractional Divider Register (FDR) */
-
- putreg32((mulval << UART_FDR_MULVAL_SHIFT) |
- (divaddval << UART_FDR_DIVADDVAL_SHIFT),
- LPC313X_UART_FDR);
-#else
- /* Set the Divisor Latch Access Bit (DLAB) to enable DLL/DLM access */
-
- regval = getreg32(LPC313X_UART_LCR);
- regval |= UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the MS and LS DLAB registers */
-
- putreg32(CONFIG_LPC313X_UART_DIVISOR & UART_DLL_MASK, LPC313X_UART_DLL);
- putreg32((CONFIG_LPC313X_UART_DIVISOR >> 8) & UART_DLL_MASK, LPC313X_UART_DLM);
-
- regval &= ~UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the Fractional Divider Register (FDR) */
-
- putreg32((CONFIG_LPC313X_UART_MULVAL << UART_FDR_MULVAL_SHIFT) |
- (CONFIG_LPC313X_UART_DIVADDVAL << UART_FDR_DIVADDVAL_SHIFT),
- LPC313X_UART_FDR);
-#endif
-}
-#endif
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-/****************************************************************************
- * Name: lpc313x_lowsetup
- *
- * Description:
- * Called early in up_boot. Performs chip-common low level initialization.
- *
- ****************************************************************************/
-
-void lpc313x_lowsetup(void)
-{
-#ifdef NEED_LOWSETUP
- uint32_t regval;
-
- /* Enable UART system clock */
-
- lpc313x_enableclock(CLKID_UARTAPBCLK);
- lpc313x_enableclock(CLKID_UARTUCLK);
-
- /* Clear fifos */
-
- putreg32((UART_FCR_RXFIFORST|UART_FCR_TXFIFORST), LPC313X_UART_FCR);
-
- /* Set trigger */
-
- putreg32((UART_FCR_FIFOENABLE|UART_FCR_RXTRIGLEVEL_16), LPC313X_UART_FCR);
-
- /* Set up the LCR */
-
- regval = 0;
-
-#if CONFIG_UART_BITS == 5
- regval |= UART_LCR_WDLENSEL_5BITS;
-#elif CONFIG_UART_BITS == 6
- regval |= UART_LCR_WDLENSEL_6BITS;
-#elif CONFIG_UART_BITS == 7
- regval |= UART_LCR_WDLENSEL_7BITS;
-#else
- regval |= UART_LCR_WDLENSEL_8BITS;
-#endif
-
-#if CONFIG_UART_2STOP > 0
- regval |= UART_LCR_NSTOPBITS;
-#endif
-
-#if CONFIG_UART_PARITY == 1
- regval |= UART_LCR_PAREN;
-#elif CONFIG_UART_PARITY == 2
- regval |= (UART_LCR_PAREVEN|UART_LCR_PAREN);
-#endif
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Set the BAUD divisor */
-
- up_configbaud();
-
- /* Configure the FIFOs */
-
- putreg32((UART_FCR_RXTRIGLEVEL_16|UART_FCR_TXFIFORST|
- UART_FCR_RXFIFORST|UART_FCR_FIFOENABLE),
- LPC313X_UART_FCR);
-
- /* The NuttX serial driver waits for the first THRE interrrupt before
- * sending serial data... However, it appears that the lpc313x hardware
- * does not generate that interrupt until a transition from not-empty
- * to empty. So, the current kludge here is to send one NULL at
- * startup to kick things off.
- */
-
- putreg32('\0', LPC313X_UART_THR);
-#endif
-}
-
-/****************************************************************************
- * Name: up_lowputc
- *
- * Description:
- * Provide priority, low-level access to support OS debug writes
- *
- ****************************************************************************/
-
-void up_lowputc(char ch)
-{
-#ifdef HAVE_CONSOLE
- up_waittxready();
- putreg32((uint32_t)ch, LPC313X_UART_THR);
-#endif
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_mci.h b/nuttx/arch/arm/src/lpc313x/lpc313x_mci.h
deleted file mode 100755
index 881929d71..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_mci.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_mci.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_MCI_H
-#define __ARCH_ARM_SRC_LPC313X_MCI_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* MCI register base address offset into the MCI domain *****************************************/
-
-#define LPC313X_MCI_VBASE (LPC313X_MCI_VSECTION)
-#define LPC313X_MCI_PBASE (LPC313X_MCI_PSECTION)
-
-/* MCI register offsets (with respect to the MCI base) ******************************************/
-
-#define LPC313X_MCI_CTRL_OFFSET 0x000 /* Control register */
-#define LPC313X_MCI_PWREN_OFFSET 0x004 /* Reserved */
-#define LPC313X_MCI_CLKDIV_OFFSET 0x008 /* Clock-divider register */
-#define LPC313X_MCI_CLKSRC_OFFSET 0x00c /* Clock-source register */
-#define LPC313X_MCI_CLKENA_OFFSET 0x010 /* Clock-enable register */
-#define LPC313X_MCI_TMOUT_OFFSET 0x014 /* Time-out register */
-#define LPC313X_MCI_CTYPE_OFFSET 0x018 /* Card-type register */
-#define LPC313X_MCI_BLKSIZ_OFFSET 0x01c /* Block-size register */
-#define LPC313X_MCI_BYTCNT_OFFSET 0x020 /* Byte-count register */
-#define LPC313X_MCI_INTMASK_OFFSET 0x024 /* Interrupt-mask register */
-#define LPC313X_MCI_CMDARG_OFFSET 0x028 /* Command-argument register */
-#define LPC313X_MCI_CMD_OFFSET 0x02c /* Command register */
-#define LPC313X_MCI_RESP0_OFFSET 0x030 /* Response-0 register */
-#define LPC313X_MCI_RESP1_OFFSET 0x034 /* Response-1register */
-#define LPC313X_MCI_RESP2_OFFSET 0x038 /* Response-2 register */
-#define LPC313X_MCI_RESP3_OFFSET 0x03c /* Response-3 register */
-#define LPC313X_MCI_MINTSTS_OFFSET 0x040 /* Masked interrupt-status register */
-#define LPC313X_MCI_RINTSTS_OFFSET 0x044 /* Raw interrupt-status register */
-#define LPC313X_MCI_STATUS_OFFSET 0x048 /* Status register */
-#define LPC313X_MCI_FIFOTH_OFFSET 0x04c /* FIFO threshold register */
-#define LPC313X_MCI_CDETECT_OFFSET 0x050 /* Card-detect register value */
-#define LPC313X_MCI_WRTPRT_OFFSET 0x054 /* Write-protect register */
- /* 0x58: Reserved */
-#define LPC313X_MCI_TCBCNT_OFFSET 0x05c /* Transferred CIU card byte count */
-#define LPC313X_MCI_TBBCNT_OFFSET 0x060 /* Transferred cpu/DMA to/from BIU-FIFO byte count */
- /* 0x064-0x0ff: Reserved */
-#define LPC313X_MCI_DATA_OFFSET 0x100 /* Data FIFO read/write (>=) */
-
-/* MCI register (virtual) addresses *************************************************************/
-
-#define LPC313X_MCI_CTRL (LPC313X_MCI_VBASE+LPC313X_MCI_CTRL_OFFSET)
-#define LPC313X_MCI_PWREN (LPC313X_MCI_VBASE+LPC313X_MCI_PWREN_OFFSET)
-#define LPC313X_MCI_CLKDIV (LPC313X_MCI_VBASE+LPC313X_MCI_CLKDIV_OFFSET)
-#define LPC313X_MCI_CLKSRC (LPC313X_MCI_VBASE+LPC313X_MCI_CLKSRC_OFFSET)
-#define LPC313X_MCI_CLKENA (LPC313X_MCI_VBASE+LPC313X_MCI_CLKENA_OFFSET)
-#define LPC313X_MCI_TMOUT (LPC313X_MCI_VBASE+LPC313X_MCI_TMOUT_OFFSET)
-#define LPC313X_MCI_CTYPE (LPC313X_MCI_VBASE+LPC313X_MCI_CTYPE_OFFSET)
-#define LPC313X_MCI_BLKSIZ (LPC313X_MCI_VBASE+LPC313X_MCI_BLKSIZ_OFFSET)
-#define LPC313X_MCI_BYTCNT (LPC313X_MCI_VBASE+LPC313X_MCI_BYTCNT_OFFSET)
-#define LPC313X_MCI_INTMASK (LPC313X_MCI_VBASE+LPC313X_MCI_INTMASK_OFFSET)
-#define LPC313X_MCI_CMDARG (LPC313X_MCI_VBASE+LPC313X_MCI_CMDARG_OFFSET)
-#define LPC313X_MCI_CMD (LPC313X_MCI_VBASE+LPC313X_MCI_CMD_OFFSET)
-#define LPC313X_MCI_RESP0 (LPC313X_MCI_VBASE+LPC313X_MCI_RESP0_OFFSET)
-#define LPC313X_MCI_RESP1 (LPC313X_MCI_VBASE+LPC313X_MCI_RESP1_OFFSET)
-#define LPC313X_MCI_RESP2 (LPC313X_MCI_VBASE+LPC313X_MCI_RESP2_OFFSET)
-#define LPC313X_MCI_RESP3 (LPC313X_MCI_VBASE+LPC313X_MCI_RESP3_OFFSET)
-#define LPC313X_MCI_MINTSTS (LPC313X_MCI_VBASE+LPC313X_MCI_MINTSTS_OFFSET)
-#define LPC313X_MCI_RINTSTS (LPC313X_MCI_VBASE+LPC313X_MCI_RINTSTS_OFFSET)
-#define LPC313X_MCI_STATUS (LPC313X_MCI_VBASE+LPC313X_MCI_STATUS_OFFSET)
-#define LPC313X_MCI_FIFOTH (LPC313X_MCI_VBASE+LPC313X_MCI_FIFOTH_OFFSET)
-#define LPC313X_MCI_CDETECT (LPC313X_MCI_VBASE+LPC313X_MCI_CDETECT_OFFSET)
-#define LPC313X_MCI_WRTPRT (LPC313X_MCI_VBASE+LPC313X_MCI_WRTPRT_OFFSET)
-#define LPC313X_MCI_TCBCNT (LPC313X_MCI_VBASE+LPC313X_MCI_TCBCNT_OFFSET)
-#define LPC313X_MCI_TBBCNT (LPC313X_MCI_VBASE+LPC313X_MCI_TBBCNT_OFFSET)
-#define LPC313X_MCI_DATA (LPC313X_MCI_VBASE+LPC313X_MCI_DATA_OFFSET)
-
-/* MCI register bit definitions *****************************************************************/
-
-/* Control register CTRL, address 0x18000000 */
-
-#define MCI_CTRL_CEATAINT (1 << 11) /* Bit 11: CE-ATA device interrupts enabled */
-#define MCI_CTRL_AUTOSTOP (1 << 10) /* Bit 10: Send STOP after CCSD to CE-ATA device */
-#define MCI_CTRL_SENDCCSD (1 << 9) /* Bit 9: Send CCSD to CE-ATA device */
-#define MCI_CTRL_ABORTREAD (1 << 8) /* Bit 8: Reset data state-machine (suspend sequence) */
-#define MCI_CTRL_SENDIRQRESP (1 << 7) /* Bit 7: Send auto IRQ response */
-#define MCI_CTRL_READWAIT (1 << 6) /* Bit 6: Assert read wait */
-#define MCI_CTRL_DMAENABLE (1 << 5) /* Bit 5: Enable DMA transfer mode */
-#define MCI_CTRL_INTENABLE (1 << 4) /* Bit 4: Enable interrupts */
-#define MCI_CTRL_DMARESET (1 << 2) /* Bit 2: Reset internal DMA interface control logic */
-#define MCI_CTRL_FIFORESET (1 << 1) /* Bit 1: Reset to data FIFO To reset FIFO pointers */
-#define MCI_CTRL_CNTLRRESET (1 << 0) /* Bit 0: Reset Module controller */
-
-/* Clock divider register CLKDIV, address 0x18000008 */
-
-#define MCI_CLKDIV_SHIFT (0) /* Bits 0-7: Clock divider */
-#define MCI_CLKDIV_MASK (255 << MCI_CLKDIV_SHIFT)
-
-/* Clock source register CLKSRC, address 0x1800000c */
-
-#define MCI_CLKSRC_SHIFT (0) /* Bits 0-1: Must be zero */
-#define MCI_CLKSRC_MASK (3 << MCI_CLKSRC_SHIFT)
-
-/* Clock enable register CLKENA, address 0x18000010 */
-
-#define MCI_CLKENA_LOWPOWER (1 << 16) /* Bit 16: Low-power mode */
-#define MCI_CLKENA_EMABLE (1 << 0) /* Bit 0: Clock enable */
-
-/*Timeout register TMOUT, address 0x18000014 */
-
-#define MCI_TMOUT_DATA_SHIFT (8) /* Bits 8-31: Data Read Timeout value */
-#define MCI_TMOUT_DATA_MASK (0x00ffffff << MCI_TMOUT_DATA_SHIFT)
-#define MCI_TMOUT_RESPONSE_SHIFT (0) /* Bits 0-7: Response timeout value */
-#define MCI_TMOUT_RESPONSE_MASK (255 << MCI_TMOUT_RESPONSE_SHIFT)
-
-/* Card type register CTYPE, address 0x18000018 */
-
-#define MCI_CTYPE_WIDTH8 (1 << 16) /* Bit 16: 8-bit mode */
-#define MCI_CTYPE_WIDTH4 (1 << 0) /* Bit 0: 4-bit mode */
-
-/* Blocksize register BLKSIZ, address 0x1800001c */
-
-#define MCI_BLKSIZ_SHIFT (0) /* Bits 0-15: Block size */
-#define MCI_BLKSIZ_MASK (0xffff << MCI_BLKSIZ_SHIFT)
-
-/* Interrupt mask register INTMASK, address 0x18000024
- * Masked interrupt status register MINTSTS, address 0x18000040
- * Raw interrupt status register RINTSTS, address 0x18000044
- */
-
-#define MCI_INT_SDIO (1 << 16) /* Bit 16: Mask SDIO interrupt */
-#define MCI_INT_EBE (1 << 15) /* Bit 15: End-bit error (read)/Write no CRC */
-#define MCI_INT_ACD (1 << 14) /* Bit 14: Auto command done */
-#define MCI_INT_SBE (1 << 13) /* Bit 13: Start-bit error */
-#define MCI_INT_HLE (1 << 12) /* Bit 12: Hardware locked write error */
-#define MCI_INT_FRUN (1 << 11) /* Bit 11: FIFO underrun/overrun error */
-#define MCI_INT_HTO (1 << 10) /* Bit 10: Data starvation-by-cpu timeout */
-#define MCI_INT_DRTO (1 << 9) /* Bit 9: Data read timeout */
-#define MCI_INT_RTO (1 << 8) /* Bit 8: Response timeout */
-#define MCI_INT_DCRC (1 << 7) /* Bit 7: Data CRC error */
-#define MCI_INT_RCRC (1 << 6) /* Bit 6: Response CRC error */
-#define MCI_INT_RXDR (1 << 5) /* Bit 5: Receive FIFO data request */
-#define MCI_INT_TXDR (1 << 4) /* Bit 4: Transmit FIFO data request */
-#define MCI_INT_DTO (1 << 3) /* Bit 3: Data transfer over */
-#define MCI_INT_CD (1 << 2) /* Bit 2: Command done */
-#define MCI_INT_RE (1 << 1) /* Bit 1: Response error */
-#define MCI_INT_CD (1 << 0) /* Bit 0: Card detect */
-#define MCI_INT_ALL (0x1ffff)
-
-/* Command register CMD, address 0x1800002c */
-
-#define MCI_CMD_STARTCMD (1 << 31) /* Bit 31: Start command */
-#define MCI_CMD_CCSEXPTD (1 << 23) /* Bit 23: Expect command completion from CE-ATA device */
-#define MCI_CMD_READCEATA (1 << 22) /* Bit 22: Performing read access on CE-ATA device */
-#define MCI_CMD_UPDCLOCK (1 << 21) /* Bit 21: Update clock register value (no command) */
-#define MCI_CMD_SENDINIT (1 << 15) /* Bit 15: Send initialization sequence before command */
-#define MCI_CMD_STOPABORT (1 << 14) /* Bit 14: Stop current data transfer */
-#define MCI_CMD_WAITPREV (1 << 13) /* Bit 13: Wait previous transfer complete before sending */
-#define MCI_CMD_AUTOSTOP (1 << 12) /* Bit 12: Send stop command at end of data transfer */
-#define MCI_CMD_XFRMODE (1 << 11) /* Bit 11: Stream data transfer command */
-#define MCI_CMD_WRITE (1 << 10) /* Bit 10: Write to card */
-#define MCI_CMD_DATAXFREXPTD (1 << 9) /* Bit 9: Data transfer expected (read/write) */
-#define MCI_CMD_RESPCRC (1 << 8) /* Bit 8: Check response CRC */
-#define MCI_CMD_LONGRESP (1 << 7) /* Bit 7: Long response expected from card */
-#define MCI_CMD_RESPONSE (1 << 6) /* Bit 6: Response expected from card */
-#define MCI_CMD_CMDINDEX_SHIFT (0) /* Bits 0-5: 5:0 Command index */
-#define MCI_CMD_CMDINDEX_MASK (63 << MCI_CMD_CMDINDEX_SHIFT)
-
-/* Status register STATUS, address 0x18000048 */
-
-#define MCI_STATUS_DMAREQ (1 << 31) /* Bit 31: DMA request signal state */
-#define MCI_STATUS_DMAACK (1 << 30) /* Bit 30: DMA acknowledge signal state */
-#define MCI_STATUS_FIFOCOUNT_SHIFT (17) /* Bits 17-29: FIFO count */
-#define MCI_STATUS_FIFOCOUNT_MASK (0x1fff << MCI_STATUS_FIFOCOUNT_SHIFT)
-#define MCI_STATUS_RESPINDEX_SHIFT (11) /* Bits 11-16: Index of previous response */
-#define MCI_STATUS_RESPINDEX_MASK (63 << MCI_STATUS_RESPINDEX_SHIFT)
-#define MCI_STATUS_MCBUSY (1 << 10) /* Bit 10: Data transmit/receive state machine busy */
-#define MCI_STATUS_DATABUSY (1 << 9) /* Bit 9: Card data busy */
-#define MCI_STATUS_DAT3 (1 << 8) /* Bit 8: DAT3=1: Card present */
-#define MCI_STATUS_FSMSTATE_SHIFT (4) /* Bits 4-7: 7:4 Command FSM states */
-#define MCI_STATUS_FSMSTATE_MASK (15 << MCI_STATUS_FSMSTATE_SHIFT)
-# define MCI_STATUS_FSMSTATE_IDLE (0 << MCI_STATUS_FSMSTATE_SHIFT) /* Idle */
-# define MCI_STATUS_FSMSTATE_INIT (1 << MCI_STATUS_FSMSTATE_SHIFT) /* Send init sequence */
-# define MCI_STATUS_FSMSTATE_TXSTART (2 << MCI_STATUS_FSMSTATE_SHIFT) /* Tx cmd start bit */
-# define MCI_STATUS_FSMSTATE_TXTXBIT (3 << MCI_STATUS_FSMSTATE_SHIFT) /* Tx cmd tx bit */
-# define MCI_STATUS_FSMSTATE_TXCMDARG (4 << MCI_STATUS_FSMSTATE_SHIFT) /* Tx cmd index + arg */
-# define MCI_STATUS_FSMSTATE_TXCMDCRC (5 << MCI_STATUS_FSMSTATE_SHIFT) /* Tx cmd crc7 */
-# define MCI_STATUS_FSMSTATE_TXEND (6 << MCI_STATUS_FSMSTATE_SHIFT) /* Tx cmd end bit */
-# define MCI_STATUS_FSMSTATE_RXSTART (7 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp start bit */
-# define MCI_STATUS_FSMSTATE_RXIRQ (8 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp IRQ response */
-# define MCI_STATUS_FSMSTATE_RXTXBIT (9 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp tx bit */
-# define MCI_STATUS_FSMSTATE_RXCMD (10 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp cmd idx */
-# define MCI_STATUS_FSMSTATE_RXRESP (11 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp data */
-# define MCI_STATUS_FSMSTATE_RXRESPCRC (12 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp crc7 */
-# define MCI_STATUS_FSMSTATE_RXEND (13 << MCI_STATUS_FSMSTATE_SHIFT) /* Rx resp end bit */
-# define MCI_STATUS_FSMSTATE_WAITNCC (14 << MCI_STATUS_FSMSTATE_SHIFT) /* Cmd path wait NCC */
-# define MCI_STATUS_FSMSTATE_WAITTURN (15 << MCI_STATUS_FSMSTATE_SHIFT) /* Wait; CMD-to-response turnaround */
-#define MCI_STATUS_FIFOFULL (1 << 3) /* Bit 3: FIFO is full */
-#define MCI_STATUS_FIFOEMPTY (1 << 2) /* Bit 2: FIFO is empty */
-#define MCI_STATUS_TXWMARK (1 << 1) /* Bit 1: FIFO reached Transmit watermark level */
-#define MCI_STATUS_RXWMARK (1 << 0) /* Bit 0: FIFO reached Receive watermark level */
-
-/* FIFO threshold register FIFOTH, address 0x1800004c */
-
-#define MCI_FIFOTH_DMABURST_SHIFT (28) /* Bits 28-30: Burst size for multiple transaction */
-#define MCI_FIFOTH_DMABURST_MASK (7 << MCI_FIFOTH_DMABURST_SHIFT)
- define MCI_FIFOTH_DMABURST_1XFR (0 << MCI_FIFOTH_DMABURST_SHIFT) /* 1 transfer */
-# define MCI_FIFOTH_DMABURST_4XFRS (1 << MCI_FIFOTH_DMABURST_SHIFT) /* 4 transfers */
-# define MCI_FIFOTH_DMABURST_8XFRS (2 << MCI_FIFOTH_DMABURST_SHIFT) /* 8 transfers */
-#define MCI_FIFOTH_RXWMARK_SHIFT (16) /* Bits 16-27: FIFO threshold level when receiving */
-#define MCI_FIFOTH_RXWMARK_MASK (0xfff << MCI_FIFOTH_RXWMARK_SHIFT)
-#define MCI_FIFOTH_TXWMARK_SHIFT (0) /* Bits 0-11: FIFO threshold level when transmitting */
-#define MCI_FIFOTH_TXWMARK_MASK (0xfff << MCI_FIFOTH_TXWMARK_SHIFT)
-
-/* Card detect register CDETECT, address 0x18000050 */
-
-#define MCI_CDETECT_NOTPRESENT (1 << 0)
-
-/* Write protect register WRTPRT, address 0x18000054 */
-
-#define MCI_WRTPRT_PROTECTED (1 << 0)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_MCI_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_memorymap.h b/nuttx/arch/arm/src/lpc313x/lpc313x_memorymap.h
deleted file mode 100755
index 0539495f9..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_memorymap.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/************************************************************************************
- * arch/arm/src/lpc313x/chip.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_MEMORYMAP_H
-#define __ARCH_ARM_SRC_LPC313X_MEMORYMAP_H
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-
-/************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************/
-
-/* LPC313X Physical (unmapped) Memory Map */
-
-#define LPC313X_FIRST_PSECTION 0x00000000 /* Beginning of the physical address space */
-#define LPC313X_SHADOWSPACE_PSECTION 0x00000000 /* 0x00000000-0x00000fff: Shadow Area 4Kb */
- /* 0x00001000-0xff027fff: Reserved */
-#define LPC313X_INTSRAM_PSECTION 0x11028000 /* Internal SRAM 0+1 192Kb */
-# define LPC313X_INTSRAM0_PADDR 0x11028000 /* 0x11028000-0x1103ffff: Internal SRAM 0 96Kb */
-# define LPC313X_INTSRAM1_PADDR 0x11040000 /* 0x11040000-0x11057fff: Internal SRAM 1 96Kb */
- /* 0x11058000-11ffffffff: Reserved */
-#define LPC313X_INTSROM0_PSECTION 0x12000000 /* 0x12000000-0x1201ffff: Internal SROM 0 128Kb */
- /* 0x12020000-0x12ffffff: Reserved */
-#define LPC313X_APB01_PSECTION 0x13000000 /* 0x13000000-0x1300bfff: APB0 32Kb APB1 16Kb */
-# define LPC313X_APB0_PADDR 0x13000000 /* 0x13000000-0x13007fff: APB0 32Kb */
-# define LPC313X_APB1_PADDR 0x13008000 /* 0x13008000-0x1300bfff: APB1 16Kb */
- /* 0x1300c000-0x14ffffff: Reserved */
-#define LPC313X_APB2_PSECTION 0x15000000 /* 0x15000000-0x15003fff: APB2 16Kb */
-#define LPC313X_APB3_PSECTION 0x16000000 /* 0x16000000-0x160003ff: APB3 1Kb */
-#define LPC313X_APB4MPMC_PSECTION 0x17000000 /* 8Kb */
-# define LPC313X_APB4_PADDR 0x17000000 /* 0x17000000-0x17000fff: APB4 4Kb */
-# define LPC313X_MPMC_PADDR 0x17008000 /* 0x17008000-0x17008fff: MPMC cfg 4Kb */
- /* 0x17009000-0x17ffffff: Reserved */
-#define LPC313X_MCI_PSECTION 0x18000000 /* 0x18000000 0x180003ff: MCI/SD/SDIO 1Kb */
- /* 0x18000900-0x18ffffff: Reserved */
-#define LPC313X_USBOTG_PSECTION 0x19000000 /* 0x19000000-0x19000fff: USB OTG 4Kb */
- /* 0x19001000-0x1fffffff: Reserved */
-#define LPC313X_EXTSRAM_PSECTION 0x20000000 /* 64-128Kb */
-# define LPC313X_EXTSRAM0_PADDR 0x20000000 /* 0x20000000-0x2001ffff: External SRAM 0 64-128Kb */
-# define LPC313X_EXTSRAM1_PADDR 0x20020000 /* 0x20020000-0x2003ffff: External SRAM 1 64-128Kb */
-#define LPC313X_EXTSDRAM0_PSECTION 0x30000000 /* 0x30000000-0x37ffffff: External SDRAM 0 128Mb */
- /* 0x40000000-0x5fffffff: Reserved */
-#define LPC313X_INTC_PSECTION 0x60000000 /* 0x60000000-0x60000fff: Interrupt controller 4Kb */
- /* 0x60001000-0x6fffffff: Reserved */
-#define LPC313X_NAND_PSECTION 0x70000000 /* 0x70000000-0x700007ff: NANDFLASH Ctrl 2Kb */
- /* 0x70000800-0xffffffff: Reserved */
-#ifdef CONFIG_LPC313X_EXTNAND /* End of the physical address space */
-# define LPC313X_LAST_PSECTION (LPC313X_NAND_PSECTION + (1 << 20))
-#else
-# define LPC313X_LAST_PSECTION (LPC313X_INTC_PSECTION + (1 << 20))
-#endif
-
-/* APB0-4 Domain Offsets */
-
-#define LPC313X_APB0_EVNTRTR_OFFSET 0x00000000 /* Event Router */
-#define LPC313X_APB0_ADC_OFFSET 0x00002000 /* ADC 10-bit */
-#define LPC313X_APB0_WDT_OFFSET 0x00002400 /* WDT */
-#define LPC313X_APB0_SYSCREG_OFFSET 0x00002800 /* SYSCREG block */
-#define LPC313X_APB0_IOCONFIG_OFFSET 0x00003000 /* IOCONFIG */
-#define LPC313X_APB0_GCU_OFFSET 0x00004000 /* GCU */
- /* 0x00005000 Reserved */
-#define LPC313X_APB0_RNG_OFFSET 0x00006000 /* RNG */
-
-#define LPC313X_APB1_TIMER0_OFFSET 0x00000000 /* TIMER0 */
-#define LPC313X_APB1_TIMER1_OFFSET 0x00000400 /* TIMER1 */
-#define LPC313X_APB1_TIMER2_OFFSET 0x00000800 /* TIMER2 */
-#define LPC313X_APB1_TIMER3_OFFSET 0x00000c00 /* TIMER3 */
-#define LPC313X_APB1_PWM_OFFSET 0x00001000 /* PWM */
-#define LPC313X_APB1_I2C0_OFFSET 0x00002000 /* I2C0 */
-#define LPC313X_APB1_I2C1_OFFSET 0x00002400 /* I2C1 */
-
-#define LPC313X_APB2_PCM_OFFSET 0x00000000 /* PCM */
-#define LPC313X_APB2_LCD_OFFSET 0x00000400 /* LCD */
- /* 0x00000800 Reserved */
-#define LPC313X_APB2_UART_OFFSET 0x00001000 /* UART */
-#define LPC313X_APB2_SPI_OFFSET 0x00002000 /* SPI */
- /* 0x00003000 Reserved */
-
-#define LPC313X_APB3_I2SCONFIG_OFFSET 0x00000000 /* I2S System Configuration */
-#define LPC313X_APB3_I2STX0_OFFSET 0x00000080 /* I2S TX0 */
-#define LPC313X_APB3_I2STX1_OFFSET 0x00000100 /* I2S TX1 */
-#define LPC313X_APB3_I2SRX0_OFFSET 0x00000180 /* I2S RX0 */
-#define LPC313X_APB3_I2SRX1_OFFSET 0x00000200 /* I2S RX1 */
- /* 0x00000280 Reserved */
-
-#define LPC313X_APB4_DMA_OFFSET 0x00000000 /* DMA */
-#define LPC313X_APB4_NAND_OFFSET 0x00000800 /* NAND FLASH Controller */
- /* 0x00001000 Reserved */
-
-/* Sizes of memory regions in bytes */
-
-#define LPC313X_SHADOWSPACE_SIZE (4*1024)
-#define LPC313X_INTSRAM0_SIZE (96*1024)
-#define LPC313X_INTSRAM1_SIZE (96*1024)
-#define LPC313X_INTSROM0_SIZE (128*1024)
-#define LPC313X_APB0_SIZE (32*1024)
-#define LPC313X_APB1_SIZE (16*1024)
-#define LPC313X_APB2_SIZE (16*1024)
-#define LPC313X_APB3_SIZE (1*1024)
-#define LPC313X_APB4_SIZE (4*1024)
-#define LPC313X_MPMC_SIZE (4*1024)
-#define LPC313X_APB4MPMC_SIZE (LPC313X_APB4_SIZE+LPC313X_MPMC_SIZE)
-#define LPC313X_MCI_SIZE (1*1024)
-#define LPC313X_USBOTG_SIZE (4*1024)
-#define LPC313X_INTC_SIZE (4*1024)
-#define LPC313X_NAND_SIZE (2*1024)
-
-#if defined(CONFIG_ARCH_CHIP_LPC3131)
-# define LPC313X_ISRAM_SIZE (LPC313X_INTSRAM0_SIZE+LPC313X_INTSRAM1_SIZE)
-#elif defined(CONFIG_ARCH_CHIP_LPC3130)
-# define LPC313X_ISRAM_SIZE LPC313X_INTSRAM0_SIZE
-#else
-# error "Unsupported LPC313X architecture"
-#endif
-
-/* Convert size in bytes to number of sections (in Mb). */
-
-#define _NSECTIONS(b) (((b)+0x000fffff) >> 20)
-
-/* Sizes of sections/regions. The boot logic in lpc313x_boot.c, will select
- * 1Mb level 1 MMU mappings to span the entire physical address space.
- * The definitiions below specifiy the number of 1Mb entries that are
- * required to span a particular address region.
- */
-
-#define LPC313X_SHADOWSPACE_NSECTIONS 1 /* 4Kb - <1 section */
-#define LPC313X_INTSRAM_NSECTIONS 1 /* 96 or 192Kb - <1 section */
-#define LPC313X_APB01_NSECTIONS 1 /* 32Kb - <1 section */
-#define LPC313X_INTSROM0_NSECTIONS 1 /* 128Kb - <1 section */
-#define LPC313X_APB1_NSECTIONS 1 /* 16Kb - <1 section */
-#define LPC313X_APB2_NSECTIONS 1 /* 16Kb - <1 section */
-#define LPC313X_APB3_NSECTIONS 1 /* 1Kb - <1 section */
-#define LPC313X_APB4MPMC_NSECTIONS 1 /* 8Kb - <1 section */
-#define LPC313X_MCI_NSECTIONS 1 /* 1Kb - <1 section */
-#define LPC313X_USBOTG_NSECTIONS 1 /* 4Kb - <1 section */
-#define LPC313X_EXTSRAM_NSECTIONS 1 /* 64-128Kb - <1 section */
-#define LPC313X_INTC_NSECTIONS 1 /* 4Kb - <1 section */
-#define LPC313X_NAND_NSECTIONS 1 /* 2Kb - <1 section */
-
-/* External SDRAM is a special case -- the number of sections depends upon
- * the size of the SDRAM installed.
- */
-
-#if defined(CONFIG_LPC313X_EXTSDRAM) && CONFIG_LPC313X_EXTSDRAMSIZE > 0
-# define LPC313X_EXTSDRAM0_NSECTIONS _NSECTIONS(CONFIG_LPC313X_EXTSDRAMSIZE)
-#endif
-
-/* Section MMU Flags */
-
-#define LPC313X_SHADOWSPACE_MMUFLAGS MMU_ROMFLAGS
-#define LPC313X_INTSRAM_MMUFLAGS MMU_MEMFLAGS
-#define LPC313X_INTSROM_MMUFLAGS MMU_MEMFLAGS
-#define LPC313X_APB01_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_APB2_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_APB3_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_APB4MPMC_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_MCI_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_USBOTG_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_EXTSRAM_MMUFLAGS MMU_MEMFLAGS
-#define LPC313X_EXTSDRAM_MMUFLAGS MMU_MEMFLAGS
-#define LPC313X_INTC_MMUFLAGS MMU_IOFLAGS
-#define LPC313X_NAND_MMUFLAGS MMU_IOFLAGS
-
-/* board_memorymap.h contains special mappings that are needed when a ROM
- * memory map is used. It is included in this odd location becaue it depends
- * on some the virtual address definitions provided above.
- */
-
-#include <arch/board/board_memorymap.h>
-
-/* LPC313X Virtual (mapped) Memory Map. These are the mappings that will
- * be created if the page table lies in RAM. If the platform has another,
- * read-only, pre-initialized page table (perhaps in ROM), then the board.h
- * file must provide these definitions.
- */
-
-#ifndef CONFIG_ARCH_ROMPGTABLE
-# define LPC313X_FIRST_VSECTION 0x00000000 /* Beginning of the virtual address space */
-# define LPC313X_SHADOWSPACE_VSECTION 0x00000000 /* 0x00000000-0x00000fff: Shadow Area 4Kb */
-# define LPC313X_INTSRAM_VSECTION 0x11028000 /* Internal SRAM 96Kb-192Kb */
-# define LPC313X_INTSRAM0_VADDR 0x11028000 /* 0x11028000-0x1103ffff: Internal SRAM 0 96Kb */
-# define LPC313X_INTSRAM1_VADDR 0x11040000 /* 0x11040000-0x11057fff: Internal SRAM 1 96Kb */
-# define LPC313X_INTSROM0_VSECTION 0x12000000 /* 0x12000000-0x1201ffff: Internal SROM 0 128Kb */
-# define LPC313X_APB01_VSECTION 0x13000000 /* 0x13000000-0x1300bfff: APB0 32Kb APB0 32Kb */
-# define LPC313X_APB0_VADDR 0x13000000 /* 0x13000000-0x13007fff: APB0 32Kb */
-# define LPC313X_APB1_VADDR 0x13008000 /* 0x13008000-0x1300bfff: APB1 16Kb */
-# define LPC313X_APB2_VSECTION 0x15000000 /* 0x15000000-0x15003fff: APB2 16Kb */
-# define LPC313X_APB3_VSECTION 0x16000000 /* 0x16000000-0x160003ff: APB3 1Kb */
-# define LPC313X_APB4MPMC_VSECTION 0x17000000 /* 8Kb */
-# define LPC313X_APB4_VADDR 0x17000000 /* 0x17000000-0x17000fff: APB4 4Kb */
-# define LPC313X_MPMC_VADDR 0x17008000 /* 0x17008000-0x17008fff: MPMC cfg 4Kb */
-# define LPC313X_MCI_VSECTION 0x18000000 /* 0x18000000 0x180003ff: MCI/SD/SDIO 1Kb */
-# define LPC313X_USBOTG_VSECTION 0x19000000 /* 0x19000000-0x19000fff: USB OTG 4Kb */
-# define LPC313X_EXTSRAM_VSECTION 0x20020000 /* 64-128Kb */
-# define LPC313X_EXTSRAM0_VADDR 0x20000000 /* 0x20000000-0x2001ffff: External SRAM 0 64-128Kb */
-# define LPC313X_EXTSRAM1_VADDR 0x20020000 /* 0x20020000-0x2003ffff: External SRAM 1 64-128Kb */
-# define LPC313X_EXTSDRAM0_VSECTION 0x30000000 /* 0x30000000-0x37ffffff: External SDRAM 0 128Mb */
-# define LPC313X_INTC_VSECTION 0x60000000 /* 0x60000000-0x60000fff: Interrupt controller 4Kb */
-# define LPC313X_NAND_VSECTION 0x70000000 /* 0x70000000-0x700007ff: NANDFLASH Ctrl 2Kb */
-#
-# ifdef CONFIG_LPC313X_EXTNAND /* End of the virtual address space */
-# define LPC313X_LAST_VSECTION (LPC313X_NAND_VSECTION + (1 << 20))
-# else
-# define LPC313X_LAST_VSECTION (LPC313X_INTC_VSECTION + (1 << 20))
-# endif
-#endif
-
-/* The boot logic will create a temporarily mapping based on where NuttX is
- * executing in memory. In this case, NuttX could be running from NOR FLASH,
- * SDRAM, external SRAM, or ISRAM.
- */
-
-#if defined(CONFIG_BOOT_RUNFROMFLASH)
-# define NUTTX_START_VADDR LPC313X_MPMC_VADDR
-#elif defined(CONFIG_BOOT_RUNFROMSDRAM)
-# define NUTTX_START_VADDR LPC313X_EXTSDRAM0_VSECTION
-#elif defined(CONFIG_BOOT_RUNFROMEXTSRAM)
-# define NUTTX_START_VADDR LPC313X_EXTSRAM0_VADDR
-#else /* CONFIG_BOOT_RUNFROMISRAM, CONFIG_PAGING */
-# define NUTTX_START_VADDR LPC313X_INTSRAM0_VADDR
-#endif
-
-/* Determine the address of the MMU page table. We will try to place that page
- * table at the beginng of ISRAM0 if the vectors are at the high address, 0xffff:0000
- * or at the end of ISRAM1 (or ISRAM0 on a LPC3130) if the vectors are at 0x0000:0000
- *
- * Or... the user may specify the address of the page table explicitly be defining
- * CONFIG_PGTABLE_VADDR and CONFIG_PGTABLE_PADDR in the configuration or board.h file.
- */
-
-#undef PGTABLE_IN_HIGHSRAM
-#undef PGTABLE_IN_LOWSRAM
-
-#if !defined(PGTABLE_BASE_PADDR) || !defined(PGTABLE_BASE_VADDR)
-
- /* Sanity check.. if one is undefined, both should be undefined */
-
-# if defined(PGTABLE_BASE_PADDR) || defined(PGTABLE_BASE_VADDR)
-# error "Only one of PGTABLE_BASE_PADDR or PGTABLE_BASE_VADDR is defined"
-# endif
-
- /* A sanity check, if the configuration says that the page table is read-only
- * and pre-initialized (maybe ROM), then it should have also defined both of
- * the page table base addresses.
- */
-
-# ifdef CONFIG_ARCH_ROMPGTABLE
-# error "CONFIG_ARCH_ROMPGTABLE defined; PGTABLE_BASE_P/VADDR not defined"
-# else
-
- /* If CONFIG_PAGING is selected, then parts of the 1-to-1 virtual memory
- * map probably do not apply because paging logic will probably partition
- * the SRAM section differently. In particular, if the page table is located
- * at the end of SRAM, then the virtual page table address defined below
- * will probably be in error.
- *
- * We work around this header file interdependency by (1) insisting that
- * pg_macros.h be included AFTER this header file, then (2) allowing the
- * pg_macros.h header file to redefine PGTABLE_BASE_VADDR.
- */
-
-# if defined(CONFIG_PAGING) && defined(__ARCH_ARM_SRC_ARM_PG_MACROS_H)
-# error "pg_macros.h must be included AFTER this header file"
-# endif
-
-
- /* We must declare the page table in ISRAM0 or 1. We decide depending upon
- * where the vector table was place.
- */
-
-# ifdef CONFIG_ARCH_LOWVECTORS /* Vectors located at 0x0000:0000 */
-
- /* In this case, ISRAM0 will be shadowed at address 0x0000:0000. The page
- * table must lie at the top 16Kb of ISRAM1 (or ISRAM0 if this is a LPC3130)
- */
-
-# if CONFIG_ARCH_CHIP_LPC3131
-# define PGTABLE_BASE_PADDR (LPC313X_INTSRAM1_PADDR+LPC313X_INTSRAM1_SIZE-PGTABLE_SIZE)
-# define PGTABLE_BASE_VADDR (LPC313X_INTSRAM1_VADDR+LPC313X_INTSRAM1_SIZE-PGTABLE_SIZE)
-# else
-# define PGTABLE_BASE_PADDR (LPC313X_INTSRAM0_PADDR+LPC313X_INTSRAM0_SIZE-PGTABLE_SIZE)
-# define PGTABLE_BASE_VADDR (LPC313X_INTSRAM0_VADDR+LPC313X_INTSRAM0_SIZE-PGTABLE_SIZE)
-# endif
-# define PGTABLE_IN_HIGHSRAM 1
-
- /* If CONFIG_PAGING is defined, insist that pg_macros.h assign the virtual
- * address of the page table.
- */
-
-# ifdef CONFIG_PAGING
-# undef PGTABLE_BASE_VADDR
-# endif
-# else
-
- /* Otherwise, ISRAM1 (or ISRAM0 for the LPC3130) will be mapped so that
- * the end of the SRAM region will provide memory for the vectors. The page
- * table will then be places at the first 16Kb of ISRAM0 (which will be in
- * the shadow memory region.
- */
-
-# define PGTABLE_BASE_PADDR LPC313X_SHADOWSPACE_PSECTION
-# define PGTABLE_BASE_VADDR LPC313X_SHADOWSPACE_VSECTION
-# define PGTABLE_IN_LOWSRAM 1
-# endif
-# endif
-#endif
-
-/* Page table start addresses:
- *
- * 16Kb of memory is reserved hold the page table for the virtual mappings. A
- * portion of this table is not accessible in the virtual address space (for
- * normal operation). We will reuse this memory for coarse page tables as follows:
- *
- * NOTE: If CONFIG_PAGING is defined, pg_macros.h will re-assign the virtual
- * address of the page table.
- */
-
-#define PGTABLE_L2_COARSE_OFFSET ((((LPC313X_LAST_PSECTION >> 20) + 255) & ~255) << 2)
-#define PGTABLE_L2_COARSE_PBASE (PGTABLE_BASE_PADDR+PGTABLE_L2_COARSE_OFFSET)
-#define PGTABLE_L2_COARSE_VBASE (PGTABLE_BASE_VADDR+PGTABLE_L2_COARSE_OFFSET)
-
-#define PGTABLE_L2_FINE_OFFSET ((((LPC313X_LAST_PSECTION >> 20) + 1023) & ~1023) << 2)
-#define PGTABLE_L2_FINE_PBASE (PGTABLE_BASE_PADDR+PGTABLE_L2_FINE_OFFSET)
-#define PGTABLE_L2_FINE_VBASE (PGTABLE_BASE_VADDR+PGTABLE_L2_FINE_OFFSET)
-
-/* Page table end addresses: */
-
-#define PGTABLE_L2_END_PADDR (PGTABLE_BASE_PADDR+PGTABLE_SIZE)
-#define PGTABLE_L2_END_VADDR (PGTABLE_BASE_VADDR+PGTABLE_SIZE)
-
-/* Page table sizes */
-
-#define PGTABLE_L2_COARSE_ALLOC (PGTABLE_L2_END_VADDR-PGTABLE_L2_COARSE_VBASE)
-#define PGTABLE_COARSE_TABLE_SIZE (4*256)
-#define PGTABLE_NCOARSE_TABLES (PGTABLE_L2_COARSE_ALLOC / PGTABLE_COARSE_TABLE_SIZE)
-
-#define PGTABLE_L2_FINE_ALLOC (PGTABLE_L2_END_VADDR-PGTABLE_L2_FINE_VBASE)
-#define PGTABLE_FINE_TABLE_SIZE (4*1024)
-#define PGTABLE_NFINE_TABLES (PGTABLE_L2_FINE_ALLOC / PGTABLE_FINE_TABLE_SIZE)
-
-/* Determine the base address of the vector table:
- *
- * LPC313X_VECTOR_PADDR - Unmapped, physical address of vector table in SRAM
- * LPC313X_VECTOR_VSRAM - Virtual address of vector table in SRAM
- * LPC313X_VECTOR_VADDR - Virtual address of vector table (0x00000000 or 0xffff0000)
- */
-
-#define VECTOR_TABLE_SIZE 0x00010000
-#ifdef CONFIG_ARCH_LOWVECTORS /* Vectors located at 0x0000:0000 */
-# define LPC313X_VECTOR_PADDR LPC313X_INTSRAM0_PADDR
-# define LPC313X_VECTOR_VSRAM LPC313X_INTSRAM0_VADDR
-# define LPC313X_VECTOR_VADDR 0x00000000
-# define LPC313X_VECTOR_VCOARSE 0x00000000
-#else /* Vectors located at 0xffff:0000 -- this probably does not work */
-# if CONFIG_ARCH_CHIP_LPC3131
-# define LPC313X_VECTOR_PADDR (LPC313X_INTSRAM1_PADDR+LPC313X_INTSRAM1_SIZE-VECTOR_TABLE_SIZE)
-# define LPC313X_VECTOR_VSRAM (LPC313X_INTSRAM1_VADDR+LPC313X_INTSRAM1_SIZE-VECTOR_TABLE_SIZE)
-# else
-# define LPC313X_VECTOR_PADDR (LPC313X_INTSRAM0_PADDR+LPC313X_INTSRAM0_SIZE-VECTOR_TABLE_SIZE)
-# define LPC313X_VECTOR_VSRAM (LPC313X_INTSRAM0_VADDR+LPC313X_INTSRAM0_SIZE-VECTOR_TABLE_SIZE)
-# endif
-# define LPC313X_VECTOR_VADDR 0xffff0000
-# define LPC313X_VECTOR_VCOARSE 0xfff00000
-#endif
-
-/************************************************************************************
- * Public Types
- ************************************************************************************/
-
-/************************************************************************************
- * Public Data
- ************************************************************************************/
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_MEMORYMAP_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_mpmc.h b/nuttx/arch/arm/src/lpc313x/lpc313x_mpmc.h
deleted file mode 100755
index 5e62e6b91..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_mpmc.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_mpmc.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_MPMC_H
-#define __ARCH_ARM_SRC_LPC313X_MPMC_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* MPMC register base address offset into the MPMC domain ***************************************/
-
-#define LPC313X_MPMC_VBASE (LPC313X_MPMC_VADDR)
-#define LPC313X_MPMC_PBASE (LPC313X_MPMC_PADDR)
-
-/* MPMC register offsets (with respect to the base of the MPMC domain) **************************/
-
-#define LPC313X_MPMC_CONTROL_OFFSET 0x000 /* Control Register */
-#define LPC313X_MPMC_STATUS_OFFSET 0x004 /* Status Register */
-#define LPC313X_MPMC_CONFIG_OFFSET 0x008 /* Configuration register */
-#define LPC313X_MPMC_DYNCONTROL_OFFSET 0x020 /* Dynamic Memory Control Register */
-#define LPC313X_MPMC_DYNREFRESH_OFFSET 0x024 /* Dynamic Memory Refresh Timer Register */
-#define LPC313X_MPMC_DYNREADCONFIG_OFFSET 0x028 /* Dynamic Memory Read Configuration Register */
-#define LPC313X_MPMC_DYNTRP_OFFSET 0x030 /* Dynamic Memory Precharge Command Period Register */
-#define LPC313X_MPMC_DYNTRAS_OFFSET 0x034 /* Dynamic Memory Active To Precharge Command Period Register */
-#define LPC313X_MPMC_DYNTSREX_OFFSET 0x038 /* Dynamic Memory Self-refresh Exit Time Register */
-#define LPC313X_MPMC_DYNTAPR_OFFSET 0x03c /* Dynamic Memory Last Data Out To Active Time Register */
-#define LPC313X_MPMC_DYNTDAL_OFFSET 0x040 /* Dynamic Memory Data-in To Active Command Time Register */
-#define LPC313X_MPMC_DYNTWR_OFFSET 0x044 /* Dynamic Memory Write Recovery Time Register */
-#define LPC313X_MPMC_DYNTRC_OFFSET 0x048 /* Dynamic Memory Active To Active Command Period Register */
-#define LPC313X_MPMC_DYNTRFC_OFFSET 0x04c /* Dynamic Memory Auto-refresh Period Register */
-#define LPC313X_MPMC_DYNTXSR_OFFSET 0x050 /* Dynamic Memory Exit Self-refresh Register */
-#define LPC313X_MPMC_DYNTRRD_OFFSET 0x054 /* Dynamic Memory Active Bank A to Active Bank B Time Register */
-#define LPC313X_MPMC_DYNTMRD_OFFSET 0x058 /* Dynamic Memory Load Mode Register To Active Command Time Register */
-#define LPC313X_MPMC_STEXTWAIT_OFFSET 0x080 /* Static Memory Extended Wait Register */
-#define LPC313X_MPMC_DYNCONFIG0_OFFSET 0x100 /* Dynamic Memory Configuration Registers 0 */
-#define LPC313X_MPMC_DYNRASCAS0_OFFSET 0x104 /* Dynamic Memory RAS and CAS Delay Registers 0 */
- /* 0x120-0x164: reserved */
-#define LPC313X_MPMC_STCONFIG0_OFFSET 0x200 /* Static Memory Configuration Registers 0 */
-#define LPC313X_MPMC_STWAITWEN0_OFFSET 0x204 /* Static Memory Write Enable Delay Registers 0 */
-#define LPC313X_MPMC_STWAITOEN0_OFFSET 0x208 /* Static Memory Output Enable Delay Registers 0 */
-#define LPC313X_MPMC_STWAITRD0_OFFSET 0x20c /* Static Memory Read Delay Registers 0 */
-#define LPC313X_MPMC_STWAITPAGE0_OFFSET 0x210 /* Static Memory Page Mode Read Delay Registers 0 */
-#define LPC313X_MPMC_STWAITWR0_OFFSET 0x214 /* Static Memory Write Delay Registers 0 */
-#define LPC313X_MPMC_STWAITTURN0_OFFSET 0x218 /* Static Memory Turn Round Delay Registers 0 */
-#define LPC313X_MPMC_STCONFIG1_OFFSET 0x220 /* tatic Memory Configuration Registers 1 */
-#define LPC313X_MPMC_STWAITWEN1_OFFSET 0x224 /* Static Memory Write Enable Delay Registers 1 */
-#define LPC313X_MPMC_STWAITOEN1_OFFSET 0x228 /* Static Memory Output Enable Delay Registers 1 */
-#define LPC313X_MPMC_STWAITRD1_OFFSET 0x22c /* Static Memory Read Delay Registers 1 */
-#define LPC313X_MPMC_STWAITPAGE1_OFFSET 0x230 /* Static Memory Page Mode Read Delay Registers 1 */
-#define LPC313X_MPMC_STWAITWR1_OFFSET 0x234 /* Static Memory Write Delay Registers 1 */
-#define LPC313X_MPMC_STWAITTURN1_OFFSET 0x238 /* Static Memory Turn Round Delay Registers 1 */
- /* 0x240-0x278: Reserverd */
-
-/* MPMC register (virtual) addresses ************************************************************/
-
-#define LPC313X_MPMC_CONTROL (LPC313X_MPMC_VBASE+LPC313X_MPMC_CONTROL_OFFSET)
-#define LPC313X_MPMC_STATUS (LPC313X_MPMC_VBASE+LPC313X_MPMC_STATUS_OFFSET)
-#define LPC313X_MPMC_CONFIG (LPC313X_MPMC_VBASE+LPC313X_MPMC_CONFIG_OFFSET)
-#define LPC313X_MPMC_DYNCONTROL (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNCONTROL_OFFSET)
-#define LPC313X_MPMC_DYNREFRESH (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNREFRESH_OFFSET)
-#define LPC313X_MPMC_DYNREADCONFIG (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNREADCONFIG_OFFSET)
-#define LPC313X_MPMC_DYNTRP (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTRP_OFFSET)
-#define LPC313X_MPMC_DYNTRAS (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTRAS_OFFSET)
-#define LPC313X_MPMC_DYNTSREX (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTSREX_OFFSET)
-#define LPC313X_MPMC_DYNTAPR (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTAPR_OFFSET)
-#define LPC313X_MPMC_DYNTDAL (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTDAL_OFFSET)
-#define LPC313X_MPMC_DYNTWR (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTWR_OFFSET)
-#define LPC313X_MPMC_DYNTRC (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTRC_OFFSET)
-#define LPC313X_MPMC_DYNTRFC (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTRFC_OFFSET)
-#define LPC313X_MPMC_DYNTXSR (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTXSR_OFFSET)
-#define LPC313X_MPMC_DYNTRRD (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTRRD_OFFSET)
-#define LPC313X_MPMC_DYNTMRD (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNTMRD_OFFSET)
-#define LPC313X_MPMC_STEXTWAIT (LPC313X_MPMC_VBASE+LPC313X_MPMC_STEXTWAIT_OFFSET)
-#define LPC313X_MPMC_DYNCONFIG0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNCONFIG0_OFFSET)
-#define LPC313X_MPMC_DYNRASCAS0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_DYNRASCAS0_OFFSET)
-#define LPC313X_MPMC_STCONFIG0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STCONFIG0_OFFSET)
-#define LPC313X_MPMC_STWAITWEN0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITWEN0_OFFSET)
-#define LPC313X_MPMC_STWAITOEN0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITOEN0_OFFSET)
-#define LPC313X_MPMC_STWAITRD0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITRD0_OFFSET)
-#define LPC313X_MPMC_STWAITPAGE0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITPAGE0_OFFSET)
-#define LPC313X_MPMC_STWAITWR0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITWR0_OFFSET)
-#define LPC313X_MPMC_STWAITTURN0 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITTURN0_OFFSET)
-#define LPC313X_MPMC_STCONFIG1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STCONFIG1_OFFSET)
-#define LPC313X_MPMC_STWAITWEN1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITWEN1_OFFSET)
-#define LPC313X_MPMC_STWAITOEN1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITOEN1_OFFSET)
-#define LPC313X_MPMC_STWAITRD1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITRD1_OFFSET)
-#define LPC313X_MPMC_STWAITPAGE1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITPAGE1_OFFSET)
-#define LPC313X_MPMC_STWAITWR1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITWR1_OFFSET)
-#define LPC313X_MPMC_STWAITTURN1 (LPC313X_MPMC_VBASE+LPC313X_MPMC_STWAITTURN1_OFFSET)
-
-/* MPMC register bit definitions ****************************************************************/
-/* MPMCControl (address 0x17008000) */
-
-#define MPMC_CONTROL_L (1 << 2) /* Bit 2: Indicates normal or low-power mode */
-#define MPMC_CONTROL_M (1 << 1) /* Bit 1: Indicates normal or reset memory map */
-#define MPMC_CONTROL_E (1 << 0) /* Bit 0: Indicates when the MPMC is enabled or disabled */
-
-/* MPMCStatus (address 0x17008004) */
-
-#define MPMC_STATUS_SA (1 << 2) /* Bit 2: Indicates the operating self-refresh mode */
-#define MPMC_STATUS_S (1 << 1) /* Bit 1: Write buffer status */
-#define MPMC_STATUS_B (1 << 0) /* Bit 0: MPMC is busy performing memory transactions */
-
-/* MPMCConfig (address 0x17008008) */
-
-#define MPMC_CONFIG_CLK (1 << 8) /* Bit 8: Indicates Clock ratio 1:2 */
-#define MPMC_CONFIG_N (1 << 0) /* Bit 0: Indicates big-endian mode */
-
-/* MPMCDynamicControl (address 0x17008020) */
-
-#define MPMC_DYNCONTROL_DP (1 << 13) /* Bit 13: Low-power SDRAM deep-sleep mode */
-#define MPMC_DYNCONTROL_I_SHIFT (8) /* Bits 7-8: I SDRAM initialization */
-#define MPMC_DYNCONTROL_I_MASK (3 << MPMC_DYNCONTROL_I_SHIFT)
-# define MPMC_DYNCONTROL_INORMAL (0 << MPMC_DYNCONTROL_I_SHIFT) /* SDRAM NORMAL operation command */
-# define MPMC_DYNCONTROL_IMODE (1 << MPMC_DYNCONTROL_I_SHIFT) /* SDRAM MODE command */
-# define MPMC_DYNCONTROL_IPALL (2 << MPMC_DYNCONTROL_I_SHIFT) /* SDRAM PALL (pre charge all) */
-# define MPMC_DYNCONTROL_INOP (3 << MPMC_DYNCONTROL_I_SHIFT) /* SDRAM NOP (no operation) */
-#define MPMC_DYNCONTROL_MMC (1 << 5) /* Bit 5: Memory clock control */
-#define MPMC_DYNCONTROL_SR (1 << 2) /* Bit 2: Self-refresh request */
-#define MPMC_DYNCONTROL_CS (1 << 1) /* Bit 1: Dynamic-memory clock control */
-#define MPMC_DYNCONTROL_CE (1 << 0) /* Bit 0: Dynamic-memory clock enable */
-
-/* MPMCDynamicRefresh (address 0x17008024) */
-
-#define MPMC_DYNREFRESH_TIMER_SHIFT (0) /* Bits 0-10: Refresh timer */
-#define MPMC_DYNREFRESH_TIMER_MASK (0x07ff << MPMC_DYNREFRESH_TIMER_SHIFT)
-
-/* MPMCDynamicReadConfig (address 0x17008028) */
-
-#define MPMC_DYNREADCONFIG_RD_SHIFT (0) /* Bits 0-1: Read data strategy */
-#define MPMC_DYNREADCONFIG_RD_MASK (2 << MPMC_DYNREADCONFIG_RD_SHIFT)
-# define MPMC_DYNREADCONFIG_CLKOUTDEL (0 << MPMC_DYNREADCONFIG_RD_SHIFT) /* Clock out delay */
-# define MPMC_DYNREADCONFIG_CMDDEL (1 << MPMC_DYNREADCONFIG_RD_SHIFT) /* Command delay */
-# define MPMC_DYNREADCONFIG_CMDDELP1 (2 << MPMC_DYNREADCONFIG_RD_SHIFT) /* Command delay plus 1*/
-# define MPMC_DYNREADCONFIG_CMDDELP2 (3 << MPMC_DYNREADCONFIG_RD_SHIFT) /* Command delay plus 2 */
-
-/* MPMCDynamictRP (address 0x17008030) */
-
-#define MPMC_DYNTRP_SHIFT (0) /* Bits 0-3: Precharge command period */
-#define MPMC_DYNTRP_MASK (15 << MPMC_DYNTRP_SHIFT)
-
-/* MPMCDynamictRAS (address 0x17008034) */
-
-#define MPMC_DYNTRAS_SHIFT (0) /* Bits 0-3: Active to pre charge command period */
-#define MPMC_DYNTRAS_MASK (15 << MPMC_DYNTRAS_SHIFT)
-
-/* MPMCDynamictSREX (address 0x17008038) */
-
-#define MPMC_DYNTSREX_SHIFT (0) /* Bits 0-3: Self-refresh exit time */
-#define MPMC_DYNTSREX_MASK (15 << MPMC_DYNTSREX_SHIFT)
-
-/* MPMCDynamictAPR (address 0x1700803c) */
-
-#define MPMC_DYNTAPR_SHIFT (0) /* Bits 0-3: Last-data-out to active command time */
-#define MPMC_DYNTAPR_MASK (15 << MPMC_DYNTAPR_SHIFT)
-
-/* MPMCDynamictDAL (address 0x17008040) */
-
-#define MPMC_DYNTDAL_SHIFT (0) /* Bits 0-3: Data-in to active command */
-#define MPMC_DYNTDAL_MASK (15 << MPMC_DYNTDAL_SHIFT)
-
-/* MPMCDynamictWR (address 0x17008044) */
-
-#define MPMC_DYNTWR_SHIFT (0) /* Bits 0-3: Write recovery time */
-#define MPMC_DYNTWR_MASK (15 << MPMC_DYNTWR_SHIFT)
-
-/* MPMCDynamictRC (address 0x17008048) */
-
-#define MPMC_DYNTRC_SHIFT (0) /* Bits 0-4: Active to active command period */
-#define MPMC_DYNTRC_MASK (31 << MPMC_DYNTRC_SHIFT)
-
-/* MPMCDynamictRFC (address 0x1700804c) */
-
-#define MPMC_DYNTRFC_SHIFT (0) /* Bits 0-4: Auto-refresh period and auto-refresh to active command period, */
-#define MPMC_DYNTRFC_MASK (31 << MPMC_DYNTRFC_SHIFT)
-
-/* MPMCDynamictXSR (address 0x1700804c) */
-
-#define MPMC_DYNTXSR_SHIFT (0) /* Bits 0-4: Exit self-refresh to active command time */
-#define MPMC_DYNTXSR_MASK (31 << MPMC_DYNTXSR_SHIFT)
-
-/* MPMCDynamictRRD (address 0x17008050) */
-
-#define MPMC_DYNTRRD_SHIFT (0) /* Bits 0-3: Active bank A to active bank B latency */
-#define MPMC_DYNTRRD_MASK (15 << MPMC_DYNTRRD_SHIFT)
-
-/* MPMCDynamictMRD (address 0x17008054) */
-
-#define MPMC_DYNTMRD_SHIFT (0) /* Bits 0-3: Load mode register to active command time */
-#define MPMC_DYNTMRD_MASK (15 << MPMC_DYNTMRD_SHIFT)
-
-/* MPMCStaticExtendedWait (address 0x17008080) */
-
-#define MPMC_DYNSTEXTWAIT_SHIFT (0) /* Bits 0-9: External wait time out */
-#define MPMC_DYNSTEXTWAIT_MASK (0x03ff << MPMC_DYNSTEXTWAIT_SHIFT)
-
-/* MPMCDynamicConfig0 (address 0x17008100) */
-
-#define MPMC_DYNCONFIG0_P (1 << 20) /* Bit 20: Write protect */
-#define MPMC_DYNCONFIG0_B (1 << 19) /* Bit 19: Buffer enable */
-#define MPMC_DYNCONFIG0_AM (1 << 14) /* Bit 14: Address mapping */
-#define MPMC_DYNCONFIG0_AM_SHIFT (7) /* Bits 7-12: Address mapping */
-#define MPMC_DYNCONFIG0_AM_MASK (0x3c << MPMC_DYNCONFIG0_AM_SHIFT)
- /* 16-bit external bus high-performance address mapping */
-# define MPMC_DYNCONFIG_HP16_2MX8 (0x00 << MPMC_DYNCONFIG0_AM_SHIFT) /* 16Mb (2Mx8), 2 banks, row length=11, column length=9 */
-# define MPMC_DYNCONFIG_HP16_1MX16 (0x01 << MPMC_DYNCONFIG0_AM_SHIFT) /* 16Mb (1Mx16), 2 banks, row length=11, column length=8 */
-# define MPMC_DYNCONFIG_HP16_8MX8 (0x04 << MPMC_DYNCONFIG0_AM_SHIFT) /* 64Mb (8Mx8), 4 banks, row length=12, column length=9 */
-# define MPMC_DYNCONFIG_HP16_4MX16 (0x05 << MPMC_DYNCONFIG0_AM_SHIFT) /* 64Mb (4Mx16), 4 banks, row length=12, column length=8 */
-# define MPMC_DYNCONFIG_HP16_16MX8 (0x08 << MPMC_DYNCONFIG0_AM_SHIFT) /* 128Mb (16Mx8), 4 banks, row length=12, column length=10 */
-# define MPMC_DYNCONFIG_HP16_8MX16 (0x09 << MPMC_DYNCONFIG0_AM_SHIFT) /* 128Mb (8Mx16), 4 banks, row length=12, column length=9 */
-# define MPMC_DYNCONFIG_HP16_32MX8 (0x0c << MPMC_DYNCONFIG0_AM_SHIFT) /* 256Mb (32Mx8), 4 banks, row length=13, column length=10 */
-# define MPMC_DYNCONFIG_HP16_16MX16 (0x0d << MPMC_DYNCONFIG0_AM_SHIFT) /* 256Mb (16Mx16), 4 banks, row length=13, column length=9 */
-# define MPMC_DYNCONFIG_HP16_64MX8 (0x10 << MPMC_DYNCONFIG0_AM_SHIFT) /* 512Mb (64Mx8), 4 banks, row length=13, column length=11 */
-# define MPMC_DYNCONFIG_HP16_32MX16 (0x11 << MPMC_DYNCONFIG0_AM_SHIFT) /* 512Mb (32Mx16), 4 banks, row length=13, column length=10 */
- /* 16-bit external bus low power SDRAM address mapping */
-# define MPMC_DYNCONFIG_LP16_2MX8 (0x20 << MPMC_DYNCONFIG0_AM_SHIFT) /* 6Mb (2Mx8), 2 banks, row length=11, column length=9 */
-# define MPMC_DYNCONFIG_LP16_1MX16 (0x21 << MPMC_DYNCONFIG0_AM_SHIFT) /* 16Mb (1Mx16), 2 banks, row length=11, column length=8 */
-# define MPMC_DYNCONFIG_LP16_8MX8 (0x24 << MPMC_DYNCONFIG0_AM_SHIFT) /* 64Mb (8Mx8), 4 banks, row length=12, column length=9 */
-# define MPMC_DYNCONFIG_LP16_4MX16 (0x25 << MPMC_DYNCONFIG0_AM_SHIFT) /* 64Mb (4Mx16), 4 banks, row length=12, column length=8 */
-# define MPMC_DYNCONFIG_LP16_16MX8 (0x28 << MPMC_DYNCONFIG0_AM_SHIFT) /* 128Mb (16Mx8), 4 banks, row length=12, column length=10 */
-# define MPMC_DYNCONFIG_LP16_8MX16 (0x29 << MPMC_DYNCONFIG0_AM_SHIFT) /* 128Mb (8Mx16), 4 banks, row length=12, column length=9 */
-# define MPMC_DYNCONFIG_LP16_32MX8 (0x2c << MPMC_DYNCONFIG0_AM_SHIFT) /* 256Mb (32Mx8), 4 banks, row length=13, column length=10 */
-# define MPMC_DYNCONFIG_LP16_16MX16 (0x2d << MPMC_DYNCONFIG0_AM_SHIFT) /* 256Mb (16Mx16), 4 banks, row length=13, column length=9 */
-# define MPMC_DYNCONFIG_LP16_64MX8 (0x30 << MPMC_DYNCONFIG0_AM_SHIFT) /* 512Mb (64Mx8), 4 banks, row length=13, column length=11 */
-# define MPMC_DYNCONFIG_LP16_32MX16 (0x31 << MPMC_DYNCONFIG0_AM_SHIFT) /* 512Mb (32Mx16), 4 banks, row length=13, column length=10 */
-#define MPMC_DYNCONFIG0_MD_SHIFT (3) /* Bits 3-4: Memory device */
-#define MPMC_DYNCONFIG0_MD_MASK (3 << MPMC_DYNCONFIG0_MD_SHIFT)
-# define MPMC_DYNCONFIG0_MDSDRAM (0 << MPMC_DYNCONFIG0_MD_SHIFT) /* SDRAM */
-# define MPMC_DYNCONFIG0_MDLPSDRAM (1 << MPMC_DYNCONFIG0_MD_SHIFT) /* low-power SDRAM */
-# define MPMC_DYNCONFIG0_MDMSF (2 << MPMC_DYNCONFIG0_MD_SHIFT) /* Micron SyncFlash */
-
-/* MPMCDynamicRasCas0 (address 0x17008104) */
-
-#define MPMC_DYNRASCAS0_CAS_SHIFT (8) /* Bits 8-9: CAS latency */
-#define MPMC_DYNRASCAS0_CAS_MASK (3 << MPMC_DYNRASCAS0_CAS_SHIFT)
-# define MPMC_DYNRASCAS0_CAS1CLK (1 << MPMC_DYNRASCAS0_CAS_SHIFT) /* one clock cycle */
-# define MPMC_DYNRASCAS0_CAS2CLK (2 << MPMC_DYNRASCAS0_CAS_SHIFT) /* two clock cycles */
-# define MPMC_DYNRASCAS0_CAS3CLK (3 << MPMC_DYNRASCAS0_CAS_SHIFT) /* three clock cycles */
-#define MPMC_DYNRASCAS0_RAS_SHIFT (0) /* Bits 0-1: RAS latency */
-#define MPMC_DYNRASCAS0_RAS_MASK (3 << MPMC_DYNRASCAS0_RAS_SHIFT)
-# define MPMC_DYNRASCAS0_RAS1CLK (1 << MPMC_DYNRASCAS0_RAS_SHIFT) /* one clock cycle */
-# define MPMC_DYNRASCAS0_RAS2CLK (2 << MPMC_DYNRASCAS0_RAS_SHIFT) /* two clock cycles */
-# define MPMC_DYNRASCAS0_RAS3CLK (3 << MPMC_DYNRASCAS0_RAS_SHIFT) /* three clock cycles */
-
-/* MPMCStaticConfig0 (address 0x17008120) and MPMCStaticConfig1 (address 0x17008220) */
-
-#define MPMC_STCONFIG_WP (1 << 20) /* Bit 20: Write protect */
-#define MPMC_STCONFIG_B (1 << 19) /* Bit 19: Buffer enable */
-#define MPMC_STCONFIG_EW (1 << 8) /* Bit 8: Extended wait */
-#define MPMC_STCONFIG_BLS (1 << 7) /* Bit 7: BLS EBI_NCAS_BLOUT_0/1 EBI_nWE config */
-#define MPMC_STCONFIG_PC (1 << 6) /* Bit 6: Chip select polarity */
-#define MPMC_STCONFIG_PM (1 << 63 /* Bit 3: Page mode */
-#define MPMC_STCONFIG_MW_SHIFT (0) /* Bits 0-1: Memory width */
-#define MPMC_STCONFIG_MW_MASK (3 << MPMC_STCONFIG_MW_SHIFT)
-# define MPMC_STCONFIG_MW8BIT (0 << MPMC_STCONFIG_MW_SHIFT) /* 8-bit */
-# define MPMC_STCONFIG_MW16BIT (1 << MPMC_STCONFIG_MW_SHIFT) /* 16-bit */
-
-/* MPMCStaticWaitWen0 (address 0x17008204) and MPMCStaticWaitWen1 (address 0x17008224) */
-
-#define MPMC_STWAITWEN_SHIFT (0) /* WAITWEN Delay from chip select to write enable */
-#define MPMC_STWAITWEN_MASK (15 << MPMC_STWAITWEN_SHIFT)
-
-/* MPMCStaticWaitOen (address 0x17008208) and MPMCStaticWaitOen1 (address 0x17008228) */
-
-#define MPMC_STWAITOEN_SHIFT (0) /* WAITOEN Delay from chip select to output enable */
-#define MPMC_STWAITOEN_MASK (15 << MPMC_STWAITOEN_SHIFT)
-
-/* MPMCStaticWaitRd0 (address 0x1700820c) and MPMCStaticWaitRd1 (address 0x17008022c) */
-
-#define MPMC_STWAITRD_SHIFT (0) /* Read first access wait state */
-#define MPMC_STWAITRD_MASK (31 << MPMC_STWAITRD_SHIFT)
-
-/* MPMCStaticWaitPage0 (address 0x17008210) and MPMCStaticWaitPage1 (address 0x17008230) */
-
-#define MPMC_STWAITPAGE_SHIFT (0) /* Read after the first read wait states */
-#define MPMC_STWAITPAGE_MASK (31 << MPMC_STWAITPAGE_SHIFT)
-
-/* MPMCStaticWaitWr0 (address 0x17008214) and MPMCStaticWaitWr1 (address 0x17008234) */
-
-#define MPMC_STWAITWR_SHIFT (0) /* Time for write accesses after the first read */
-#define MPMC_STWAITWR_MASK (31 << MPMC_STWAITWR_SHIFT)
-
-/* MPMCStaticWaitTurn0 (address 0x17008218) and MPMCStaticWaitTurn1 (address 0x17008238) */
-
-#define MPMC_STWAITTURN_SHIFT (0) /* Bus turnaround cycles */
-#define MPMC_STWAITTURN_MASK (15 << MPMC_STWAITTURN_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_MPMC_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_nand.h b/nuttx/arch/arm/src/lpc313x/lpc313x_nand.h
deleted file mode 100755
index 1c04055bb..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_nand.h
+++ /dev/null
@@ -1,378 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_nand.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_NAND_H
-#define __ARCH_ARM_SRC_LPC313X_NAND_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* NAND FLASH controller register base address offset into the APB4 domain **********************/
-
-#define LPC313X_NAND_VBASE (LPC313X_APB4_VADDR+LPC313X_APB4_NAND_OFFSET)
-#define LPC313X_NAND_PBASE (LPC313X_APB4_PADDR+LPC313X_APB4_NAND_OFFSET)
-
-/* NAND FLASH controller register offsets (with respect to the base of the APB4 domain) *********/
-
-#define LPC313X_NAND_IRQSTATUS1_OFFSET 0x00 /* Interrrupt status register (first 32-bits) */
-#define LPC313X_NAND_IRQMASK1_OFFSET 0x04 /* Interrupt mask register (first 32-bits) */
-#define LPC313X_NAND_IRQSTATUSRAW1_OFFSET 0x08 /* Unmasked register status (first 32-bits) */
-#define LPC313X_NAND_CONFIG_OFFSET 0x0c /* NAND Flash controller configuration register */
-#define LPC313X_NAND_IOCONFIG_OFFSET 0x10 /* Default value settings for IO signals */
-#define LPC313X_NAND_TIMING1_OFFSET 0x14 /* First NAND FLASH controller timing register */
-#define LPC313X_NAND_TIMING2_OFFSET 0x18 /* Second NAND FLASH controller timing register */
-#define LPC313X_NAND_SETCMD_OFFSET 0x20 /* NAND FLASH device command register */
-#define LPC313X_NAND_SETADDR_OFFSET 0x24 /* NAND FLASH device address register */
-#define LPC313X_NAND_WRITEDATA_OFFSET 0x28 /* NAND FLASH device write data register */
-#define LPC313X_NAND_SETCE_OFFSET 0x2c /* Set all CE and WP_n signals */
-#define LPC313X_NAND_READDATA_OFFSET 0x30 /* NAND FLASH device read data register */
-#define LPC313X_NAND_CHECKSTS_OFFSET 0x34 /* Check status of interrupts */
-#define LPC313X_NAND_CONTROLFLOW_OFFSET 0x38 /* Commands to read and write pages */
-#define LPC313X_NAND_GPIO1_OFFSET 0x40 /* Program IO pins that can be used as GPIO */
-#define LPC313X_NAND_GPIO2_OFFSET 0x44 /* Program IO pins that can be used as GPIO */
-#define LPC313X_NAND_IRQSTATUS2_OFFSET 0x48 /* Interrrupt status register (second 32-bits) */
-#define LPC313X_NAND_IRQMASK3_OFFSET 0x4c /* Interrupt mask register (second 32-bits) */
-#define LPC313X_NAND_IRQSTATUSRAW2_OFFSET 0x50 /* Unmasked register status (second 32-bits) */
-#define LPC313X_NAND_ECCERRSTATUS_OFFSET 0x78 /* ECC error status register */
-
-/* NAND FLASH controller register (virtual) addresses *******************************************/
-
-#define LPC313X_NAND_IRQSTATUS1 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQSTATUS1_OFFSET)
-#define LPC313X_NAND_IRQMASK1 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQMASK1_OFFSET)
-#define LPC313X_NAND_IRQSTATUSRAW1 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQSTATUSRAW1_OFFSET)
-#define LPC313X_NAND_CONFIG (LPC313X_NAND_VBASE+LPC313X_NAND_CONFIG_OFFSET)
-#define LPC313X_NAND_IOCONFIG (LPC313X_NAND_VBASE+LPC313X_NAND_IOCONFIG_OFFSET)
-#define LPC313X_NAND_TIMING1 (LPC313X_NAND_VBASE+LPC313X_NAND_TIMING1_OFFSET)
-#define LPC313X_NAND_TIMING2 (LPC313X_NAND_VBASE+LPC313X_NAND_TIMING2_OFFSET)
-#define LPC313X_NAND_SETCMD (LPC313X_NAND_VBASE+LPC313X_NAND_SETCMD_OFFSET)
-#define LPC313X_NAND_SETADDR (LPC313X_NAND_VBASE+LPC313X_NAND_SETADDR_OFFSET)
-#define LPC313X_NAND_WRITEDATA (LPC313X_NAND_VBASE+LPC313X_NAND_WRITEDATA_OFFSET)
-#define LPC313X_NAND_SETCE (LPC313X_NAND_VBASE+LPC313X_NAND_SETCE_OFFSET)
-#define LPC313X_NAND_READDATA (LPC313X_NAND_VBASE+LPC313X_NAND_READDATA_OFFSET)
-#define LPC313X_NAND_CHECKSTS (LPC313X_NAND_VBASE+LPC313X_NAND_CHECKSTS_OFFSET)
-#define LPC313X_NAND_CONTROLFLOW (LPC313X_NAND_VBASE+LPC313X_NAND_CONTROLFLOW_OFFSET)
-#define LPC313X_NAND_GPIO1 (LPC313X_NAND_VBASE+LPC313X_NAND_GPIO1_OFFSET)
-#define LPC313X_NAND_GPIO2 (LPC313X_NAND_VBASE+LPC313X_NAND_GPIO2_OFFSET)
-#define LPC313X_NAND_IRQSTATUS2 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQSTATUS2_OFFSET)
-#define LPC313X_NAND_IRQMASK3 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQMASK3_OFFSET)
-#define LPC313X_NAND_IRQSTATUSRAW2 (LPC313X_NAND_VBASE+LPC313X_NAND_IRQSTATUSRAW2_OFFSET)
-#define LPC313X_NAND_ECCERRSTATUS (LPC313X_NAND_VBASE+LPC313X_NAND_ECCERRSTATUS_OFFSET)
-
-/* NAND FLASH controller register bit definitions ***********************************************/
-/* NandIRQStatus1 register description (NandIRQStatus1, address 0x17000800) */
-
-#define NAND_IRQSTATUS1_MNANDRYBN3 (1 << 31) /* Bit 31: mNAND_RYBN3 positive edge */
-#define NAND_IRQSTATUS1_MNANDRYBN2 (1 << 30) /* Bit 30: mNAND_RYBN2 positive edge */
-#define NAND_IRQSTATUS1_MNANDRYBN1 (1 << 29) /* Bit 29: mNAND_RYBN1 positive edge */
-#define NAND_IRQSTATUS1_MNANDRYBN0 (1 << 28) /* Bit 28: mNAND_RYBN0 positive edge */
-#define NAND_IRQSTATUS1_RAM1ERASED (1 << 27) /* Bit 27: RAM 1 erased */
-#define NAND_IRQSTATUS1_RAM0ERASED (1 << 26) /* Bit 26: RAM 0 erased */
-#define NAND_IRQSTATUS1_WRPG1DONE (1 << 25) /* Bit 25: Write page 1 done */
-#define NAND_IRQSTATUS1_WRPG0DONE (1 << 24) /* Bit 24: Write page 0 done */
-#define NAND_IRQSTATUS1_RDPG1DONE (1 << 23) /* Bit 23: Read page 1 done */
-#define NAND_IRQSTATUS1_RDPG0DONE (1 << 22) /* Bit 22: Read page 0 done */
-#define NAND_IRQSTATUS1_RAM0DECODE (1 << 21) /* Bit 21: RAM 0 decoded */
-#define NAND_IRQSTATUS1_RAM0ENCODE (1 << 20) /* Bit 20: RAM 0 encoded */
-#define NAND_IRQSTATUS1_RAM1DECODE (1 << 19) /* Bit 19: RAM 1 decoded */
-#define NAND_IRQSTATUS1_RAM1ENCODE (1 << 18) /* Bit 18: RAM 1 encoded */
-#define NAND_IRQSTATUS1_RAM00ERRS (1 << 17) /* Bit 17: RAM 0 decoded with 0 errors */
-#define NAND_IRQSTATUS1_RAM01ERR (1 << 16) /* Bit 16: RAM 0 decoded with 1 error (depends on mode) */
-#define NAND_IRQSTATUS1_RAM02ERR (1 << 15) /* Bit 15: RAM 0 decoded with 2 error */
-#define NAND_IRQSTATUS1_RAM03ERR (1 << 14) /* Bit 14: RAM 0 decoded with 3 error */
-#define NAND_IRQSTATUS1_RAM04ERR (1 << 13) /* Bit 13: RAM 0 decoded with 4 error */
-#define NAND_IRQSTATUS1_RAM05ERR (1 << 12) /* Bit 12: RAM 0 decoded with 5 error */
-#define NAND_IRQSTATUS1_RAM0UNCORR (1 << 11) /* Bit 11: RAM 0 uncorrectable */
-#define NAND_IRQSTATUS1_RAM10ERR (1 << 10) /* Bit 10: RAM 1 decoded with 0 errors */
-#define NAND_IRQSTATUS1_RAM11ERR (1 << 9) /* Bit 9: RAM 1 decoded with 1 error (depends on mode) */
-#define NAND_IRQSTATUS1_RAM12ERR (1 << 8) /* Bit 8: RAM 1 decoded with 2 error */
-#define NAND_IRQSTATUS1_RAM13ERR (1 << 7) /* Bit 7: RAM 1 decoded with 3 error */
-#define NAND_IRQSTATUS1_RAM14ERR (1 << 6) /* Bit 6: RAM 1 decoded with 4 error */
-#define NAND_IRQSTATUS1_RAM15ERR (1 << 5) /* Bit 5: RAM 1 decoded with 5 error */
-#define NAND_IRQSTATUS1_RAM1UNCORR (1 << 4) /* Bit 4: RAM 1 uncorrectable */
-
-/* NandIRQMask1 register description (NandIRQMask1, address 0x17000804) */
-
-#define NAND_IRQIRQMASK1_MNANDRYBN3 (1 << 31) /* Bit 31: mNAND_RYBN3 positive edge */
-#define NAND_IRQIRQMASK1_MNANDRYBN2 (1 << 30) /* Bit 30: mNAND_RYBN2 positive edge */
-#define NAND_IRQIRQMASK1_MNANDRYBN1 (1 << 29) /* Bit 29: mNAND_RYBN1 positive edge */
-#define NAND_IRQIRQMASK1_MNANDRYBN0 (1 << 28) /* Bit 28: mNAND_RYBN0 positive edge */
-#define NAND_IRQIRQMASK1_RAM1ERASED (1 << 27) /* Bit 27: RAM 1 erased */
-#define NAND_IRQIRQMASK1_RAM0ERASED (1 << 26) /* Bit 26: RAM 0 erased */
-#define NAND_IRQIRQMASK1_WRPG1DONE (1 << 25) /* Bit 25: Write page 1 done */
-#define NAND_IRQIRQMASK1_WRPG0DONE (1 << 24) /* Bit 24: Write page 0 done */
-#define NAND_IRQIRQMASK1_RDPG1DONE (1 << 23) /* Bit 23: Read page 1 done */
-#define NAND_IRQIRQMASK1_RDPG0DONE (1 << 22) /* Bit 22: Read page 0 done */
-#define NAND_IRQIRQMASK1_RAM0DECODE (1 << 21) /* Bit 21: RAM 0 decoded */
-#define NAND_IRQIRQMASK1_RAM0ENCODE (1 << 20) /* Bit 20: RAM 0 encoded */
-#define NAND_IRQIRQMASK1_RAM1DECODE (1 << 19) /* Bit 19: RAM 1 decoded */
-#define NAND_IRQIRQMASK1_RAM1ENCODE (1 << 18) /* Bit 18: RAM 1 encoded */
-#define NAND_IRQIRQMASK1_RAM00ERRS (1 << 17) /* Bit 17: RAM 0 decoded with 0 errors */
-#define NAND_IRQIRQMASK1_RAM01ERR (1 << 16) /* Bit 16: RAM 0 decoded with 1 error (depends on mode) */
-#define NAND_IRQIRQMASK1_RAM02ERR (1 << 15) /* Bit 15: RAM 0 decoded with 2 error */
-#define NAND_IRQIRQMASK1_RAM03ERR (1 << 14) /* Bit 14: RAM 0 decoded with 3 error */
-#define NAND_IRQIRQMASK1_RAM04ERR (1 << 13) /* Bit 13: RAM 0 decoded with 4 error */
-#define NAND_IRQIRQMASK1_RAM05ERR (1 << 12) /* Bit 12: RAM 0 decoded with 5 error */
-#define NAND_IRQIRQMASK1_RAM0UNCORR (1 << 11) /* Bit 11: RAM 0 uncorrectable */
-#define NAND_IRQIRQMASK1_RAM10ERR (1 << 10) /* Bit 10: RAM 1 decoded with 0 errors */
-#define NAND_IRQIRQMASK1_RAM11ERR (1 << 9) /* Bit 9: RAM 1 decoded with 1 error (depends on mode) */
-#define NAND_IRQIRQMASK1_RAM12ERR (1 << 8) /* Bit 8: RAM 1 decoded with 2 error */
-#define NAND_IRQIRQMASK1_RAM13ERR (1 << 7) /* Bit 7: RAM 1 decoded with 3 error */
-#define NAND_IRQIRQMASK1_RAM14ERR (1 << 6) /* Bit 6: RAM 1 decoded with 4 error */
-#define NAND_IRQIRQMASK1_RAM15ERR (1 << 5) /* Bit 5: RAM 1 decoded with 5 error */
-#define NAND_IRQIRQMASK1_RAM1UNCORR (1 << 4) /* Bit 4: RAM 1 uncorrectable */
-
-/* NandIRQStatusRaw1 register description (NandIRQStatusRaw1, address 0x17000808) */
-
-#define NAND_IRQSTATUSRAW1_MNANDRYBN3 (1 << 31) /* Bit 31: mNAND_RYBN3 positive edge */
-#define NAND_IRQSTATUSRAW1_MNANDRYBN2 (1 << 30) /* Bit 30: mNAND_RYBN2 positive edge */
-#define NAND_IRQSTATUSRAW1_MNANDRYBN1 (1 << 29) /* Bit 29: mNAND_RYBN1 positive edge */
-#define NAND_IRQSTATUSRAW1_MNANDRYBN0 (1 << 28) /* Bit 28: mNAND_RYBN0 positive edge */
-#define NAND_IRQSTATUSRAW1_RAM1ERASED (1 << 27) /* Bit 27: RAM 1 erased */
-#define NAND_IRQSTATUSRAW1_RAM0ERASED (1 << 26) /* Bit 26: RAM 0 erased */
-#define NAND_IRQSTATUSRAW1_WRPG1DONE (1 << 25) /* Bit 25: Write page 1 done */
-#define NAND_IRQSTATUSRAW1_WRPG0DONE (1 << 24) /* Bit 24: Write page 0 done */
-#define NAND_IRQSTATUSRAW1_RDPG1DONE (1 << 23) /* Bit 23: Read page 1 done */
-#define NAND_IRQSTATUSRAW1_RDPG0DONE (1 << 22) /* Bit 22: Read page 0 done */
-#define NAND_IRQSTATUSRAW1_RAM0DECODE (1 << 21) /* Bit 21: RAM 0 decoded */
-#define NAND_IRQSTATUSRAW1_RAM0ENCODE (1 << 20) /* Bit 20: RAM 0 encoded */
-#define NAND_IRQSTATUSRAW1_RAM1DECODE (1 << 19) /* Bit 19: RAM 1 decoded */
-#define NAND_IRQSTATUSRAW1_RAM1ENCODE (1 << 18) /* Bit 18: RAM 1 encoded */
-#define NAND_IRQSTATUSRAW1_RAM00ERRS (1 << 17) /* Bit 17: RAM 0 decoded with 0 errors */
-#define NAND_IRQSTATUSRAW1_RAM01ERR (1 << 16) /* Bit 16: RAM 0 decoded with 1 error (depends on mode) */
-#define NAND_IRQSTATUSRAW1_RAM02ERR (1 << 15) /* Bit 15: RAM 0 decoded with 2 error */
-#define NAND_IRQSTATUSRAW1_RAM03ERR (1 << 14) /* Bit 14: RAM 0 decoded with 3 error */
-#define NAND_IRQSTATUSRAW1_RAM04ERR (1 << 13) /* Bit 13: RAM 0 decoded with 4 error */
-#define NAND_IRQSTATUSRAW1_RAM05ERR (1 << 12) /* Bit 12: RAM 0 decoded with 5 error */
-#define NAND_IRQSTATUSRAW1_RAM0UNCORR (1 << 11) /* Bit 11: RAM 0 uncorrectable */
-#define NAND_IRQSTATUSRAW1_RAM10ERR (1 << 10) /* Bit 10: RAM 1 decoded with 0 errors */
-#define NAND_IRQSTATUSRAW1_RAM11ERR (1 << 9) /* Bit 9: RAM 1 decoded with 1 error (depends on mode) */
-#define NAND_IRQSTATUSRAW1_RAM12ERR (1 << 8) /* Bit 8: RAM 1 decoded with 2 error */
-#define NAND_IRQSTATUSRAW1_RAM13ERR (1 << 7) /* Bit 7: RAM 1 decoded with 3 error */
-#define NAND_IRQSTATUSRAW1_RAM14ERR (1 << 6) /* Bit 6: RAM 1 decoded with 4 error */
-#define NAND_IRQSTATUSRAW1_RAM15ERR (1 << 5) /* Bit 5: RAM 1 decoded with 5 error */
-#define NAND_IRQSTATUSRAW1_RAM1UNCORR (1 << 4) /* Bit 4: RAM 1 uncorrectable */
-
-/* NandConfig register description (NandConfig, address 0x1700080c) */
-
-#define NAND_CONFIG_ECC_MODE (1 << 12) /* Bit 12: ECC mode 0 */
-#define NAND_CONFIG_TL_SHIFT (10) /* Bits 10-11: Transfer limit */
-#define NAND_CONFIG_TL_MASK (3 <<NAND_CONFIG_TL_SHIFT)
-# define NAND_CONFIG_TL_528 (0 <<NAND_CONFIG_TL_SHIFT)
-# define NAND_CONFIG_TL_516 (1 <<NAND_CONFIG_TL_SHIFT)
-# define NAND_CONFIG_TL_512 (2 <<NAND_CONFIG_TL_SHIFT)
-#define NAND_CONFIG_DC (1 << 8) /* Bit 8: Deactivate CE enable */
-#define NAND_CONFIG_M (1 << 7) /* Bit 7: 512 mode */
-#define NAND_CONFIG_LC_SHIFT (5) /* Bits 5-6: Latency Configuration */
-#define NAND_CONFIG_LC_MASK (3 << NAND_CONFIG_LC_SHIFT)
-# define NAND_CONFIG_LC_0WAITSTATES (0 << NAND_CONFIG_LC_SHIFT)
-# define NAND_CONFIG_LC_1WAITSTATES (1 << NAND_CONFIG_LC_SHIFT)
-# define NAND_CONFIG_LC_2WAITSTATES (2 << NAND_CONFIG_LC_SHIFT)
-#define NAND_CONFIG_ES (1 << 4) /* Bit 4: Endianess setting */
-#define NAND_CONFIG_DE (1 << 3) /* Bit 3: DMA external enable */
-#define NAND_CONFIG_WD (1 << 1) /* Bit 1: Wide device */
-#define NAND_CONFIG_EC (1 << 0) /* Bit 0: ECC on */
-
-/* NandIOConfig register description (NandIOConfig, address 0x1700 0810) */
-
-#define NAND_IOCONFIG_NI (1 << 24) /* Bit 24: Nand IO drive default */
-#define NAND_IOCONFIG_DN_SHIFT (8) /* Bits 8-23: Data to NAND default */
-#define NAND_IOCONFIG_DN_MASK (0xffff << NAND_IOCONFIG_DN_SHIFT)
-#define NAND_IOCONFIG_CD_SHIFT (6) /* Bits 6-7: CLE default */
-#define NAND_IOCONFIG_CD_MASK (3 << NAND_IOCONFIG_CD_SHIFT)
-#define NAND_IOCONFIG_AD_SHIFT (4) /* Bits 4-5: ALE default */
-#define NAND_IOCONFIG_AD_MASK (3 << NAND_IOCONFIG_AD_SHIFT)
-#define NAND_IOCONFIG_WD_SHIFT (2) /* Bits 2-3: WE_n default */
-#define NAND_IOCONFIG_WD_MASK (3 << NAND_IOCONFIG_WD_SHIFT)
-#define NAND_IOCONFIG_RD_SHIFT (0) /* Bits 0-1: RE_n default */
-#define NAND_IOCONFIG_RD_MASK (3 << NAND_IOCONFIG_RD_SHIFT)
-
-/* NandTiming1 register description (NandTiming1, address 0x17000814) */
-
-#define NAND_TIMING1_TSRD_SHIFT (20) /* Bits 20-21: Single data input delay */
-#define NAND_TIMING1_TSRD_MASK (3 << NAND_TIMING1_TSRD_SHIFT
-#define NAND_TIMING1_TALS_SHIFT (16) /* Bits 16-18: Address setup time */
-#define NAND_TIMING1_TALS_MASK (7 << NAND_TIMING1_TALS_SHIFT
-#define NAND_TIMING1_TALH_SHIFT (12) /* Bits 12-14: Address hold time */
-#define NAND_TIMING1_TALH_MASK (7 << NAND_TIMING1_TALH_SHIFT
-#define NAND_TIMING1_TCLS_SHIFT (4) /* Bits 4-6: Command setup time */
-#define NAND_TIMING1_TCLS_MASK (7 << NAND_TIMING1_TCLS_SHIFT
-#define NAND_TIMING1_TCLH_SHIFT (0) /* Bits 0-2: Command hold time */
-#define NAND_TIMING1_TCLH_MASK (7 << NAND_TIMING1_TCLH_SHIFT
-
-/* NandTiming2 register description (NandTiming2, address 0x17000818) */
-
-#define NAND_TIMING2_TDRD_SHIFT (28) /* Bits 28-30: Data input delay */
-#define NAND_TIMING2_TDRD_MASK (7 << NAND_TIMING2_TDRD_SHIFT)
-#define NAND_TIMING2_TEBIDEL_SHIFT (24) /* Bits 24-26: EBI delay time */
-#define NAND_TIMING2_TEBIDEL_MASK (7 << NAND_TIMING2_TEBIDEL_SHIFT)
-#define NAND_TIMING2_TCH_SHIFT (22) /* Bits 20-22: Chip select hold time */
-#define NAND_TIMING2_TCH_MASK (7 << NAND_TIMING2_TCH_SHIFT)
-#define NAND_TIMING2_TCS_SHIFT (16) /* Bits 16-18: Chip select setup time */
-#define NAND_TIMING2_TCS_MASK (7 << NAND_TIMING2_TCS_SHIFT)
-#define NAND_TIMING2_TREH_SHIFT (12) /* Bits 12-14: Read enable high hold */
-#define NAND_TIMING2_TREH_MASK (7 << NAND_TIMING2_TREH_SHIFT)
-#define NAND_TIMING2_TRP_SHIFT (8) /* Bits 8-10: Read enable pulse width */
-#define NAND_TIMING2_TRP_MASK (7 << NAND_TIMING2_TRP_SHIFT)
-#define NAND_TIMING2_TWH_SHIFT (4) /* Bits 4-6: Write enable high hold */
-#define NAND_TIMING2_TWH_MASK (7 << NAND_TIMING2_TWH_SHIFT)
-#define NAND_TIMING2_TWP_SHIFT (0) /* Bits 0-2: Write enable pulse width */
-#define NAND_TIMING2_TWP_MASK (7 << NAND_TIMING2_TWP_SHIFT)
-
-/* NandSetCmd register description (NandSetCmd, address 0x17000820) */
-
-#define NAND_SETCMD_CV_SHIFT (0) /* Bits 0-15: Command value */
-#define NAND_SETCMD_CV_MASK (0xffff << NAND_SETCMD_CV_SHIFT)
-
-/* NandSetAddr register description (NandSetAddr, address 0x17000824) */
-
-#define NAND_SETADDR_AV_SHIFT (0) /* Bits 0-15: Address value */
-#define NAND_SETADDR_AV_MASK (0xffff << NAND_SETADDR_AV_SHIFT)
-
-/* NandWriteData register description (NandWriteData, address 0x17000828) */
-
-#define NAND_WRITEDATA_WV_SHIFT (0) /* Bits 0-15: Write value */
-#define NAND_WRITEDATA_WV_MASK (0xffff << NAND_SETADDR_AV_SHIFT)
-
-/* NandSetCE register description (NandSetCE, address 0x1700082c) */
-
-#define NAND_SETCE_WP (1 << 4) /* Bit 4: WP_n pin value */
-#define NAND_SETCE_CEV_MASK (0x0f)
-#define NAND_SETCE_CE1N (1 << 3) /* Bit 3: Chip select CE1_n value */
-#define NAND_SETCE_CE2N (1 << 2) /* Bit 2: Chip select CE2_n value */
-#define NAND_SETCE_CE3N (1 << 1) /* Bit 1: Chip select CE3_n value */
-#define NAND_SETCE_CE4N (1 << 0) /* Bit 0: Chip select CE4_n value */
-
-/* NandReadData register description (NandReadData, address 0x17000830) */
-
-#define NAND_READDATA_RV_SHIFT (0) /* Bits 0-15: Read value */
-#define NAND_READDATA_RV_MASK (0xffff << NAND_READDATA_RV_SHIFT)
-
-/* NandCheckSTS register description (NandCheckSTS, address 0x17000834) */
-
-#define NAND_CHECKSTS_R3R (1 << 8) /* Bit 8: mNAND_RYBN3 rising edge */
-#define NAND_CHECKSTS_R2R (1 << 7) /* Bit 7: mNAND_RYBN2 rising edge */
-#define NAND_CHECKSTS_R1R (1 << 6) /* Bit 6: mNAND_RYBN1 rising edge */
-#define NAND_CHECKSTS_R0R (1 << 5) /* Bit 5: mNAND_RYBN0 rising edge */
-#define NAND_CHECKSTS_R3 (1 << 4) /* Bit 4: mNAND_RYBN3 value */
-#define NAND_CHECKSTS_R2 (1 << 3) /* Bit 3: mNAND_RYBN2 value */
-#define NAND_CHECKSTS_R1 (1 << 2) /* Bit 2: mNAND_RYBN1 value */
-#define NAND_CHECKSTS_R0 (1 << 1) /* Bit 1: mNAND_RYBN0 value */
-#define NAND_CHECKSTS_VB (1 << 0) /* Bit 0: APB busy */
-
-/* NandControlFlow register description (NandControlFlow, address 0x17000838) */
-
-#define NAND_CONTROLFLOW_W1 (1 << 5) /* Bit 5: Starts write SRAM1 to NAND */
-#define NAND_CONTROLFLOW_W0 (1 << 4) /* Bit 4: Starts write SRAM0 to NAND */
-#define NAND_CONTROLFLOW_R1 (1 << 1) /* Bit 1: Starts read from NAND to SRAM1 */
-#define NAND_CONTROLFLOW_R0 (1 << 0) /* Bit 0: Starts read from NAND to SRAM0 */
-
-/* NandGPIO1 register description (NandGPIO1, address 0x17000840) */
-
-#define NAND_GPIO1_GPIOCONF (1 << 26) /* Bit 26: GPIO mode */
-#define NAND_GPIO1_WPN (1 << 25) /* Bit 25: Value on WP_n */
-#define NAND_GPIO1_CLE (1 << 24) /* Bit 24: Value on CLE */
-#define NAND_GPIO1_ALE (1 << 23) /* Bit 23: Value on ALE */
-#define NAND_GPIO1_REN (1 << 22) /* Bit 22: Value on RE_n */
-#define NAND_GPIO1_WEN (1 << 21) /* Bit 21: Value on WE_n */
-#define NAND_GPIO1_CE4N (1 << 20) /* Bit 20: Value on NAND_NCS_3 */
-#define NAND_GPIO1_CE3N (1 << 19) /* Bit 19: Value on NAND_NCS_2 */
-#define NAND_GPIO1_CE2N (1 << 18) /* Bit 18: Value on NAND_NCS_1 */
-#define NAND_GPIO1_CE1N (1 << 17) /* Bit 17: Value on NAND_NCS_0 */
-#define NAND_GPIO1_IODRIVE (1 << 16) /* Bit 16: Program value on NAND IO drive */
-#define NAND_GPIO1_IODATA_SHIFT (0) /* Bit 0-15: Program value on data to NAND IO */
-#define NAND_GPIO1_IODATA_MASK (0xffff << NAND_GPIO1_IODATA_SHIFT)
-
-/* NandGPIO2 register description (NandGPIO2, address 0x17000844) */
-
-#define NAND_GPIO2_RnB3 (1 << 19) /* Bit 19: Read value from mNAND_RYBN3 */
-#define NAND_GPIO2_RnB2 (1 << 18) /* Bit 18: Read value from mNAND_RYBN2 */
-#define NAND_GPIO2_RnB1 (1 << 17) /* Bit 17: Read value from mNAND_RYBN1 */
-#define NAND_GPIO2_RnB0 (1 << 16) /* Bit 16: Read value from mNAND_RYBN0 */
-#define NAND_GPIO2_READDATA_SHIFT (0) /* Bit 0-15: Read data from NAND IO */
-#define NAND_GPIO2_READDATA_MASK (0xffff << NAND_GPIO2_READDATA_SHIFT)
-
-/* NandIRQStatus2 register description (NandIRQStatus2, address 0x1700 0848) */
-
-#define NAND_IRQSTATUS2_PGWHILEAPB (1 << 4) /* Bit 4: Page access while APB access */
-#define NAND_IRQSTATUS2_APBWHILEPG (1 << 3) /* Bit 3: APB access while page access */
-#define NAND_IRQSTATUS2_FLASHBUSY (1 << 2) /* Bit 2: Flash access while busy */
-#define NAND_IRQSTATUS2_RAM1BUSY (1 << 1) /* Bit 1: RAM1 access while busy */
-#define NAND_IRQSTATUS2_RAM0BUSY (1 << 0) /* Bit 0: RAM0 access while busy */
-
-/* NandIRQMask2 register description (NandIRQMask2, address 0x1700 084C) */
-
-#define NAND_IRQMASK2_PGWHILEAPB (1 << 4) /* Bit 4: Page access while APB access */
-#define NAND_IRQMASK2_APBWHILEPG (1 << 3) /* Bit 3: APB access while page access */
-#define NAND_IRQMASK2_FLASHBUSY (1 << 2) /* Bit 2: Flash access while busy */
-#define NAND_IRQMASK2_RAM1BUSY (1 << 1) /* Bit 1: RAM1 access while busy */
-#define NAND_IRQMASK2_RAM0BUSY (1 << 0) /* Bit 0: RAM0 access while busy */
-
-/* NandIRQStatusRaw2 register description (NandIRQStatusRaw2, address 0x1700 0850) */
-
-#define NAND_IRQSTATUSRAW2_PGWHILEAPB (1 << 4) /* Bit 4: Page access while APB access */
-#define NAND_IRQSTATUSRAW2_APBWHILEPG (1 << 3) /* Bit 3: APB access while page access */
-#define NAND_IRQSTATUSRAW2_FLASHBUSY (1 << 2) /* Bit 2: Flash access while busy */
-#define NAND_IRQSTATUSRAW2_RAM1BUSY (1 << 1) /* Bit 1: RAM1 access while busy */
-#define NAND_IRQSTATUSRAW2_RAM0BUSY (1 << 0) /* Bit 0: RAM0 access while busy */
-
-/* NandECCErrStatus register description (NandECCErrStatus, address 0x1700 0878) */
-
-
-#define NAND_ECCERRSTATUS_NERR1_SHIFT (4) /* Bits 4-7: Number of errors in RAM1 */
-#define NAND_ECCERRSTATUS_NERR1_MASK (0x0f << NAND_ECCERRSTATUS_NERR1_SHIFT)
-#define NAND_ECCERRSTATUS_NERR0_SHIFT (0) /* Bits 0-3: Number of errors in RAM0 */
-#define NAND_ECCERRSTATUS_NERR0_MASK (0x0f << NAND_ECCERRSTATUS_NERR0_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_NAND_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_pcm.h b/nuttx/arch/arm/src/lpc313x/lpc313x_pcm.h
deleted file mode 100755
index ec2f08353..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_pcm.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_pcm.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_PCM_H
-#define __ARCH_ARM_SRC_LPC313X_PCM_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* PCM register base address offset into the APB2 domain ****************************************/
-
-#define LPC313X_PCM_VBASE (LPC313X_APB2_VSECTION+LPC313X_APB2_PCM_OFFSET)
-#define LPC313X_PCM_PBASE (LPC313X_APB2_PSECTION+LPC313X_APB2_PCM_OFFSET)
-
-/* PCM register offsets (with respect to the PCM base) ******************************************/
-
-#define LPC313X_PCM_GLOBAL_OFFSET 0x000 /* Global register */
-#define LPC313X_PCM_CNTL0_OFFSET 0x004 /* Control register 0 */
-#define LPC313X_PCM_CNTL1_OFFSET 0x008 /* Control register 1 */
-#define LPC313X_PCM_HPOUT_OFFSET(n) (0x00c+((n)<<2)) /* Transmit data register n */
-#define LPC313X_PCM_HPOUT0_OFFSET 0x00c /* Transmit data register 0 */
-#define LPC313X_PCM_HPOUT1_OFFSET 0x010 /* Transmit data register 1 */
-#define LPC313X_PCM_HPOUT2_OFFSET 0x014 /* Transmit data register 2 */
-#define LPC313X_PCM_HPOUT3_OFFSET 0x018 /* Transmit data register 3 */
-#define LPC313X_PCM_HPOUT4_OFFSET 0x01c /* Transmit data register 4 */
-#define LPC313X_PCM_HPOUT5_OFFSET 0x020 /* Transmit data register 5 */
-#define LPC313X_PCM_HPIN_OFFSET(n) (0x024+((n)<<2)) /* Transmit data register n */
-#define LPC313X_PCM_HPIN0_OFFSET 0x024 /* Receive data register 0 */
-#define LPC313X_PCM_HPIN1_OFFSET 0x028 /* Receive data register 1 */
-#define LPC313X_PCM_HPIN2_OFFSET 0x02c /* Receive data register 2 */
-#define LPC313X_PCM_HPIN3_OFFSET 0x030 /* Receive data register 3 */
-#define LPC313X_PCM_HPIN4_OFFSET 0x034 /* Receive data register 4 */
-#define LPC313X_PCM_HPIN5_OFFSET 0x038 /* Receive data register 5 */
-#define LPC313X_PCM_CNTL2_OFFSET 0x03c /* Control register 2 */
-
-/* PCM register (virtual) addresses *************************************************************/
-
-#define LPC313X_PCM_GLOBAL (LPC313X_PCM_VBASE+LPC313X_PCM_GLOBAL_OFFSET)
-#define LPC313X_PCM_CNTL0 (LPC313X_PCM_VBASE+LPC313X_PCM_CNTL0_OFFSET)
-#define LPC313X_PCM_CNTL1 (LPC313X_PCM_VBASE+LPC313X_PCM_CNTL1_OFFSET)
-#define LPC313X_PCM_HPOUT(n) (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT_OFFSET(n))
-#define LPC313X_PCM_HPOUT0 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT0_OFFSET)
-#define LPC313X_PCM_HPOUT1 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT1_OFFSET)
-#define LPC313X_PCM_HPOUT2 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT2_OFFSET)
-#define LPC313X_PCM_HPOUT3 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT3_OFFSET)
-#define LPC313X_PCM_HPOUT4 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT4_OFFSET)
-#define LPC313X_PCM_HPOUT5 (LPC313X_PCM_VBASE+LPC313X_PCM_HPOUT5_OFFSET)
-#define LPC313X_PCM_HPIN(n) (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN_OFFSET(n))
-#define LPC313X_PCM_HPIN0 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN0_OFFSET)
-#define LPC313X_PCM_HPIN1 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN1_OFFSET)
-#define LPC313X_PCM_HPIN2 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN2_OFFSET)
-#define LPC313X_PCM_HPIN3 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN3_OFFSET)
-#define LPC313X_PCM_HPIN4 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN4_OFFSET)
-#define LPC313X_PCM_HPIN5 (LPC313X_PCM_VBASE+LPC313X_PCM_HPIN5_OFFSET)
-#define LPC313X_PCM_CNTL2 (LPC313X_PCM_VBASE+LPC313X_PCM_CNTL2_OFFSET)
-
-/* PCM register bit definitions *****************************************************************/
-
-/* GLOBAL register, address 0x15000000 */
-
-#define PCM_GLOBAL_DMARXENABLE (1 << 4) /* Bit 4: Enable DMA RX */
-#define PCM_GLOBAL_DMATXENABLE (1 << 3) /* Bit 3: Enable DMA TX */
-#define PCM_GLOBAL_NORMAL (1 << 2) /* Bit 2: Slave/Normal mode */
-#define PCM_GLOBAL_ONOFF (1 << 0) /* Bit 0: IPINT active */
-
-/* CNTL0 register, address 0x15000004 */
-
-#define PCM_CNTL0_MASTER (1 << 14) /* Bit 14: PCM/IOM master mode */
-#define PCM_CNTL0_LOOPBACK (1 << 11) /* Bit 11: Internal loop-back mode */
-#define PCM_CNTL0_TYPOD (1 << 10) /* Bit 10: Type of PCM_FCS and PCM_DCLK output port */
-#define PCM_CNTL0_TYPDOIP_SHIFT (8) /* Bits 8-9: Type of PCM/IOM data output ports */
-#define PCM_CNTL0_TYPDOIP_MASK (3 << PCM_CNTL0_TYPDOIP_SHIFT)
-#define PCM_CNTL0_TYPFRMSYNC_SHIFT (6) /* Bits 6-7: Shape of frame synchronization signal */
-#define PCM_CNTL0_TYPFRMSYNC_MASK (3 << PCM_CNTL0_TYPFRMSYNC_SHIFT)
-#define PCM_CNTL0_CLKSPD_SHIFT (3) /* Bits 3-5: Port frequency selection */
-#define PCM_CNTL0_CLKSPD_MASK (7 << PCM_CNTL0_CLKSPD_SHIFT)
-
-/* CNTL1 register, address 0x15000008 */
-
-#define PCM_CNTL1_ENSLT_SHIFT (0) /* Bits 0-11: Enable PCM/IOM Slots, one per slot */
-#define PCM_CNTL1_ENSLT_MASK (0xfff << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT0 (0x001 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT1 (0x002 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT2 (0x004 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT3 (0x008 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT4 (0x010 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT5 (0x020 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT6 (0x040 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT7 (0x080 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT8 (0x100 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT9 (0x200 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT10 (0x400 << PCM_CNTL1_ENSLT_SHIFT)
-# define PCM_CNTL1_ENSLT11 (0x800 << PCM_CNTL1_ENSLT_SHIFT)
-
-/* HPOUTn registers, addresses 0x1500000c to 0x15000020 (two per slot) */
-
-#define PCM_HPOUT_SHIFT (0) /* Bits 0-15: Transmit data register */
-#define PCM_HPOUT_MASK (0xffff << PCM_HPOUT_SHIFT)
-
-/* HPINn registers, addresses 0x15000024 to 0x15000038 (two per slot) */
-
-#define PCM_HPIN_SHIFT (0) /* Bits 0-15: Receive data register */
-#define PCM_HPIN_MASK (0xffff << PCM_HPIN_SHIFT)
-
-/* CNTL2 register, address 0x1500003c */
-
-#define PCM_CNTL2_SLOTDIRINV_SHIFT (0) /* Bits 0-11: PCM A/B port configuration, one per slot */
-#define PCM_CNTL2_SLOTDIRINV_MASK (0xfff << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV0 (0x001 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV1 (0x002 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV2 (0x004 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV3 (0x008 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV4 (0x010 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV5 (0x020 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV6 (0x040 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV7 (0x080 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV8 (0x100 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV9 (0x200 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV10 (0x400 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-# define PCM_CNTL2_SLOTDIRINV11 (0x800 << PCM_CNTL2_SLOTDIRINV_SHIFT)
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_PCM_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_pllconfig.c b/nuttx/arch/arm/src/lpc313x/lpc313x_pllconfig.c
deleted file mode 100755
index 8ecbc4a5c..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_pllconfig.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_pllconfig.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - NXP UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - NXP lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_switchdomains
- *
- * Description:
- * Temporarily switch the referemce clock of all domains whose selected
- * input is the PLL-to-be configured .
- *
- ****************************************************************************/
-
-static inline uint16_t
-lpc313x_switchdomains(const struct lpc313x_pllconfig_s * const cfg)
-{
- uint32_t hppll = (cfg->hppll ? CGU_SSR_HPPLL1 : CGU_SSR_HPPLL0);
- uint32_t address;
- uint32_t regval;
- uint16_t dmnset = 0;
- int i;
-
- /* Check each domain */
-
- for (i = 0; i < CGU_NDOMAINS; i++)
- {
- /* Get the switch status registers (SSR) for this frequency input domain */
-
- address = LPC313X_CGU_SSR(i);
- regval = getreg32(address);
-
- /* Check if the current frequency selection is the PLL-to-be-configured */
-
- if ((regval & CGU_SSR_FS_MASK) == hppll)
- {
- /* Yes.. switch reference clock in to FFAST */
-
- lpc313x_selectfreqin((enum lpc313x_domainid_e)i, CGU_FS_FFAST);
-
- /* Add the domain to the set to be restored after the PLL is configured */
-
- dmnset |= (1 << i);
- }
- }
-
- return dmnset;
-}
-
-/****************************************************************************
- * Name: lpc313x_restoredomains
- *
- * Description:
- * Restore the PLL reference clock to the domains that were temporarily
- switched to FFAST by lpc313x_switchdomains.
- *
- ****************************************************************************/
-
-static inline void
-lpc313x_restoredomains(const struct lpc313x_pllconfig_s * const cfg,
- uint16_t dmnset)
-{
- uint32_t finsel = (cfg->hppll ? CGU_FS_HPPLL1 : CGU_FS_HPPLL0);
- int i;
-
- /* Check each domain */
-
- for (i = 0; i < CGU_NDOMAINS; i++)
- {
- /* Was this one switched? */
-
- if ((dmnset & (1 << i)) != 0)
- {
- /* Switch input reference clock to newly configured HPLL */
-
- lpc313x_selectfreqin((enum lpc313x_domainid_e)i, finsel);
- }
- }
-}
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_pllconfig
- *
- * Description:
- * Configure the PLL according to the provided selections.
- *
- ****************************************************************************/
-
-void lpc313x_pllconfig(const struct lpc313x_pllconfig_s * const cfg)
-{
- uint32_t pllbase;
- uint16_t dmnset = 0;
-
- /* Switch domains connected to HPLL to FFAST */
-
- dmnset = lpc313x_switchdomains(cfg);
-
- /* Get the PLL register base address */
-
- pllbase = LPC313x_CGU_HPPLL(cfg->hppll);
-
- /* Disable clock, disable skew enable, power down pll, (dis/en)able post
- * divider, (dis/en)able pre-divider, disable free running mode, disable bandsel,
- * enable up limmiter, disable bypass
- */
-
- putreg32(CGU_HPMODE_PD, pllbase + LPC313X_CGU_HPMODE_OFFSET);
-
- /* Select PLL input frequency source */
-
- putreg32(cfg->finsel, pllbase + LPC313X_CGU_HPFINSEL_OFFSET);
-
- /* Set M divider */
-
- putreg32(cfg->mdec & CGU_HPMDEC_MASK, pllbase + LPC313X_CGU_HPMDEC_OFFSET);
-
- /* Set N divider */
-
- putreg32(cfg->ndec & CGU_HPNDEC_MASK, pllbase + LPC313X_CGU_HPNDEC_OFFSET);
-
- /* Set P divider */
-
- putreg32(cfg->pdec & CGU_HPPDEC_MASK, pllbase + LPC313X_CGU_HPPDEC_OFFSET);
-
- /* Set bandwidth */
-
- putreg32(cfg->selr, pllbase + LPC313X_CGU_HPSELR_OFFSET);
- putreg32(cfg->seli, pllbase + LPC313X_CGU_HPSELI_OFFSET);
- putreg32(cfg->selp, pllbase + LPC313X_CGU_HPSELP_OFFSET);
-
- /* Power up pll */
-
- putreg32((cfg->mode & ~CGU_HPMODE_PD) | CGU_HPMODE_CLKEN, pllbase + LPC313X_CGU_HPMODE_OFFSET);
-
- /* Save the estimated freq in driver data for future clk calcs */
-
- g_boardfreqin[CGU_FREQIN_HPPLL0 + cfg->hppll] = cfg->freq;
-
- /* Wait for PLL to lock */
-
- while ((getreg32(pllbase + LPC313X_CGU_HPSTATUS_OFFSET) & CGU_HPSTATUS_LOCK) == 0);
-
- /* Switch the domains that were temporarily switched to FFAST back to the HPPLL */
-
- lpc313x_restoredomains(cfg, dmnset);
-}
-
-/************************************************************************
- * Name: lpc313x_hp0pllconfig
- *
- * Description:
- * Configure the HP0 PLL according to the board.h selections.
- *
- ************************************************************************/
-
-void lpc313x_hp0pllconfig(void)
-{
- struct lpc313x_pllconfig_s cfg =
- {
- .hppll = CGU_HP0PLL,
- .finsel = BOARD_HPLL0_FINSEL,
- .ndec = BOARD_HPLL0_NDEC,
- .mdec = BOARD_HPLL0_MDEC,
- .pdec = BOARD_HPLL0_PDEC,
- .selr = BOARD_HPLL0_SELR,
- .seli = BOARD_HPLL0_SELI,
- .selp = BOARD_HPLL0_SELP,
- .mode = BOARD_HPLL0_MODE,
- .freq = BOARD_HPLL0_FREQ
- };
-
- lpc313x_pllconfig(&cfg);
-}
-
-/************************************************************************
- * Name: lpc313x_hp1pllconfig
- *
- * Description:
- * Configure the HP1 PLL according to the board.h selections.
- *
- ************************************************************************/
-
-void lpc313x_hp1pllconfig(void)
-{
- struct lpc313x_pllconfig_s cfg =
- {
- .hppll = CGU_HP1PLL,
- .finsel = BOARD_HPLL1_FINSEL,
- .ndec = BOARD_HPLL1_NDEC,
- .mdec = BOARD_HPLL1_MDEC,
- .pdec = BOARD_HPLL1_PDEC,
- .selr = BOARD_HPLL1_SELR,
- .seli = BOARD_HPLL1_SELI,
- .selp = BOARD_HPLL1_SELP,
- .mode = BOARD_HPLL1_MODE,
- .freq = BOARD_HPLL1_FREQ
- };
-
- lpc313x_pllconfig(&cfg);
-}
-
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_pwm.h b/nuttx/arch/arm/src/lpc313x/lpc313x_pwm.h
deleted file mode 100755
index 45065546c..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_pwm.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_pwm.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_PWM_H
-#define __ARCH_ARM_SRC_LPC313X_PWM_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* PWM register base address offset into the APB1 domain ****************************************/
-
-#define LPC313X_PWM_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_PWM_OFFSET)
-#define LPC313X_PWM_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_PWM_OFFSET)
-
-/* PWM register offsets (with respect to the PWM base) ******************************************/
-
-#define LPC313X_PWM_TMR_OFFSET 0x000 /* Timer Register */
-#define LPC313X_PWM_CNTL_OFFSET 0x004 /* Control Register */
-
-/* PWM register (virtual) addresses *************************************************************/
-
-#define LPC313X_PWM_TMR (LPC313X_PWM_VBASE+LPC313X_PWM_TMR_OFFSET)
-#define LPC313X_PWM_CNTL (LPC313X_PWM_VBASE+LPC313X_PWM_CNTL_OFFSET)
-
-/* PWM register bit definitions *****************************************************************/
-
-/* Timer register TMR, address 0x13009000 */
-
-#define PWM_TMR_SHIFT (0) /* Bits 0-11: Timer used for PWM and PDM */
-#define PWM_TMR_MASK (0xfff << PWM_TMR_SHIFT)
-
-/* Control register CNTL, address 0x13009004 */
-
-#define PWM_CNTL_PDM (1 << 7) /* Bit 7: PDM Select PDM mode */
-#define PWM_CNTL_LOOP (1 << 6) /* Bit 6: Output inverted with top 4 TMR bits */
-#define PWM_CNTL_HI (1 << 4) /* Bit 4: PWM output forced high */
- /* Bits 2-3: Reserved */
-#define PWM_CNTL_CLK_SHIFT (0) /* Bits 0-1: Configure PWM_CLK for output pulses */
-#define PWM_CNTL_CLK_MASK (3 << PWM_CNTL_CLK_SHIFT)
-# define PWM_CNTL_CLKDIV1 (0 << PWM_CNTL_CLK_SHIFT) /* PWM_CLK */
-# define PWM_CNTL_CLKDIV2 (1 << PWM_CNTL_CLK_SHIFT) /* PWM_CLK/2 */
-# define PWM_CNTL_CLKDIV4 (2 << PWM_CNTL_CLK_SHIFT) /* PWM_CLK/4 */
-# define PWM_CNTL_CLKDIV8 (3 << PWM_CNTL_CLK_SHIFT) /* PWM_CLK/8 */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_PWM_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_resetclks.c b/nuttx/arch/arm/src/lpc313x/lpc313x_resetclks.c
deleted file mode 100755
index 257430f8e..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_resetclks.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_resetclks.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_resetclks
- *
- * Description:
- * Put all clocks into a known, initial state
- *
- ****************************************************************************/
-
-void lpc313x_resetclks(void)
-{
- uint32_t regaddr;
- uint32_t regval;
- int bcrndx;
- int esrndx;
- int i;
-
- /* Switch all domain reference clocks to FFAST */
-
- for (i = 0; i < CGU_NDOMAINS; i++)
- {
- /* Switch reference clock in to FFAST */
-
- lpc313x_selectfreqin((enum lpc313x_domainid_e)i, CGU_FS_FFAST);
-
- /* Check if the domain has a BCR */
-
- bcrndx = lpc313x_bcrndx((enum lpc313x_domainid_e)i);
- if (bcrndx != BCRNDX_INVALID)
- {
- /* Yes.. disable all BCRs */
-
- putreg32(0, LPC313X_CGU_BCR(bcrndx));
- }
- }
-
- /* Disable all clocks except those that are necessary */
-
- for (i = CLKID_FIRST; i <= CLKID_LAST; i++)
- {
- /* Check if this clock has an ESR register */
-
- esrndx = lpc313x_esrndx((enum lpc313x_clockid_e)i);
- if (esrndx != ESRNDX_INVALID)
- {
- /* Yes.. Clear the clocks ESR to deselect fractional divider */
-
- putreg32(0, LPC313X_CGU_ESR(esrndx));
- }
-
- /* Enable external enabling for all possible clocks to conserve power */
-
- lpc313x_enableexten((enum lpc313x_clockid_e)i);
-
- /* Set enable-out's for only the following clocks */
-
- regaddr = LPC313X_CGU_PCR(i);
- regval = getreg32(regaddr);
- if (i == (int)CLKID_ARM926BUSIFCLK || i == (int)CLKID_MPMCCFGCLK)
- {
- regval |= CGU_PCR_ENOUTEN;
- }
- else
- {
- regval &= ~CGU_PCR_ENOUTEN;
- }
- putreg32(regval, regaddr);
-
- /* Set/clear the RUN bit in the PCR regiser of all clocks, depending
- * upon if the clock is needed by the board logic or not
- */
-
- (void)lpc313x_defclk((enum lpc313x_clockid_e)i);
- }
-
- /* Disable all fractional dividers */
-
- for (i = 0; i < CGU_NFRACDIV; i++)
- {
- regaddr = LPC313X_CGU_FDC(i);
- regval = getreg32(regaddr);
- regval &= ~CGU_FDC_RUN;
- putreg32(regval, regaddr);
- }
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_rng.h b/nuttx/arch/arm/src/lpc313x/lpc313x_rng.h
deleted file mode 100755
index dc65d71c2..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_rng.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_rng.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_RNG_H
-#define __ARCH_ARM_SRC_LPC313X_RNG_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* RNG register base address offset into the APB0 domain ****************************************/
-
-#define LPC313X_RNG_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_RNG_OFFSET)
-#define LPC313X_RNG_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_RNG_OFFSET)
-
-/* RNG register offsets (with respect to the RNG base) ******************************************/
-
-#define LPC313X_RNG_RAND_OFFSET 0x0000 /* Random number */
-#define LPC313X_RNG_PWRDWN_OFFSET 0x0ff4 /* Power-down mode */
-
-/* RNG register (virtual) addresses *************************************************************/
-
-#define LPC313X_RNG_RAND (LPC313X_RNG_VBASE+LPC313X_RNG_RAND_OFFSET)
-#define LPC313X_RNG_PWRDWN (LPC313X_RNG_VBASE+LPC313X_RNG_PWRDWN_OFFSET)
-
-/* RNG register bit definitions *****************************************************************/
-
-/* POWERDOWN, address 0x13006ff4 */
-
-#define RNG_PWRDWN_PWRDWN (1 << 2) /* Block all accesses to standard registers */
-#define RNG_PWRDWN_FORCERST (1 << 1) /* With SOFTRST forces immediate RNG reset */
-#define RNG_PWRDWN_SOFTRST (1 << 0) /* Software RNG reset (delayed) */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_RNG_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_serial.c b/nuttx/arch/arm/src/lpc313x/lpc313x_serial.c
deleted file mode 100755
index 51dcb8e9a..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_serial.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_serial.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <semaphore.h>
-#include <string.h>
-#include <errno.h>
-#include <debug.h>
-
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <nuttx/serial.h>
-#include <arch/serial.h>
-
-#include "up_arch.h"
-#include "os_internal.h"
-#include "up_internal.h"
-
-#include "lpc313x_cgudrvr.h"
-#include "lpc313x_uart.h"
-
-#ifdef CONFIG_USE_SERIALDRIVER
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-struct up_dev_s
-{
- uint8_t ier; /* Saved IER value */
-};
-
-/****************************************************************************
- * Private Function Prototypes
- ****************************************************************************/
-
-static inline void up_disableuartint(struct up_dev_s *priv, uint8_t *ier);
-static inline void up_restoreuartint(struct up_dev_s *priv, uint8_t ier);
-static inline void up_enablebreaks(void);
-static inline void up_disablebreaks(void);
-static inline void up_configbaud(void);
-
-static int up_setup(struct uart_dev_s *dev);
-static void up_shutdown(struct uart_dev_s *dev);
-static int up_attach(struct uart_dev_s *dev);
-static void up_detach(struct uart_dev_s *dev);
-static int up_interrupt(int irq, void *context);
-static int up_ioctl(struct file *filep, int cmd, unsigned long arg);
-static int up_receive(struct uart_dev_s *dev, uint32_t *status);
-static void up_rxint(struct uart_dev_s *dev, bool enable);
-static bool up_rxavailable(struct uart_dev_s *dev);
-static void up_send(struct uart_dev_s *dev, int ch);
-static void up_txint(struct uart_dev_s *dev, bool enable);
-static bool up_txready(struct uart_dev_s *dev);
-static bool up_txempty(struct uart_dev_s *dev);
-
-/****************************************************************************
- * Private Variables
- ****************************************************************************/
-
-struct uart_ops_s g_uart_ops =
-{
- .setup = up_setup,
- .shutdown = up_shutdown,
- .attach = up_attach,
- .detach = up_detach,
- .ioctl = up_ioctl,
- .receive = up_receive,
- .rxint = up_rxint,
- .rxavailable = up_rxavailable,
- .send = up_send,
- .txint = up_txint,
- .txready = up_txready,
- .txempty = up_txempty,
-};
-
-/* I/O buffers */
-
-static char g_rxbuffer[CONFIG_UART_RXBUFSIZE];
-static char g_txbuffer[CONFIG_UART_TXBUFSIZE];
-
-/* This describes the state of the single LPC313X uart port. */
-
-static struct up_dev_s g_uartpriv;
-static uart_dev_t g_uartport =
-{
- .recv =
- {
- .size = CONFIG_UART_RXBUFSIZE,
- .buffer = g_rxbuffer,
- },
- .xmit =
- {
- .size = CONFIG_UART_TXBUFSIZE,
- .buffer = g_txbuffer,
- },
- .ops = &g_uart_ops,
- .priv = &g_uartpriv,
-};
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_disableuartint
- ****************************************************************************/
-
-static inline void up_disableuartint(struct up_dev_s *priv, uint8_t *ier)
-{
- if (ier)
- {
- *ier = priv->ier & UART_IER_ALLINTS;
- }
-
- priv->ier &= ~UART_IER_ALLINTS;
- putreg32((uint32_t)priv->ier, LPC313X_UART_IER);
-}
-
-/****************************************************************************
- * Name: up_restoreuartint
- ****************************************************************************/
-
-static inline void up_restoreuartint(struct up_dev_s *priv, uint8_t ier)
-{
- priv->ier |= ier & UART_IER_ALLINTS;
- putreg32((uint32_t)priv->ier, LPC313X_UART_IER);
-}
-
-/****************************************************************************
- * Name: up_enablebreaks
- ****************************************************************************/
-
-static inline void up_enablebreaks(void)
-{
- uint32_t lcr = getreg32(LPC313X_UART_LCR);
- lcr |= UART_LCR_BRKCTRL;
- putreg32(lcr, LPC313X_UART_LCR);
-}
-
-/****************************************************************************
- * Name: up_disablebreaks
- ****************************************************************************/
-
-static inline void up_disablebreaks(void)
-{
- uint32_t lcr = getreg32(LPC313X_UART_LCR);
- lcr &= ~UART_LCR_BRKCTRL;
- putreg32(lcr, LPC313X_UART_LCR);
-}
-
-/****************************************************************************
- * Name: up_configbaud
- ****************************************************************************/
-
-static inline void up_configbaud(void)
-{
- /* In a buckled-up, embedded system, there is no reason to constantly
- * calculate the following. The calculation can be skipped if the
- * MULVAL, DIVADDVAL, and DIVISOR values are provided in the configuration
- * file.
- */
-
-#ifndef CONFIG_LPC313X_UART_MULVAL
- uint32_t qtrclk;
- uint32_t regval;
-
- /* Test values calculated for every multiplier/divisor combination */
-
- uint32_t tdiv;
- uint32_t terr;
- int tmulval;
- int tdivaddval;
-
- /* Optimal multiplier/divider values */
-
- uint32_t div = 0;
- uint32_t err = 100000;
- int mulval = 1;
- int divaddval = 0;
-
- /* Baud is generated using FDR and DLL-DLM registers
- *
- * baud = clock * (mulval/(mulval+divaddval) / (16 * div)
- *
- * Or
- *
- * div = (clock/16) * (mulval/(mulval+divaddval) / baud
- *
- * Where mulval = Fractional divider multiplier
- * divaddval = Fractional divider pre-scale div
- * div = DLL-DLM divisor
- */
-
- /* Get UART block clock divided by 16 */
-
- qtrclk = lpc313x_clkfreq(CLKID_UARTUCLK, DOMAINID_UART) >> 4;
-
- /* Try every valid multiplier, tmulval (or until a perfect
- * match is found).
- */
-
- for (tmulval = 1 ; tmulval <= 15 && err > 0; tmulval++)
- {
- /* Try every valid pre-scale div, tdivaddval (or until a perfect
- * match is found).
- */
-
- for (tdivaddval = 0 ; tdivaddval <= 15 && err > 0; tdivaddval++)
- {
- /* Calculate the divisor with these fractional divider settings */
-
- uint32_t tmp = (tmulval * qtrclk) / ((tmulval + tdivaddval));
- tdiv = (tmp + (CONFIG_UART_BAUD>>1)) / CONFIG_UART_BAUD;
-
- /* Check if this candidate divisor is within a valid range */
-
- if (tdiv > 2 && tdiv < 0x10000)
- {
- /* Calculate the actual baud and the error */
-
- uint32_t actualbaud = tmp / tdiv;
-
- if (actualbaud <= CONFIG_UART_BAUD)
- {
- terr = CONFIG_UART_BAUD - actualbaud;
- }
- else
- {
- terr = actualbaud - CONFIG_UART_BAUD;
- }
-
- /* Is this the smallest error we have encountered? */
-
- if (terr < err)
- {
- /* Yes, save these settings as the new, candidate optimal settings */
-
- mulval = tmulval ;
- divaddval = tdivaddval;
- div = tdiv;
- err = terr;
- }
- }
- }
- }
-
- /* Set the Divisor Latch Access Bit (DLAB) to enable DLL/DLM access */
-
- regval = getreg32(LPC313X_UART_LCR);
- regval |= UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the MS and LS DLAB registers */
-
- putreg32(div & UART_DLL_MASK, LPC313X_UART_DLL);
- putreg32((div >> 8) & UART_DLL_MASK, LPC313X_UART_DLM);
-
- regval &= ~UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the Fractional Divider Register (FDR) */
-
- putreg32((mulval << UART_FDR_MULVAL_SHIFT) |
- (divaddval << UART_FDR_DIVADDVAL_SHIFT),
- LPC313X_UART_FDR);
-#else
- /* Set the Divisor Latch Access Bit (DLAB) to enable DLL/DLM access */
-
- regval = getreg32(LPC313X_UART_LCR);
- regval |= UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the MS and LS DLAB registers */
-
- putreg32(CONFIG_LPC313X_UART_DIVISOR & UART_DLL_MASK, LPC313X_UART_DLL);
- putreg32((CONFIG_LPC313X_UART_DIVISOR >> 8) & UART_DLL_MASK, LPC313X_UART_DLM);
-
- regval &= ~UART_LCR_DLAB;
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Configure the Fractional Divider Register (FDR) */
-
- putreg32((CONFIG_LPC313X_UART_MULVAL << UART_FDR_MULVAL_SHIFT) |
- (CONFIG_LPC313X_UART_DIVADDVAL << UART_FDR_DIVADDVAL_SHIFT),
- LPC313X_UART_FDR);
-#endif
-}
-
-/****************************************************************************
- * Name: up_setup
- *
- * Description:
- * Configure the UART baud, bits, parity, fifos, etc. This method is called
- * the first time that the serial port is opened.
- *
- ****************************************************************************/
-
-static int up_setup(struct uart_dev_s *dev)
-{
-#ifndef CONFIG_SUPPRESS_LPC313X_UART_CONFIG
- struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
- uint32_t regval;
-
- /* Clear fifos */
-
- putreg32((UART_FCR_RXFIFORST|UART_FCR_TXFIFORST), LPC313X_UART_FCR);
-
- /* Set trigger */
-
- putreg32((UART_FCR_FIFOENABLE|UART_FCR_RXTRIGLEVEL_16), LPC313X_UART_FCR);
-
- /* Set up the IER */
-
- priv->ier = getreg32(LPC313X_UART_IER);
-
- /* Set up the LCR */
-
- regval = 0;
-
-#if CONFIG_UART_BITS == 5
- regval |= UART_LCR_WDLENSEL_5BITS;
-#elif CONFIG_UART_BITS == 6
- regval |= UART_LCR_WDLENSEL_6BITS;
-#elif CONFIG_UART_BITS == 7
- regval |= UART_LCR_WDLENSEL_7BITS;
-#else
- regval |= UART_LCR_WDLENSEL_8BITS;
-#endif
-
-#if CONFIG_UART_2STOP > 0
- regval |= UART_LCR_NSTOPBITS;
-#endif
-
-#if CONFIG_UART_PARITY == 1
- regval |= UART_LCR_PAREN;
-#elif CONFIG_UART_PARITY == 2
- regval |= (UART_LCR_PAREVEN|UART_LCR_PAREN);
-#endif
- putreg32(regval, LPC313X_UART_LCR);
-
- /* Set the BAUD divisor */
-
- up_configbaud();
-
- /* Configure the FIFOs */
-
- putreg32((UART_FCR_RXTRIGLEVEL_16|UART_FCR_TXFIFORST|
- UART_FCR_RXFIFORST|UART_FCR_FIFOENABLE),
- LPC313X_UART_FCR);
-
- /* The NuttX serial driver waits for the first THRE interrrupt before
- * sending serial data... However, it appears that the lpc313x hardware
- * does not generate that interrupt until a transition from not-empty
- * to empty. So, the current kludge here is to send one NULL at
- * startup to kick things off.
- */
-
- putreg32('\0', LPC313X_UART_THR);
-#endif
- return OK;
-}
-
-/****************************************************************************
- * Name: up_shutdown
- *
- * Description:
- * Disable the UART. This method is called when the serial port is closed
- *
- ****************************************************************************/
-
-static void up_shutdown(struct uart_dev_s *dev)
-{
- struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
- up_disableuartint(priv, NULL);
-}
-
-/****************************************************************************
- * Name: up_attach
- *
- * Description:
- * Configure the UART to operation in interrupt driven mode. This method
- * is called when the serial port is opened. Normally, this is just after
- * he the setup() method is called, however, the serial console may operate in
- * in a non-interrupt driven mode during the boot phase.
- *
- * RX and TX interrupts are not enabled when by the attach method (unless
- * the hardware supports multiple levels of interrupt enabling). The RX and TX
- * and TX interrupts are not enabled until the txint() and rxint() methods
- * are called.
- *
- ****************************************************************************/
-
-static int up_attach(struct uart_dev_s *dev)
-{
- int ret;
-
- /* Attach and enable the IRQ */
-
- ret = irq_attach(LPC313X_IRQ_UART, up_interrupt);
- if (ret == OK)
- {
- /* Enable the interrupt (RX and TX interrupts are still disabled
- * in the UART
- */
-
- up_enable_irq(LPC313X_IRQ_UART);
- }
- return ret;
-}
-
-/****************************************************************************
- * Name: up_detach
- *
- * Description:
- * Detach UART interrupts. This method is called when the serial port is
- * closed normally just before the shutdown method is called. The
- * exception is the serial console which is never shutdown.
- *
- ****************************************************************************/
-
-static void up_detach(struct uart_dev_s *dev)
-{
- up_disable_irq(LPC313X_IRQ_UART);
- irq_detach(LPC313X_IRQ_UART);
-}
-
-/****************************************************************************
- * Name: up_interrupt
- *
- * Description:
- * This is the UART interrupt handler. It will be invoked when an
- * interrupt received on the UART irq. It should call uart_transmitchars
- * or uart_receivechar to perform the appropriate data transfers.
- *
- ****************************************************************************/
-
-static int up_interrupt(int irq, void *context)
-{
- struct uart_dev_s *dev = &g_uartport;
- uint8_t status;
- int passes;
-
- /* Loop until there are no characters to be transferred or,
- * until we have been looping for a long time.
- */
-
- for (passes = 0; passes < 256; passes++)
- {
- /* Get the current UART status and check for loop
- * termination conditions
- */
-
- status = getreg32(LPC313X_UART_IIR);
-
- /* The NO INTERRUPT should be zero if there are pending
- * interrupts
- */
-
- if ((status & UART_IIR_NOINT) != 0)
- {
- /* Break out of the loop when there is no longer a pending
- * interrupt
- */
-
- break;
- }
-
- /* Handle the interrupt by its interrupt ID field */
-
- switch (status & UART_IIR_INTID_MASK)
- {
- /* Handle incoming, receive bytes (with or without timeout) */
-
- case UART_IIR_INTID_RDA: /* Received Data Available */
- case UART_IIR_INTID_TIMEOUT: /* Character time-out */
- {
- uart_recvchars(dev);
- break;
- }
-
- /* Handle outgoing, transmit bytes */
-
- case UART_IIR_INTID_THRE: /* Transmitter Holding Register empty */
- {
- uart_xmitchars(dev);
- break;
- }
-
- /* Just clear modem status interrupts */
-
- case UART_IIR_INTID_MS: /* Modem status */
- {
- /* Read the modem status register (MSR) to clear */
-
- status = getreg32(LPC313X_UART_MSR);
- fvdbg("MSR: %02x\n", status);
- break;
- }
-
- /* Just clear any line status interrupts */
-
- case UART_IIR_INTID_RLS: /* Receiver Line Status */
- {
- /* Read the line status register (LSR) to clear */
-
- status = getreg32(LPC313X_UART_LSR);
- fvdbg("LSR: %02x\n", status);
- break;
- }
-
- /* There should be no other values */
-
- default:
- {
- dbg("Unexpected IIR: %02x\n", status);
- break;
- }
- }
- }
- return OK;
-}
-
-/****************************************************************************
- * Name: up_ioctl
- *
- * Description:
- * All ioctl calls will be routed through this method
- *
- ****************************************************************************/
-
-static int up_ioctl(struct file *filep, int cmd, unsigned long arg)
-{
- struct inode *inode = filep->f_inode;
- struct uart_dev_s *dev = inode->i_private;
- int ret = OK;
-
- switch (cmd)
- {
- case TIOCSERGSTRUCT:
- {
- struct up_dev_s *user = (struct up_dev_s*)arg;
- if (!user)
- {
- ret = -EINVAL;
- }
- else
- {
- memcpy(user, dev, sizeof(struct up_dev_s));
- }
- }
- break;
-
- case TIOCSBRK: /* BSD compatibility: Turn break on, unconditionally */
- {
- irqstate_t flags = irqsave();
- up_enablebreaks();
- irqrestore(flags);
- }
- break;
-
- case TIOCCBRK: /* BSD compatibility: Turn break off, unconditionally */
- {
- irqstate_t flags;
- flags = irqsave();
- up_disablebreaks();
- irqrestore(flags);
- }
- break;
-
- default:
- errno = ENOTTY;
- ret = ERROR;
- break;
- }
-
- return ret;
-}
-
-/****************************************************************************
- * Name: up_receive
- *
- * Description:
- * Called (usually) from the interrupt level to receive one character from
- * the UART. Error bits associated with the receipt are provided in the
- * return 'status'.
- *
- ****************************************************************************/
-
-static int up_receive(struct uart_dev_s *dev, uint32_t *status)
-{
- uint32_t rbr;
-
- *status = getreg32(LPC313X_UART_LSR);
- rbr = getreg32(LPC313X_UART_RBR);
- return rbr & 0xff;
-}
-
-/****************************************************************************
- * Name: up_rxint
- *
- * Description:
- * Call to enable or disable RX interrupts
- *
- ****************************************************************************/
-
-static void up_rxint(struct uart_dev_s *dev, bool enable)
-{
- struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
- if (enable)
- {
-#ifndef CONFIG_SUPPRESS_SERIAL_INTS
- priv->ier |= UART_IER_RDAINTEN;
-#endif
- }
- else
- {
- priv->ier &= ~UART_IER_RDAINTEN;
- }
- putreg32(priv->ier, LPC313X_UART_IER);
-}
-
-/****************************************************************************
- * Name: up_rxavailable
- *
- * Description:
- * Return true if the receive fifo is not empty
- *
- ****************************************************************************/
-
-static bool up_rxavailable(struct uart_dev_s *dev)
-{
- return ((getreg32(LPC313X_UART_LSR) & UART_LSR_RDR) != 0);
-}
-
-/****************************************************************************
- * Name: up_send
- *
- * Description:
- * This method will send one byte on the UART
- *
- ****************************************************************************/
-
-static void up_send(struct uart_dev_s *dev, int ch)
-{
- putreg32((uint32_t)ch, LPC313X_UART_THR);
-}
-
-/****************************************************************************
- * Name: up_txint
- *
- * Description:
- * Call to enable or disable TX interrupts
- *
- ****************************************************************************/
-
-static void up_txint(struct uart_dev_s *dev, bool enable)
-{
- struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
- if (enable)
- {
-#ifndef CONFIG_SUPPRESS_SERIAL_INTS
- priv->ier |= UART_IER_THREINTEN;
-#endif
- }
- else
- {
- priv->ier &= ~UART_IER_THREINTEN;
- }
- putreg32(priv->ier, LPC313X_UART_IER);
-}
-
-/****************************************************************************
- * Name: up_txready
- *
- * Description:
- * Return true if the tranmsit fifo is not full
- *
- ****************************************************************************/
-
-static bool up_txready(struct uart_dev_s *dev)
-{
- return ((getreg32(LPC313X_UART_LSR) & UART_LSR_THRE) != 0);
-}
-
-/****************************************************************************
- * Name: up_txempty
- *
- * Description:
- * Return true if the transmit fifo is empty
- *
- ****************************************************************************/
-
-static bool up_txempty(struct uart_dev_s *dev)
-{
- return ((getreg32(LPC313X_UART_LSR) & UART_LSR_TEMT) != 0);
-}
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_earlyserialinit
- *
- * Description:
- * Performs the low level UART initialization early in debug so that the
- * serial console will be available during bootup (via up_putc). This must
- * be called before up_serialinit.
- *
- ****************************************************************************/
-
-void up_earlyserialinit(void)
-{
- /* Enable UART system clock */
-
- lpc313x_enableclock(CLKID_UARTAPBCLK);
- lpc313x_enableclock(CLKID_UARTUCLK);
-
- /* Disable UART interrupts */
-
- up_disableuartint(g_uartport.priv, NULL);
-
- /* Configuration the serial console */
-
-#if defined(CONFIG_UART_SERIAL_CONSOLE)
- g_uartport.isconsole = true;
- up_setup(&g_uartport);
-#endif
-}
-
-/****************************************************************************
- * Name: up_serialinit
- *
- * Description:
- * Register serial console and serial ports. This assumes that
- * up_earlyserialinit was called previously.
- *
- ****************************************************************************/
-
-void up_serialinit(void)
-{
-#if defined(CONFIG_UART_SERIAL_CONSOLE)
- (void)uart_register("/dev/console", &g_uartport);
-#endif
- (void)uart_register("/dev/ttyS0", &g_uartport);
-}
-
-/****************************************************************************
- * Name: up_putc
- *
- * Description:
- * Provide priority, low-level access to support OS debug writes
- *
- ****************************************************************************/
-
-int up_putc(int ch)
-{
- struct up_dev_s *priv = &g_uartpriv;
- uint8_t ier;
-
- /* Keep UART interrupts disabled so that we do not interfere with the
- * serial driver.
- */
-
- up_disableuartint(priv, &ier);
-
- /* Check for LF */
-
- if (ch == '\n')
- {
- /* Add CR */
-
- up_lowputc('\r');
- }
-
- /* Output the character */
-
- up_lowputc(ch);
- up_restoreuartint(priv, ier);
- return ch;
-}
-
-#else /* CONFIG_USE_SERIALDRIVER */
-
-/****************************************************************************
- * Name: up_putc
- *
- * Description:
- * Provide priority, low-level access to support OS debug writes
- *
- ****************************************************************************/
-
-int up_putc(int ch)
-{
- /* Check for LF */
-
- if (ch == '\n')
- {
- /* Add CR */
-
- up_lowputc('\r');
- }
-
- /* Output the character */
-
- up_lowputc(ch);
- return ch;
-}
-
-#endif /* CONFIG_USE_SERIALDRIVER */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_setfdiv.c b/nuttx/arch/arm/src/lpc313x/lpc313x_setfdiv.c
deleted file mode 100755
index 5b0fdf904..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_setfdiv.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_setfdiv.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgu.h"
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_setfdiv
- *
- * Description:
- * Set/reset subdomain frequency containing the specified clock using the
- * provided divider settings
- *
- ****************************************************************************/
-
-void lpc313x_setfdiv(enum lpc313x_domainid_e dmnid,
- enum lpc313x_clockid_e clkid,
- const struct lpc313x_fdivconfig_s *fdiv)
-{
- uint32_t regaddr;
- unsigned int basefreq;
- int fdcndx;
- int bcrndx;
-
- /* Get the frequency divider associated with this clock */
-
- fdcndx = lpc313x_fdcndx(clkid, dmnid);
-
- /* Does this clock have a frequency divicer? */
-
- if (fdcndx != FDCNDX_INVALID)
- {
- /* Yes.. Save the current reference frequency selection */
-
- regaddr = LPC313X_CGU_SSR((int)dmnid);
- basefreq = (getreg32(regaddr) & CGU_SSR_FS_MASK) >> CGU_SSR_FS_SHIFT;
-
- /* Switch domain to FFAST input */
-
- lpc313x_selectfreqin(dmnid, CGU_FS_FFAST);
-
- /* Get the index of the associated BCR register. Does this domain
- * have a BCR?
- */
-
- bcrndx = lpc313x_bcrndx(dmnid);
- if (bcrndx != BCRNDX_INVALID)
- {
-
- /* Yes... Disable the BCR */
-
- regaddr = LPC313X_CGU_BCR(bcrndx);
- putreg32(0, regaddr);
- }
-
- /* Change fractional divider to the provided settings */
-
- lpc313x_fdivinit(fdcndx, fdiv, true);
-
- /* Re-enable the BCR (if one is associated with this domain) */
-
- if (bcrndx != BCRNDX_INVALID)
- {
- regaddr = LPC313X_CGU_BCR(bcrndx);
- putreg32(CGU_BCR_FDRUN, regaddr);
- }
-
- /* Switch the domain back to its original base frequency */
-
- lpc313x_selectfreqin(dmnid, basefreq);
- }
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_setfreqin.c b/nuttx/arch/arm/src/lpc313x/lpc313x_setfreqin.c
deleted file mode 100755
index dc6ef2b3a..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_setfreqin.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_setfreqin.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - NXP UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - NXP lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_cgudrvr.h"
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: lpc313x_selectfreqin
- *
- * Description:
- * Set the base frequency source selection for with a clock domain
- *
- ****************************************************************************/
-
-void lpc313x_selectfreqin(enum lpc313x_domainid_e dmnid, uint32_t finsel)
-{
- uint32_t scraddr = LPC313X_CGU_SCR(dmnid);
- uint32_t fs1addr = LPC313X_CGU_FS1(dmnid);
- uint32_t fs2addr = LPC313X_CGU_FS2(dmnid);
- uint32_t scrbits;
-
- /* Get the frequency selection from the switch configuration register (SCR)
- * for this domain.
- */
-
- scrbits = getreg32(scraddr) & ~(CGU_SCR_ENF1|CGU_SCR_ENF2);
-
- /* If FS1 is currently enabled set the reference clock to FS2 and enable FS2 */
-
- if ((getreg32(LPC313X_CGU_SSR(dmnid)) & CGU_SSR_FS1STAT) != 0)
- {
- /* Check if the selected frequency, FS1, is same as requested */
-
- if ((getreg32(fs1addr) & CGU_FS_MASK) != finsel)
- {
- /* No.. Set up FS2 */
-
- putreg32(finsel, fs2addr);
- putreg32(scrbits | CGU_SCR_ENF2, scraddr);
- }
- }
-
- /* FS1 is not currently enabled, check if the selected frequency, FS2,
- * is same as requested
- */
-
- else if ((getreg32(fs2addr) & CGU_FS_MASK) != finsel)
- {
- /* No.. Set up FS1 */
-
- putreg32(finsel, fs1addr);
- putreg32(scrbits | CGU_SCR_ENF1, scraddr);
- }
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_softreset.c b/nuttx/arch/arm/src/lpc313x/lpc313x_softreset.c
deleted file mode 100755
index 9e8ecfab3..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_softreset.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/************************************************************************
- * arch/arm/src/lpc313x/lpc313x_softreset.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * References:
- * - UM10314 LPC3130/31 User manual Rev. 1.01 — 9 September 2009
- * - lpc313x.cdl.drivers.zip example driver code
- *
- * 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.
- *
- ************************************************************************/
-
-/************************************************************************
- * Included Files
- ************************************************************************/
-
-#include <nuttx/config.h>
-#include <stdint.h>
-
-#include "up_arch.h"
-#include "lpc313x_cgudrvr.h"
-
-/************************************************************************
- * Pre-processor Definitions
- ************************************************************************/
-
-/************************************************************************
- * Private Data
- ************************************************************************/
-
-/************************************************************************
- * Private Functions
- ************************************************************************/
-
-/************************************************************************
- * Public Functions
- ************************************************************************/
-
-/************************************************************************
- * Name: lpc313x_softreset
- *
- * Description:
- * Perform a soft reset on the specified module.
- *
- ************************************************************************/
-
-void lpc313x_softreset(enum lpc313x_resetid_e resetid)
-{
- uint32_t address = LPC313X_CGU_SOFTRST(resetid);
- volatile int i;
-
- /* Clear and set the register */
-
- putreg32(0, address);
-
- /* Delay a bit */
-
- for (i = 0;i < 1000; i++);
-
- /* Then set the the soft reset bit */
-
- putreg32(CGU_SOFTRESET, address);
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_spi.c b/nuttx/arch/arm/src/lpc313x/lpc313x_spi.c
deleted file mode 100644
index af4c9ce09..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_spi.c
+++ /dev/null
@@ -1,971 +0,0 @@
-/************************************************************************************
- * arm/arm/src/lpc313x/lpc313x_spi.c
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: David Hewson, deriving in part from other SPI drivers originally by
- * Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************/
-
-/************************************************************************************
- * Included Files
- ************************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <semaphore.h>
-#include <errno.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/spi.h>
-
-#include <arch/board/board.h>
-
-#include "lpc313x_spi.h"
-#include "lpc313x_ioconfig.h"
-
-/************************************************************************************
- * Definitions
- ************************************************************************************/
-
-/* Configuration ********************************************************************/
-
-/* Debug ****************************************************************************/
-/* Define the following to enable extremely detailed register debug */
-
-#undef CONFIG_DEBUG_SPIREGS
-
-/* CONFIG_DEBUG must also be defined */
-
-#ifndef CONFIG_DEBUG
-# undef CONFIG_DEBUG_SPIREGS
-#endif
-
-/* FIFOs ****************************************************************************/
-
-#define SPI_FIFO_DEPTH 64 /* 64 words deep (8- or 16-bit words) */
-
-/* Timing ***************************************************************************/
-
-#define SPI_MAX_DIVIDER 65024 /* = 254 * (255 + 1) */
-#define SPI_MIN_DIVIDER 2
-
-/************************************************************************************
- * Private Types
- ************************************************************************************/
-
-struct lpc313x_spidev_s
-{
- struct spi_dev_s spidev; /* Externally visible part of the SPI interface */
- sem_t exclsem; /* Held while chip is selected for mutual exclusion */
- uint32_t frequency; /* Requested clock frequency */
- uint32_t actual; /* Actual clock frequency */
- uint8_t nbits; /* Width of work in bits (8 or 16) */
- uint8_t mode; /* Mode 0,1,2,3 */
-
- uint32_t slv1;
- uint32_t slv2;
-};
-
-/************************************************************************************
- * Private Function Prototypes
- ************************************************************************************/
-
-#ifdef CONFIG_DEBUG_SPIREGS
-static bool spi_checkreg(bool wr, uint32_t value, uint32_t address);
-static void spi_putreg(uint32_t value, uint32_t address);
-static uint32_t spi_getreg(uint32_t address);
-#else
-# define spi_putreg(v,a) putreg32(v,a)
-# define spi_getreg(a) getreg32(a)
-#endif
-
-static inline void spi_drive_cs(FAR struct lpc313x_spidev_s *priv, uint8_t slave, uint8_t val);
-static inline void spi_select_slave(FAR struct lpc313x_spidev_s *priv, uint8_t slave);
-static inline uint16_t spi_readword(FAR struct lpc313x_spidev_s *priv);
-static inline void spi_writeword(FAR struct lpc313x_spidev_s *priv, uint16_t word);
-
-static int spi_lock(FAR struct spi_dev_s *dev, bool lock);
-static void spi_select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected);
-static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, uint32_t frequency);
-static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode);
-static void spi_setbits(FAR struct spi_dev_s *dev, int nbits);
-static uint8_t spi_status(FAR struct spi_dev_s *dev, enum spi_dev_e devid);
-static uint16_t spi_send(FAR struct spi_dev_s *dev, uint16_t word);
-static void spi_exchange(FAR struct spi_dev_s *dev, FAR const void *txbuffer,
- FAR void *rxbuffer, size_t nwords);
-#ifndef CONFIG_SPI_EXCHANGE
-static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const void *txbuffer,
- size_t nwords);
-static void spi_recvblock(FAR struct spi_dev_s *dev, FAR void *rxbuffer,
- size_t nwords);
-#endif
-
-
-/************************************************************************************
- * Private Data
- ************************************************************************************/
-
-static const struct spi_ops_s g_spiops =
-{
- .lock = spi_lock,
- .select = spi_select,
- .setfrequency = spi_setfrequency,
- .setmode = spi_setmode,
- .setbits = spi_setbits,
- .status = spi_status,
-#ifdef CONFIG_SPI_CMDDATA
- .cmddata = lpc313x_spicmddata,
-#endif
- .send = spi_send,
-#ifdef CONFIG_SPI_EXCHANGE
- .exchange = spi_exchange,
-#else
- .sndblock = spi_sndblock,
- .recvblock = spi_recvblock,
-#endif
- .registercallback = 0,
-};
-
-static struct lpc313x_spidev_s g_spidev =
-{
- .spidev = { &g_spiops },
-};
-
-#ifdef CONFIG_DEBUG_SPIREGS
-static bool g_wrlast;
-static uint32_t g_addresslast;
-static uint32_t g_valuelast;
-static int g_ntimes;
-#endif
-
-/************************************************************************************
- * Public Data
- ************************************************************************************/
-
-/************************************************************************************
- * Private Functions
- ************************************************************************************/
-
-/****************************************************************************
- * Name: spi_checkreg
- *
- * Description:
- * Check if the current register access is a duplicate of the preceding.
- *
- * Input Parameters:
- * value - The value to be written
- * address - The address of the register to write to
- *
- * Returned Value:
- * true: This is the first register access of this type.
- * flase: This is the same as the preceding register access.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_DEBUG_SPIREGS
-static bool spi_checkreg(bool wr, uint32_t value, uint32_t address)
-{
- if (wr == g_wrlast && value == g_valuelast && address == g_addresslast)
- {
- g_ntimes++;
- return false;
- }
- else
- {
- if (g_ntimes > 0)
- {
- lldbg("...[Repeats %d times]...\n", g_ntimes);
- }
-
- g_wrlast = wr;
- g_valuelast = value;
- g_addresslast = address;
- g_ntimes = 0;
- }
- return true;
-}
-#endif
-
-/****************************************************************************
- * Name: spi_putreg
- *
- * Description:
- * Write a 32-bit value to an SPI register
- *
- * Input Parameters:
- * value - The value to be written
- * address - The address of the register to write to
- *
- * Returned Value:
- * None
- *
- ****************************************************************************/
-
-#ifdef CONFIG_DEBUG_SPIREGS
-static void spi_putreg(uint32_t value, uint32_t address)
-{
- if (spi_checkreg(true, value, address))
- {
- lldbg("%08x<-%08x\n", address, value);
- }
- putreg32(value, address);
-}
-#endif
-
-/****************************************************************************
- * Name: spi_getreg
- *
- * Description:
- * Read a 32-bit value from an SPI register
- *
- * Input Parameters:
- * address - The address of the register to read from
- *
- * Returned Value:
- * The value read from the register
- *
- ****************************************************************************/
-
-#ifdef CONFIG_DEBUG_SPIREGS
-static uint32_t spi_getreg(uint32_t address)
-{
- uint32_t value = getreg32(address);
- if (spi_checkreg(false, value, address))
- {
- lldbg("%08x->%08x\n", address, value);
- }
- return value;
-}
-#endif
-
-/****************************************************************************
- * Name: spi_drive_cs
- *
- * Description:
- * Drive the chip select signal for this slave
- *
- * Input Parameters:
- * dev - Device-specific state data
- * slave - slave id
- * value - value (0 for assert)
- *
- * Returned Value:
- * None
- *
- ****************************************************************************/
-
-static inline void spi_drive_cs(FAR struct lpc313x_spidev_s *priv, uint8_t slave, uint8_t val)
-{
- switch (slave)
- {
- case 0:
- if (val == 0)
- {
- spi_putreg(IOCONFIG_SPI_CSOUT0, LPC313X_IOCONFIG_SPI_MODE0RESET);
- }
- else
- {
- spi_putreg(IOCONFIG_SPI_CSOUT0, LPC313X_IOCONFIG_SPI_MODE0SET);
- }
- spi_putreg(IOCONFIG_SPI_CSOUT0, LPC313X_IOCONFIG_SPI_MODE1SET);
- break;
-
- case 1:
- if (val == 0)
- {
- spi_putreg(IOCONFIG_EBII2STX0_MUARTCTSN, LPC313X_IOCONFIG_EBII2STX0_MODE0RESET);
- }
- else
- {
- spi_putreg(IOCONFIG_EBII2STX0_MUARTCTSN, LPC313X_IOCONFIG_EBII2STX0_MODE0SET);
- }
- spi_putreg(IOCONFIG_EBII2STX0_MUARTCTSN, LPC313X_IOCONFIG_EBII2STX0_MODE1SET);
- break;
-
- case 2:
- if (val == 0)
- {
- spi_putreg(IOCONFIG_EBII2STX0_MUARTRTSN, LPC313X_IOCONFIG_EBII2STX0_MODE0RESET);
- }
- else
- {
- spi_putreg(IOCONFIG_EBII2STX0_MUARTRTSN, LPC313X_IOCONFIG_EBII2STX0_MODE0SET);
- }
- spi_putreg(IOCONFIG_EBII2STX0_MUARTRTSN, LPC313X_IOCONFIG_EBII2STX0_MODE1SET);
- break;
- }
-}
-
-/****************************************************************************
- * Name: spi_select_slave
- *
- * Description:
- * Select the slave device for the next transfer
- *
- * Input Parameters:
- * dev - Device-specific state data
- * slave - slave id
- *
- * Returned Value:
- * None
- *
- ****************************************************************************/
-
-static inline void spi_select_slave(FAR struct lpc313x_spidev_s *priv, uint8_t slave)
-{
- switch (slave)
- {
- case 0:
- spi_putreg(priv->slv1, LPC313X_SPI_SLV0_1);
- spi_putreg(priv->slv2, LPC313X_SPI_SLV0_2);
- spi_putreg(SPI_SLVENABLE1_ENABLED, LPC313X_SPI_SLVENABLE);
- break;
-
- case 1:
- spi_putreg(priv->slv1, LPC313X_SPI_SLV1_1);
- spi_putreg(priv->slv2, LPC313X_SPI_SLV1_2);
- spi_putreg(SPI_SLVENABLE2_ENABLED, LPC313X_SPI_SLVENABLE);
- break;
-
- case 2:
- spi_putreg(priv->slv1, LPC313X_SPI_SLV2_1);
- spi_putreg(priv->slv2, LPC313X_SPI_SLV2_2);
- spi_putreg(SPI_SLVENABLE3_ENABLED, LPC313X_SPI_SLVENABLE);
- break;
- }
-}
-
-/************************************************************************************
- * Name: spi_readword
- *
- * Description:
- * Read one word from SPI
- *
- * Input Parameters:
- * priv - Device-specific state data
- *
- * Returned Value:
- * Byte as read
- *
- ************************************************************************************/
-
-static inline uint16_t spi_readword(FAR struct lpc313x_spidev_s *priv)
-{
- /* Wait until the RX FIFO is not empty */
-
- while ((spi_getreg(LPC313X_SPI_STATUS) & SPI_STATUS_RXFIFOEMPTY) != 0);
-
- /* Then return the received word */
-
- return (uint16_t)spi_getreg(LPC313X_SPI_FIFODATA);
-}
-
-/************************************************************************************
- * Name: spi_writeword
- *
- * Description:
- * Write one word to SPI
- *
- * Input Parameters:
- * priv - Device-specific state data
- * word - Word to send
- *
- * Returned Value:
- * None
- *
- ************************************************************************************/
-
-static inline void spi_writeword(FAR struct lpc313x_spidev_s *priv, uint16_t word)
-{
- /* Wait until the TX FIFO is not full */
-
- while ((spi_getreg(LPC313X_SPI_STATUS) & SPI_STATUS_TXFIFOFULL) != 0);
-
- /* Then send the word */
-
- spi_putreg(word, LPC313X_SPI_FIFODATA);
-}
-
-/****************************************************************************
- * Name: spi_lock
- *
- * Description:
- * On SPI busses where there are multiple devices, it will be necessary to
- * lock SPI to have exclusive access to the busses for a sequence of
- * transfers. The bus should be locked before the chip is selected. After
- * locking the SPI bus, the caller should then also call the setfrequency,
- * setbits, and setmode methods to make sure that the SPI is properly
- * configured for the device. If the SPI buss is being shared, then it
- * may have been left in an incompatible state.
- *
- * Input Parameters:
- * dev - Device-specific state data
- * lock - true: Lock spi bus, false: unlock SPI bus
- *
- * Returned Value:
- * None
- *
- ****************************************************************************/
-
-static int spi_lock(FAR struct spi_dev_s *dev, bool lock)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
-
- if (lock)
- {
- /* Take the semaphore (perhaps waiting) */
-
- while (sem_wait(&priv->exclsem) != 0)
- {
- /* The only case that an error should occur here is if the wait was awakened
- * by a signal.
- */
-
- ASSERT(errno == EINTR);
- }
- }
- else
- {
- (void)sem_post(&priv->exclsem);
- }
- return OK;
-}
-
-/****************************************************************************
- * Name: spi_select
- *
- * Description:
- * Enable/disable the SPI slave select. The implementation of this method
- * must include handshaking: If a device is selected, it must hold off
- * all other attempts to select the device until the device is deselecte.
- *
- * Input Parameters:
- * dev - Device-specific state data
- * devid - Identifies the device to select
- * selected - true: slave selected, false: slave de-selected
- *
- * Returned Value:
- * None
- *
- ****************************************************************************/
-
-static void spi_select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
-{
- struct lpc313x_spidev_s *priv = (struct lpc313x_spidev_s *) dev;
- uint8_t slave = 0;
-
- /* FIXME: map the devid to the SPI slave - this should really
- * be in board specific code..... */
- switch (devid)
- {
- case SPIDEV_FLASH:
- slave = 0;
- break;
-
- case SPIDEV_MMCSD:
- slave = 1;
- break;
-
- case SPIDEV_ETHERNET:
- slave = 2;
- break;
-
- default:
- return;
- }
-
- /*
- * Since we don't use sequential multi-slave mode, but rather
- * perform the transfer piecemeal by consecutive calls to
- * SPI_SEND, then we must manually assert the chip select
- * across the whole transfer
- */
-
- if (selected)
- {
- spi_drive_cs(priv, slave, 0);
- spi_select_slave(priv, slave);
-
- /* Enable SPI as master and notify of slave enables change */
-
- spi_putreg((1 << SPI_CONFIG_INTERSLVDELAY_SHIFT) | SPI_CONFIG_UPDENABLE | SPI_CONFIG_SPIENABLE, LPC313X_SPI_CONFIG);
- }
- else
- {
- spi_drive_cs(priv, slave, 1);
-
- /* Disable all slaves */
-
- spi_putreg(0, LPC313X_SPI_SLVENABLE);
-
- /* Disable SPI as master */
-
- spi_putreg(SPI_CONFIG_UPDENABLE, LPC313X_SPI_CONFIG);
- }
-}
-
-/************************************************************************************
- * Name: spi_setfrequency
- *
- * Description:
- * Set the SPI frequency.
- *
- * Input Parameters:
- * dev - Device-specific state data
- * frequency - The SPI frequency requested
- *
- * Returned Value:
- * Returns the actual frequency selected
- *
- ************************************************************************************/
-
-static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, uint32_t frequency)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
- uint32_t spi_clk, div, div1, div2;
-
- if (priv->frequency != frequency)
- {
- /* The SPI clock is derived from the (main system oscillator / 2),
- * so compute the best divider from that clock */
-
- spi_clk = lpc313x_clkfreq(CLKID_SPICLK, DOMAINID_SPI);
-
- /* Find closest divider to get at or under the target frequency */
-
- div = (spi_clk + frequency / 2) / frequency;
-
- if (div > SPI_MAX_DIVIDER)
- {
- div = SPI_MAX_DIVIDER;
- }
- else if (div < SPI_MIN_DIVIDER)
- {
- div = SPI_MIN_DIVIDER;
- }
-
- div2 = (((div-1) / 512) + 2) * 2;
- div1 = ((((div + div2 / 2) / div2) - 1));
-
- priv->slv1 = (priv->slv1 & ~(SPI_SLV_1_CLKDIV2_MASK | SPI_SLV_1_CLKDIV1_MASK)) | (div2 << SPI_SLV_1_CLKDIV2_SHIFT) | (div1 << SPI_SLV_1_CLKDIV1_SHIFT);
-
- priv->frequency = frequency;
- priv->actual = frequency; // FIXME
- }
-
- return priv->actual;
-}
-
-/************************************************************************************
- * Name: spi_setmode
- *
- * Description:
- * Set the SPI mode. see enum spi_mode_e for mode definitions
- *
- * Input Parameters:
- * dev - Device-specific state data
- * mode - The SPI mode requested
- *
- * Returned Value:
- * Returns the actual frequency selected
- *
- ************************************************************************************/
-
-static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
- uint16_t setbits;
- uint16_t clrbits;
-
-/* Has the mode changed? */
-
- if (mode != priv->mode)
- {
- /* Yes... Set CR1 appropriately */
-
- switch (mode)
- {
- case SPIDEV_MODE0: /* SPO=0; SPH=0 */
- setbits = 0;
- clrbits = SPI_SLV_2_SPO|SPI_SLV_2_SPH;
- break;
-
- case SPIDEV_MODE1: /* SPO=0; SPH=1 */
- setbits = SPI_SLV_2_SPH;
- clrbits = SPI_SLV_2_SPO;
- break;
-
- case SPIDEV_MODE2: /* SPO=1; SPH=0 */
- setbits = SPI_SLV_2_SPO;
- clrbits = SPI_SLV_2_SPH;
- break;
-
- case SPIDEV_MODE3: /* SPO=1; SPH=1 */
- setbits = SPI_SLV_2_SPO|SPI_SLV_2_SPH;
- clrbits = 0;
- break;
-
- default:
- return;
- }
-
- priv->slv2 = (priv->slv2 & ~clrbits) | setbits;
- priv->mode = mode;
- }
-}
-
-/************************************************************************************
- * Name: spi_setbits
- *
- * Description:
- * Set the number of bits per word.
- *
- * Input Parameters:
- * dev - Device-specific state data
- * nbits - The number of bits requested
- *
- * Returned Value:
- * None
- *
- ************************************************************************************/
-
-static void spi_setbits(FAR struct spi_dev_s *dev, int nbits)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
-
- /* Has the number of bits changed? */
-
- if (nbits != priv->nbits)
- {
- priv->slv2 = (priv->slv2 & ~SPI_SLV_2_WDSIZE_MASK) | ((nbits-1) << SPI_SLV_2_WDSIZE_SHIFT);
- priv->nbits = nbits;
- }
-}
-
-/****************************************************************************
- * Name: spi_status
- *
- * Description:
- * Get SPI/MMC status
- *
- * Input Parameters:
- * dev - Device-specific state data
- * devid - Identifies the device to report status on
- *
- * Returned Value:
- * Returns a bitset of status values (see SPI_STATUS_* defines
- *
- ****************************************************************************/
-
-static uint8_t spi_status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
-{
- /* FIXME: is there anyway to determine this
- * it should probably be board dependant anyway */
-
- return SPI_STATUS_PRESENT;
-}
-
-/************************************************************************************
- * Name: spi_send
- *
- * Description:
- * Exchange one word on SPI
- *
- * Input Parameters:
- * dev - Device-specific state data
- * word - The word to send. the size of the data is determined by the
- * number of bits selected for the SPI interface.
- *
- * Returned Value:
- * response
- *
- ************************************************************************************/
-
-static uint16_t spi_send(FAR struct spi_dev_s *dev, uint16_t word)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
- DEBUGASSERT(priv);
-
- spi_writeword(priv, word);
- return spi_readword(priv);
-}
-
-/*************************************************************************
- * Name: spi_exchange
- *
- * Description:
- * Exchange a block of data on SPI
- *
- * Input Parameters:
- * dev - Device-specific state data
- * txbuffer - A pointer to the buffer of data to be sent
- * rxbuffer - A pointer to a buffer in which to receive data
- * nwords - the length of data to be exchaned in units of words.
- * The wordsize is determined by the number of bits-per-word
- * selected for the SPI interface. If nbits <= 8, the data is
- * packed into uint8_t's; if nbits >8, the data is packed into uint16_t's
- *
- * Returned Value:
- * None
- *
- ************************************************************************************/
-
-static void spi_exchange(FAR struct spi_dev_s *dev, FAR const void *txbuffer,
- FAR void *rxbuffer, size_t nwords)
-{
- FAR struct lpc313x_spidev_s *priv = (FAR struct lpc313x_spidev_s *)dev;
- unsigned int maxtx;
- unsigned int ntx;
-
- DEBUGASSERT(priv);
-
- /* 8- or 16-bit mode? */
-
- if (priv->nbits == 16)
- {
- /* 16-bit mode */
-
- const uint16_t *src = (const uint16_t*)txbuffer;;
- uint16_t *dest = (uint16_t*)rxbuffer;
- uint16_t word;
-
- while (nwords > 0)
- {
- /* Fill up the TX FIFO */
-
- maxtx = nwords > SPI_FIFO_DEPTH ? SPI_FIFO_DEPTH : nwords;
- for (ntx = 0; ntx < maxtx; ntx++)
- {
- /* Get the next word to write. Is there a source buffer? */
-
- word = src ? *src++ : 0xffff;
-
- /* Then send the word */
-
- spi_writeword(priv, word);
- }
- nwords -= maxtx;
-
- /* Then empty the RX FIFO */
-
- while (ntx-- > 0)
- {
- word = spi_readword(priv);
-
- /* Is there a buffer to receive the return value? */
-
- if (dest)
- {
- *dest++ = word;
- }
- }
- }
- }
- else
- {
- /* 8-bit mode */
-
- const uint8_t *src = (const uint8_t*)txbuffer;;
- uint8_t *dest = (uint8_t*)rxbuffer;
- uint8_t word;
-
- while (nwords > 0)
- {
- /* Fill up the TX FIFO */
-
- maxtx = nwords > SPI_FIFO_DEPTH ? SPI_FIFO_DEPTH : nwords;
- for (ntx = 0; ntx < maxtx; ntx++)
- {
- /* Get the next word to write. Is there a source buffer? */
-
- word = src ? *src++ : 0xff;
-
- /* Then send the word */
-
- spi_writeword(priv, (uint16_t)word);
- }
- nwords -= maxtx;
-
- /* Then empty the RX FIFO */
-
- while (ntx-- > 0)
- {
- word = (uint8_t)spi_readword(priv);
-
- /* Is there a buffer to receive the return value? */
-
- if (dest)
- {
- *dest++ = word;
- }
- }
- }
- }
-}
-
-/*************************************************************************
- * Name: spi_sndblock
- *
- * Description:
- * Send a block of data on SPI
- *
- * Input Parameters:
- * dev - Device-specific state data
- * txbuffer - A pointer to the buffer of data to be sent
- * nwords - the length of data to send from the buffer in number of words.
- * The wordsize is determined by the number of bits-per-word
- * selected for the SPI interface. If nbits <= 8, the data is
- * packed into uint8_t's; if nbits >8, the data is packed into uint16_t's
- *
- * Returned Value:
- * None
- *
- ************************************************************************************/
-
-#ifndef CONFIG_SPI_EXCHANGE
-static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const void *txbuffer, size_t nwords)
-{
- return spi_exchange(dev, txbuffer, NULL, nwords);
-}
-#endif
-
-/************************************************************************************
- * Name: spi_recvblock
- *
- * Description:
- * Revice a block of data from SPI
- *
- * Input Parameters:
- * dev - Device-specific state data
- * rxbuffer - A pointer to the buffer in which to recieve data
- * nwords - the length of data that can be received in the buffer in number
- * of words. The wordsize is determined by the number of bits-per-word
- * selected for the SPI interface. If nbits <= 8, the data is
- * packed into uint8_t's; if nbits >8, the data is packed into uint16_t's
- *
- * Returned Value:
- * None
- *
- ************************************************************************************/
-
-#ifndef CONFIG_SPI_EXCHANGE
-static void spi_recvblock(FAR struct spi_dev_s *dev, FAR void *rxbuffer, size_t nwords)
-{
- return spi_exchange(dev, NULL, rxbuffer, nwords);
-}
-#endif
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: up_spiinitialize
- *
- * Description:
- * Initialize the selected SPI port
- *
- * Input Parameter:
- * Port number (for hardware that has mutiple SPI interfaces)
- *
- * Returned Value:
- * Valid SPI device structure reference on succcess; a NULL on failure
- *
- ************************************************************************************/
-
-FAR struct spi_dev_s *up_spiinitialize(int port)
-{
- FAR struct lpc313x_spidev_s *priv = &g_spidev;
-
- /* Only the SPI0 interface is supported */
-
- if (port != 0)
- {
- return NULL;
- }
-
- /* Configure SPI pins. Nothing needs to be done here because the SPI pins
- * default to "driven-by-IP" on reset.
- */
-
-#ifdef CONFIG_DEBUG_SPIREGS
- lldbg("PINS: %08x MODE0: %08x MODE1: %08x\n",
- spi_getreg(LPC313X_IOCONFIG_SPI_PINS),
- spi_getreg(LPC313X_IOCONFIG_SPI_MODE0),
- spi_getreg(LPC313X_IOCONFIG_SPI_MODE1));
-#endif
-
- /* Enable SPI clocks */
-
- lpc313x_enableclock(CLKID_SPIPCLK);
- lpc313x_enableclock(CLKID_SPIPCLKGATED);
- lpc313x_enableclock(CLKID_SPICLK);
- lpc313x_enableclock(CLKID_SPICLKGATED);
-
- /* Soft Reset the module */
-
- lpc313x_softreset(RESETID_SPIRSTAPB);
- lpc313x_softreset(RESETID_SPIRSTIP);
-
- /* Initialize the SPI semaphore that enforces mutually exclusive access */
-
- sem_init(&priv->exclsem, 0, 1);
-
- /* Reset the SPI block */
-
- spi_putreg(SPI_CONFIG_SOFTRST, LPC313X_SPI_CONFIG);
-
- /* Initialise Slave 0 settings registers */
-
- priv->slv1 = 0;
- priv->slv2 = 0;
-
- /* Configure initial default mode */
-
- priv->mode = SPIDEV_MODE1;
- spi_setmode(&priv->spidev, SPIDEV_MODE0);
-
- /* Configure word width */
-
- priv->nbits = 0;
- spi_setbits(&priv->spidev, 8);
-
- /* Select a default frequency of approx. 400KHz */
-
- priv->frequency = 0;
- spi_setfrequency(&priv->spidev, 400000);
-
- return (FAR struct spi_dev_s *)priv;
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_spi.h b/nuttx/arch/arm/src/lpc313x/lpc313x_spi.h
deleted file mode 100755
index b817f4518..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_spi.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_spi.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_SPI_H
-#define __ARCH_ARM_SRC_LPC313X_SPI_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* SPI register base address offset into the APB2 domain ****************************************/
-
-#define LPC313X_SPI_VBASE (LPC313X_APB2_VSECTION+LPC313X_APB2_SPI_OFFSET)
-#define LPC313X_SPI_PBASE (LPC313X_APB2_PSECTION+LPC313X_APB2_SPI_OFFSET)
-
-/* SPI register offsets (with respect to the SPI base) ******************************************/
-/* SPI configuration registers */
-
-#define LPC313X_SPI_CONFIG_OFFSET 0x000 /* Configuration register */
-#define LPC313X_SPI_SLVENABLE_OFFSET 0x004 /* Slave enable register */
-#define LPC313X_SPI_TXFIFO_OFFSET 0x008 /* Transmit FIFO flush register */
-#define LPC313X_SPI_FIFODATA_OFFSET 0x00C /* FIFO data register */
-#define LPC313X_SPI_NHPPOP_OFFSET 0x010 /* NHP pop register */
-#define LPC313X_SPI_NHPMODE_OFFSET 0x014 /* NHP mode selection register */
-#define LPC313X_SPI_DMA_OFFSET 0x018 /* DMA settings register */
-#define LPC313X_SPI_STATUS_OFFSET 0x01c /* Status register */
-#define LPC313X_SPI_HWINFO_OFFSET 0x020 /* Hardware information register */
-
-/* SPI slave registers */
-
-#define LPC313X_SPI_SLV0_1_OFFSET 0x024 /* Slave settings register 1 (for slave 0) */
-#define LPC313X_SPI_SLV0_2_OFFSET 0x028 /* Slave settings register 2 (for slave 0) */
-#define LPC313X_SPI_SLV1_1_OFFSET 0x02c /* Slave settings register 1 (for slave 1) */
-#define LPC313X_SPI_SLV1_2_OFFSET 0x030 /* Slave settings register 2 (for slave 1) */
-#define LPC313X_SPI_SLV2_1_OFFSET 0x034 /* Slave settings register 1 (for slave 2) */
-#define LPC313X_SPI_SLV2_2_OFFSET 0x038 /* Slave settings register 2 (for slave 2) */
- /* 0x03c-0xfd0: Reserved */
-/* SPI interrupt registers */
-
-#define LPC313X_SPI_INTTHR_OFFSET 0xfd4 /* Tx/Rx threshold interrupt levels */
-#define LPC313X_SPI_INTCLRENABLE_OFFSET 0xfd8 /* INT_ENABLE bits clear register */
-#define LPC313X_SPI_INTSETENABLE_OFFSET 0xfdc /* INT_ENABLE bits set register */
-#define LPC313X_SPI_INTSTATUS_OFFSET 0xfe0 /* Interrupt status register */
-#define LPC313X_SPI_INTENABLE_OFFSET 0xfe4 /* Interrupt enable register */
-#define LPC313X_SPI_INTCLRSTATUS_OFFSET 0xfe8 /* INT_STATUS bits clear register */
-#define LPC313X_SPI_INTSETSTATUS_OFFSET 0xfec /* INT_STATUS bits set register */
- /* 0xff0-0xff8: Reserved */
-
-/* SPI register (virtual) addresses *************************************************************/
-
-/* SPI configuration registers */
-
-#define LPC313X_SPI_CONFIG (LPC313X_SPI_VBASE+LPC313X_SPI_CONFIG_OFFSET)
-#define LPC313X_SPI_SLVENABLE (LPC313X_SPI_VBASE+LPC313X_SPI_SLVENABLE_OFFSET)
-#define LPC313X_SPI_TXFIFO (LPC313X_SPI_VBASE+LPC313X_SPI_TXFIFO_OFFSET)
-#define LPC313X_SPI_FIFODATA (LPC313X_SPI_VBASE+LPC313X_SPI_FIFODATA_OFFSET)
-#define LPC313X_SPI_NHPPOP (LPC313X_SPI_VBASE+LPC313X_SPI_NHPPOP_OFFSET)
-#define LPC313X_SPI_NHPMODE (LPC313X_SPI_VBASE+LPC313X_SPI_NHPMODE_OFFSET)
-#define LPC313X_SPI_DMA (LPC313X_SPI_VBASE+LPC313X_SPI_DMA_OFFSET)
-#define LPC313X_SPI_STATUS (LPC313X_SPI_VBASE+LPC313X_SPI_STATUS_OFFSET)
-#define LPC313X_SPI_HWINFO (LPC313X_SPI_VBASE+LPC313X_SPI_HWINFO_OFFSET)
-
-/* SPI slave registers */
-
-#define LPC313X_SPI_SLV0_1 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV0_1_OFFSET)
-#define LPC313X_SPI_SLV0_2 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV0_2_OFFSET)
-#define LPC313X_SPI_SLV1_1 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV1_1_OFFSET)
-#define LPC313X_SPI_SLV1_2 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV1_2_OFFSET)
-#define LPC313X_SPI_SLV2_1 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV2_1_OFFSET)
-#define LPC313X_SPI_SLV2_2 (LPC313X_SPI_VBASE+LPC313X_SPI_SLV2_2_OFFSET)
-
-/* SPI interrupt registers */
-
-#define LPC313X_SPI_INTTHR (LPC313X_SPI_VBASE+LPC313X_SPI_INTTHR_OFFSET)
-#define LPC313X_SPI_INTCLRENABLE (LPC313X_SPI_VBASE+LPC313X_SPI_INTCLRENABLE_OFFSET)
-#define LPC313X_SPI_INTSETENABLE (LPC313X_SPI_VBASE+LPC313X_SPI_INTSETENABLE_OFFSET)
-#define LPC313X_SPI_INTSTATUS (LPC313X_SPI_VBASE+LPC313X_SPI_INTSTATUS_OFFSET)
-#define LPC313X_SPI_INTENABLE (LPC313X_SPI_VBASE+LPC313X_SPI_INTENABLE_OFFSET)
-#define LPC313X_SPI_INTCLRSTATUS (LPC313X_SPI_VBASE+LPC313X_SPI_INTCLRSTATUS_OFFSET)
-#define LPC313X_SPI_INTSETSTATUS (LPC313X_SPI_VBASE+LPC313X_SPI_INTSETSTATUS_OFFSET)
-
-/* SPI register bit definitions *****************************************************************/
-/* SPI Configuration register CONFIG, address 0x15002000 */
-
-#define SPI_CONFIG_INTERSLVDELAY_SHIFT (16) /* Bits 16-31: Delay between xfrs to different slaves */
-#define SPI_CONFIG_NTERSLVDELAY_MASK (0xffff << SPI_CONFIG_INTERSLVDELAY_SHIFT)
-#define SPI_CONFIG_UPDENABLE (1 << 7) /* Bit 7: 7 Update enable bit */
-#define SPI_CONFIG_SOFTRST (1 << 6) /* Bit 6: 6 Software reset bit */
-#define SPI_CONFIG_SLVDISABLE (1 << 4) /* Bit 4: 4 Slave output disable (slave mode) */
-#define SPI_CONFIG_XMITMODE (1 << 3) /* Bit 3: 3 Transmit mode */
-#define SPI_CONFIG_LOOPBACK (1 << 2) /* Bit 2: 2 Loopback mode bit */
-#define SPI_CONFIG_MS (1 << 1) /* Bit 1: 1 Master/slave mode bit */
-#define SPI_CONFIG_SPIENABLE (1 << 0) /* Bit 0: 0 SPI enable bit */
-
-/* Slave Enable register SLVENABLE, address 0x15002004 */
-
-#define SPI_SLVENABLE3_SHIFT (4) /* Bits 4-5: Slave 3 enable bits */
-#define SPI_SLVENABLE3_MASK (3 << SPI_SLVENABLE3_SHIFT)
-# define SPI_SLVENABLE3_DISABLED (0 << SPI_SLVENABLE3_SHIFT) /* Disabled */
-# define SPI_SLVENABLE3_ENABLED (1 << SPI_SLVENABLE3_SHIFT) /* Enabled */
-# define SPI_SLVENABLE3_SUSPENDED (3 << SPI_SLVENABLE3_SHIFT) /* Suspended */
-#define SPI_SLVENABLE2_SHIFT (2) /* Bits 2-3: Slave 2 enable bits */
-#define SPI_SLVENABLE2_MASK (3 << SPI_SLVENABLE2_SHIFT)
-# define SPI_SLVENABLE2_DISABLED (0 << SPI_SLVENABLE2_SHIFT) /* Disabled */
-# define SPI_SLVENABLE2_ENABLED (1 << SPI_SLVENABLE2_SHIFT) /* Enabled */
-# define SPI_SLVENABLE2_SUSPENDED (3 << SPI_SLVENABLE2_SHIFT) /* Suspended */
-#define SPI_SLVENABLE1_SHIFT (0) /* Bits 0-1: Slave 1 enable bits */
-#define SPI_SLVENABLE1_MASK (3 << SPI_SLVENABLE1_SHIFT)
-# define SPI_SLVENABLE1_DISABLED (0 << SPI_SLVENABLE1_SHIFT) /* Disabled */
-# define SPI_SLVENABLE1_ENABLED (1 << SPI_SLVENABLE1_SHIFT) /* Enabled */
-# define SPI_SLVENABLE1_SUSPENDED (3 << SPI_SLVENABLE1_SHIFT) /* Suspended */
-
-/* Transmit FIFO flush register TXFIFO, address 0x15002008 */
-
-#define SPI_TXFIFO_FLUSH (1 << 0) /* Bit 0: Transmit FIFO flush bit */
-
-/* FIFO data register FIFODATA, address 0x1500200c */
-
-#define SPI_FIFODATA_SHIFT (0) /* Bits 0-15: FIFO data */
-#define SPI_FIFODATA_MASK (0xffff << SPI_FIFODATA_SHIFT)
-
-/* NHP POP register NHPPOP, address 0x15002010 */
-
-#define SPI_NHPPOP (1 << 0) /* Bit 0: NHP pop bit */
-
-/* NHP mode register NHPMODE, address 0x15002014 */
-
-#define SPI_NHPMODE (1 << 0) /* Bit 0: NHP mode bit */
-
-/* DMA setting register DMA, address 0x15002018 */
-
-#define SPI_DMA_TXENABLE (1 << 1) /* Bit 1: Tx DMA enable bit */
-#define SPI_DMA_RXEMABLE (1 << 0) /* Bit 0: Rx DMA enable bit */
-
-/* Status register STATUS, address 0x1500201c */
-
-#define SPI_STATUS_SMSBUSY (1 << 5) /* Bit 5: Sequential multi-slave mode busy */
-#define SPI_STATUS_BUSY (1 << 4) /* Bit 4: SPI busy flag */
-#define SPI_STATUS_RXFIFOFULL (1 << 3) /* Bit 3: Receive FIFO full bit */
-#define SPI_STATUS_RXFIFOEMPTY (1 << 2) /* Bit 2: Receive FIFO empty bit */
-#define SPI_STATUS_TXFIFOFULL (1 << 1) /* Bit 1: Transmit FIFO full bit */
-#define SPI_STATUS_TXFIFOEMPTY (1 << 0) /* Bit 0: Transmit FIFO empty bit */
-
-/* Hardware information register HWINFO, address 0x15002020 */
-
-#define SPI_HWINFO_FIFOIMPLT (1 << 30) /* Bit 30: FIFO memory implementation */
-#define SPI_HWINFO_NSLAVES_SHIFT (26) /* Bits 26-29: Maximum number of slaves (minus 1) */
-#define SPI_HWINFO_NSLAVES_MASK (0x0f << SPI_HWINFO_NSLAVES_SHIFT)
-#define SPI_HWINFO_TXFIFOWIDTH_SHIFT (21) /* Bits 21-25: Width transmit FIFO (minus 1) */
-#define SPI_HWINFO_TXFIFOWIDTH_MASK (0x1f << SPI_HWINFO_TXFIFOWIDTH_SHIFT)
-#define SPI_HWINFO_RXFIFOWIDTH_SHIFT (16) /* Bits 16-20: Width receive FIFO (minus 1) */
-#define SPI_HWINFO_RXFIFOWIDTH_MASK (0x1f << SPI_HWINFO_RXFIFOWIDTH_SHIFT)
-#define SPI_HWINFO_TXFIFODEPTH_SHIFT (8) /* Bits 8-15: 64 */
-#define SPI_HWINFO_TXFIFODEPTH_MASK (0x0ff << SPI_HWINFO_TXFIFODEPTH_SHIFT)
-#define SPI_HWINFO_RXFIFODEPTH_SHIFT (0) /* Bits 0-7: 64 */
-#define SPI_HWINFO_RXFIFODEPTH_MASK (0xff << SPI_HWINFO_RXFIFODEPTH_SHIFT)
-
-/* Slave settings 1 SLV0-2_1, addresses 0x15002024, 0x1500202c, and 0x15002034 */
-
-#define SPI_SLV_1_INTERXFRDLY_SHIFT (24) /* Bits 24-31: Delay between slave xfrs (master mode) */
-#define SPI_SLV_1_INTERXFRDLY_MASK (0xff << SPI_SLV_1_INTERXFRDLY_SHIFT)
-#define SPI_SLV_1_NWORDS_SHIFT (16) /* Bits 16-23: Number words to send in SMS mode (master mode) */
-#define SPI_SLV_1_NWORDS_MASK (0xff << SPI_SLV_1_NWORDS_SHIFT)
-#define SPI_SLV_1_CLKDIV2_SHIFT (8) /* Bits 8-15: Serial clock divisor 2 */
-#define SPI_SLV_1_CLKDIV2_MASK (0xff << SPI_SLV_1_CLKDIV2_SHIFT)
-#define SPI_SLV_1_CLKDIV1_SHIFT (0) /* Bits 0-7: Serial clock rate divisor 1 */
-#define SPI_SLV_1_CLKDIV1_MASK (0xff << SPI_SLV_1_CLKDIV1_SHIFT)
-
-/* Slave settings 2 SLV0-2_2, addresses 0x15002028, 0x15002030, and0x15002038 */
-
-#define SPI_SLV_2_DELAY_SHIFT (9) /* Bits 9-16: Programmable delay */
-#define SPI_SLV_2_DELAY_MASK (0xff << SPI_SLV_2_DELAY_SHIFT)
-#define SPI_SLV_2_CSVAL (1 << 8) /* Bit 8: Chip select value between transfers */
-#define SPI_SLV_2_XFRFMT (1 << 7) /* Bit 7: Format of transfer */
-#define SPI_SLV_2_SPO (1 << 6) /* Bit 6: Serial clock polarity */
-#define SPI_SLV_2_SPH (1 << 5) /* Bit 5: Serial clock phase */
-#define SPI_SLV_2_WDSIZE_SHIFT (0) /* Bits 0-4: Word size of transfers slave (minus 1) */
-#define SPI_SLV_2_WDSIZE_MASK (0x1f << SPI_SLV_2_WDSIZE_SHIFT)
-
-/* Interrupt threshold register INTTHR, address 0x15002fd4 */
-
-#define SPI_INTTHR_TX_SHIFT (8) /* Bits 8-15: Interrupt when less than this in TX FIFO */
-#define SPI_INTTHR_TX_MASK (0xff << SPI_INTTHR_TX_SHIFT)
-#define SPI_INTTHR_RX_SHIFT (0) /* Bits 0-7: Interrupt when more than this in RX FIFO */
-#define SPI_INTTHR_RX_MASK (0xff << SPI_INTTHR_TX_SHIFT)
-
-/* Interrupt clear enable register INTCLRENABLE, address 0x15002fd8,
- * Interrupt set enable register INTSETENABLE, address 0x15002fdc,
- * Interrupt status register INTSTATUS, address 0x15002fe0,
- * Interrupt enable register INTENABLE, address 0x15002fe4,
- * Interrupt clear status register INTCLRSTATUS, address 0x15002fe8,
- * Interrupt set status register INTSETSTATUS, address 0x15002fec
- */
-
-#define SPI_INT_SMS (1 << 4) /* Bit 4: Sequential multi-slave mode ready interrupt bit */
-#define SPI_INT_TX (1 << 3) /* Bit 3: Transmit threshold level interrupt bit */
-#define SPI_INT_RX (1 << 2) /* Bit 3: Receive threshold level interrupt bit */
-#define SPI_INT_TO (1 << 1) /* Bit 1: Receive timeout interrupt bit */
-#define SPI_INT_OV (1 << 0) /* Bit 0: Receive overrtun interrrupt bit */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_SPI_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_syscreg.h b/nuttx/arch/arm/src/lpc313x/lpc313x_syscreg.h
deleted file mode 100755
index 6467484d5..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_syscreg.h
+++ /dev/null
@@ -1,611 +0,0 @@
-/********************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_syscreg.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ********************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_SYSCREG_H
-#define __ARCH_ARM_SRC_LPC313X_SYSCREG_H
-
-/********************************************************************************************************
- * Included Files
- ********************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/********************************************************************************************************
- * Pre-processor Definitions
- ********************************************************************************************************/
-
-/* SYSCREG register base address offset into the APB0 domain ********************************************/
-
-#define LPC313X_SYSCREG_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_SYSCREG_OFFSET)
-#define LPC313X_SYSCREG_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_SYSCREG_OFFSET)
-
-/* SYSCREG register offsets (with respect to the SYSCREG base) ******************************************/
-/* Miscellaneous system configuration registers, part1 */
- /* 0x000-0x004: Reserved */
-#define LPC313X_SYSCREG_EBIMPMCPRIO_OFFSET 0x008 /* Priority of MPMC channel for EBI interface */
-#define LPC313X_SYSCREG_EBNANDCPRIO_OFFSET 0x00c /* Priority of NAND controller channel for EBI interface */
-#define LPC313X_SYSCREG_EBIUNUSEDPRIO_OFFSET 0x010 /* Priority of unused channel */
-#define LPC313X_SYSCREG_RINGOSCCFG_OFFSET 0x014 /* RING oscillator configuration register */
-#define LPC313X_SYSCREG_ADCPDADC10BITS_OFFSET 0x018 /* Powerdown register of ADC 10bits */
-#define LPC313X_SYSCREG_CGUDYNHP0_OFFSET 0x01c /* reserved */
-#define LPC313X_SYSCREG_CGUDYNHP1_OFFSET 0x020 /* reserved */
-#define LPC313X_SYSCREG_ABCCFG_OFFSET 0x024 /* AHB burst control register */
-#define LPC313X_SYSCREG_SDMMCCFG_OFFSET 0x028 /* SD_MMC (MCI) configuration register */
-#define LPC313X_SYSCREG_MCIDELAYMODES_OFFSET 0x02c /* Delay register for the SD_MMC (MCI) clocks */
-
-/* USB configuration registers */
-
-#define LPC313X_SYSCREG_USB_ATXPLLPDREG_OFFSET 0x030 /* Power down register of USB ATX PLL */
-#define LPC313X_SYSCREG_USB_OTGCFG_OFFSET 0x034 /* USB OTG configuration register */
-#define LPC313X_SYSCREG_USB_OTGPORTINDCTL_OFFSET 0x038 /* USB OTG port indicator LED control outputs */
- /* 0x03c: Reserved */
-#define LPC313X_SYSCREG_USB_PLLNDEC_OFFSET 0x040 /* USB OTG PLL configuration register NOEC */
-#define LPC313X_SYSCREG_USB_PLLMDEC_OFFSET 0x044 /* USB OTG PLL configuration register MDEC */
-#define LPC313X_SYSCREG_USB_PLLPDEC_OFFSET 0x048 /* USB OTG PLL configuration register PDEC */
-#define LPC313X_SYSCREG_USB_PLLSELR_OFFSET 0x04c /* USB OTG PLL configuration register SELR */
-#define LPC313X_SYSCREG_USB_PLLSELI_OFFSET 0x050 /* USB OTG PLL configuration register SELI */
-#define LPC313X_SYSCREG_USB_PLLSELP_OFFSET 0x054 /* USB OTG PLL configuration register SELP */
-
-/* ISRAM/ISROM configuration registers */
-
-#define LPC313X_SYSCREG_ISRAM0_LATENCYCFG_OFFSET 0x058 /* Internal SRAM 0 latency configuration register */
-#define LPC313X_SYSCREG_ISRAM1_LATENCYCFG_OFFSET 0x05c /* Internal SRAM 1 latency configuration register */
-#define LPC313X_SYSCREG_ISROM_LATENCYCFG_OFFSET 0x060 /* Internal SROM latency configuration register */
-
-/* MPMC configuration registers */
-
-#define LPC313X_SYSCREG_MPMC_AHBMISC_OFFSET 0x064 /* Configuration register of MPMC */
-#define LPC313X_SYSCREG_MPMC_DELAYMODES_OFFSET 0x068 /* Configuration of MPMC clock delay */
-#define LPC313X_SYSCREG_MPMC_WAITRD0_OFFSET 0x06c /* Configuration of the wait cycles for read transfers */
-#define LPC313X_SYSCREG_MPMC_WAITRD1_OFFSET 0x070 /* Configuration of the wait cycles for read transfers */
-#define LPC313X_SYSCREG_MPMC_WIREEBIMSZ_OFFSET 0x074 /* Configuration of the memory width for MPMC */
-#define LPC313X_SYSCREG_MPMC_TESTMODE0_OFFSET 0x078 /* Configuration for refresh generation of MPMC */
-#define LPC313X_SYSCREG_MPMC_TESTMODE1_OFFSET 0x07c /* Configuration for refresh generation of MPMC */
-
-/* Miscellaneous system configuration registers, part 2 */
-
-#define LPC313X_SYSCREG_AHB0EXTPRIO_OFFSET 0x080 /* Priority of the AHB masters */
-#define LPC313X_SYSCREG_ARM926SHADOWPTR_OFFSET 0x084 /* Memory mapping */
- /* 0x088-0x08c reserved */
-/* Pin multiplexing control registers */
-
-#define LPC313X_SYSCREG_MUX_LCDEBISEL_OFFSET 0x090 /* Selects between lcd_interface and EBI pins */
-#define LPC313X_SYSCREG_MUX_GPIOMCISEL_OFFSET 0x094 /* Selects between GPIO and MCI pins */
-#define LPC313X_SYSCREG_MUX_NANDMCISEL_OFFSET 0x098 /* Selects between NAND flash controller and MCI pins */
-#define LPC313X_SYSCREG_MUX_UARTSPISEL_OFFSET 0x09c /* Selects between UART and SPI pins */
-#define LPC313X_SYSCREG_MUX_I2STXPCMSEL_OFFSET 0x0a0 /* Selects between I2STX and PCM pins */
-
-/* Pad configuration registers */
-
-#define LPC313X_SYSCREG_PAD_EBID9_OFFSET 0x0a4 /* Control pad EBI_D_9 */
-#define LPC313X_SYSCREG_PAD_EBID10_OFFSET 0x0a8 /* Control pad EBI_D_10 */
-#define LPC313X_SYSCREG_PAD_EBID11_OFFSET 0x0ac /* Control pad EBI_D_11 */
-#define LPC313X_SYSCREG_PAD_EBID12_OFFSET 0x0b0 /* Control pad EBI_D_12 */
-#define LPC313X_SYSCREG_PAD_EBID13_OFFSET 0x0b4 /* Control pad EBI_D_13 */
-#define LPC313X_SYSCREG_PAD_EBID14_OFFSET 0x0b8 /* Control pad EBI_D_14 */
-#define LPC313X_SYSCREG_PAD_I2SRXBCK0_OFFSET 0x0bc /* Control pad I2SRX_BCK0 */
-#define LPC313X_SYSCREG_PAD_MGPIO9_OFFSET 0x0c0 /* Control pad MGPIO9 */
-#define LPC313X_SYSCREG_PAD_MGPIO6_OFFSET 0x0c4 /* Control pad MGPIO6 */
-#define LPC313X_SYSCREG_PAD_MLCDDB7_OFFSET 0x0c8 /* Control pad MLCD_DB_7 */
-#define LPC313X_SYSCREG_PAD_MLCDDB4_OFFSET 0x0cc /* Control pad MLCD_DB_4 */
-#define LPC313X_SYSCREG_PAD_MLCDDB2_OFFSET 0x0d0 /* Control pad MLCD_DB_2 */
-#define LPC313X_SYSCREG_PAD_MNANDRYBN0_OFFSET 0x0d4 /* Control pad MNAND_RYBN0 */
-#define LPC313X_SYSCREG_PAD_GPIO1_OFFSET 0x0d8 /* Control pad GPIO1 */
-#define LPC313X_SYSCREG_PAD_EBID4_OFFSET 0x0dc /* Control pad EBI_D_4 */
-#define LPC313X_SYSCREG_PAD_MI2STXCLK0_OFFSET 0x0e0 /* Control pad MI2STX_CLK0 */
-#define LPC313X_SYSCREG_PAD_MI2STXBCK0_OFFSET 0x0e4 /* Control pad MI2STX_BCK0 */
-#define LPC313X_SYSCREG_PAD_EBIA1CLE_OFFSET 0x0e8 /* Control pad EBI_A_1_CLE */
-#define LPC313X_SYSCREG_PAD_EBINCASBLOUT0_OFFSET 0x0ec /* Control pad EBI_NCAS_BLOUT_0 */
-#define LPC313X_SYSCREG_PAD_NANDNCS3_OFFSET 0x0f0 /* Control pad NAND_NCS_3 */
-#define LPC313X_SYSCREG_PAD_MLCDDB0_OFFSET 0x0f4 /* Control pad MLCD_DB_0 */
-#define LPC313X_SYSCREG_PAD_EBIDQM0NOE_OFFSET 0x0f8 /* Control pad EBI_DQM_0_NOE */
-#define LPC313X_SYSCREG_PAD_EBID0_OFFSET 0x0fc /* Control pad EBI_D_0 */
-#define LPC313X_SYSCREG_PAD_EBID1_OFFSET 0x100 /* Control pad EBI_D_1 */
-#define LPC313X_SYSCREG_PAD_EBID2_OFFSET 0x104 /* Control pad EBI_D_2 */
-#define LPC313X_SYSCREG_PAD_EBID3_OFFSET 0x108 /* Control pad EBI_D_3 */
-#define LPC313X_SYSCREG_PAD_EBID5_OFFSET 0x10c /* Control pad EBI_D_5 */
-#define LPC313X_SYSCREG_PAD_EBID6_OFFSET 0x110 /* Control pad EBI_D_6 */
-#define LPC313X_SYSCREG_PAD_EBID7_OFFSET 0x114 /* Control pad EBI_D_7 */
-#define LPC313X_SYSCREG_PAD_EBID8_OFFSET 0x118 /* Control pad EBI_D_8 */
-#define LPC313X_SYSCREG_PAD_EBID15_OFFSET 0x11c /* Control pad EBI_D_15 */
-#define LPC313X_SYSCREG_PAD_I2STXDATA1_OFFSET 0x120 /* Control pad I2STX_DATA1 */
-#define LPC313X_SYSCREG_PAD_I2STXBCK1_OFFSET 0x124 /* Control pad I2STX_BCK1 */
-#define LPC313X_SYSCREG_PAD_I2STXWS1_OFFSET 0x128 /* Control pad I2STX_WS1 */
-#define LPC313X_SYSCREG_PAD_I2SRXDATA0_OFFSET 0x12c /* Control pad I2SRX_DATA0 */
-#define LPC313X_SYSCREG_PAD_I2SRXWS0_OFFSET 0x130 /* Control pad I2SRX_WS0 */
-#define LPC313X_SYSCREG_PAD_I2SRXDATA1_OFFSET 0x134 /* Control pad I2SRX_DATA1 */
-#define LPC313X_SYSCREG_PAD_I2SRXBCK1_OFFSET 0x138 /* Control pad I2SRX_BCK1 */
-#define LPC313X_SYSCREG_PAD_I2SRXWS1_OFFSET 0x13c /* Control pad I2SRX_WS1 */
-#define LPC313X_SYSCREG_PAD_SYSCLKO_OFFSET 0x140 /* Control pad SYSCLK_O */
-#define LPC313X_SYSCREG_PAD_PWMDATA_OFFSET 0x144 /* Control pad PWM_DATA */
-#define LPC313X_SYSCREG_PAD_UARTRXD_OFFSET 0x148 /* Control pad UART_RXD */
-#define LPC313X_SYSCREG_PAD_UARTTXD_OFFSET 0x14c /* Control pad UART_TXD */
-#define LPC313X_SYSCREG_PAD_I2CSDA1_OFFSET 0x150 /* Control pad I2C_SDA1 */
-#define LPC313X_SYSCREG_PAD_I2CSCL1_OFFSET 0x154 /* Control pad I2C_SCL1 */
-#define LPC313X_SYSCREG_PAD_CLK256FSO_OFFSET 0x158 /* Control pad CLK_256FS_O */
-#define LPC313X_SYSCREG_PAD_GPIO0_OFFSET 0x15c /* Control pad GPIO0 */
-#define LPC313X_SYSCREG_PAD_GPIO2_OFFSET 0x160 /* Control pad GPIO2 */
-#define LPC313X_SYSCREG_PAD_GPIO3_OFFSET 0x164 /* Control pad GPIO3 */
-#define LPC313X_SYSCREG_PAD_GPIO4_OFFSET 0x168 /* Control pad GPIO4 */
-#define LPC313X_SYSCREG_PAD_GPIO11_OFFSET 0x16c /* Control pad GPIO11 */
-#define LPC313X_SYSCREG_PAD_GPIO12_OFFSET 0x170 /* Control pad GPIO12 */
-#define LPC313X_SYSCREG_PAD_GPIO13_OFFSET 0x174 /* Control pad GPIO13 */
-#define LPC313X_SYSCREG_PAD_GPIO14_OFFSET 0x178 /* Control pad GPIO14 */
-#define LPC313X_SYSCREG_PAD_GPIO15_OFFSET 0x17c /* Control pad GPIO15 */
-#define LPC313X_SYSCREG_PAD_GPIO16_OFFSET 0x180 /* Control pad GPIO16 */
-#define LPC313X_SYSCREG_PAD_GPIO17_OFFSET 0x184 /* Control pad GPIO17 */
-#define LPC313X_SYSCREG_PAD_GPIO18_OFFSET 0x188 /* Control pad GPIO18 */
-#define LPC313X_SYSCREG_PAD_GPIO19_OFFSET 0x18c /* Control pad GPIO19 */
-#define LPC313X_SYSCREG_PAD_GPIO20_OFFSET 0x190 /* Control pad GPIO20 */
-#define LPC313X_SYSCREG_PAD_SPIMISO_OFFSET 0x194 /* Control pad SPI_MISO */
-#define LPC313X_SYSCREG_PAD_SPIMOSI_OFFSET 0x198 /* Control pad SPI_MOSI */
-#define LPC313X_SYSCREG_PAD_SPICSIN_OFFSET 0x19c /* Control pad SPI_CS_IN */
-#define LPC313X_SYSCREG_PAD_SPISCK_OFFSET 0x1a0 /* Control pad SPI_SCK */
-#define LPC313X_SYSCREG_PAD_SPICSOUT0_OFFSET 0x1a4 /* Control pad SPI_CS_OUT0 */
-#define LPC313X_SYSCREG_PAD_NANDNCS0_OFFSET 0x1a8 /* Control pad NAND_NCS_0 */
-#define LPC313X_SYSCREG_PAD_NANDNCS1_OFFSET 0x1ac /* Control pad NAND_NCS_1 */
-#define LPC313X_SYSCREG_PAD_NANDNCS2_OFFSET 0x1b0 /* Control pad NAND_NCS_2 */
-#define LPC313X_SYSCREG_PAD_MLCDCSB_OFFSET 0x1b4 /* Control pad MLCD_CSB */
-#define LPC313X_SYSCREG_PAD_MLCDDB1_OFFSET 0x1b8 /* Control pad MLCD_DB_1 */
-#define LPC313X_SYSCREG_PAD_MLCDERD_OFFSET 0x1bc /* Control pad MLCD_E_RD */
-#define LPC313X_SYSCREG_PAD_MLCDRS_OFFSET 0x1c0 /* Control pad MLCD_RS */
-#define LPC313X_SYSCREG_PAD_MLCDRWWR_OFFSET 0x1c4 /* Control pad MLCD_RW_WR */
-#define LPC313X_SYSCREG_PAD_MLCDDB3_OFFSET 0x1c8 /* Control pad MLCD_DB_3 */
-#define LPC313X_SYSCREG_PAD_MLCDDB5_OFFSET 0x1cc /* Control pad MLCD_DB_5 */
-#define LPC313X_SYSCREG_PAD_MLCDDB6_OFFSET 0x1d0 /* Control pad MLCD_DB_6 */
-#define LPC313X_SYSCREG_PAD_MLCDDB8_OFFSET 0x1d4 /* Control pad MLCD_DB_8 */
-#define LPC313X_SYSCREG_PAD_MLCDDB9_OFFSET 0x1d8 /* Control pad MLCD_DB_9 */
-#define LPC313X_SYSCREG_PAD_MLCDDB10_OFFSET 0x1dc /* Control pad MLCD_DB_10 */
-#define LPC313X_SYSCREG_PAD_MLCDDB11_OFFSET 0x1e0 /* Control pad MLCD_DB_11 */
-#define LPC313X_SYSCREG_PAD_MLCDDB12_OFFSET 0x1e4 /* Control pad MLCD_DB_12 */
-#define LPC313X_SYSCREG_PAD_MLCDDB13_OFFSET 0x1e8 /* Control pad MLCD_DB_13 */
-#define LPC313X_SYSCREG_PAD_MLCDDB14_OFFSET 0x1ec /* Control pad MLCD_DB_14 */
-#define LPC313X_SYSCREG_PAD_MLCDDB15_OFFSET 0x1f0 /* Control pad MLCD_DB_15 */
-#define LPC313X_SYSCREG_PAD_MGPIO5_OFFSET 0x1f4 /* Control pad MGPIO5 */
-#define LPC313X_SYSCREG_PAD_MGPIO7_OFFSET 0x1f8 /* Control pad MGPIO5 */
-#define LPC313X_SYSCREG_PAD_MGPIO8_OFFSET 0x1fc /* Control pad MGPIO8 */
-#define LPC313X_SYSCREG_PAD_MGPIO10_OFFSET 0x200 /* Control pad MGPIO10 */
-#define LPC313X_SYSCREG_PAD_MNANDRYBN1_OFFSET 0x204 /* Control pad MNAND_RYBN1 */
-#define LPC313X_SYSCREG_PAD_MNANDRYBN2_OFFSET 0x208 /* Control pad MNAND_RYBN2 */
-#define LPC313X_SYSCREG_PAD_MNANDRYBN3_OFFSET 0x20c /* Control pad MNAND_RYBN3 */
-#define LPC313X_SYSCREG_PAD_MUARTCTSN_OFFSET 0x210 /* Control pad MUART_CTS_N */
-#define LPC313X_SYSCREG_PAD_MI2STXDATA0_OFFSET 0x218 /* Control pad MI2STX_DATA0 */
-#define LPC313X_SYSCREG_PAD_MI2STXWS0_OFFSET 0x21c /* Control pad MI2STX_WS0 */
-#define LPC313X_SYSCREG_PAD_EBINRASBLOUT1_OFFSET 0x220 /* Control pad EBI_NRAS_BLOUT_1 */
-#define LPC313X_SYSCREG_PAD_EBIA0ALE_OFFSET 0x224 /* Control pad EBI_A_0_ALE */
-#define LPC313X_SYSCREG_PAD_EBINWE_OFFSET 0x228 /* Control pad EBI_NWE */
-#define LPC313X_SYSCREG_PAD_ESHCTRLSUP4_OFFSET 0x22c /* Control pad at 1.8 and 3.3V (Nandflash/EBI pads) */
-#define LPC313X_SYSCREG_PAD_ESHCTRLSUP8_OFFSET 0x230 /* Control pad at 1.8 and 3.3V (LCD interface/SDRAM pads) */
-
-/* SYSCREG register (virtual) addresses *****************************************************************/
-/* Miscellaneous system configuration registers, part1 */
-
-#define LPC313X_SYSCREG_EBIMPMCPRIO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_EBIMPMCPRIO_OFFSET)
-#define LPC313X_SYSCREG_EBNANDCPRIO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_EBNANDCPRIO_OFFSET)
-#define LPC313X_SYSCREG_EBIUNUSEDPRIO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_EBIUNUSEDPRIO_OFFSET)
-#define LPC313X_SYSCREG_RINGOSCCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_RINGOSCCFG_OFFSET)
-#define LPC313X_SYSCREG_ADCPDADC10BITS (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ADCPDADC10BITS_OFFSET)
-#define LPC313X_SYSCREG_ABCCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ABCCFG_OFFSET)
-#define LPC313X_SYSCREG_SDMMCCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_SDMMCCFG_OFFSET)
-#define LPC313X_SYSCREG_MCIDELAYMODES (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MCIDELAYMODES_OFFSET)
-
-/* USB configuration registers */
-
-#define LPC313X_SYSCREG_USB_ATXPLLPDREG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_ATXPLLPDREG_OFFSET)
-#define LPC313X_SYSCREG_USB_OTGCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_OTGCFG_OFFSET)
-#define LPC313X_SYSCREG_USB_OTGPORTINDCTL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_OTGPORTINDCTL_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLNDEC (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLNDEC_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLMDEC (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLMDEC_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLPDEC (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLPDEC_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLSELR (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLSELR_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLSELI (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLSELI_OFFSET)
-#define LPC313X_SYSCREG_USB_PLLSELP (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_USB_PLLSELP_OFFSET)
-
-/* ISRAM/ISROM configuration registers */
-
-#define LPC313X_SYSCREG_ISRAM0_LATENCYCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ISRAM0_LATENCYCFG_OFFSET)
-#define LPC313X_SYSCREG_ISRAM1_LATENCYCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ISRAM1_LATENCYCFG_OFFSET)
-#define LPC313X_SYSCREG_ISROM_LATENCYCFG (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ISROM_LATENCYCFG_OFFSET)
-
-/* MPMC configuration registers */
-
-#define LPC313X_SYSCREG_MPMC_AHBMISC (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_AHBMISC_OFFSET)
-#define LPC313X_SYSCREG_MPMC_DELAYMODES (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_DELAYMODES_OFFSET)
-#define LPC313X_SYSCREG_MPMC_WAITRD0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_WAITRD0_OFFSET)
-#define LPC313X_SYSCREG_MPMC_WAITRD1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_WAITRD1_OFFSET)
-#define LPC313X_SYSCREG_MPMC_WIREEBIMSZ (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_WIREEBIMSZ_OFFSET)
-#define LPC313X_SYSCREG_MPMC_TESTMODE0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_TESTMODE0_OFFSET)
-#define LPC313X_SYSCREG_MPMC_TESTMODE1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MPMC_TESTMODE1_OFFSET)
-
-/* Miscellaneous system configuration registers, part 2 */
-
-#define LPC313X_SYSCREG_AHB0EXTPRIO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_AHB0EXTPRIO_OFFSET)
-#define LPC313X_SYSCREG_ARM926SHADOWPTR (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_ARM926SHADOWPTR_OFFSET)
-
-/* Pin multiplexing control registers */
-
-#define LPC313X_SYSCREG_MUX_LCDEBISEL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MUX_LCDEBISEL_OFFSET)
-#define LPC313X_SYSCREG_MUX_GPIOMCISEL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MUX_GPIOMCISEL_OFFSET)
-#define LPC313X_SYSCREG_MUX_NANDMCISEL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MUX_NANDMCISEL_OFFSET)
-#define LPC313X_SYSCREG_MUX_UARTSPISEL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MUX_UARTSPISEL_OFFSET)
-#define LPC313X_SYSCREG_MUX_I2STXPCMSEL (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_MUX_I2STXPCMSEL_OFFSET)
-
-/* Pad configuration registers */
-
-#define LPC313X_SYSCREG_PAD_EBID9 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID9_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID10 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID10_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID11 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID11_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID12 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID12_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID13 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID13_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID14 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID14_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXBCK0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXBCK0_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO9 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO9_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO6 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO6_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB7 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB7_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB4 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB4_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB2 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB2_OFFSET)
-#define LPC313X_SYSCREG_PAD_MNANDRYBN0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MNANDRYBN0_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO1_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID4 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID4_OFFSET)
-#define LPC313X_SYSCREG_PAD_MI2STXCLK0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MI2STXCLK0_OFFSET)
-#define LPC313X_SYSCREG_PAD_MI2STXBCK0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MI2STXBCK0_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBIA1CLE (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBIA1CLE_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBINCASBLOUT0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBINCASBLOUT0_OFFSET)
-#define LPC313X_SYSCREG_PAD_NANDNCS3 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_NANDNCS3_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB0_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBIDQM0NOE (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBIDQM0NOE_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID0_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID1_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID2 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID2_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID3 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID3_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID5 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID5_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID6 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID6_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID7 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID7_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID8 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID8_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBID15 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBID15_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2STXDATA1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2STXDATA1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2STXBCK1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2STXBCK1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2STXWS1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2STXWS1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXDATA0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXDATA0_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXWS0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXWS0_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXDATA1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXDATA1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXBCK1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXBCK1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2SRXWS1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2SRXWS1_OFFSET)
-#define LPC313X_SYSCREG_PAD_SYSCLKO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SYSCLKO_OFFSET)
-#define LPC313X_SYSCREG_PAD_PWMDATA (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_PWMDATA_OFFSET)
-#define LPC313X_SYSCREG_PAD_UARTRXD (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_UARTRXD_OFFSET)
-#define LPC313X_SYSCREG_PAD_UARTTXD (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_UARTTXD_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2CSDA1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2CSDA1_OFFSET)
-#define LPC313X_SYSCREG_PAD_I2CSCL1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_I2CSCL1_OFFSET)
-#define LPC313X_SYSCREG_PAD_CLK256FSO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_CLK256FSO_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO0_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO2 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO2_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO3 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO3_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO4 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO4_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO11 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO11_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO12 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO12_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO13 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO13_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO14 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO14_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO15 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO15_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO16 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO16_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO17 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO17_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO18 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO18_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO19 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO19_OFFSET)
-#define LPC313X_SYSCREG_PAD_GPIO20 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_GPIO20_OFFSET)
-#define LPC313X_SYSCREG_PAD_SPIMISO (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SPIMISO_OFFSET)
-#define LPC313X_SYSCREG_PAD_SPIMOSI (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SPIMOSI_OFFSET)
-#define LPC313X_SYSCREG_PAD_SPICSIN (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SPICSIN_OFFSET)
-#define LPC313X_SYSCREG_PAD_SPISCK (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SPISCK_OFFSET)
-#define LPC313X_SYSCREG_PAD_SPICSOUT0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_SPICSOUT0_OFFSET)
-#define LPC313X_SYSCREG_PAD_NANDNCS0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_NANDNCS0_OFFSET)
-#define LPC313X_SYSCREG_PAD_NANDNCS1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_NANDNCS1_OFFSET)
-#define LPC313X_SYSCREG_PAD_NANDNCS2 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_NANDNCS2_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDCSB (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDCSB_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB1_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDERD (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDERD_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDRS (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDRS_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDRWWR (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDRWWR_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB3 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB3_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB5 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB5_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB6 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB6_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB8 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB8_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB9 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB9_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB10 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB10_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB11 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB11_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB12 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB12_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB13 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB13_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB14 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB14_OFFSET)
-#define LPC313X_SYSCREG_PAD_MLCDDB15 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MLCDDB15_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO5 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO5_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO7 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO7_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO8 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO8_OFFSET)
-#define LPC313X_SYSCREG_PAD_MGPIO10 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MGPIO10_OFFSET)
-#define LPC313X_SYSCREG_PAD_MNANDRYBN1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MNANDRYBN1_OFFSET)
-#define LPC313X_SYSCREG_PAD_MNANDRYBN2 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MNANDRYBN2_OFFSET)
-#define LPC313X_SYSCREG_PAD_MNANDRYBN3 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MNANDRYBN3_OFFSET)
-#define LPC313X_SYSCREG_PAD_MUARTCTSN (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MUARTCTSN_OFFSET)
-#define LPC313X_SYSCREG_PAD_MI2STXDATA0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MI2STXDATA0_OFFSET)
-#define LPC313X_SYSCREG_PAD_MI2STXWS0 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_MI2STXWS0_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBINRASBLOUT1 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBINRASBLOUT1_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBIA0ALE (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBIA0ALE_OFFSET)
-#define LPC313X_SYSCREG_PAD_EBINWE (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_EBINWE_OFFSET)
-#define LPC313X_SYSCREG_PAD_ESHCTRLSUP4 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_ESHCTRLSUP4_OFFSET)
-#define LPC313X_SYSCREG_PAD_ESHCTRLSUP8 (LPC313X_SYSCREG_VBASE+LPC313X_SYSCREG_PAD_ESHCTRLSUP8_OFFSET)
-
-/* SYSCREG register bit definitions *********************************************************************/
-/* Miscellaneous system configuration registers, part1 */
-
-/* SYSCREG_EBIMPMCPRIO, address 0x13002808
- * SYSCREG_EBINANDCPRIO address 0x1300280c
- * SYSCREG_EBIUNUSEDPRIO address 0x13002810
- */
-
-#define SYSCREG_EBI_TIMEOUT_SHIFT (0) /* Bits 0-9: Time MPMC, NAND or unused channel */
-#define SYSCREG_EBI_TIMEOUT_MASK (0x3ff << SYSCREG_EBI_TIMEOUT_SHIFT)
-
-/* RINGOSCCFG address 0x13002814 */
-
-#define SYSCREG_RINGOSCCFG_OSC1EN (1 << 1) /* Bit 1: Enable ring oscillator 1 */
-#define SYSCREG_RINGOSCCFG_OSC0EN (1 << 0) /* Bit 0: Enable oscillator 0 */
-
-/* SYSCREG_ADCPDADC10BITS address 0x13002818 */
-
-#define SYSCREG_ADCPDADC10BITS_PWRDOWN (1 << 0) /* Bit 0: Power down ADC */
-
-/* SYSCREG_ABCCFG address 0x13002824 */
-
-#define SYSCREG_ABCCFG_USBOTG_SHIFT (9) /* Bits 9-11: USB_OTG AHB bus bandwidth control */
-#define SYSCREG_ABCCFG_USBOTG_MASK (7 << SYSCREG_ABCCFG_USBOTG_SHIFT)
-# define SYSCREG_ABCCFG_USBOTG_NORMAL (0 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Normal mode */
-# define SYSCREG_ABCCFG_USBOTG_NONSEQ (1 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Make non-sequential */
-# define SYSCREG_ABCCFG_USBOTG_SPLIT4 (2 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_USBOTG_SPLIT8 (3 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Split to 8-beat */
-# define SYSCREG_ABCCFG_USBOTG_EXT8 (4 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Extend to 8-beat */
-# define SYSCREG_ABCCFG_USBOTG_EXT16 (5 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Extend to 16-beat */
-# define SYSCREG_ABCCFG_USBOTG_SPLIT4W (6 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_USBOTG_EXT32 (7 << SYSCREG_ABCCFG_USBOTG_SHIFT) /* extend to 32-beat */
-#define SYSCREG_ABCCFG_ARM926EJSI_SHIFT (6) /* Bits 6-8: ARM926EJS instruction AHB bus bandwidth control */
-#define SYSCREG_ABCCFG_ARM926EJSI_MASK (7 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT)
-# define SYSCREG_ABCCFG_ARM926EJSI_NORMAL (0 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Normal mode */
-# define SYSCREG_ABCCFG_ARM926EJSI_NONSEQ (1 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Make non-sequential */
-# define SYSCREG_ABCCFG_ARM926EJSI_SPLIT4 (2 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_ARM926EJSI_SPLIT8 (3 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Split to 8-beat */
-# define SYSCREG_ABCCFG_ARM926EJSI_EXT8 (4 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Extend to 8-beat */
-# define SYSCREG_ABCCFG_ARM926EJSI_EXT16 (5 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Extend to 16-beat */
-# define SYSCREG_ABCCFG_ARM926EJSI_SPLIT4W (6 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_ARM926EJSI_EXT32 (7 << SYSCREG_ABCCFG_ARM926EJSI_SHIFT) /* extend to 32-beat */
-#define SYSCREG_ABCCFG_ARM926EJSD_SHIFT (3) /* Bits 3-5: ARM926EJS data AHB bus bandwidth control */
-#define SYSCREG_ABCCFG_ARM926EJSD_MASK (7 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT)
-# define SYSCREG_ABCCFG_ARM926EJSD_NORMAL (0 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Normal mode */
-# define SYSCREG_ABCCFG_ARM926EJSD_NONSEQ (1 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Make non-sequential */
-# define SYSCREG_ABCCFG_ARM926EJSD_SPLIT4 (2 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_ARM926EJSD_SPLIT8 (3 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Split to 8-beat */
-# define SYSCREG_ABCCFG_ARM926EJSD_EXT8 (4 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Extend to 8-beat */
-# define SYSCREG_ABCCFG_ARM926EJSD_EXT16 (5 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Extend to 16-beat */
-# define SYSCREG_ABCCFG_ARM926EJSD_SPLIT4W (6 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_ARM926EJSD_EXT32 (7 << SYSCREG_ABCCFG_ARM926EJSD_SHIFT) /* extend to 32-beat */
-#define SYSCREG_ABCCFG_DMA_SHIFT (0) /* Bits 0-2: 2:0 DMA AHB bus bandwidth control */
-#define SYSCREG_ABCCFG_DMA_MASK (7 << SYSCREG_ABCCFG_DMA_SHIFT)
-# define SYSCREG_ABCCFG_DMA_NORMAL (0 << SYSCREG_ABCCFG_DMA_SHIFT) /* Normal mode */
-# define SYSCREG_ABCCFG_DMA_NONSEQ (1 << SYSCREG_ABCCFG_DMA_SHIFT) /* Make non-sequential */
-# define SYSCREG_ABCCFG_DMA_SPLIT4 (2 << SYSCREG_ABCCFG_DMA_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_DMA_SPLIT8 (3 << SYSCREG_ABCCFG_DMA_SHIFT) /* Split to 8-beat */
-# define SYSCREG_ABCCFG_DMA_EXT8 (4 << SYSCREG_ABCCFG_DMA_SHIFT) /* Extend to 8-beat */
-# define SYSCREG_ABCCFG_DMA_EXT16 (5 << SYSCREG_ABCCFG_DMA_SHIFT) /* Extend to 16-beat */
-# define SYSCREG_ABCCFG_DMA_SPLIT4W (6 << SYSCREG_ABCCFG_DMA_SHIFT) /* Split to 4-beat */
-# define SYSCREG_ABCCFG_DMA_EXT32 (7 << SYSCREG_ABCCFG_DMA_SHIFT) /* extend to 32-beat */
-
-/* SYSCREG_SDMMCCFG address 0x13002828 */
-
-#define SYSCREG_SDMMCCFG_CARDDETECT (1 << 1) /* Bit 1: Card detect signal */
-#define SYSCREG_SDMMCCFG_CARDWRITEPRT (1 << 0) /* Bit 0: Card write protect signal for SD cards */
-
-/* SYSCREG_MCIDELAYMODES address 0x1300282c */
-
-#define SYSCREG_MCIDELAYMODES_DELAYENABLE (1 << 4) /* Bit 4: Enable delay cells */
-#define SYSCREG_MCIDELAYMODES_DELAYCELLS_SHIFT (0) /* Bits 0-3: Number of delay cells needed */
-#define SYSCREG_MCIDELAYMODES_DELAYCELLS_MASK (15 << SYSCREG_MCIDELAYMODES_DELAYCELLS_SHIFT)
-
-/* USB configuration registers */
-/* USB_ATXPLLPDREG address 0x13002830 */
-
-#define SYSCREG_USB_ATXPLLPDREG_PWRDOWN (1 << 0) /* Bit 0: Powerdown */
-
-/* USB_OTGCFG address 0x13002834 */
-
-#define SYSCREG_USB_OTGCFG_VBUSPWRFAULT (1 << 3) /* Bit 3: Charge pump overcurrent */
-#define SYSCREG_USB_OTGCFG_DEVWAKEUP (1 << 2) /* Bit 2: External wakeup (device mode) */
-#define SYSCREG_USB_OTGCFG_HOSTWAKEUP (1 << 1) /* Bit 1: External wake-up (host mode) */
-
-/* USB_OTGPORTINDCTL address 0x1300 2838 */
-
-#define SYSCREG_USB_OTGPORTINDCTL_SHIFT (0) /* Bits 0-1: Status bits for USB connector LEDs */
-#define SYSCREG_USB_OTGPORTINDCTL_MASK (3 << SYSCREG_USB_OTGPORTINDCTL_SHIFT)
-# define SYSCREG_USB_OTGPORTINDCTL_OFF (0 << SYSCREG_USB_OTGPORTINDCTL_SHIFT) /* off */
-# define SYSCREG_USB_OTGPORTINDCTL_AMBER (1 << SYSCREG_USB_OTGPORTINDCTL_SHIFT) /* amber */
-# define SYSCREG_USB_OTGPORTINDCTL_GREEN (2 << SYSCREG_USB_OTGPORTINDCTL_SHIFT) /* green */
-
-/* USB_PLLNDEC address 0x13002840 */
-
-#define SYSCREG_USB_PLLNDEC_SHIFT (0) /* Bits 0-9: Pre-divider for the USB pll */
-#define SYSCREG_USB_PLLNDEC_MASK (0x3ff << SYSCREG_USB_PLLNDEC_SHIFT)
-
-/* USB_PLLMDEC address 0x13002844 */
-
-#define SYSCREG_USB_PLLMDEC_SHIFT (0) /* Bits 0-16: Feedback-divider for the USB pll */
-#define SYSCREG_USB_PLLMDEC_MASK (0x1ffff << SYSCREG_USB_PLLMDEC_SHIFT)
-
-/* USB_PLLPDEC address 0x13002848 */
-
-#define SYSCREG_USB_PLLPDEC_SHIFT (0) /* Bits 0-3: Feedback-divider for the USB pll */
-#define SYSCREG_USB_PLLPDEC_MASK (15 << SYSCREG_USB_PLLPDEC_SHIFT)
-
-/* USB_PLLSELR address 0x1300284c */
-
-#define SYSCREG_USB_PLLSELR_SHIFT (0) /* Bits 0-3: Bandwidth selection */
-#define SYSCREG_USB_PLLSELR_MASK (15 << SYSCREG_USB_PLLSELR_SHIFT)
-
-/* USB_PLLSELI address 0x13002850 */
-
-#define SYSCREG_USB_PLLSELI_SHIFT (0) /* Bits 0-3: Bandwidth selection */
-#define SYSCREG_USB_PLLSELI_MASK (15 << SYSCREG_USB_PLLSELI_SHIFT)
-
-/* USB_PLLSELP address 0x13002854 */
-
-#define SYSCREG_USB_PLLSELP_SHIFT (0) /* Bits 0-3: Bandwidth selection */
-#define SYSCREG_USB_PLLSELP_MASK (15 << SYSCREG_USB_PLLSELP_SHIFT)
-
-/* ISRAM/ISROM configuration registers */
-/* SYSCREG_ISRAM0_LATENCYCFG address 0x13002858 */
-
-#define SYSCREG_ISRAM0_LATENCYCFG_SHIFT (0) /* Bits 0-1: Number of waitstates */
-#define SYSCREG_ISRAM0_LATENCYCFG_MASK (3 << SYSCREG_ISRAM0_LATENCYCFG_SHIFT)
-
-/* SYSCREG_ISRAM1_LATENCYCFG address 0x1300285c */
-
-#define SYSCREG_ISRAM1_LATENCYCFG_SHIFT (0) /* Bits 0-1: Number of waitstates */
-#define SYSCREG_ISRAM1_LATENCYCFG_MASK (3 << SYSCREG_ISRAM1_LATENCYCFG_SHIFT)
-
-/* SYSCREG_ISROM_LATENCYCFG address 0x13002860 */
-
-#define SYSCREG_ISROM_LATENCYCFG_SHIFT (0) /* Bits 0-1: Number of waitstates */
-#define SYSCREG_ISROM_LATENCYCFG_MASK (3 << SYSCREG_ISROM_LATENCYCFG_SHIFT)
-
-/* MPMC configuration registers */
-/* SYSCREG_AHB_MPMC_MISC (address 0x13002864 */
-
-#define SYSCREG_MPMC_MISC_REL1CONFIG (1 << 8) /* Bit 8: Static memory address mode select */
-#define SYSCREG_MPMC_MISC_STCS1PB (1 << 7) /* Bit 7: Polarity of byte lane select for static memory CS1 */
-#define SYSCREG_MPMC_MISC_STCS1POL (1 << 4) /* Bit 4: Polarity of static memory CS1 */
-#define SYSCREG_MPMC_MISC_STCS0POL (1 << 3) /* Bit 3: Polarity of static memory CS0 */
-#define SYSCREG_MPMC_MISC_SREFREQ (1 << 0) /* Bit 0: Self refresh request */
-
-/* SYSCREG_MPMC_DELAYMODES address 0x13002868 */
-
-#define SYSCREG_MPMC_DELAYMODES_DEL1_SHIFT (12) /* Bits 12-17: Delay cells for MPMCCLKOUT */
-#define SYSCREG_MPMC_DELAYMODES_DEL1_MASK (63 << SYSCREG_MPMC_DELAYMODES_DEL1_SHIFT)
-#define SYSCREG_MPMC_DELAYMODES_DEL2_SHIFT (6) /* Bits 6-11: Delay cells between MPMCCLK and MPMCCLKDELAY */
-#define SYSCREG_MPMC_DELAYMODES_DEL2_MASK (63 << SYSCREG_MPMC_DELAYMODES_DEL2_SHIFT)
-#define SYSCREG_MPMC_DELAYMODES_DEL3_SHIFT (0) /* Bits 0-5: Delay cells between MPMCCLK and MPMCFBCLKIN */
-#define SYSCREG_MPMC_DELAYMODES_DEL3_MASK (63 << SYSCREG_MPMC_DELAYMODES_DEL3_SHIFT)
-
-/* SYSCREG_MPMC_WAITRD0 address 0x1300286c */
-
-#define SYSCREG_MPMC_WAITRD0_EXTRAOE (1 << 5) /* Bit 5: Enable the extra inactive OE cycle */
-#define SYSCREG_MPMC_WAITRD0_SHIFT (0) /* Bits 0-4: Value for MPMCStaticWaitRd0 */
-#define SYSCREG_MPMC_WAITRD0_MASK (31 << SYSCREG_MPMC_WAITRD0_SHIFT)
-
-/* SYSCREG_MPMC_WAITRD1 address 0x13002870 */
-
-#define SYSCREG_MPMC_WAITRD1_EXTRAOE (1 << 5) /* Bit 5: Enable the extra inactive OE cycle */
-#define SYSCREG_MPMC_WAITRD1_SHIFT (0) /* Bits 0-4: Value for MPMCStaticWaitRd1 */
-#define SYSCREG_MPMC_WAITRD1_MASK (31 << SYSCREG_MPMC_WAITRD1_SHIFT)
-
-/* SYSCREG_WIR_EBIMSINIT address 0x13002874 */
-
-#define SYSCREG_MPMC_WIREEBIMSZ_SHIFT (0) /* Bits 0-1: Memory width of CS1 */
-#define SYSCREG_MPMC_WIREEBIMSZ_MASK (3 << SYSCREG_MPMC_WIREEBIMSZ_SHIFT)
-
-/* MPMC_TESTMODE0 address 0x13002878 */
-
-#define SYSCREG_MPMC_TESTMODE0_EXTREFENABLE (1 << 12) /* Bit 13: External refresh of MPMC */
-#define SYSCREG_MPMC_TESTMODE0_EXTREFCNT_SHIFT (0) /* Bits 0-11: Period of external refresh */
-#define SYSCREG_MPMC_TESTMODE0_EXTREFCNT_MASK (0xfff << SYSCREG_MPMC_TESTMODE0_EXTREFCNT_SHIFT)
-
-/* MPMC_TESTMODE1 address 0x1300287c */
-
-#define SYSCREG_MPMC_TESTMODE1_HSENABLE_SHIFT (0) /* Bits 0-7: Allows AHB to run faster while refreshing */
-#define SYSCREG_MPMC_TESTMODE1_HSENABLE_MASK (0xff << SYSCREG_MPMC_TESTMODE1_HSENABLE_SHIFT)
-
-/* Miscellaneous system configuration registers, part 2 */
-/* AHB0EXTPRIO address 0x13002880 */
-
-#define SYSCREG_AHB0EXTPRIO_USBOTG (1 << 3) /* Bit 3: USBOTG has higher priority */
-#define SYSCREG_AHB0EXTPRIO_ARM926DATA (1 << 2) /* Bit 2: ARM926 Data has higher priority */
-#define SYSCREG_AHB0EXTPRIO_ARM926NSTR (1 << 1) /* Bit 1: ARM926 Instruction has higher priority */
-#define SYSCREG_AHB0EXTPRIO_DMA (1 << 0) /* Bit 0: DMA has higher priority */
-
-/* Pin multiplexing control registers */
-/* SYSCREG_MUX_LCDEBISEL address 0x13002890 */
-
-#define SYSCREG_MUX_LCDEBISEL_EBIMPMC (1 << 0) /* Bit 0: Selects between LCD and EBI/MPMC pins */
-
-/* SYSCREG_MUX_GPIOMCISEL address 0x13002894 */
-
-#define SYSCREG_MUX_GPIOMCISEL_MCI (1 << 0) /* Bit 0: Selects between GPIO and MCI pins */
-
-/* SYSCREG_MUX_NANDMCISEL address 0x13002898 */
-
-#define SYSCREG_MUX_NANDMCISEL_MCI (1 << 0) /* Bit 0: Selects between NAND and MCI pins */
-
-/* SYSCREG_MUX_UARTSPISEL address 0x1300289c */
-
-#define SYSCREG_MUX_UARTSPISEL_SPI (1 << 0) /* Bit 0: Selects between SPI and UART pins */
-
-/* SYSCREG_MUX_I2STXIPCMSEL address 0x130028a0 */
-
-#define SYSCREG_MUX_I2STXPCMSEL_PCM (1 << 0) /* Bit 0: Selects between I2STX_0 and IPINT_1 pins */
-
-/* Pad configuration registers */
-/* SYSCREG_PAD_padname addresses 0x130028a4 to 0x13002a28 */
-
-#define SYSCREG_PAD_P2 (1 << 1) /* Bit 1: The logic pin p2 of the pad */
-#define SYSCREG_PAD_P1 (1 << 0) /* Bit 0: The logic pin p1 of the pad */
-#define SYSCREG_PAD_PULLUP (0)
-#define SYSCREG_PAD_INPUT (SYSCREG_PAD_P2)
-#define SYSCREG_PAD_REPEATER (SYSCREG_PAD_P1)
-#define SYSCREG_PAD_WEAKPULLUP (SYSCREG_PAD_P1|SYSCREG_PAD_P2)
-
-/* SYSCREG_ESHCTRLSUP4 address 0x13002a2c */
-
-#define SYSCREG_PAD_ESHCTRLSUP4_LESS (1 << 0) /* Bit 0: Domain SUP4 less switching noise */
-
-/* SYSCREG_ESHCTRLSUP8 address 0x13002a2c */
-
-#define SYSCREG_PAD_ESHCTRLSUP8_LESS (1 << 0) /* Bit 0: Domain SUP8 switching less noise */
-/********************************************************************************************************
- * Public Types
- ********************************************************************************************************/
-
-/********************************************************************************************************
- * Public Data
- ********************************************************************************************************/
-
-/********************************************************************************************************
- * Public Functions
- ********************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_SYSCREG_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_timer.h b/nuttx/arch/arm/src/lpc313x/lpc313x_timer.h
deleted file mode 100755
index 528ea4f06..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_timer.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_timer.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_TIMER_H
-#define __ARCH_ARM_SRC_LPC313X_TIMER_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* TIMER register base address offset into the APB1 domain **************************************/
-
-#define LPC313X_TIMER0_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_TIMER0_OFFSET)
-#define LPC313X_TIMER0_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_TIMER0_OFFSET)
-
-#define LPC313X_TIMER1_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_TIMER1_OFFSET)
-#define LPC313X_TIMER1_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_TIMER1_OFFSET)
-
-#define LPC313X_TIMER2_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_TIMER2_OFFSET)
-#define LPC313X_TIMER2_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_TIMER2_OFFSET)
-
-#define LPC313X_TIMER3_VBASE (LPC313X_APB1_VADDR+LPC313X_APB1_TIMER3_OFFSET)
-#define LPC313X_TIMER3_PBASE (LPC313X_APB1_PADDR+LPC313X_APB1_TIMER3_OFFSET)
-
-/* TIMER register offsets (with respect to the TIMERn base) *************************************/
-
-#define LPC313X_TIMER_LOAD_OFFSET 0x00 /* Timer reload value */
-#define LPC313X_TIMER_VALUE_OFFSET 0x04 /* Current timer value */
-#define LPC313X_TIMER_CTRL_OFFSET 0x08 /* Timer nable/disable and pre-scale */
-#define LPC313X_TIMER_CLEAR_OFFSET 0x0c /* Clear timer interrupt */
-
-/* TIMER register (virtual) addresses ***********************************************************/
-
-#define LPC313X_TIMER0_LOAD (LPC313X_TIMER0_VBASE+LPC313X_TIMER_LOAD_OFFSET)
-#define LPC313X_TIMER0_VALUE (LPC313X_TIMER0_VBASE+LPC313X_TIMER_VALUE_OFFSET)
-#define LPC313X_TIMER0_CTRL (LPC313X_TIMER0_VBASE+LPC313X_TIMER_CTRL_OFFSET)
-#define LPC313X_TIMER0_CLEAR (LPC313X_TIMER0_VBASE+LPC313X_TIMER_CLEAR_OFFSET)
-
-#define LPC313X_TIMER1_LOAD (LPC313X_TIMER1_VBASE+LPC313X_TIMER_LOAD_OFFSET)
-#define LPC313X_TIMER1_VALUE (LPC313X_TIMER1_VBASE+LPC313X_TIMER_VALUE_OFFSET)
-#define LPC313X_TIMER1_CTRL (LPC313X_TIMER1_VBASE+LPC313X_TIMER_CTRL_OFFSET)
-#define LPC313X_TIMER1_CLEAR (LPC313X_TIMER1_VBASE+LPC313X_TIMER_CLEAR_OFFSET)
-
-#define LPC313X_TIMER2_LOAD (LPC313X_TIMER2_VBASE+LPC313X_TIMER_LOAD_OFFSET)
-#define LPC313X_TIMER2_VALUE (LPC313X_TIMER2_VBASE+LPC313X_TIMER_VALUE_OFFSET)
-#define LPC313X_TIMER2_CTRL (LPC313X_TIMER2_VBASE+LPC313X_TIMER_CTRL_OFFSET)
-#define LPC313X_TIMER2_CLEAR (LPC313X_TIMER2_VBASE+LPC313X_TIMER_CLEAR_OFFSET)
-
-#define LPC313X_TIMER3_LOAD (LPC313X_TIMER3_VBASE+LPC313X_TIMER_LOAD_OFFSET)
-#define LPC313X_TIMER3_VALUE (LPC313X_TIMER3_VBASE+LPC313X_TIMER_VALUE_OFFSET)
-#define LPC313X_TIMER3_CTRL (LPC313X_TIMER3_VBASE+LPC313X_TIMER_CTRL_OFFSET)
-#define LPC313X_TIMER3_CLEAR (LPC313X_TIMER3_VBASE+LPC313X_TIMER_CLEAR_OFFSET)
-
-/* TIMER register bit definitions ***************************************************************/
-
-/* Timer Control register TIMER0_CTRL, address 0x13008008 TIMER1_CTRL, address 0x13008408
- * TIMER2_CTRL, address 0x13008808 TIMER3_CTRL, adddress 0x13008c08
- */
-
-#define TIMER_CTRL_ENABLE (1 << 7) /* Bit 7: Timer enable */
-#define TIMER_CTRL_PERIODIC (1 << 6) /* Bit 6: Periodic timer mode */
-#define TIMER_CTRL_PRESCALE_SHIFT (2) /* Bits 2-3: Timer pre-scale */
-#define TIMER_CTRL_PRESCALE_MASK (3 << TIMER_CTRL_PRESCALE_SHIFT)
-# define TIMER_CTRL_PRESCALE_DIV1 (0 << TIMER_CTRL_PRESCALE_SHIFT) /* Divider=1 Stages=0 */
-# define TIMER_CTRL_PRESCALE_DIV16 (1 << TIMER_CTRL_PRESCALE_SHIFT) /* Divider=16 Stages4 */
-# define TIMER_CTRL_PRESCALE_DIV256 (2 << TIMER_CTRL_PRESCALE_SHIFT) /* Divider=256 Stages=8 */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_TIMER_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_timerisr.c b/nuttx/arch/arm/src/lpc313x/lpc313x_timerisr.c
deleted file mode 100755
index 4893924ec..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_timerisr.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
- * arch/arm/src/lpc313x/lpc313x_timerisr.c
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <time.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <arch/board/board.h>
-
-#include "clock_internal.h"
-#include "up_internal.h"
-#include "up_arch.h"
-
-#include "lpc313x_timer.h"
-#include "lpc313x_internal.h"
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-/****************************************************************************
- * Private Function Prototypes
- ****************************************************************************/
-
-/****************************************************************************
- * Global Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Function: up_timerisr
- *
- * Description:
- * The timer ISR will perform a variety of services for various portions
- * of the systems.
- *
- ****************************************************************************/
-
-int up_timerisr(int irq, uint32_t *regs)
-{
- /* Clear the lattched timer interrupt (Writing any value to the CLEAR register
- * clears the interrupt generated by the counter timer
- */
-
- putreg32(1, LPC313X_TIMER0_CLEAR);
-
- /* Process timer interrupt */
-
- sched_process_timer();
- return 0;
-}
-
-/****************************************************************************
- * Function: up_timerinit
- *
- * Description:
- * This function is called during start-up to initialize
- * the timer interrupt.
- *
- ****************************************************************************/
-
-void up_timerinit(void)
-{
- uint32_t regval;
- uint64_t load;
- uint64_t freq;
-
- /* Enable the timer0 system clock */
-
- lpc313x_enableclock(CLKID_TIMER0PCLK);
-
- /* Soft reset the timer0 module so that we start in a known state */
-
- lpc313x_softreset(RESETID_TIMER0RST);
-
- /* Set timer load register to 10mS (100Hz). First, get the frequency
- * of the timer0 module clock (in the AHB0APB1_BASE domain (2)).
- */
-
- freq = (uint64_t)lpc313x_clkfreq(CLKID_TIMER0PCLK, DOMAINID_AHB0APB1);
-
- /* If the clock is >1MHz, use pre-dividers */
-
- regval = getreg32(LPC313X_TIMER0_CTRL);
- if (freq > 1000000)
- {
- /* Use the divide by 16 pre-divider */
-
- regval &= ~TIMER_CTRL_PRESCALE_MASK;
- regval |= TIMER_CTRL_PRESCALE_DIV16;
- freq >>= 4;
- }
-
- load =((freq * (uint64_t)10000) / 1000000);
- putreg32((uint32_t)load, LPC313X_TIMER0_LOAD);
-
- /* Set periodic mode */
-
- regval |= TIMER_CTRL_PERIODIC;
- putreg32(regval, LPC313X_TIMER0_CTRL);
-
- /* Attach the timer interrupt vector */
-
- (void)irq_attach(LPC313X_IRQ_TMR0, (xcpt_t)up_timerisr);
-
- /* Clear any latched timer interrupt (Writing any value to the CLEAR register
- * clears the latched interrupt generated by the counter timer)
- */
-
- putreg32(1, LPC313X_TIMER0_CLEAR);
-
- /* Enable timers (starts counting) */
-
- regval |= TIMER_CTRL_ENABLE;
- putreg32(regval, LPC313X_TIMER0_CTRL);
-
- /* Enable timer match interrupts in the interrupt controller */
-
- up_enable_irq(LPC313X_IRQ_TMR0);
-}
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_uart.h b/nuttx/arch/arm/src/lpc313x/lpc313x_uart.h
deleted file mode 100755
index f0c7aee2a..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_uart.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_uart.h
- *
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_UART_H
-#define __ARCH_ARM_SRC_LPC313X_UART_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* UART register base address offset into the APB2 domain ***************************************/
-
-#define LPC313X_UART_VBASE (LPC313X_APB2_VSECTION+LPC313X_APB2_UART_OFFSET)
-#define LPC313X_UART_PBASE (LPC313X_APB2_PSECTION+LPC313X_APB2_UART_OFFSET)
-
-/* UART register offsets (with respect to the UART base) ****************************************/
-
-#define LPC313X_UART_RBR_OFFSET 0x000 /* Receiver Buffer Register */
-#define LPC313X_UART_THR_OFFSET 0x000 /* Transmitter Holding Register */
-#define LPC313X_UART_DLL_OFFSET 0x000 /* Divisor Latch LSB */
-#define LPC313X_UART_DLM_OFFSET 0x004 /* Divisor Latch MSB */
-#define LPC313X_UART_IER_OFFSET 0x004 /* Interrupt Enable Register */
-#define LPC313X_UART_IIR_OFFSET 0x008 /* Interrupt Identification Register */
-#define LPC313X_UART_FCR_OFFSET 0x008 /* FIFO Control Register */
-#define LPC313X_UART_LCR_OFFSET 0x00c /* Line Control Register */
-#define LPC313X_UART_MCR_OFFSET 0x010 /* Modem Control Register */
-#define LPC313X_UART_LSR_OFFSET 0x014 /* Line Status Register */
-#define LPC313X_UART_MSR_OFFSET 0x018 /* Modem status Register */
-#define LPC313X_UART_SCR_OFFSET 0x01c /* Scratch Register */
- /* 0x020: Reserved */
-#define LPC313X_UART_ICR_OFFSET 0x024 /* IrDA Control Register */
-#define LPC313X_UART_FDR_OFFSET 0x028 /* Fractional Divider Register */
- /* 0x02c: Reserved */
-#define LPC313X_UART_POP_OFFSET 0x030 /* NHP Pop Register */
-#define LPC313X_UART_MODE_OFFSET 0x034 /* NHP Mode Selection Register */
- /* 0x038-0xfd4: Reserved */
-#define LPC313X_UART_INTCE_OFFSET 0xfd8 /* Interrupt Clear Enable Register */
-#define LPC313X_UART_INTSE_OFFSET 0xfdc /* Interrupt Set Enable Register */
-#define LPC313X_UART_INTS_OFFSET 0xfe0 /* Interrupt Status Register */
-#define LPC313X_UART_INTE_OFFSET 0xfe4 /* Interrupt Enable Register */
-#define LPC313X_UART_INTCS_OFFSET 0xfe8 /* Interrupt Clear Status Register */
-#define LPC313X_UART_INTSS_OFFSET 0xfec /* Interrupt Set Status Register */
- /* 0xff0-0xff8: Reserved */
-
-/* UART register (virtual) addresses ************************************************************/
-
-#define LPC313X_UART_RBR (LPC313X_UART_VBASE+LPC313X_UART_RBR_OFFSET)
-#define LPC313X_UART_THR (LPC313X_UART_VBASE+LPC313X_UART_THR_OFFSET)
-#define LPC313X_UART_DLL (LPC313X_UART_VBASE+LPC313X_UART_DLL_OFFSET)
-#define LPC313X_UART_DLM (LPC313X_UART_VBASE+LPC313X_UART_DLM_OFFSET)
-#define LPC313X_UART_IER (LPC313X_UART_VBASE+LPC313X_UART_IER_OFFSET)
-#define LPC313X_UART_IIR (LPC313X_UART_VBASE+LPC313X_UART_IIR_OFFSET)
-#define LPC313X_UART_FCR (LPC313X_UART_VBASE+LPC313X_UART_FCR_OFFSET)
-#define LPC313X_UART_LCR (LPC313X_UART_VBASE+LPC313X_UART_LCR_OFFSET)
-#define LPC313X_UART_MCR (LPC313X_UART_VBASE+LPC313X_UART_MCR_OFFSET)
-#define LPC313X_UART_LSR (LPC313X_UART_VBASE+LPC313X_UART_LSR_OFFSET)
-#define LPC313X_UART_MSR (LPC313X_UART_VBASE+LPC313X_UART_MSR_OFFSET)
-#define LPC313X_UART_SCR (LPC313X_UART_VBASE+LPC313X_UART_SCR_OFFSET)
-#define LPC313X_UART_ICR (LPC313X_UART_VBASE+LPC313X_UART_ICR_OFFSET)
-#define LPC313X_UART_FDR (LPC313X_UART_VBASE+LPC313X_UART_FDR_OFFSET)
-#define LPC313X_UART_POP (LPC313X_UART_VBASE+LPC313X_UART_POP_OFFSET)
-#define LPC313X_UART_MODE (LPC313X_UART_VBASE+LPC313X_UART_MODE_OFFSET)
-#define LPC313X_UART_INTCE (LPC313X_UART_VBASE+LPC313X_UART_INTCE_OFFSET)
-#define LPC313X_UART_INTSE (LPC313X_UART_VBASE+LPC313X_UART_INTSE_OFFSET)
-#define LPC313X_UART_INTS (LPC313X_UART_VBASE+LPC313X_UART_INTS_OFFSET)
-#define LPC313X_UART_INTE (LPC313X_UART_VBASE+LPC313X_UART_INTE_OFFSET)
-#define LPC313X_UART_INTCS (LPC313X_UART_VBASE+LPC313X_UART_INTCS_OFFSET)
-#define LPC313X_UART_INTSS (LPC313X_UART_VBASE+LPC313X_UART_INTSS_OFFSET)
-
-/* UART register bit definitions ****************************************************************/
-/* Receive Buffer Register RBR, address 0x15001000 */
-
-#define UART_RBR_SHIFT (0) /* Bits 0-7 */
-#define UART_RBR_MASK (0xff << UART_RBR_SHIFT)
-
-/* Transmitter Holding Register THR, address 0x15001000 */
-
-#define UART_THR_SHIFT (0) /* Bits 0-7 */
-#define UART_THR_MASK (0xff << UART_THR_SHIFT)
-
-/* Divisor register Latch LSB DLL, address 0x15001000 */
-
-#define UART_DLL_SHIFT (0) /* Bits 0-7 */
-#define UART_DLL_MASK (0xff << UART_DLL_SHIFT)
-
-/* Divisor latch register MSB DLM, address 0x15001004 */
-
-#define UART_DLM_SHIFT (0) /* Bits 0-7 */
-#define UART_DLM_MASK (0xff << UART_DLM_SHIFT)
-
-/* Interrupt Enable Register IER, address 0x15001004 */
-
-#define UART_IER_CTSINTEN (1 << 7) /* Bit 7: Enable modem status interrupt on CTS transition */
-#define UART_IER_MSINTEN (1 << 3) /* Bit 3: Enable Modem Status interrupt */
-#define UART_IER_RLSINTEN (1 << 2) /* Bit 2: Receiver Line Status interrupt enable */
-#define UART_IER_THREINTEN (1 << 1) /* Bit 1: Transmitter Holding Register Empty interrupt enable */
-#define UART_IER_RDAINTEN (1 << 0) /* Bit 0: Receive Data Available interrupt enable */
-#define UART_IER_ALLINTS (0x1f)
-
-/* Interrupt Identification Register IIR, address 0x15001008 */
-
-#define UART_IIR_FIFOEN_SHIFT (6) /* Bits 6-7: Copies of FCR[0] */
-#define UART_IIR_FIFOEN_MASK (3 << UART_IIR_FIFOEN_SHIFT)
-#define UART_IIR_INTID_SHIFT (1) /* Bits 1-3: Interrupt identification */
-#define UART_IIR_INTID_MASK (7 << UART_IIR_INTID_SHIFT)
-# define UART_IIR_INTID_MS (0 << UART_IIR_INTID_SHIFT) /* Modem status */
-# define UART_IIR_INTID_THRE (1 << UART_IIR_INTID_SHIFT) /* Transmitter Holding Register empty */
-# define UART_IIR_INTID_RDA (2 << UART_IIR_INTID_SHIFT) /* Received Data Available */
-# define UART_IIR_INTID_RLS (3 << UART_IIR_INTID_SHIFT) /* Receiver Line Status */
-# define UART_IIR_INTID_TIMEOUT (6 << UART_IIR_INTID_SHIFT) /* Character time-out */
-#define UART_IIR_NOINT (1 << 0) /* Bit 0: Interrupt status, 1=no interrupt */
-
-/* FIFO Control Register FCR, address 0x15001008 */
-
-#define UART_FCR_RXTRIGLEVEL_SHIFT (6) /* Bits 6-7: 7:6 Receiver trigger level selection */
-#define UART_FCR_RXTRIGLEVEL_MASK (3 << UART_FCR_RXTRIGLEVEL_SHIFT)
-# define UART_FCR_RXTRIGLEVEL_1 (0 << UART_FCR_RXTRIGLEVEL_SHIFT) /* Rx trigger at character 1 */
-# define UART_FCR_RXTRIGLEVEL_16 (1 << UART_FCR_RXTRIGLEVEL_SHIFT) /* Rx trigger at character 16 */
-# define UART_FCR_RXTRIGLEVEL_32 (2 << UART_FCR_RXTRIGLEVEL_SHIFT) /* Rx trigger at character 32 */
-# define UART_FCR_RXTRIGLEVEL_56 (3 << UART_FCR_RXTRIGLEVEL_SHIFT) /* Rx trigger at character 56 */
-#define UART_FCR_DMAMODE (1 << 3) /* Bit 3: DMA mode select */
-#define UART_FCR_TXFIFORST (1 << 2) /* Bit 2: Transmitter FIFO reset */
-#define UART_FCR_RXFIFORST (1 << 1) /* Bit 1: Receiver FIFO reset */
-#define UART_FCR_FIFOENABLE (1 << 0) /* Bit 0: Transmit and receive FIFO enable */
-
-/* Line Control Register LCR, address 0x1500100c */
-
-#define UART_LCR_DLAB (1 << 7) /* Bit 7: Divisor Latch Access bit */
-#define UART_LCR_BRKCTRL (1 << 6) /* Bit 6: Break control bit */
-#define UART_LCR_PARSTICK (1 << 5) /* Bit 5: Enable sticky parity mode */
-#define UART_LCR_PAREVEN (1 << 4) /* Bit 4: Select even parity */
-#define UART_LCR_PAREN (1 << 3) /* Bit 3: Parity enable */
-#define UART_LCR_NSTOPBITS (1 << 2) /* Bit 2: Number of stop bits selector */
-#define UART_LCR_WDLENSEL_SHIFT (0) /* Bits 0-1: Word length selector */
-#define UART_LCR_WDLENSEL_MASK (3 << UART_LCR_WDLENSEL_SHIFT)
-# define UART_LCR_WDLENSEL_5BITS (0 << UART_LCR_WDLENSEL_SHIFT) /* Char length=5 stopbits=1 or 1.5*/
-# define UART_LCR_WDLENSEL_6BITS (1 << UART_LCR_WDLENSEL_SHIFT) /* Char length=6 stopbits=1 or 2 */
-# define UART_LCR_WDLENSEL_7BITS (2 << UART_LCR_WDLENSEL_SHIFT) /* Char length=7 stopbits=1 or 2 */
-# define UART_LCR_WDLENSEL_8BITS (3 << UART_LCR_WDLENSEL_SHIFT) /* Char length=8 stopbits=1 or 2 */
-
-/* Modem Control Register MCR, address 0x15001010 */
-
-#define UART_MCR_AUTOCTSEN (1 << 7) /* Bit 7: Auto-cts flow control enable */
-#define UART_MCR_AUTORTSEN (1 << 6) /* Bit 6: Auto-rts flow control enable */
-#define UART_MCR_LOOPEN (1 << 4) /* Bit 4: Loop-back mode enable */
-#define UART_MCR_RTS (1 << 1) /* Bit 1: Request To Send */
-
-/* Line Status Register LSR, address 0x15001014 */
-
-#define UART_LSR_RXER (1 << 7) /* Bit 7: Error in receiver FIFO */
-#define UART_LSR_TEMT (1 << 6) /* Bit 6: Transmitter empty (TSR and THR) */
-#define UART_LSR_THRE (1 << 5) /* Bit 5: Transmitter Holding Register empty */
-#define UART_LSR_BI (1 << 4) /* Bit 4: Break indication */
-#define UART_LSR_FE (1 << 3) /* Bit 3: Framing error */
-#define UART_LSR_PE (1 << 2) /* Bit 2: Parity error */
-#define UART_LSR_OE (1 << 1) /* Bit 1: Overrun error */
-#define UART_LSR_RDR (1 << 0) /* Bit 0: Read Data ready */
-
-/* Modem Status Register MSR, address 0x15001018 */
-
-#define UART_MSR_CTS (1 << 4) /* Bit 4: CTS is modem flow control signal */
-#define UART_MSR_DCTS (1 << 0) /* Bit 0: Delta Clear To Send */
-
-/* Scratch Register SCR, address 0x1500101c */
-
-#define UART_SCR_SCRVAL_SHIFT (0) /* Bits 0-7: Scratch Value */
-#define UART_SCR_SCRVAL_MASK (0xff << bb)
-
-/* IrDA Control Register ICR, address 0x15001024 */
-
-#define UART_ICR_PULSEDIV_SHIFT (3) /* Bits 3-5: Configures fixed pulse width mode */
-#define UART_ICR_PULSEDIV_MASK (7 << UART_ICR_PULSEDIV_SHIFT)
-#define UART_ICR_FIXPULSEEN (1 << 2) /* Bit 2: Enables IrDA fixed pulse width mode */
-#define UART_ICR_IRDAINV (1 << 1) /* Bit 1: Serial input is inverted */
-#define UART_ICR_IRDAEN (1 << 0) /* Bit 0: Enable IrDA */
-
-/* Fractional Divider Register FDR, address 0x15001028 */
-
-#define UART_FDR_MULVAL_SHIFT (4) /* Bits 4-7: Baud pre-scaler multiplier value */
-#define UART_FDR_MULVAL_MASK (15 << UART_FDR_MULVAL_SHIFT)
-#define UART_FDR_DIVADDVAL_SHIFT (0) /* Bits 0-3: Baud pre-scaler divisor value */
-#define UART_FDR_DIVADDVAL_MASK (15 << UART_FDR_DIVADDVAL_SHIFT)
-
-/* NHP POP Register POP, address 0x15001030 */
-
-#define UART_POP_POPRBR (1 << 0) /* Bit 0: Pop from RBR as if RBR read in non-NHP mode */
-
-/* Mode Selection Register MODE, 0x15001034 */
-
-#define UART_MODE_NHP (1 << 0) /* Bit 0: Enable UART NHP mode */
-
-/* Interrupt Clear Enable Register INTCE, address 0x15001fd8
- * Interrupt Set Enable Register INTSE, address 0x15001fdc
- * Interrupt Status Register INTS, address 0x15001fe0
- * Interrupt Enable Register INTE, address 0x15001fe4
- * Interrupt Clear Status Register INTCS, address 0x15001fe8
- * Interrupt Set Status Register INTSS, address 0x15001fec
- */
-
-#define UART_OEINT (1 << 15) /* Bit 15: Overrun Error Interrupt */
-#define UART_PEINT (1 << 14) /* Bit 14: Parity Error Interrupt (not INTSS) */
-#define UART_FEINT (1 << 13) /* Bit 13: Frame Error Interrupt (not INTSS) */
-#define UART_BIINT (1 << 12) /* Bit 12: Break Indication Interrupt (not INTSS) */
-#define UART_ABTOINT (1 << 9) /* Bit 9: Auto-Baud Time-Out Interrupt */
-#define UART_ABEOINT (1 << 8) /* Bit 8: End of Auto-Baud Interrupt */
-#define UART_RXDAINT (1 << 6) /* Bit 6: Receiver Data Available Interrupt (not INTSS) */
-#define UART_RXTOINT (1 << 5) /* Bit 5: Receiver Time-Out Interrupt (not INTCE) */
-#define UART_THREINT (1 << 4) /* Bit 4: Transmitter Holding Register Empty Interrupt */
-#define UART_DCTSINT (1 << 0) /* Bit 0: Delta Clear To Send Interrupt */
-
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_UART_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_usbdev.c b/nuttx/arch/arm/src/lpc313x/lpc313x_usbdev.c
deleted file mode 100755
index 5f8d48d3e..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_usbdev.c
+++ /dev/null
@@ -1,2653 +0,0 @@
-/*******************************************************************************
- * arch/arm/src/lpc313x/lpc313x_usbdev.c
- *
- * Author: Davide Hewson
- *
- * Part of the NuttX OS and based, in part, on the LPC2148 USB driver:
- *
- * Copyright (C) 2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- *******************************************************************************/
-
-/*******************************************************************************
- * Included Files
- *******************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/usb/usb.h>
-#include <nuttx/usb/usbdev.h>
-#include <nuttx/usb/usbdev_trace.h>
-
-#include <arch/irq.h>
-#include <arch/board/board.h>
-
-#include "chip.h"
-#include "up_arch.h"
-#include "up_internal.h"
-
-#include "lpc313x_usbotg.h"
-#include "lpc313x_evntrtr.h"
-#include "lpc313x_syscreg.h"
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/* Configuration ***************************************************************/
-
-#ifndef CONFIG_USBDEV_EP0_MAXSIZE
-# define CONFIG_USBDEV_EP0_MAXSIZE 64
-#endif
-
-#ifndef CONFIG_USBDEV_MAXPOWER
-# define CONFIG_USBDEV_MAXPOWER 100 /* mA */
-#endif
-
-/* Extremely detailed register debug that you would normally never want
- * enabled.
- */
-
-#undef CONFIG_LPC313X_USBDEV_REGDEBUG
-
-/* Enable reading SOF from interrupt handler vs. simply reading on demand. Probably
- * a bad idea... Unless there is some issue with sampling the SOF from hardware
- * asynchronously.
- */
-
-#ifdef CONFIG_LPC313X_USBDEV_FRAME_INTERRUPT
-# define USB_FRAME_INT USBDEV_USBINTR_SRE
-#else
-# define USB_FRAME_INT 0
-#endif
-
-#ifdef CONFIG_DEBUG
-# define USB_ERROR_INT USBDEV_USBINTR_UEE
-#else
-# define USB_ERROR_INT 0
-#endif
-
-/* Debug ***********************************************************************/
-
-/* Trace error codes */
-
-#define LPC313X_TRACEERR_ALLOCFAIL 0x0001
-#define LPC313X_TRACEERR_BADCLEARFEATURE 0x0002
-#define LPC313X_TRACEERR_BADDEVGETSTATUS 0x0003
-#define LPC313X_TRACEERR_BADEPNO 0x0004
-#define LPC313X_TRACEERR_BADEPGETSTATUS 0x0005
-#define LPC313X_TRACEERR_BADEPTYPE 0x0006
-#define LPC313X_TRACEERR_BADGETCONFIG 0x0007
-#define LPC313X_TRACEERR_BADGETSETDESC 0x0008
-#define LPC313X_TRACEERR_BADGETSTATUS 0x0009
-#define LPC313X_TRACEERR_BADSETADDRESS 0x000a
-#define LPC313X_TRACEERR_BADSETCONFIG 0x000b
-#define LPC313X_TRACEERR_BADSETFEATURE 0x000c
-#define LPC313X_TRACEERR_BINDFAILED 0x000d
-#define LPC313X_TRACEERR_DISPATCHSTALL 0x000e
-#define LPC313X_TRACEERR_DRIVER 0x000f
-#define LPC313X_TRACEERR_DRIVERREGISTERED 0x0010
-#define LPC313X_TRACEERR_EP0SETUPSTALLED 0x0011
-#define LPC313X_TRACEERR_EPINNULLPACKET 0x0012
-#define LPC313X_TRACEERR_EPOUTNULLPACKET 0x0013
-#define LPC313X_TRACEERR_INVALIDCTRLREQ 0x0014
-#define LPC313X_TRACEERR_INVALIDPARMS 0x0015
-#define LPC313X_TRACEERR_IRQREGISTRATION 0x0016
-#define LPC313X_TRACEERR_NOEP 0x0017
-#define LPC313X_TRACEERR_NOTCONFIGURED 0x0018
-#define LPC313X_TRACEERR_REQABORTED 0x0019
-
-/* Trace interrupt codes */
-
-#define LPC313X_TRACEINTID_USB 0x0001
-#define LPC313X_TRACEINTID_CLEARFEATURE 0x0002
-#define LPC313X_TRACEINTID_DEVGETSTATUS 0x0003
-#define LPC313X_TRACEINTID_DEVRESET 0x0004
-#define LPC313X_TRACEINTID_DISPATCH 0x0005
-#define LPC313X_TRACEINTID_EP0COMPLETE 0x0006
-#define LPC313X_TRACEINTID_EP0NAK 0x0007
-#define LPC313X_TRACEINTID_EP0SETUP 0x0008
-#define LPC313X_TRACEINTID_EPGETSTATUS 0x0009
-#define LPC313X_TRACEINTID_EPIN 0x000a
-#define LPC313X_TRACEINTID_EPINQEMPTY 0x000b
-#define LPC313X_TRACEINTID_EP0INSETADDRESS 0x000c
-#define LPC313X_TRACEINTID_EPOUT 0x000d
-#define LPC313X_TRACEINTID_EPOUTQEMPTY 0x000e
-#define LPC313X_TRACEINTID_EP0SETUPSETADDRESS 0x000f
-#define LPC313X_TRACEINTID_FRAME 0x0010
-#define LPC313X_TRACEINTID_GETCONFIG 0x0011
-#define LPC313X_TRACEINTID_GETSETDESC 0x0012
-#define LPC313X_TRACEINTID_GETSETIF 0x0013
-#define LPC313X_TRACEINTID_GETSTATUS 0x0014
-#define LPC313X_TRACEINTID_IFGETSTATUS 0x0015
-#define LPC313X_TRACEINTID_SETCONFIG 0x0016
-#define LPC313X_TRACEINTID_SETFEATURE 0x0017
-#define LPC313X_TRACEINTID_SUSPENDCHG 0x0018
-#define LPC313X_TRACEINTID_SYNCHFRAME 0x0019
-
-/* Hardware interface **********************************************************/
-
-/* This represents a Endpoint Transfer Descriptor - note these must be 32 byte aligned */
-struct lpc313x_dtd_s
-{
- volatile uint32_t nextdesc; /* Address of the next DMA descripto in RAM */
- volatile uint32_t config; /* Misc. bit encoded configuration information */
- uint32_t buffer0; /* Buffer start address */
- uint32_t buffer1; /* Buffer start address */
- uint32_t buffer2; /* Buffer start address */
- uint32_t buffer3; /* Buffer start address */
- uint32_t buffer4; /* Buffer start address */
- uint32_t xfer_len; /* Software only - transfer len that was queued */
-};
-
-/* DTD nextdesc field*/
-#define DTD_NEXTDESC_INVALID (1 << 0) /* Bit 0 : Next Descriptor Invalid */
-
-/* DTD config field */
-#define DTD_CONFIG_LENGTH(n) ((n) << 16) /* Bits 16-31 : Total bytes to transfer */
-#define DTD_CONFIG_IOC (1 << 15) /* Bit 15 : Interrupt on Completion */
-#define DTD_CONFIG_MULT_VARIABLE (0 << 10) /* Bits 10-11 : Number of packets executed per transacation descriptor (override) */
-#define DTD_CONFIG_MULT_NUM(n) ((n) << 10)
-#define DTD_CONFIG_ACTIVE (1 << 7) /* Bit 7 : Status Active */
-#define DTD_CONFIG_HALTED (1 << 6) /* Bit 6 : Status Halted */
-#define DTD_CONFIG_BUFFER_ERROR (1 << 5) /* Bit 6 : Status Buffer Error */
-#define DTD_CONFIG_TRANSACTION_ERROR (1 << 3) /* Bit 3 : Status Transaction Error */
-
-/* This represents a queue head - not these must be aligned to a 2048 byte boundary */
-struct lpc313x_dqh_s
-{
- uint32_t capability; /* Endpoint capability */
- uint32_t currdesc; /* Current dTD pointer */
- struct lpc313x_dtd_s overlay; /* DTD overlay */
- volatile uint32_t setup[2]; /* Set-up buffer */
- uint32_t gap[4]; /* align to 64 bytes */
-};
-
-/* DQH capability field */
-#define DQH_CAPABILITY_MULT_VARIABLE (0 << 30) /* Bits 30-31 : Number of packets executed per transaction descriptor */
-#define DQH_CAPABILITY_MULT_NUM(n) ((n) << 30)
-#define DQH_CAPABILITY_ZLT (1 << 29) /* Bit 29 : Zero Length Termination Select */
-#define DQH_CAPABILITY_MAX_PACKET(n) ((n) << 16) /* Bits 16-29 : Maximum packet size of associated endpoint (<1024) */
-#define DQH_CAPABILITY_IOS (1 << 15) /* Bit 15 : Interrupt on Setup */
-
-/* Endpoints ******************************************************************/
-
-/* Number of endpoints */
-#define LPC313X_NLOGENDPOINTS (4) /* ep0-3 */
-#define LPC313X_NPHYSENDPOINTS (8) /* x2 for IN and OUT */
-
-/* Odd physical endpoint numbers are IN; even are OUT */
-#define LPC313X_EPPHYIN(epphy) (((epphy)&1)!=0)
-#define LPC313X_EPPHYOUT(epphy) (((epphy)&1)==0)
-
-#define LPC313X_EPPHYIN2LOG(epphy) (((uint8_t)(epphy)>>1)|USB_DIR_IN)
-#define LPC313X_EPPHYOUT2LOG(epphy) (((uint8_t)(epphy)>>1)|USB_DIR_OUT)
-
-/* Endpoint 0 is special... */
-#define LPC313X_EP0_OUT (0)
-#define LPC313X_EP0_IN (1)
-
-/* Each endpoint has somewhat different characteristics */
-#define LPC313X_EPALLSET (0xff) /* All endpoints */
-#define LPC313X_EPOUTSET (0x55) /* Even phy endpoint numbers are OUT EPs */
-#define LPC313X_EPINSET (0xaa) /* Odd endpoint numbers are IN EPs */
-#define LPC313X_EPCTRLSET (0x03) /* EP0 IN/OUT are control endpoints */
-#define LPC313X_EPINTRSET (0xa8) /* Interrupt endpoints */
-#define LPC313X_EPBULKSET (0xfc) /* Bulk endpoints */
-#define LPC313X_EPISOCSET (0xfc) /* Isochronous endpoints */
-
-/* Maximum packet sizes for endpoints */
-#define LPC313X_EP0MAXPACKET (64) /* EP0 max packet size (1-64) */
-#define LPC313X_BULKMAXPACKET (512) /* Bulk endpoint max packet (8/16/32/64/512) */
-#define LPC313X_INTRMAXPACKET (1024) /* Interrupt endpoint max packet (1 to 1024) */
-#define LPC313X_ISOCMAXPACKET (512) /* Acutally 1..1023 */
-
-/* The address of the endpoint control register */
-#define LPC313X_USBDEV_ENDPTCTRL(epphy) (LPC313X_USBDEV_ENDPTCTRL0 + ((epphy)>>1)*4)
-
-/* Endpoint bit position in SETUPSTAT, PRIME, FLUSH, STAT, COMPLETE registers */
-#define LPC313X_ENDPTSHIFT(epphy) (LPC313X_EPPHYIN(epphy) ? (16 + ((epphy) >> 1)) : ((epphy) >> 1))
-#define LPC313X_ENDPTMASK(epphy) (1 << LPC313X_ENDPTSHIFT(epphy))
-#define LPC313X_ENDPTMASK_ALL 0x000f000f
-
-/* Request queue operations ****************************************************/
-
-#define lpc313x_rqempty(ep) ((ep)->head == NULL)
-#define lpc313x_rqpeek(ep) ((ep)->head)
-
-/*******************************************************************************
- * Private Types
- *******************************************************************************/
-
-/* A container for a request so that the request may be retained in a list */
-
-struct lpc313x_req_s
-{
- struct usbdev_req_s req; /* Standard USB request */
- struct lpc313x_req_s *flink; /* Supports a singly linked list */
-};
-
-/* This is the internal representation of an endpoint */
-
-struct lpc313x_ep_s
-{
- /* Common endpoint fields. This must be the first thing defined in the
- * structure so that it is possible to simply cast from struct usbdev_ep_s
- * to struct lpc313x_ep_s.
- */
-
- struct usbdev_ep_s ep; /* Standard endpoint structure */
-
- /* LPC313X-specific fields */
-
- struct lpc313x_usbdev_s *dev; /* Reference to private driver data */
- struct lpc313x_req_s *head; /* Request list for this endpoint */
- struct lpc313x_req_s *tail;
- uint8_t epphy; /* Physical EP address */
- uint8_t stalled:1; /* 1: Endpoint is stalled */
-};
-
-/* This structure retains the state of the USB device controller */
-
-struct lpc313x_usbdev_s
-{
- /* Common device fields. This must be the first thing defined in the
- * structure so that it is possible to simply cast from struct usbdev_s
- * to struct lpc313x_usbdev_s.
- */
-
- struct usbdev_s usbdev;
-
- /* The bound device class driver */
-
- struct usbdevclass_driver_s *driver;
-
- /* LPC313X-specific fields */
-
- uint8_t ep0state; /* State of certain EP0 operations */
- uint8_t ep0buf[64]; /* buffer for EP0 short transfers */
- uint8_t paddr; /* Address assigned by SETADDRESS */
- uint8_t stalled:1; /* 1: Protocol stalled */
- uint8_t selfpowered:1; /* 1: Device is self powered */
- uint8_t paddrset:1; /* 1: Peripheral addr has been set */
- uint8_t attached:1; /* 1: Host attached */
- uint32_t softprio; /* Bitset of high priority interrupts */
- uint32_t epavail; /* Bitset of available endpoints */
-#ifdef CONFIG_LPC313X_USBDEV_FRAME_INTERRUPT
- uint32_t sof; /* Last start-of-frame */
-#endif
-
- /* The endpoint list */
- struct lpc313x_ep_s eplist[LPC313X_NPHYSENDPOINTS];
-};
-
-#define EP0STATE_IDLE 0 /* Idle State, leave on receiving a setup packet or epsubmit */
-#define EP0STATE_SETUP_OUT 1 /* Setup Packet received - SET/CLEAR */
-#define EP0STATE_SETUP_IN 2 /* Setup Packet received - GET */
-#define EP0STATE_SHORTWRITE 3 /* Short write without a usb_request */
-#define EP0STATE_WAIT_NAK_OUT 4 /* Waiting for Host to illicit status phase (GET) */
-#define EP0STATE_WAIT_NAK_IN 5 /* Waiting for Host to illicit status phase (SET/CLEAR) */
-#define EP0STATE_WAIT_STATUS_OUT 6 /* Wait for status phase to complete */
-#define EP0STATE_WAIT_STATUS_IN 7 /* Wait for status phase to complete */
-#define EP0STATE_DATA_IN 8
-#define EP0STATE_DATA_OUT 9
-
-/*******************************************************************************
- * Private Function Prototypes
- *******************************************************************************/
-
-/* Register operations ********************************************************/
-
-#if defined(CONFIG_LPC313X_USBDEV_REGDEBUG) && defined(CONFIG_DEBUG)
-static uint32_t lpc313x_getreg(uint32_t addr);
-static void lpc313x_putreg(uint32_t val, uint32_t addr);
-#else
-# define lpc313x_getreg(addr) getreg32(addr)
-# define lpc313x_putreg(val,addr) putreg32(val,addr)
-#endif
-
-static inline void lpc313x_clrbits(uint32_t mask, uint32_t addr);
-static inline void lpc313x_setbits(uint32_t mask, uint32_t addr);
-static inline void lpc313x_chgbits(uint32_t mask, uint32_t val, uint32_t addr);
-
-/* Request queue operations ****************************************************/
-
-static FAR struct lpc313x_req_s *lpc313x_rqdequeue(FAR struct lpc313x_ep_s *privep);
-static bool lpc313x_rqenqueue(FAR struct lpc313x_ep_s *privep,
- FAR struct lpc313x_req_s *req);
-
-/* Low level data transfers and request operations *****************************/
-
-static inline void lpc313x_writedtd(struct lpc313x_dtd_s *dtd, const uint8_t *data, uint32_t nbytes);
-static inline void lpc313x_queuedtd(uint8_t epphy, struct lpc313x_dtd_s *dtd);
-static inline void lpc313x_ep0xfer(uint8_t epphy, uint8_t *data, uint32_t nbytes);
-static void lpc313x_readsetup(uint8_t epphy, struct usb_ctrlreq_s *ctrl);
-
-static inline void lpc313x_set_address(struct lpc313x_usbdev_s *priv, uint16_t address);
-
-static void lpc313x_flushep(struct lpc313x_ep_s *privep);
-
-static int lpc313x_progressep(struct lpc313x_ep_s *privep);
-static inline void lpc313x_abortrequest(struct lpc313x_ep_s *privep,
- struct lpc313x_req_s *privreq, int16_t result);
-static void lpc313x_reqcomplete(struct lpc313x_ep_s *privep, struct lpc313x_req_s *privreq, int16_t result);
-
-static void lpc313x_cancelrequests(struct lpc313x_ep_s *privep, int16_t status);
-
-/* Interrupt handling **********************************************************/
-static struct lpc313x_ep_s *lpc313x_epfindbyaddr(struct lpc313x_usbdev_s *priv, uint16_t eplog);
-static void lpc313x_dispatchrequest(struct lpc313x_usbdev_s *priv, const struct usb_ctrlreq_s *ctrl);
-static void lpc313x_ep0configure(struct lpc313x_usbdev_s *priv);
-static void lpc313x_usbreset(struct lpc313x_usbdev_s *priv);
-
-static inline void lpc313x_ep0state(struct lpc313x_usbdev_s *priv, uint16_t state);
-static void lpc313x_ep0setup(struct lpc313x_usbdev_s *priv);
-
-static void lpc313x_ep0complete(struct lpc313x_usbdev_s *priv, uint8_t epphy);
-static void lpc313x_ep0nak(struct lpc313x_usbdev_s *priv, uint8_t epphy);
-static bool lpc313x_epcomplete(struct lpc313x_usbdev_s *priv, uint8_t epphy);
-
-static int lpc313x_usbinterrupt(int irq, FAR void *context);
-
-/* Endpoint operations *********************************************************/
-
-/* USB device controller operations ********************************************/
-
-static int lpc313x_epconfigure(FAR struct usbdev_ep_s *ep,
- const struct usb_epdesc_s *desc, bool last);
-static int lpc313x_epdisable(FAR struct usbdev_ep_s *ep);
-static FAR struct usbdev_req_s *lpc313x_epallocreq(FAR struct usbdev_ep_s *ep);
-static void lpc313x_epfreereq(FAR struct usbdev_ep_s *ep,
- FAR struct usbdev_req_s *);
-static void *lpc313x_epallocbuffer(FAR struct usbdev_ep_s *ep, unsigned bytes);
-static void lpc313_epfreebuffer(FAR struct usbdev_ep_s *ep, FAR void *buf);
-static int lpc313x_epsubmit(FAR struct usbdev_ep_s *ep,
- struct usbdev_req_s *req);
-static int lpc313x_epcancel(FAR struct usbdev_ep_s *ep,
- struct usbdev_req_s *req);
-static int lpc313x_epstall(FAR struct usbdev_ep_s *ep, bool resume);
-
-static FAR struct usbdev_ep_s *lcp313x_allocep(FAR struct usbdev_s *dev,
- uint8_t epno, bool in, uint8_t eptype);
-static void lpc313x_freeep(FAR struct usbdev_s *dev, FAR struct usbdev_ep_s *ep);
-static int lpc313x_getframe(struct usbdev_s *dev);
-static int lpc313x_wakeup(struct usbdev_s *dev);
-static int lpc313x_selfpowered(struct usbdev_s *dev, bool selfpowered);
-static int lpc313x_pullup(struct usbdev_s *dev, bool enable);
-
-/*******************************************************************************
- * Private Data
- *******************************************************************************/
-
-/* Since there is only a single USB interface, all status information can be
- * be simply retained in a single global instance.
- */
-
-static struct lpc313x_usbdev_s g_usbdev;
-
-static struct lpc313x_dqh_s __attribute__((aligned(2048))) g_qh[LPC313X_NPHYSENDPOINTS];
-static struct lpc313x_dtd_s __attribute__((aligned(32))) g_td[LPC313X_NPHYSENDPOINTS];
-
-static const struct usbdev_epops_s g_epops =
-{
- .configure = lpc313x_epconfigure,
- .disable = lpc313x_epdisable,
- .allocreq = lpc313x_epallocreq,
- .freereq = lpc313x_epfreereq,
-#ifdef CONFIG_ARCH_USBDEV_DMA
- .allocbuffer = lpc313x_epallocbuffer,
- .freebuffer = lpc313x_epfreebuffer,
-#endif
- .submit = lpc313x_epsubmit,
- .cancel = lpc313x_epcancel,
- .stall = lpc313x_epstall,
-};
-
-static const struct usbdev_ops_s g_devops =
-{
- .allocep = lcp313x_allocep,
- .freeep = lpc313x_freeep,
- .getframe = lpc313x_getframe,
- .wakeup = lpc313x_wakeup,
- .selfpowered = lpc313x_selfpowered,
- .pullup = lpc313x_pullup,
-};
-
-/*******************************************************************************
- * Public Data
- *******************************************************************************/
-
-/*******************************************************************************
- * Private Functions
- *******************************************************************************/
-
-/*******************************************************************************
- * Name: lpc313x_getreg
- *
- * Description:
- * Get the contents of an LPC313x register
- *
- *******************************************************************************/
-
-#if defined(CONFIG_LPC313X_USBDEV_REGDEBUG) && defined(CONFIG_DEBUG)
-static uint32_t lpc313x_getreg(uint32_t addr)
-{
- static uint32_t prevaddr = 0;
- static uint32_t preval = 0;
- static uint32_t count = 0;
-
- /* Read the value from the register */
-
- uint32_t val = getreg32(addr);
-
- /* Is this the same value that we read from the same registe last time? Are
- * we polling the register? If so, suppress some of the output.
- */
-
- if (addr == prevaddr && val == preval)
- {
- if (count == 0xffffffff || ++count > 3)
- {
- if (count == 4)
- {
- lldbg("...\n");
- }
- return val;
- }
- }
-
- /* No this is a new address or value */
-
- else
- {
- /* Did we print "..." for the previous value? */
-
- if (count > 3)
- {
- /* Yes.. then show how many times the value repeated */
-
- lldbg("[repeats %d more times]\n", count-3);
- }
-
- /* Save the new address, value, and count */
-
- prevaddr = addr;
- preval = val;
- count = 1;
- }
-
- /* Show the register value read */
-
- lldbg("%08x->%08x\n", addr, val);
- return val;
-}
-#endif
-
-/*******************************************************************************
- * Name: lpc313x_putreg
- *
- * Description:
- * Set the contents of an LPC313x register to a value
- *
- *******************************************************************************/
-
-#if defined(CONFIG_LPC313X_USBDEV_REGDEBUG) && defined(CONFIG_DEBUG)
-static void lpc313x_putreg(uint32_t val, uint32_t addr)
-{
- /* Show the register value being written */
-
- lldbg("%08x<-%08x\n", addr, val);
-
- /* Write the value */
-
- putreg32(val, addr);
-}
-#endif
-
-/*******************************************************************************
- * Name: lpc313x_clrbits
- *
- * Description:
- * Clear bits in a register
- *
- *******************************************************************************/
-
-static inline void lpc313x_clrbits(uint32_t mask, uint32_t addr)
-{
- uint32_t reg = lpc313x_getreg(addr);
- reg &= ~mask;
- lpc313x_putreg(reg, addr);
-}
-
-/*******************************************************************************
- * Name: lpc313x_setbits
- *
- * Description:
- * Set bits in a register
- *
- *******************************************************************************/
-
-static inline void lpc313x_setbits(uint32_t mask, uint32_t addr)
-{
- uint32_t reg = lpc313x_getreg(addr);
- reg |= mask;
- lpc313x_putreg(reg, addr);
-}
-
-/*******************************************************************************
- * Name: lpc313x_chgbits
- *
- * Description:
- * Change bits in a register
- *
- *******************************************************************************/
-
-static inline void lpc313x_chgbits(uint32_t mask, uint32_t val, uint32_t addr)
-{
- uint32_t reg = lpc313x_getreg(addr);
- reg &= ~mask;
- reg |= val;
- lpc313x_putreg(reg, addr);
-}
-
-/*******************************************************************************
- * Name: lpc313x_rqdequeue
- *
- * Description:
- * Remove a request from an endpoint request queue
- *
- *******************************************************************************/
-
-static FAR struct lpc313x_req_s *lpc313x_rqdequeue(FAR struct lpc313x_ep_s *privep)
-{
- FAR struct lpc313x_req_s *ret = privep->head;
-
- if (ret)
- {
- privep->head = ret->flink;
- if (!privep->head)
- {
- privep->tail = NULL;
- }
-
- ret->flink = NULL;
- }
-
- return ret;
-}
-
-/*******************************************************************************
- * Name: lpc313x_rqenqueue
- *
- * Description:
- * Add a request from an endpoint request queue
- *
- *******************************************************************************/
-
-static bool lpc313x_rqenqueue(FAR struct lpc313x_ep_s *privep,
- FAR struct lpc313x_req_s *req)
-{
- bool is_empty = !privep->head;
-
- req->flink = NULL;
- if (is_empty)
- {
- privep->head = req;
- privep->tail = req;
- }
- else
- {
- privep->tail->flink = req;
- privep->tail = req;
- }
- return is_empty;
-}
-
-/*******************************************************************************
- * Name: lpc313x_writedtd
- *
- * Description:
- * Initialise a DTD to transfer the data
- *
- *******************************************************************************/
-
-static inline void lpc313x_writedtd(struct lpc313x_dtd_s *dtd, const uint8_t *data, uint32_t nbytes)
-{
- dtd->nextdesc = DTD_NEXTDESC_INVALID;
- dtd->config = DTD_CONFIG_LENGTH(nbytes) | DTD_CONFIG_IOC | DTD_CONFIG_ACTIVE;
- dtd->buffer0 = ((uint32_t) data);
- dtd->buffer1 = (((uint32_t) data) + 0x1000) & 0xfffff000;
- dtd->buffer2 = (((uint32_t) data) + 0x2000) & 0xfffff000;
- dtd->buffer3 = (((uint32_t) data) + 0x3000) & 0xfffff000;
- dtd->buffer4 = (((uint32_t) data) + 0x4000) & 0xfffff000;
- dtd->xfer_len = nbytes;
-}
-
-/*******************************************************************************
- * Name: lpc313x_queuedtd
- *
- * Description:
- * Add the DTD to the device list
- *
- *******************************************************************************/
-
-static void lpc313x_queuedtd(uint8_t epphy, struct lpc313x_dtd_s *dtd)
-{
- /* Queue the DTD onto the Endpoint */
- /* NOTE - this only works when no DTD is currently queued */
-
- g_qh[epphy].overlay.nextdesc = (uint32_t) dtd;
- g_qh[epphy].overlay.config &= ~(DTD_CONFIG_ACTIVE | DTD_CONFIG_HALTED);
-
- uint32_t bit = LPC313X_ENDPTMASK(epphy);
-
- lpc313x_setbits (bit, LPC313X_USBDEV_ENDPTPRIME);
-
- while (lpc313x_getreg (LPC313X_USBDEV_ENDPTPRIME) & bit)
- ;
-}
-
-/*******************************************************************************
- * Name: lpc313x_ep0xfer
- *
- * Description:
- * Schedule a short transfer for Endpoint 0 (IN or OUT)
- *
- *******************************************************************************/
-
-static inline void lpc313x_ep0xfer(uint8_t epphy, uint8_t *buf, uint32_t nbytes)
-{
- struct lpc313x_dtd_s *dtd = &g_td[epphy];
-
- lpc313x_writedtd(dtd, buf, nbytes);
-
- lpc313x_queuedtd(epphy, dtd);
-}
-
-/*******************************************************************************
- * Name: lpc313x_readsetup
- *
- * Description:
- * Read a Setup packet from the DTD.
- *
- *******************************************************************************/
-static void lpc313x_readsetup(uint8_t epphy, struct usb_ctrlreq_s *ctrl)
-{
- struct lpc313x_dqh_s *dqh = &g_qh[epphy];
- int i;
-
- do {
- /* Set the trip wire */
- lpc313x_setbits(USBDEV_USBCMD_SUTW, LPC313X_USBDEV_USBCMD);
-
- // copy the request...
- for (i = 0; i < 8; i++)
- ((uint8_t *) ctrl)[i] = ((uint8_t *) dqh->setup)[i];
-
- } while (!(lpc313x_getreg(LPC313X_USBDEV_USBCMD) & USBDEV_USBCMD_SUTW));
-
- /* Clear the trip wire */
- lpc313x_clrbits(USBDEV_USBCMD_SUTW, LPC313X_USBDEV_USBCMD);
-
- /* Clear the Setup Interrupt */
- lpc313x_putreg (LPC313X_ENDPTMASK(LPC313X_EP0_OUT), LPC313X_USBDEV_ENDPTSETUPSTAT);
-}
-
-/*******************************************************************************
- * Name: lpc313x_set_address
- *
- * Description:
- * Set the devices USB address
- *
- *******************************************************************************/
-
-static inline void lpc313x_set_address(struct lpc313x_usbdev_s *priv, uint16_t address)
-{
- priv->paddr = address;
- priv->paddrset = address != 0;
-
- lpc313x_chgbits(USBDEV_DEVICEADDR_MASK, priv->paddr << USBDEV_DEVICEADDR_SHIFT,
- LPC313X_USBDEV_DEVICEADDR);
-}
-
-/*******************************************************************************
- * Name: lpc313x_flushep
- *
- * Description:
- * Flush any primed descriptors from this ep
- *
- *******************************************************************************/
-
-static void lpc313x_flushep(struct lpc313x_ep_s *privep)
-{
- uint32_t mask = LPC313X_ENDPTMASK(privep->epphy);
- do {
- lpc313x_putreg (mask, LPC313X_USBDEV_ENDPTFLUSH);
- while ((lpc313x_getreg(LPC313X_USBDEV_ENDPTFLUSH) & mask) != 0)
- ;
- } while ((lpc313x_getreg(LPC313X_USBDEV_ENDPTSTATUS) & mask) != 0);
-}
-
-
-/*******************************************************************************
- * Name: lpc313x_progressep
- *
- * Description:
- * Progress the Endpoint by priming the first request into the queue head
- *
- *******************************************************************************/
-
-static int lpc313x_progressep(struct lpc313x_ep_s *privep)
-{
- struct lpc313x_dtd_s *dtd = &g_td[privep->epphy];
- struct lpc313x_req_s *privreq;
-
- /* Check the request from the head of the endpoint request queue */
-
- privreq = lpc313x_rqpeek(privep);
- if (!privreq)
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPINQEMPTY), 0);
- return OK;
- }
-
- /* Ignore any attempt to send a zero length packet */
-
- if (privreq->req.len == 0)
- {
- /* If the class driver is responding to a setup packet, then wait for the
- * host to illicit thr response */
-
- if (privep->epphy == LPC313X_EP0_IN && privep->dev->ep0state == EP0STATE_SETUP_OUT)
- lpc313x_ep0state (privep->dev, EP0STATE_WAIT_NAK_IN);
- else
- {
- if (LPC313X_EPPHYIN(privep->epphy))
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_EPINNULLPACKET), 0);
- else
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_EPOUTNULLPACKET), 0);
- }
-
- lpc313x_reqcomplete(privep, lpc313x_rqdequeue(privep), OK);
- return OK;
- }
-
- if (privep->epphy == LPC313X_EP0_IN)
- lpc313x_ep0state (privep->dev, EP0STATE_DATA_IN);
- else if (privep->epphy == LPC313X_EP0_OUT)
- lpc313x_ep0state (privep->dev, EP0STATE_DATA_OUT);
-
- int bytesleft = privreq->req.len - privreq->req.xfrd;
-
- if (LPC313X_EPPHYIN(privep->epphy))
- usbtrace(TRACE_WRITE(privep->epphy), privreq->req.xfrd);
- else
- usbtrace(TRACE_READ(privep->epphy), privreq->req.xfrd);
-
- /* Initialise the DTD to transfer the next chunk */
-
- lpc313x_writedtd (dtd, privreq->req.buf + privreq->req.xfrd, bytesleft);
-
- /* then queue onto the DQH */
- lpc313x_queuedtd(privep->epphy, dtd);
-
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_abortrequest
- *
- * Description:
- * Discard a request
- *
- *******************************************************************************/
-
-static inline void lpc313x_abortrequest(struct lpc313x_ep_s *privep,
- struct lpc313x_req_s *privreq,
- int16_t result)
-{
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_REQABORTED), (uint16_t)privep->epphy);
-
- /* Save the result in the request structure */
-
- privreq->req.result = result;
-
- /* Callback to the request completion handler */
-
- privreq->req.callback(&privep->ep, &privreq->req);
-}
-
-/*******************************************************************************
- * Name: lpc313x_reqcomplete
- *
- * Description:
- * Handle termination of the request at the head of the endpoint request queue.
- *
- *******************************************************************************/
-
-static void lpc313x_reqcomplete(struct lpc313x_ep_s *privep, struct lpc313x_req_s *privreq, int16_t result)
-{
- /* If endpoint 0, temporarily reflect the state of protocol stalled
- * in the callback.
- */
-
- bool stalled = privep->stalled;
- if (privep->epphy == LPC313X_EP0_IN)
- privep->stalled = privep->dev->stalled;
-
- /* Save the result in the request structure */
-
- privreq->req.result = result;
-
- /* Callback to the request completion handler */
-
- privreq->req.callback(&privep->ep, &privreq->req);
-
- /* Restore the stalled indication */
-
- privep->stalled = stalled;
-}
-
-/*******************************************************************************
- * Name: lpc313x_cancelrequests
- *
- * Description:
- * Cancel all pending requests for an endpoint
- *
- *******************************************************************************/
-
-static void lpc313x_cancelrequests(struct lpc313x_ep_s *privep, int16_t status)
-{
- if (!lpc313x_rqempty(privep))
- lpc313x_flushep(privep);
-
- while (!lpc313x_rqempty(privep))
- {
- // FIXME: the entry at the head should be sync'd with the DTD
- // FIXME: only report the error status if the transfer hasn't completed
- usbtrace(TRACE_COMPLETE(privep->epphy),
- (lpc313x_rqpeek(privep))->req.xfrd);
- lpc313x_reqcomplete(privep, lpc313x_rqdequeue(privep), status);
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_epfindbyaddr
- *
- * Description:
- * Find the physical endpoint structure corresponding to a logic endpoint
- * address
- *
- *******************************************************************************/
-
-static struct lpc313x_ep_s *lpc313x_epfindbyaddr(struct lpc313x_usbdev_s *priv,
- uint16_t eplog)
-{
- struct lpc313x_ep_s *privep;
- int i;
-
- /* Endpoint zero is a special case */
-
- if (USB_EPNO(eplog) == 0)
- {
- return &priv->eplist[0];
- }
-
- /* Handle the remaining */
-
- for (i = 1; i < LPC313X_NPHYSENDPOINTS; i++)
- {
- privep = &priv->eplist[i];
-
- /* Same logical endpoint number? (includes direction bit) */
-
- if (eplog == privep->ep.eplog)
- {
- /* Return endpoint found */
-
- return privep;
- }
- }
-
- /* Return endpoint not found */
-
- return NULL;
-}
-
-/*******************************************************************************
- * Name: lpc313x_dispatchrequest
- *
- * Description:
- * Provide unhandled setup actions to the class driver. This is logically part
- * of the USB interrupt handler.
- *
- *******************************************************************************/
-
-static void lpc313x_dispatchrequest(struct lpc313x_usbdev_s *priv,
- const struct usb_ctrlreq_s *ctrl)
-{
- int ret = -EIO;
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_DISPATCH), 0);
- if (priv->driver)
- {
- /* Forward to the control request to the class driver implementation */
-
- ret = CLASS_SETUP(priv->driver, &priv->usbdev, ctrl);
- }
-
- if (ret < 0)
- {
- /* Stall on failure */
-
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_DISPATCHSTALL), 0);
- priv->stalled = true;
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_ep0configure
- *
- * Description:
- * Reset Usb engine
- *
- *******************************************************************************/
-
-static void lpc313x_ep0configure(struct lpc313x_usbdev_s *priv)
-{
- /* Enable ep0 IN and ep0 OUT */
- g_qh[LPC313X_EP0_OUT].capability = (DQH_CAPABILITY_MAX_PACKET(CONFIG_USBDEV_EP0_MAXSIZE) |
- DQH_CAPABILITY_IOS |
- DQH_CAPABILITY_ZLT);
-
- g_qh[LPC313X_EP0_IN ].capability = (DQH_CAPABILITY_MAX_PACKET(CONFIG_USBDEV_EP0_MAXSIZE) |
- DQH_CAPABILITY_IOS |
- DQH_CAPABILITY_ZLT);
-
- g_qh[LPC313X_EP0_OUT].currdesc = DTD_NEXTDESC_INVALID;
- g_qh[LPC313X_EP0_IN ].currdesc = DTD_NEXTDESC_INVALID;
-
- /* Enable EP0 */
- lpc313x_setbits (USBDEV_ENDPTCTRL0_RXE | USBDEV_ENDPTCTRL0_TXE, LPC313X_USBDEV_ENDPTCTRL0);
-}
-
-/*******************************************************************************
- * Name: lpc313x_usbreset
- *
- * Description:
- * Reset Usb engine
- *
- *******************************************************************************/
-
-static void lpc313x_usbreset(struct lpc313x_usbdev_s *priv)
-{
- int epphy;
-
- /* Disable all endpoints */
-
- lpc313x_clrbits (USBDEV_ENDPTCTRL_RXE | USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL0);
- lpc313x_clrbits (USBDEV_ENDPTCTRL_RXE | USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL1);
- lpc313x_clrbits (USBDEV_ENDPTCTRL_RXE | USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL2);
- lpc313x_clrbits (USBDEV_ENDPTCTRL_RXE | USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL3);
-
- /* Clear all pending interrupts */
-
- lpc313x_putreg (lpc313x_getreg(LPC313X_USBDEV_ENDPTNAK), LPC313X_USBDEV_ENDPTNAK);
- lpc313x_putreg (lpc313x_getreg(LPC313X_USBDEV_ENDPTSETUPSTAT), LPC313X_USBDEV_ENDPTSETUPSTAT);
- lpc313x_putreg (lpc313x_getreg(LPC313X_USBDEV_ENDPTCOMPLETE), LPC313X_USBDEV_ENDPTCOMPLETE);
-
- /* Wait for all prime operations to have completed and then flush all DTDs */
- while (lpc313x_getreg (LPC313X_USBDEV_ENDPTPRIME) != 0)
- ;
- lpc313x_putreg (LPC313X_ENDPTMASK_ALL, LPC313X_USBDEV_ENDPTFLUSH);
- while (lpc313x_getreg (LPC313X_USBDEV_ENDPTFLUSH))
- ;
-
- /* Reset endpoints */
- for (epphy = 0; epphy < LPC313X_NPHYSENDPOINTS; epphy++)
- {
- struct lpc313x_ep_s *privep = &priv->eplist[epphy];
-
- lpc313x_cancelrequests (privep, -ESHUTDOWN);
-
- /* Reset endpoint status */
- privep->stalled = false;
- }
-
- /* Tell the class driver that we are disconnected. The class
- * driver should then accept any new configurations. */
-
- if (priv->driver)
- CLASS_DISCONNECT(priv->driver, &priv->usbdev);
-
- /* Set the interrupt Threshold control interval to 0 */
- lpc313x_chgbits(USBDEV_USBCMD_ITC_MASK, USBDEV_USBCMD_ITCIMME, LPC313X_USBDEV_USBCMD);
-
- /* Zero out the Endpoint queue heads */
- memset ((void *) g_qh, 0, sizeof (g_qh));
- memset ((void *) g_td, 0, sizeof (g_td));
-
- /* Set USB address to 0 */
- lpc313x_set_address (priv, 0);
-
- /* Initialise the Enpoint List Address */
- lpc313x_putreg ((uint32_t)g_qh, LPC313X_USBDEV_ENDPOINTLIST);
-
- /* EndPoint 0 initialization */
- lpc313x_ep0configure(priv);
-
- /* Enable Device interrupts */
- lpc313x_putreg(USB_FRAME_INT | USB_ERROR_INT |
- USBDEV_USBINTR_NAKE | USBDEV_USBINTR_SLE | USBDEV_USBINTR_URE | USBDEV_USBINTR_PCE | USBDEV_USBINTR_UE,
- LPC313X_USBDEV_USBINTR);
-}
-
-/*******************************************************************************
- * Name: lpc313x_setstate
- *
- * Description:
- * Sets the EP0 state and manages the NAK interrupts
- *
- *******************************************************************************/
-
-static inline void lpc313x_ep0state(struct lpc313x_usbdev_s *priv, uint16_t state)
-{
- priv->ep0state = state;
-
- switch (state)
- {
- case EP0STATE_WAIT_NAK_IN:
- lpc313x_putreg (LPC313X_ENDPTMASK(LPC313X_EP0_IN), LPC313X_USBDEV_ENDPTNAKEN);
- break;
- case EP0STATE_WAIT_NAK_OUT:
- lpc313x_putreg (LPC313X_ENDPTMASK(LPC313X_EP0_OUT), LPC313X_USBDEV_ENDPTNAKEN);
- break;
- default:
- lpc313x_putreg(0, LPC313X_USBDEV_ENDPTNAKEN);
- break;
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_ep0setup
- *
- * Description:
- * USB Ctrl EP Setup Event. This is logically part of the USB interrupt
- * handler. This event occurs when a setup packet is receive on EP0 OUT.
- *
- *******************************************************************************/
-
-static inline void lpc313x_ep0setup(struct lpc313x_usbdev_s *priv)
-{
- struct lpc313x_ep_s *privep;
- struct usb_ctrlreq_s ctrl;
- uint16_t value;
- uint16_t index;
- uint16_t len;
-
- /* Terminate any pending requests - since all DTDs will have been retired
- * because of the setup packet */
-
- lpc313x_cancelrequests(&priv->eplist[LPC313X_EP0_OUT], -EPROTO);
- lpc313x_cancelrequests(&priv->eplist[LPC313X_EP0_IN], -EPROTO);
-
- /* Assume NOT stalled */
-
- priv->eplist[LPC313X_EP0_OUT].stalled = false;
- priv->eplist[LPC313X_EP0_IN].stalled = false;
- priv->stalled = false;
-
- /* Read EP0 setup data */
- lpc313x_readsetup(LPC313X_EP0_OUT, &ctrl);
-
- /* Starting a control request - update state */
- lpc313x_ep0state (priv, (ctrl.type & USB_REQ_DIR_IN) ? EP0STATE_SETUP_IN : EP0STATE_SETUP_OUT);
-
- /* And extract the little-endian 16-bit values to host order */
- value = GETUINT16(ctrl.value);
- index = GETUINT16(ctrl.index);
- len = GETUINT16(ctrl.len);
-
- ullvdbg("type=%02x req=%02x value=%04x index=%04x len=%04x\n",
- ctrl.type, ctrl.req, value, index, len);
-
- /* Dispatch any non-standard requests */
- if ((ctrl.type & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_STANDARD)
- lpc313x_dispatchrequest(priv, &ctrl);
- else
- {
- /* Handle standard request. Pick off the things of interest to the USB
- * device controller driver; pass what is left to the class driver */
- switch (ctrl.req)
- {
- case USB_REQ_GETSTATUS:
- {
- /* type: device-to-host; recipient = device, interface, endpoint
- * value: 0
- * index: zero interface endpoint
- * len: 2; data = status
- */
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_GETSTATUS), 0);
- if (!priv->paddrset || len != 2 ||
- (ctrl.type & USB_REQ_DIR_IN) == 0 || value != 0)
- {
- priv->stalled = true;
- }
- else
- {
- switch (ctrl.type & USB_REQ_RECIPIENT_MASK)
- {
- case USB_REQ_RECIPIENT_ENDPOINT:
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPGETSTATUS), 0);
- privep = lpc313x_epfindbyaddr(priv, index);
- if (!privep)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADEPGETSTATUS), 0);
- priv->stalled = true;
- }
- else
- {
- if (privep->stalled)
- priv->ep0buf[0] = 1; /* Stalled */
- else
- priv->ep0buf[0] = 0; /* Not stalled */
- priv->ep0buf[1] = 0;
-
- lpc313x_ep0xfer (LPC313X_EP0_IN, priv->ep0buf, 2);
- lpc313x_ep0state (priv, EP0STATE_SHORTWRITE);
- }
- }
- break;
-
- case USB_REQ_RECIPIENT_DEVICE:
- {
- if (index == 0)
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_DEVGETSTATUS), 0);
-
- /* Features: Remote Wakeup=YES; selfpowered=? */
-
- priv->ep0buf[0] = (priv->selfpowered << USB_FEATURE_SELFPOWERED) |
- (1 << USB_FEATURE_REMOTEWAKEUP);
- priv->ep0buf[1] = 0;
-
- lpc313x_ep0xfer(LPC313X_EP0_IN, priv->ep0buf, 2);
- lpc313x_ep0state (priv, EP0STATE_SHORTWRITE);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADDEVGETSTATUS), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_RECIPIENT_INTERFACE:
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_IFGETSTATUS), 0);
- priv->ep0buf[0] = 0;
- priv->ep0buf[1] = 0;
-
- lpc313x_ep0xfer(LPC313X_EP0_IN, priv->ep0buf, 2);
- lpc313x_ep0state (priv, EP0STATE_SHORTWRITE);
- }
- break;
-
- default:
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADGETSTATUS), 0);
- priv->stalled = true;
- }
- break;
- }
- }
- }
- break;
-
- case USB_REQ_CLEARFEATURE:
- {
- /* type: host-to-device; recipient = device, interface or endpoint
- * value: feature selector
- * index: zero interface endpoint;
- * len: zero, data = none
- */
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_CLEARFEATURE), 0);
- if ((ctrl.type & USB_REQ_RECIPIENT_MASK) != USB_REQ_RECIPIENT_ENDPOINT)
- {
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- else if (priv->paddrset != 0 && value == USB_FEATURE_ENDPOINTHALT && len == 0 &&
- (privep = lpc313x_epfindbyaddr(priv, index)) != NULL)
- {
- lpc313x_epstall(&privep->ep, true);
-
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_IN);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADCLEARFEATURE), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_SETFEATURE:
- {
- /* type: host-to-device; recipient = device, interface, endpoint
- * value: feature selector
- * index: zero interface endpoint;
- * len: 0; data = none
- */
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_SETFEATURE), 0);
- if (((ctrl.type & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE) &&
- value == USB_FEATURE_TESTMODE)
- {
- ullvdbg("test mode: %d\n", index);
- }
- else if ((ctrl.type & USB_REQ_RECIPIENT_MASK) != USB_REQ_RECIPIENT_ENDPOINT)
- {
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- else if (priv->paddrset != 0 && value == USB_FEATURE_ENDPOINTHALT && len == 0 &&
- (privep = lpc313x_epfindbyaddr(priv, index)) != NULL)
- {
- lpc313x_epstall(&privep->ep, false);
-
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_IN);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADSETFEATURE), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_SETADDRESS:
- {
- /* type: host-to-device; recipient = device
- * value: device address
- * index: 0
- * len: 0; data = none
- */
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EP0SETUPSETADDRESS), value);
- if ((ctrl.type & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE &&
- index == 0 && len == 0 && value < 128)
- {
- /* Save the address. We cannot actually change to the next address until
- * the completion of the status phase. */
-
- priv->paddr = ctrl.value[0];
- priv->paddrset = false;
-
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_IN);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADSETADDRESS), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_GETDESCRIPTOR:
- /* type: device-to-host; recipient = device
- * value: descriptor type and index
- * index: 0 or language ID;
- * len: descriptor len; data = descriptor
- */
- case USB_REQ_SETDESCRIPTOR:
- /* type: host-to-device; recipient = device
- * value: descriptor type and index
- * index: 0 or language ID;
- * len: descriptor len; data = descriptor
- */
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_GETSETDESC), 0);
- if ((ctrl.type & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE)
- {
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADGETSETDESC), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_GETCONFIGURATION:
- /* type: device-to-host; recipient = device
- * value: 0;
- * index: 0;
- * len: 1; data = configuration value
- */
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_GETCONFIG), 0);
- if (priv->paddrset && (ctrl.type & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE &&
- value == 0 && index == 0 && len == 1)
- {
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADGETCONFIG), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_SETCONFIGURATION:
- /* type: host-to-device; recipient = device
- * value: configuration value
- * index: 0;
- * len: 0; data = none
- */
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_SETCONFIG), 0);
- if ((ctrl.type & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE &&
- index == 0 && len == 0)
- {
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- else
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADSETCONFIG), 0);
- priv->stalled = true;
- }
- }
- break;
-
- case USB_REQ_GETINTERFACE:
- /* type: device-to-host; recipient = interface
- * value: 0
- * index: interface;
- * len: 1; data = alt interface
- */
- case USB_REQ_SETINTERFACE:
- /* type: host-to-device; recipient = interface
- * value: alternate setting
- * index: interface;
- * len: 0; data = none
- */
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_GETSETIF), 0);
- lpc313x_dispatchrequest(priv, &ctrl);
- }
- break;
-
- case USB_REQ_SYNCHFRAME:
- /* type: device-to-host; recipient = endpoint
- * value: 0
- * index: endpoint;
- * len: 2; data = frame number
- */
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_SYNCHFRAME), 0);
- }
- break;
-
- default:
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDCTRLREQ), 0);
- priv->stalled = true;
- }
- break;
- }
- }
-
- if (priv->stalled)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_EP0SETUPSTALLED), priv->ep0state);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_IN].ep, false);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_OUT].ep, false);
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_ep0complete
- *
- * Description:
- * Transfer complete handler for Endpoint 0
- *
- *******************************************************************************/
-
-static void lpc313x_ep0complete(struct lpc313x_usbdev_s *priv, uint8_t epphy)
-{
- struct lpc313x_ep_s *privep = &priv->eplist[epphy];
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EP0COMPLETE), (uint16_t)priv->ep0state);
-
- switch (priv->ep0state)
- {
- case EP0STATE_DATA_IN:
- if (lpc313x_rqempty(privep))
- return;
-
- if (lpc313x_epcomplete (priv, epphy))
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_OUT);
- break;
-
- case EP0STATE_DATA_OUT:
- if (lpc313x_rqempty(privep))
- return;
-
- if (lpc313x_epcomplete (priv, epphy))
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_IN);
- break;
-
- case EP0STATE_SHORTWRITE:
- lpc313x_ep0state (priv, EP0STATE_WAIT_NAK_OUT);
- break;
-
- case EP0STATE_WAIT_STATUS_IN:
- lpc313x_ep0state (priv, EP0STATE_IDLE);
-
- /* If we've received a SETADDRESS packet, then we set the address
- * now that the status phase has completed */
- if (! priv->paddrset && priv->paddr != 0)
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EP0INSETADDRESS), (uint16_t)priv->paddr);
- lpc313x_set_address (priv, priv->paddr);
- }
- break;
-
- case EP0STATE_WAIT_STATUS_OUT:
- lpc313x_ep0state (priv, EP0STATE_IDLE);
- break;
-
- default:
-#ifdef CONFIG_DEBUG
- DEBUGASSERT(priv->ep0state != EP0STATE_DATA_IN &&
- priv->ep0state != EP0STATE_DATA_OUT &&
- priv->ep0state != EP0STATE_SHORTWRITE &&
- priv->ep0state != EP0STATE_WAIT_STATUS_IN &&
- priv->ep0state != EP0STATE_WAIT_STATUS_OUT);
-#endif
- priv->stalled = true;
- break;
- }
-
- if (priv->stalled)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_EP0SETUPSTALLED), priv->ep0state);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_IN].ep, false);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_OUT].ep, false);
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_ep0nak
- *
- * Description:
- * Handle a NAK interrupt on EP0
- *
- *******************************************************************************/
-
-static void lpc313x_ep0nak(struct lpc313x_usbdev_s *priv, uint8_t epphy)
-{
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EP0NAK), (uint16_t)priv->ep0state);
-
- switch (priv->ep0state)
- {
- case EP0STATE_WAIT_NAK_IN:
- lpc313x_ep0xfer (LPC313X_EP0_IN, NULL, 0);
- lpc313x_ep0state (priv, EP0STATE_WAIT_STATUS_IN);
- break;
- case EP0STATE_WAIT_NAK_OUT:
- lpc313x_ep0xfer (LPC313X_EP0_OUT, NULL, 0);
- lpc313x_ep0state (priv, EP0STATE_WAIT_STATUS_OUT);
- break;
- default:
-#ifdef CONFIG_DEBUG
- DEBUGASSERT(priv->ep0state != EP0STATE_WAIT_NAK_IN &&
- priv->ep0state != EP0STATE_WAIT_NAK_OUT);
-#endif
- priv->stalled = true;
- break;
- }
- if (priv->stalled)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_EP0SETUPSTALLED), priv->ep0state);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_IN].ep, false);
- lpc313x_epstall(&priv->eplist[LPC313X_EP0_OUT].ep, false);
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_epcomplete
- *
- * Description:
- * Transfer complete handler for Endpoints other than 0
- * returns whether the request at the head has completed
- *
- *******************************************************************************/
-
-bool
-lpc313x_epcomplete(struct lpc313x_usbdev_s *priv, uint8_t epphy)
-{
- struct lpc313x_ep_s *privep = &priv->eplist[epphy];
- struct lpc313x_req_s *privreq = privep->head;
- struct lpc313x_dtd_s *dtd = &g_td[epphy];
-
- if (privreq == NULL) /* This shouldn't really happen */
- {
- if (LPC313X_EPPHYOUT(privep->epphy))
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPINQEMPTY), 0);
- else
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPOUTQEMPTY), 0);
- return true;
- }
-
- int xfrd = dtd->xfer_len - (dtd->config >> 16);
-
- privreq->req.xfrd += xfrd;
-
- bool complete = true;
- if (LPC313X_EPPHYOUT(privep->epphy))
- {
- /* read(OUT) completes when request filled, or a short transfer is received */
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPIN), complete);
- }
- else
- {
- /* write(IN) completes when request finished, unless we need to terminate with a ZLP */
-
- bool need_zlp = (xfrd == privep->ep.maxpacket) && ((privreq->req.flags & USBDEV_REQFLAGS_NULLPKT) != 0);
-
- complete = (privreq->req.xfrd >= privreq->req.len && !need_zlp);
-
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EPOUT), complete);
- }
-
- /* If the transfer is complete, then dequeue and progress any further queued requests */
-
- if (complete)
- {
- privreq = lpc313x_rqdequeue (privep);
- }
-
- if (!lpc313x_rqempty(privep))
- {
- lpc313x_progressep(privep);
- }
-
- /* Now it's safe to call the completion callback as it may well submit a new request */
-
- if (complete)
- {
- usbtrace(TRACE_COMPLETE(privep->epphy), privreq->req.xfrd);
- lpc313x_reqcomplete(privep, privreq, OK);
- }
-
- return complete;
-}
-
-
-/*******************************************************************************
- * Name: lpc313x_usbinterrupt
- *
- * Description:
- * USB interrupt handler
- *
- *******************************************************************************/
-
-static int lpc313x_usbinterrupt(int irq, FAR void *context)
-{
- struct lpc313x_usbdev_s *priv = &g_usbdev;
- uint32_t disr, portsc1, n;
-
- usbtrace(TRACE_INTENTRY(LPC313X_TRACEINTID_USB), 0);
-
- /* Read the interrupts and then clear them */
- disr = lpc313x_getreg(LPC313X_USBDEV_USBSTS);
- lpc313x_putreg(disr, LPC313X_USBDEV_USBSTS);
-
- if (disr & USBDEV_USBSTS_URI)
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_DEVRESET),0);
-
- lpc313x_usbreset(priv);
-
- usbtrace(TRACE_INTEXIT(LPC313X_TRACEINTID_USB), 0);
- return OK;
- }
-
- if (disr & USBDEV_USBSTS_SLI)
- {
- // FIXME: what do we need to do here...
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_SUSPENDCHG),0);
- }
-
- if (disr & USBDEV_USBSTS_PCI)
- {
- portsc1 = lpc313x_getreg(LPC313X_USBDEV_PORTSC1);
-
- if (portsc1 & USBDEV_PRTSC1_HSP)
- priv->usbdev.speed = USB_SPEED_HIGH;
- else
- priv->usbdev.speed = USB_SPEED_FULL;
-
- if (portsc1 & USBDEV_PRTSC1_FPR)
- {
- /* FIXME: this occurs because of a J-to-K transition detected
- * while the port is in SUSPEND state - presumambly this
- * is where the host is resuming the device?
- *
- * - but do we need to "ack" the interrupt
- */
- }
- }
-
-#ifdef CONFIG_LPC313X_USBDEV_FRAME_INTERRUPT
- if (disr & USBDEV_USBSTT_SRI)
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_FRAME), 0);
-
- priv->sof = (int)lpc313x_getreg(LPC313X_USBDEV_FRINDEX_OFFSET);
- }
-#endif
-
- if (disr & USBDEV_USBSTS_UEI)
- {
- /* FIXME: these occur when a transfer results in an error condition
- * it is set alongside USBINT if the DTD also had its IOC
- * bit set. */
- }
-
- if (disr & USBDEV_USBSTS_UI)
- {
- /* Handle completion interrupts */
- uint32_t mask = lpc313x_getreg (LPC313X_USBDEV_ENDPTCOMPLETE);
-
- if (mask)
- {
- // Clear any NAK interrupt and completion interrupts
- lpc313x_putreg (mask, LPC313X_USBDEV_ENDPTNAK);
- lpc313x_putreg (mask, LPC313X_USBDEV_ENDPTCOMPLETE);
-
- if (mask & LPC313X_ENDPTMASK(0))
- lpc313x_ep0complete(priv, 0);
- if (mask & LPC313X_ENDPTMASK(1))
- lpc313x_ep0complete(priv, 1);
-
- for (n = 1; n < LPC313X_NLOGENDPOINTS; n++)
- {
- if (mask & LPC313X_ENDPTMASK((n<<1)))
- lpc313x_epcomplete (priv, (n<<1));
- if (mask & LPC313X_ENDPTMASK((n<<1)+1))
- lpc313x_epcomplete(priv, (n<<1)+1);
- }
- }
-
- /* Handle setup interrupts */
- uint32_t setupstat = lpc313x_getreg(LPC313X_USBDEV_ENDPTSETUPSTAT);
- if (setupstat)
- {
- /* Clear the endpoint complete CTRL OUT and IN when a Setup is received */
- lpc313x_putreg (LPC313X_ENDPTMASK(LPC313X_EP0_IN) | LPC313X_ENDPTMASK(LPC313X_EP0_OUT),
- LPC313X_USBDEV_ENDPTCOMPLETE);
-
- if (setupstat & LPC313X_ENDPTMASK(LPC313X_EP0_OUT))
- {
- usbtrace(TRACE_INTDECODE(LPC313X_TRACEINTID_EP0SETUP), setupstat);
- lpc313x_ep0setup(priv);
- }
- }
- }
-
- if (disr & USBDEV_USBSTS_NAKI)
- {
- uint32_t pending = lpc313x_getreg(LPC313X_USBDEV_ENDPTNAK) & lpc313x_getreg(LPC313X_USBDEV_ENDPTNAKEN);
- if (pending)
- {
- /* We shouldn't see NAK interrupts except on Endpoint 0 */
- if (pending & LPC313X_ENDPTMASK(0))
- lpc313x_ep0nak(priv, 0);
- if (pending & LPC313X_ENDPTMASK(1))
- lpc313x_ep0nak(priv, 1);
- }
-
- // clear the interrupts
- lpc313x_putreg(pending, LPC313X_USBDEV_ENDPTNAK);
- }
- usbtrace(TRACE_INTEXIT(LPC313X_TRACEINTID_USB), 0);
- return OK;
-}
-
-/*******************************************************************************
- * Endpoint operations
- *******************************************************************************/
-
-/*******************************************************************************
- * Name: lpc313x_epconfigure
- *
- * Description:
- * Configure endpoint, making it usable
- *
- * Input Parameters:
- * ep - the struct usbdev_ep_s instance obtained from allocep()
- * desc - A struct usb_epdesc_s instance describing the endpoint
- * last - true if this this last endpoint to be configured. Some hardware
- * needs to take special action when all of the endpoints have been
- * configured.
- *
- *******************************************************************************/
-
-static int lpc313x_epconfigure(FAR struct usbdev_ep_s *ep,
- FAR const struct usb_epdesc_s *desc,
- bool last)
-{
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
-
- usbtrace(TRACE_EPCONFIGURE, privep->epphy);
- DEBUGASSERT(desc->addr == ep->eplog);
-
- // Initialise EP capabilities
-
- uint16_t maxsize = GETUINT16(desc->mxpacketsize);
- if ((desc->attr & USB_EP_ATTR_XFERTYPE_MASK) == USB_EP_ATTR_XFER_ISOC)
- {
- g_qh[privep->epphy].capability = (DQH_CAPABILITY_MAX_PACKET(maxsize) |
- DQH_CAPABILITY_IOS |
- DQH_CAPABILITY_ZLT);
- }
- else
- {
- g_qh[privep->epphy].capability = (DQH_CAPABILITY_MAX_PACKET(maxsize) |
- DQH_CAPABILITY_ZLT);
- }
-
- /* Setup Endpoint Control Register */
-
- if (LPC313X_EPPHYIN(privep->epphy))
- {
- /* Reset the data toggles */
- uint32_t cfg = USBDEV_ENDPTCTRL_TXR;
-
- /* Set the endpoint type */
- switch (desc->attr & USB_EP_ATTR_XFERTYPE_MASK)
- {
- case USB_EP_ATTR_XFER_CONTROL: cfg |= USBDEV_ENDPTCTRL_TXT_CTRL; break;
- case USB_EP_ATTR_XFER_ISOC: cfg |= USBDEV_ENDPTCTRL_TXT_ISOC; break;
- case USB_EP_ATTR_XFER_BULK: cfg |= USBDEV_ENDPTCTRL_TXT_BULK; break;
- case USB_EP_ATTR_XFER_INT: cfg |= USBDEV_ENDPTCTRL_TXT_INTR; break;
- }
- lpc313x_chgbits (0xFFFF0000, cfg, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
- }
- else
- {
- /* Reset the data toggles */
- uint32_t cfg = USBDEV_ENDPTCTRL_RXR;
-
- /* Set the endpoint type */
- switch (desc->attr & USB_EP_ATTR_XFERTYPE_MASK)
- {
- case USB_EP_ATTR_XFER_CONTROL: cfg |= USBDEV_ENDPTCTRL_RXT_CTRL; break;
- case USB_EP_ATTR_XFER_ISOC: cfg |= USBDEV_ENDPTCTRL_RXT_ISOC; break;
- case USB_EP_ATTR_XFER_BULK: cfg |= USBDEV_ENDPTCTRL_RXT_BULK; break;
- }
- lpc313x_chgbits (0x0000FFFF, cfg, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
- }
-
- /* Reset endpoint status */
- privep->stalled = false;
-
- /* Enable the endpoint */
- if (LPC313X_EPPHYIN(privep->epphy))
- lpc313x_setbits (USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
- else
- lpc313x_setbits (USBDEV_ENDPTCTRL_RXE, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
-
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_epdisable
- *
- * Description:
- * The endpoint will no longer be used
- *
- *******************************************************************************/
-
-static int lpc313x_epdisable(FAR struct usbdev_ep_s *ep)
-{
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
- irqstate_t flags;
-
-#ifdef CONFIG_DEBUG
- if (!ep)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return -EINVAL;
- }
-#endif
- usbtrace(TRACE_EPDISABLE, privep->epphy);
-
- flags = irqsave();
-
- /* Disable Endpoint */
- if (LPC313X_EPPHYIN(privep->epphy))
- lpc313x_clrbits (USBDEV_ENDPTCTRL_TXE, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
- else
- lpc313x_clrbits (USBDEV_ENDPTCTRL_RXE, LPC313X_USBDEV_ENDPTCTRL(privep->epphy));
-
- privep->stalled = true;
-
- /* Cancel any ongoing activity */
- lpc313x_cancelrequests(privep, -ESHUTDOWN);
-
- irqrestore(flags);
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_epallocreq
- *
- * Description:
- * Allocate an I/O request
- *
- *******************************************************************************/
-
-static FAR struct usbdev_req_s *lpc313x_epallocreq(FAR struct usbdev_ep_s *ep)
-{
- FAR struct lpc313x_req_s *privreq;
-
-#ifdef CONFIG_DEBUG
- if (!ep)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return NULL;
- }
-#endif
- usbtrace(TRACE_EPALLOCREQ, ((FAR struct lpc313x_ep_s *)ep)->epphy);
-
- privreq = (FAR struct lpc313x_req_s *)malloc(sizeof(struct lpc313x_req_s));
- if (!privreq)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_ALLOCFAIL), 0);
- return NULL;
- }
-
- memset(privreq, 0, sizeof(struct lpc313x_req_s));
-
- return &privreq->req;
-}
-
-/*******************************************************************************
- * Name: lpc313x_epfreereq
- *
- * Description:
- * Free an I/O request
- *
- *******************************************************************************/
-
-static void lpc313x_epfreereq(FAR struct usbdev_ep_s *ep, FAR struct usbdev_req_s *req)
-{
- FAR struct lpc313x_req_s *privreq = (FAR struct lpc313x_req_s *)req;
-
-#ifdef CONFIG_DEBUG
- if (!ep || !req)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return;
- }
-#endif
-
- usbtrace(TRACE_EPFREEREQ, ((FAR struct lpc313x_ep_s *)ep)->epphy);
-
- free(privreq);
-}
-
-/*******************************************************************************
- * Name: lpc313x_epallocbuffer
- *
- * Description:
- * Allocate an I/O buffer
- *
- *******************************************************************************/
-
-#ifdef CONFIG_ARCH_USBDEV_DMA
-static void *lpc313x_epallocbuffer(FAR struct usbdev_ep_s *ep, unsigned bytes)
-{
- usbtrace(TRACE_EPALLOCBUFFER, privep->epphy);
- return malloc(bytes)
-}
-#endif
-
-/*******************************************************************************
- * Name: lpc313x_epfreebuffer
- *
- * Description:
- * Free an I/O buffer
- *
- *******************************************************************************/
-
-#ifdef CONFIG_LPC313x_USBDEV_DMA
-static void lpc313x_epfreebuffer(FAR struct usbdev_ep_s *ep, FAR void *buf)
-{
- usbtrace(TRACE_EPFREEBUFFER, privep->epphy);
- free(buf);
-}
-#endif
-
-/*******************************************************************************
- * Name: lpc313x_epsubmit
- *
- * Description:
- * Submit an I/O request to the endpoint
- *
- *******************************************************************************/
-
-static int lpc313x_epsubmit(FAR struct usbdev_ep_s *ep, FAR struct usbdev_req_s *req)
-{
- FAR struct lpc313x_req_s *privreq = (FAR struct lpc313x_req_s *)req;
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
- FAR struct lpc313x_usbdev_s *priv;
- irqstate_t flags;
- int ret = OK;
-
-#ifdef CONFIG_DEBUG
- if (!req || !req->callback || !req->buf || !ep)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- ullvdbg("req=%p callback=%p buf=%p ep=%p\n", req, req->callback, req->buf, ep);
- return -EINVAL;
- }
-#endif
-
- usbtrace(TRACE_EPSUBMIT, privep->epphy);
- priv = privep->dev;
-
- if (!priv->driver || priv->usbdev.speed == USB_SPEED_UNKNOWN)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_NOTCONFIGURED), priv->usbdev.speed);
- return -ESHUTDOWN;
- }
-
- /* Handle the request from the class driver */
-
- req->result = -EINPROGRESS;
- req->xfrd = 0;
-
- /* Disable Interrupts */
-
- flags = irqsave();
-
- /* If we are stalled, then drop all requests on the floor */
-
- if (privep->stalled)
- {
- ret = -EBUSY;
- }
- else
- {
- /* Add the new request to the request queue for the endpoint */
-
- if (LPC313X_EPPHYIN(privep->epphy))
- usbtrace(TRACE_INREQQUEUED(privep->epphy), privreq->req.len);
- else
- usbtrace(TRACE_OUTREQQUEUED(privep->epphy), privreq->req.len);
-
- if (lpc313x_rqenqueue(privep, privreq))
- {
- lpc313x_progressep(privep);
- }
- }
-
- irqrestore(flags);
- return ret;
-}
-
-/*******************************************************************************
- * Name: lpc313x_epcancel
- *
- * Description:
- * Cancel an I/O request previously sent to an endpoint
- *
- *******************************************************************************/
-
-static int lpc313x_epcancel(FAR struct usbdev_ep_s *ep, FAR struct usbdev_req_s *req)
-{
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
- FAR struct lpc313x_usbdev_s *priv;
- irqstate_t flags;
-
-#ifdef CONFIG_DEBUG
- if (!ep || !req)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return -EINVAL;
- }
-#endif
-
- usbtrace(TRACE_EPCANCEL, privep->epphy);
- priv = privep->dev;
-
- flags = irqsave();
-
- /* FIXME: if the request is the first, then we need to flush the EP
- * otherwise just remove it from the list
- *
- * but ... all other implementations cancel all requests ...
- */
-
- lpc313x_cancelrequests(privep, -ESHUTDOWN);
- irqrestore(flags);
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_epstall
- *
- * Description:
- * Stall or resume and endpoint
- *
- *******************************************************************************/
-
-static int lpc313x_epstall(FAR struct usbdev_ep_s *ep, bool resume)
-{
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
- irqstate_t flags;
-
- /* STALL or RESUME the endpoint */
-
- flags = irqsave();
- usbtrace(resume ? TRACE_EPRESUME : TRACE_EPSTALL, privep->epphy);
-
- uint32_t addr = LPC313X_USBDEV_ENDPTCTRL(privep->epphy);
- uint32_t ctrl_xs = LPC313X_EPPHYIN(privep->epphy) ? USBDEV_ENDPTCTRL_TXS : USBDEV_ENDPTCTRL_RXS;
- uint32_t ctrl_xr = LPC313X_EPPHYIN(privep->epphy) ? USBDEV_ENDPTCTRL_TXR : USBDEV_ENDPTCTRL_RXR;
-
- if (resume)
- {
- privep->stalled = false;
-
- /* Clear stall and reset the data toggle */
-
- lpc313x_chgbits (ctrl_xs | ctrl_xr, ctrl_xr, addr);
- }
- else
- {
- privep->stalled = true;
-
- lpc313x_setbits (ctrl_xs, addr);
- }
-
- irqrestore(flags);
- return OK;
-}
-
-/*******************************************************************************
- * Device operations
- *******************************************************************************/
-
-/*******************************************************************************
- * Name: lcp313x_allocep
- *
- * Description:
- * Allocate an endpoint matching the parameters.
- *
- * Input Parameters:
- * eplog - 7-bit logical endpoint number (direction bit ignored). Zero means
- * that any endpoint matching the other requirements will suffice. The
- * assigned endpoint can be found in the eplog field.
- * in - true: IN (device-to-host) endpoint requested
- * eptype - Endpoint type. One of {USB_EP_ATTR_XFER_ISOC, USB_EP_ATTR_XFER_BULK,
- * USB_EP_ATTR_XFER_INT}
- *
- *******************************************************************************/
-
-static FAR struct usbdev_ep_s *lcp313x_allocep(FAR struct usbdev_s *dev, uint8_t eplog,
- bool in, uint8_t eptype)
-{
- FAR struct lpc313x_usbdev_s *priv = (FAR struct lpc313x_usbdev_s *)dev;
- uint32_t epset = LPC313X_EPALLSET & ~LPC313X_EPCTRLSET;
- irqstate_t flags;
- int epndx = 0;
-
- usbtrace(TRACE_DEVALLOCEP, (uint16_t)eplog);
-
- /* Ignore any direction bits in the logical address */
-
- eplog = USB_EPNO(eplog);
-
- /* A logical address of 0 means that any endpoint will do */
-
- if (eplog > 0)
- {
- /* Otherwise, we will return the endpoint structure only for the requested
- * 'logical' endpoint. All of the other checks will still be performed.
- *
- * First, verify that the logical endpoint is in the range supported by
- * by the hardware.
- */
-
- if (eplog >= LPC313X_NLOGENDPOINTS)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADEPNO), (uint16_t)eplog);
- return NULL;
- }
-
- /* Convert the logical address to a physical OUT endpoint address and
- * remove all of the candidate endpoints from the bitset except for the
- * the IN/OUT pair for this logical address.
- */
-
- epset &= 3 << (eplog << 1);
- }
-
- /* Get the subset matching the requested direction */
-
- if (in)
- {
- epset &= LPC313X_EPINSET;
- }
- else
- {
- epset &= LPC313X_EPOUTSET;
- }
-
- /* Get the subset matching the requested type */
-
- switch (eptype)
- {
- case USB_EP_ATTR_XFER_INT: /* Interrupt endpoint */
- epset &= LPC313X_EPINTRSET;
- break;
-
- case USB_EP_ATTR_XFER_BULK: /* Bulk endpoint */
- epset &= LPC313X_EPBULKSET;
- break;
-
- case USB_EP_ATTR_XFER_ISOC: /* Isochronous endpoint */
- epset &= LPC313X_EPISOCSET;
- break;
-
- case USB_EP_ATTR_XFER_CONTROL: /* Control endpoint -- not a valid choice */
- default:
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BADEPTYPE), (uint16_t)eptype);
- return NULL;
- }
-
- /* Is the resulting endpoint supported by the LPC313x? */
-
- if (epset)
- {
- /* Yes.. now see if any of the request endpoints are available */
-
- flags = irqsave();
- epset &= priv->epavail;
- if (epset)
- {
- /* Select the lowest bit in the set of matching, available endpoints */
-
- for (epndx = 2; epndx < LPC313X_NPHYSENDPOINTS; epndx++)
- {
- uint32_t bit = 1 << epndx;
- if ((epset & bit) != 0)
- {
- /* Mark the IN/OUT endpoint no longer available */
-
- priv->epavail &= ~(3 << (bit & ~1));
- irqrestore(flags);
-
- /* And return the pointer to the standard endpoint structure */
-
- return &priv->eplist[epndx].ep;
- }
- }
- /* Shouldn't get here */
- }
- irqrestore(flags);
- }
-
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_NOEP), (uint16_t)eplog);
- return NULL;
-}
-
-/*******************************************************************************
- * Name: lpc313x_freeep
- *
- * Description:
- * Free the previously allocated endpoint
- *
- *******************************************************************************/
-
-static void lpc313x_freeep(FAR struct usbdev_s *dev, FAR struct usbdev_ep_s *ep)
-{
- FAR struct lpc313x_usbdev_s *priv = (FAR struct lpc313x_usbdev_s *)dev;
- FAR struct lpc313x_ep_s *privep = (FAR struct lpc313x_ep_s *)ep;
- irqstate_t flags;
-
- usbtrace(TRACE_DEVFREEEP, (uint16_t)privep->epphy);
-
- if (priv && privep)
- {
- /* Mark the endpoint as available */
-
- flags = irqsave();
- priv->epavail |= (1 << privep->epphy);
- irqrestore(flags);
- }
-}
-
-/*******************************************************************************
- * Name: lpc313x_getframe
- *
- * Description:
- * Returns the current frame number
- *
- *******************************************************************************/
-
-static int lpc313x_getframe(struct usbdev_s *dev)
-{
-#ifdef CONFIG_LPC313X_USBDEV_FRAME_INTERRUPT
- FAR struct lpc313x_usbdev_s *priv = (FAR struct lpc313x_usbdev_s *)dev;
-
- /* Return last valid value of SOF read by the interrupt handler */
-
- usbtrace(TRACE_DEVGETFRAME, (uint16_t)priv->sof);
- return priv->sof;
-#else
- /* Return the last frame number detected by the hardware */
-
- usbtrace(TRACE_DEVGETFRAME, 0);
-
- /* FIXME: this actually returns the micro frame number! */
- return (int)lpc313x_getreg(LPC313X_USBDEV_FRINDEX_OFFSET);
-#endif
-}
-
-/*******************************************************************************
- * Name: lpc313x_wakeup
- *
- * Description:
- * Tries to wake up the host connected to this device
- *
- *******************************************************************************/
-
-static int lpc313x_wakeup(struct usbdev_s *dev)
-{
- irqstate_t flags;
-
- usbtrace(TRACE_DEVWAKEUP, 0);
-
- flags = irqsave();
- lpc313x_setbits(USBDEV_PRTSC1_FPR, LPC313X_USBDEV_PORTSC1);
- irqrestore(flags);
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_selfpowered
- *
- * Description:
- * Sets/clears the device selfpowered feature
- *
- *******************************************************************************/
-
-static int lpc313x_selfpowered(struct usbdev_s *dev, bool selfpowered)
-{
- FAR struct lpc313x_usbdev_s *priv = (FAR struct lpc313x_usbdev_s *)dev;
-
- usbtrace(TRACE_DEVSELFPOWERED, (uint16_t)selfpowered);
-
-#ifdef CONFIG_DEBUG
- if (!dev)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return -ENODEV;
- }
-#endif
-
- priv->selfpowered = selfpowered;
- return OK;
-}
-
-/*******************************************************************************
- * Name: lpc313x_pullup
- *
- * Description:
- * Software-controlled connect to/disconnect from USB host
- *
- *******************************************************************************/
-
-static int lpc313x_pullup(struct usbdev_s *dev, bool enable)
-{
- usbtrace(TRACE_DEVPULLUP, (uint16_t)enable);
-
- irqstate_t flags = irqsave();
- if (enable)
- lpc313x_setbits (USBDEV_USBCMD_RS, LPC313X_USBDEV_USBCMD);
- else
- lpc313x_clrbits (USBDEV_USBCMD_RS, LPC313X_USBDEV_USBCMD);
- irqrestore(flags);
- return OK;
-}
-
-/*******************************************************************************
- * Public Functions
- *******************************************************************************/
-
-/*******************************************************************************
- * Name: up_usbinitialize
- *
- * Description:
- * Initialize USB hardware.
- *
- * Assumptions:
- * - This function is called very early in the initialization sequence
- * - PLL and GIO pin initialization is not performed here but should been in
- * the low-level boot logic: PLL1 must be configured for operation at 48MHz
- * and P0.23 and PO.31 in PINSEL1 must be configured for Vbus and USB connect
- * LED.
- *
- *******************************************************************************/
-
-void up_usbinitialize(void)
-{
- struct lpc313x_usbdev_s *priv = &g_usbdev;
- int i;
-
- usbtrace(TRACE_DEVINIT, 0);
-
- /* Disable USB interrupts */
-
- lpc313x_putreg(0, LPC313X_USBDEV_USBINTR);
-
- /* Initialize the device state structure */
-
- memset(priv, 0, sizeof(struct lpc313x_usbdev_s));
- priv->usbdev.ops = &g_devops;
- priv->usbdev.ep0 = &priv->eplist[LPC313X_EP0_IN].ep;
- priv->epavail = LPC313X_EPALLSET;
-
- /* Initialize the endpoint list */
-
- for (i = 0; i < LPC313X_NPHYSENDPOINTS; i++)
- {
- uint32_t bit = 1 << i;
-
- /* Set endpoint operations, reference to driver structure (not
- * really necessary because there is only one controller), and
- * the physical endpoint number (which is just the index to the
- * endpoint).
- */
- priv->eplist[i].ep.ops = &g_epops;
- priv->eplist[i].dev = priv;
-
- /* The index, i, is the physical endpoint address; Map this
- * to a logical endpoint address usable by the class driver.
- */
-
- priv->eplist[i].epphy = i;
- if (LPC313X_EPPHYIN(i))
- {
- priv->eplist[i].ep.eplog = LPC313X_EPPHYIN2LOG(i);
- }
- else
- {
- priv->eplist[i].ep.eplog = LPC313X_EPPHYOUT2LOG(i);
- }
-
- /* The maximum packet size may depend on the type of endpoint */
-
- if ((LPC313X_EPCTRLSET & bit) != 0)
- {
- priv->eplist[i].ep.maxpacket = LPC313X_EP0MAXPACKET;
- }
- else if ((LPC313X_EPINTRSET & bit) != 0)
- {
- priv->eplist[i].ep.maxpacket = LPC313X_INTRMAXPACKET;
- }
- else if ((LPC313X_EPBULKSET & bit) != 0)
- {
- priv->eplist[i].ep.maxpacket = LPC313X_BULKMAXPACKET;
- }
- else /* if ((LPC313X_EPISOCSET & bit) != 0) */
- {
- priv->eplist[i].ep.maxpacket = LPC313X_ISOCMAXPACKET;
- }
- }
-
- /* Enable USB to AHB clock and to Event router*/
-
- lpc313x_enableclock (CLKID_USBOTGAHBCLK);
- lpc313x_enableclock (CLKID_EVENTROUTERPCLK);
-
- /* Reset USB block */
-
- lpc313x_softreset (RESETID_USBOTGAHBRST);
-
- /* Enable USB OTG PLL and wait for lock */
-
- lpc313x_putreg (0, LPC313X_SYSCREG_USB_ATXPLLPDREG);
-
- uint32_t bank = EVNTRTR_BANK(EVENTRTR_USBATXPLLLOCK);
- uint32_t bit = EVNTRTR_BIT(EVENTRTR_USBATXPLLLOCK);
-
- while (! (lpc313x_getreg(LPC313X_EVNTRTR_RSR(bank)) & (1 << bit)))
- ;
-
- /* Enable USB AHB clock */
-
- lpc313x_enableclock (CLKID_USBOTGAHBCLK);
-
- /* Reset the controller */
-
- lpc313x_putreg (USBDEV_USBCMD_RST, LPC313X_USBDEV_USBCMD);
- while (lpc313x_getreg (LPC313X_USBDEV_USBCMD) & USBDEV_USBCMD_RST)
- ;
-
- /* Attach USB controller interrupt handler */
-
- if (irq_attach(LPC313X_IRQ_USBOTG, lpc313x_usbinterrupt) != 0)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_IRQREGISTRATION),
- (uint16_t)LPC313X_IRQ_USBOTG);
- goto errout;
- }
-
-
- /* Program the controller to be the USB device controller */
-
- lpc313x_putreg (USBDEV_USBMODE_SDIS | USBDEV_USBMODE_SLOM | USBDEV_USBMODE_CMDEVICE,
- LPC313X_USBDEV_USBMODE);
-
- /* Disconnect device */
-
- lpc313x_pullup(&priv->usbdev, false);
-
- /* Reset/Re-initialize the USB hardware */
-
- lpc313x_usbreset(priv);
-
- return;
-
-errout:
- up_usbuninitialize();
-}
-
-/*******************************************************************************
- * Name: up_usbuninitialize
- *******************************************************************************/
-
-void up_usbuninitialize(void)
-{
- struct lpc313x_usbdev_s *priv = &g_usbdev;
- irqstate_t flags;
-
- usbtrace(TRACE_DEVUNINIT, 0);
-
- if (priv->driver)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_DRIVERREGISTERED), 0);
- usbdev_unregister(priv->driver);
- }
-
- /* Disconnect device */
-
- flags = irqsave();
- lpc313x_pullup(&priv->usbdev, false);
- priv->usbdev.speed = USB_SPEED_UNKNOWN;
-
- /* Disable and detach IRQs */
-
- up_disable_irq(LPC313X_IRQ_USBOTG);
- irq_detach(LPC313X_IRQ_USBOTG);
-
- /* Reset the controller */
-
- lpc313x_putreg (USBDEV_USBCMD_RST, LPC313X_USBDEV_USBCMD);
- while (lpc313x_getreg (LPC313X_USBDEV_USBCMD) & USBDEV_USBCMD_RST)
- ;
-
- /* Turn off USB power and clocking */
-
- lpc313x_disableclock (CLKID_USBOTGAHBCLK);
- lpc313x_disableclock (CLKID_EVENTROUTERPCLK);
-
-
- irqrestore(flags);
-}
-
-/*******************************************************************************
- * Name: usbdev_register
- *
- * Description:
- * Register a USB device class driver. The class driver's bind() method will be
- * called to bind it to a USB device driver.
- *
- *******************************************************************************/
-
-int usbdev_register(struct usbdevclass_driver_s *driver)
-{
- int ret;
-
- usbtrace(TRACE_DEVREGISTER, 0);
-
-#ifdef CONFIG_DEBUG
- if (!driver || !driver->ops->bind || !driver->ops->unbind ||
- !driver->ops->disconnect || !driver->ops->setup)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return -EINVAL;
- }
-
- if (g_usbdev.driver)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_DRIVER), 0);
- return -EBUSY;
- }
-#endif
-
- /* First hook up the driver */
-
- g_usbdev.driver = driver;
-
- /* Then bind the class driver */
-
- ret = CLASS_BIND(driver, &g_usbdev.usbdev);
- if (ret)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_BINDFAILED), (uint16_t)-ret);
- g_usbdev.driver = NULL;
- }
- else
- {
- /* Enable USB controller interrupts */
-
- up_enable_irq(LPC313X_IRQ_USBOTG);
-
- /* FIXME: nothing seems to call DEV_CONNECT(), but we need to set
- * the RS bit to enable the controller. It kind of makes sense
- * to do this after the class has bound to us...
- * GEN: This bug is really in the class driver. It should make the
- * soft connect when it is ready to be enumerated. I have added
- * that logic to the class drivers but left this logic here.
- */
-
- lpc313x_pullup(&g_usbdev.usbdev, true);
- }
- return ret;
-}
-
-/*******************************************************************************
- * Name: usbdev_unregister
- *
- * Description:
- * Un-register usbdev class driver.If the USB device is connected to a USB host,
- * it will first disconnect(). The driver is also requested to unbind() and clean
- * up any device state, before this procedure finally returns.
- *
- *******************************************************************************/
-
-int usbdev_unregister(struct usbdevclass_driver_s *driver)
-{
- usbtrace(TRACE_DEVUNREGISTER, 0);
-
-#ifdef CONFIG_DEBUG
- if (driver != g_usbdev.driver)
- {
- usbtrace(TRACE_DEVERROR(LPC313X_TRACEERR_INVALIDPARMS), 0);
- return -EINVAL;
- }
-#endif
-
- /* Unbind the class driver */
-
- CLASS_UNBIND(driver, &g_usbdev.usbdev);
-
- /* Disable USB controller interrupts */
-
- up_disable_irq(LPC313X_IRQ_USBOTG);
-
- /* Unhook the driver */
-
- g_usbdev.driver = NULL;
- return OK;
-}
-
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_usbotg.h b/nuttx/arch/arm/src/lpc313x/lpc313x_usbotg.h
deleted file mode 100755
index b2ea9a3b2..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_usbotg.h
+++ /dev/null
@@ -1,654 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_usbotg.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_USBOTG_H
-#define __ARCH_ARM_SRC_LPC313X_USBOTG_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* USBOTG register base address offset into the USBOTG domain ***********************************/
-
-#define LPC313X_USBOTG_VBASE (LPC313X_USBOTG_VSECTION)
-#define LPC313X_USBOTG_PBASE (LPC313X_USBOTG_PSECTION)
-
-/* USBOTG register offsets (with respect to the base of the USBOTG domain) **********************/
- /* 0x000 - 0x0ff: Reserved */
-/* Device/host capability registers */
-
-#define LPC313X_USBOTG_CAPLENGTH_OFFSET 0x100 /* Capability register length */
-#define LPC313X_USBHOST_HCIVERSION_OFFSET 0x102 /* Host interface version number */
-#define LPC313X_USBHOST_HCSPARAMS_OFFSET 0x104 /* Host controller structural parameters */
-#define LPC313X_USBHOST_HCCPARAMS_OFFSET 0x108 /* Host controller capability parameters */
-#define LPC313X_USBDEV_DCIVERSION_OFFSET 0x120 /* Device interface version number */
-#define LPC313X_USBDEV_DCCPARAMS_OFFSET 0x124 /* Device controller capability parameters */
-
-/* Device/host/OTG operational registers */
-
-#define LPC313X_USBOTG_USBCMD_OFFSET 0x140 /* USB command (both) */
-#define LPC313X_USBOTG_USBSTS_OFFSET 0x144 /* USB status (both) */
-#define LPC313X_USBOTG_USBINTR_OFFSET 0x148 /* USB interrupt enable (both) */
-#define LPC313X_USBOTG_FRINDEX_OFFSET 0x14C /* USB frame index (both) */
-#define LPC313X_USBOTG_PERIODICLIST_OFFSET 0x154 /* Frame list base address (host) */
-#define LPC313X_USBOTG_DEVICEADDR_OFFSET 0x154 /* USB device address (device) */
-#define LPC313X_USBOTG_ASYNCLISTADDR_OFFSET 0x158 /* Next asynchronous list address (host) */
-#define LPC313X_USBOTG_ENDPOINTLIST_OFFSET 0x158 /* Address of endpoint list in memory (device) */
-#define LPC313X_USBOTG_TTCTRL_OFFSET 0x15C /* Asynchronous buffer status for embedded TT (host) */
-#define LPC313X_USBOTG_BURSTSIZE_OFFSET 0x160 /* Programmable burst size (both) */
-#define LPC313X_USBOTG_TXFILLTUNING_OFFSET 0x164 /* Host transmit pre-buffer packet tuning (host) */
-#define LPC313X_USBOTG_BINTERVAL_OFFSET 0x174 /* Length of virtual frame (both) */
-#define LPC313X_USBOTG_ENDPTNAK_OFFSET 0x178 /* Endpoint NAK (device) */
-#define LPC313X_USBOTG_ENDPTNAKEN_OFFSET 0x17C /* Endpoint NAK Enable (device) */
-#define LPC313X_USBOTG_CONFIGFLAG_OFFSET 0x180 /* Configured flag register (not used in lpc313x) */
-#define LPC313X_USBOTG_PORTSC1_OFFSET 0x184 /* Port status/control 1 (both) */
-#define LPC313X_USBOTG_OTGSC_OFFSET 0x1A4 /* OTG status and control (otg) */
-#define LPC313X_USBOTG_USBMODE_OFFSET 0x1A8 /* USB device mode (both) */
-
-#define LPC313X_USBDEV_USBCMD_OFFSET 0x140 /* USB command (both) */
-#define LPC313X_USBDEV_USBSTS_OFFSET 0x144 /* USB status (both) */
-#define LPC313X_USBDEV_USBINTR_OFFSET 0x148 /* USB interrupt enable (both) */
-#define LPC313X_USBDEV_FRINDEX_OFFSET 0x14C /* USB frame index (both) */
-#define LPC313X_USBDEV_DEVICEADDR_OFFSET 0x154 /* USB device address (device) */
-#define LPC313X_USBDEV_ENDPOINTLIST_OFFSET 0x158 /* Address of endpoint list in memory (device) */
-#define LPC313X_USBDEV_BURSTSIZE_OFFSET 0x160 /* Programmable burst size (both) */
-#define LPC313X_USBDEV_BINTERVAL_OFFSET 0x174 /* Length of virtual frame (both) */
-#define LPC313X_USBDEV_ENDPTNAK_OFFSET 0x178 /* Endpoint NAK (device) */
-#define LPC313X_USBDEV_ENDPTNAKEN_OFFSET 0x17C /* Endpoint NAK Enable (device) */
-#define LPC313X_USBDEV_PORTSC1_OFFSET 0x184 /* Port status/control 1 (both) */
-#define LPC313X_USBDEV_USBMODE_OFFSET 0x1A8 /* USB device mode (both) */
-
-#define LPC313X_USBHOST_USBCMD_OFFSET 0x140 /* USB command (both) */
-#define LPC313X_USBHOST_USBSTS_OFFSET 0x144 /* USB status (both) */
-#define LPC313X_USBHOST_USBINTR_OFFSET 0x148 /* USB interrupt enable (both) */
-#define LPC313X_USBHOST_FRINDEX_OFFSET 0x14C /* USB frame index (both) */
-#define LPC313X_USBHOST_PERIODICLIST_OFFSET 0x154 /* Frame list base address (host) */
-#define LPC313X_USBHOST_ASYNCLISTADDR_OFFSET 0x158 /* Next asynchronous list address (host) */
-#define LPC313X_USBHOST_TTCTRL_OFFSET 0x15C /* Asynchronous buffer status for embedded TT (host) */
-#define LPC313X_USBHOST_BURSTSIZE_OFFSET 0x160 /* Programmable burst size (both) */
-#define LPC313X_USBHOST_TXFILLTUNING_OFFSET 0x164 /* Host transmit pre-buffer packet tuning (host) */
-#define LPC313X_USBHOST_BINTERVAL_OFFSET 0x174 /* Length of virtual frame (both) */
-#define LPC313X_USBHOST_PORTSC1_OFFSET 0x184 /* Port status/control 1 (both) */
-#define LPC313X_USBHOST_USBMODE_OFFSET 0x1A8 /* USB device mode (both) */
-
-/* Device endpoint registers */
-
-#define LPC313X_USBDEV_ENDPTSETUPSTAT_OFFSET 0x1AC /* Endpoint setup status */
-#define LPC313X_USBDEV_ENDPTPRIME_OFFSET 0x1B0 /* Endpoint initialization */
-#define LPC313X_USBDEV_ENDPTFLUSH_OFFSET 0x1B4 /* Endpoint de-initialization */
-#define LPC313X_USBDEV_ENDPTSTATUS_OFFSET 0x1B8 /* Endpoint status */
-#define LPC313X_USBDEV_ENDPTCOMPLETE_OFFSET 0x1BC /* Endpoint complete */
-#define LPC313X_USBDEV_ENDPTCTRL0_OFFSET 0x1C0 /* Endpoint control 0 */
-#define LPC313X_USBDEV_ENDPTCTRL1_OFFSET 0x1C4 /* Endpoint control 1 */
-#define LPC313X_USBDEV_ENDPTCTRL2_OFFSET 0x1C8 /* Endpoint control 2 */
-#define LPC313X_USBDEV_ENDPTCTRL3_OFFSET 0x1CC /* Endpoint control 3 */
-
-/* USBOTG register (virtual) addresses **********************************************************/
-
-/* Device/host capability registers */
-
-#define LPC313X_USBOTG_CAPLENGTH (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_CAPLENGTH_OFFSET)
-#define LPC313X_USBHOST_HCIVERSION (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_HCIVERSION_OFFSET)
-#define LPC313X_USBHOST_HCSPARAMS (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_HCSPARAMS_OFFSET)
-#define LPC313X_USBHOST_HCCPARAMS (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_HCCPARAMS_OFFSET)
-#define LPC313X_USBDEV_DCIVERSION (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_DCIVERSION_OFFSET)
-#define LPC313X_USBDEV_DCCPARAMS (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_DCCPARAMS_OFFSET)
-
-/* Device/host operational registers */
-
-#define LPC313X_USBOTG_USBCMD (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_USBCMD_OFFSET)
-#define LPC313X_USBOTG_USBSTS (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_USBSTS_OFFSET)
-#define LPC313X_USBOTG_USBINTR (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_USBINTR_OFFSET)
-#define LPC313X_USBOTG_FRINDEX (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_FRINDEX_OFFSET)
-#define LPC313X_USBOTG_PERIODICLIST (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_PERIODICLIST_OFFSET)
-#define LPC313X_USBOTG_DEVICEADDR (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_DEVICEADDR_OFFSET)
-#define LPC313X_USBOTG_ASYNCLISTADDR (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_ASYNCLISTADDR_OFFSET)
-#define LPC313X_USBOTG_ENDPOINTLIST (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_ENDPOINTLIST_OFFSET)
-#define LPC313X_USBOTG_TTCTRL (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_TTCTRL_OFFSET)
-#define LPC313X_USBOTG_BURSTSIZE (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_BURSTSIZE_OFFSET)
-#define LPC313X_USBOTG_TXFILLTUNING (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_TXFILLTUNING_OFFSET)
-#define LPC313X_USBOTG_BINTERVAL (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_BINTERVAL_OFFSET)
-#define LPC313X_USBOTG_ENDPTNAK (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_ENDPTNAK_OFFSET)
-#define LPC313X_USBOTG_ENDPTNAKEN (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_ENDPTNAKEN_OFFSET)
-#define LPC313X_USBOTG_PORTSC1 (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_PORTSC1_OFFSET)
-#define LPC313X_USBOTG_OTGSC (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_OTGSC_OFFSET)
-#define LPC313X_USBOTG_USBMODE (LPC313X_USBOTG_VBASE+LPC313X_USBOTG_USBMODE_OFFSET)
-
-#define LPC313X_USBDEV_USBCMD (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_USBCMD_OFFSET)
-#define LPC313X_USBDEV_USBSTS (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_USBSTS_OFFSET)
-#define LPC313X_USBDEV_USBINTR (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_USBINTR_OFFSET)
-#define LPC313X_USBDEV_FRINDEX (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_FRINDEX_OFFSET)
-#define LPC313X_USBDEV_DEVICEADDR (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_DEVICEADDR_OFFSET)
-#define LPC313X_USBDEV_ENDPOINTLIST (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPOINTLIST_OFFSET)
-#define LPC313X_USBDEV_BURSTSIZE (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_BURSTSIZE_OFFSET)
-#define LPC313X_USBDEV_BINTERVAL (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_BINTERVAL_OFFSET)
-#define LPC313X_USBDEV_ENDPTNAK (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTNAK_OFFSET)
-#define LPC313X_USBDEV_ENDPTNAKEN (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTNAKEN_OFFSET)
-#define LPC313X_USBDEV_PORTSC1 (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_PORTSC1_OFFSET)
-#define LPC313X_USBDEV_USBMODE (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_USBMODE_OFFSET)
-
-#define LPC313X_USBHOST_USBCMD (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_USBCMD_OFFSET)
-#define LPC313X_USBHOST_USBSTS (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_USBSTS_OFFSET)
-#define LPC313X_USBHOST_USBINTR (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_USBINTR_OFFSET)
-#define LPC313X_USBHOST_FRINDEX (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_FRINDEX_OFFSET)
-#define LPC313X_USBHOST_PERIODICLIST (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_PERIODICLIST_OFFSET)
-#define LPC313X_USBHOST_ASYNCLISTADDR (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_ASYNCLISTADDR_OFFSET)
-#define LPC313X_USBHOST_TTCTRL (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_TTCTRL_OFFSET)
-#define LPC313X_USBHOST_BURSTSIZE (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_BURSTSIZE_OFFSET)
-#define LPC313X_USBHOST_TXFILLTUNING (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_TXFILLTUNING_OFFSET)
-#define LPC313X_USBHOST_BINTERVAL (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_BINTERVAL_OFFSET)
-#define LPC313X_USBHOST_PORTSC1 (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_PORTSC1_OFFSET)
-#define LPC313X_USBHOST_USBMODE (LPC313X_USBOTG_VBASE+LPC313X_USBHOST_USBMODE_OFFSET)
-
-/* Device endpoint registers */
-
-#define LPC313X_USBDEV_ENDPTSETUPSTAT (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTSETUPSTAT_OFFSET)
-#define LPC313X_USBDEV_ENDPTPRIME (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTPRIME_OFFSET)
-#define LPC313X_USBDEV_ENDPTFLUSH (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTFLUSH_OFFSET)
-#define LPC313X_USBDEV_ENDPTSTATUS (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTSTATUS_OFFSET)
-#define LPC313X_USBDEV_ENDPTCOMPLETE (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTCOMPLETE_OFFSET)
-#define LPC313X_USBDEV_ENDPTCTRL0 (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTCTRL0_OFFSET)
-#define LPC313X_USBDEV_ENDPTCTRL1 (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTCTRL1_OFFSET)
-#define LPC313X_USBDEV_ENDPTCTRL2 (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTCTRL2_OFFSET)
-#define LPC313X_USBDEV_ENDPTCTRL3 (LPC313X_USBOTG_VBASE+LPC313X_USBDEV_ENDPTCTRL3_OFFSET)
-
-/* USBOTG register bit definitions **************************************************************/
-
-/* Device/host capability registers */
-/* CAPLENGTH (address 0x19000100) */
-
-#define USBOTG_CAPLENGTH_SHIFT (0) /* Bits 0-7: Offset from register base to operational regs */
-#define USBOTG_CAPLENGTH_MASK (0xff << USBOTG_CAPLENGTH_SHIFT)
-
-/* HCIVERSION (address 0x19000102) */
-
-#define USBHOST_HCIVERSION_SHIFT (0) /* Bits 0-15: BCD encoding of the EHCI revision number */
-#define USBHOST_HCIVERSION_MASK (0xffff << USBHOST_HCIVERSION_SHIFT)
-
-/* HCSPARAMS (address 0x19000104) */
-
-#define USBHOST_HCSPARAMS_NTT_SHIFT (24) /* Bits 24-27: Number of Transaction Translators */
-#define USBHOST_HCSPARAMS_NTT_MASK (15 << USBHOST_HCSPARAMS_NTT_SHIFT)
-#define USBHOST_HCSPARAMS_NPTT_SHIFT (20) /* Bits 20-23: Number of Ports per Transaction Translator */
-#define USBHOST_HCSPARAMS_NPTT_MASK (15 << USBHOST_HCSPARAMS_NPTT_SHIFT)
-#define USBHOST_HCSPARAMS_PI (1 >> 16) /* Bit 16: Port indicators */
-#define USBHOST_HCSPARAMS_NCC_SHIFT (15) /* Bits 12-15: Number of Companion Controller */
-#define USBHOST_HCSPARAMS_NCC_MASK (15 << USBHOST_HCSPARAMS_NCC_SHIFT)
-#define USBHOST_HCSPARAMS_NPCC_SHIFT (8) /* Bits 8-11: Number of Ports per Companion Controller */
-#define USBHOST_HCSPARAMS_NPCC_MASK (15 << USBHOST_HCSPARAMS_NPCC_SHIFT)
-#define USBHOST_HCSPARAMS_PPC (1 >> 4) /* Bit 4: Port Power Control */
-#define USBHOST_HCSPARAMS_NPORTS_SHIF (0) /* Bits 0-3: Number of downstream ports */
-#define USBHOST_HCSPARAMS_NPORTS_MASK (15 << USBHOST_HCSPARAMS_NPORTS_SHIFT)
-
-/* HCCPARAMS (address 0x19000108) */
-
-#define USBHOST_HCCPARAMS_EECP_SHIFT (8) /* Bits 8-15: EHCI Extended Capabilities Pointer */
-#define USBHOST_HCCPARAMS_EECP_MASK (255 << USBHOST_HCCPARAMS_EECP_SHIFT)
-#define USBHOST_HCCPARAMS_IST_SHIFT (4) /* Bits 4-7: Isochronous Scheduling Threshold */
-#define USBHOST_HCCPARAMS_IST_MASK (15 << USBHOST_HCCPARAMS_IST_SHIFT)
-#define USBHOST_HCCPARAMS_ASP (1 >> 2) /* Bit 2: Asynchronous Schedule Park Capability */
-#define USBHOST_HCCPARAMS_PFL (1 >> 1) /* Bit 1: Programmable Frame List Flag */
-#define USBHOST_HCCPARAMS_ADC (1 >> 0) /* Bit 0: 64-bit Addressing Capability */
-
-/* DCIVERSION (address 0x19000120) */
-
-#define USBDEV_DCIVERSION_SHIFT (0) /* Bits 0-15: BCD encoding of the device interface */
-#define USBDEV_DCIVERSION_MASK (0xffff << USBDEV_DCIVERSION_SHIFT)
-
-/* DCCPARAMS (address 0x19000124) */
-
-#define USBDEV_DCCPARAMS_HC (1 >> 8) /* Bit 8: Host Capable */
-#define USBDEV_DCCPARAMS_DC (1 >> 7) /* Bit 7: Device Capable */
-#define USBDEV_DCCPARAMS_DEN_SHIFT (0) /* Bits 0-4: DEN Device Endpoint Number */
-#define USBDEV_DCCPARAMS_DEN_MASK (31 << USBDEV_DCCPARAMS_DEN_SHIFT)
-
-/* Device/host operational registers */
-/* USB Command register USBCMD (address 0x19000140) -- Device Mode */
-
-#define USBDEV_USBCMD_ITC_SHIFT (16) /* Bits 16-23: Interrupt threshold control */
-#define USBDEV_USBCMD_ITC_MASK (255 << USBDEV_USBCMD_ITC_SHIFT)
-# define USBDEV_USBCMD_ITCIMME (0 << USBDEV_USBCMD_ITC_SHIFT) /* Immediate (no threshold) */
-# define USBDEV_USBCMD_ITC1UF (1 << USBDEV_USBCMD_ITC_SHIFT) /* 1 micro frame */
-# define USBDEV_USBCMD_ITC2UF (2 << USBDEV_USBCMD_ITC_SHIFT) /* 2 micro frames */
-# define USBDEV_USBCMD_ITC4UF (4 << USBDEV_USBCMD_ITC_SHIFT) /* 4 micro frames */
-# define USBDEV_USBCMD_ITC8UF (8 << USBDEV_USBCMD_ITC_SHIFT) /* 8 micro frames */
-# define USBDEV_USBCMD_ITC16UF (16 << USBDEV_USBCMD_ITC_SHIFT) /* 16 micro frames */
-# define USBDEV_USBCMD_ITC32UF (32 << USBDEV_USBCMD_ITC_SHIFT) /* 32 micro frames */
-# define USBDEV_USBCMD_ITC64UF (64 << USBDEV_USBCMD_ITC_SHIFT) /* 64 micro frames */
-#define USBDEV_USBCMD_SUTW (1 << 13) /* Bit 13: Setup trip wire */
-#define USBDEV_USBCMD_ATDTW (1 << 12) /* Bit 12: Add dTD trip wire */
-#define USBDEV_USBCMD_RST (1 << 1) /* Bit 1: 1 Controller reset */
-#define USBDEV_USBCMD_RS (1 << 0) /* Bit 0: 0 Run/Stop */
-
-/* USB Command register USBCMD (address 0x19000140) -- Host Mode */
-
-#define USBHOST_USBCMD_ITC_SHIFT (16) /* Bits 16-13: Interrupt threshold control */
-#define USBHOST_USBCMD_ITC_MASK (255 << USBHOST_USBCMD_ITC_SHIFT)
-# define USBHOST_USBCMD_ITCIMMED (0 << USBHOST_USBCMD_ITC_SHIFT) /* Immediate (no threshold) */
-# define USBHOST_USBCMD_ITC1UF (1 << USBHOST_USBCMD_ITC_SHIFT) /* 1 micro frame */
-# define USBHOST_USBCMD_ITC2UF (2 << USBHOST_USBCMD_ITC_SHIFT) /* 2 micro frames */
-# define USBHOST_USBCMD_ITC4UF (4 << USBHOST_USBCMD_ITC_SHIFT) /* 4 micro frames */
-# define USBHOST_USBCMD_ITC8UF (8 << USBHOST_USBCMD_ITC_SHIFT) /* 8 micro frames */
-# define USBHOST_USBCMD_ITC16UF (16 << USBHOST_USBCMD_ITC_SHIFT) /* 16 micro frames */
-# define USBHOST_USBCMD_ITC32UF (32 << USBHOST_USBCMD_ITC_SHIFT) /* 32 micro frames */
-# define USBHOST_USBCMD_ITC64UF (64 << USBHOST_USBCMD_ITC_SHIFT) /* 64 micro frames */
-#define USBHOST_USBCMD_FS2 (1 << 15) /* Bit 15: Bit 2 of the Frame List Size bits */
-#define USBHOST_USBCMD_ASPE (1 << 11) /* Bit 11: Asynchronous Schedule Park Mode Enable */
-#define USBHOST_USBCMD_ASP_SHIFT (8) /* Bits 8-9: Asynchronous schedule park mode */
-#define USBHOST_USBCMD_ASP_MASK (3 << USBHOST_USBCMD_ASP_SHIFT)
-#define USBHOST_USBCMD_IAA (1 << 6) /* Bit 6: Interrupt next asynchronous schedule */
-#define USBHOST_USBCMD_ASE (1 << 5) /* Bit 5: Skips processing asynchronous schedule */
-#define USBHOST_USBCMD_PSE (1 << 4) /* Bit 4: Skips processing periodic schedule */
-#define USBHOST_USBCMD_FS1 (1 << 3) /* Bit 3: Bit 1 of the Frame List Size bits */
-#define USBHOST_USBCMD_FS0 (1 << 2) /* Bit 2: Bit 0 of the Frame List Size bits */
-#define USBHOST_USBCMD_RST (1 << 1) /* Bit 1: Controller reset */
-#define USBHOST_USBCMD_RS (1 << 0) /* Bit 0: Run/Stop */
-
-/* USB Status register USBSTS (address 0x19000144) -- Device Mode */
-
-#define USBDEV_USBSTS_NAKI (1 << 16) /* Bit 16: NAK interrupt bit */
-#define USBDEV_USBSTS_SLI (1 << 8) /* Bit 8: DCSuspend */
-#define USBDEV_USBSTS_SRI (1 << 7) /* Bit 7: SOF received */
-#define USBDEV_USBSTS_URI (1 << 6) /* Bit 6: USB reset received */
-#define USBDEV_USBSTS_PCI (1 << 2) /* Bit 2: Port change detect */
-#define USBDEV_USBSTS_UEI (1 << 1) /* Bit 1: USB error interrupt */
-#define USBDEV_USBSTS_UI (1 << 0) /* Bit 0: USB interrupt */
-
-/* USB Status register USBSTS (address 0x19000144) -- Host Mode */
-
-#define USBHOST_USBSTS_UPI (1 << 19) /* Bit 19: USB host periodic interrupt */
-#define USBHOST_USBSTS_UAI (1 << 18) /* Bit 18: USB host asynchronous interrupt */
-#define USBHOST_USBSTS_AS (1 << 15) /* Bit 15: Asynchronous schedule status */
-#define USBHOST_USBSTS_PS (1 << 14) /* Bit 14: Periodic schedule status */
-#define USBHOST_USBSTS_RCL (1 << 13) /* Bit 13: Reclamation */
-#define USBHOST_USBSTS_HCH (1 << 12) /* Bit 12: HCHalted */
-#define USBHOST_USBSTS_SRI (1 << 7) /* Bit 7: SOF received */
-#define USBHOST_USBSTS_AAI (1 << 5) /* Bit 5: Interrupt on async advance */
-#define USBHOST_USBSTS_FRI (1 << 3) /* Bit 3: Frame list roll-over */
-#define USBHOST_USBSTS_PCI (1 << 2) /* Bit 2: Port change detect */
-#define USBHOST_USBSTS_UEI (1 << 1) /* Bit 1: USB error interrupt */
-#define USBHOST_USBSTS_UI (1 << 0) /* Bit 0: USB interrupt */
-
-/* USB interrupt register USBINTR (address 0x19000148) -- Device Mode */
-
-#define USBDEV_USBINTR_NAKE (1 << 16) /* Bit 16: NAK interrupt enable */
-#define USBDEV_USBINTR_SLE (1 << 8) /* Bit 8: Sleep enable */
-#define USBDEV_USBINTR_SRE (1 << 7) /* Bit 7: SOF received enable */
-#define USBDEV_USBINTR_URE (1 << 6) /* Bit 6: USB reset enable */
-#define USBDEV_USBINTR_PCE (1 << 2) /* Bit 2: Port change detect enable */
-#define USBDEV_USBINTR_UEE (1 << 1) /* Bit 1: USB error interrupt enable */
-#define USBDEV_USBINTR_UE (1 << 0) /* Bit 0: USB interrupt enable */
-
-/* USB interrupt register USBINTR (address 0x19000148) -- Host Mode */
-
-#define USBHOST_USBINTR_UPIA (1 << 19) /* Bit 19: USB host periodic interrupt enable */
-#define USBHOST_USBINTR_UAIE (1 << 18) /* Bit 18: USB host asynchronous interrupt enable */
-#define USBHOST_USBINTR_SRE (1 << 7) /* Bit 7: SOF timer interrupt enable */
-#define USBHOST_USBINTR_AAE (1 << 5) /* Bit 5: Interrupt on asynchronous advance enable */
-#define USBHOST_USBINTR_FRE (1 << 3) /* Bit 3: Frame list rollover enable */
-#define USBHOST_USBINTR_PCE (1 << 2) /* Bit 2: Port change detect enable */
-#define USBHOST_USBINTR_UEE (1 << 1) /* Bit 1: USB error interrupt enable */
-#define USBHOST_USBINTR_UE (1 << 0) /* Bit 0: USB interrupt enable */
-
-/* Frame index register FRINDEX (address 0x1900014c) -- Device Mode */
-
-#define USBDEV_FRINDEX_LFN_SHIFT (3) /* Bits 3-13: Frame number of last frame transmitted */
-#define USBDEV_FRINDEX_LFN_MASK (0x7ff << USBDEV_FRINDEX_LFN_SHIFT)
-#define USBDEV_FRINDEX_CUFN_SHIFT (0) /* Bits 0-2: Current micro frame number */
-#define USBDEV_FRINDEX_CUFN_MASK (7 << USBDEV_FRINDEX_CUFN_SHIFT)
-
-/* Frame index register FRINDEX (address 0x1900014c) -- Host Mode */
-
-#define USBHOST_FRINDEX_FLI_SHIFT (3) /* Bits 3-(n+2): Frame list current index */
-#define USBHOST_FRINDEX_FLI_MASK(n) (0x7ff << ((n)+USBHOST_FRINDEX_FLI_SHIFT-1)
-#define USBHOST_FRINDEX_CUFN_SHIFT (0) /* Bits 0-2: Current micro frame number */
-#define USBHOST_FRINDEX_CUFN_MASK (7 << USBHOST_FRINDEX_CUFN_SHIFT)
-
-/* USB Device Address register DEVICEADDR (address 0x19000154) -- Device Mode */
-
-#define USBDEV_DEVICEADDR_SHIFT (25) /* Bits 25-31: USBADR USB device address */
-#define USBDEV_DEVICEADDR_MASK (0x3c << USBDEV_DEVICEADDR_SHIFT)
-#define USBDEV_DEVICEADDR_USBADRA (1 << 24) /* Bit 24: Device address advance */
-
-/* USB Periodic List Base register PERIODICLIST (address 0x19000154) -- Host Mode */
-
-#define USBHOST_PERIODICLIST_PERBASE_SHIFT (12) /* Bits 12-31: Base Address (Low) */
-#define USBHOST_PERIODICLIST_PERBASE_MASK (0x000fffff << USBHOST_PERIODICLIST_PERBASE_SHIFT)
-
-/* USB Endpoint List Address register ENDPOINTLISTADDR (address 0x19000158) -- Device Mode */
-
-#define USBDEV_ENDPOINTLIST_EPBASE_SHIFT (11) /* Bits 11-31: Endpoint list pointer (low) */
-#define USBDEV_ENDPOINTLIST_EPBASE_MASK (0x001fffff << USBDEV_ENDPOINTLIST_EPBASE_SHIFT)
-
-/* USB Asynchronous List Address register ASYNCLISTADDR- (address 0x19000158) -- Host Mode */
-
-#define USBHOST_ASYNCLISTADDR_ASYBASE_SHIFT (5) /* Bits 5-31: Link pointer (Low) LPL */
-#define USBHOST_ASYNCLISTADDR_ASYBASE_MASK (0x07ffffff << USBHOST_ASYNCLISTADDR_ASYBASE_SHIFT)
-
-/* USB TT Control register TTCTRL (address 0x1900015c) -- Host Mode */
-
-#define USBHOST_TTCTRL_TTHA_SHIFT (24) /* Bits 24-30: Hub address */
-#define USBHOST_TTCTRL_TTHA_MASK (0x7f << USBHOST_TTCTRL_TTHA_SHIFT)
-
-/* USB burst size register BURSTSIZE (address 0x19000160) -- Device/Host Mode */
-
-#define USBDEV_BURSTSIZE_TXPBURST_SHIFT (8) /* Bits 8-15: Programmable TX burst length */
-#define USBDEV_BURSTSIZE_TXPBURST_MASK (255 << USBDEV_BURSTSIZE_TXPBURST_SHIFT)
-#define USBDEV_BURSTSIZE_RXPBURST_SHIFT (0) /* Bits 0-7: RXPBURST Programmable RX burst length */
-#define USBDEV_BURSTSIZE_RXPBURST_MASK (255 << USBDEV_BURSTSIZE_RXPBURST_SHIFT)
-
-#define USBHOST_BURSTSIZE_TXPBURST_SHIFT (8) /* Bits 8-15: Programmable TX burst length */
-#define USBHOST_BURSTSIZE_TXPBURST_MASK (255 << USBHOST_BURSTSIZE_TXPBURST_SHIFT)
-#define USBHOST_BURSTSIZE_RXPBURST_SHIFT (0) /* Bits 0-7: RXPBURST Programmable RX burst length */
-#define USBHOST_BURSTSIZE_RXPBURST_MASK (255 << USBHOST_BURSTSIZE_RXPBURST_SHIFT)
-
-/* USB Transfer buffer Fill Tuning register TXFIFOFILLTUNING (address 0x19000164) -- Host Mode */
-
-#define USBHOST_TXFILLTUNING_FIFOTHRES_SHIFT (16) /* Bits 16-21: Scheduler overhead */
-#define USBHOST_TXFILLTUNING_FIFOTHRES_MASK (0x3c << USBHOST_TXFILLTUNING_FIFOTHRES_SHIFT)
-#define USBHOST_TXFILLTUNING_SCHEATLTH_SHIFT (8) /* Bits 8-12: Scheduler health counter */
-#define USBHOST_TXFILLTUNING_SCHEATLTH_MASK (0x1f << USBHOST_TXFILLTUNING_SCHEATLTH_SHIFT)
-#define USBHOST_TXFILLTUNING_SCHOH_SHIFT (0) /* Bits 0-7: FIFO burst threshold */
-#define USBHOST_TXFILLTUNING_SCHOH_MASK (0xff << USBHOST_TXFILLTUNING_SCHOH_SHIFT)
-
-/* USB BINTERVAL register BINTERVAL (address 0x19000174) -- Device/Host Mode */
-
-#define USBDEV_BINTERVAL_SHIFT (0) /* Bits 0-3: bInterval value */
-#define USBDEV_BINTERVAL_MASK (15 << USBDEV_BINTERVAL_SHIFT)
-
-#define USBHOST_BINTERVAL_SHIFT (0) /* Bits 0-3: bInterval value */
-#define USBHOST_BINTERVAL_MASK (15 << USBHOST_BINTERVAL_SHIFT)
-
-/* USB endpoint NAK register ENDPTNAK (address 0x19000178) -- Device Mode */
-
-#define USBDEV_ENDPTNAK_EPTN_SHIFT (16) /* Bits 16-19: Tx endpoint NAK */
-#define USBDEV_ENDPTNAK_EPTN_MASK (15 << USBDEV_ENDPTNAK_EPTN_SHIFT)
-#define USBDEV_ENDPTNAK_EPRN_SHIFT (0) /* Bits 0-3: Rx endpoint NAK */
-#define USBDEV_ENDPTNAK_EPRN_MASK (15 << USBDEV_ENDPTNAK_EPRN_SHIFT)
-
-/* USB Endpoint NAK Enable register ENDPTNAKEN (address 0x1900017c) -- Device Mode */
-
-#define USBDEV_ENDPTNAK_EPTNE_SHIFT (16) /* Bits 16-19: Tx endpoint NAK enable */
-#define USBDEV_ENDPTNAK_EPTNE_MASK (15 << USBDEV_ENDPTNAK_EPTNE_SHIFT)
-#define USBDEV_ENDPTNAK_EPRNE_SHIFT (0) /* Bits 0-3: Rx endpoint NAK enable */
-#define USBDEV_ENDPTNAK_EPRNE_MASK (15 << USBDEV_ENDPTNAK_EPRNE_SHIFT)
-
-/* Port Status and Control register PRTSC1 (address 0x19000184) -- Device Mode */
-
-#define USBDEV_PRTSC1_PSPD_SHIFT (26) /* Bits 26-27: Port speed */
-# define USBDEV_PRTSC1_PSPD_MASK (3 << USBDEV_PRTSC1_PSPD_SHIFT)
-# define USBDEV_PRTSC1_PSPD_FS (0 << USBDEV_PRTSC1_PSPD_SHIFT) /* Full-speed */
-# define USBDEV_PRTSC1_PSPD_HS (2 << USBDEV_PRTSC1_PSPD_SHIFT) /* High-speed */
-# define USBDEV_PRTSC1_PFSC (1 << 24) /* Bit 24: Port force full speed connect */
-#define USBDEV_PRTSC1_PHCD (1 << 23) /* Bit 23: PHY low power suspend - clock disable (PLPSCD) */
-#define USBDEV_PRTSC1_PTC_SHIFT (16) /* Bits 16-19: 19: Port test control */
-#define USBDEV_PRTSC1_PTC_MASK (15 << USBDEV_PRTSC1_PTC_SHIFT)
-# define USBDEV_PRTSC1_PTC_DISABLE (0 << USBDEV_PRTSC1_PTC_SHIFT) /* TEST_MODE_DISABLE */
-# define USBDEV_PRTSC1_PTC_JSTATE (1 << USBDEV_PRTSC1_PTC_SHIFT) /* J_STATE */
-# define USBDEV_PRTSC1_PTC_KSTATE (2 << USBDEV_PRTSC1_PTC_SHIFT) /* K_STATE */
-# define USBDEV_PRTSC1_PTC_SE0 (3 << USBDEV_PRTSC1_PTC_SHIFT) /* SE0 (host)/NAK (device) */
-# define USBDEV_PRTSC1_PTC_PACKET (4 << USBDEV_PRTSC1_PTC_SHIFT) /* Packet */
-# define USBDEV_PRTSC1_PTC_HS (5 << USBDEV_PRTSC1_PTC_SHIFT) /* FORCE_ENABLE_HS */
-# define USBDEV_PRTSC1_PTC_FS (6 << USBDEV_PRTSC1_PTC_SHIFT) /* FORCE_ENABLE_FS */
-#define USBDEV_PRTSC1_PIC_SHIFT (14) /* Bits 14-15: Port indicator control */
-#define USBDEV_PRTSC1_PIC_MASK (3 << USBDEV_PRTSC1_PIC_SHIFT)
-# define USBDEV_PRTSC1_PIC_OFF (0 << USBDEV_PRTSC1_PIC_SHIFT) /* 00 Port indicators are off */
-# define USBDEV_PRTSC1_PIC_AMBER (1 << USBDEV_PRTSC1_PIC_SHIFT) /* 01 amber */
-# define USBDEV_PRTSC1_PIC_GREEN (2 << USBDEV_PRTSC1_PIC_SHIFT) /* 10 green */
-#define USBDEV_PRTSC1_HSP (1 << 9) /* Bit 9: High-speed status */
-#define USBDEV_PRTSC1_PR (1 << 8) /* Bit 8: Port reset */
-#define USBDEV_PRTSC1_SUSP (1 << 7) /* Bit 7: Suspend */
-#define USBDEV_PRTSC1_FPR (1 << 6) /* Bit 6: Force port resume */
-#define USBDEV_PRTSC1_PEC (1 << 3) /* Bit 3: Port enable/disable change */
-#define USBDEV_PRTSC1_PE (1 << 2) /* Bit 2: Port enable */
-#define USBDEV_PRTSC1_CCS (1 << 0) /* Bit 0: Current connect status */
-
-/* Port Status and Control register PRTSC1 (address 0x19000184) -- Host Mode */
-
-#define USBHOST_PRTSC1_PSPD_SHIFT (26) /* Bits 26-27: Port speed */
-#define USBHOST_PRTSC1_PSPD_MASK (3 << USBHOST_PRTSC1_PSPD_SHIFT)
-# define USBHOST_PRTSC1_PSPD_FS (0 << USBHOST_PRTSC1_PSPD_SHIFT) /* Full-speed */
-# define USBHOST_PRTSC1_PSPD_LS (1 << USBHOST_PRTSC1_PSPD_SHIFT) /* Low-speed */
-# define USBHOST_PRTSC1_PSPD_HS (2 << USBHOST_PRTSC1_PSPD_SHIFT) /* High-speed */
-#define USBHOST_PRTSC1_PFSC (1 << 24) /* Bit 24: Port force full speed connect */
-#define USBHOST_PRTSC1_PHCD (1 << 23) /* Bit 23: PHY low power suspend - clock disable (PLPSCD) */
-#define USBHOST_PRTSC1_WKOC (1 << 22) /* Bit 22: Wake on over-current enable (WKOC_E) */
-#define USBHOST_PRTSC1_WKDC (1 << 21) /* Bit 21: Wake on disconnect enable (WKDSCNNT_E) */
-#define USBHOST_PRTSC1_WKCN (1 << 20) /* Bit 20: Wake on connect enable (WKCNNT_E) */
-#define USBHOST_PRTSC1_PTC_SHIFT (16) /* Bits 16-19: Port test control */
-#define USBHOST_PRTSC1_PTC_MASK (15 << USBHOST_PRTSC1_PTC_SHIFT)
-# define USBHOST_PRTSC1_PTC_DISABLE (0 << USBHOST_PRTSC1_PTC_SHIFT) /* 0000 TEST_MODE_DISABLE */
-# define USBHOST_PRTSC1_PTC_JSTATE (1 << USBHOST_PRTSC1_PTC_SHIFT) /* 0001 J_STATE */
-# define USBHOST_PRTSC1_PTC_KSTATE (2 << USBHOST_PRTSC1_PTC_SHIFT) /* 0010 K_STATE */
-# define USBHOST_PRTSC1_PTC_SE0 (3 << USBHOST_PRTSC1_PTC_SHIFT) /* 0011 SE0 (host)/NAK (device) */
-# define USBHOST_PRTSC1_PTC_PACKET (4 << USBHOST_PRTSC1_PTC_SHIFT) /* 0100 Packet */
-# define USBHOST_PRTSC1_PTC_HS (5 << USBHOST_PRTSC1_PTC_SHIFT) /* 0101 FORCE_ENABLE_HS */
-# define USBHOST_PRTSC1_PTC_FS (6 << USBHOST_PRTSC1_PTC_SHIFT) /* 0110 FORCE_ENABLE_FS */
-# define USBHOST_PRTSC1_PTC_LS (7 << USBHOST_PRTSC1_PTC_SHIFT) /* 0111 FORCE_ENABLE_LS */
-#define USBHOST_PRTSC1_PIC_SHIFT (14) /* Bits 14-15: Port indicator control */
-#define USBHOST_PRTSC1_PIC_MASK (3 << USBHOST_PRTSC1_PIC_SHIFT)
-# define USBHOST_PRTSC1_PIC_OFF (0 << USBHOST_PRTSC1_PIC_SHIFT) /* 00 Port indicators are off */
-# define USBHOST_PRTSC1_PIC_AMBER (1 << USBHOST_PRTSC1_PIC_SHIFT) /* 01 Amber */
-# define USBHOST_PRTSC1_PIC_GREEN (2 << USBHOST_PRTSC1_PIC_SHIFT) /* 10 Green */
-#define USBHOST_PRTSC1_PP (1 << 12) /* Bit 12: Port power control */
-#define USBHOST_PRTSC1_LS_SHIFT (10) /* Bits 10-11: Line status */
-#define USBHOST_PRTSC1_LS_MASK (3 << USBHOST_PRTSC1_LS_SHIFT)
-# define USBHOST_PRTSC1_LS_SE0 (0 << USBHOST_PRTSC1_LS_SHIFT) /* SE0 (USB_DP and USB_DM LOW) */
-# define USBHOST_PRTSC1_LS_JSTATE (2 << USBHOST_PRTSC1_LS_SHIFT) /* J-state (USB_DP HIGH and USB_DM LOW) */
-# define USBHOST_PRTSC1_LS_KSTATE (1 << USBHOST_PRTSC1_LS_SHIFT) /* K-state (USB_DP LOW and USB_DM HIGH) */
-#define USBHOST_PRTSC1_HSP (1 << 9) /* Bit 9: High-speed status */
-#define USBHOST_PRTSC1_PR (1 << 8) /* Bit 8: Port reset */
-#define USBHOST_PRTSC1_SUSP (1 << 7) /* Bit 7: Suspend */
-#define USBHOST_PRTSC1_FPR (1 << 6) /* Bit 6: Force port resume */
-#define USBHOST_PRTSC1_OCC (1 << 5) /* Bit 5: Over-current change */
-#define USBHOST_PRTSC1_OCA (1 << 4) /* Bit 4: Over-current active */
-#define USBHOST_PRTSC1_PEC (1 << 3) /* Bit 3: Port disable/enable change */
-#define USBHOST_PRTSC1_PE (1 << 2) /* Bit 2: Port enable */
-#define USBHOST_PRTSC1_CSC (1 << 1) /* Bit 1: Connect status change */
-#define USBHOST_PRTSC1_CCS (1 << 0) /* Bit 0: Current connect status */
-
-/* OTG Status and Control register (OTGSC - address 0x190001a4) */
-
-/* OTG interrupt enable */
-
-#define USBOTG_OTGSC_DPIE (1 << 30) /* Bit 30: Data pulse interrupt enable */
-#define USBOTG_OTGSC_1MSE (1 << 29) /* Bit 29: 1 millisecond timer interrupt enable */
-#define USBOTG_OTGSC_BSEIE (1 << 28) /* Bit 28: B-session end interrupt enable */
-#define USBOTG_OTGSC_BSVIE (1 << 27) /* Bit 27: B-session valid interrupt enable */
-#define USBOTG_OTGSC_ASVIE (1 << 26) /* Bit 26: A-session valid interrupt enable */
-#define USBOTG_OTGSC_AVVIE (1 << 25) /* Bit 25: A-VBUS valid interrupt enable */
-#define USBOTG_OTGSC_IDIE (1 << 24) /* Bit 24: USB ID interrupt enable */
-
-/* OTG interrupt status */
-
-#define USBOTG_OTGSC_DPIS (1 << 22) /* Bit 22: Data pulse interrupt status */
-#define USBOTG_OTGSC_1MSS (1 << 21) /* Bit 21: 1 millisecond timer interrupt status */
-#define USBOTG_OTGSC_BSEIS (1 << 20) /* Bit 20: B-Session end interrupt status */
-#define USBOTG_OTGSC_BSVIS (1 << 19) /* Bit 19: B-Session valid interrupt status */
-#define USBOTG_OTGSC_ASVIS (1 << 18) /* Bit 18: A-Session valid interrupt status */
-#define USBOTG_OTGSC_AVVIS (1 << 17) /* Bit 17: A-VBUS valid interrupt status */
-#define USBOTG_OTGSC_IDIS (1 << 16) /* Bit 16: USB ID interrupt status */
-
-/* OTG status inputs */
-
-#define USBOTG_OTGSC_DPS (1 << 14) /* Bit 14: Data bus pulsing status */
-#define USBOTG_OTGSC_1MST (1 << 13) /* Bit 13: 1 millisecond timer toggle */
-#define USBOTG_OTGSC_BSE (1 << 12) /* Bit 12: B-session end */
-#define USBOTG_OTGSC_BSV (1 << 11) /* Bit 11: B-session valid */
-#define USBOTG_OTGSC_ASV (1 << 10) /* Bit 10: A-session valid */
-#define USBOTG_OTGSC_AVV (1 << 9) /* Bit 9: A-VBUS valid */
-#define USBOTG_OTGSC_ID (1 << 8) /* Bit 8: USB ID */
-
-/* OTG controls */
-
-#define USBOTG_OTGSC_HABA (1 << 7) /* Bit 7: Hardware assist B-disconnect to A-connect */
-#define USBOTG_OTGSC_HADP (1 << 6) /* Bit 6: Hardware assist data pulse */
-#define USBOTG_OTGSC_IDPU (1 << 5) /* Bit 5: ID pull-up */
-#define USBOTG_OTGSC_DP (1 << 4) /* Bit 4: Data pulsing */
-#define USBOTG_OTGSC_OT (1 << 3) /* Bit 3: OTG termination */
-#define USBOTG_OTGSC_HAAR (1 << 2) /* Bit 2: Hardware assist auto_reset */
-#define USBOTG_OTGSC_VC (1 << 1) /* Bit 1: VBUS_Charge */
-#define USBOTG_OTGSC_VD (1 << 0) /* Bit 0: VBUS_Discharge */
-
-/* USB Mode register USBMODE (address 0x190001a8) -- Device Mode */
-
-#define USBDEV_USBMODE_SDIS (1 << 4) /* Bit 4: Stream disable mode */
-#define USBDEV_USBMODE_SLOM (1 << 3) /* Bit 3: Setup Lockout mode */
-#define USBDEV_USBMODE_ES (1 << 2) /* Bit 2: Endian select */
-#define USBDEV_USBMODE_CM_SHIFT (0) /* Bits 0-1: Controller mode */
-#define USBDEV_USBMODE_CM_MASK (3 << USBDEV_USBMODE_CM_SHIFT)
-# define USBDEV_USBMODE_CMIDLE (0 << USBDEV_USBMODE_CM_SHIFT) /* Idle */
-# define USBDEV_USBMODE_CMDEVICE (2 << USBDEV_USBMODE_CM_SHIFT) /* Device controller */
-# define USBDEV_USBMODE_CMHOST (3 << USBDEV_USBMODE_CM_SHIFT) /* Host controller */
-
-/* USB Mode register USBMODE (address 0x190001a8) -- Device Mode */
-
-#define USBHOST_USBMODE_VBPS (1 << 5) /* Bit 5: VBUS power select */
-#define USBHOST_USBMODE_SDIS (1 << 4) /* Bit 4: Stream disable mode */
-#define USBHOST_USBMODE_ES (1 << 2) /* Bit 2: Endian select */
-#define USBHOST_USBMODE_CM_SHIFT (0) /* Bits 0-1: Controller mode */
-#define USBHOST_USBMODE_CM_MASK (3 << USBHOST_USBMODE_CM_SHIFT)
-# define USBHOST_USBMODE_CMIDLE (0 << USBHOST_USBMODE_CM_SHIFT) /* Idle */
-# define USBHOST_USBMODE_CMDEVICE (2 << USBHOST_USBMODE_CM_SHIFT) /* Device controller */
-# define USBHOST_USBMODE_CMHOST (3 << USBHOST_USBMODE_CM_SHIFT) /* Host controller */
-
-/* Device endpoint registers */
-
-/* USB Endpoint Setup Status register ENDPTSETUPSTAT (address 0x190001ac) */
-
-#define USBDEV_ENDPTSETSTAT_STAT3 (1 << 3) /* Bit 3: Setup EP status for logical EP 3 */
-#define USBDEV_ENDPTSETSTAT_STAT2 (1 << 2) /* Bit 2: Setup EP status for logical EP 2 */
-#define USBDEV_ENDPTSETSTAT_STAT1 (1 << 1) /* Bit 1: Setup EP status for logical EP 1 */
-#define USBDEV_ENDPTSETSTAT_STAT0 (1 << 0) /* Bit 0: Setup EP status for logical EP 0 */
-
-/* USB Endpoint Prime register ENDPTPRIME (address 0x190001b0) */
-
-#define USBDEV_ENDPTPRIM_PETB3 (1 << 19) /* Bit 19: Prime EP xmt buffer for physical IN EP 3 */
-#define USBDEV_ENDPTPRIM_PETB2 (1 << 18) /* Bit 18: Prime EP xmt buffer for physical IN EP 2 */
-#define USBDEV_ENDPTPRIM_PETB1 (1 << 17) /* Bit 17: Prime EP xmt buffer for physical IN EP 1 */
-#define USBDEV_ENDPTPRIM_PETB0 (1 << 16) /* Bit 16: Prime EP xmt buffer for physical IN EP 0 */
-#define USBDEV_ENDPTPRIM_PERB3 (1 << 3) /* Bit 3: Prime EP recv buffer for physical OUT EP 3 */
-#define USBDEV_ENDPTPRIM_PERB2 (1 << 2) /* Bit 2: Prime EP recv buffer for physical OUT EP 2 */
-#define USBDEV_ENDPTPRIM_PERB1 (1 << 1) /* Bit 1: Prime EP recv buffer for physical OUT EP 1 */
-#define USBDEV_ENDPTPRIM_PERB0 (1 << 0) /* Bit 0: Prime EP recv buffer for physical OUT EP 0 */
-
-/* USB Endpoint Flush register ENDPTFLUSH(address 0x190001b4) */
-
-#define USBDEV_ENDPTFLUSH_FETB3 (1 << 19) /* Bit 19: Flush EP xmt buffer for physical IN EP 3 */
-#define USBDEV_ENDPTFLUSH_FETB2 (1 << 18) /* Bit 18: Flush EP xmt buffer for physical IN EP 2 */
-#define USBDEV_ENDPTFLUSH_FETB1 (1 << 17) /* Bit 17: Flush EP xmt buffer for physical IN EP 1 */
-#define USBDEV_ENDPTFLUSH_FETB0 (1 << 16) /* Bit 16: Flush EP xmt buffer for physical IN EP 0 */
-#define USBDEV_ENDPTFLUSH_FERB3 (1 << 3) /* Bit 3: Flush EP recv buffer for physical OUT EP 3 */
-#define USBDEV_ENDPTFLUSH_FERB2 (1 << 2) /* Bit 2: Flush EP recv buffer for physical OUT EP 2 */
-#define USBDEV_ENDPTFLUSH_FERB1 (1 << 1) /* Bit 1: Flush EP recv buffer for physical OUT EP 1 */
-#define USBDEV_ENDPTFLUSH_FERB0 (1 << 0) /* Bit 0: Flush EP recv buffer for physical OUT EP 0 */
-
-/* USB Endpoint Status register ENDPTSTATUS (address 0x190001b8) */
-
-#define USBDEV_ENDPTSTATUS_ETBR3 (1 << 19) /* Bit 19: EP xmt buffer ready for physical IN EP 3 */
-#define USBDEV_ENDPTSTATUS_ETBR2 (1 << 18) /* Bit 18: EP xmt buffer ready for physical IN EP 2 */
-#define USBDEV_ENDPTSTATUS_ETBR1 (1 << 17) /* Bit 17: EP xmt buffer ready for physical IN EP 1 */
-#define USBDEV_ENDPTSTATUS_ETBR0 (1 << 16) /* Bit 16: EP xmt buffer ready for physical IN EP 0 */
-#define USBDEV_ENDPTSTATUS_ERBR3 (1 << 3) /* Bit 3: EP recv buffer ready for physical OUT EP 3 */
-#define USBDEV_ENDPTSTATUS_ERBR2 (1 << 2) /* Bit 2: EP recv buffer ready for physical OUT EP 2 */
-#define USBDEV_ENDPTSTATUS_ERBR1 (1 << 1) /* Bit 1: EP recv buffer ready for physical OUT EP 1 */
-#define USBDEV_ENDPTSTATUS_ERBR0 (1 << 0) /* Bit 0: EP recv buffer ready for physical OUT EP 0 */
-
-/* USB Endpoint Complete register ENDPTCOMPLETE (address 0x190001bc) */
-
-#define USBDEV_ENDPTCOMPLETE_ETCE3 (1 << 19) /* Bit 19: EP xmt complete event for physical IN EP 3 */
-#define USBDEV_ENDPTCOMPLETE_ETCE2 (1 << 18) /* Bit 18: EP xmt complete event for physical IN EP 2 */
-#define USBDEV_ENDPTCOMPLETE_ETCE1 (1 << 17) /* Bit 17: EP xmt complete event for physical IN EP 1 */
-#define USBDEV_ENDPTCOMPLETE_ETCE0 (1 << 16) /* Bit 16: EP xmt complete event for physical IN EP 0 */
-#define USBDEV_ENDPTCOMPLETE_ERCE3 (1 << 3) /* Bit 3: EP recv complete event for physical OUT EP 3 */
-#define USBDEV_ENDPTCOMPLETE_ERCE2 (1 << 2) /* Bit 2: EP recv complete event for physical OUT EP 2 */
-#define USBDEV_ENDPTCOMPLETE_ERCE1 (1 << 1) /* Bit 1: EP recv complete event for physical OUT EP 1 */
-#define USBDEV_ENDPTCOMPLETE_ERCE0 (1 << 0) /* Bit 0: EP recv complete event for physical OUT EP 0 */
-
-/* USB Endpoint 0 Control register ENDPTCTRL0 (address 0x190001c0) */
-
-#define USBDEV_ENDPTCTRL0_TXE (1 << 23) /* Bit 23: Tx endpoint enable */
-#define USBDEV_ENDPTCTRL0_TXT_SHIFT (18) /* Bits 18-19: Tx endpoint type */
-#define USBDEV_ENDPTCTRL0_TXT_MASK (3 << USBDEV_ENDPTCTRL0_TXT_SHIFT)
-# define USBDEV_ENDPTCTRL0_TXT_CTRL (0 << USBDEV_ENDPTCTRL0_TXT_SHIFT) /* Control */
-#define USBDEV_ENDPTCTRL0_TXS (1 << 16) /* Bit 16: Tx endpoint stall */
-#define USBDEV_ENDPTCTRL0_RXE (1 << 7) /* Bit 7: Rx endpoint enable */
-#define USBDEV_ENDPTCTRL0_RXT_SHIFT (2) /* Bits 2-3: Endpoint type */
-#define USBDEV_ENDPTCTR0L_RXT_MASK (3 << USBDEV_ENDPTCTRL0_RXT_SHIFT)
-# define USBDEV_ENDPTCTRL0_RXT_CTRL (0 << USBDEV_ENDPTCTRL0_RXT_SHIFT) /* Control */
-#define USBDEV_ENDPTCTRL0_RXS (1 << 0) /* Bit 0: Rx endpoint stall */
-
-/* USB Endpoint 1-3 control registers ENDPTCTRL1-ENDPPTCTRL3 (address 0x190001c4-0x190001cc) */
-
-#define USBDEV_ENDPTCTRL_TXE (1 << 23) /* Bit 23: Tx endpoint enable */
-#define USBDEV_ENDPTCTRL_TXR (1 << 22) /* Bit 22: Tx data toggle reset */
-#define USBDEV_ENDPTCTRL_TXI (1 << 21) /* Bit 21: Tx data toggle inhibit */
-#define USBDEV_ENDPTCTRL_TXT_SHIFT (18) /* Bits 18-19: Tx endpoint type */
-#define USBDEV_ENDPTCTRL_TXT_MASK (3 << USBDEV_ENDPTCTRL_TXT_SHIFT)
-# define USBDEV_ENDPTCTRL_TXT_CTRL (0 << USBDEV_ENDPTCTRL_TXT_SHIFT) /* Control */
-# define USBDEV_ENDPTCTRL_TXT_ISOC (1 << USBDEV_ENDPTCTRL_TXT_SHIFT) /* Isochronous */
-# define USBDEV_ENDPTCTRL_TXT_BULK (2 << USBDEV_ENDPTCTRL_TXT_SHIFT) /* Bulk */
-# define USBDEV_ENDPTCTRL_TXT_INTR (3 << USBDEV_ENDPTCTRL_TXT_SHIFT) /* Interrupt */
-#define USBDEV_ENDPTCTRL_TXS (1 << 16) /* Bit 16: Tx endpoint stall */
-#define USBDEV_ENDPTCTRL_RXE (1 << 7) /* Bit 7: Rx endpoint enable */
-#define USBDEV_ENDPTCTRL_RXR (1 << 6) /* Bit 6: Rx data toggle reset */
-#define USBDEV_ENDPTCTRL_RXI (1 << 5) /* Bit 5: Rx data toggle inhibit */
-#define USBDEV_ENDPTCTRL_RXT_SHIFT (2) /* Bits 2-3: Endpoint type */
-#define USBDEV_ENDPTCTRL_RXT_MASK (3 << USBDEV_ENDPTCTRL_RXT_SHIFT)
-# define USBDEV_ENDPTCTRL_RXT_CTRL (0 << USBDEV_ENDPTCTRL_RXT_SHIFT) /* Control */
-# define USBDEV_ENDPTCTRL_RXT_ISOC (1 << USBDEV_ENDPTCTRL_RXT_SHIFT) /* Isochronous */
-# define USBDEV_ENDPTCTRL_RXT_BULK (2 << USBDEV_ENDPTCTRL_RXT_SHIFT) /* Bulk */
-#define USBDEV_ENDPTCTRL_RXS (1 << 0) /* Bit 0: Rx endpoint stall */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_USBOTG_H */
diff --git a/nuttx/arch/arm/src/lpc313x/lpc313x_wdt.h b/nuttx/arch/arm/src/lpc313x/lpc313x_wdt.h
deleted file mode 100755
index f3652bd73..000000000
--- a/nuttx/arch/arm/src/lpc313x/lpc313x_wdt.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/************************************************************************************************
- * arch/arm/src/lpc313x/lpc313x_wdt.h
- *
- * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ************************************************************************************************/
-
-#ifndef __ARCH_ARM_SRC_LPC313X_WDT_H
-#define __ARCH_ARM_SRC_LPC313X_WDT_H
-
-/************************************************************************************************
- * Included Files
- ************************************************************************************************/
-
-#include <nuttx/config.h>
-#include "lpc313x_memorymap.h"
-
-/************************************************************************************************
- * Pre-processor Definitions
- ************************************************************************************************/
-
-/* WDT register base address offset into the APB0 domain ****************************************/
-
-#define LPC313X_WDT_VBASE (LPC313X_APB0_VADDR+LPC313X_APB0_WDT_OFFSET)
-#define LPC313X_WDT_PBASE (LPC313X_APB0_PADDR+LPC313X_APB0_WDT_OFFSET)
-
-/* WDT register offsets (with respect to the WDT base) ******************************************/
-
-#define LPC313X_WDT_IR_OFFSET 0x000 /* Interrupt Register */
-#define LPC313X_WDT_TCR_OFFSET 0x004 /* Timer Control Register */
-#define LPC313X_WDT_TC_OFFSET 0x008 /* Timer Counter */
-#define LPC313X_WDT_PR_OFFSET 0x00c /* Timer Prescale Register */
-#define LPC313X_WDT_PC_OFFSET 0x010 /* Prescale Counter */
-#define LPC313X_WDT_MCR_OFFSET 0x014 /* Match Control Register */
-#define LPC313X_WDT_MR0_OFFSET 0x018 /* Match Register 0 */
-#define LPC313X_WDT_MR1_OFFSET 0x01c /* Match Register 1 */
- /* 0x020-0x038: Reserved */
-#define LPC313X_WDT_EMR_OFFSET 0x03c /* External Match Register */
-
-/* WDT register (virtual) addresses *************************************************************/
-
-#define LPC313X_WDT_IR (LPC313X_WDT_VBASE+LPC313X_WDT_IR_OFFSET)
-#define LPC313X_WDT_TCR (LPC313X_WDT_VBASE+LPC313X_WDT_TCR_OFFSET)
-#define LPC313X_WDT_TC (LPC313X_WDT_VBASE+LPC313X_WDT_TC_OFFSET)
-#define LPC313X_WDT_PR (LPC313X_WDT_VBASE+LPC313X_WDT_PR_OFFSET)
-#define LPC313X_WDT_PC (LPC313X_WDT_VBASE+LPC313X_WDT_PC_OFFSET)
-#define LPC313X_WDT_MCR (LPC313X_WDT_VBASE+LPC313X_WDT_MCR_OFFSET)
-#define LPC313X_WDT_MR0 (LPC313X_WDT_VBASE+LPC313X_WDT_MR0_OFFSET)
-#define LPC313X_WDT_MR1 (LPC313X_WDT_VBASE+LPC313X_WDT_MR1_OFFSET)
-#define LPC313X_WDT_EMR (LPC313X_WDT_VBASE+LPC313X_WDT_EMR_OFFSET)
-
-/* WDT register bit definitions *****************************************************************/
-
-/* Interrupt Register (IR), address 0x13002400 */
-
-#define WDT_IR_INTRM1 (1 << 1) /* Bit 1: MR1 and TC match interrupt */
-#define WDT_IR_INTRM0 (1 << 0) /* Bit 0: MR0 and TC match interrupt */
-
-/* Timer Control Register (TCR), address 0x13002404 */
-
-#define WDT_TCR_RESET (1 << 1) /* Bit 1: Reset on the next WDOG_PCLK */
-#define WDT_TCR_ENABLE (1 << 0) /* Bit 0: Enable */
-
-/* Match Control Register (MCR), address 0x1300 2414 */
-
-#define WDT_MCR_MR1STOP (1 << 5) /* Bit 5: Stop counting when MR1=TC */
-#define WDT_MCR_MR1RESET (1 << 4) /* Bit 4: Reset TC if MR1=TC */
-#define WDT_MCR_MR1INT (1 << 3) /* Bit 3: System reset when MR1=TC */
-#define WDT_MCR_MR0STOP (1 << 2) /* Bit 2: Stop counting when MR0=TC */
-#define WDT_MCR_MR0RESET (1 << 1) /* Bit 1: Reset TC if MR0=TC */
-#define WDT_MCR_MR0INT (1 << 0) /* Bit 0: System reset when MR0=TC */
-
-/* External Match Registers (EMR), address 0x1300 243c */
-
-#define WDT_EMR_EXTMATCHCTRL1_SHIFT (6) /* Bits 6-7: Controls EXTMATCH1 when MR1=TC */
-#define WDT_EMR_EXTMATCHCTRL1_MASK (3 << WDT_EMR_EXTMATCHCTRL1_SHIFT)
-# define WDT_EMR_EXTMATCHCTRL1_NOTHING (0 << WDT_EMR_EXTMATCHCTRL1_SHIFT) /* Do Nothing */
-# define WDT_EMR_EXTMATCHCTRL1_SETLOW (1 << WDT_EMR_EXTMATCHCTRL1_SHIFT) /* Set LOW */
-# define WDT_EMR_EXTMATCHCTRL1_SETHIGH (2 << WDT_EMR_EXTMATCHCTRL1_SHIFT) /* Set HIGH */
-# define WDT_EMR_EXTMATCHCTRL1_TOGGLE (3 << WDT_EMR_EXTMATCHCTRL1_SHIFT) /* Toggle */
-#define WDT_EMR_EXTMATCHCTRL0_SHIFT (4) /* Bits 4-5: Controls EXTMATCH0 when MR0=TC */
-#define WDT_EMR_EXTMATCHCTRL0_MASK (3 << WDT_EMR_EXTMATCHCTRL0_SHIFT)
-# define WDT_EMR_EXTMATCHCTRL0_NOTHING (0 << WDT_EMR_EXTMATCHCTRL0_SHIFT) /* Do Nothing */
-# define WDT_EMR_EXTMATCHCTRL0_SETLOW (1 << WDT_EMR_EXTMATCHCTRL0_SHIFT) /* Set LOW */
-# define WDT_EMR_EXTMATCHCTRL0_SETHIGH (2 << WDT_EMR_EXTMATCHCTRL0_SHIFT) /* Set HIGH */
-# define WDT_EMR_EXTMATCHCTRL0_TOGGLE (3 << WDT_EMR_EXTMATCHCTRL0_SHIFT) /* Toggle */
-#define WDT_EMR_EXTMATCH1 (1 << 1) /* Bit 1: EXTMATCHCTRL1 controls behavior */
-#define WDT_EMR_EXTMATCH0 (1 << 0) /* Bit 0: EXTMATCHCTRL1 controls behavior */
-
-/************************************************************************************************
- * Public Types
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Data
- ************************************************************************************************/
-
-/************************************************************************************************
- * Public Functions
- ************************************************************************************************/
-
-#endif /* __ARCH_ARM_SRC_LPC313X_WDT_H */