bcm63xx: switch to upstream CFE version detection patch
The patch improving CFE version detection has been merged (linux 5.9). Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
parent
f41a40001a
commit
92727a1228
@ -0,0 +1,56 @@
|
||||
From e27e1cc9d360a347dbd5a398e9df21cfb4e60e3c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Mon, 8 Jun 2020 11:28:35 +0200
|
||||
Subject: [PATCH] MIPS: BCM63xx: improve CFE version detection
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
There are some CFE variants that start with 'cfe-vd' instead of 'cfe-v', such
|
||||
as the one used in the Huawei HG556a: "cfe-vd081.5003". In this case, the CFE
|
||||
version is stored as is (string vs number bytes).
|
||||
|
||||
Some newer devices have an additional version number, such as the Comtrend
|
||||
VR-3032u: "1.0.38-112.118-11".
|
||||
|
||||
Finally, print the string as is if the version doesn't start with "cfe-v" or
|
||||
"cfe-vd", but starts with "cfe-".
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
---
|
||||
arch/mips/bcm63xx/boards/board_bcm963xx.c | 22 ++++++++++++++++++----
|
||||
1 file changed, 18 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
@@ -760,11 +760,25 @@ void __init board_prom_init(void)
|
||||
|
||||
/* dump cfe version */
|
||||
cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
|
||||
- if (!memcmp(cfe, "cfe-v", 5))
|
||||
- snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u",
|
||||
- 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");
|
||||
+ }
|
||||
pr_info("CFE version: %s\n", cfe_version);
|
||||
|
||||
bcm63xx_nvram_init(boot_addr + BCM963XX_NVRAM_OFFSET);
|
@ -24,7 +24,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
#include <bcm63xx_dev_usb_usbd.h>
|
||||
#include <board_bcm963xx.h>
|
||||
|
||||
@@ -878,6 +879,9 @@ int __init board_register_devices(void)
|
||||
@@ -892,6 +893,9 @@ int __init board_register_devices(void)
|
||||
if (board.has_usbd)
|
||||
bcm63xx_usbd_register(&board.usbd);
|
||||
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
#include <bcm63xx_dev_usb_ohci.h>
|
||||
#include <bcm63xx_dev_usb_usbd.h>
|
||||
#include <board_bcm963xx.h>
|
||||
@@ -879,6 +880,9 @@ int __init board_register_devices(void)
|
||||
@@ -893,6 +894,9 @@ int __init board_register_devices(void)
|
||||
if (board.has_usbd)
|
||||
bcm63xx_usbd_register(&board.usbd);
|
||||
|
||||
|
@ -114,7 +114,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
* early init callback, read nvram data from flash and checksum it
|
||||
*/
|
||||
void __init board_prom_init(void)
|
||||
@@ -782,137 +724,15 @@ void __init board_prom_init(void)
|
||||
@@ -796,137 +738,15 @@ void __init board_prom_init(void)
|
||||
if (strncmp(board_name, bcm963xx_boards[i]->name, 16))
|
||||
continue;
|
||||
/* copy, board desc array is marked initdata */
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
@@ -724,7 +724,8 @@ void __init board_prom_init(void)
|
||||
@@ -738,7 +738,8 @@ void __init board_prom_init(void)
|
||||
if (strncmp(board_name, bcm963xx_boards[i]->name, 16))
|
||||
continue;
|
||||
/* copy, board desc array is marked initdata */
|
||||
|
@ -1,27 +0,0 @@
|
||||
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
@@ -704,10 +704,20 @@ void __init board_prom_init(void)
|
||||
|
||||
/* dump cfe version */
|
||||
cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
|
||||
- if (!memcmp(cfe, "cfe-v", 5))
|
||||
- snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u",
|
||||
- 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");
|
||||
pr_info("CFE version: %s\n", cfe_version);
|
||||
|
@ -35,7 +35,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
/* read base address of boot chip select (0)
|
||||
* 6328/6362 do not have MPI but boot from a fixed address
|
||||
@@ -742,6 +747,16 @@ void __init board_bcm963xx_init(void)
|
||||
@@ -746,6 +751,16 @@ void __init board_bcm963xx_init(void)
|
||||
} else {
|
||||
board_name = bcm63xx_nvram_get_name();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user