171 lines
5.5 KiB
Diff
171 lines
5.5 KiB
Diff
|
From f6459ef9602c16b02516be4848a77d30ce75d168 Mon Sep 17 00:00:00 2001
|
||
|
From: notro <notro@tronnes.org>
|
||
|
Date: Wed, 9 Jul 2014 14:46:08 +0200
|
||
|
Subject: [PATCH 049/114] BCM2708: Add core Device Tree support
|
||
|
|
||
|
Add the bare minimum needed to boot BCM2708 from a Device Tree.
|
||
|
|
||
|
Signed-off-by: Noralf Tronnes <notro@tronnes.org>
|
||
|
|
||
|
BCM2708: DT: change 'axi' nodename to 'soc'
|
||
|
|
||
|
Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
|
||
|
The VC4 bootloader fills in certain properties in the 'axi' subtree,
|
||
|
but since this is part of an upstreaming effort, the name is changed.
|
||
|
|
||
|
Signed-off-by: Noralf Tronnes notro@tronnes.org
|
||
|
---
|
||
|
arch/arm/boot/dts/Makefile | 1 +
|
||
|
arch/arm/boot/dts/bcm2708-rpi-b.dts | 8 ++++++++
|
||
|
arch/arm/boot/dts/bcm2708.dtsi | 27 +++++++++++++++++++++++++++
|
||
|
arch/arm/mach-bcm2708/Kconfig | 8 ++++++++
|
||
|
arch/arm/mach-bcm2708/bcm2708.c | 24 ++++++++++++++++++++++++
|
||
|
5 files changed, 68 insertions(+)
|
||
|
create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
|
||
|
create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
|
||
|
|
||
|
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||
|
index 38c89ca..c727f71 100644
|
||
|
--- a/arch/arm/boot/dts/Makefile
|
||
|
+++ b/arch/arm/boot/dts/Makefile
|
||
|
@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb
|
||
|
|
||
|
dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
|
||
|
dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
|
||
|
+dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
|
||
|
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
|
||
|
dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb
|
||
|
dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb
|
||
|
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
|
||
|
new file mode 100644
|
||
|
index 0000000..e319c8e
|
||
|
--- /dev/null
|
||
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
|
||
|
@@ -0,0 +1,8 @@
|
||
|
+/dts-v1/;
|
||
|
+
|
||
|
+/include/ "bcm2708.dtsi"
|
||
|
+
|
||
|
+/ {
|
||
|
+ compatible = "brcm,bcm2708";
|
||
|
+ model = "Raspberry Pi";
|
||
|
+};
|
||
|
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
|
||
|
new file mode 100644
|
||
|
index 0000000..50da059
|
||
|
--- /dev/null
|
||
|
+++ b/arch/arm/boot/dts/bcm2708.dtsi
|
||
|
@@ -0,0 +1,27 @@
|
||
|
+/include/ "skeleton.dtsi"
|
||
|
+
|
||
|
+/ {
|
||
|
+ compatible = "brcm,bcm2708";
|
||
|
+ model = "BCM2708";
|
||
|
+
|
||
|
+ chosen {
|
||
|
+ /*
|
||
|
+ bootargs must be 1024 characters long because the
|
||
|
+ VC bootloader can't expand it
|
||
|
+ */
|
||
|
+ bootargs = "console=ttyAMA0 ";
|
||
|
+ };
|
||
|
+
|
||
|
+ soc {
|
||
|
+ compatible = "simple-bus";
|
||
|
+ #address-cells = <1>;
|
||
|
+ #size-cells = <1>;
|
||
|
+ ranges = <0x7e000000 0x20000000 0x02000000>;
|
||
|
+ };
|
||
|
+
|
||
|
+ clocks {
|
||
|
+ compatible = "simple-bus";
|
||
|
+ #address-cells = <1>;
|
||
|
+ #size-cells = <0>;
|
||
|
+ };
|
||
|
+};
|
||
|
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
|
||
|
index e151ed4..182e7ba 100644
|
||
|
--- a/arch/arm/mach-bcm2708/Kconfig
|
||
|
+++ b/arch/arm/mach-bcm2708/Kconfig
|
||
|
@@ -9,6 +9,14 @@ config MACH_BCM2708
|
||
|
help
|
||
|
Include support for the Broadcom(R) BCM2708 platform.
|
||
|
|
||
|
+config BCM2708_DT
|
||
|
+ bool "BCM2708 Device Tree support"
|
||
|
+ depends on MACH_BCM2708
|
||
|
+ default n
|
||
|
+ select USE_OF
|
||
|
+ help
|
||
|
+ Enable Device Tree support for BCM2708
|
||
|
+
|
||
|
config BCM2708_GPIO
|
||
|
bool "BCM2708 gpio support"
|
||
|
depends on MACH_BCM2708
|
||
|
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
|
||
|
index ef12cb8..747e27a 100644
|
||
|
--- a/arch/arm/mach-bcm2708/bcm2708.c
|
||
|
+++ b/arch/arm/mach-bcm2708/bcm2708.c
|
||
|
@@ -33,6 +33,7 @@
|
||
|
#include <linux/cnt32_to_63.h>
|
||
|
#include <linux/io.h>
|
||
|
#include <linux/module.h>
|
||
|
+#include <linux/of_platform.h>
|
||
|
#include <linux/spi/spi.h>
|
||
|
#include <linux/w1-gpio.h>
|
||
|
|
||
|
@@ -734,6 +735,22 @@ static void bcm2708_power_off(void)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+#ifdef CONFIG_OF
|
||
|
+static void __init bcm2708_dt_init(void)
|
||
|
+{
|
||
|
+ int ret;
|
||
|
+
|
||
|
+ of_clk_init(NULL);
|
||
|
+ ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||
|
+ if (ret) {
|
||
|
+ pr_err("of_platform_populate failed: %d\n", ret);
|
||
|
+ BUG();
|
||
|
+ }
|
||
|
+}
|
||
|
+#else
|
||
|
+static void __init bcm2708_dt_init(void) { }
|
||
|
+#endif /* CONFIG_OF */
|
||
|
+
|
||
|
void __init bcm2708_init(void)
|
||
|
{
|
||
|
int i;
|
||
|
@@ -745,6 +762,7 @@ void __init bcm2708_init(void)
|
||
|
pm_power_off = bcm2708_power_off;
|
||
|
|
||
|
bcm2708_init_clocks();
|
||
|
+ bcm2708_dt_init();
|
||
|
|
||
|
bcm_register_device(&bcm2708_dmaman_device);
|
||
|
bcm_register_device(&bcm2708_vcio_device);
|
||
|
@@ -965,6 +983,11 @@ static void __init board_reserve(void)
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
+static const char * const bcm2708_compat[] = {
|
||
|
+ "brcm,bcm2708",
|
||
|
+ NULL
|
||
|
+};
|
||
|
+
|
||
|
MACHINE_START(BCM2708, "BCM2708")
|
||
|
/* Maintainer: Broadcom Europe Ltd. */
|
||
|
.map_io = bcm2708_map_io,
|
||
|
@@ -974,6 +997,7 @@ MACHINE_START(BCM2708, "BCM2708")
|
||
|
.init_early = bcm2708_init_early,
|
||
|
.reserve = board_reserve,
|
||
|
.restart = bcm2708_restart,
|
||
|
+ .dt_compat = bcm2708_compat,
|
||
|
MACHINE_END
|
||
|
|
||
|
module_param(boardrev, uint, 0644);
|
||
|
--
|
||
|
1.8.3.2
|
||
|
|