From f95443e4c817e41b507897d628e00085cd4444bd Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Thu, 4 Jul 2019 14:09:42 +0800 Subject: [PATCH] drm/panel: panel-simple: Don't init gpio value at probe When enable display on loader, init gpio would change gpio status, that would make screen flash. Change-Id: I4b69a8d3d83c5bef09014c2134abaee6522a7046 Signed-off-by: Mark Yao Signed-off-by: Sandy Huang Signed-off-by: Guochun Huang --- drivers/gpu/drm/panel/panel-simple.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 1c685dd72016..4a45e959c668 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -445,8 +445,8 @@ static int panel_simple_unprepare(struct drm_panel *panel) if (p->dsi) panel_simple_xfer_dsi_cmd_seq(p, p->desc->exit_seq); - gpiod_set_value_cansleep(p->reset_gpio, 1); - gpiod_set_value_cansleep(p->enable_gpio, 0); + gpiod_direction_output(p->reset_gpio, 1); + gpiod_direction_output(p->enable_gpio, 0); panel_simple_regulator_disable(p); @@ -499,17 +499,17 @@ static int panel_simple_prepare(struct drm_panel *panel) return err; } - gpiod_set_value_cansleep(p->enable_gpio, 1); + gpiod_direction_output(p->enable_gpio, 1); if (p->desc->delay.reset) msleep(p->desc->delay.prepare); - gpiod_set_value_cansleep(p->reset_gpio, 1); + gpiod_direction_output(p->reset_gpio, 1); if (p->desc->delay.reset) msleep(p->desc->delay.reset); - gpiod_set_value_cansleep(p->reset_gpio, 0); + gpiod_direction_output(p->reset_gpio, 0); delay = p->desc->delay.prepare; if (p->no_hpd) @@ -739,8 +739,7 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) if (IS_ERR(panel->supply)) return PTR_ERR(panel->supply); - panel->enable_gpio = devm_gpiod_get_optional(dev, "enable", - GPIOD_OUT_LOW); + panel->enable_gpio = devm_gpiod_get_optional(dev, "enable", GPIOD_ASIS); if (IS_ERR(panel->enable_gpio)) { err = PTR_ERR(panel->enable_gpio); if (err != -EPROBE_DEFER)