diff --git a/arch/arm/cpu/armv7/qca/common/smem.c b/arch/arm/cpu/armv7/qca/common/smem.c index e3a0a3c421..af42d59ff9 100644 --- a/arch/arm/cpu/armv7/qca/common/smem.c +++ b/arch/arm/cpu/armv7/qca/common/smem.c @@ -420,6 +420,11 @@ unsigned int smem_read_platform_type(union qca_platform *platform_type) return status; } +__weak unsigned int get_dts_machid(unsigned int machid) +{ + return machid; +} + unsigned int smem_get_board_platform_type() { union qca_platform platform_type; diff --git a/arch/arm/include/asm/mach-types.h b/arch/arm/include/asm/mach-types.h index 524681d192..70ae2744dc 100644 --- a/arch/arm/include/asm/mach-types.h +++ b/arch/arm/include/asm/mach-types.h @@ -1137,6 +1137,7 @@ extern unsigned int __machine_arch_type; #define MACH_TYPE_IPQ40XX_DB_DK01_1_C1 0x1010002 #define MACH_TYPE_IPQ40XX_DB_DK02_1_C1 0x1010003 #define MACH_TYPE_IPQ40XX_TB832 0x1010004 +#define MACH_TYPE_IPQ40XX_AP_DK04_1_C6 0x8010501 #ifdef CONFIG_ARCH_EBSA110 # ifdef machine_arch_type diff --git a/board/qca/arm/ipq40xx/ipq40xx.c b/board/qca/arm/ipq40xx/ipq40xx.c index ded464eaa9..1fb020dad5 100644 --- a/board/qca/arm/ipq40xx/ipq40xx.c +++ b/board/qca/arm/ipq40xx/ipq40xx.c @@ -199,9 +199,10 @@ int board_eth_init(bd_t *bis) gpio_set_value(59, 1); ipq40xx_register_switch(ipq_qca8075_phy_init); break; - case MACH_TYPE_IPQ40XX_AP_DK04_1_C4: case MACH_TYPE_IPQ40XX_AP_DK04_1_C1: case MACH_TYPE_IPQ40XX_AP_DK04_1_C3: + case MACH_TYPE_IPQ40XX_AP_DK04_1_C4: + case MACH_TYPE_IPQ40XX_AP_DK04_1_C6: /* 8075 out of reset */ mdelay(1); gpio_set_value(47, 1); @@ -379,6 +380,19 @@ void disable_audio_clks(void) void ipq_fdt_fixup_socinfo(void *blob) { + int nodeoff, ret; + const char *model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK04.1-C6"; + + nodeoff = fdt_path_offset(blob, "/"); + + if (nodeoff < 0) { + printf("ipq: fdt fixup cannot find root node\n"); + return; + } + + if (gd->bd->bi_arch_number == MACH_TYPE_IPQ40XX_AP_DK04_1_C6) + ret = fdt_setprop(blob, nodeoff, "model", + model, (strlen(model) + 1)); return; } @@ -474,3 +488,14 @@ void disable_caches(void) { icache_disable(); } + +unsigned int get_dts_machid(unsigned int machid) +{ + switch (machid) + { + case MACH_TYPE_IPQ40XX_AP_DK04_1_C6: + return MACH_TYPE_IPQ40XX_AP_DK04_1_C1; + default: + return machid; + } +} diff --git a/drivers/net/ipq40xx/ipq40xx_ess_sw.c b/drivers/net/ipq40xx/ipq40xx_ess_sw.c index 6d4d448d96..326359baf0 100644 --- a/drivers/net/ipq40xx/ipq40xx_ess_sw.c +++ b/drivers/net/ipq40xx/ipq40xx_ess_sw.c @@ -74,6 +74,7 @@ int ipq40xx_ess_sw_init(ipq40xx_edma_board_cfg_t *cfg) case MACH_TYPE_IPQ40XX_AP_DK04_1_C4: case MACH_TYPE_IPQ40XX_AP_DK04_1_C2: case MACH_TYPE_IPQ40XX_AP_DK04_1_C3: + case MACH_TYPE_IPQ40XX_AP_DK04_1_C6: case MACH_TYPE_IPQ40XX_AP_DK06_1_C1: case MACH_TYPE_IPQ40XX_AP_DK07_1_C1: case MACH_TYPE_IPQ40XX_AP_DK07_1_C2: diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 5ae8c90676..fb703129e6 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1250,6 +1250,7 @@ static int parse_combined_fdt(unsigned long machid) int fdtdec_setup(void) { + unsigned int machid; #if CONFIG_IS_ENABLED(OF_CONTROL) # ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */ @@ -1263,8 +1264,9 @@ int fdtdec_setup(void) gd->fdt_blob = (ulong *)&__bss_end; # else #ifdef CONFIG_OF_COMBINE + machid = smem_get_board_platform_type(); gd->fdt_blob = (ulong *) - parse_combined_fdt(smem_get_board_platform_type()); + parse_combined_fdt(get_dts_machid(machid)); #else /* FDT is at end of image */ gd->fdt_blob = (ulong *)&_end;