aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorChristian Daudt <csd@broadcom.com>2012-11-19 12:46:10 -0500
committerOlof Johansson <olof@lixom.net>2012-11-20 01:39:07 -0500
commit8ac49e0485bb79223a111b366a3b1f5ec9148729 (patch)
tree8846daeeae2c1b70c5e5fe491979c28039054d08 /arch
parent0056a985fab537e161405a48dc8f8da0b47e0767 (diff)
Add support for generic BCM SoC chipsets
In order to start upstreaming Broadcom SoC support, create a starting hierarchy, arch and dts files. The first support SoC family that is planned is the BCM281XX (BCM11130/11140/11351/28145/28155) family of dual A9 mobile SoC cores. This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible. Next steps ---------- Upstream a basic set of drivers - sufficient for a console boot to ramdisk. These will includer timer, gpio, i2c drivers. After this basic set, we will proceed with a more comprehensive set of drivers for the 281XX SoC family. v2 patch mods -------- - Remove l2x0_of_init call as there were problems with the code. A separate patch will be submitted with cache init code - Rename capri files and refs to bcm281xx-based names - Add bcm281xx binding doc - various misc cleanups v3 patch mods ------------- - Remove extra #include lines - Remove remaining references to capri - dt uart chipset string added - cleaned up chip # references v4 patch mods ------------- - swap order of compatible definitions for uart - fix typo v5 patch mods ------------- - Rename bcm281xx to bcm11351 in dts+code, leaving references to bcm281xx only in help+comments. v6 patch mods ------------- - fix typo in uart 'compatible' string Signed-off-by: Christian Daudt <csd@broadcom.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/boot/dts/Makefile1
-rw-r--r--arch/arm/boot/dts/bcm11351-brt.dts30
-rw-r--r--arch/arm/boot/dts/bcm11351.dtsi50
-rw-r--r--arch/arm/configs/bcm_defconfig114
-rw-r--r--arch/arm/mach-bcm/Kconfig19
-rw-r--r--arch/arm/mach-bcm/Makefile13
-rw-r--r--arch/arm/mach-bcm/board_bcm.c57
9 files changed, 287 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e9b6b9e5e779..c1cc4f79e4fe 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1009,6 +1009,8 @@ source "arch/arm/mach-mvebu/Kconfig"
1009 1009
1010source "arch/arm/mach-at91/Kconfig" 1010source "arch/arm/mach-at91/Kconfig"
1011 1011
1012source "arch/arm/mach-bcm/Kconfig"
1013
1012source "arch/arm/mach-clps711x/Kconfig" 1014source "arch/arm/mach-clps711x/Kconfig"
1013 1015
1014source "arch/arm/mach-cns3xxx/Kconfig" 1016source "arch/arm/mach-cns3xxx/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 3353b7613208..208912167823 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -137,6 +137,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
137# Machine directory name. This list is sorted alphanumerically 137# Machine directory name. This list is sorted alphanumerically
138# by CONFIG_* macro name. 138# by CONFIG_* macro name.
139machine-$(CONFIG_ARCH_AT91) += at91 139machine-$(CONFIG_ARCH_AT91) += at91
140machine-$(CONFIG_ARCH_BCM) += bcm
140machine-$(CONFIG_ARCH_BCM2835) += bcm2835 141machine-$(CONFIG_ARCH_BCM2835) += bcm2835
141machine-$(CONFIG_ARCH_CLPS711X) += clps711x 142machine-$(CONFIG_ARCH_CLPS711X) += clps711x
142machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx 143machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 5cc95667fa3b..cc803c92a72c 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -17,6 +17,7 @@ dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb \
17 usb_a9263.dtb \ 17 usb_a9263.dtb \
18 usb_a9g20.dtb 18 usb_a9g20.dtb
19dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb 19dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
20dtb-$(CONFIG_ARCH_BCM) += bcm11351-brt.dtb
20dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ 21dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
21 dove-cubox.dtb \ 22 dove-cubox.dtb \
22 dove-dove-db.dtb 23 dove-dove-db.dtb
diff --git a/arch/arm/boot/dts/bcm11351-brt.dts b/arch/arm/boot/dts/bcm11351-brt.dts
new file mode 100644
index 000000000000..248067cf7069
--- /dev/null
+++ b/arch/arm/boot/dts/bcm11351-brt.dts
@@ -0,0 +1,30 @@
1/*
2 * Copyright (C) 2012 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14/dts-v1/;
15
16/include/ "bcm11351.dtsi"
17
18/ {
19 model = "BCM11351 BRT board";
20 compatible = "bcm,bcm11351-brt", "bcm,bcm11351";
21
22 memory {
23 reg = <0x80000000 0x40000000>; /* 1 GB */
24 };
25
26 uart@3e000000 {
27 status = "okay";
28 };
29
30};
diff --git a/arch/arm/boot/dts/bcm11351.dtsi b/arch/arm/boot/dts/bcm11351.dtsi
new file mode 100644
index 000000000000..ad135885bd2a
--- /dev/null
+++ b/arch/arm/boot/dts/bcm11351.dtsi
@@ -0,0 +1,50 @@
1/*
2 * Copyright (C) 2012 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14/include/ "skeleton.dtsi"
15
16/ {
17 model = "BCM11351 SoC";
18 compatible = "bcm,bcm11351";
19 interrupt-parent = <&gic>;
20
21 chosen {
22 bootargs = "console=ttyS0,115200n8";
23 };
24
25 gic: interrupt-controller@3ff00100 {
26 compatible = "arm,cortex-a9-gic";
27 #interrupt-cells = <3>;
28 #address-cells = <0>;
29 interrupt-controller;
30 reg = <0x3ff01000 0x1000>,
31 <0x3ff00100 0x100>;
32 };
33
34 uart@3e000000 {
35 compatible = "bcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart";
36 status = "disabled";
37 reg = <0x3e000000 0x1000>;
38 clock-frequency = <13000000>;
39 interrupts = <0x0 67 0x4>;
40 reg-shift = <2>;
41 reg-io-width = <4>;
42 };
43
44 L2: l2-cache {
45 compatible = "arm,pl310-cache";
46 reg = <0x3ff20000 0x1000>;
47 cache-unified;
48 cache-level = <2>;
49 };
50};
diff --git a/arch/arm/configs/bcm_defconfig b/arch/arm/configs/bcm_defconfig
new file mode 100644
index 000000000000..e3bf2d65618e
--- /dev/null
+++ b/arch/arm/configs/bcm_defconfig
@@ -0,0 +1,114 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set
3# CONFIG_SWAP is not set
4CONFIG_SYSVIPC=y
5CONFIG_NO_HZ=y
6CONFIG_HIGH_RES_TIMERS=y
7CONFIG_BSD_PROCESS_ACCT=y
8CONFIG_BSD_PROCESS_ACCT_V3=y
9CONFIG_IKCONFIG=y
10CONFIG_IKCONFIG_PROC=y
11CONFIG_LOG_BUF_SHIFT=19
12CONFIG_CGROUPS=y
13CONFIG_CGROUP_FREEZER=y
14CONFIG_CGROUP_DEVICE=y
15CONFIG_CGROUP_CPUACCT=y
16CONFIG_RESOURCE_COUNTERS=y
17CONFIG_CGROUP_SCHED=y
18CONFIG_BLK_CGROUP=y
19CONFIG_NAMESPACES=y
20CONFIG_BLK_DEV_INITRD=y
21CONFIG_SYSCTL_SYSCALL=y
22CONFIG_EMBEDDED=y
23# CONFIG_COMPAT_BRK is not set
24CONFIG_MODULES=y
25CONFIG_MODULE_UNLOAD=y
26# CONFIG_BLK_DEV_BSG is not set
27CONFIG_PARTITION_ADVANCED=y
28CONFIG_EFI_PARTITION=y
29CONFIG_ARCH_BCM=y
30CONFIG_ARM_THUMBEE=y
31CONFIG_ARM_ERRATA_743622=y
32CONFIG_PREEMPT=y
33CONFIG_AEABI=y
34# CONFIG_OABI_COMPAT is not set
35# CONFIG_COMPACTION is not set
36CONFIG_ZBOOT_ROM_TEXT=0x0
37CONFIG_ZBOOT_ROM_BSS=0x0
38CONFIG_ARM_APPENDED_DTB=y
39CONFIG_CMDLINE="console=ttyS0,115200n8 mem=128M"
40CONFIG_CPU_IDLE=y
41CONFIG_VFP=y
42CONFIG_NEON=y
43# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
44CONFIG_PM_RUNTIME=y
45CONFIG_DEVTMPFS=y
46CONFIG_DEVTMPFS_MOUNT=y
47CONFIG_PROC_DEVICETREE=y
48# CONFIG_BLK_DEV is not set
49CONFIG_SCSI=y
50CONFIG_BLK_DEV_SD=y
51CONFIG_CHR_DEV_SG=y
52CONFIG_SCSI_MULTI_LUN=y
53CONFIG_SCSI_SCAN_ASYNC=y
54CONFIG_INPUT_FF_MEMLESS=y
55CONFIG_INPUT_JOYDEV=y
56CONFIG_INPUT_EVDEV=y
57# CONFIG_KEYBOARD_ATKBD is not set
58# CONFIG_INPUT_MOUSE is not set
59CONFIG_INPUT_TOUCHSCREEN=y
60CONFIG_INPUT_MISC=y
61CONFIG_INPUT_UINPUT=y
62# CONFIG_SERIO is not set
63# CONFIG_LEGACY_PTYS is not set
64CONFIG_SERIAL_8250=y
65CONFIG_SERIAL_8250_CONSOLE=y
66CONFIG_SERIAL_8250_EXTENDED=y
67CONFIG_SERIAL_8250_MANY_PORTS=y
68CONFIG_SERIAL_8250_SHARE_IRQ=y
69CONFIG_SERIAL_8250_RSA=y
70CONFIG_SERIAL_8250_DW=y
71CONFIG_HW_RANDOM=y
72CONFIG_I2C=y
73CONFIG_I2C_CHARDEV=y
74# CONFIG_HWMON is not set
75CONFIG_VIDEO_OUTPUT_CONTROL=y
76CONFIG_FB=y
77CONFIG_BACKLIGHT_LCD_SUPPORT=y
78CONFIG_LCD_CLASS_DEVICE=y
79CONFIG_BACKLIGHT_CLASS_DEVICE=y
80# CONFIG_USB_SUPPORT is not set
81CONFIG_NEW_LEDS=y
82CONFIG_LEDS_CLASS=y
83CONFIG_LEDS_TRIGGERS=y
84CONFIG_LEDS_TRIGGER_TIMER=y
85CONFIG_LEDS_TRIGGER_HEARTBEAT=y
86CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
87CONFIG_EXT4_FS=y
88CONFIG_EXT4_FS_POSIX_ACL=y
89CONFIG_EXT4_FS_SECURITY=y
90CONFIG_AUTOFS4_FS=y
91CONFIG_FUSE_FS=y
92CONFIG_MSDOS_FS=y
93CONFIG_VFAT_FS=y
94CONFIG_TMPFS=y
95CONFIG_TMPFS_POSIX_ACL=y
96CONFIG_CONFIGFS_FS=y
97# CONFIG_MISC_FILESYSTEMS is not set
98CONFIG_NLS_CODEPAGE_437=y
99CONFIG_NLS_ISO8859_1=y
100CONFIG_PRINTK_TIME=y
101CONFIG_MAGIC_SYSRQ=y
102CONFIG_DEBUG_FS=y
103CONFIG_DETECT_HUNG_TASK=y
104CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=110
105CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
106CONFIG_DEBUG_INFO=y
107# CONFIG_FTRACE is not set
108CONFIG_DEBUG_LL=y
109CONFIG_CRC_CCITT=y
110CONFIG_CRC_T10DIF=y
111CONFIG_CRC_ITU_T=y
112CONFIG_CRC7=y
113CONFIG_XZ_DEC=y
114CONFIG_AVERAGE=y
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
new file mode 100644
index 000000000000..48705c10a0fe
--- /dev/null
+++ b/arch/arm/mach-bcm/Kconfig
@@ -0,0 +1,19 @@
1config ARCH_BCM
2 bool "Broadcom SoC" if ARCH_MULTI_V7
3 depends on MMU
4 select ARCH_REQUIRE_GPIOLIB
5 select ARM_ERRATA_754322
6 select ARM_ERRATA_764369 if SMP
7 select ARM_GIC
8 select CPU_V7
9 select GENERIC_CLOCKEVENTS
10 select GENERIC_GPIO
11 select GENERIC_TIME
12 select GPIO_BCM
13 select SPARSE_IRQ
14 select TICK_ONESHOT
15 help
16 This enables support for system based on Broadcom SoCs.
17 It currently supports the 'BCM281XX' family, which includes
18 BCM11130, BCM11140, BCM11351, BCM28145 and
19 BCM28155 variants.
diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile
new file mode 100644
index 000000000000..bbf412261e5e
--- /dev/null
+++ b/arch/arm/mach-bcm/Makefile
@@ -0,0 +1,13 @@
1#
2# Copyright (C) 2012 Broadcom Corporation
3#
4# This program is free software; you can redistribute it and/or
5# modify it under the terms of the GNU General Public License as
6# published by the Free Software Foundation version 2.
7#
8# This program is distributed "as is" WITHOUT ANY WARRANTY of any
9# kind, whether express or implied; without even the implied warranty
10# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12
13obj-$(CONFIG_ARCH_BCM) := board_bcm.o
diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm.c
new file mode 100644
index 000000000000..3a62f1b1cabc
--- /dev/null
+++ b/arch/arm/mach-bcm/board_bcm.c
@@ -0,0 +1,57 @@
1/*
2 * Copyright (C) 2012 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include <linux/of_irq.h>
15#include <linux/of_platform.h>
16#include <linux/init.h>
17#include <linux/device.h>
18#include <linux/platform_device.h>
19
20#include <asm/mach/arch.h>
21#include <asm/hardware/gic.h>
22
23#include <asm/mach/time.h>
24
25static const struct of_device_id irq_match[] = {
26 {.compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
27 {}
28};
29
30static void timer_init(void)
31{
32}
33
34static struct sys_timer timer = {
35 .init = timer_init,
36};
37
38static void __init init_irq(void)
39{
40 of_irq_init(irq_match);
41}
42
43static void __init board_init(void)
44{
45 of_platform_populate(NULL, of_default_bus_match_table, NULL,
46 &platform_bus);
47}
48
49static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, };
50
51DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor")
52 .init_irq = init_irq,
53 .timer = &timer,
54 .init_machine = board_init,
55 .dt_compat = bcm11351_dt_compat,
56 .handle_irq = gic_handle_irq,
57MACHINE_END