uzbek-plus/logs/b10/b10b3/B10B5-RESULT.md
q 4983fe2f76 B10: finalize persistent PM8916 charging
- 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
2026-10-04 19:48:10 +03:00

66 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).
## 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.**