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

83 lines
5.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.

# 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.