[PATCH 1/4] video: dw_mipi_dsi: disable the panel before powering down the host
Ahmad Fatoum
a.fatoum at barebox.org
Sun Nov 8 02:10:51 PST 2026
VPL_DISABLE powered down the DSI host first and only then passed the
ioctl on to the panel. The DCS commands the panel sends on disable,
e.g. display off and sleep in for the OTM8009A, thus went into a host
held in reset and never reached the panel.
Linux disables the panel before the host's post_disable, so let's do
the same and forward VPL_DISABLE to the panel first.
Fixes: 11331c15e5bd ("video: add Designware MIPI-DSI support")
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
drivers/video/dw_mipi_dsi.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/video/dw_mipi_dsi.c b/drivers/video/dw_mipi_dsi.c
index bf95b1b9f6ff..b6a53844edec 100644
--- a/drivers/video/dw_mipi_dsi.c
+++ b/drivers/video/dw_mipi_dsi.c
@@ -906,6 +906,7 @@ static int dw_mipi_dsi_ioctl(struct vpl *vpl, unsigned int port,
{
struct dw_mipi_dsi *dsi = container_of(vpl, struct dw_mipi_dsi, vpl);
struct drm_display_mode mode = {};
+ int ret;
switch (cmd) {
case VPL_ENABLE:
@@ -913,8 +914,10 @@ static int dw_mipi_dsi_ioctl(struct vpl *vpl, unsigned int port,
dw_mipi_dsi_set_mode(dsi, MIPI_DSI_MODE_VIDEO);
break;
case VPL_DISABLE:
+ /* The panel may still need the link to send its disable commands */
+ ret = vpl_bridge_ioctl(dsi->panel_bridge, cmd, data);
dw_mipi_dsi_bridge_post_atomic_disable(dsi);
- break;
+ return ret;
case VPL_PREPARE:
/*
* We store this to simplify debugging by allowing:
--
2.47.3
More information about the barebox
mailing list