uzbek-plus/logs/b10/b10b0/B10B0-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

66 lines
5.6 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.

# B10B0-RESULT — PM8916 VADC/IIO + PMIC temp-alarm, RAM only
Date: 2026-10-03. **Verdict: PASS** (DMM comparison limited by a 10 mV DMM measured at a board VBAT pad, see below).
Nothing persistent changed: aboot lk1st-b9l 15208dbb and cache B9C b9ce13c9 untouched, eMMC writes = 0 (mmcblk0 w=0 in every dump/snapshot).
No manual writes to charger/BMS registers. pm8916_lbc / pm8916_bms_vm not built; pm8916_usbin unchanged.
## Image
- kernel `7.2.7-aurora-b10b0` = b9c + `CONFIG_IIO`, `CONFIG_QCOM_SPMI_VADC` (→ `QCOM_VADC_COMMON`), `CONFIG_QCOM_SPMI_TEMP_ALARM`
(fragment `linux/aurora-b10b0.config`; .config diff vs b9c = exactly these 4 + LOCALVERSION).
- DTB `linux/dts/msm8916-jz08-aurora-b10b0.dts` = B9B DTB (7ca9cc79, same as B9C) + `&pm8916_vadc { channel@6 VBAT_SNS, pre-scaling 1/3 }` + model.
- initramfs + cmdline = exact B9C. Image `b10/b10b0/out/aurora-b10b0.img` a360aee2 (build `b10/b10b0/build-b10b0.sh`). out/ holds the B8F initramfs (PSK) → never publish.
- Driver `b10/b10b0/b10b0-boot.sh K` (from b9c-boot.sh, ram only), dump `b10b0-dump.sh`, series `b10b0-cal.sh N P`.
## Runs
- ram1 (05:32, class A, RTC 34 s): probe + diff OK (`post-probe-ram1.txt`). Then the board stayed in the RAM boot ≈7.7 h; the
operator's DMM probe shorted VBAT to GND at 13:13 → UVLO power-off (POFF2 0x80d = 0x28: UVLO + CHARGER bit), auto power-on from USB
(class B) into the normal cache B9C. No damage (no heat/smell, board boots normally). Calibration series lost → repeated.
- ram2 (10:24 480s clock / 13:25 local, class A, RTC 6 s): full run, calibration series 12 × 20 s.
## Checks (ram2)
1. IIO: `iio:device0` = `200f000.spmi:pmic@0:adc@3100`; channels 0 usb_in, 6 vbat_sns (**raw only, no `_input`**: upstream
spmi-vadc has no scaling for VBAT_SNS), 7 vph_pwr, 8 die_temp, 9/10 refs, 14 gnd, 15 vdd. No errors in dmesg.
2. VBAT: raw 37688–37761; processed by the driver's own calibration (ch9 625000 µV @ raw 31246, ch10 1250000 µV @ 37738 →
96.272 µV/code, ×3 pre-scaling): **mean 3.7507 V, σ 7.4 mV** (12 samples). VPH (ch7, driver `_input`) mean 3.7523 V, σ 6.8 mV.
USB_IN (ch0) 4.989 V.
3. PMIC temperature: `pm8916-thermal` zone + `in_temp8_input`: 32.7–34.7 °C during the series.
4. Register diff vs baseline (B9C cache boot, `baseline-b9c.txt`, 48 peripheral blocks): changes only in
- temp-alarm 0x24xx: 0x2440 01→43 (threshold set 3 + stage-2 override), 0x2446 01→80 (force enable), 0x2411/12/15/16 IRQ config;
- VADC 0x31xx: IRQ config 0x3111/12/15/16, CH_SEL/mode/data 0x3148/50/60/61;
- dynamic data/state: 0x0807/080c PON reasons (class A vs B), 0x1009/100b/1010/1308 charge state (now charging, FAST_CHG_ON),
0x3260/0x3360/61 (other ADC instances' data), 0x40xx BMS FIFO/OCV/state, 0x6010/48/49 RTC, 0x7309 status;
- **0x1642 00→80 (MISC BOOT_DONE) and 0x1643 00→0b: written by lk1st, not by B10B-0** — `target_fastboot_init()` →
`pm8x41_set_boot_done()` runs whenever lk1st enters fastboot (RESET-held RAM boots). Normal cache boots leave it 0.
- **charger/BMS configuration registers: unchanged** (VDD_MAX/SAFE, IBAT_MAX/SAFE, VIN_MIN, CHG_CTRL, CHG_FAILED, VBAT_WEAK,
IBATTERM_EN 0x105B, TCHG 0x1060/61, WDOG, PERPH_RESET, COMP_OVR1 0x10EE, BAT_IF BTC, USB 0x134x, BMS 0x4040/46/47/55/56).
5. LTE START OK 63.2 s, ping 4/4 via wwan0; Wi-Fi AP aurora-b8f enabled 67.7 s, Pronto running; display: operator read the
SAMPLE n/12 screens on the panel; SNTP 12 replies.
6. eMMC writes = 0.
Temp-alarm note: the upstream driver (GEN1 subtype) raises the PMIC over-temperature thresholds from set 1 (110/130/150 °C)
to set 3 (120/140/160 °C) and **overrides the stage-2 HW shutdown**; stage-3 HW shutdown (160 °C) and the DT critical trip 145 °C
(orderly kernel poweroff) remain. Same on every upstream msm8916 board; acceptable, recorded.
## VBAT calibration (`cal-ram2.txt`, `cal-ram2-analysis.txt`)
DMM reference: operator's multimeter, **board VBAT test pad vs GND** (battery terminals not reachable), 10 mV resolution,
10 readings: 3.73, 3.74, 3.74, 3.74, 3.70, 3.70, 3.74, 3.70, 3.70, 3.70 → mean 3.719 V, σ 20 mV (display toggling 3.70/3.74).
Board was charging (CC, FAST_CHG_ON) during the series.
| | value |
|---|---|
| VADC VBAT mean / σ | 3.7507 V / 7.4 mV |
| DMM mean / σ | 3.719 V / 20 mV |
| **VADC − DMM** | **+31.7 mV (+0.85 %)** — within the combined uncertainty of a 2-digit DMM (±10 mV LSB, typ. ±0.5 % +2 d ≈ ±40 mV) and pad/ground-return drop while charging |
| BMS FIFO (raw, newest, last 6 samples) | 13194 |
| **FIFO coefficient** | **284.3 µV/LSB vs VADC**, 281.9 µV/LSB vs DMM (upstream driver assumes 300 → +5.5 % too high; uncalibrated downstream 292.97) |
The FIFO coefficient agrees with the B10A estimate from the CV plateau (285.7 µV/LSB). For better than ~1 % accuracy against an
external reference a 3½+-digit DMM on the battery terminals with charging stopped would be needed.
## Side observation (not caused by B10B-0; for B10B-2 planning)
- Operator's USB meter showed **≈0.08 A** during the ram2 series while the LBC reported fast charging (CC); cache boots after class A
showed up to 0.41 A. In ram1 the board ran ≈7.7 h on USB and VBAT still fell to ≈3.7 V.
- Hypothesis: once **BOOT_DONE** is set (lk1st fastboot path), the LBC obeys the programmed IBAT_MAX = 90 mA (SBL1 default)
instead of its pre-boot-done autonomous current, so the USB input is capped near 90 mA and the board load drains the battery.
To verify in B10B-2 (the upstream LBC driver would program IBAT_MAX anyway). Consequence now: **RAM-boot tests via RESET/fastboot
run with BOOT_DONE = 1, unlike the production cache boot** — keep this in mind when comparing charger behaviour.