diff --git a/board/qca/arm/common/fdt_fixup.c b/board/qca/arm/common/fdt_fixup.c index ee7702e5fe..13ba078bee 100644 --- a/board/qca/arm/common/fdt_fixup.c +++ b/board/qca/arm/common/fdt_fixup.c @@ -500,6 +500,12 @@ __weak void fdt_fixup_cpus_node(void * blob) { return; } + +__weak void fdt_fixup_set_dload_dis(void *blob) +{ + return; +} + __weak void fdt_fixup_set_dload_warm_reset(void *blob) { return; @@ -615,6 +621,9 @@ int ft_board_setup(void *blob, bd_t *bd) s = getenv("dload_warm_reset"); if (s) fdt_fixup_set_dload_warm_reset(blob); + s = getenv("dload_dis"); + if (s) + fdt_fixup_set_dload_dis(blob); s = getenv("qce_fixed_key"); if (s) fdt_fixup_set_qce_fixed_key(blob); diff --git a/board/qca/arm/ipq6018/ipq6018.c b/board/qca/arm/ipq6018/ipq6018.c index 58c5eef27c..c761876e41 100644 --- a/board/qca/arm/ipq6018/ipq6018.c +++ b/board/qca/arm/ipq6018/ipq6018.c @@ -751,6 +751,23 @@ void ipq_fdt_fixup_usb_device_mode(void *blob) } } +void fdt_fixup_set_dload_dis(void *blob) +{ + int nodeoff, ret; + const char *dload_node = {"/soc/qca,scm_restart_reason"}; + uint32_t setval = 1; + + nodeoff = fdt_path_offset(blob, dload_node); + if (nodeoff < 0) { + printf("fixup_set_dload: unable to find node '%s'\n", + dload_node); + return; + } + ret = fdt_setprop_u32(blob, nodeoff, "dload_status", setval); + if (ret) + printf("fixup_set_dload: 'dload_status' not set"); +} + void enable_caches(void) { qca_smem_flash_info_t *sfi = &qca_smem_flash_info;