- 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/.
83 lines
5.5 KiB
Markdown
83 lines
5.5 KiB
Markdown
# 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.
|