diff options
author | Joachim Eastwood <manabian@gmail.com> | 2015-05-11 18:00:47 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2015-05-15 15:43:56 -0400 |
commit | e8d235d4d8fb8957bae5f6ed4521115203a00d8b (patch) | |
tree | e60031e922176c3650dab7999c9279198074a0d7 | |
parent | 9b799b78372c925d3204567741e3ff8fe0cc1c7d (diff) |
ARM: lpc18xx: add basic support for NXP LPC18xx/43xx SoCs
Add support for NXP's LPC18xx (Cortex-M3) and LPC43xx (Cortex-M4)
SoCs. These SoCs are NXP's high preformance MCU line and can run at
clock speeds up to 180 MHz for LPC18xx and 204 MHz for LPC43xx.
LPC43xx is more or less a LPC18xx with a Cortex-M4F core and a few
extra peripherals. The LPC43xx series also features one or two
Cortex-M0 cores that can be used to offload the main M4 core.
Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | arch/arm/Kconfig | 20 | ||||
-rw-r--r-- | arch/arm/Kconfig.debug | 3 | ||||
-rw-r--r-- | arch/arm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-lpc18xx/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-lpc18xx/Makefile.boot | 3 | ||||
-rw-r--r-- | arch/arm/mach-lpc18xx/board-dt.c | 22 |
6 files changed, 49 insertions, 1 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 99544479ab01..16b47afb60f1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -586,6 +586,26 @@ config ARCH_W90X900 | |||
586 | <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ | 586 | <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ |
587 | ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller> | 587 | ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller> |
588 | 588 | ||
589 | config ARCH_LPC18XX | ||
590 | bool "NXP LPC18xx/LPC43xx" | ||
591 | depends on !MMU | ||
592 | select ARCH_HAS_RESET_CONTROLLER | ||
593 | select ARCH_REQUIRE_GPIOLIB | ||
594 | select ARM_AMBA | ||
595 | select ARM_NVIC | ||
596 | select AUTO_ZRELADDR | ||
597 | select CLKSRC_LPC32XX | ||
598 | select COMMON_CLK | ||
599 | select CPU_V7M | ||
600 | select GENERIC_CLOCKEVENTS | ||
601 | select NO_IOPORT_MAP | ||
602 | select PINCTRL | ||
603 | select SPARSE_IRQ | ||
604 | select USE_OF | ||
605 | help | ||
606 | Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4 | ||
607 | high performance microcontrollers. | ||
608 | |||
589 | config ARCH_LPC32XX | 609 | config ARCH_LPC32XX |
590 | bool "NXP LPC32XX" | 610 | bool "NXP LPC32XX" |
591 | select ARCH_REQUIRE_GPIOLIB | 611 | select ARCH_REQUIRE_GPIOLIB |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 7ed976a719b3..8e354a710d0b 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -1368,6 +1368,7 @@ config DEBUG_UART_PHYS | |||
1368 | default 0x20201000 if DEBUG_BCM2835 | 1368 | default 0x20201000 if DEBUG_BCM2835 |
1369 | default 0x3e000000 if DEBUG_BCM_KONA_UART | 1369 | default 0x3e000000 if DEBUG_BCM_KONA_UART |
1370 | default 0x4000e400 if DEBUG_LL_UART_EFM32 | 1370 | default 0x4000e400 if DEBUG_LL_UART_EFM32 |
1371 | default 0x40081000 if ARCH_LPC18XX | ||
1371 | default 0x40090000 if ARCH_LPC32XX | 1372 | default 0x40090000 if ARCH_LPC32XX |
1372 | default 0x40100000 if DEBUG_PXA_UART1 | 1373 | default 0x40100000 if DEBUG_PXA_UART1 |
1373 | default 0x42000000 if ARCH_GEMINI | 1374 | default 0x42000000 if ARCH_GEMINI |
@@ -1574,7 +1575,7 @@ config UNCOMPRESS_INCLUDE | |||
1574 | string | 1575 | string |
1575 | default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \ | 1576 | default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \ |
1576 | PLAT_SAMSUNG || ARCH_EFM32 || \ | 1577 | PLAT_SAMSUNG || ARCH_EFM32 || \ |
1577 | ARCH_SHMOBILE_LEGACY | 1578 | ARCH_SHMOBILE_LEGACY || ARCH_LPC18XX |
1578 | default "mach/uncompress.h" | 1579 | default "mach/uncompress.h" |
1579 | 1580 | ||
1580 | config EARLY_PRINTK | 1581 | config EARLY_PRINTK |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index d7af1922f56f..16bfd585585c 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -167,6 +167,7 @@ machine-$(CONFIG_ARCH_IOP33X) += iop33x | |||
167 | machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx | 167 | machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx |
168 | machine-$(CONFIG_ARCH_KEYSTONE) += keystone | 168 | machine-$(CONFIG_ARCH_KEYSTONE) += keystone |
169 | machine-$(CONFIG_ARCH_KS8695) += ks8695 | 169 | machine-$(CONFIG_ARCH_KS8695) += ks8695 |
170 | machine-$(CONFIG_ARCH_LPC18XX) += lpc18xx | ||
170 | machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx | 171 | machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx |
171 | machine-$(CONFIG_ARCH_MESON) += meson | 172 | machine-$(CONFIG_ARCH_MESON) += meson |
172 | machine-$(CONFIG_ARCH_MMP) += mmp | 173 | machine-$(CONFIG_ARCH_MMP) += mmp |
diff --git a/arch/arm/mach-lpc18xx/Makefile b/arch/arm/mach-lpc18xx/Makefile new file mode 100644 index 000000000000..bd0b7b5d6e9d --- /dev/null +++ b/arch/arm/mach-lpc18xx/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y += board-dt.o | |||
diff --git a/arch/arm/mach-lpc18xx/Makefile.boot b/arch/arm/mach-lpc18xx/Makefile.boot new file mode 100644 index 000000000000..eacfc3f5c33e --- /dev/null +++ b/arch/arm/mach-lpc18xx/Makefile.boot | |||
@@ -0,0 +1,3 @@ | |||
1 | # Empty file waiting for deletion once Makefile.boot isn't needed any more. | ||
2 | # Patch waits for application at | ||
3 | # http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7889/1 . | ||
diff --git a/arch/arm/mach-lpc18xx/board-dt.c b/arch/arm/mach-lpc18xx/board-dt.c new file mode 100644 index 000000000000..fdcee78d1bc4 --- /dev/null +++ b/arch/arm/mach-lpc18xx/board-dt.c | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * Device Tree board file for NXP LPC18xx/43xx | ||
3 | * | ||
4 | * Copyright (C) 2015 Joachim Eastwood <manabian@gmail.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <asm/mach/arch.h> | ||
12 | |||
13 | static const char *const lpc18xx_43xx_compat[] __initconst = { | ||
14 | "nxp,lpc1850", | ||
15 | "nxp,lpc4350", | ||
16 | "nxp,lpc4370", | ||
17 | NULL | ||
18 | }; | ||
19 | |||
20 | DT_MACHINE_START(LPC18XXDT, "NXP LPC18xx/43xx (Device Tree)") | ||
21 | .dt_compat = lpc18xx_43xx_compat, | ||
22 | MACHINE_END | ||