- final persistent validation (cold2): autonomous class-A boot from cache c3732515, live cache hash re-read,
CHARGING/FAST, USB remove/insert recovery, LTE/Wi-Fi/NCM/display PASS, 15-min stability PASS -> B10 CLOSED
- README: B7/B8/B9/B10 CLOSED, production profile (4.20 V / 450 mA / HOLD 4.05 V / full-min 4.15 V / CV 60 min /
timer 512 min / FAULT safe clamp 4.00 V) and the four production limitations; NOTES session 38
- current tree cleaned of raw B10 run logs (monitor/dmesg/snapshot/UART excerpt/action logs/register dumps/emulator
outputs); history (58dcb3d) not rewritten
- publication rules: tools/publish-sanitize.py and .gitignore keep B10+ logs to reports (*.md) and *-diff.txt tables
6.7 KiB
B10B5-RESULT — FAULT safe clamp to 4.00 V: v4 driver, RAM regression PASS, production cache candidate built (NOT written)
Date: 2026-10-04. B10B-4 closed. RAM only; no cache/eMMC write.
v4 change (production) — b10/b10b3/lbc-v3-to-v4-fault-clamp.diff (source b10/b10b3/pm8916_lbc-v4.c)
- New
lbc_fault_clamp(): regmap_read VDD_MAX → regmap_write VDD_MAX = 0x00 → regmap_read readback →dev_crit "FAULT safe clamp to 4.00 V: cause <why>, vbat <uV>, VDD_MAX old 0x.. -> readback 0x.. (ret n)". Newlbc_enter_fault()(reason + clamp + FAULT log) used by both existing FAULT entries inlbc_check_fault()(CHG_FAILED, VBAT > 4.25 V). No other charger write on FAULT entry or in FAULT. - FAULT semantics unchanged: latched; left only by USB removal (→ NO_USB; next insert → CHARGING with VDD_MAX = charge level + restart edge) or reboot.
- Comments/log wording: "FAULT safe clamp to 4.00 V"; documented that it is not a guaranteed charge disconnect — with VBAT < 4.00 V the charger may still charge up to 4.00 V. The old "NO software stop available" text removed. (Cosmetic: the probe banner still says "supervisor v3".)
- Object: regmap_read 10 → 12, regmap_write 12 → 13 call sites (the clamp's read/write/readback).
RAM regression (test kernel 7.2.7-aurora-b10b5-test = v4 + lbc-v4-to-v4test-fault-inject.diff, Kconfig CHARGER_PM8916_LBC_B10B5_TEST)
Test hook: write-only debugfs pm8916_lbc/b10b5_fault (0200); "ovp" arms a one-shot OVP condition consumed by lbc_check_fault() → the
production lbc_enter_fault() path. Negative inputs (OVP, ovp x, foo) rejected, nothing armed. Image out-b5t/aurora-b10b5t.img ea37a67c
(production DTB values, model "B10B-5 FAULT clamp TEST"). Run 1 aborted (battery fell out during the planned USB replug — unplanned power loss,
board restarted from B9C; nothing written); run 2 (b5r2/, b5r2-actions.txt, fast log b5r2/board/b5-f1.log, UART on 480s).
| step | result |
|---|---|
| before | FAST (RT 21, path 02), CHG_STATUS 05/03, VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, CHG_FAILED 00, USB_SUSP 00; USB 0.25 A; LTE/Wi-Fi/NCM/display OK |
| trigger | dmesg: OVP FAULT injection armed → FAULT safe clamp to 4.00 V: cause TEST-injected OVP (B10B-5), vbat 4177341 uV, VDD_MAX old 0x08 -> readback 0x00 (ret 0) → CHARGING -> FAULT … FAULT safe clamp to 4.00 V (≈ 15 ms) |
| only actuator write | VDD_MAX 08 → 00 (readback 00); IBAT_MAX 04, CHG_CTRL a0, USB_SUSP 00 unchanged; CHG_FAILED 00 |
| USB input | meter 0.25 → 0.010 A (+5 s) → 0.000 A (+60 s); USBIN 4.92 → 5.017 V (no sag) |
| VBAT | step 4.184 → 4.140 V, then falls slowly (≈ 4.132 V after 2 min); PMIC 41.5 → 35 °C |
| supervisor | stays FAULT over all polls (≈ 4 min, until USB removal); no restart, no further writes; ALERT-VDDMAX only (expected) |
| exit | USB off ≥ 10 s: FAULT -> NO_USB (usb removed) 875.0 s; insert: NO_USB -> CHARGING (usb inserted) 921.7 s → VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, FAST (RT 21, path 02), USB 0.36 A |
| system | LTE ping OK, MSS/WCNSS running, backlight on, NCM OK, eMMC writes 0, no reset |
| Verdict: PASS. |
Production v4 (test trigger removed)
Kernel 7.2.7-aurora-b10b5 = src-b10b5 with pm8916_lbc.c == v4 (no test code), Kconfig == upstream; .config = b10b3 + LOCALVERSION only
(incremental build 41 s, rc 0). Image.gz 96b71ec3 (Image 8c8bfccb, 24754184 B); 0 "B10B-5 TEST"/"B10B-4 TEST" strings; build script refuses test symbols/strings.
- RAM image
b10/b10b3/out-v4/aurora-b10b5.img386502d3… (kernel v4 + production DTB e47762d1 + B9C initramfs ac518e27 + cmdline 0fef41b2). - Cache candidate
b10/b10b3/cache-v4/cache-extlinux-b10b5.imgc37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8 (mkfs-cache-b10b5.sh7e800639, exact B9C/B10B-3 recipe; rebuild bit-identical; e2fsck clean; label/fs label aurora-b10b5). Diff vs the v3 candidate 86869061 (cache-contents-v3-vs-v4.txt): only/Image.gz-dtb5e69f843 → b0ea0466 and the extlinux label b10b3 → b10b5; DTB e47762d1, initramfs ac518e27 and append identical. - lk2nd emulator: S8 B9C regression == S7; S10 candidate boots 'b10b5', kernel 8c8bfccb, DTB e47762d1, ramdisk ac518e27, no overlap; F1/F3/F10 → android fallback.
- Not done: a RAM boot of the exact production v4 image 386502d3 (the regression used v4 + trigger); recommended before any persistent GO. Previous artifacts unchanged: v3 candidate 86869061 (4/4), out/ (7/7). Cache not written. Persistent deployment only with a separate GO.
Production v4 RAM smoke test (2026-10-04, run b5p1; b5p1/, b5p1-actions.txt) — PASS
Image b10/b10b3/out-v4/aurora-b10b5.img 386502d3 (pre-checks: no test Kconfig symbols in config-b10b5, 0 test strings in the kernel, production DTB
e47762d1 inside). RESET-held boot (stage-3, RTC 6 s — harness only).
- Kernel 7.2.7-aurora-b10b5, model "JZ08AU Aurora (RAM boot B10B-3)" (production DTB);
safety timer 512 min (TCHG_MAX 0x7f), enabled; supervisor banner charge 4200000 / hold 4050000 / full-min 4150000 / cv 60 min / IBAT code 4;INIT -> CHARGING (probe, usb present)at 4.097 V. - Registers: VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, TCHG 80/7f, BOOT_DONE 80, CHG_FAILED 00; 0 FAULT / clamp messages; 0 B10B-4/B10B-5 messages;
debugfs
pm8916_lbc/contains onlystate. - USB off ≥ 10 s / on:
CHARGING -> NO_USB199.6 s,NO_USB -> CHARGING212.8 s → FAST (RT 21, path 02), CV at ≈ 4.18 V; USB 0.23 A; 0 monitor ALERTs. - VADC VBAT 4.186 V, VPH 4.186 V, USBIN 4.936 V, PMIC 41–42 °C; LTE START OK 72.9 s, ping 4/4; Wi-Fi AP enabled 77.5 s, MSS + WCNSS running; DISPLAY READY 7.9 s, 0 display errors; NCM OK; eMMC writes 0.
- Cache candidate
cache-v4/cache-extlinux-b10b5.imgre-verified after the test on both hosts: c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8 (unchanged). Board left CHARGING (FAST) on the production v4 RAM image. Nothing written.
Verdict: READY FOR PERSISTENT GO
Candidate b10/b10b3/cache-v4/cache-extlinux-b10b5.img c3732515 (B9C + kernel 7.2.7-aurora-b10b5 v4 + production DTB e47762d1).
Known limits carried into production (documented): FAULT safe clamp to 4.00 V is not a charge disconnect below 4.00 V; safety timer is not a
charge stop; no thermal derating; flaky battery contact on this board. A write needs its own GO with the B9C-style write/rollback scripts
(rollback target = current live cache B9C b9ce13c9).
Persistent install and final validation (2026-10-04)
Cache written via HW EDL (b10/b10b5/B10-write.sh, B10_CACHE_WRITE_VERIFIED, readback c3732515, all other partitions unchanged); class-A validations cold1
and cold2 PASS (live cache hash re-read from Linux = c3732515). Details and final verdict: logs/b10/b10b5/B10-RESULT.md.
B10 battery / charger / power management — CLOSED.