From 0054e407fab2d8b48ae9d426c0bc802eac700d61 Mon Sep 17 00:00:00 2001 From: Hariharan K Date: Thu, 21 Dec 2023 15:46:36 +0530 Subject: [PATCH] board: qca: arm: ipq: config_name update Updating the config_name parameter to support openwrt backwards compatibility. Change-Id: I129aad5df7e14bcf39d9f971a860b5884cde2667 Signed-off-by: Hariharan K --- board/qca/arm/ipq5018/ipq5018.c | 36 ++++++++++++++++++++++++----- board/qca/arm/ipq5332/ipq5332.c | 5 ++++ board/qca/arm/ipq6018/ipq6018.c | 38 ++++++++++++++++++++++-------- board/qca/arm/ipq807x/ipq807x.c | 41 ++++++++++++++++++++++++--------- board/qca/arm/ipq9574/ipq9574.c | 10 ++++++++ 5 files changed, 103 insertions(+), 27 deletions(-) diff --git a/board/qca/arm/ipq5018/ipq5018.c b/board/qca/arm/ipq5018/ipq5018.c index 825e482c93..d17a89dfcc 100644 --- a/board/qca/arm/ipq5018/ipq5018.c +++ b/board/qca/arm/ipq5018/ipq5018.c @@ -54,6 +54,8 @@ #define TCSR_SOC_HW_VERSION_REG 0x194D000 +#define CONFIG_NAME_MAX_LEN 128 + ipq_gmac_board_cfg_t gmac_cfg[CONFIG_IPQ_NO_MACS]; DECLARE_GLOBAL_DATA_PTR; @@ -2142,20 +2144,42 @@ unsigned int get_dts_machid(unsigned int machid) void ipq_uboot_fdt_fixup(void) { - int ret, len; - const char *config = "config@mp05.1"; - len = fdt_totalsize(gd->fdt_blob) + strlen(config) + 1; - if (gd->bd->bi_arch_number == MACH_TYPE_IPQ5018_AP_MP05_1) + int ret, len = 0, config_nos = 0; + char config[CONFIG_NAME_MAX_LEN]; + char *config_list[6] = { NULL }; + + switch (gd->bd->bi_arch_number) { + case MACH_TYPE_IPQ5018_AP_MP05_1: + config_list[config_nos++] = "config@mp05.1"; + config_list[config_nos++] = "config-mp05.1"; + break; + } + + if (config_nos) + { + while (config_nos--) { + strlcpy(&config[len], config_list[config_nos], + CONFIG_NAME_MAX_LEN - len); + len += strnlen(config_list[config_nos], + CONFIG_NAME_MAX_LEN) + 1; + if (len > CONFIG_NAME_MAX_LEN) { + printf("skipping uboot fdt fixup err: " + "config name len-overflow\n"); + return; + } + } + /* * Open in place with a new length. */ - ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, len); + ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, + fdt_totalsize(gd->fdt_blob) + len); if (ret) printf("uboot-fdt-fixup: Cannot expand FDT: %s\n", fdt_strerror(ret)); ret = fdt_setprop((void *)gd->fdt_blob, 0, "config_name", - config, (strlen(config)+1)); + config, len); if (ret) printf("uboot-fdt-fixup: unable to set config_name(%d)\n", ret); } diff --git a/board/qca/arm/ipq5332/ipq5332.c b/board/qca/arm/ipq5332/ipq5332.c index bac41b31d4..6eda96f4e7 100644 --- a/board/qca/arm/ipq5332/ipq5332.c +++ b/board/qca/arm/ipq5332/ipq5332.c @@ -873,27 +873,32 @@ void ipq_uboot_fdt_fixup(void) { case MACH_TYPE_IPQ5332_AP_MI01_2_C2: config_list[config_nos++] = "config@mi01.2-c2"; + config_list[config_nos++] = "config-mi01.2-c2"; config_list[config_nos++] = "config@rdp484"; config_list[config_nos++] = "config-rdp484"; break; case MACH_TYPE_IPQ5332_AP_MI01_3_C2: config_list[config_nos++] = "config@mi01.3-c2"; + config_list[config_nos++] = "config-mi01.3-c2"; config_list[config_nos++] = "config@rdp477"; config_list[config_nos++] = "config-rdp477"; break; case MACH_TYPE_IPQ5332_AP_MI01_7: config_list[config_nos++] = "config@mi01.7"; + config_list[config_nos++] = "config-mi01.7"; config_list[config_nos++] = "config@rdp473"; config_list[config_nos++] = "config-rdp473"; break; case MACH_TYPE_IPQ5332_AP_MI04_1_C2: config_list[config_nos++] = "config@mi04.1-c2"; + config_list[config_nos++] = "config-mi04.1-c2"; config_list[config_nos++] = "config@rdp478"; config_list[config_nos++] = "config-rdp478"; config_list[config_nos++] = "config@1"; break; case MACH_TYPE_IPQ5332_AP_MI01_14: config_list[config_nos++] = "config@mi01.14"; + config_list[config_nos++] = "config-mi01.14"; config_list[config_nos++] = "config@rdp481"; config_list[config_nos++] = "config-rdp481"; break; diff --git a/board/qca/arm/ipq6018/ipq6018.c b/board/qca/arm/ipq6018/ipq6018.c index 1233cd8070..ab07411e14 100644 --- a/board/qca/arm/ipq6018/ipq6018.c +++ b/board/qca/arm/ipq6018/ipq6018.c @@ -34,6 +34,8 @@ #define TCSR_SOC_HW_VERSION_REG 0x194D000 +#define CONFIG_NAME_MAX_LEN 128 + DECLARE_GLOBAL_DATA_PTR; struct sdhci_host mmc_host; extern int ipq6018_edma_init(void *cfg); @@ -1233,38 +1235,54 @@ unsigned int get_dts_machid(unsigned int machid) void ipq_uboot_fdt_fixup(void) { - int ret, len; - char *config = NULL; + int ret, len = 0, config_nos = 0; + char config[CONFIG_NAME_MAX_LEN]; + char *config_list[6] = { NULL }; switch (gd->bd->bi_arch_number) { case MACH_TYPE_IPQ6018_AP_CP01_C2: - config = "config@cp01-c2"; + config_list[config_nos++] = "config@cp01-c2"; + config_list[config_nos++] = "config-cp01-c2"; break; case MACH_TYPE_IPQ6018_AP_CP01_C3: - config = "config@cp01-c3"; + config_list[config_nos++] = "config@cp01-c3"; + config_list[config_nos++] = "config-cp01-c3"; break; case MACH_TYPE_IPQ6018_AP_CP01_C4: - config = "config@cp01-c4"; + config_list[config_nos++] = "config@cp01-c4"; + config_list[config_nos++] = "config-cp01-c4"; break; case MACH_TYPE_IPQ6018_AP_CP01_C5: - config = "config@cp01-c5"; + config_list[config_nos++] = "config@cp01-c5"; + config_list[config_nos++] = "config-cp01-c5"; break; } - if (config != NULL) + if (config_nos) { - len = fdt_totalsize(gd->fdt_blob) + strlen(config) + 1; + while (config_nos--) { + strlcpy(&config[len], config_list[config_nos], + CONFIG_NAME_MAX_LEN - len); + len += strnlen(config_list[config_nos], + CONFIG_NAME_MAX_LEN) + 1; + if (len > CONFIG_NAME_MAX_LEN) { + printf("skipping uboot fdt fixup err: " + "config name len-overflow\n"); + return; + } + } /* * Open in place with a new length. */ - ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, len); + ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, + fdt_totalsize(gd->fdt_blob) + len); if (ret) printf("uboot-fdt-fixup: Cannot expand FDT: %s\n", fdt_strerror(ret)); ret = fdt_setprop((void *)gd->fdt_blob, 0, "config_name", - config, (strlen(config)+1)); + config, len); if (ret) printf("uboot-fdt-fixup: unable to set config_name(%d)\n", ret); } diff --git a/board/qca/arm/ipq807x/ipq807x.c b/board/qca/arm/ipq807x/ipq807x.c index 609cf95a1b..f780ed6358 100644 --- a/board/qca/arm/ipq807x/ipq807x.c +++ b/board/qca/arm/ipq807x/ipq807x.c @@ -62,6 +62,8 @@ #define TCSR_SOC_HW_VERSION_REG 0x194D000 +#define CONFIG_NAME_MAX_LEN 128 + DECLARE_GLOBAL_DATA_PTR; #define GCNT_PSHOLD 0x004AB000 @@ -1381,41 +1383,58 @@ unsigned int get_dts_machid(unsigned int machid) void ipq_uboot_fdt_fixup(void) { - int ret, len; - char *config = NULL; + int ret, len = 0, config_nos = 0; + char config[CONFIG_NAME_MAX_LEN]; + char *config_list[6] = { NULL }; switch (gd->bd->bi_arch_number) { case MACH_TYPE_IPQ807x_AP_HK01_C3: - config = "config@hk01.c3"; + config_list[config_nos++] = "config@hk01.c3"; + config_list[config_nos++] = "config-hk01.c3"; break; case MACH_TYPE_IPQ807x_AP_HK01_C6: - config = "config@hk01.c6"; + config_list[config_nos++] = "config@hk01.c6"; + config_list[config_nos++] = "config-hk01.c6"; break; case MACH_TYPE_IPQ807x_AP_HK12_C1: - config = "config@hk12"; + config_list[config_nos++] = "config@hk12"; + config_list[config_nos++] = "config-hk12"; break; case MACH_TYPE_IPQ807x_AP_AC02: - config = "config@ac02"; + config_list[config_nos++] = "config@ac02"; + config_list[config_nos++] = "config-ac02"; break; case MACH_TYPE_IPQ807x_AP_OAK03: - config = "config@oak03"; + config_list[config_nos++] = "config@oak03"; + config_list[config_nos++] = "config-oak03"; break; } - if (config != NULL) + if (config_nos) { - len = fdt_totalsize(gd->fdt_blob) + strlen(config) + 1; + while (config_nos--) { + strlcpy(&config[len], config_list[config_nos], + CONFIG_NAME_MAX_LEN - len); + len += strnlen(config_list[config_nos], + CONFIG_NAME_MAX_LEN) + 1; + if (len > CONFIG_NAME_MAX_LEN) { + printf("skipping uboot fdt fixup err: " + "config name len-overflow\n"); + return; + } + } /* * Open in place with a new length. */ - ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, len); + ret = fdt_open_into(gd->fdt_blob, (void *)gd->fdt_blob, + fdt_totalsize(gd->fdt_blob) + len); if (ret) printf("uboot-fdt-fixup: Cannot expand FDT: %s\n", fdt_strerror(ret)); ret = fdt_setprop((void *)gd->fdt_blob, 0, "config_name", - config, (strlen(config)+1)); + config, len); if (ret) printf("uboot-fdt-fixup: unable to set config_name(%d)\n", ret); } diff --git a/board/qca/arm/ipq9574/ipq9574.c b/board/qca/arm/ipq9574/ipq9574.c index 6552875790..e22a5875d0 100644 --- a/board/qca/arm/ipq9574/ipq9574.c +++ b/board/qca/arm/ipq9574/ipq9574.c @@ -1410,45 +1410,55 @@ void ipq_uboot_fdt_fixup(void) { case MACH_TYPE_IPQ9574_EMULATION: config_list[config_nos++] = "config@emulation-fbc"; + config_list[config_nos++] = "config-emulation-fbc"; break; case MACH_TYPE_IPQ9574_AP_AL02_C5: config_list[config_nos++] = "config@al02-c5"; + config_list[config_nos++] = "config-al02-c5"; break; case MACH_TYPE_IPQ9574_AP_AL02_C6: config_list[config_nos++] = "config@al02-c6"; + config_list[config_nos++] = "config-al02-c6"; config_list[config_nos++] = "config@rdp449"; config_list[config_nos++] = "config-rdp449"; break; case MACH_TYPE_IPQ9574_AP_AL02_C11: config_list[config_nos++] = "config@al02-c11"; + config_list[config_nos++] = "config-al02-c11"; config_list[config_nos++] = "config@rdp455"; config_list[config_nos++] = "config-rdp455"; break; case MACH_TYPE_IPQ9574_AP_AL02_C12: config_list[config_nos++] = "config@al02-c12"; + config_list[config_nos++] = "config-al02-c12"; config_list[config_nos++] = "config@rdp455"; config_list[config_nos++] = "config-rdp455"; break; case MACH_TYPE_IPQ9574_AP_AL02_C14: + config_list[config_nos++] = "config-al02-c14"; config_list[config_nos++] = "config@al02-c14"; break; case MACH_TYPE_IPQ9574_AP_AL02_C15: config_list[config_nos++] = "config@al02-c15"; + config_list[config_nos++] = "config-al02-c15"; config_list[config_nos++] = "config@rdp457"; config_list[config_nos++] = "config-rdp457"; break; case MACH_TYPE_IPQ9574_AP_AL02_C16: config_list[config_nos++] = "config@al02-c16"; + config_list[config_nos++] = "config-al02-c16"; config_list[config_nos++] = "config@rdp456"; config_list[config_nos++] = "config-rdp456"; break; case MACH_TYPE_IPQ9574_AP_AL02_C20: config_list[config_nos++] = "config@al02-c20"; + config_list[config_nos++] = "config-al02-c20"; config_list[config_nos++] = "config@rdp467"; config_list[config_nos++] = "config-rdp467"; break; case MACH_TYPE_IPQ9574_AP_AL03_C2: config_list[config_nos++] = "config@al03-c2"; + config_list[config_nos++] = "config-al03-c2"; config_list[config_nos++] = "config@rdp458"; config_list[config_nos++] = "config-rdp458"; break;