From cd26d5970cac4750343ae69ee4b68a7207716030 Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Wed, 20 Sep 2023 17:00:43 +0800 Subject: [PATCH] drm/panel: simple: Replace msleep() with usleep_range() On rk3588-evb1-lp4-v10: Before: [ 266.604393][ T1971] PM: suspend exit [ 266.792421][ T410] dw-mipi-dsi2 fde20000.dsi: [drm:dw_mipi_dsi2_encoder_atomic_enable] final DSI-Link bandwidth: 880000 x 4 Kbps total: 0.188028 After: [ 153.394800][ T1972] PM: suspend exit [ 153.559644][ T409] dw-mipi-dsi2 fde20000.dsi: [drm:dw_mipi_dsi2_encoder_atomic_enable] final DSI-Link bandwidth: 880000 x 4 Kbps total: 0.164844, save about 0.023s Signed-off-by: Tao Huang Change-Id: Ifa5c73732478ee253fd81b7e4fd545a4d4b35ba8 --- drivers/gpu/drm/panel/panel-simple.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 857ab1af3a14..5d8a58bb5603 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -277,7 +277,7 @@ static int panel_simple_xfer_dsi_cmd_seq(struct panel_simple *panel, dev_err(dev, "failed to write dcs cmd: %d\n", err); if (cmd->header.delay) - msleep(cmd->header.delay); + usleep_range(cmd->header.delay * 1000, cmd->header.delay * 1000 + 100); } return 0; @@ -300,7 +300,7 @@ static int panel_simple_xfer_spi_cmd_seq(struct panel_simple *panel, struct pane return ret; if (cmd->header.delay) - usleep_range(cmd->header.delay * 1000, (cmd->header.delay + 1) * 1000); + usleep_range(cmd->header.delay * 1000, cmd->header.delay * 1000 + 100); } return 0; @@ -478,7 +478,7 @@ static int panel_simple_disable(struct drm_panel *panel) return 0; if (p->desc->delay.disable) - msleep(p->desc->delay.disable); + usleep_range(p->desc->delay.disable * 1000, p->desc->delay.disable * 1000 + 100); p->enabled = false; @@ -510,7 +510,7 @@ static int panel_simple_unprepare(struct drm_panel *panel) panel_simple_regulator_disable(p); if (p->desc->delay.unprepare) - msleep(p->desc->delay.unprepare); + usleep_range(p->desc->delay.unprepare * 1000, p->desc->delay.unprepare * 1000 + 100); p->prepared = false; @@ -564,7 +564,7 @@ static int panel_simple_prepare(struct drm_panel *panel) if (p->no_hpd) delay += p->desc->delay.hpd_absent_delay; if (delay) - msleep(delay); + usleep_range(delay * 1000, delay * 1000 + 100); if (p->hpd_gpio) { if (IS_ERR(p->hpd_gpio)) { @@ -589,12 +589,12 @@ static int panel_simple_prepare(struct drm_panel *panel) gpiod_direction_output(p->reset_gpio, 1); if (p->desc->delay.reset) - msleep(p->desc->delay.reset); + usleep_range(p->desc->delay.reset * 1000, p->desc->delay.reset * 1000 + 100); gpiod_direction_output(p->reset_gpio, 0); if (p->desc->delay.init) - msleep(p->desc->delay.init); + usleep_range(p->desc->delay.init * 1000, p->desc->delay.init * 1000 + 100); if (p->desc->init_seq) { if (p->desc->cmd_type == CMD_TYPE_SPI) { @@ -621,7 +621,7 @@ static int panel_simple_enable(struct drm_panel *panel) return 0; if (p->desc->delay.enable) - msleep(p->desc->delay.enable); + usleep_range(p->desc->delay.enable * 1000, p->desc->delay.enable * 1000 + 100); p->enabled = true;