aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-09-06 14:41:12 -0400
committerRob Herring <rob.herring@calxeda.com>2012-09-14 10:22:06 -0400
commit387798b37c8dd0ae24c0ac12ba456dd76865bca3 (patch)
tree2ee0e0acc2e43a87e07896fd7d5a12883a268070
parent6eb5be341173ceae788d5d846f20de6d1b67b2db (diff)
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes. However, it will not be useful for any real work, because it relies on a number of useful things to be disabled for now: * SMP support must be turned off because of conflicting symbols. Marc Zyngier has proposed a solution by adding a new SOC operations structure to hold indirect function pointers for these, but that work is currently stalled * We turn on SPARSE_IRQ unconditionally, which is not supported on most platforms. Each of them is currently in a different state, but most are being worked on. * A common clock framework is in place since v3.4 but not yet being used. Work on this is on its way. * DEBUG_LL for early debugging is currently disabled. * THUMB2_KERNEL does not work with allyesconfig because the kernel gets too big [Rob Herring]: Rebased to not be dependent on the mass mach header rename. As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank, picoxcell, mvebu, and socfpga are converted. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Rob Herring <rob.herring@calxeda.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Andrew Lunn <andrew@lunn.ch> Acked-by: Jamie Iles <jamie@jamieiles.com> Cc: Dinh Nguyen <dinguyen@altera.com>
-rw-r--r--arch/arm/Kconfig123
-rw-r--r--arch/arm/Kconfig.debug1
-rw-r--r--arch/arm/Makefile150
-rw-r--r--arch/arm/boot/compressed/misc.c6
-rw-r--r--arch/arm/include/asm/timex.h4
-rw-r--r--arch/arm/mach-highbank/Kconfig15
-rw-r--r--arch/arm/mach-highbank/Makefile.boot1
-rw-r--r--arch/arm/mach-highbank/include/mach/timex.h6
-rw-r--r--arch/arm/mach-highbank/include/mach/uncompress.h9
-rw-r--r--arch/arm/mach-mvebu/Kconfig10
-rw-r--r--arch/arm/mach-mvebu/Makefile2
-rw-r--r--arch/arm/mach-mvebu/Makefile.boot1
-rw-r--r--arch/arm/mach-mvebu/include/mach/timex.h13
-rw-r--r--arch/arm/mach-mvebu/include/mach/uncompress.h43
-rw-r--r--arch/arm/mach-picoxcell/Kconfig14
-rw-r--r--arch/arm/mach-picoxcell/Makefile.boot1
-rw-r--r--arch/arm/mach-picoxcell/include/mach/hardware.h21
-rw-r--r--arch/arm/mach-picoxcell/include/mach/timex.h25
-rw-r--r--arch/arm/mach-picoxcell/include/mach/uncompress.h21
-rw-r--r--arch/arm/mach-socfpga/Kconfig16
-rw-r--r--arch/arm/mach-socfpga/Makefile.boot1
-rw-r--r--arch/arm/mach-socfpga/include/mach/timex.h19
-rw-r--r--arch/arm/mach-socfpga/include/mach/uncompress.h9
23 files changed, 200 insertions, 311 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 4f5652d7bfa0..ebaf08849f96 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -254,26 +254,17 @@ config MMU
254# 254#
255choice 255choice
256 prompt "ARM system type" 256 prompt "ARM system type"
257 default ARCH_VERSATILE 257 default ARCH_MULTIPLATFORM
258 258
259config ARCH_SOCFPGA 259config ARCH_MULTIPLATFORM
260 bool "Altera SOCFPGA family" 260 bool "Allow multiple platforms to be selected"
261 select ARCH_WANT_OPTIONAL_GPIOLIB 261 select ARM_PATCH_PHYS_VIRT
262 select ARM_AMBA 262 select AUTO_ZRELADDR
263 select ARM_GIC
264 select CACHE_L2X0
265 select CLKDEV_LOOKUP
266 select COMMON_CLK 263 select COMMON_CLK
267 select CPU_V7 264 select MULTI_IRQ_HANDLER
268 select DW_APB_TIMER
269 select DW_APB_TIMER_OF
270 select GENERIC_CLOCKEVENTS
271 select GPIO_PL061 if GPIOLIB
272 select HAVE_ARM_SCU
273 select SPARSE_IRQ 265 select SPARSE_IRQ
274 select USE_OF 266 select USE_OF
275 help 267 depends on MMU
276 This enables support for Altera SOCFPGA Cyclone V platform
277 268
278config ARCH_INTEGRATOR 269config ARCH_INTEGRATOR
279 bool "ARM Ltd. Integrator family" 270 bool "ARM Ltd. Integrator family"
@@ -370,24 +361,6 @@ config ARCH_BCMRING
370 help 361 help
371 Support for Broadcom's BCMRing platform. 362 Support for Broadcom's BCMRing platform.
372 363
373config ARCH_HIGHBANK
374 bool "Calxeda Highbank-based"
375 select ARCH_WANT_OPTIONAL_GPIOLIB
376 select ARM_AMBA
377 select ARM_GIC
378 select ARM_TIMER_SP804
379 select CACHE_L2X0
380 select CLKDEV_LOOKUP
381 select COMMON_CLK
382 select CPU_V7
383 select GENERIC_CLOCKEVENTS
384 select HAVE_ARM_SCU
385 select HAVE_SMP
386 select SPARSE_IRQ
387 select USE_OF
388 help
389 Support for the Calxeda Highbank SoC based boards.
390
391config ARCH_CLPS711X 364config ARCH_CLPS711X
392 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" 365 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
393 select CPU_ARM720T 366 select CPU_ARM720T
@@ -568,18 +541,6 @@ config ARCH_IXP4XX
568 help 541 help
569 Support for Intel's IXP4XX (XScale) family of processors. 542 Support for Intel's IXP4XX (XScale) family of processors.
570 543
571config ARCH_MVEBU
572 bool "Marvell SOCs with Device Tree support"
573 select GENERIC_CLOCKEVENTS
574 select MULTI_IRQ_HANDLER
575 select SPARSE_IRQ
576 select CLKSRC_MMIO
577 select GENERIC_IRQ_CHIP
578 select IRQ_DOMAIN
579 select COMMON_CLK
580 help
581 Support for the Marvell SoC Family with device tree support
582
583config ARCH_DOVE 544config ARCH_DOVE
584 bool "Marvell Dove" 545 bool "Marvell Dove"
585 select CPU_V7 546 select CPU_V7
@@ -701,25 +662,6 @@ config ARCH_TEGRA
701 This enables support for NVIDIA Tegra based systems (Tegra APX, 662 This enables support for NVIDIA Tegra based systems (Tegra APX,
702 Tegra 6xx and Tegra 2 series). 663 Tegra 6xx and Tegra 2 series).
703 664
704config ARCH_PICOXCELL
705 bool "Picochip picoXcell"
706 select ARCH_REQUIRE_GPIOLIB
707 select ARM_PATCH_PHYS_VIRT
708 select ARM_VIC
709 select CPU_V6K
710 select DW_APB_TIMER
711 select DW_APB_TIMER_OF
712 select GENERIC_CLOCKEVENTS
713 select GENERIC_GPIO
714 select HAVE_TCM
715 select NO_IOPORT
716 select SPARSE_IRQ
717 select USE_OF
718 help
719 This enables support for systems based on the Picochip picoXcell
720 family of Femtocell devices. The picoxcell support requires device tree
721 for all boards.
722
723config ARCH_PNX4008 665config ARCH_PNX4008
724 bool "Philips Nexperia PNX4008 Mobile" 666 bool "Philips Nexperia PNX4008 Mobile"
725 select CPU_ARM926T 667 select CPU_ARM926T
@@ -1043,6 +985,49 @@ config ARCH_ZYNQ
1043 Support for Xilinx Zynq ARM Cortex A9 Platform 985 Support for Xilinx Zynq ARM Cortex A9 Platform
1044endchoice 986endchoice
1045 987
988menu "Multiple platform selection"
989 depends on ARCH_MULTIPLATFORM
990
991comment "CPU Core family selection"
992
993config ARCH_MULTI_V4
994 bool "ARMv4 based platforms (FA526, StrongARM)"
995 select ARCH_MULTI_V4_V5
996 depends on !ARCH_MULTI_V6_V7
997
998config ARCH_MULTI_V4T
999 bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
1000 select ARCH_MULTI_V4_V5
1001 depends on !ARCH_MULTI_V6_V7
1002
1003config ARCH_MULTI_V5
1004 bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)"
1005 select ARCH_MULTI_V4_V5
1006 depends on !ARCH_MULTI_V6_V7
1007
1008config ARCH_MULTI_V4_V5
1009 bool
1010
1011config ARCH_MULTI_V6
1012 bool "ARMv6 based platforms (ARM11, Scorpion, ...)"
1013 select CPU_V6
1014 select ARCH_MULTI_V6_V7
1015
1016config ARCH_MULTI_V7
1017 bool "ARMv7 based platforms (Cortex-A, PJ4, Krait)"
1018 select CPU_V7
1019 default y
1020 select ARCH_MULTI_V6_V7
1021
1022config ARCH_MULTI_V6_V7
1023 bool
1024
1025config ARCH_MULTI_CPU_AUTO
1026 def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7)
1027 select ARCH_MULTI_V5
1028
1029endmenu
1030
1046# 1031#
1047# This is sorted alphabetically by mach-* pathname. However, plat-* 1032# This is sorted alphabetically by mach-* pathname. However, plat-*
1048# Kconfigs may be included either alphabetically (according to the 1033# Kconfigs may be included either alphabetically (according to the
@@ -1070,6 +1055,8 @@ source "arch/arm/mach-gemini/Kconfig"
1070 1055
1071source "arch/arm/mach-h720x/Kconfig" 1056source "arch/arm/mach-h720x/Kconfig"
1072 1057
1058source "arch/arm/mach-highbank/Kconfig"
1059
1073source "arch/arm/mach-integrator/Kconfig" 1060source "arch/arm/mach-integrator/Kconfig"
1074 1061
1075source "arch/arm/mach-iop32x/Kconfig" 1062source "arch/arm/mach-iop32x/Kconfig"
@@ -1105,6 +1092,8 @@ source "arch/arm/mach-omap2/Kconfig"
1105 1092
1106source "arch/arm/mach-orion5x/Kconfig" 1093source "arch/arm/mach-orion5x/Kconfig"
1107 1094
1095source "arch/arm/mach-picoxcell/Kconfig"
1096
1108source "arch/arm/mach-pxa/Kconfig" 1097source "arch/arm/mach-pxa/Kconfig"
1109source "arch/arm/plat-pxa/Kconfig" 1098source "arch/arm/plat-pxa/Kconfig"
1110 1099
@@ -1117,6 +1106,8 @@ source "arch/arm/mach-sa1100/Kconfig"
1117source "arch/arm/plat-samsung/Kconfig" 1106source "arch/arm/plat-samsung/Kconfig"
1118source "arch/arm/plat-s3c24xx/Kconfig" 1107source "arch/arm/plat-s3c24xx/Kconfig"
1119 1108
1109source "arch/arm/mach-socfpga/Kconfig"
1110
1120source "arch/arm/plat-spear/Kconfig" 1111source "arch/arm/plat-spear/Kconfig"
1121 1112
1122source "arch/arm/mach-s3c24xx/Kconfig" 1113source "arch/arm/mach-s3c24xx/Kconfig"
@@ -2081,7 +2072,7 @@ endchoice
2081 2072
2082config XIP_KERNEL 2073config XIP_KERNEL
2083 bool "Kernel Execute-In-Place from ROM" 2074 bool "Kernel Execute-In-Place from ROM"
2084 depends on !ZBOOT_ROM && !ARM_LPAE 2075 depends on !ZBOOT_ROM && !ARM_LPAE && !ARCH_MULTIPLATFORM
2085 help 2076 help
2086 Execute-In-Place allows the kernel to run from non-volatile storage 2077 Execute-In-Place allows the kernel to run from non-volatile storage
2087 directly addressable by the CPU, such as NOR flash. This saves RAM 2078 directly addressable by the CPU, such as NOR flash. This saves RAM
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index b74ed971868d..3e57e9a14856 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -359,6 +359,7 @@ choice
359 359
360 config DEBUG_LL_UART_NONE 360 config DEBUG_LL_UART_NONE
361 bool "No low-level debugging UART" 361 bool "No low-level debugging UART"
362 depends on !ARCH_MULTIPLATFORM
362 help 363 help
363 Say Y here if your platform doesn't provide a UART option 364 Say Y here if your platform doesn't provide a UART option
364 below. This relies on your platform choosing the right UART 365 below. This relies on your platform choosing the right UART
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 30eae87ead6d..5f3c55a6b735 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -135,84 +135,79 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
135 135
136# Machine directory name. This list is sorted alphanumerically 136# Machine directory name. This list is sorted alphanumerically
137# by CONFIG_* macro name. 137# by CONFIG_* macro name.
138machine-$(CONFIG_ARCH_AT91) := at91 138machine-$(CONFIG_ARCH_AT91) += at91
139machine-$(CONFIG_ARCH_BCMRING) := bcmring 139machine-$(CONFIG_ARCH_BCMRING) += bcmring
140machine-$(CONFIG_ARCH_CLPS711X) := clps711x 140machine-$(CONFIG_ARCH_CLPS711X) += clps711x
141machine-$(CONFIG_ARCH_CNS3XXX) := cns3xxx 141machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
142machine-$(CONFIG_ARCH_DAVINCI) := davinci 142machine-$(CONFIG_ARCH_DAVINCI) += davinci
143machine-$(CONFIG_ARCH_DOVE) := dove 143machine-$(CONFIG_ARCH_DOVE) += dove
144machine-$(CONFIG_ARCH_EBSA110) := ebsa110 144machine-$(CONFIG_ARCH_EBSA110) += ebsa110
145machine-$(CONFIG_ARCH_EP93XX) := ep93xx 145machine-$(CONFIG_ARCH_EP93XX) += ep93xx
146machine-$(CONFIG_ARCH_GEMINI) := gemini 146machine-$(CONFIG_ARCH_GEMINI) += gemini
147machine-$(CONFIG_ARCH_H720X) := h720x 147machine-$(CONFIG_ARCH_H720X) += h720x
148machine-$(CONFIG_ARCH_HIGHBANK) := highbank 148machine-$(CONFIG_ARCH_HIGHBANK) += highbank
149machine-$(CONFIG_ARCH_INTEGRATOR) := integrator 149machine-$(CONFIG_ARCH_INTEGRATOR) += integrator
150machine-$(CONFIG_ARCH_IOP13XX) := iop13xx 150machine-$(CONFIG_ARCH_IOP13XX) += iop13xx
151machine-$(CONFIG_ARCH_IOP32X) := iop32x 151machine-$(CONFIG_ARCH_IOP32X) += iop32x
152machine-$(CONFIG_ARCH_IOP33X) := iop33x 152machine-$(CONFIG_ARCH_IOP33X) += iop33x
153machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx 153machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx
154machine-$(CONFIG_ARCH_KIRKWOOD) := kirkwood 154machine-$(CONFIG_ARCH_KIRKWOOD) += kirkwood
155machine-$(CONFIG_ARCH_KS8695) := ks8695 155machine-$(CONFIG_ARCH_KS8695) += ks8695
156machine-$(CONFIG_ARCH_LPC32XX) := lpc32xx 156machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx
157machine-$(CONFIG_ARCH_MMP) := mmp 157machine-$(CONFIG_ARCH_MMP) += mmp
158machine-$(CONFIG_ARCH_MSM) := msm 158machine-$(CONFIG_ARCH_MSM) += msm
159machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 159machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0
160machine-$(CONFIG_ARCH_IMX_V4_V5) := imx 160machine-$(CONFIG_ARCH_MXC) += imx
161machine-$(CONFIG_ARCH_IMX_V6_V7) := imx 161machine-$(CONFIG_ARCH_MXS) += mxs
162machine-$(CONFIG_ARCH_MXS) := mxs 162machine-$(CONFIG_ARCH_MVEBU) += mvebu
163machine-$(CONFIG_ARCH_MVEBU) := mvebu 163machine-$(CONFIG_ARCH_NETX) += netx
164machine-$(CONFIG_ARCH_NETX) := netx 164machine-$(CONFIG_ARCH_NOMADIK) += nomadik
165machine-$(CONFIG_ARCH_NOMADIK) := nomadik 165machine-$(CONFIG_ARCH_OMAP1) += omap1
166machine-$(CONFIG_ARCH_OMAP1) := omap1 166machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2
167machine-$(CONFIG_ARCH_OMAP2PLUS) := omap2 167machine-$(CONFIG_ARCH_ORION5X) += orion5x
168machine-$(CONFIG_ARCH_ORION5X) := orion5x 168machine-$(CONFIG_ARCH_PICOXCELL) += picoxcell
169machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell 169machine-$(CONFIG_ARCH_PNX4008) += pnx4008
170machine-$(CONFIG_ARCH_PNX4008) := pnx4008 170machine-$(CONFIG_ARCH_PRIMA2) += prima2
171machine-$(CONFIG_ARCH_PRIMA2) := prima2 171machine-$(CONFIG_ARCH_PXA) += pxa
172machine-$(CONFIG_ARCH_PXA) := pxa 172machine-$(CONFIG_ARCH_REALVIEW) += realview
173machine-$(CONFIG_ARCH_REALVIEW) := realview 173machine-$(CONFIG_ARCH_RPC) += rpc
174machine-$(CONFIG_ARCH_RPC) := rpc 174machine-$(CONFIG_ARCH_S3C24XX) += s3c24xx s3c2412 s3c2440
175machine-$(CONFIG_ARCH_S3C24XX) := s3c24xx s3c2412 s3c2440 175machine-$(CONFIG_ARCH_S3C64XX) += s3c64xx
176machine-$(CONFIG_ARCH_S3C64XX) := s3c64xx 176machine-$(CONFIG_ARCH_S5P64X0) += s5p64x0
177machine-$(CONFIG_ARCH_S5P64X0) := s5p64x0 177machine-$(CONFIG_ARCH_S5PC100) += s5pc100
178machine-$(CONFIG_ARCH_S5PC100) := s5pc100 178machine-$(CONFIG_ARCH_S5PV210) += s5pv210
179machine-$(CONFIG_ARCH_S5PV210) := s5pv210 179machine-$(CONFIG_ARCH_EXYNOS) += exynos
180machine-$(CONFIG_ARCH_EXYNOS4) := exynos 180machine-$(CONFIG_ARCH_SA1100) += sa1100
181machine-$(CONFIG_ARCH_EXYNOS5) := exynos 181machine-$(CONFIG_ARCH_SHARK) += shark
182machine-$(CONFIG_ARCH_SA1100) := sa1100 182machine-$(CONFIG_ARCH_SHMOBILE) += shmobile
183machine-$(CONFIG_ARCH_SHARK) := shark 183machine-$(CONFIG_ARCH_TEGRA) += tegra
184machine-$(CONFIG_ARCH_SHMOBILE) := shmobile 184machine-$(CONFIG_ARCH_U300) += u300
185machine-$(CONFIG_ARCH_TEGRA) := tegra 185machine-$(CONFIG_ARCH_U8500) += ux500
186machine-$(CONFIG_ARCH_U300) := u300 186machine-$(CONFIG_ARCH_VERSATILE) += versatile
187machine-$(CONFIG_ARCH_U8500) := ux500 187machine-$(CONFIG_ARCH_VEXPRESS) += vexpress
188machine-$(CONFIG_ARCH_VERSATILE) := versatile 188machine-$(CONFIG_ARCH_VT8500) += vt8500
189machine-$(CONFIG_ARCH_VEXPRESS) := vexpress 189machine-$(CONFIG_ARCH_W90X900) += w90x900
190machine-$(CONFIG_ARCH_VT8500) := vt8500 190machine-$(CONFIG_FOOTBRIDGE) += footbridge
191machine-$(CONFIG_ARCH_W90X900) := w90x900 191machine-$(CONFIG_ARCH_SOCFPGA) += socfpga
192machine-$(CONFIG_FOOTBRIDGE) := footbridge 192machine-$(CONFIG_ARCH_SPEAR13XX) += spear13xx
193machine-$(CONFIG_ARCH_SOCFPGA) := socfpga 193machine-$(CONFIG_ARCH_SPEAR3XX) += spear3xx
194machine-$(CONFIG_MACH_SPEAR1310) := spear13xx 194machine-$(CONFIG_MACH_SPEAR600) += spear6xx
195machine-$(CONFIG_MACH_SPEAR1340) := spear13xx 195machine-$(CONFIG_ARCH_ZYNQ) += zynq
196machine-$(CONFIG_MACH_SPEAR300) := spear3xx
197machine-$(CONFIG_MACH_SPEAR310) := spear3xx
198machine-$(CONFIG_MACH_SPEAR320) := spear3xx
199machine-$(CONFIG_MACH_SPEAR600) := spear6xx
200machine-$(CONFIG_ARCH_ZYNQ) := zynq
201 196
202# Platform directory name. This list is sorted alphanumerically 197# Platform directory name. This list is sorted alphanumerically
203# by CONFIG_* macro name. 198# by CONFIG_* macro name.
204plat-$(CONFIG_ARCH_MXC) := mxc 199plat-$(CONFIG_ARCH_MXC) += mxc
205plat-$(CONFIG_ARCH_OMAP) := omap 200plat-$(CONFIG_ARCH_OMAP) += omap
206plat-$(CONFIG_ARCH_S3C64XX) := samsung 201plat-$(CONFIG_ARCH_S3C64XX) += samsung
207plat-$(CONFIG_ARCH_ZYNQ) := versatile 202plat-$(CONFIG_ARCH_ZYNQ) += versatile
208plat-$(CONFIG_PLAT_IOP) := iop 203plat-$(CONFIG_PLAT_IOP) += iop
209plat-$(CONFIG_PLAT_NOMADIK) := nomadik 204plat-$(CONFIG_PLAT_NOMADIK) += nomadik
210plat-$(CONFIG_PLAT_ORION) := orion 205plat-$(CONFIG_PLAT_ORION) += orion
211plat-$(CONFIG_PLAT_PXA) := pxa 206plat-$(CONFIG_PLAT_PXA) += pxa
212plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx samsung 207plat-$(CONFIG_PLAT_S3C24XX) += s3c24xx samsung
213plat-$(CONFIG_PLAT_S5P) := samsung 208plat-$(CONFIG_PLAT_S5P) += samsung
214plat-$(CONFIG_PLAT_SPEAR) := spear 209plat-$(CONFIG_PLAT_SPEAR) += spear
215plat-$(CONFIG_PLAT_VERSATILE) := versatile 210plat-$(CONFIG_PLAT_VERSATILE) += versatile
216 211
217ifeq ($(CONFIG_ARCH_EBSA110),y) 212ifeq ($(CONFIG_ARCH_EBSA110),y)
218# This is what happens if you forget the IOCS16 line. 213# This is what happens if you forget the IOCS16 line.
@@ -230,15 +225,20 @@ MACHINE := arch/arm/mach-$(word 1,$(machine-y))/
230else 225else
231MACHINE := 226MACHINE :=
232endif 227endif
228ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
229MACHINE :=
230endif
233 231
234machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) 232machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
235platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y)) 233platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))
236 234
235ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
237ifeq ($(KBUILD_SRC),) 236ifeq ($(KBUILD_SRC),)
238KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) 237KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
239else 238else
240KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) 239KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
241endif 240endif
241endif
242 242
243export TEXT_OFFSET GZFLAGS MMUEXT 243export TEXT_OFFSET GZFLAGS MMUEXT
244 244
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index 8e2a8fca5ed2..df899834d84e 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -25,7 +25,13 @@ unsigned int __machine_arch_type;
25static void putstr(const char *ptr); 25static void putstr(const char *ptr);
26extern void error(char *x); 26extern void error(char *x);
27 27
28#ifdef CONFIG_ARCH_MULTIPLATFORM
29static inline void putc(int c) {}
30static inline void flush(void) {}
31static inline void arch_decomp_setup(void) {}
32#else
28#include <mach/uncompress.h> 33#include <mach/uncompress.h>
34#endif
29 35
30#ifdef CONFIG_DEBUG_ICEDCC 36#ifdef CONFIG_DEBUG_ICEDCC
31 37
diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h
index ce119442277c..963342acebb7 100644
--- a/arch/arm/include/asm/timex.h
+++ b/arch/arm/include/asm/timex.h
@@ -13,7 +13,11 @@
13#define _ASMARM_TIMEX_H 13#define _ASMARM_TIMEX_H
14 14
15#include <asm/arch_timer.h> 15#include <asm/arch_timer.h>
16#ifdef CONFIG_ARCH_MULTIPLATFORM
17#define CLOCK_TICK_RATE 1000000
18#else
16#include <mach/timex.h> 19#include <mach/timex.h>
20#endif
17 21
18typedef unsigned long cycles_t; 22typedef unsigned long cycles_t;
19 23
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig
new file mode 100644
index 000000000000..0e1d0a42a3ea
--- /dev/null
+++ b/arch/arm/mach-highbank/Kconfig
@@ -0,0 +1,15 @@
1config ARCH_HIGHBANK
2 bool "Calxeda ECX-1000 (Highbank)" if ARCH_MULTI_V7
3 select ARCH_WANT_OPTIONAL_GPIOLIB
4 select ARM_AMBA
5 select ARM_GIC
6 select ARM_TIMER_SP804
7 select CACHE_L2X0
8 select CLKDEV_LOOKUP
9 select COMMON_CLK
10 select CPU_V7
11 select GENERIC_CLOCKEVENTS
12 select HAVE_ARM_SCU
13 select HAVE_SMP
14 select SPARSE_IRQ
15 select USE_OF
diff --git a/arch/arm/mach-highbank/Makefile.boot b/arch/arm/mach-highbank/Makefile.boot
deleted file mode 100644
index dae9661a7689..000000000000
--- a/arch/arm/mach-highbank/Makefile.boot
+++ /dev/null
@@ -1 +0,0 @@
1zreladdr-y := 0x00008000
diff --git a/arch/arm/mach-highbank/include/mach/timex.h b/arch/arm/mach-highbank/include/mach/timex.h
deleted file mode 100644
index 88dac7a55a97..000000000000
--- a/arch/arm/mach-highbank/include/mach/timex.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef __MACH_TIMEX_H
2#define __MACH_TIMEX_H
3
4#define CLOCK_TICK_RATE 1000000
5
6#endif
diff --git a/arch/arm/mach-highbank/include/mach/uncompress.h b/arch/arm/mach-highbank/include/mach/uncompress.h
deleted file mode 100644
index bbe20e696325..000000000000
--- a/arch/arm/mach-highbank/include/mach/uncompress.h
+++ /dev/null
@@ -1,9 +0,0 @@
1#ifndef __MACH_UNCOMPRESS_H
2#define __MACH_UNCOMPRESS_H
3
4#define putc(c)
5#define flush()
6#define arch_decomp_setup()
7#define arch_decomp_wdog()
8
9#endif
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index caa2c5e734fe..7b270358536e 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -1,3 +1,13 @@
1config ARCH_MVEBU
2 bool "Marvell SOCs with Device Tree support" if ARCH_MULTI_V7
3 select CLKSRC_MMIO
4 select COMMON_CLK
5 select GENERIC_CLOCKEVENTS
6 select GENERIC_IRQ_CHIP
7 select IRQ_DOMAIN
8 select MULTI_IRQ_HANDLER
9 select SPARSE_IRQ
10
1if ARCH_MVEBU 11if ARCH_MVEBU
2 12
3menu "Marvell SOC with device tree" 13menu "Marvell SOC with device tree"
diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
index e61d2b8fdf50..6ea8998ab8f1 100644
--- a/arch/arm/mach-mvebu/Makefile
+++ b/arch/arm/mach-mvebu/Makefile
@@ -1,2 +1,4 @@
1ccflags-$(ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include
2
1obj-y += system-controller.o 3obj-y += system-controller.o
2obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o 4obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o
diff --git a/arch/arm/mach-mvebu/Makefile.boot b/arch/arm/mach-mvebu/Makefile.boot
deleted file mode 100644
index b3271754e9fd..000000000000
--- a/arch/arm/mach-mvebu/Makefile.boot
+++ /dev/null
@@ -1 +0,0 @@
1zreladdr-y := 0x00008000
diff --git a/arch/arm/mach-mvebu/include/mach/timex.h b/arch/arm/mach-mvebu/include/mach/timex.h
deleted file mode 100644
index ab324a3748f2..000000000000
--- a/arch/arm/mach-mvebu/include/mach/timex.h
+++ /dev/null
@@ -1,13 +0,0 @@
1/*
2 * Marvell Armada SoC time definitions
3 *
4 * Copyright (C) 2012 Marvell
5 *
6 * Lior Amsalem <alior@marvell.com>
7 *
8 * This file is licensed under the terms of the GNU General Public
9 * License version 2. This program is licensed "as is" without any
10 * warranty of any kind, whether express or implied.
11 */
12
13#define CLOCK_TICK_RATE (100 * HZ)
diff --git a/arch/arm/mach-mvebu/include/mach/uncompress.h b/arch/arm/mach-mvebu/include/mach/uncompress.h
deleted file mode 100644
index d6a100ccf302..000000000000
--- a/arch/arm/mach-mvebu/include/mach/uncompress.h
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * Marvell Armada SoC kernel uncompression UART routines
3 *
4 * Copyright (C) 2012 Marvell
5 *
6 * Lior Amsalem <alior@marvell.com>
7 *
8 * This file is licensed under the terms of the GNU General Public
9 * License version 2. This program is licensed "as is" without any
10 * warranty of any kind, whether express or implied.
11 */
12
13#include <mach/armada-370-xp.h>
14
15#define UART_THR ((volatile unsigned char *)(ARMADA_370_XP_REGS_PHYS_BASE\
16 + 0x12000))
17#define UART_LSR ((volatile unsigned char *)(ARMADA_370_XP_REGS_PHYS_BASE\
18 + 0x12014))
19
20#define LSR_THRE 0x20
21
22static void putc(const char c)
23{
24 int i;
25
26 for (i = 0; i < 0x1000; i++) {
27 /* Transmit fifo not full? */
28 if (*UART_LSR & LSR_THRE)
29 break;
30 }
31
32 *UART_THR = c;
33}
34
35static void flush(void)
36{
37}
38
39/*
40 * nothing to do
41 */
42#define arch_decomp_setup()
43#define arch_decomp_wdog()
diff --git a/arch/arm/mach-picoxcell/Kconfig b/arch/arm/mach-picoxcell/Kconfig
new file mode 100644
index 000000000000..868796f8085c
--- /dev/null
+++ b/arch/arm/mach-picoxcell/Kconfig
@@ -0,0 +1,14 @@
1config ARCH_PICOXCELL
2 bool "Picochip PicoXcell" if ARCH_MULTI_V6
3 select ARCH_REQUIRE_GPIOLIB
4 select ARM_PATCH_PHYS_VIRT
5 select ARM_VIC
6 select CPU_V6K
7 select DW_APB_TIMER
8 select DW_APB_TIMER_OF
9 select GENERIC_CLOCKEVENTS
10 select GENERIC_GPIO
11 select HAVE_TCM
12 select NO_IOPORT
13 select SPARSE_IRQ
14 select USE_OF
diff --git a/arch/arm/mach-picoxcell/Makefile.boot b/arch/arm/mach-picoxcell/Makefile.boot
deleted file mode 100644
index b3271754e9fd..000000000000
--- a/arch/arm/mach-picoxcell/Makefile.boot
+++ /dev/null
@@ -1 +0,0 @@
1zreladdr-y := 0x00008000
diff --git a/arch/arm/mach-picoxcell/include/mach/hardware.h b/arch/arm/mach-picoxcell/include/mach/hardware.h
deleted file mode 100644
index 70ff58192ec9..000000000000
--- a/arch/arm/mach-picoxcell/include/mach/hardware.h
+++ /dev/null
@@ -1,21 +0,0 @@
1/*
2 * Copyright (c) 2011 Picochip Ltd., Jamie Iles
3 *
4 * This file contains the hardware definitions of the picoXcell SoC devices.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 */
16#ifndef __ASM_ARCH_HARDWARE_H
17#define __ASM_ARCH_HARDWARE_H
18
19#include <mach/picoxcell_soc.h>
20
21#endif
diff --git a/arch/arm/mach-picoxcell/include/mach/timex.h b/arch/arm/mach-picoxcell/include/mach/timex.h
deleted file mode 100644
index 6c540a69f405..000000000000
--- a/arch/arm/mach-picoxcell/include/mach/timex.h
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * Copyright (c) 2011 Picochip Ltd., Jamie Iles
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18#ifndef __TIMEX_H__
19#define __TIMEX_H__
20
21/* Bogus value to allow the kernel to compile. */
22#define CLOCK_TICK_RATE 1000000
23
24#endif /* __TIMEX_H__ */
25
diff --git a/arch/arm/mach-picoxcell/include/mach/uncompress.h b/arch/arm/mach-picoxcell/include/mach/uncompress.h
deleted file mode 100644
index b60b19d1d739..000000000000
--- a/arch/arm/mach-picoxcell/include/mach/uncompress.h
+++ /dev/null
@@ -1,21 +0,0 @@
1/*
2 * Copyright (c) 2011 Picochip Ltd., Jamie Iles
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18#define putc(c)
19#define flush()
20#define arch_decomp_setup()
21#define arch_decomp_wdog()
diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
new file mode 100644
index 000000000000..803a3281feb5
--- /dev/null
+++ b/arch/arm/mach-socfpga/Kconfig
@@ -0,0 +1,16 @@
1config ARCH_SOCFPGA
2 bool "Altera SOCFPGA family" if ARCH_MULTI_V7
3 select ARCH_WANT_OPTIONAL_GPIOLIB
4 select ARM_AMBA
5 select ARM_GIC
6 select CACHE_L2X0
7 select CLKDEV_LOOKUP
8 select COMMON_CLK
9 select CPU_V7
10 select DW_APB_TIMER
11 select DW_APB_TIMER_OF
12 select GENERIC_CLOCKEVENTS
13 select GPIO_PL061 if GPIOLIB
14 select HAVE_ARM_SCU
15 select SPARSE_IRQ
16 select USE_OF
diff --git a/arch/arm/mach-socfpga/Makefile.boot b/arch/arm/mach-socfpga/Makefile.boot
deleted file mode 100644
index dae9661a7689..000000000000
--- a/arch/arm/mach-socfpga/Makefile.boot
+++ /dev/null
@@ -1 +0,0 @@
1zreladdr-y := 0x00008000
diff --git a/arch/arm/mach-socfpga/include/mach/timex.h b/arch/arm/mach-socfpga/include/mach/timex.h
deleted file mode 100644
index 43df4354e461..000000000000
--- a/arch/arm/mach-socfpga/include/mach/timex.h
+++ /dev/null
@@ -1,19 +0,0 @@
1/*
2 * Copyright (C) 2003 ARM Limited
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
19#define CLOCK_TICK_RATE (50000000 / 16)
diff --git a/arch/arm/mach-socfpga/include/mach/uncompress.h b/arch/arm/mach-socfpga/include/mach/uncompress.h
deleted file mode 100644
index bbe20e696325..000000000000
--- a/arch/arm/mach-socfpga/include/mach/uncompress.h
+++ /dev/null
@@ -1,9 +0,0 @@
1#ifndef __MACH_UNCOMPRESS_H
2#define __MACH_UNCOMPRESS_H
3
4#define putc(c)
5#define flush()
6#define arch_decomp_setup()
7#define arch_decomp_wdog()
8
9#endif