21 Commits
Author SHA1 Message Date
vhaudiquet 055563bd92 krane: restore CONFIG_USB dropped by the R35 defconfig edit; rotate 270
The R35 rotation edit used PUT 77.=77 against a stale line number and
overwrote CONFIG_USB=y with a duplicate VIDEO block, leaving the USB
menuconfig unset: no USB controller, no usb command, no keyboard.
Restore CONFIG_USB=y (deduplicate VIDEO) and verify the full USB set
in .config after the defconfig re-run.

Also flip the console rotation from 1 (90 degrees clockwise) to 3
(270 degrees clockwise): rot=1 read upside down on the device with
the keyboard attached.
2026-08-30 20:46:36 +02:00
vhaudiquet 69787732b4 krane: rotate the console 90 degrees clockwise for landscape use
The BOE TV101WUM-NL6 panel is mounted rotated 270 degrees in the
krane chassis (rotation property on the panel node in the upstream
DT). With the keyboard attached the tablet is used in landscape, so
set video rot=1 and enable CONFIG_CONSOLE_ROTATION: the uclass then
binds the rotated vidconsole1 driver, which writes glyphs rotated by
90 degrees clockwise into the native 1200x1920 portrait scanout and
uses the swapped console geometry (240 columns x 75 rows).

The framebuffer geometry and the depthcharge scanout path are
unchanged; only the console text placement rotates.
2026-08-30 20:07:22 +02:00
vhaudiquet 75fe5bc9de krane: bind the mtu3 SSUSB container so its xhci child is scanned
DM scans only the immediate subnodes of a bound node; recursion into
children happens when a bound bus driver runs dm_scan_fdt_dev. Nothing
in U-Boot binds the "mediatek,mtu3" ssusb@11201000 node, so its xhci
child (usb@11200000) was never bound, no UCLASS_USB device existed and
usb start() reported "No USB controllers found".

Add "simple-mfd" to the ssusb compatible in the -u-boot.dtsi overlay
so the generic simple-bus driver binds the node and scans its children.
2026-08-30 19:46:21 +02:00
vhaudiquet 9aca824a0a krane: enable USB xHCI, T-PHY and USB keyboard for the pogo keyboard
The pogo keyboard is a USB HID device behind the GL610 hub on
usb@11200000. Enable the USB stack (USB, DM_USB, USB_XHCI_HCD,
USB_XHCI_MTK, USB_STORAGE, CMD_USB), the MTK T-PHY (PHY_MTK_TPHY),
USB_KEYBOARD and CONFIG_USE_PREBOOT (preboot defaults to "usb start"
with USB_KEYBOARD) so the bus is enumerated before the prompt.

The upstream mt8183.dtsi models the SSUSB block for the Linux mtu3
dual-role driver: the IPPC register space and the phys live on the
parent mtu3 node while the xhci child has only its "mac" register.
U-Boot binds the "mediatek,mtk-xhci" child directly and expects
mac+ippc and a phys list on that node, so add a board
-u-boot.dtsi overlay (auto-included after the upstream dts) that
supplies them. No upstream DT files are modified.

