diff --git a/board/qca/arm/common/board_init.c b/board/qca/arm/common/board_init.c index 0175bb35a4..207b4aeeba 100644 --- a/board/qca/arm/common/board_init.c +++ b/board/qca/arm/common/board_init.c @@ -71,6 +71,11 @@ void disable_audio_clks(void) { return 0; } +__weak +void ipq_uboot_fdt_fixup(void) +{ + return 0; +} int board_init(void) { @@ -188,6 +193,7 @@ int board_init(void) aquantia_phy_reset_init(); disable_audio_clks(); + ipq_uboot_fdt_fixup(); return 0; } diff --git a/board/qca/arm/ipq806x/ipq806x.c b/board/qca/arm/ipq806x/ipq806x.c index 71ba5338dc..b3edd76bbf 100644 --- a/board/qca/arm/ipq806x/ipq806x.c +++ b/board/qca/arm/ipq806x/ipq806x.c @@ -187,6 +187,29 @@ void reset_cpu(unsigned long a) while(1); } +void ipq_uboot_fdt_fixup(void) +{ + int ret, len; + const char *config = "config@ap148_1xx"; + len = fdt_totalsize(gd->fdt_blob) + strlen(config) + 1; + + if (gd->bd->bi_arch_number == MACH_TYPE_IPQ806X_AP148_1XX) + { + /* + * Open in place with a new length. + */ + ret = fdt_open_into(gd->fdt_blob, gd->fdt_blob, len); + if (ret) + debug("uboot-fdt-fixup: Cannot expand FDT: %s\n", fdt_strerror(ret)); + + ret = fdt_setprop(gd->fdt_blob, 0, "config_name", + config, (strlen(config)+1)); + if (ret) + debug("uboot-fdt-fixup: unable to set config_name(%d)\n", ret); + } + return; +} + int board_mmc_init(bd_t *bis) { int node, gpio_node; @@ -1083,3 +1106,13 @@ int bring_sec_core_up(unsigned int cpuid, unsigned int entry, unsigned int arg) } return 0; } +unsigned int get_dts_machid(unsigned int machid) +{ + switch (machid) + { + case MACH_TYPE_IPQ806X_AP148_1XX: + return MACH_TYPE_IPQ806X_AP148; + default: + return machid; + } +}