brcm63xx: add linux 4.4 support
[openwrt.git] / target / linux / brcm63xx / patches-4.4 / 357-MIPS-BCM63XX-use-platform-data-for-the-sprom.patch
diff --git a/target/linux/brcm63xx/patches-4.4/357-MIPS-BCM63XX-use-platform-data-for-the-sprom.patch b/target/linux/brcm63xx/patches-4.4/357-MIPS-BCM63XX-use-platform-data-for-the-sprom.patch
new file mode 100644 (file)
index 0000000..9120b71
--- /dev/null
@@ -0,0 +1,95 @@
+From 9912a8b3c240a9b0af01ff496b7e8ed9e4cc5b82 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Tue, 29 Jul 2014 21:43:49 +0200
+Subject: [PATCH 02/10] MIPS: BCM63XX: use platform data for the sprom
+
+Similar to ethernet setup, use a platform data struct for passing
+the mac. This eliminates the requirement to allocate an array on
+stack for the mac passed.
+
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+ arch/mips/bcm63xx/boards/board_common.c                     | 6 ++----
+ arch/mips/bcm63xx/sprom.c                                   | 8 ++++----
+ arch/mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h | 8 +++++++-
+ arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h         | 4 ++++
+ 4 files changed, 17 insertions(+), 9 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_common.c
++++ b/arch/mips/bcm63xx/boards/board_common.c
+@@ -143,7 +143,6 @@ static struct platform_device bcm63xx_gp
+ int __init board_register_devices(void)
+ {
+       int usbh_ports = 0;
+-      u8 mac[ETH_ALEN];
+       if (board.has_uart0)
+               bcm63xx_uart_register(0);
+@@ -189,8 +188,8 @@ int __init board_register_devices(void)
+        * do this after registering enet devices
+        */
+-      if (board_get_mac_address(mac) ||
+-          bcm63xx_register_fallback_sprom(mac))
++      if (board_get_mac_address(board.fallback_sprom.mac_addr) ||
++          bcm63xx_register_fallback_sprom(&board.fallback_sprom))
+               pr_err(PFX "failed to register fallback SPROM\n");
+       bcm63xx_spi_register();
+--- a/arch/mips/bcm63xx/sprom.c
++++ b/arch/mips/bcm63xx/sprom.c
+@@ -55,14 +55,14 @@ int bcm63xx_get_fallback_sprom(struct ss
+ }
+ #endif
+-int __init bcm63xx_register_fallback_sprom(u8 *mac)
++int __init bcm63xx_register_fallback_sprom(struct fallback_sprom_data *data)
+ {
+       int ret = 0;
+ #ifdef CONFIG_SSB_PCIHOST
+-      memcpy(bcm63xx_sprom.il0mac, mac, ETH_ALEN);
+-      memcpy(bcm63xx_sprom.et0mac, mac, ETH_ALEN);
+-      memcpy(bcm63xx_sprom.et1mac, mac, ETH_ALEN);
++      memcpy(bcm63xx_sprom.il0mac, data->mac_addr, ETH_ALEN);
++      memcpy(bcm63xx_sprom.et0mac, data->mac_addr, ETH_ALEN);
++      memcpy(bcm63xx_sprom.et1mac, data->mac_addr, ETH_ALEN);
+       ret = ssb_arch_register_fallback_sprom(&bcm63xx_get_fallback_sprom);
+ #endif
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h
+@@ -1,6 +1,12 @@
+ #ifndef __BCM63XX_FALLBACK_SPROM
+ #define __BCM63XX_FALLBACK_SPROM
+-int bcm63xx_register_fallback_sprom(u8 *mac);
++#include <linux/if_ether.h>
++
++struct fallback_sprom_data {
++      u8 mac_addr[ETH_ALEN];
++};
++
++int bcm63xx_register_fallback_sprom(struct fallback_sprom_data *data);
+ #endif
+--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
++++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
+@@ -7,6 +7,7 @@
+ #include <bcm63xx_dev_enet.h>
+ #include <bcm63xx_dev_usb_usbd.h>
+ #include <bcm63xx_dev_dsp.h>
++#include <bcm63xx_fallback_sprom.h>
+ /*
+  * flash mapping
+@@ -55,6 +56,9 @@ struct board_info {
+       /* External PHY reset GPIO flags from gpio.h */
+       unsigned long ephy_reset_gpio_flags;
++      /* fallback sprom config */
++      struct fallback_sprom_data fallback_sprom;
++
+       /* Additional platform devices */
+       struct platform_device **devs;
+       unsigned int    num_devs;