stdin=serial,usbkbd routes the prompt through the USB keyboard once
the usb_kbd stdio device is registered.
2026-08-30 19:29:35 +02:00
vhaudiquet 709cff2d80 krane: override get_page_table_size for dynamic scanout mappings 2026-08-30 18:00:02 +02:00
vhaudiquet 8cda58518b WIP (temporary): framebuffer text logger and abort dump for bring-up 2026-08-30 17:50:00 +02:00
vhaudiquet 0de89a3ebc WIP (temporary): probe step checkpoints in scanout driver 2026-08-30 17:37:24 +02:00
vhaudiquet bd46ab0095 WIP (temporary): PANIC_HANG for bring-up abort visibility 2026-08-30 17:20:30 +02:00
vhaudiquet 20a21b5c9b WIP (temporary): board_late_init pink band checkpoint 2026-08-30 17:00:22 +02:00
vhaudiquet b5de7c4a97 WIP (temporary): main_loop entry band; disable WDT autostart for bring-up 2026-08-30 16:42:07 +02:00
vhaudiquet 5e3516ce64 krane: default env routes stdout through vidconsole; env nowhere for payload stage 2026-08-30 16:28:28 +02:00
vhaudiquet e66ab84fa7 WIP (temporary): bind/probe checkpoints in scanout driver and video uclass 2026-08-30 16:10:36 +02:00
vhaudiquet 21c66cf72e krane: CONFIG_TEXT_BASE=0x4C001000 (8-aligned, keeps _start at image base) 2026-08-30 15:46:49 +02:00
vhaudiquet a85281a550 WIP (temporary): green band at board_init_f entry for bring-up 2026-08-30 15:26:47 +02:00
vhaudiquet 46283a7722 WIP (temporary): cyan band after video_clear in video_post_probe 2026-08-30 14:47:16 +02:00
vhaudiquet 1fb1f5f95e WIP (temporary): post-clear white-band checkpoint in video_post_probe 2026-08-30 13:26:41 +02:00
vhaudiquet 08305fd8a0 WIP (temporary): add misc_init_r checkpoint band + backlight re-assert 2026-08-30 11:18:57 +02:00
vhaudiquet e00e4f172b WIP (temporary): krane bring-up init checkpoints painting scanout bands
Diagnostic only, to be reverted before upstreaming: board_early_init_f
(orange), dram_init_banksize (blue), board_early_init_r (red) paint
bands into the depthcharge scanout to localize the early crash.
2026-08-30 10:04:48 +02:00
vhaudiquet f0470c9be5 video: add MT8183 scanout driver for firmware-initialized displays
Add a display driver for the MT8183 kukui family of ChromeOS devices
(e.g. the Lenovo IdeaPad Duet, google,krane), where the display
pipeline is already initialized and running when the payload is
handed off by depthcharge. depthcharge's display_cleanup() stops the
overlay engines and turns the backlight off before the jump, so the
driver only revives the pipeline: it re-enables the OVL0 engines
(OVL_EN @ +0x000c and OVL0_2L_EN @ +0x100c, offsets from depthcharge's
device-era mtk_ddp.c), drives the backlight GPIOs high (DISP_PWM,
pin 43, and EN_LCD_BL, pin 176, through the GPIO controller dout block
at 0x10005000+0x100), and renders the console into the live scanout
surface.

The geometry comes from the coreboot table framebuffer record, which
sits at the fixed kukui address 0xffed9000; when its physical_address
is 0 (what upstream coreboot 4.14 publishes on kukui), the live
scanout address is taken from the OVL layer 0 address register
(+0x0f40), which the firmware leaves in place across the handoff.

The driver binds to the existing ovl0 device tree node
(mediatek,mt8183-disp-ovl) and requires no display initialization.
2026-08-30 01:27:34 +02:00
vhaudiquet 923cc75439 scripts: Makefile.lib: prefer upstream DT includes with OF_UPSTREAM
Device trees imported from Linux (dts/upstream) include their
dt-bindings headers from dts/upstream/include, but the dtc preprocessor
search order places U-Boot's legacy in-tree include/ first. When a SoC
has both a legacy dt-bindings header (used by non-upstream in-tree
device trees) and an upstream one, the legacy copy shadows the upstream
one and silently misresolves the clock/reset/power macros whose
numbering changed between generations.

Prefer dts/upstream/include when building with CONFIG_OF_UPSTREAM. The
upstream imported device trees are written against the upstream
bindings, and no current OF_UPSTREAM user builds legacy in-tree device
trees.
2026-08-30 01:27:34 +02:00
vhaudiquet 29aec558d7 arm: mediatek: add MT8183 kukui krane board support
Add support for the Lenovo IdeaPad Duet (google,krane sku176), an
MT8183 ChromeOS tablet from the kukui family. The board boots through
coreboot + depthcharge, which load U-Boot as an arm64 Image at an
arbitrary 2 MiB-aligned DRAM slot; keep CONFIG_POSITION_INDEPENDENT
like the pumpkin target.

The board shares the pumpkin's board file, renamed to mt8183.c since it
is generic for the SoC. The defconfig uses the upstream devicetree from
dts/upstream (CONFIG_OF_UPSTREAM) and drops the pumpkin-specific USB
gadget/fastboot support for now.
2026-08-30 01:27:18 +02:00