uzbek-plus/logs/b9/b9b/B9B-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

5.5 KiB
Raw Blame History

B9B-RESULT — first light: ST7735S through Linux DRM / MIPI-DBI (RAM-only)

Date: 2026-10-03. Result: PASS.

The image was RAM-booted with fastboot boot after a RESET-held power-on. Nothing was flashed. The eMMC cache is still B8F 857c9c30, and mmcblk0 writes = 0 for the whole boot.

Image

Component sha256 Notes
b9/b9b/out/aurora-b9b.img 46e7a682… boot.img v0, golden mm1 cmdline
kernel Image.gz afdddcef… 7.2.7-aurora-b9b #8. b8d plus DRM, DRM_PANEL_MIPI_DBI, DRM_FBDEV_EMULATION, FB_DEVICE, and the symbols they select. No fbcon, no MSM DRM (fragment linux/aurora-b9b.config). image_size 0x1820000, so the kernel ends at 0x81820000, below the DTB at 0x81e00000.
aurora-b9b.dtb 7ca9cc79… linux/dts/msm8916-jz08-aurora-b9b.dts = B8B plus the display nodes
jz08au,aurora-st7735s.bin 58697d4d… 121 B. The stock LK 19-command table, with an assert that it equals stock dtb_01; only the trailing RAMWR is dropped. Generated by b9/b9b/mk-panel-fw.py.
initramfs 8a97e93b… Exact B8F initramfs (abb3bd67) plus an overlay: firmware, test frames, b9b-test.sh

The out dir contains the B8F initramfs, which includes the Wi-Fi PSK, so b9/b9b/out must never be published. The logs were scanned for the PSK: none found.

DT (as used)

  • spi@78b8000 (BLSP1 QUP4): okay. Pinctrl as in stock: GPIO12/13/15 blsp_spi4 12 mA, GPIO14 blsp_spi4 2 mA (native CS0).
  • panel@0:
    • compatible jz08au,aurora-st7735s + panel-mipi-dbi-spi; spi-max-frequency 16000000; spi-cpol + spi-cpha (mode 3); write-only.
    • dc-gpios tlmm 116, reset-gpios tlmm 118; GPIOs configured as gpio, 8 mA, no bias (stock pmx_mdss).
    • power-supply = L17 2.85 V, io-supply = L6 1.8 V.
    • format "r5g6b5"; panel-timing 128×128 with hback-porch 2 / vback-porch 3 (the GRAM offset).
  • Backlight: gpio-backlight on pm8916_mpps 4, pinctrl function "sink", drive-strength 7, output-low. It is deliberately not linked to the panel (B9B step split), and is switched only through the kernel driver (sysfs).

Steps and evidence (logs ram1/: host-actions.txt, uart.log, state-boot.txt, steps.txt)

  1. fastboot boot: OK, rc=0. NCM up 11 s later.

  2. Probe:

    • spi_qup 78b8000.spi: IN:block:16, fifo:64… at 0.71 s.
    • l17: Bringing 0uV into 2850000-2850000uV.
    • [drm] Initialized panel-mipi-dbi 1.0.0 for spi0.0 on minor 0 at 1.43 s.
    • panel-mipi-dbi-spi spi0.0: [drm] fb0: panel-mipi-dbid frame buffer device.
    • No display-related errors.
  3. Devices: /dev/dri/card0, /sys/class/drm/card0-SPI-1, /dev/fb0. fb0 is 16 bpp, 128×128, stride 256; /sys/class/backlight/backlight exists.

  4. Regulators:

    • After boot: L17/L6 opened by spi0.0-power / spi0.0-io but with use=0, because without fbcon nothing had done a modeset yet. L17 was physically off (EN 0x00).
    • The modeset was triggered the normal way: echo 0 > /sys/class/graphics/fb0/blank (fbdev unblank → atomic commit → pipe enable). After that: L17 STATUS 0x82, EN 0x80, 2.85 V, L6 use 1, gcc_blsp1_qup4_spi_apps_clk = 16 000 000 Hz. GPIO118 high (out of reset), GPIO116 driven.
  5. Frame: b9b-test.sh show geo wrote the RGB565 frame into /dev/fb0.

  6. Backlight MPP4 (PMIC reads only; nothing written raw):

    State 0xa340 MODE 0xa346 EN 0xa34c SINK 0xa341/42/48/4a
    Before Linux (B9A, reset defaults) 00 00 00 00
    Probe (pinctrl "sink", off) 60 80 07 00 (unchanged)
    bl on (sysfs bl_power 0, brightness 1) 61 80 07 00
    bl off 60 80 07 00
    bl on again 61 80 07 00

    On = exactly the stock LK values (0x61 / 0x07 / 0x80: current sink, 40 mA, enabled). Off/on control works through the driver.

  7. Operator visual check (geo chart: white 1-px border, R/G/B/W corners, R|G|B bars, yellow arrow): image visible, arrow points up, colours correct, border complete on all 4 sides. So 128×128, offset X=2/Y=3, MADCTL c8 + RGB565 and orientation are all correct with no changes.

  8. LTE/Wi-Fi: START OK in 62.3 s; ping -I wwan0 77.88.8.8 5/5; AP aurora-b8f ch6 ENABLED in 66 s; MPSS and WCNSS remoteproc running. Same boot-time-only messages as B8F (early wcnss.mdt -2 before /firmware is mounted, no regulatory.db).

  9. eMMC: /sys/block/mmcblk0/stat write fields = 0 at 96 s and at 219 s.

Differences from stock LK (by design or inherent to the driver)

  • The mipi-dbi driver does its own hardware reset (low ≥20 µs, high, 120 ms) and sends SWRESET (0x01) before the firmware commands. Stock does high 1 ms → low 1 ms → high → 120 ms, with no SWRESET. The init commands, parameters and the 120 ms delay are otherwise identical.
  • Linux enables L17/L6 explicitly; stock LK switches no regulators.
  • Without fbcon, the fbdev client does not modeset by itself. Pipe enable needs an unblank, or a future DRM/fbdev user. This matters for B9C/persistent integration: the init script must unblank (or open DRM) at boot.

Open (not blocking)

  • With the backlight on, the panel is off/on via MPP4 only (no dimming; sink 5–40 mA is possible later via drive-strength or an LPG).
  • Backlight off was verified by register readback only; the operator visually confirmed "on".
  • Autostart (unblank + backlight), panel blanking and suspend are not done yet. Router stack: not touched.

STOP — B9B complete, waiting for the next GO.