mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 00:41:17 +00:00
e7bfda2c24
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
119 lines
2.9 KiB
Diff
119 lines
2.9 KiB
Diff
From 26546e5499d98616322fb3472b977e2e86603f3a Mon Sep 17 00:00:00 2001
|
|
From: Jonas Gorski <jogo@openwrt.org>
|
|
Date: Tue, 24 Jun 2014 10:57:51 +0200
|
|
Subject: [PATCH 45/48] MIPS: BCM63XX: add support for loading DTB
|
|
|
|
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|
---
|
|
arch/mips/bcm63xx/boards/Kconfig | 4 ++++
|
|
arch/mips/bcm63xx/boards/board_common.c | 34 +++++++++++++++++++++++++++++++
|
|
arch/mips/bcm63xx/prom.c | 6 ++++++
|
|
3 files changed, 44 insertions(+)
|
|
|
|
--- a/arch/mips/bcm63xx/boards/Kconfig
|
|
+++ b/arch/mips/bcm63xx/boards/Kconfig
|
|
@@ -2,6 +2,10 @@
|
|
menu "Board support"
|
|
depends on BCM63XX
|
|
|
|
+config BOARD_BCM63XX_DT
|
|
+ bool "Device Tree boards (experimential)"
|
|
+ select USE_OF
|
|
+
|
|
config BOARD_BCM963XX
|
|
bool "Generic Broadcom 963xx boards"
|
|
select SSB
|
|
--- a/arch/mips/bcm63xx/boards/board_common.c
|
|
+++ b/arch/mips/bcm63xx/boards/board_common.c
|
|
@@ -10,11 +10,14 @@
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/string.h>
|
|
+#include <linux/of_fdt.h>
|
|
+#include <linux/of_platform.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/ssb/ssb.h>
|
|
#include <asm/addrspace.h>
|
|
#include <asm/bootinfo.h>
|
|
#include <asm/fw/cfe/cfe_api.h>
|
|
+#include <asm/prom.h>
|
|
#include <bcm63xx_board.h>
|
|
#include <bcm63xx_cpu.h>
|
|
#include <bcm63xx_dev_uart.h>
|
|
@@ -125,8 +128,23 @@ void __init board_setup(void)
|
|
/* make sure we're running on expected cpu */
|
|
if (bcm63xx_get_cpu_id() != board.expected_cpu_id)
|
|
panic("unexpected CPU for bcm963xx board");
|
|
+
|
|
+#if CONFIG_OF
|
|
+ if (initial_boot_params)
|
|
+ __dt_setup_arch(initial_boot_params);
|
|
+#endif
|
|
}
|
|
|
|
+#if CONFIG_OF
|
|
+void __init device_tree_init(void)
|
|
+{
|
|
+ if (!initial_boot_params)
|
|
+ return;
|
|
+
|
|
+ unflatten_and_copy_device_tree();
|
|
+}
|
|
+#endif
|
|
+
|
|
static struct gpio_led_platform_data bcm63xx_led_data;
|
|
|
|
static struct platform_device bcm63xx_gpio_leds = {
|
|
@@ -135,6 +153,13 @@ static struct platform_device bcm63xx_gp
|
|
.dev.platform_data = &bcm63xx_led_data,
|
|
};
|
|
|
|
+#if CONFIG_OF
|
|
+static struct of_device_id of_ids[] = {
|
|
+ { /* filled at runtime */ },
|
|
+ { .compatible = "simple-bus" },
|
|
+ { },
|
|
+};
|
|
+#endif
|
|
/*
|
|
* third stage init callback, register all board devices.
|
|
*/
|
|
@@ -142,6 +167,15 @@ int __init board_register_devices(void)
|
|
{
|
|
int usbh_ports = 0;
|
|
|
|
+#if CONFIG_OF
|
|
+ if (of_have_populated_dt()) {
|
|
+ snprintf(of_ids[0].compatible, sizeof(of_ids[0].compatible),
|
|
+ "brcm,bcm%x", bcm63xx_get_cpu_id());
|
|
+
|
|
+ of_platform_populate(NULL, of_ids, NULL, NULL);
|
|
+ }
|
|
+#endif
|
|
+
|
|
if (board.has_uart0)
|
|
bcm63xx_uart_register(0);
|
|
|
|
--- a/arch/mips/bcm63xx/prom.c
|
|
+++ b/arch/mips/bcm63xx/prom.c
|
|
@@ -8,6 +8,7 @@
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/bootmem.h>
|
|
+#include <linux/of_fdt.h>
|
|
#include <linux/smp.h>
|
|
#include <asm/bootinfo.h>
|
|
#include <asm/bmips.h>
|
|
@@ -23,6 +24,11 @@ void __init prom_init(void)
|
|
{
|
|
u32 reg, mask;
|
|
|
|
+#if CONFIG_OF
|
|
+ if (fw_passed_dtb)
|
|
+ early_init_dt_verify((void *)fw_passed_dtb);
|
|
+#endif
|
|
+
|
|
bcm63xx_cpu_init();
|
|
|
|
/* stop any running watchdog */
|