3.10. DTBO overlays¶
dtbo_a.bin is an Android DTBO image holding three device-tree overlays,
one per PCB revision (v10/v20/v30) of the Note Air5 C; how ABL selects one
and what actually differs between them is under “Container” and “Difference
between the three revisions” below.
3.10.1. Container¶
Android DTBO image (magic 0xd7b7ab1e), header v0, page 4096, total
1,529,557 B (partition is 24 MB; the remainder is zero pad). 3 overlay
entries, each ~510 KB, all id=0 rev=0 custom=0:
Entry |
File offset |
Size |
Decompiled |
|
|
|---|---|---|---|---|---|
0 |
|
509,847 |
|
Lagoon MTP NoteAir5C v30 |
|
1 |
|
509,735 |
|
Lagoon MTP NoteAir5C v10 |
|
2 |
|
509,847 |
|
Lagoon MTP NoteAir5C v20 |
|
All three: compatible = "qcom,lagoon-mtp","qcom,lagoon","qcom,mtp",
qcom,msm-id=<0x1b2 0x10000 0x1cb 0x10000> (SoC 434/459),
qcom,board-id=<0x08 0x00>. Each is a full board description (109/108/109
fragments, 51 distinct compatibles), not a small patch — ABL picks one
whose board-id/pcbver matches the running PCB and applies it over the base SoC
DTB (../artifacts/boot_a/board.dts). Fragment targets are unresolved
symbolic placeholders (target = <0xffffffff>, fixed up at apply-time via
__symbols__/__fixups__), so a raw board.dts diff is not meaningful
— the overlays are the board tree.
3.10.2. Difference between the three revisions¶
The v10/v20/v30 blobs are near-identical clones. Stripping phandle noise, the entire substantive delta is the PCB-version tag and the e-ink TCON firmware product-id:
v10 (pcbver 0) |
v20 (pcbver 1) |
v30 (pcbver 2) |
|
|---|---|---|---|
|
|
|
|
onyx,lfcpnx@0= the LFCPNX100 e-ink TCON (timing controller), SPI-attached (spi-cs-gpios,spi-gpios,status="okay").fw-product-idselects which TCON firmware blob the kernel loads (matches thelfcpnx/lfcpnx100_tcon_fw_*bundle in the kernel config, Boot image: kernel, DTB, ramdisk, config).v20/v30 add a second
lfcpnx@0fragment carrying a newer product-id (0xa5/0xa7) alongside the base0x9e— later PCB revisions ship a revised e-ink panel/TCON firmware variant. No panel-technology change, no SoC change, no memory-map change between revisions — this TCON firmware id is the overlay set’s reason to exist.
3.10.3. Onyx-specific hardware the overlays wire up¶
Distinct onyx,* compatibles (identical across all three revisions):
Node |
Hardware |
|---|---|
|
color e-ink TCON (LFCPNX100), SPI |
|
Lattice ECP5 (LFE5U) FPGA bridge over I²C (e-ink pipeline glue) |
|
Wacom EMR stylus digitizer (I²C) |
|
front-light (TI LM3630A dual LED driver — warm/cold) |
|
detachable magnetic keyboard (serial) |
|
Hall sensor (magnetic cover / folio detect) |
|
Onyx power-management node |
E-ink waveform tunables present in the overlay: onyx,tcon-mode-support,
epdc-regal_nm-enable, epdc-gu-regal-enable (Regal grayscale for pen),
epdc-a2-enhance-* (A2 fast-refresh mode).
3.10.4. Cross-check¶
This hardware inventory (LFCPNX100 TCON, Lattice ECP5 FPGA bridge, Parade
capacitive touch, Wacom EMR digitizer, LM3630A front-light, Hall sensor,
serial keyboard — Parade’s compatible/I²C-address/GPIO bindings are also
sourced from this overlay, see Capacitive touch (Parade pt_core)) matches the
kernel-driver inventory in Boot image: kernel, DTB, ramdisk, config item for item, and
refutes the leftover XBL AMOLED panel entry noted there.
3.10.5. Artifacts¶
../artifacts/dtbo_a/overlay_{0,1,2}.dtb(raw) andoverlay_{0,1,2}.dts(decompiled: 0=v30, 1=v10, 2=v20).
3.10.6. Provenance¶
- Source:
../_READONLY/lun4/dtbo_a.bin(READ-ONLY). Extracted blobs and decompiled overlays in../artifacts/dtbo_a/.- Method:
Parse DTBO header (
structbig-endian) into 3 entries; carve each blob;dtc -I dtb -O dts. Diff decompiled overlays pairwise, filtering phandle/target/fragmentnoise to isolate real deltas.- Cross-refs: