openwrt/target/linux/bcm63xx/patches-4.14/364-MIPS-BCM63XX-allow-board-files-to-provide-sprom-fixu.patch
Adrian Schmutzler e7bfda2c24 brcm63xx: rename target to bcm63xx
This change makes the names of Broadcom targets consistent by using
the common notation based on SoC/CPU ID (which is used internally
anyway), bcmXXXX instead of brcmXXXX.
This is even used for target TITLE in make menuconfig already,
only the short target name used brcm so far.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2020-02-14 14:10:51 +01:00

68 lines
1.8 KiB
Diff

From 8575548b08e33c9ff4fd540abec09dd177e33682 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jogo@openwrt.org>
Date: Thu, 31 Jul 2014 19:12:33 +0200
Subject: [PATCH 09/10] MIPS: BCM63XX: allow board files to provide sprom
fixups
Allow board_info files to supply fixups for the base sproms to adapt
them to the actual used sprom contents in case they do not use the
default ones.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
---
arch/mips/bcm63xx/sprom.c | 14 +++++++++++++-
.../mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h | 8 ++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
--- a/arch/mips/bcm63xx/sprom.c
+++ b/arch/mips/bcm63xx/sprom.c
@@ -883,6 +883,14 @@ static int sprom_extract(struct ssb_spro
return 0;
}
+void sprom_apply_fixups(u16 *sprom, struct sprom_fixup *fixups, int n)
+{
+ unsigned int i;
+
+ for (i = 0; i < n; i++)
+ sprom[fixups[i].offset] = fixups[i].value;
+}
+
static __initdata u16 template_sprom[220];
#endif
@@ -961,8 +969,12 @@ int __init bcm63xx_register_fallback_spr
return -EINVAL;
}
- if (size > 0)
+ if (size > 0) {
+ sprom_apply_fixups(template_sprom, data->board_fixups,
+ data->num_board_fixups);
+
sprom_extract(&bcm63xx_sprom, template_sprom, size);
+ }
memcpy(bcm63xx_sprom.il0mac, data->mac_addr, ETH_ALEN);
memcpy(bcm63xx_sprom.et0mac, data->mac_addr, ETH_ALEN);
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_fallback_sprom.h
@@ -21,9 +21,17 @@ enum sprom_type {
SPROM_BCM4331,
};
+struct sprom_fixup {
+ u16 offset;
+ u16 value;
+};
+
struct fallback_sprom_data {
u8 mac_addr[ETH_ALEN];
enum sprom_type type;
+
+ struct sprom_fixup *board_fixups;
+ unsigned int num_board_fixups;
};
int bcm63xx_register_fallback_sprom(struct fallback_sprom_data *data);