uzbek-plus/logs/b10/b10b3/B10B4-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

43 lines
5.1 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.

# B10B4-RESULT — emergency charge actuator audit (RAM only)
Date: 2026-10-04 (UTC ≈ 12:51–14:00). Image `b10/b10b3/out-b4/aurora-b10b4.img` eeff6820 (TEST-ONLY kernel 7.2.7-aurora-b10b4-debug,
debugfs `pm8916_lbc/b10b4`, production DTB values; review `B10B4-HOOK-REVIEW.md`). No flash; production artifacts and the cache candidate
86869061 unchanged. RESET-held boot (stage-3, RTC 6 s); probe `INIT -> CHARGING` at 4.097 V; hook banner present; b10b4 mode `--w-------`.
Logs: `b4r1/` (boot, snapshot, UART on 480s `logs/uart/b10b4-ram1-20261004-154537.log`), `b4r1/board/` (b4-t*.log fast logs 1 s ×12 then 5 s ×10,
discharge log, monitor log, dmesg), `b4r1-actions.txt` (operator readings), `b4-base1.txt`.
**No direct battery-current sensor: the USB meter is the total board input; VADC USBIN sag and VBAT steps are indirect.**
## Hook negative tests
`foo 1`, `vdd 9`, `ibat 5`, `susp 2`, `vdd 1 2`, `vdd`, `vdd x`, `addr 0x1040 0` → all rejected (rc 1 / -EINVAL), 0 hook log lines, registers unchanged.
## Precondition discharge (operator GO)
USB off at uptime 320 s (`CHARGING -> NO_USB`, no writes), 4×yes until VADC ≤ 3.995 V ×3 (loaded) → LOAD-STOP 2077.6 s (29.3 min), PMIC max 52.7 °C,
heartbeat continuous, no reset. VADC at re-insert 4.085 V (target window 4.04–4.07 V missed by ≈ 15 mV — DMM/VADC offset larger than assumed;
still > 4.00 V as required for Test 2). Re-insert → `NO_USB -> CHARGING`, FAST (RT 21, path 02).
## Baseline before each test
CHARGING, FAST (RT 21, path 02), CHG_STATUS 05, VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, CHG_FAILED 00, USB_SUSP 00, USB_RT 03; VADC VBAT ≈ 4.15 V
(under charge), USBIN 4.88 V; PMIC 45–50 °C; USB meter 0.41–0.47 A; LTE ping OK, MSS/WCNSS running, backlight on.
Restore before Test 3 needed a USB replug (FAST is not re-entered by `vdd 8`); the first operator "replug" was not seen by the board, the second
(≥ 10 s) was (`NO_USB` 3663.5 s → `CHARGING` 3720.5 s).
## Results
| actuator | USB input before → after | VBAT slope after the action | USB path / RT | supervisor reaction | reversible | board stable | verdict |
|---|---|---|---|---|---|---|---|
| **susp 1** (0x1347 b0) | 0.46 → **0.41 A**; USBIN sag unchanged (4.884 V) | **+2.0 mV/min** (charging continues; +5 mV over ≈ 3 min) | 02→01, RT 21→00; USB_RT 03 stays valid | none (stays CHARGING, no writes) | yes — `susp 0` → FAST back instantly (RT 21, path 02), no driver action | yes (display on) | **NOT an actuator** (only ends FAST; input stays) |
| **vdd 0** (VDD_MAX 4.20→4.00 V, VBAT 4.155 V) | ≈ 0.46 → **0.000 A** (+5 s and +60 s); USBIN 4.883 → **5.024 V** (no sag) | immediate step 4.153 → 4.093 V (IR drop of the charge current gone), then **−11 mV/min** (board on battery; includes relaxation) | 02→01, RT 21→01, CHG_STATUS 05→03 | none (stays CHARGING, no writes) | yes — `vdd 8` → charging resumes at once (USBIN sag back, VBAT +), but **in the non-fast state** (path 01); FAST needs a USB re-insert | yes; PMIC 49 → 37 °C during the stop (no charger dissipation) | **WORKS as charge stop while VBAT > 4.00 V** |
| **ibat 0** (IBAT_MAX 450→90 mA) | ≈ 0.41 → reported "0.8" at +5/+60 s (**to confirm: 0.08 A expected**); USBIN 4.881 → 4.992 V (partial sag) | step 4.155 → 4.103 V, then ≈ −10 mV/min (90 mA ≈ board load; includes relaxation) | stays 02, RT 21 (FAST kept) | none | yes — `ibat 4` → full current at once, FAST kept | yes; PMIC 46 → 39.6 °C | **derating, not a stop** (90 mA still flows; net battery ≈ 0 only because of the board load) |
| combination (Test 4) | not run — Test 2 already gave a working actuator (per the GO rule) | | | | | | — |
CHG_FAILED 00 in all 144 fast-log samples and all 133 monitor samples; monitor ALERTs only the expected ALERT-VDDMAX (Test 2 window) and ALERT-IBAT (Test 3 window); no reset
(uptime continuous, heartbeat), eMMC writes 0, PMIC max 49.2 °C in the test windows. Final state: FAST baseline restored (VDD_MAX 08, IBAT_MAX 04,
CHG_CTRL a0, USB_SUSP 00, path 02, RT 21), LTE ping OK, MSS/WCNSS running, backlight on; board left CHARGING on the test image.
## Selection
- **Primary FAULT actuator: VDD_MAX → 0x00 (4.00 V).** Input current to ≈ 0 within the first sample (< 1 s), VBAT steps down and falls, board keeps
running from the battery, no latch, reversible, no supervisor interference. Same mechanism as HOLD phase 1 (already validated). Limitation:
it stops charging only while VBAT > 4.00 V; below 4.00 V the charger would still charge **up to 4.00 V** (a safe cap, not a stop).
For the defined FAULT causes (OVP > 4.25 V; a stuck CHARGING high in the cell) VBAT is far above 4.00 V, so it acts as a stop.
- **Hard emergency actuator: none verified that stops charging at any VBAT.** USB_SUSP does not cut the input. Best available = VDD_MAX 0x00 +
IBAT_MAX 0x00 (cap 4.00 V at ≤ 90 mA) — not tested as a combination (Test 4 skipped per rule); would need its own GO if required below 4.00 V.
- **Derating actuator: IBAT_MAX** (0x00 = 90 mA; FAST kept; immediately reversible) — candidate for the PMIC-temperature derating noted in 8.10.
Nothing integrated into the production driver; no persistent candidate rebuilt.