It's better to use gpiod_set_value_cansleep because the panel can be connected via i2c/spi expander or similar external devices
for reference see Documentation/driver-api/gpio/consumer.rst Signed-off-by: Vladimir Yakovlev <[email protected]> --- drivers/gpu/drm/panel/panel-himax-hx83102.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-himax-hx83102.c b/drivers/gpu/drm/panel/panel-himax-hx83102.c index 602f1adfc8ee..f31e502f71a3 100644 --- a/drivers/gpu/drm/panel/panel-himax-hx83102.c +++ b/drivers/gpu/drm/panel/panel-himax-hx83102.c @@ -1049,7 +1049,7 @@ static int hx83102_unprepare(struct drm_panel *panel) { struct hx83102 *ctx = panel_to_hx83102(panel); - gpiod_set_value(ctx->enable_gpio, 0); + gpiod_set_value_cansleep(ctx->enable_gpio, 0); usleep_range(1000, 2000); regulator_disable(ctx->avee); regulator_disable(ctx->avdd); @@ -1065,7 +1065,7 @@ static int hx83102_prepare(struct drm_panel *panel) struct mipi_dsi_device *dsi = ctx->dsi; struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; - gpiod_set_value(ctx->enable_gpio, 0); + gpiod_set_value_cansleep(ctx->enable_gpio, 0); usleep_range(1000, 1500); dsi_ctx.accum_err = regulator_enable(ctx->pp1800); @@ -1089,11 +1089,11 @@ static int hx83102_prepare(struct drm_panel *panel) usleep_range(1000, 2000); - gpiod_set_value(ctx->enable_gpio, 1); + gpiod_set_value_cansleep(ctx->enable_gpio, 1); usleep_range(1000, 2000); - gpiod_set_value(ctx->enable_gpio, 0); + gpiod_set_value_cansleep(ctx->enable_gpio, 0); usleep_range(1000, 2000); - gpiod_set_value(ctx->enable_gpio, 1); + gpiod_set_value_cansleep(ctx->enable_gpio, 1); usleep_range(6000, 10000); dsi_ctx.accum_err = ctx->desc->init(ctx); @@ -1107,7 +1107,7 @@ static int hx83102_prepare(struct drm_panel *panel) return 0; poweroff: - gpiod_set_value(ctx->enable_gpio, 0); + gpiod_set_value_cansleep(ctx->enable_gpio, 0); regulator_disable(ctx->avee); poweroffavdd: regulator_disable(ctx->avdd); -- 2.34.1
