bcm63xx: Improve CFE version mod patch.

Fix "cfe-" string length copy.
Check if there's an extra byte a.b.c-d.e / a.b.c-d.e-f.
Add support for Huawei CFE versions ("cfe-vd").

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Patchwork: http://patchwork.openwrt.org/patch/3766/
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 37101
This commit is contained in:
Jonas Gorski 2013-06-30 13:10:05 +00:00
parent 6df83c3f89
commit 7d1cd9dfab
9 changed files with 33 additions and 17 deletions

View file

@ -1,11 +1,27 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -837,6 +837,8 @@ void __init board_prom_init(void) @@ -834,10 +834,20 @@ void __init board_prom_init(void)
if (!memcmp(cfe, "cfe-v", 5))
snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u", /* dump cfe version */
cfe[5], cfe[6], cfe[7], cfe[8], cfe[9]); cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
+ else if (!memcmp(cfe, "cfe-", 4)) - if (!memcmp(cfe, "cfe-v", 5))
+ snprintf(cfe_version, 16, "%s", (char *) &cfe[4]); - snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u",
else - cfe[5], cfe[6], cfe[7], cfe[8], cfe[9]);
- else
+ if (strstarts(cfe, "cfe-")) {
+ if(cfe[4] == 'v') {
+ if(cfe[5] == 'd')
+ snprintf(cfe_version, 11, "%s", (char *) &cfe[5]);
+ else if (cfe[10] > 0)
+ snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u-%u",
+ cfe[5], cfe[6], cfe[7], cfe[8], cfe[9], cfe[10]);
+ else
+ snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u",
+ cfe[5], cfe[6], cfe[7], cfe[8], cfe[9]);
+ } else {
+ snprintf(cfe_version, 12, "%s", (char *) &cfe[4]);
+ }
+ } else
strcpy(cfe_version, "unknown"); strcpy(cfe_version, "unknown");
printk(KERN_INFO PFX "CFE version: %s\n", cfe_version); printk(KERN_INFO PFX "CFE version: %s\n", cfe_version);

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -902,6 +902,8 @@ void __init board_prom_init(void) @@ -910,6 +910,8 @@ void __init board_prom_init(void)
if (BCMCPU_IS_6348()) if (BCMCPU_IS_6348())
val |= GPIO_MODE_6348_G3_EXT_MII | val |= GPIO_MODE_6348_G3_EXT_MII |
GPIO_MODE_6348_G0_EXT_MII; GPIO_MODE_6348_G0_EXT_MII;

View file

@ -37,7 +37,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
#include <bcm63xx_dev_pcmcia.h> #include <bcm63xx_dev_pcmcia.h>
#include <bcm63xx_dev_spi.h> #include <bcm63xx_dev_spi.h>
#include <bcm63xx_dev_usb_ehci.h> #include <bcm63xx_dev_usb_ehci.h>
@@ -995,6 +996,7 @@ int __init board_register_devices(void) @@ -1003,6 +1004,7 @@ int __init board_register_devices(void)
pr_err(PFX "failed to register fallback SPROM\n"); pr_err(PFX "failed to register fallback SPROM\n");
} }
#endif #endif

View file

@ -18,7 +18,7 @@ Subject: [PATCH 58/72] BCM63XX: allow providing fixup data in board data
#include <uapi/linux/bcm933xx_hcs.h> #include <uapi/linux/bcm933xx_hcs.h>
#include <uapi/linux/bcm963xx_tag.h> #include <uapi/linux/bcm963xx_tag.h>
@@ -950,6 +951,7 @@ int __init board_register_devices(void) @@ -958,6 +959,7 @@ int __init board_register_devices(void)
{ {
int button_count = 0; int button_count = 0;
int led_count = 0; int led_count = 0;
@ -26,7 +26,7 @@ Subject: [PATCH 58/72] BCM63XX: allow providing fixup data in board data
if (board.has_uart0) if (board.has_uart0)
bcm63xx_uart_register(0); bcm63xx_uart_register(0);
@@ -988,7 +990,8 @@ int __init board_register_devices(void) @@ -996,7 +998,8 @@ int __init board_register_devices(void)
* do this after registering enet devices * do this after registering enet devices
*/ */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_PCIHOST
@ -36,7 +36,7 @@ Subject: [PATCH 58/72] BCM63XX: allow providing fixup data in board data
memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN); memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN); memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
if (ssb_arch_register_fallback_sprom( if (ssb_arch_register_fallback_sprom(
@@ -1034,5 +1037,9 @@ int __init board_register_devices(void) @@ -1042,5 +1045,9 @@ int __init board_register_devices(void)
platform_device_register(&bcm63xx_gpio_keys_device); platform_device_register(&bcm63xx_gpio_keys_device);
} }

View file

@ -11,7 +11,7 @@ Subject: [PATCH 69/80] MIPS: BCM63XX: pass caldata info to flash
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1009,7 +1009,7 @@ int __init board_register_devices(void) @@ -1017,7 +1017,7 @@ int __init board_register_devices(void)
if (board.num_spis) if (board.num_spis)
spi_register_board_info(board.spis, board.num_spis); spi_register_board_info(board.spis, board.num_spis);

View file

@ -39,7 +39,7 @@
return; return;
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1039,7 +1039,8 @@ int __init board_register_devices(void) @@ -1047,7 +1047,8 @@ int __init board_register_devices(void)
/* register any fixups */ /* register any fixups */
for (i = 0; i < board.has_caldata; i++) for (i = 0; i < board.has_caldata; i++)

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1040,7 +1040,7 @@ int __init board_register_devices(void) @@ -1048,7 +1048,7 @@ int __init board_register_devices(void)
/* register any fixups */ /* register any fixups */
for (i = 0; i < board.has_caldata; i++) for (i = 0; i < board.has_caldata; i++)
pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset, pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset,

View file

@ -36,7 +36,7 @@ Subject: [PATCH 72/72] 446-BCM63XX-add-a-fixup-for-rt2x00-devices
#include <uapi/linux/bcm933xx_hcs.h> #include <uapi/linux/bcm933xx_hcs.h>
#include <uapi/linux/bcm963xx_tag.h> #include <uapi/linux/bcm963xx_tag.h>
@@ -1038,9 +1039,19 @@ int __init board_register_devices(void) @@ -1046,9 +1047,19 @@ int __init board_register_devices(void)
} }
/* register any fixups */ /* register any fixups */

View file

@ -100,7 +100,7 @@ Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
}; };
/* /*
@@ -2452,12 +2528,25 @@ void __init board_prom_init(void) @@ -2460,12 +2536,25 @@ void __init board_prom_init(void)
bcm63xx_pci_enabled = 1; bcm63xx_pci_enabled = 1;
if (BCMCPU_IS_6348()) if (BCMCPU_IS_6348())
val |= GPIO_MODE_6348_G2_PCI; val |= GPIO_MODE_6348_G2_PCI;