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

4.5 KiB
Raw Blame History

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.