- 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/.
49 lines
4.5 KiB
Markdown
49 lines
4.5 KiB
Markdown
# B9C-RESULT — persistent display stack (ST7735S, fbcon tty1, MPP4 backlight) — PASS (2026-10-03)
|
||
|
||
**The eMMC cache is now B9C `b9ce13c9`** (B9C_WRITE_VERIFIED). It replaces B8F `857c9c30`; the B8F image is kept as backup/rollback.
|
||
|
||
## What B9C adds on top of B8F
|
||
| part | change |
|
||
|---|---|
|
||
| kernel | b9c 3afc6c77 = b8d + DRM + DRM_PANEL_MIPI_DBI + DRM_FBDEV_EMULATION + FRAMEBUFFER_CONSOLE + FONTS with FONT_6x8 only (`linux/aurora-b9b.config`, `linux/aurora-b9c.config`) |
|
||
| DTB | B9B 7ca9cc79: spi@78b8000 (native CS0, stock pinctrl), panel `jz08au,aurora-st7735s` + `panel-mipi-dbi-spi` (16 MHz, mode 3, write-only, D/C 116, RESET 118, power L17 2.85 V, io L6 1.8 V, r5g6b5, 128x128, back porches 2/3), L17 constraints, MPP4 sink (drive-strength 7) + gpio-backlight |
|
||
| firmware | `/lib/firmware/jz08au,aurora-st7735s.bin` 58697d4d = the stock LK/dtb_01 init sequence (18 commands + the 120 ms SLPOUT delay; RAMWR left to the driver) |
|
||
| initramfs | B8F abb3bd67 + overlay: /init (+5 lines: `hostname aurora`, `/etc/init.d/aurora-display start`, getty loop on tty1), `/usr/sbin/aurora-display`, `/etc/init.d/aurora-display` |
|
||
| cmdline | `earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0`. `console=tty0` is placed before the UART console so that `/dev/console` (and the cttyhack UART shell) stays on ttyMSM0. |
|
||
|
||
aurora-display: waits for fb0 → if fbcon's takeover already enabled the pipe (connector enabled/On + L17 used) it does **no** unblank (no double init);
|
||
otherwise it does one fbdev unblank → backlight on through the gpio-backlight sysfs (never raw PMIC writes) → `=== DISPLAY READY`.
|
||
In every run the fbcon takeover enabled the pipe by itself.
|
||
|
||
## Path
|
||
- B9B (RAM): first light via panel-mipi-dbi, colours/orientation/offsets confirmed (logs/b9/b9b).
|
||
- B9C RAM pretest `aurora-b9c.img` fa855e1c (ram1, class A): fbcon 21x16, DISPLAY READY 8.0 s, getty tty1, UART shell, LTE/Wi-Fi OK; operator: text readable,
|
||
orientation right, nothing clipped, backlight OFF→ON. The login prompt scrolls away under the later kernel messages (ignore_loglevel) — accepted (option A).
|
||
- Cache candidate `b9/b9c/cache/cache-extlinux-b9c.img` b9ce13c9 (B8F mkfs recipe, bit-identical rebuild, e2fsck clean).
|
||
lk2nd emulator: S6 regression == B8F; S7 "Trying to boot 'b9c'", kernel end DDR+0x1820000 < tags +0x20a9000 < ramdisk +0x22a9000; F1/F3/F10 → emmc1 fallback.
|
||
- Write (HW EDL, `B9C-write.sh`): live cache == B8F 857c9c30 (pre-cache.bin = backup) → write → CACHE_MATCH → all other partitions == A3/A4pre → **B9C_WRITE_VERIFIED** (logs/b9/b9c/W).
|
||
|
||
## Cold boots (normal power-on, no RESET, no fastboot, no UART input, no manual commands)
|
||
| run | class | display | console/getty | LTE / Wi-Fi | time | other |
|
||
|---|---|---|---|---|---|---|
|
||
| cold1 | **A** (RTC 3 s) | fbcon 21x16 1.77 s, DISPLAY READY 7.8 s, no unblank, errors 0 | console tty0+ttyMSM0, getty tty1, hostname aurora, UART shell on ttyMSM0 | START OK 76.4 s, AP ENABLED 80.6 s, ping 4/4 | DMS/NITZ VALID, SNTP +0.55 s | MPSS+WCNSS running, crash 0, eMMC w=0; **backlight ON→OFF→ON confirmed visually** (sysfs) |
|
||
| cold2-classB | **B** (RTC 585 s, ~12 s off) | same, DISPLAY READY 7.8 s, errors 0 | same | START OK 73.8 s, AP ENABLED 78.6 s, ping 4/4 | VALID, SNTP +0.46 s | crash 0, w=0 — **counted by operator decision (relaxed criterion)** |
|
||
| cold3 | **A** (RTC 3 s) | fbcon 1.78 s, DISPLAY READY 7.35 s, errors 0 | same | START OK 76.3 s, AP ENABLED 80.2 s, ping 4/4 | VALID, SNTP +0.09 s | crash 0, w=0 |
|
||
|
||
Not counted:
|
||
- `cold1-invalid`: the battery dropped out at ~27 s; the second start was class B and the modem controller rolled back because the USB host was not reachable;
|
||
the display part was OK.
|
||
- `cold1-aborted`: the driver was stopped before power-on, while B9L was run in between.
|
||
|
||
**Deviation:** the B9C criterion was "3/3 class A"; the result is 2× class A + 1× class B, accepted explicitly by the operator.
|
||
|
||
## Rollback
|
||
`b9/b9c/cache/B9C-rollback.sh` (HW EDL) → B8F 857c9c30. Deeper: B8F-rollback.sh → B7C 14fe453a.
|
||
|
||
## Not in scope / open
|
||
- Screen content is a live kernel console. A real UI comes in a later stage.
|
||
- No backlight dimming (MPP4 sink is on/off at 40 mA).
|
||
- About 1 s of dark screen between the bootloader and Linux. The display before Linux needs the B9L lk2nd port; B9L-RAM PASS (logs/b9/lk, logs/b9/b9l); flashing lk1st needs a separate GO.
|
||
- The device-tree model string still says "RAM boot B9B" (cosmetic, inherited from the B9B DTS).
|
||
|
||
**B9 CLOSED.**
|