[RFC PATCH 00/10] drm/mipi-dsi: another attempt at sorting out DSI link powerup

From: Dmitry Baryshkov
Date: Mon Oct 16 2023 - 12:56:53 EST


It is well known that DSI dosn't fully fit into the DRM enable/disable
model thanks to the intermediate LP-11 state: (roughly) the link is already
up, but the video stream is not yet enabled.

Previously we have handled this by forcing DSI link powerup in the
mode_set callback. This worked, but it was not an ideal solution. For
example, it didn't play well with the atomicity part.

Then Dave attempted to solve the issue by adding pre_enable_prev_first.
It also seemed to work fine, until we stumbled at the issue of the
driver being unable to negotiate whether the bridge/panel didn't enable
pre_enable_prev_first because it is not updated yet or because it
doesn't need the callbacks to be inverted.

This series is yet another attempt at solving the DSI link powerup
story. It adds two flags for the DSI evice. One of them should trigger
implicit link powerup at the atomic_pre_enable / atomic_post_disable
callbacks. Another one requests excplicit DSI link power control.

Dmitry Baryshkov (10):
Revert "drm/bridge: tc358762: Split register programming from
pre-enable to enable"
drm/mipi-dsi: document DSI hosts limitations
drm/mipi-dsi: add API for manual control over the DSI link power state
drm/msm/dsi: use dsi_mgr_bridge_power_off in
dsi_mgr_bridge_post_disable
drm/msm/dsi: implement manual power control
drm/bridge: tc358762: add support for manual DSI power control
drm/bridge: ps8640: require manual DSI power control
drm/bridge: lt9611: mark for automatic DSI power control
drm/bridge: lt9611uxc: implement automatic DSI power control
drm/msm/dsi: drop (again) the ps8640 workaround

drivers/gpu/drm/bridge/lontium-lt9611.c | 2 +-
drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 2 +-
drivers/gpu/drm/bridge/parade-ps8640.c | 14 ++++-
drivers/gpu/drm/bridge/tc358762.c | 24 +++++---
drivers/gpu/drm/drm_mipi_dsi.c | 31 ++++++++++
drivers/gpu/drm/msm/dsi/dsi.h | 4 ++
drivers/gpu/drm/msm/dsi/dsi_host.c | 44 ++++++++++++++
drivers/gpu/drm/msm/dsi/dsi_manager.c | 70 +++++++++++++---------
include/drm/drm_mipi_dsi.h | 33 ++++++++--
9 files changed, 180 insertions(+), 44 deletions(-)

--
2.42.0