mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
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 <hero.huang@rock-chips.com>
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user