2395297_en-US

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2395297_en-US

2395297_en-US

Android 16: Why has NXP invented an own way to handle device trees in vendor_boot

Inspecting last u-boot bootloader contained in Android 16 1.4.0 release I have discovered that an config option "CONFIG_INCLUDE_DTB_TO_VENDOR_BOOT" has been added to the bootloader.

I assumed that it fixes the problem, that older Android versions used "dtbo" partition to store the main device tree. In my understanding that was wrong, because main device tree should be placed in "vendor_boot" partition (at least for vendor_boot v4) and dtbo partition gets filled with device tree overlays which can be applied to the main device tree to support hardware variants.

See

https://source.android.com/docs/core/architecture/partitions/vendor-boot-partitions

where it is documented, that only one device tree to be inside vendor_boot.

But now NXP has made an implementation to abandon "dtbo" partition and use the "dt_table_header" struct inisde vendor_boot to add more than one full device tree directly to vendor_boot. This header is normally used inside "dtbo" partition to organize multiple device tree overlays, but not inside "vendor_boot".

This NXP specific way of handling device trees conflicts with the standard Android way to use one main device tree and device tree overlays from dtbo. This makes it hard for users (like me) who use the concept of device tree overlays to maintain their Android ports.

Why has NXP chosen to implemeted device tree variants in that way?

Do you have plans to change this behaviour back to the way as documented by Android?

Android
Tags (1)
No ratings
Version history
Last update:
9 hours ago
Updated by: