Identity
| Part | Synopsys DesignWare MIPI DSI host (RK3399 instance) |
| Role | DSI host controller — drives the 720x1440 IPS panel over a 4-lane MIPI DSI link |
| Bus / address | MMIO 0xff960000 (SoC-internal) |
| GPIO / IRQ | Internal SoC interrupt; PHY clocks via CRU |
| Datasheet | RK3399 TRM |
| Pine64 wiki | PinePhone Pro hardware |
| Schematic | sheet 4 (display block) |
Status — ● working
The DSI host attaches, the internal MIPI DPHY locks, and the HX8394 panel
receives its full vendor init sequence on every boot. 720x1440 @ 60 Hz is
driven into the VOP framebuffer through rk_drm and lights up the panel
in both EFI-framebuffer (loader) and DRM/KMS (kernel) phases. No known
display glitches that originate in the DSI layer; the open issues live
upstream in rk_vop (modeset-lock wedge — see the cross-driver audit).
Driver
- Our tree:
src/sys/dev/drm/bridges/dw_mipi_dsi/dw_mipi_dsi.c— Synopsys DW MIPI DSI core (library, programs the DW register block, implementsmipi_dsi_host_ops.transfer). - Our tree:
src/sys/dev/drm/bridges/dw_mipi_dsi/rk_dw_mipi_dsi.c— Rockchip platform glue. Programs the GRF for DSI mux, configures the internal DPHY, attaches to the DRM subsystem. - Linux mainline:
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c(core) - Linux mainline:
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c(RK glue)
The split between the Synopsys core and the Rockchip platform driver
mirrors the Linux layout. The core file is a library that any platform
glue can drive; the platform driver owns the MMIO resource, clocks, GRF
mux registers, and DRM bridge registration. Our tree adds an INTERFACE dw_mipi_dsi_if.m so the core can call back into the platform driver
for PHY power-on/lock, similar to Linux’s phy_ops callbacks.
The DSI host writes panel commands through the LPCMD path and a 200-byte generic FIFO; the HX8394’s full init runs cleanly through this layer without retries.
Open work
- The shared-IRQ ack races and missing
wait_for_vblanksdocumented in the cross-driver audit live inrk_vop, not here, but they surface on the same display path and are the next piece of work. - HDMI alternate output via the DW-HDMI sibling block has never been exercised — see
component-dw-hdmi. - No power-saving / blanking entry yet — the panel stays on whenever the kernel is running.
Related
- Display from black — the bring-up arc that landed this driver.
- Component: HX8394 panel
- Component: PWM backlight
- Hardware reference — display block summary table.