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