From d0f521ef68319f16a01bfc6f99aba69d6c2853fe Mon Sep 17 00:00:00 2001 From: Guochun Huang Date: Wed, 3 Sep 2025 11:05:28 +0800 Subject: [PATCH] drm/rockchip: dsi: solve dsi failed to enter command mode before system sleeping dsi may failed to send command to panel before system sleeping: [ 95.191478][ T336] dw-mipi-dsi2 27d80000.dsi: failed to enter command mode [ 95.211617][ T336] dw-mipi-dsi2 27d80000.dsi: [drm:cri_fifos_wait_avail] *ERROR* command interface is busy [ 95.211744][ T336] panel-simple-dsi 27d80000.dsi.0: failed to write dcs cmd: -110 Change-Id: I24ea8bda3fc001145120c69e73bc786a1843a2a1 Signed-off-by: Guochun Huang --- drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c index f66bb94ad0cb..e26d7ddc8614 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c @@ -172,7 +172,7 @@ #define DSI2_INT_FORCE_CRI 0x0468 #define DSI2_MAX_REGISGER DSI2_INT_FORCE_CRI -#define MODE_STATUS_TIMEOUT_US 10000 +#define MODE_STATUS_TIMEOUT_US 20000 #define CMD_PKT_STATUS_TIMEOUT_US 20000 #define PSEC_PER_SEC 1000000000000LL @@ -435,7 +435,7 @@ static void dw_mipi_dsi2_set_vid_mode(struct dw_mipi_dsi2 *dsi2) regmap_write(dsi2->regmap, DSI2_MODE_CTRL, VIDEO_MODE); ret = regmap_read_poll_timeout(dsi2->regmap, DSI2_MODE_STATUS, - mode, mode & VIDEO_MODE, + mode, mode == VIDEO_MODE, 1000, MODE_STATUS_TIMEOUT_US); if (ret < 0) dev_err(dsi2->dev, "failed to enter video mode\n"); @@ -448,7 +448,7 @@ static void dw_mipi_dsi2_set_data_stream_mode(struct dw_mipi_dsi2 *dsi2) regmap_write(dsi2->regmap, DSI2_MODE_CTRL, DATA_STREAM_MODE); ret = regmap_read_poll_timeout(dsi2->regmap, DSI2_MODE_STATUS, - mode, mode & DATA_STREAM_MODE, + mode, mode == DATA_STREAM_MODE, 1000, MODE_STATUS_TIMEOUT_US); if (ret < 0) dev_err(dsi2->dev, "failed to enter data stream mode\n"); @@ -461,7 +461,7 @@ static void dw_mipi_dsi2_set_cmd_mode(struct dw_mipi_dsi2 *dsi2) regmap_write(dsi2->regmap, DSI2_MODE_CTRL, COMMAND_MODE); ret = regmap_read_poll_timeout(dsi2->regmap, DSI2_MODE_STATUS, - mode, mode & COMMAND_MODE, + mode, mode == COMMAND_MODE, 1000, MODE_STATUS_TIMEOUT_US); if (ret < 0) dev_err(dsi2->dev, "failed to enter command mode\n");