Files
krane-fb-stub/uboot-wrapper.S
T
vhaudiquet 2dceb2c8a4 Round 37: stub-free entry shim; U-BOOT.md handoff doc; payload cc014efa
The diagnostic wrapper phase (magenta fill, 3-blink train, 5 s hold)
is removed; the shim keeps only the load-bearing display revival
(OVL_EN, OVL0_2L_EN, backlight GPIOs) and the patched branch to
U-Boot. U-BOOT.md documents the boot chain, payload layout constants,
build/flash/verify commands, recovery and the U-Boot tree state.
U-Boot was rebuilt with the user's hand-tuned .config (16x32 font,
CONFIG_CHROMEOS) without re-running the defconfig.
2026-08-30 21:12:03 +02:00

47 lines
1.6 KiB
ArmAsm

/*
* krane payload entry shim runs at 0x40000040 right after the
* depthcharge handoff (MMU off, caches off; position-independent:
* immediate-encoded addresses only).
*
* depthcharge's display_cleanup() stops the overlay engines and drops
* the backlight before jumping to the payload; this shim undoes those
* writes so the screen stays alive until U-Boot's scanout driver
* probes (the driver repeats the revival itself). The shim cannot be
* removed: depthcharge jumps to payload+0x40, while U-Boot's PIE
* fixup needs its runtime _start 4K-aligned so U-Boot sits at image
* offset 0x1000 and this shim branches there (branch imm26 patched at
* build time by build-uboot-payload.sh).
*
* Register sources (all verified on device, RESEARCH.md rounds 4/10):
* OVL0 base 0x14008000: OVL_EN @ +0x000c, OVL0_2L_EN @ +0x100c
* (device-era depthcharge mtk_ddp.c offsets).
* GPIO controller 0x10005000, dout block +0x100, 16 B per 32-pin
* group, set @ +4 (mt8183.h GpioRegs):
* DISP_PWM = pin 43 (bit 11, set 0x10005114),
* EN_LCD_BL = pin 176 (bit 16, set 0x10005154).
*/
.text
.globl _start
_start:
/* OVL_EN = 1 */
mov w2, #1
mov w3, #0x800c
movk w3, #0x1400, lsl #16
str w2, [x3]
/* OVL0_2L_EN = 1 */
mov w3, #0x900c
movk w3, #0x1400, lsl #16
str w2, [x3]
/* backlight on: pin 43 (DISP_PWM), dout set 0x10005114, bit 11 */
mov w2, #0x800
mov w3, #0x5114
movk w3, #0x1000, lsl #16
str w2, [x3]
/* backlight on: pin 176 (EN_LCD_BL), dout set 0x10005154, bit 16 */
mov w2, #0x10000
mov w3, #0x5154
movk w3, #0x1000, lsl #16
str w2, [x3]
1: b . /* PATCHED: branch to U-Boot entry */