mkdtboimg: Introduce DTBO version 2 support
Android desktop devices (e.g., Sapphire) require a 64-bit value and mask
(called Unified Firmware and Second Source Configuration, or UFSC [1])
for device tree matching. Representing this 64-bit mask and value
requires 4 32-bit custom fields in the DTBO entry header. As another
custom field is also reserved for other usage, the current 3 custom
fields in dt_table_entry_v1 is not sufficient for that use case.
To accommodate this and more future-proof, introduce DTBO image version 2,
which extends the number of custom fields in each DT entry from 3 to 11
(represented as custom[0-10] in the C struct).
Key changes:
- utils/src/dt_table_core.h: Add dt_table_entry_v2 struct definition.
- utils/src/mkdtboimg.py:
- Add support for version 2 entries with 8 additional custom fields.
- Implement version-aware DT entry size calculation.
- Add new '--customX' arguments support to 'create' and 'cfg_create'
subcommands.
- Add robust version validation in the packing process.
- utils/tests/: Add test case and configuration for version 2 DTBO images.
[1] https://chromium.googlesource.com/chromiumos/config/+/HEAD/util/ufsc/ufsc_developer_guide.md
Bug: 482252353
Test: ./mkdtboimg_testdata.sh
Test: mmm system/libufdt
Change-Id: Ide2aa56196d66f4fc7dce1089112cbf0c8a3ef9f
3 files changed