Bootloaders like U-Boot that do not implement the Open Firmware API, are expected to pass to the kernel a binary form of the flattened device tree - LinuxFDTBlob
Why are the DTS files present in the kernel as well? Isn't that redundant?
As an example, U-boot source code has following file:
arch/arm/dts/tegra124-jetson-tk1.dts
This file can also be found under Linux source code:
arch/arm/boot/dts/tegra124-jetson-tk1.dts
Although the kernel version is 4 times the U-boot version, I would like to know the reason behind this redundancy. I believe it is harder to maintain and use both for the maintainers and the developers
Below is the answer from the comments of Artlessnoise:
The u-boot source uses the u-boot DTB while Linux uses Linux DTB when kernel boots. The u-boot version is a stripped down version as there are not as many peripherals needed to boot. You always use the kernel version for Linux i.e. u-boot passes this one to Linux (as well as load bzImage or vmlinux).
Many of the u-boot drivers are almost identical to Linux. Obviously, you can make the same argument for all the u-boot drivers; most are copies of the Linux drivers with interrupts replaced by polling routines. Using the same open-firmware interface enables them to match closer.
Because of the above mentioned reasons it makes sense to replicate copies of the DTS.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With