openwrt/target/linux/brcm63xx/patches-3.14/354-MIPS-BCM63XX-allow-building-support-for-more-than-on.patch
Jonas Gorski 43cc8c3ebe brcm63xx: allow bcm963xx and livebox support at the same time
Use the CFE_EPTSEAL to tell them apart at runtime. Added for now only
for the 3.14 until properly tested.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 41296
2014-06-21 19:23:38 +00:00

96 lines
2.6 KiB
Diff

From 0daf361ea799fba0af5a232036d0f06cea85ad24 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jogo@openwrt.org>
Date: Sat, 21 Jun 2014 12:47:49 +0200
Subject: [PATCH 42/44] MIPS: BCM63XX: allow building support for more than one
board type
Use the arguments passed to the kernel to detect being booted with
CFE as the indicator for bcm963xx board support, allowing the
non presence of CFE_EPTSEAL to assume a different board type.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
---
arch/mips/bcm63xx/boards/Kconfig | 7 +++----
arch/mips/bcm63xx/boards/board_bcm963xx.c | 2 +-
arch/mips/bcm63xx/boards/board_common.c | 13 +++++++++++++
arch/mips/bcm63xx/boards/board_common.h | 6 ++++++
4 files changed, 23 insertions(+), 5 deletions(-)
--- a/arch/mips/bcm63xx/boards/Kconfig
+++ b/arch/mips/bcm63xx/boards/Kconfig
@@ -1,11 +1,10 @@
-choice
- prompt "Board support"
+menu "Board support"
depends on BCM63XX
- default BOARD_BCM963XX
config BOARD_BCM963XX
bool "Generic Broadcom 963xx boards"
select SSB
+ default y
help
-endchoice
+endmenu
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -754,7 +754,7 @@ static void __init boardid_fixup(u8 *boo
/*
* early init callback, read nvram data from flash and checksum it
*/
-void __init board_prom_init(void)
+void __init board_bcm963xx_init(void)
{
unsigned int i;
u8 *boot_addr, *cfe;
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
@@ -15,6 +15,8 @@
#include <linux/gpio_keys.h>
#include <linux/spi/spi.h>
#include <asm/addrspace.h>
+#include <asm/bootinfo.h>
+#include <asm/fw/cfe/cfe_api.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
#include <bcm63xx_dev_uart.h>
@@ -32,6 +34,8 @@
#include <bcm63xx_dev_usb_usbd.h>
#include <board_bcm963xx.h>
+#include "board_common.h"
+
#define PFX "board: "
#define BCM963XX_KEYS_POLL_INTERVAL 20
@@ -84,6 +88,15 @@ const char *board_get_name(void)
return board.name;
}
+void __init board_prom_init(void)
+{
+ /* detect bootloader */
+ if (fw_arg3 == CFE_EPTSEAL)
+ board_bcm963xx_init();
+ else
+ panic("unsupported bootloader detected");
+}
+
static int (*board_get_mac_address)(u8 mac[ETH_ALEN]);
/*
--- a/arch/mips/bcm63xx/boards/board_common.h
+++ b/arch/mips/bcm63xx/boards/board_common.h
@@ -6,4 +6,10 @@
void board_early_setup(const struct board_info *board,
int (*get_mac_address)(u8 mac[ETH_ALEN]));
+#if defined(CONFIG_BOARD_BCM963XX)
+void board_bcm963xx_init(void);
+#else
+static inline void board_bcm963xx_init(void) { }
+#endif
+
#endif /* __BOARD_COMMON_H */