Message ID | 20200608092835.3377581-1-noltari@gmail.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | e27e1cc9d360a347dbd5a398e9df21cfb4e60e3c |
Headers | show |
Series | MIPS: BCM63xx: improve CFE version detection | expand |
On Mon, Jun 08, 2020 at 11:28:35AM +0200, Álvaro Fernández Rojas wrote: > 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> > --- > arch/mips/bcm63xx/boards/board_bcm963xx.c | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) applied to mips-next. Thomas.
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c index 36ec3dc2c999..38f812383998 100644 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c @@ -763,11 +763,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);
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> --- arch/mips/bcm63xx/boards/board_bcm963xx.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)