mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	Only netboot tested. Flash at your own risk. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 47702
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 4e9c34a37bd3442b286ba55441bfe22c1ac5b65f Mon Sep 17 00:00:00 2001
 | 
						|
From: Jonas Gorski <jogo@openwrt.org>
 | 
						|
Date: Sun, 9 Mar 2014 04:08:06 +0100
 | 
						|
Subject: [PATCH 41/44] MIPS: BCM63XX: pass a mac addresss allocator to board
 | 
						|
 setup
 | 
						|
 | 
						|
Pass a mac address allocator to board setup code to allow board
 | 
						|
implementations to work with third party bootloaders not using nvram
 | 
						|
for configuration storage.
 | 
						|
 | 
						|
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
						|
---
 | 
						|
 arch/mips/bcm63xx/boards/board_bcm963xx.c |  3 ++-
 | 
						|
 arch/mips/bcm63xx/boards/board_common.c   | 16 ++++++++++------
 | 
						|
 arch/mips/bcm63xx/boards/board_common.h   |  3 ++-
 | 
						|
 3 files changed, 14 insertions(+), 8 deletions(-)
 | 
						|
 | 
						|
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 | 
						|
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
 | 
						|
@@ -743,7 +743,8 @@ void __init board_prom_init(void)
 | 
						|
 		if (strncmp(board_name, bcm963xx_boards[i]->name, 16))
 | 
						|
 			continue;
 | 
						|
 		/* copy, board desc array is marked initdata */
 | 
						|
-		board_early_setup(bcm963xx_boards[i]);
 | 
						|
+		board_early_setup(bcm963xx_boards[i],
 | 
						|
+				  bcm63xx_nvram_get_mac_address);
 | 
						|
 		break;
 | 
						|
 	}
 | 
						|
 
 | 
						|
--- a/arch/mips/bcm63xx/boards/board_common.c
 | 
						|
+++ b/arch/mips/bcm63xx/boards/board_common.c
 | 
						|
@@ -18,7 +18,6 @@
 | 
						|
 #include <bcm63xx_dev_uart.h>
 | 
						|
 #include <bcm63xx_regs.h>
 | 
						|
 #include <bcm63xx_io.h>
 | 
						|
-#include <bcm63xx_nvram.h>
 | 
						|
 #include <bcm63xx_gpio.h>
 | 
						|
 #include <bcm63xx_dev_pci.h>
 | 
						|
 #include <bcm63xx_dev_enet.h>
 | 
						|
@@ -82,15 +81,20 @@ const char *board_get_name(void)
 | 
						|
 	return board.name;
 | 
						|
 }
 | 
						|
 
 | 
						|
+static int (*board_get_mac_address)(u8 mac[ETH_ALEN]);
 | 
						|
+
 | 
						|
 /*
 | 
						|
  * setup board for device registration
 | 
						|
  */
 | 
						|
-void __init board_early_setup(const struct board_info *target)
 | 
						|
+void __init board_early_setup(const struct board_info *target,
 | 
						|
+			      int (*get_mac_address)(u8 mac[ETH_ALEN]))
 | 
						|
 {
 | 
						|
 	u32 val;
 | 
						|
 
 | 
						|
 	memcpy(&board, target, sizeof(board));
 | 
						|
 
 | 
						|
+	board_get_mac_address = get_mac_address;
 | 
						|
+
 | 
						|
 	/* setup pin multiplexing depending on board enabled device,
 | 
						|
 	 * this has to be done this early since PCI init is done
 | 
						|
 	 * inside arch_initcall */
 | 
						|
@@ -163,15 +167,15 @@ int __init board_register_devices(void)
 | 
						|
 		bcm63xx_pcmcia_register();
 | 
						|
 
 | 
						|
 	if (board.has_enet0 &&
 | 
						|
-	    !bcm63xx_nvram_get_mac_address(board.enet0.mac_addr))
 | 
						|
+	    !board_get_mac_address(board.enet0.mac_addr))
 | 
						|
 		bcm63xx_enet_register(0, &board.enet0);
 | 
						|
 
 | 
						|
 	if (board.has_enet1 &&
 | 
						|
-	    !bcm63xx_nvram_get_mac_address(board.enet1.mac_addr))
 | 
						|
+	    !board_get_mac_address(board.enet1.mac_addr))
 | 
						|
 		bcm63xx_enet_register(1, &board.enet1);
 | 
						|
 
 | 
						|
 	if (board.has_enetsw &&
 | 
						|
-	    !bcm63xx_nvram_get_mac_address(board.enetsw.mac_addr))
 | 
						|
+	    !board_get_mac_address(board.enetsw.mac_addr))
 | 
						|
 		bcm63xx_enetsw_register(&board.enetsw);
 | 
						|
 
 | 
						|
 	if (board.has_usbd)
 | 
						|
@@ -190,7 +194,7 @@ int __init board_register_devices(void)
 | 
						|
 	 * do this after registering enet devices
 | 
						|
 	 */
 | 
						|
 #ifdef CONFIG_SSB_PCIHOST
 | 
						|
-	if (!bcm63xx_nvram_get_mac_address(bcm63xx_sprom.il0mac)) {
 | 
						|
+	if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
 | 
						|
 		memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
 | 
						|
 		memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
 | 
						|
 		if (ssb_arch_register_fallback_sprom(
 | 
						|
--- a/arch/mips/bcm63xx/boards/board_common.h
 | 
						|
+++ b/arch/mips/bcm63xx/boards/board_common.h
 | 
						|
@@ -3,6 +3,7 @@
 | 
						|
 
 | 
						|
 #include <board_bcm963xx.h>
 | 
						|
 
 | 
						|
-void board_early_setup(const struct board_info *board);
 | 
						|
+void board_early_setup(const struct board_info *board,
 | 
						|
+		       int (*get_mac_address)(u8 mac[ETH_ALEN]));
 | 
						|
 
 | 
						|
 #endif /* __BOARD_COMMON_H */
 |