diff options
author | Matt Porter <mporter@linaro.org> | 2014-03-14 11:20:43 -0400 |
---|---|---|
committer | Matt Porter <mporter@linaro.org> | 2014-03-14 11:20:43 -0400 |
commit | 833688f4e49f659ad90a3ea7e2905720774c3f61 (patch) | |
tree | 1ec242f0c13e40fe9421f86561d0d81dec42fd12 | |
parent | 0e8b860ac6d65209beea03ee9b718089838476ef (diff) | |
parent | fdf4850cb5b2e5e549a18b8b41abb001bfb19e9c (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
-rw-r--r-- | Documentation/devicetree/bindings/arm/bcm4708.txt | 8 | ||||
-rw-r--r-- | MAINTAINERS | 8 | ||||
-rw-r--r-- | arch/arm/Kconfig.debug | 7 | ||||
-rw-r--r-- | arch/arm/configs/multi_v7_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-bcm/Kconfig | 27 | ||||
-rw-r--r-- | arch/arm/mach-bcm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-bcm/bcm_5301x.c | 61 |
7 files changed, 112 insertions, 1 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 @@ | |||
1 | Broadcom BCM4708 device tree bindings | ||
2 | ------------------------------------------- | ||
3 | |||
4 | Boards with the BCM4708 SoC shall have the following properties: | ||
5 | |||
6 | Required root node property: | ||
7 | |||
8 | compatible = "brcm,bcm4708"; | ||
diff --git a/MAINTAINERS b/MAINTAINERS index fb08dcececf1..082eccdfbc4f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1880,6 +1880,14 @@ F: arch/arm/boot/dts/bcm2835* | |||
1880 | F: arch/arm/configs/bcm2835_defconfig | 1880 | F: arch/arm/configs/bcm2835_defconfig |
1881 | F: drivers/*/*bcm2835* | 1881 | F: drivers/*/*bcm2835* |
1882 | 1882 | ||
1883 | BROADCOM BCM5301X ARM ARCHICTURE | ||
1884 | M: Hauke Mehrtens <hauke@hauke-m.de> | ||
1885 | L: linux-arm-kernel@lists.infradead.org | ||
1886 | S: Maintained | ||
1887 | F: arch/arm/mach-bcm/bcm_5301x.c | ||
1888 | F: arch/arm/boot/dts/bcm5301x.dtsi | ||
1889 | F: arch/arm/boot/dts/bcm470* | ||
1890 | |||
1883 | BROADCOM TG3 GIGABIT ETHERNET DRIVER | 1891 | BROADCOM TG3 GIGABIT ETHERNET DRIVER |
1884 | M: Nithin Nayak Sujir <nsujir@broadcom.com> | 1892 | M: Nithin Nayak Sujir <nsujir@broadcom.com> |
1885 | M: Michael Chan <mchan@broadcom.com> | 1893 | M: Michael Chan <mchan@broadcom.com> |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 0531da8e5216..315ce91997b3 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 | |||
11 | CONFIG_MACH_ARMADA_370=y | 11 | CONFIG_MACH_ARMADA_370=y |
12 | CONFIG_MACH_ARMADA_XP=y | 12 | CONFIG_MACH_ARMADA_XP=y |
13 | CONFIG_ARCH_BCM=y | 13 | CONFIG_ARCH_BCM=y |
14 | CONFIG_ARCH_BCM_5301X=y | ||
14 | CONFIG_ARCH_BCM_MOBILE=y | 15 | CONFIG_ARCH_BCM_MOBILE=y |
15 | CONFIG_ARCH_BERLIN=y | 16 | CONFIG_ARCH_BERLIN=y |
16 | CONFIG_MACH_BERLIN_BG2=y | 17 | CONFIG_MACH_BERLIN_BG2=y |
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 | ||
34 | config 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 | |||
35 | endmenu | 60 | endmenu |
36 | 61 | ||
37 | endif | 62 | endif |
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 @@ | |||
13 | obj-$(CONFIG_ARCH_BCM_MOBILE) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o | 13 | obj-$(CONFIG_ARCH_BCM_MOBILE) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o |
14 | plus_sec := $(call as-instr,.arch_extension sec,+sec) | 14 | plus_sec := $(call as-instr,.arch_extension sec,+sec) |
15 | AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) | 15 | AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) |
16 | obj-$(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 | |||
16 | static bool first_fault = true; | ||
17 | |||
18 | static 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 | |||
39 | static 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 | |||
46 | static 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 | |||
52 | static const char __initconst *bcm5301x_dt_compat[] = { | ||
53 | "brcm,bcm4708", | ||
54 | NULL, | ||
55 | }; | ||
56 | |||
57 | DT_MACHINE_START(BCM5301X, "BCM5301X") | ||
58 | .init_early = bcm5301x_init_early, | ||
59 | .init_machine = bcm5301x_dt_init, | ||
60 | .dt_compat = bcm5301x_dt_compat, | ||
61 | MACHINE_END | ||