diff options
author | Christian Daudt <csd@broadcom.com> | 2012-11-19 12:46:10 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-11-20 01:39:07 -0500 |
commit | 8ac49e0485bb79223a111b366a3b1f5ec9148729 (patch) | |
tree | 8846daeeae2c1b70c5e5fe491979c28039054d08 /arch/arm/mach-bcm | |
parent | 0056a985fab537e161405a48dc8f8da0b47e0767 (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/arm/mach-bcm')
-rw-r--r-- | arch/arm/mach-bcm/Kconfig | 19 | ||||
-rw-r--r-- | arch/arm/mach-bcm/Makefile | 13 | ||||
-rw-r--r-- | arch/arm/mach-bcm/board_bcm.c | 57 |
3 files changed, 89 insertions, 0 deletions
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 @@ | |||
1 | config 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 | |||
13 | obj-$(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 | |||
25 | static const struct of_device_id irq_match[] = { | ||
26 | {.compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, | ||
27 | {} | ||
28 | }; | ||
29 | |||
30 | static void timer_init(void) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | static struct sys_timer timer = { | ||
35 | .init = timer_init, | ||
36 | }; | ||
37 | |||
38 | static void __init init_irq(void) | ||
39 | { | ||
40 | of_irq_init(irq_match); | ||
41 | } | ||
42 | |||
43 | static void __init board_init(void) | ||
44 | { | ||
45 | of_platform_populate(NULL, of_default_bus_match_table, NULL, | ||
46 | &platform_bus); | ||
47 | } | ||
48 | |||
49 | static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, }; | ||
50 | |||
51 | DT_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, | ||
57 | MACHINE_END | ||