uzbek-plus/logs/b10/b10b3/B10B3-TESTD-RESULT.md
q 58dcb3d121 B10: battery charging — PM8916 LBC supervisor v4 (CHARGE/HOLD, FAULT safe clamp to 4.00 V) and persistent B10B-5 cache
- 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
2026-10-04 19:00:27 +03:00

74 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.

# B10B3-TESTD-RESULT — safety timer expiry during CHARGING (v3 supervisor, RAM only)
Date: 2026-10-04 (UTC 2026-10-03 18:29–18:44). **Verdict: NOT PASS / inconclusive** by the agreed rule (the CV criterion started before the
timer mark, no expiry seen). **Observed: with TCHG_MAX 0x01 / TCHG_EN 0x80 the PM8916 did not set CHG_FAILED at t = 480 s, while the USB input
current was still at its full CC level (≈0.42 A), nor afterwards up to t ≈ 843 s.** The timer has still never been seen to fire.
Image `b10/b10b3/out-d/aurora-b10b3d.img` 43739e55 (= Test C DTB + `qcom,charge-timeout-minutes = <8>`; kernel/initramfs/cmdline = Test C,
driver unchanged). aboot/cache untouched, eMMC writes = 0, no manual PMIC writes.
## Profile
Charge 4.10 V (VDD_MAX 0x04), HOLD 4.00 V (0x00), full-min 4.05 V, CV 5 min, IBAT_MAX 450 mA (0x04), timer 8 min (TCHG_MAX 0x01, TCHG_EN 0x80).
Compiled DTB checked numerically: voltage-max-design 4100000, charge-timeout 8, hold 4000000, full-min 4050000, cv-hold 5,
fast-charge-safe-current 500000; DTB inside `Image.gz-dtb` byte-identical. DTB diff vs Test C: only model + timeout (0x200 → 0x08).
Driver behaviour relevant here (v3 source): on CHG_FAILED in CHARGING/HOLD → logical FAULT, **no register writes** afterwards (so an expiry
would show pure hardware behaviour); recovery only via USB re-insert (clears CHG_FAILED + restart edge).
## Bench preparation
Class-A reset (operator local 21:11 down, 21:25 up; no RESET) → B9C, RTC 3 s; checks `pre-testD-classA-check.txt` (+ PON 0x080D 00),
`pre-testD-classA-dump.txt`, `pre-testD-vs-preB-diff.txt` (only ADC/BMS/RTC, 14 lines), `pre-testD-vs-baseline-diff.txt` (same status set as before).
All Test B values were reset. Pre-boot operator: DMM VBAT 4.073 V, USB meter 0.42 A (B9C SBL charge).
`reboot` over telnet with RESET held → fastboot after 12 s → `fastboot boot` 18:29:48 UTC → NCM 18:29:59, monitor (5 s) 18:30:08.
## Timeline (t = 0 at probe, dmesg 0.920 s `safety timer 8 min (TCHG_MAX 0x01), enabled`; per-minute means from 161 samples)
| t (min) | USBIN (VADC) | VADC VBAT | CHG_STATUS 03 samples | state |
|---|---|---|---|---|
| 0–1 | 4.881 V | 4.084 V | 0/9 | CHARGING (INIT→CHARGING at 3.999 V, t 0.04 s) |
| 1–5 | 4.882 V | 4.087 → 4.095 V | 0 | CHARGING, CHG_STATUS 05 |
| 5–7 | 4.882 V | 4.098–4.099 V | 0 | VBAT at the 4.10 V level; supervisor sees the CV bit in its polls (cv_s runs from ≈ t 300 s, one reset) |
| **7–8 (t = 480 s)** | **4.884 V** | 4.099 V | 0/12 | **timer mark: CHG_FAILED 00, CHG_CTRL a0, TCHG 80/01, path 01, VDD_MAX 04, IBAT_MAX 04** |
| 8–9 | 4.887 V | 4.097 V | 0/12 | CHARGING |
| 9–11 | 4.896 → 4.913 V | 4.095 → 4.086 V | 2/12, 7/11 | current taper starts (USBIN sag decreasing) |
| 11.8 (t = 706.8 s) | 4.944 V | 4.083 V | 10/12 | **CHARGING → HOLD** (CV 5 min reached), only VDD_MAX 04 → 00 |
| 12–14 | 5.015–5.018 V | 4.030 → 4.025 V | all | HOLD phase 1 |
| t ≈ 843 s | — | 4.026 V | — | end dump: HOLD, fault none, CHG_FAILED 00, n_latch 0 |
Operator: USB meter 0.42 A at t ≈ 430 s. USBIN sag is a proxy for the input current: unchanged (4.881–4.884 V) from t = 0 to t ≈ 8 min, i.e. the
current at the timer mark equalled the CC level (0.42 A input, ≈ 0.33 A into the battery after the board load); it rises only after ≈ 8.5 min (taper)
and reaches 5.017 V (≈ no current) in HOLD phase 1.
All 161 samples: CHG_FAILED 00, TCHG 80/01, CHG_CTRL a0, CHGR_RT 01, USB path 01; 0 ALERT lines; no FAULT; no 00+01 latch. PMIC max 45.9 °C.
## Answers to the test questions
1. CHG_FAILED changed? **No** (00 throughout, also in the end dump at t ≈ 843 s).
2. Charging stopped at the mark? **No** — input current stayed at the CC level through t ≈ 8.5 min, then tapered normally (CV), then HOLD by the supervisor.
3. CHG_STATUS / CHG_CTRL / path changed at the mark? **No** (05 / a0 / 01; 03 appears only with the CV taper after ≈ 9 min).
4. USB able to carry the system? Yes (no interruption; HOLD phase 1 as in Tests B/C).
5./6. Automatic recovery / driver intervention: **not testable** — there was no expiry.
## Why not PASS
By the agreed rule: VBAT reached the 4.10 V regulation level at ≈ t 300 s and the supervisor's CV criterion started then, before the 480-s mark.
Pure CC (VBAT below the regulation level) lasted only ≈ 300 s. The battery was more charged than estimated from Test C (OCV ≈ 4.0 V after HOLD,
plus SBL charge in B9C; at 450 mA the under-charge VBAT is ≈ 4.08 V from the start).
Note for the interpretation: the input current did not taper before ≈ 8.5 min, so the charger was delivering full current at the mark. If the
PM8916 timer counted fast-charge time with 4-min granularity starting at the probe programming, an expiry at 480 s would have been expected.
Possible explanations (not tested, not claimed): the timer counts only in a charger state this LBC never reports (CHGR_RT never shows
FAST_CHG_ON — 01 in every sample, Tests B/C/D); TCHG_MAX units/encoding differ from `minutes / 4 − 1`; or the timer is restarted/held by the
restart edge (0x21 → 0xa0) at CHARGING entry. Test D does not distinguish them.
## Observations
1. Warm reboot with RESET held again gave POFF_REASON2 0x080D = 0x80 (STAGE3) and RTC 5 s, although RESET was held only ≈ 12 s
(Test B: ≈ 14 s). So a RESET-held warm reboot regularly ends in a PMIC stage-3 reset on this board. Harmless for RAM tests (driver
programs everything at probe), but the boot is effectively a PMIC reset, not a pure class B.
2. Full SID0 diff end vs class A (`d1-vs-classA-diff.txt`): identical set to Test B — 0x1040 08→00, 0x1044 00→04, 0x1045 0a→04, 0x1049 90→a0,
0x1061 1d→01, 0x1642 00→80 (+0x1643), status 0x1009/0x1308, PON 0x080D, temp-alarm/0x06xx driver regs, ADC/BMS/RTC. Unchanged:
0x1060 80, 0x104A 00, 0x105B 09, 0x10EE 00, 0x1041 08.
3. LTE START OK 63.6 s, ping 4/4; Wi-Fi AP enabled 68.9 s, Pronto running; NCM ok; eMMC w=0.
4. cv_s cosmetic (keeps counting in HOLD) — unchanged.
## Files (logs/b10/b10b3/, copies on 480s)
`pre-testD-classA-check.txt`, `pre-testD-classA-dump.txt`, `pre-testD-vs-preB-diff.txt`, `pre-testD-vs-baseline-diff.txt`; `d1/` (host-actions,
snapshot, dmesg.full, dmesg-end, uart.log); `d1-actions.txt`, `d1-boot.out`, `d1-monstart.out`, `d1-mon.txt` (pull), `d1-mon-board-final.txt`
(161 samples + MON-END), `d1-end-dump.txt`, `d1-end-state.txt`, `d1-vs-classA-diff.txt`. UART `logs/uart/b10b3d-ram1-20261003-212908.log` (480s).
Build/boot: `linux/dts/msm8916-jz08-aurora-b10b3d.dts`, `b10/b10b3/build-b10b3d.sh`, `b10b3d-boot.sh`, `b10b3d-mon-start.sh`, `out-d/`.
## State after the test
Board in HOLD on the Test D RAM image (VDD_MAX 4.00 V, TCHG_MAX 0x01 enabled). Monitor/pull stopped. Class-A reset required before the next test.