- LBC supervisor v1..v4 (linux/patches/b10b3-lbc-supervisor-v3.patch + b10/b10b3/lbc-v3-to-v4-fault-clamp.diff): CHARGING 4.20 V/450 mA -> HOLD 4.05 V after 60 min CV -> battery -> new cycle on USB insert; FAULT = VDD_MAX 4.00 V clamp - RAM tests C/B/D/D2/D3/D4 (safety timer only ends fast charge), B10B-4 actuator audit (VDD_MAX works, USB_SUSP does not), B10B-5 FAULT clamp regression, production run, warm reboot via PON reboot reason - cache = B10B-5 c3732515 (HW EDL write, readback + full partition verify), class-A persistent validation - test-only hooks/images are not part of the production kernel; images with the AP PSK are not published
61 lines
6.3 KiB
Markdown
61 lines
6.3 KiB
Markdown
# 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)"`. New `lbc_enter_fault()` (reason + clamp + FAULT log) used by both
|
||
existing FAULT entries in `lbc_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.img` **386502d3…** (kernel v4 + production DTB e47762d1 + B9C initramfs ac518e27 + cmdline 0fef41b2).
|
||
- Cache candidate `b10/b10b3/cache-v4/cache-extlinux-b10b5.img` **c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8**
|
||
(`mkfs-cache-b10b5.sh` 7e800639, 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-dtb` 5e69f843 → **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 only `state`.
|
||
- USB off ≥ 10 s / on: `CHARGING -> NO_USB` 199.6 s, `NO_USB -> CHARGING` 212.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.img` re-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).
|