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