aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2011-11-17 08:36:23 -0500
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2013-12-16 11:51:33 -0500
commit6d85e2b0b6bed6ae7070426d5e43174c593e075c (patch)
tree43025c22a958a6634adcae71d336f9f8dde09cf4
parent319e2e3f63c348a9b66db4667efa73178e18b17d (diff)
ARM: new platform for Energy Micro's EFM32 Cortex-M3 SoCs
There are still some missing parts (e.g. board support, device trees), but with these bits added on top of this patch I can successfully boot a EFM32GG-DK3750 board that uses an EFM32GG990F1024. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r--arch/arm/Kconfig22
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/configs/efm32_defconfig102
-rw-r--r--arch/arm/mach-efm32/Makefile1
-rw-r--r--arch/arm/mach-efm32/Makefile.boot3
-rw-r--r--arch/arm/mach-efm32/dtmachine.c15
-rw-r--r--arch/arm/mach-efm32/include/mach/entry-macro.S4
-rw-r--r--arch/arm/mach-efm32/include/mach/timex.h3
8 files changed, 150 insertions, 1 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c1f1a7eee953..6808460a48ba 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -410,6 +410,26 @@ config ARCH_EBSA110
410 Ethernet interface, two PCMCIA sockets, two serial ports and a 410 Ethernet interface, two PCMCIA sockets, two serial ports and a
411 parallel port. 411 parallel port.
412 412
413config ARCH_EFM32
414 bool "Energy Micro efm32"
415 depends on !MMU
416 select ARCH_REQUIRE_GPIOLIB
417 select ARM_NVIC
418 # CLKSRC_MMIO is wrong here, but needed until a proper fix is merged,
419 # i.e. CLKSRC_EFM32 selecting CLKSRC_MMIO
420 select CLKSRC_MMIO
421 select CLKSRC_OF
422 select COMMON_CLK
423 select CPU_V7M
424 select GENERIC_CLOCKEVENTS
425 select NO_DMA
426 select NO_IOPORT
427 select SPARSE_IRQ
428 select USE_OF
429 help
430 Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko
431 processors.
432
413config ARCH_EP93XX 433config ARCH_EP93XX
414 bool "EP93xx-based" 434 bool "EP93xx-based"
415 select ARCH_HAS_HOLES_MEMORYMODEL 435 select ARCH_HAS_HOLES_MEMORYMODEL
@@ -1799,7 +1819,7 @@ config FORCE_MAX_ZONEORDER
1799 int "Maximum zone order" if ARCH_SHMOBILE 1819 int "Maximum zone order" if ARCH_SHMOBILE
1800 range 11 64 if ARCH_SHMOBILE 1820 range 11 64 if ARCH_SHMOBILE
1801 default "12" if SOC_AM33XX 1821 default "12" if SOC_AM33XX
1802 default "9" if SA1111 1822 default "9" if SA1111 || ARCH_EFM32
1803 default "11" 1823 default "11"
1804 help 1824 help
1805 The kernel memory allocator divides physically contiguous memory 1825 The kernel memory allocator divides physically contiguous memory
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index c99b1086d83d..6da9abb30460 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -153,6 +153,7 @@ machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
153machine-$(CONFIG_ARCH_DAVINCI) += davinci 153machine-$(CONFIG_ARCH_DAVINCI) += davinci
154machine-$(CONFIG_ARCH_DOVE) += dove 154machine-$(CONFIG_ARCH_DOVE) += dove
155machine-$(CONFIG_ARCH_EBSA110) += ebsa110 155machine-$(CONFIG_ARCH_EBSA110) += ebsa110
156machine-$(CONFIG_ARCH_EFM32) += efm32
156machine-$(CONFIG_ARCH_EP93XX) += ep93xx 157machine-$(CONFIG_ARCH_EP93XX) += ep93xx
157machine-$(CONFIG_ARCH_EXYNOS) += exynos 158machine-$(CONFIG_ARCH_EXYNOS) += exynos
158machine-$(CONFIG_ARCH_GEMINI) += gemini 159machine-$(CONFIG_ARCH_GEMINI) += gemini
diff --git a/arch/arm/configs/efm32_defconfig b/arch/arm/configs/efm32_defconfig
new file mode 100644
index 000000000000..f59fffb3d0c6
--- /dev/null
+++ b/arch/arm/configs/efm32_defconfig
@@ -0,0 +1,102 @@
1CONFIG_HIGH_RES_TIMERS=y
2CONFIG_LOG_BUF_SHIFT=12
3CONFIG_CC_OPTIMIZE_FOR_SIZE=y
4# CONFIG_UID16 is not set
5# CONFIG_BASE_FULL is not set
6# CONFIG_FUTEX is not set
7# CONFIG_EPOLL is not set
8# CONFIG_SIGNALFD is not set
9# CONFIG_EVENTFD is not set
10# CONFIG_AIO is not set
11CONFIG_EMBEDDED=y
12# CONFIG_VM_EVENT_COUNTERS is not set
13# CONFIG_SLUB_DEBUG is not set
14# CONFIG_LBDAF is not set
15# CONFIG_BLK_DEV_BSG is not set
16# CONFIG_IOSCHED_DEADLINE is not set
17# CONFIG_IOSCHED_CFQ is not set
18# CONFIG_MMU is not set
19CONFIG_ARCH_EFM32=y
20# CONFIG_KUSER_HELPERS is not set
21CONFIG_SET_MEM_PARAM=y
22CONFIG_DRAM_BASE=0x88000000
23CONFIG_DRAM_SIZE=0x00400000
24CONFIG_FLASH_MEM_BASE=0x8c000000
25CONFIG_FLASH_SIZE=0x01000000
26CONFIG_PREEMPT=y
27CONFIG_ZBOOT_ROM_TEXT=0x0
28CONFIG_ZBOOT_ROM_BSS=0x0
29CONFIG_XIP_KERNEL=y
30CONFIG_XIP_PHYS_ADDR=0x8c000000
31CONFIG_BINFMT_FLAT=y
32CONFIG_BINFMT_SHARED_FLAT=y
33# CONFIG_COREDUMP is not set
34CONFIG_NET=y
35CONFIG_PACKET=y
36CONFIG_UNIX=y
37CONFIG_INET=y
38# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
39# CONFIG_INET_XFRM_MODE_TUNNEL is not set
40# CONFIG_INET_XFRM_MODE_BEET is not set
41# CONFIG_INET_LRO is not set
42# CONFIG_INET_DIAG is not set
43# CONFIG_IPV6 is not set
44# CONFIG_WIRELESS is not set
45CONFIG_DEVTMPFS=y
46CONFIG_DEVTMPFS_MOUNT=y
47# CONFIG_FW_LOADER is not set
48CONFIG_MTD=y
49CONFIG_MTD_BLOCK_RO=y
50CONFIG_MTD_ROM=y
51CONFIG_MTD_UCLINUX=y
52CONFIG_PROC_DEVICETREE=y
53# CONFIG_BLK_DEV is not set
54CONFIG_NETDEVICES=y
55# CONFIG_NET_VENDOR_ARC is not set
56# CONFIG_NET_CADENCE is not set
57# CONFIG_NET_VENDOR_BROADCOM is not set
58# CONFIG_NET_VENDOR_CIRRUS is not set
59# CONFIG_NET_VENDOR_FARADAY is not set
60# CONFIG_NET_VENDOR_INTEL is not set
61# CONFIG_NET_VENDOR_MARVELL is not set
62CONFIG_KS8851=y
63# CONFIG_NET_VENDOR_MICROCHIP is not set
64# CONFIG_NET_VENDOR_NATSEMI is not set
65# CONFIG_NET_VENDOR_SEEQ is not set
66# CONFIG_NET_VENDOR_SMSC is not set
67# CONFIG_NET_VENDOR_STMICRO is not set
68# CONFIG_NET_VENDOR_VIA is not set
69# CONFIG_NET_VENDOR_WIZNET is not set
70# CONFIG_WLAN is not set
71# CONFIG_INPUT is not set
72# CONFIG_SERIO is not set
73# CONFIG_VT is not set
74# CONFIG_UNIX98_PTYS is not set
75# CONFIG_LEGACY_PTYS is not set
76CONFIG_SERIAL_NONSTANDARD=y
77# CONFIG_DEVKMEM is not set
78CONFIG_SERIAL_EFM32_UART=y
79CONFIG_SERIAL_EFM32_UART_CONSOLE=y
80# CONFIG_HW_RANDOM is not set
81CONFIG_SPI=y
82CONFIG_SPI_EFM32=y
83CONFIG_GPIO_SYSFS=y
84# CONFIG_USB_SUPPORT is not set
85CONFIG_MMC=y
86CONFIG_MMC_SPI=y
87# CONFIG_IOMMU_SUPPORT is not set
88CONFIG_EXT2_FS=y
89# CONFIG_FILE_LOCKING is not set
90# CONFIG_DNOTIFY is not set
91# CONFIG_INOTIFY_USER is not set
92CONFIG_ROMFS_FS=y
93CONFIG_ROMFS_BACKED_BY_MTD=y
94# CONFIG_NETWORK_FILESYSTEMS is not set
95CONFIG_PRINTK_TIME=y
96CONFIG_DEBUG_INFO=y
97# CONFIG_ENABLE_WARN_DEPRECATED is not set
98# CONFIG_ENABLE_MUST_CHECK is not set
99CONFIG_MAGIC_SYSRQ=y
100# CONFIG_SCHED_DEBUG is not set
101# CONFIG_DEBUG_BUGVERBOSE is not set
102# CONFIG_FTRACE is not set
diff --git a/arch/arm/mach-efm32/Makefile b/arch/arm/mach-efm32/Makefile
new file mode 100644
index 000000000000..3a74af7413e8
--- /dev/null
+++ b/arch/arm/mach-efm32/Makefile
@@ -0,0 +1 @@
obj-y += dtmachine.o
diff --git a/arch/arm/mach-efm32/Makefile.boot b/arch/arm/mach-efm32/Makefile.boot
new file mode 100644
index 000000000000..eacfc3f5c33e
--- /dev/null
+++ b/arch/arm/mach-efm32/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-efm32/dtmachine.c b/arch/arm/mach-efm32/dtmachine.c
new file mode 100644
index 000000000000..2367495193c1
--- /dev/null
+++ b/arch/arm/mach-efm32/dtmachine.c
@@ -0,0 +1,15 @@
1#include <linux/kernel.h>
2
3#include <asm/v7m.h>
4
5#include <asm/mach/arch.h>
6
7static const char *const efm32gg_compat[] __initconst = {
8 "efm32,dk3750",
9 NULL
10};
11
12DT_MACHINE_START(EFM32DT, "EFM32 (Device Tree Support)")
13 .dt_compat = efm32gg_compat,
14 .restart = armv7m_restart,
15MACHINE_END
diff --git a/arch/arm/mach-efm32/include/mach/entry-macro.S b/arch/arm/mach-efm32/include/mach/entry-macro.S
new file mode 100644
index 000000000000..322159d5ed91
--- /dev/null
+++ b/arch/arm/mach-efm32/include/mach/entry-macro.S
@@ -0,0 +1,4 @@
1/*
2 * Empty file waiting for deletion once <mach/entry-macro.S> isn't needed any
3 * more. Patch "ARM: v7-M: drop using mach/entry-macro.S" sitting in next.
4 */
diff --git a/arch/arm/mach-efm32/include/mach/timex.h b/arch/arm/mach-efm32/include/mach/timex.h
new file mode 100644
index 000000000000..7a8b26da6599
--- /dev/null
+++ b/arch/arm/mach-efm32/include/mach/timex.h
@@ -0,0 +1,3 @@
1/*
2 * Empty file waiting for deletion once <mach/timex.h> isn't needed any more.
3 */