diff --git a/arch/arm/include/asm/mach-types.h b/arch/arm/include/asm/mach-types.h index cf84e6365a..83f97ca1fa 100644 --- a/arch/arm/include/asm/mach-types.h +++ b/arch/arm/include/asm/mach-types.h @@ -1175,6 +1175,8 @@ extern unsigned int __machine_arch_type; #define MACH_TYPE_IPQ9574_AP_AL03_C1 0x8050002 #define MACH_TYPE_IPQ9574_AP_AL03_C2 0x8050102 #define MACH_TYPE_IPQ5332_EMULATION 0xF060000 +#define MACH_TYPE_IPQ5332_AP_MI01_2 0x8060001 +#define MACH_TYPE_IPQ5332_AP_MI01_2_C2 0x8060201 #ifdef CONFIG_ARCH_EBSA110 # ifdef machine_arch_type diff --git a/board/qca/arm/ipq5332/ipq5332.c b/board/qca/arm/ipq5332/ipq5332.c index df8bb01f1c..f54362e48c 100644 --- a/board/qca/arm/ipq5332/ipq5332.c +++ b/board/qca/arm/ipq5332/ipq5332.c @@ -38,6 +38,7 @@ #include #endif +#define CONFIG_NAME_MAX_LEN 128 #define FLASH_SEL_BIT 7 #define LINUX_NAND_DTS "/soc/nand@79b0000/" #define LINUX_MMC_DTS "/soc/sdhci@7804000/" @@ -826,6 +827,62 @@ int ipq_board_usb_init(void) } #endif +unsigned int get_dts_machid(unsigned int machid) +{ + switch (machid) + { + case MACH_TYPE_IPQ5332_AP_MI01_2_C2: + return MACH_TYPE_IPQ5332_AP_MI01_2; + default: + return machid; + } +} + +void ipq_uboot_fdt_fixup(void) +{ + 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_IPQ5332_AP_MI01_2_C2: + config_list[config_nos++] = "config@mi01.2-c2"; + config_list[config_nos++] = "config@rdp484"; + config_list[config_nos++] = "config-rdp484"; + 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, + 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, len); + if (ret) + printf("uboot-fdt-fixup: unable to set config_name(%d)\n", ret); + } + return; +} + __weak int ipq_get_tz_version(char *version_name, int buf_size) { return 1;