The BCM43222 is able to operate in both 2.4/5GHz bands in some devices if the device id stored at the SPROM is 4350.
Extract the dev_id register from the BCM43222 fallback SPROM to allow using the 5GHz band on the on the devices supporting it. Signed-off-by: Daniel González Cabanelas <[email protected]> --- ...d-raw-fallback-sproms-for-most-common.patch | 16 ++++++++++++++-- ...so-register-a-fallback-sprom-for-bcma.patch | 18 +++++++++--------- ...CM63XX-add-BCMA-based-sprom-templates.patch | 6 +++--- ...low-board-files-to-provide-sprom-fixu.patch | 4 ++-- ...low-setting-a-pci-bus-device-for-fall.patch | 8 ++++---- .../801-ssb_export_fallback_sprom.patch | 2 +- 6 files changed, 33 insertions(+), 21 deletions(-) diff --git a/target/linux/bcm63xx/patches-5.4/361-MIPS-BCM63XX-add-raw-fallback-sproms-for-most-common.patch b/target/linux/bcm63xx/patches-5.4/361-MIPS-BCM63XX-add-raw-fallback-sproms-for-most-common.patch index 65c00b5197..e40e4c4a51 100644 --- a/target/linux/bcm63xx/patches-5.4/361-MIPS-BCM63XX-add-raw-fallback-sproms-for-most-common.patch +++ b/target/linux/bcm63xx/patches-5.4/361-MIPS-BCM63XX-add-raw-fallback-sproms-for-most-common.patch @@ -14,10 +14,12 @@ Signed-off-by: Jonas Gorski <[email protected]> --- a/arch/mips/bcm63xx/sprom.c +++ b/arch/mips/bcm63xx/sprom.c -@@ -43,6 +43,122 @@ static __initconst struct ssb_sprom bcm6 +@@ -43,6 +43,124 @@ static __initconst struct ssb_sprom bcm6 .boardflags_hi = 0x0000, }; ++static bool deviceid_fallback = false; ++ + +static __initconst u16 bcm4306_sprom[] = { + 0x4001, 0x0000, 0x0453, 0x14e4, 0x4320, 0x8000, 0x0002, 0x0002, @@ -137,7 +139,16 @@ Signed-off-by: Jonas Gorski <[email protected]> static struct ssb_sprom bcm63xx_sprom; int bcm63xx_get_fallback_sprom(struct ssb_bus *bus, struct ssb_sprom *out) -@@ -542,6 +658,26 @@ int __init bcm63xx_register_fallback_spr +@@ -299,6 +417,8 @@ static void sprom_extract_r8(struct ssb_ + BUILD_BUG_ON(ARRAY_SIZE(pwr_info_offset) != + ARRAY_SIZE(out->core_pwr_info)); + ++ if (deviceid_fallback) ++ SPEX(dev_id, SSB_SPROM1_PID, 0xFFFF, 0); + SPEX(board_rev, SSB_SPROM8_BOARDREV, 0xFFFF, 0); + SPEX(board_type, SSB_SPROM1_SPID, 0xFFFF, 0); + SPEX(alpha2[0], SSB_SPROM8_CCODE, 0xff00, 8); +@@ -542,6 +662,27 @@ int __init bcm63xx_register_fallback_spr u16 size = 0; switch (data->type) { @@ -160,6 +171,7 @@ Signed-off-by: Jonas Gorski <[email protected]> + case SPROM_BCM43222: + memcpy(&template_sprom, &bcm43222_sprom, sizeof(bcm43222_sprom)); + size = ARRAY_SIZE(bcm43222_sprom); ++ deviceid_fallback = true; + break; case SPROM_DEFAULT: memcpy(&bcm63xx_sprom, &bcm63xx_default_sprom, diff --git a/target/linux/bcm63xx/patches-5.4/362-MIPS-BCM63XX-also-register-a-fallback-sprom-for-bcma.patch b/target/linux/bcm63xx/patches-5.4/362-MIPS-BCM63XX-also-register-a-fallback-sprom-for-bcma.patch index 24ae8c35c7..7a7a01683c 100644 --- a/target/linux/bcm63xx/patches-5.4/362-MIPS-BCM63XX-also-register-a-fallback-sprom-for-bcma.patch +++ b/target/linux/bcm63xx/patches-5.4/362-MIPS-BCM63XX-also-register-a-fallback-sprom-for-bcma.patch @@ -40,16 +40,16 @@ Signed-off-by: Jonas Gorski <[email protected]> static __initconst struct ssb_sprom bcm63xx_default_sprom = { .revision = 0x02, .board_rev = 0x17, -@@ -43,7 +44,7 @@ static __initconst struct ssb_sprom bcm6 - .boardflags_hi = 0x0000, - }; +@@ -45,7 +46,7 @@ static __initconst struct ssb_sprom bcm6 + + static bool deviceid_fallback = false; - +#if defined (CONFIG_SSB_PCIHOST) static __initconst u16 bcm4306_sprom[] = { 0x4001, 0x0000, 0x0453, 0x14e4, 0x4320, 0x8000, 0x0002, 0x0002, 0x1000, 0x1800, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, -@@ -158,10 +159,12 @@ static __initconst u16 bcm43222_sprom[] +@@ -160,10 +161,12 @@ static __initconst u16 bcm43222_sprom[] 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0008, }; @@ -63,7 +63,7 @@ Signed-off-by: Jonas Gorski <[email protected]> { if (bus->bustype == SSB_BUSTYPE_PCI) { memcpy(out, &bcm63xx_sprom, sizeof(struct ssb_sprom)); -@@ -171,6 +174,20 @@ int bcm63xx_get_fallback_sprom(struct ss +@@ -173,6 +176,20 @@ int bcm63xx_get_fallback_sprom(struct ss return -EINVAL; } } @@ -84,7 +84,7 @@ Signed-off-by: Jonas Gorski <[email protected]> /* FIXME: use lib_sprom after submission upstream */ -@@ -654,10 +671,11 @@ int __init bcm63xx_register_fallback_spr +@@ -658,10 +675,11 @@ int __init bcm63xx_register_fallback_spr { int ret = 0; @@ -97,15 +97,15 @@ Signed-off-by: Jonas Gorski <[email protected]> case SPROM_BCM4306: memcpy(&template_sprom, &bcm4306_sprom, sizeof(bcm4306_sprom)); size = ARRAY_SIZE(bcm4306_sprom); -@@ -678,6 +696,7 @@ int __init bcm63xx_register_fallback_spr - memcpy(&template_sprom, &bcm43222_sprom, sizeof(bcm43222_sprom)); +@@ -683,6 +701,7 @@ int __init bcm63xx_register_fallback_spr size = ARRAY_SIZE(bcm43222_sprom); + deviceid_fallback = true; break; +#endif case SPROM_DEFAULT: memcpy(&bcm63xx_sprom, &bcm63xx_default_sprom, sizeof(bcm63xx_sprom)); -@@ -692,8 +711,19 @@ int __init bcm63xx_register_fallback_spr +@@ -697,8 +716,19 @@ int __init bcm63xx_register_fallback_spr 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); diff --git a/target/linux/bcm63xx/patches-5.4/363-MIPS-BCM63XX-add-BCMA-based-sprom-templates.patch b/target/linux/bcm63xx/patches-5.4/363-MIPS-BCM63XX-add-BCMA-based-sprom-templates.patch index 5c0abb90e3..386c735ffd 100644 --- a/target/linux/bcm63xx/patches-5.4/363-MIPS-BCM63XX-add-BCMA-based-sprom-templates.patch +++ b/target/linux/bcm63xx/patches-5.4/363-MIPS-BCM63XX-add-BCMA-based-sprom-templates.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <[email protected]> --- a/arch/mips/bcm63xx/sprom.c +++ b/arch/mips/bcm63xx/sprom.c -@@ -161,6 +161,226 @@ static __initconst u16 bcm43222_sprom[] +@@ -163,6 +163,226 @@ static __initconst u16 bcm43222_sprom[] }; #endif /* CONFIG_SSB_PCIHOST */ @@ -241,8 +241,8 @@ Signed-off-by: Jonas Gorski <[email protected]> static struct ssb_sprom bcm63xx_sprom; #if defined(CONFIG_SSB_PCIHOST) -@@ -697,6 +917,42 @@ int __init bcm63xx_register_fallback_spr - size = ARRAY_SIZE(bcm43222_sprom); +@@ -702,6 +922,42 @@ int __init bcm63xx_register_fallback_spr + deviceid_fallback = true; break; #endif +#if defined(CONFIG_BCMA_HOST_PCI) diff --git a/target/linux/bcm63xx/patches-5.4/364-MIPS-BCM63XX-allow-board-files-to-provide-sprom-fixu.patch b/target/linux/bcm63xx/patches-5.4/364-MIPS-BCM63XX-allow-board-files-to-provide-sprom-fixu.patch index 74c2846d5f..2b6d62790c 100644 --- a/target/linux/bcm63xx/patches-5.4/364-MIPS-BCM63XX-allow-board-files-to-provide-sprom-fixu.patch +++ b/target/linux/bcm63xx/patches-5.4/364-MIPS-BCM63XX-allow-board-files-to-provide-sprom-fixu.patch @@ -16,7 +16,7 @@ Signed-off-by: Jonas Gorski <[email protected]> --- a/arch/mips/bcm63xx/sprom.c +++ b/arch/mips/bcm63xx/sprom.c -@@ -883,6 +883,14 @@ static int sprom_extract(struct ssb_spro +@@ -887,6 +887,14 @@ static int sprom_extract(struct ssb_spro return 0; } @@ -31,7 +31,7 @@ Signed-off-by: Jonas Gorski <[email protected]> static __initdata u16 template_sprom[220]; #endif -@@ -961,8 +969,12 @@ int __init bcm63xx_register_fallback_spr +@@ -966,8 +974,12 @@ int __init bcm63xx_register_fallback_spr return -EINVAL; } diff --git a/target/linux/bcm63xx/patches-5.4/365-MIPS-BCM63XX-allow-setting-a-pci-bus-device-for-fall.patch b/target/linux/bcm63xx/patches-5.4/365-MIPS-BCM63XX-allow-setting-a-pci-bus-device-for-fall.patch index 40591e5f2e..4632d579f0 100644 --- a/target/linux/bcm63xx/patches-5.4/365-MIPS-BCM63XX-allow-setting-a-pci-bus-device-for-fall.patch +++ b/target/linux/bcm63xx/patches-5.4/365-MIPS-BCM63XX-allow-setting-a-pci-bus-device-for-fall.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <[email protected]> --- a/arch/mips/bcm63xx/sprom.c +++ b/arch/mips/bcm63xx/sprom.c -@@ -381,13 +381,25 @@ static __initconst u16 bcm4331_sprom[] = +@@ -383,13 +383,25 @@ static __initconst u16 bcm4331_sprom[] = #endif /* CONFIG_BCMA_HOST_PCI */ @@ -42,7 +42,7 @@ Signed-off-by: Jonas Gorski <[email protected]> return 0; } else { printk(KERN_ERR PFX "unable to fill SPROM for given bustype.\n"); -@@ -400,7 +412,13 @@ int bcm63xx_get_fallback_ssb_sprom(struc +@@ -402,7 +414,13 @@ int bcm63xx_get_fallback_ssb_sprom(struc int bcm63xx_get_fallback_bcma_sprom(struct bcma_bus *bus, struct ssb_sprom *out) { if (bus->hosttype == BCMA_HOSTTYPE_PCI) { @@ -57,7 +57,7 @@ Signed-off-by: Jonas Gorski <[email protected]> return 0; } else { printk(KERN_ERR PFX "unable to fill SPROM for given bustype.\n"); -@@ -962,8 +980,8 @@ int __init bcm63xx_register_fallback_spr +@@ -967,8 +985,8 @@ int __init bcm63xx_register_fallback_spr break; #endif case SPROM_DEFAULT: @@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <[email protected]> break; default: return -EINVAL; -@@ -973,12 +991,15 @@ int __init bcm63xx_register_fallback_spr +@@ -978,12 +996,15 @@ int __init bcm63xx_register_fallback_spr sprom_apply_fixups(template_sprom, data->board_fixups, data->num_board_fixups); diff --git a/target/linux/bcm63xx/patches-5.4/801-ssb_export_fallback_sprom.patch b/target/linux/bcm63xx/patches-5.4/801-ssb_export_fallback_sprom.patch index 11a83536b7..af54d6cf08 100644 --- a/target/linux/bcm63xx/patches-5.4/801-ssb_export_fallback_sprom.patch +++ b/target/linux/bcm63xx/patches-5.4/801-ssb_export_fallback_sprom.patch @@ -8,7 +8,7 @@ #include <linux/kernel.h> #include <linux/string.h> #include <linux/platform_device.h> -@@ -387,7 +388,19 @@ struct fallback_sprom_match { +@@ -389,7 +390,19 @@ struct fallback_sprom_match { struct ssb_sprom sprom; }; -- 2.30.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
