aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/bcm4708.txt8
-rw-r--r--MAINTAINERS8
-rw-r--r--arch/arm/Kconfig.debug7
-rw-r--r--arch/arm/configs/multi_v7_defconfig1
-rw-r--r--arch/arm/mach-bcm/Kconfig26
-rw-r--r--arch/arm/mach-bcm/Makefile1
-rw-r--r--arch/arm/mach-bcm/bcm_5301x.c61
7 files changed, 112 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/bcm4708.txt b/Documentation/devicetree/bindings/arm/bcm4708.txt
new file mode 100644
index 000000000000..6b0f49f6f499
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/bcm4708.txt
@@ -0,0 +1,8 @@
1Broadcom BCM4708 device tree bindings
2-------------------------------------------
3
4Boards with the BCM4708 SoC shall have the following properties:
5
6Required root node property:
7
8compatible = "brcm,bcm4708";
diff --git a/MAINTAINERS b/MAINTAINERS
index e4812f9319bd..af8c8edb8fb5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1889,6 +1889,14 @@ F: arch/arm/boot/dts/bcm2835*
1889F: arch/arm/configs/bcm2835_defconfig 1889F: arch/arm/configs/bcm2835_defconfig
1890F: drivers/*/*bcm2835* 1890F: drivers/*/*bcm2835*
1891 1891
1892BROADCOM BCM5301X ARM ARCHICTURE
1893M: Hauke Mehrtens <hauke@hauke-m.de>
1894L: linux-arm-kernel@lists.infradead.org
1895S: Maintained
1896F: arch/arm/mach-bcm/bcm_5301x.c
1897F: arch/arm/boot/dts/bcm5301x.dtsi
1898F: arch/arm/boot/dts/bcm470*
1899
1892BROADCOM TG3 GIGABIT ETHERNET DRIVER 1900BROADCOM TG3 GIGABIT ETHERNET DRIVER
1893M: Nithin Nayak Sujir <nsujir@broadcom.com> 1901M: Nithin Nayak Sujir <nsujir@broadcom.com>
1894M: Michael Chan <mchan@broadcom.com> 1902M: Michael Chan <mchan@broadcom.com>
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 4491c7b05275..f4b656f789b3 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -106,6 +106,11 @@ choice
106 depends on ARCH_BCM2835 106 depends on ARCH_BCM2835
107 select DEBUG_UART_PL01X 107 select DEBUG_UART_PL01X
108 108
109 config DEBUG_BCM_5301X
110 bool "Kernel low-level debugging on BCM5301X UART1"
111 depends on ARCH_BCM_5301X
112 select DEBUG_UART_PL01X
113
109 config DEBUG_BCM_KONA_UART 114 config DEBUG_BCM_KONA_UART
110 bool "Kernel low-level debugging messages via BCM KONA UART" 115 bool "Kernel low-level debugging messages via BCM KONA UART"
111 depends on ARCH_BCM 116 depends on ARCH_BCM
@@ -1023,6 +1028,7 @@ config DEBUG_UART_PHYS
1023 default 0x101f1000 if ARCH_VERSATILE 1028 default 0x101f1000 if ARCH_VERSATILE
1024 default 0x101fb000 if DEBUG_NOMADIK_UART 1029 default 0x101fb000 if DEBUG_NOMADIK_UART
1025 default 0x16000000 if ARCH_INTEGRATOR 1030 default 0x16000000 if ARCH_INTEGRATOR
1031 default 0x18000300 if DEBUG_BCM_5301X
1026 default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1 1032 default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1
1027 default 0x20060000 if DEBUG_RK29_UART0 1033 default 0x20060000 if DEBUG_RK29_UART0
1028 default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2 1034 default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
@@ -1071,6 +1077,7 @@ config DEBUG_UART_VIRT
1071 default 0xf0009000 if DEBUG_CNS3XXX 1077 default 0xf0009000 if DEBUG_CNS3XXX
1072 default 0xf01fb000 if DEBUG_NOMADIK_UART 1078 default 0xf01fb000 if DEBUG_NOMADIK_UART
1073 default 0xf0201000 if DEBUG_BCM2835 1079 default 0xf0201000 if DEBUG_BCM2835
1080 default 0xf1000300 if DEBUG_BCM_5301X
1074 default 0xf11f1000 if ARCH_VERSATILE 1081 default 0xf11f1000 if ARCH_VERSATILE
1075 default 0xf1600000 if ARCH_INTEGRATOR 1082 default 0xf1600000 if ARCH_INTEGRATOR
1076 default 0xf1c28000 if DEBUG_SUNXI_UART0 1083 default 0xf1c28000 if DEBUG_SUNXI_UART0
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index ee6982976d66..1b4821bc5c7a 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -11,6 +11,7 @@ CONFIG_ARCH_MVEBU=y
11CONFIG_MACH_ARMADA_370=y 11CONFIG_MACH_ARMADA_370=y
12CONFIG_MACH_ARMADA_XP=y 12CONFIG_MACH_ARMADA_XP=y
13CONFIG_ARCH_BCM=y 13CONFIG_ARCH_BCM=y
14CONFIG_ARCH_BCM_5301X=y
14CONFIG_ARCH_BCM_MOBILE=y 15CONFIG_ARCH_BCM_MOBILE=y
15CONFIG_ARCH_BERLIN=y 16CONFIG_ARCH_BERLIN=y
16CONFIG_MACH_BERLIN_BG2=y 17CONFIG_MACH_BERLIN_BG2=y
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index af4f2dfda40c..21474458aa56 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -27,6 +27,32 @@ config ARCH_BCM_MOBILE
27 BCM11130, BCM11140, BCM11351, BCM28145 and 27 BCM11130, BCM11140, BCM11351, BCM28145 and
28 BCM28155 variants. 28 BCM28155 variants.
29 29
30config ARCH_BCM_5301X
31 bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
32 depends on MMU
33 select ARM_GIC
34 select CACHE_L2X0
35 select HAVE_ARM_SCU if SMP
36 select HAVE_ARM_TWD if SMP
37 select HAVE_SMP
38 select COMMON_CLK
39 select GENERIC_CLOCKEVENTS
40 select ARM_GLOBAL_TIMER
41 select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
42 select MIGHT_HAVE_PCI
43 help
44 Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
45
46 This is a network SoC line mostly used in home routers and
47 wifi access points, it's internal name is Northstar.
48 This inclused the following SoC: BCM53010, BCM53011, BCM53012,
49 BCM53014, BCM53015, BCM53016, BCM53017, BCM53018, BCM4707,
50 BCM4708 and BCM4709.
51
52 Do not confuse this with the BCM4760 which is a totally
53 different SoC or with the older BCM47XX and BCM53XX based
54 network SoC using a MIPS CPU, they are supported by arch/mips/bcm47xx
55
30endmenu 56endmenu
31 57
32endif 58endif
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