- 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/.
5.5 KiB
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/15blsp_spi412 mA, GPIO14blsp_spi42 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-gpiostlmm 116,reset-gpiostlmm 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-timing128×128 withhback-porch 2/vback-porch 3(the GRAM offset).
- compatible
- Backlight:
gpio-backlightonpm8916_mpps 4, pinctrlfunction "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)
-
fastboot boot: OK, rc=0. NCM up 11 s later.
-
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 0at 1.43 s.panel-mipi-dbi-spi spi0.0: [drm] fb0: panel-mipi-dbid frame buffer device.- No display-related errors.
-
Devices:
/dev/dri/card0,/sys/class/drm/card0-SPI-1,/dev/fb0. fb0 is 16 bpp, 128×128, stride 256;/sys/class/backlight/backlightexists. -
Regulators:
- After boot: L17/L6 opened by
spi0.0-power/spi0.0-iobut 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.
- After boot: L17/L6 opened by
-
Frame:
b9b-test.sh show geowrote the RGB565 frame into/dev/fb0. -
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 off60 80 07 00 bl onagain61 80 07 00 On = exactly the stock LK values (0x61 / 0x07 / 0x80: current sink, 40 mA, enabled). Off/on control works through the driver.
-
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. -
LTE/Wi-Fi: START OK in 62.3 s;
ping -I wwan0 77.88.8.85/5; APaurora-b8fch6 ENABLED in 66 s; MPSS and WCNSS remoteproc running. Same boot-time-only messages as B8F (earlywcnss.mdt-2 before /firmware is mounted, noregulatory.db). -
eMMC:
/sys/block/mmcblk0/statwrite 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.