| 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 @@ |
| # SPDX-License-Identifier: GPL-2.0 |
| -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 |
| |
| -endchoice |
| +endmenu |
| --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c |
| +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c |
| @@ -683,7 +683,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> |
| @@ -30,6 +32,8 @@ |
| #include <bcm63xx_dev_usb_usbd.h> |
| #include <board_bcm963xx.h> |
| |
| +#include "board_common.h" |
| + |
| #define PFX "board: " |
| |
| static struct board_info board; |
| @@ -80,6 +84,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 */ |