You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.6 KiB
95 lines
2.6 KiB
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
|
|
@@ -702,7 +702,7 @@ static const struct board_info __initcon
|
|
/*
|
|
* 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
|
|
@@ -13,6 +13,8 @@
|
|
#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 <bcm63xx_board.h>
|
|
#include <bcm63xx_cpu.h>
|
|
#include <bcm63xx_dev_uart.h>
|
|
@@ -31,6 +33,8 @@
|
|
#include <bcm63xx_dev_usb_usbd.h>
|
|
#include <board_bcm963xx.h>
|
|
|
|
+#include "board_common.h"
|
|
+
|
|
#define PFX "board: "
|
|
|
|
static struct board_info board;
|
|
@@ -81,6 +85,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 */
|
|
|