Re: question: malta doesn't use a1 for fdt from bootloader

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 2023/12/22 17:51, dan@xxxxxxxxxx 写道:

Newbie question:

I noticed while writing some test automation with QEMU and U-Boot that
the Malta kernel appears to ignore any DTB provided by the bootloader, in
favour of using the one embedded into the kernel image. Is there a
reason behind this, or is it just not a thing that's been changed since
the board was converted to use device tree?

Hi,

It's a bit of history that DeviceTree passed by YAMON bootloader to kernel does not compatible with upstream kernel's devicetree bindings,
so we decided to just omit it.


I patched my own kernel to check $a1 as the "mips generic" kernel does,
and it seems to work, but maybe I'm missing something? I did have to
rebuild U-Boot with different CONFIG options to make use of it (I don't
khow what real hardware Malta uses for a bootloader) so perhaps it has
limited use.

If the change is acceptable in principle I'll tidy it up and submit
a patch with all the proper procedure.

I'm not sure if this is ok for YAMON-DT systems, will check on those systems.

Thanks
- Jiaxun

Opinions welcome

-dan


diff --git a/arch/mips/mti-malta/malta-setup.c b/arch/mips/mti-malta/malta-setup.c
index 21cb3ac1237b..52e731f9b4e2 100644
--- a/arch/mips/mti-malta/malta-setup.c
+++ b/arch/mips/mti-malta/malta-setup.c
@@ -192,7 +192,9 @@ static void __init bonito_quirks_setup(void)
void __init *plat_get_fdt(void)
  {
-       return (void *)__dtb_start;
+       return (fw_arg0 == -2) ?
+               (void *) (KSEG1ADDR(fw_arg1)) :
+               (void *) __dtb_start;
  }
void __init plat_mem_setup(void)





[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux