--- a/arch/mips/ralink/of.c +++ b/arch/mips/ralink/of.c @@ -81,13 +81,23 @@ void __init plat_mem_setup(void) { + void *dtb = NULL; + set_io_port_base(KSEG1); /* * Load the builtin devicetree. This causes the chosen node to be - * parsed resulting in our memory appearing + * parsed resulting in our memory appearing. fw_passed_dtb is used + * by CONFIG_MIPS_APPENDED_RAW_DTB as well. */ - __dt_setup_arch(&__image_dtb); + if (fw_passed_dtb) + dtb = (void *)fw_passed_dtb; + else if (__dtb_start != __dtb_end) + dtb = (void *)__dtb_start; + else + dtb = &__image_dtb; + + __dt_setup_arch(dtb); of_scan_flat_dt(early_init_dt_find_chosen, NULL); if (chosen_dtb)