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 <mark.yao@rock-chips.com>
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Signed-off-by: Guochun Huang <hero.huang@rock-chips.com>
This commit is contained in:
Sandy Huang
2019-07-04 14:09:42 +08:00
committed by Tao Huang
parent 392cd16600
commit f95443e4c8

View File

@@ -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)