aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-bcm
diff options
context:
space:
mode:
authorMatt Porter <mporter@linaro.org>2014-03-14 11:20:43 -0400
committerMatt Porter <mporter@linaro.org>2014-03-14 11:20:43 -0400
commit833688f4e49f659ad90a3ea7e2905720774c3f61 (patch)
tree1ec242f0c13e40fe9421f86561d0d81dec42fd12 /arch/arm/mach-bcm
parent0e8b860ac6d65209beea03ee9b718089838476ef (diff)
parentfdf4850cb5b2e5e549a18b8b41abb001bfb19e9c (diff)
Merge tag 'armsoc/for-3.15/soc-2' into armsoc/for-3.15/soc-3
ARM: mach-bcm soc updates - add BCM5301x support - remove GENERIC_TIME
Diffstat (limited to 'arch/arm/mach-bcm')
-rw-r--r--arch/arm/mach-bcm/Kconfig27
-rw-r--r--arch/arm/mach-bcm/Makefile1
-rw-r--r--arch/arm/mach-bcm/bcm_5301x.c61
3 files changed, 88 insertions, 1 deletions
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index b1aa6a9b3bd1..f2a2fb9909a1 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -19,7 +19,6 @@ config ARCH_BCM_MOBILE
19 select CPU_V7 19 select CPU_V7
20 select CLKSRC_OF 20 select CLKSRC_OF
21 select GENERIC_CLOCKEVENTS 21 select GENERIC_CLOCKEVENTS
22 select GENERIC_TIME
23 select GPIO_BCM_KONA 22 select GPIO_BCM_KONA
24 select SPARSE_IRQ 23 select SPARSE_IRQ
25 select TICK_ONESHOT 24 select TICK_ONESHOT
@@ -32,6 +31,32 @@ config ARCH_BCM_MOBILE
32 BCM11130, BCM11140, BCM11351, BCM28145 and 31 BCM11130, BCM11140, BCM11351, BCM28145 and
33 BCM28155 variants. 32 BCM28155 variants.
34 33
34config ARCH_BCM_5301X
35 bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
36 depends on MMU
37 select ARM_GIC
38 select CACHE_L2X0
39 select HAVE_ARM_SCU if SMP
40 select HAVE_ARM_TWD if SMP
41 select HAVE_SMP
42 select COMMON_CLK
43 select GENERIC_CLOCKEVENTS
44 select ARM_GLOBAL_TIMER
45 select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
46 select MIGHT_HAVE_PCI
47 help
48 Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
49
50 This is a network SoC line mostly used in home routers and
51 wifi access points, it's internal name is Northstar.
52 This inclused the following SoC: BCM53010, BCM53011, BCM53012,
53 BCM53014, BCM53015, BCM53016, BCM53017, BCM53018, BCM4707,
54 BCM4708 and BCM4709.
55
56 Do not confuse this with the BCM4760 which is a totally
57 different SoC or with the older BCM47XX and BCM53XX based
58 network SoC using a MIPS CPU, they are supported by arch/mips/bcm47xx
59
35endmenu 60endmenu
36 61
37endif 62endif
diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile
index c2ccd5a0f772..01649132c9f2 100644
--- a/arch/arm/mach-bcm/Makefile
+++ b/arch/arm/mach-bcm/Makefile
@@ -13,3 +13,4 @@
13obj-$(CONFIG_ARCH_BCM_MOBILE) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o 13obj-$(CONFIG_ARCH_BCM_MOBILE) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o
14plus_sec := $(call as-instr,.arch_extension sec,+sec) 14plus_sec := $(call as-instr,.arch_extension sec,+sec)
15AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) 15AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec)
16obj-$(CONFIG_ARCH_BCM_5301X) += bcm_5301x.o
diff --git a/arch/arm/mach-bcm/bcm_5301x.c b/arch/arm/mach-bcm/bcm_5301x.c
new file mode 100644
index 000000000000..edff69761e04
--- /dev/null
+++ b/arch/arm/mach-bcm/bcm_5301x.c
@@ -0,0 +1,61 @@
1/*
2 * Broadcom BCM470X / BCM5301X ARM platform code.
3 *
4 * Copyright 2013 Hauke Mehrtens <hauke@hauke-m.de>
5 *
6 * Licensed under the GNU/GPL. See COPYING for details.
7 */
8#include <linux/of_platform.h>
9#include <asm/hardware/cache-l2x0.h>
10
11#include <asm/mach/arch.h>
12#include <asm/siginfo.h>
13#include <asm/signal.h>
14
15
16static bool first_fault = true;
17
18static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr,
19 struct pt_regs *regs)
20{
21 if (fsr == 0x1c06 && first_fault) {
22 first_fault = false;
23
24 /*
25 * These faults with code 0x1c06 happens for no good reason,
26 * possibly left over from the CFE boot loader.
27 */
28 pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n",
29 addr, fsr);
30
31 /* Returning non-zero causes fault display and panic */
32 return 0;
33 }
34
35 /* Others should cause a fault */
36 return 1;
37}
38
39static void __init bcm5301x_init_early(void)
40{
41 /* Install our hook */
42 hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS, BUS_OBJERR,
43 "imprecise external abort");
44}
45
46static void __init bcm5301x_dt_init(void)
47{
48 l2x0_of_init(0, ~0UL);
49 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
50}
51
52static const char __initconst *bcm5301x_dt_compat[] = {
53 "brcm,bcm4708",
54 NULL,
55};
56
57DT_MACHINE_START(BCM5301X, "BCM5301X")
58 .init_early = bcm5301x_init_early,
59 .init_machine = bcm5301x_dt_init,
60 .dt_compat = bcm5301x_dt_compat,
61MACHINE_END