You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
5.0 KiB
148 lines
5.0 KiB
From 5b293ebe757213993ae93b6cbbf5e1d09b75ac2f Mon Sep 17 00:00:00 2001
|
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
|
Date: Tue, 4 Feb 2014 00:01:43 +0100
|
|
Subject: [PATCH 1/3] ARM: BCM5301X: initial support for the BCM5301X/BCM470X
|
|
SoCs with ARM CPU
|
|
|
|
This patch adds support for the BCM5301X/BCM470X SoCs with an ARM CPUs.
|
|
Currently just booting to a shell is working and nothing else, no
|
|
Ethernet, wifi, flash, ...
|
|
I have some pending patches to make Ethernet work for this device.
|
|
Mostly device tree support for bcma is missing.
|
|
|
|
This SoC is used in small office and home router with Broadcom SoCs
|
|
it's internal name is Northstar. This code should support the BCM4707,
|
|
BCM4708, BCM4709, BCM53010, BCM53011 and BCM53012 SoC. It uses one or
|
|
two ARM Cortex A9 Cores, some highlights are 2 PCIe 2.0 controllers,
|
|
4 Gigabit Ethernet MACs and a USB 3.0 host controller.
|
|
|
|
This SoC uses a dual core CPU, but this is currently not implemented.
|
|
More information about this SoC can be found here:
|
|
http://www.anandtech.com/show/5925/broadcom-announces-bcm4708x-and-bcm5301x-socs-for-80211ac-routers
|
|
|
|
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|
Acked-by: Arnd Bergmann <arnd@arndb.de>
|
|
Acked-by: Christian Daudt <bcm@fixthebug.org>
|
|
Signed-off-by: Matt Porter <mporter@linaro.org>
|
|
---
|
|
Documentation/devicetree/bindings/arm/bcm4708.txt | 8 ++++++
|
|
MAINTAINERS | 8 ++++++
|
|
arch/arm/configs/multi_v7_defconfig | 1 +
|
|
arch/arm/mach-bcm/Kconfig | 26 +++++++++++++++++++
|
|
arch/arm/mach-bcm/Makefile | 1 +
|
|
arch/arm/mach-bcm/bcm_5301x.c | 28 +++++++++++++++++++++
|
|
6 files changed, 72 insertions(+)
|
|
create mode 100644 Documentation/devicetree/bindings/arm/bcm4708.txt
|
|
create mode 100644 arch/arm/mach-bcm/bcm_5301x.c
|
|
|
|
--- /dev/null
|
|
+++ b/Documentation/devicetree/bindings/arm/bcm4708.txt
|
|
@@ -0,0 +1,8 @@
|
|
+Broadcom BCM4708 device tree bindings
|
|
+-------------------------------------------
|
|
+
|
|
+Boards with the BCM4708 SoC shall have the following properties:
|
|
+
|
|
+Required root node property:
|
|
+
|
|
+compatible = "brcm,bcm4708";
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -1883,6 +1883,14 @@ F: arch/arm/boot/dts/bcm2835*
|
|
F: arch/arm/configs/bcm2835_defconfig
|
|
F: drivers/*/*bcm2835*
|
|
|
|
+BROADCOM BCM5301X ARM ARCHICTURE
|
|
+M: Hauke Mehrtens <hauke@hauke-m.de>
|
|
+L: linux-arm-kernel@lists.infradead.org
|
|
+S: Maintained
|
|
+F: arch/arm/mach-bcm/bcm_5301x.c
|
|
+F: arch/arm/boot/dts/bcm5301x.dtsi
|
|
+F: arch/arm/boot/dts/bcm470*
|
|
+
|
|
BROADCOM TG3 GIGABIT ETHERNET DRIVER
|
|
M: Nithin Nayak Sujir <nsujir@broadcom.com>
|
|
M: Michael Chan <mchan@broadcom.com>
|
|
--- a/arch/arm/configs/multi_v7_defconfig
|
|
+++ b/arch/arm/configs/multi_v7_defconfig
|
|
@@ -11,6 +11,7 @@ CONFIG_ARCH_MVEBU=y
|
|
CONFIG_MACH_ARMADA_370=y
|
|
CONFIG_MACH_ARMADA_XP=y
|
|
CONFIG_ARCH_BCM=y
|
|
+CONFIG_ARCH_BCM_5301X=y
|
|
CONFIG_ARCH_BCM_MOBILE=y
|
|
CONFIG_ARCH_BERLIN=y
|
|
CONFIG_MACH_BERLIN_BG2=y
|
|
--- a/arch/arm/mach-bcm/Kconfig
|
|
+++ b/arch/arm/mach-bcm/Kconfig
|
|
@@ -32,6 +32,32 @@ config ARCH_BCM_MOBILE
|
|
BCM11130, BCM11140, BCM11351, BCM28145 and
|
|
BCM28155 variants.
|
|
|
|
+config ARCH_BCM_5301X
|
|
+ bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
|
|
+ depends on MMU
|
|
+ select ARM_GIC
|
|
+ select CACHE_L2X0
|
|
+ select HAVE_ARM_SCU if SMP
|
|
+ select HAVE_ARM_TWD if SMP
|
|
+ select HAVE_SMP
|
|
+ select COMMON_CLK
|
|
+ select GENERIC_CLOCKEVENTS
|
|
+ select ARM_GLOBAL_TIMER
|
|
+ select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
|
|
+ select MIGHT_HAVE_PCI
|
|
+ help
|
|
+ Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
|
|
+
|
|
+ This is a network SoC line mostly used in home routers and
|
|
+ wifi access points, it's internal name is Northstar.
|
|
+ This inclused the following SoC: BCM53010, BCM53011, BCM53012,
|
|
+ BCM53014, BCM53015, BCM53016, BCM53017, BCM53018, BCM4707,
|
|
+ BCM4708 and BCM4709.
|
|
+
|
|
+ Do not confuse this with the BCM4760 which is a totally
|
|
+ different SoC or with the older BCM47XX and BCM53XX based
|
|
+ network SoC using a MIPS CPU, they are supported by arch/mips/bcm47xx
|
|
+
|
|
endmenu
|
|
|
|
endif
|
|
--- a/arch/arm/mach-bcm/Makefile
|
|
+++ b/arch/arm/mach-bcm/Makefile
|
|
@@ -13,3 +13,4 @@
|
|
obj-$(CONFIG_ARCH_BCM_MOBILE) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o
|
|
plus_sec := $(call as-instr,.arch_extension sec,+sec)
|
|
AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec)
|
|
+obj-$(CONFIG_ARCH_BCM_5301X) += bcm_5301x.o
|
|
--- /dev/null
|
|
+++ b/arch/arm/mach-bcm/bcm_5301x.c
|
|
@@ -0,0 +1,28 @@
|
|
+/*
|
|
+ * Broadcom BCM470X / BCM5301X ARM platform code.
|
|
+ *
|
|
+ * Copyright 2013 Hauke Mehrtens <hauke@hauke-m.de>
|
|
+ *
|
|
+ * Licensed under the GNU/GPL. See COPYING for details.
|
|
+ */
|
|
+#include <linux/of_platform.h>
|
|
+#include <asm/hardware/cache-l2x0.h>
|
|
+
|
|
+#include <asm/mach/arch.h>
|
|
+
|
|
+
|
|
+static void __init bcm5301x_dt_init(void)
|
|
+{
|
|
+ l2x0_of_init(0, ~0UL);
|
|
+ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
|
+}
|
|
+
|
|
+static const char __initconst *bcm5301x_dt_compat[] = {
|
|
+ "brcm,bcm4708",
|
|
+ NULL,
|
|
+};
|
|
+
|
|
+DT_MACHINE_START(BCM5301X, "BCM5301X")
|
|
+ .init_machine = bcm5301x_dt_init,
|
|
+ .dt_compat = bcm5301x_dt_compat,
|
|
+MACHINE_END
|
|
|