uzbek-plus/logs/b9/b9l/B9L-RAM-RESULT.md
q 4a7224c41f B9: built-in display (ST7735S SPI) in Linux and persistent B9C cache
- B9A: read-only audit of stock LK/DT: the panel is an ST7735S 128x128 on SPI (BLSP1 QUP4,
  16 MHz, mode 3, D/C GPIO116, RESET GPIO118), backlight = PM8916 MPP4 current sink 40 mA.
- B9B: upstream panel-mipi-dbi with the stock init sequence as firmware; MPP4 sink via pinctrl
  + gpio-backlight; first light with correct colours/orientation/offsets.
- B9C: fbcon (6x8, 21x16) on tty1 + getty, UART console kept, aurora-display service;
  cache B9C b9ce13c9 written and verified, cold boots with LTE + Wi-Fi + display.
- B9L (RAM only): lk2nd second stage with an msm8916 SPI panel port shows a picture before Linux.
- Sanitizer: whitelist for b8/ and b9/.
2026-10-03 01:45:02 +03:00

63 lines
4.5 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.

# B9L-RAM — ST7735S initialised by a second-stage lk2nd before Linux (RAM only) — PASS (2026-10-03)
Image `b9/b9l/lk2nd-b9l-st7735s.img` **775986e2** = lk2nd 23.1 + `b9/b9l/lk2nd-23.1-aurora-b9l.patch`, without FORCE_FASTBOOT
(`BUILD-B9L.md`). Nothing was written: aboot, boot, cache and eMMC are untouched (mmcblk0 write fields = 0); cache is still B9C b9ce13c9.
## Chain actually used (run `l1x`)
power (RESET) → lk1st fastboot → [B9L-0 left the board in lk2nd 23.1 fastboot] → `fastboot boot` B9L image from lk2nd 23.1
→ B9L lk2nd: ST7735S init → extlinux `b9c` from the eMMC cache → Linux B9C.
This is one extra RAM stage compared with the planned "directly from lk1st" run. The operator asked to boot from the
fastboot that was already running; the panel code path is identical. A direct-from-lk1st repeat is optional (`b9l-ram.sh 1 ram`).
## LK log (`l1x/uart-full.log`)
```
[70] [B9L +0 ms] before: L6 st=82 en=80 L17 st=82 en=80 vset=58 MPP4 mode=00 en=00 sink=00
[80] [B9L +10 ms] before: TLMM 12..15/116/118 cfg=1 (reset default) QUP4 spi CBCR=80000000 (off)
[210] [B9L +140 ms] reset done (GPIO118 high) (1 → 1 ms → 0 → 1 ms → 1 → 120 ms)
[220] B9L: gcc_blsp1_qup4_spi_apps_clk enabled at 16000000 Hz
[230] [B9L +160 ms] after QUP init: TLMM 12/13/15=344 (func1 12 mA) 14=204 (func1 2 mA) 116/118=2c0 out high; CBCR=00000001 RCGR cfg=00002113
[360] [B9L +290 ms] 19 init commands sent, 0 failures; SPI_IO_CONTROL=401 SPI_CONFIG=0 (== stock LK)
[400] [B9L +330 ms] frame 128x128 RGB565 (32768 bytes) sent ret=0
[430] [B9L +360 ms] after backlight: L6 st=82 en=80 L17 st=82 en=80 MPP4 mode=61 en=80 sink=07 (== stock LK)
[450] [B9L +380 ms] ST7735S bring-up end - continuing lk2nd boot
[710] Trying to boot 'b9c' → [1580] booting linux @ 0x80000000
```
**Power question answered:** at LK time **L17 is ON** (STATUS 0x82, EN 0x80) and L6 is ON. They are left on by SBL1/RPM, as the CAF comment says
("enabled in SBL"). No RPM/L17 workaround is needed in LK. The L17-OFF reading of B9A was taken in running Linux without a
panel consumer, so L17 is switched off somewhere between LK and that point (not investigated; irrelevant now because Linux holds L17).
## Linux takeover (UART kernel time)
| t | event |
|---|---|
| 0.72 s | spi_qup 78b8000.spi |
| 1.07 s | `l17: Bringing 0uV into 2850000-2850000uV` (regulator taken by the panel) |
| 1.11 s | clk: disabling unused clocks |
| 1.42 s | `[drm] Initialized panel-mipi-dbi` |
| 1.78 s | `Console: switching to colour frame buffer device 21x16` (fbcon modeset = panel reset + re-init) |
| 7.35 s | aurora-display: backlight on → DISPLAY READY (no unblank needed) |
Then: START OK 73.0 s, AP ENABLED 77.1 s, MPSS + WCNSS running, ping 4/4, display errors 0, eMMC w=0.
## Operator (visual)
1. The test frame with backlight appeared **before Linux**.
2. Colours, orientation and border are correct (same chart as the Linux B9B test).
3. It stayed "about a second or a bit more", then the screen was dark "for about a second", then the Linux console.
The dark gap is the Linux-side handoff: the panel is re-initialised at the fbcon takeover, and MPP4 is set to off by the
gpio-backlight pinctrl state until aurora-display switches it on. The exact moment of the backlight-off was not logged.
The observed gap was shorter than the ~6 s estimate.
## Verdict
PASS: image before Linux, held until the Linux takeover, Linux DRM/fbcon normal, LTE/Wi-Fi/B9C unaffected, no writes.
lk1st is NOT reflashed (needs a separate GO). Optional improvement for later: keep the backlight on across the handoff on the Linux side.
## Formal run `ram1` (2026-10-03 22:16 UTC): directly from lk1st — PASS → B9L-RAM CLOSED
- Image `lk2nd-b9l-swag.img` **e6849a2b**: the same panel code as 775986e2, frame = operator splash `splash/swag.png`
(RGB565 via `splash/mk-splash.py`, blob 87955300). Driver `b9l-ram.sh 1 ram` with a gate: `fastboot boot` only when product == lk1st-msm8916.
- Chain: RESET power-on → `product=lk1st-msm8916` → `fastboot boot` → B9L lk2nd (UART: exactly 2× "welcome to lk") → `Trying to boot 'b9c'` → Linux.
Class A (RTC 5 s).
- LK: L6/L17 st=82 en=80; 16 MHz; `SPI_IO_CONTROL=401 SPI_CONFIG=0`; 19 commands, 0 failures; `frame source: splash image`, sent ret=0;
MPP4 61/80/07; bring-up 380 ms.
- Operator: splash visible before Linux.
- Linux: DRM 1.41 s, fbcon 21x16 1.74 s, DISPLAY READY 8.08 s (no unblank), display errors 0; START OK 75.6 s, AP ENABLED 79.7 s,
SNTP OK, MPSS+WCNSS running, ping 4/4, eMMC w=0.
Nothing was flashed. Reflashing lk1st with this code needs a separate GO.