On Wed, Nov 06, 2019 at 04:17:52PM +0800, Jitao Shi wrote: > Seperate the panel power control from prepare/unprepare. > > Signed-off-by: Jitao Shi <jitao.shi@xxxxxxxxxxxx> Your patch series is all kinds of split up. Can you pls resend, with the entire thing all in one go? Thanks, Daniel > --- > .../gpu/drm/panel/panel-boe-tv101wum-nl6.c | 69 +++++++++++++------ > 1 file changed, 49 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c > index e2496a334ab6..5b1b285a2194 100644 > --- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c > +++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c > @@ -50,6 +50,7 @@ struct boe_panel { > struct regulator *avdd; > struct gpio_desc *enable_gpio; > > + bool prepared_power; > bool prepared; > bool enabled; > > @@ -501,12 +502,11 @@ static int boe_panel_disable(struct drm_panel *panel) > return 0; > } > > -static int boe_panel_unprepare(struct drm_panel *panel) > +static int boe_panel_unprepare_power(struct drm_panel *panel) > { > struct boe_panel *boe = to_boe_panel(panel); > - int ret; > > - if (!boe->prepared) > + if (!boe->prepared_power) > return 0; > > if (boe->desc->discharge_on_disable) { > @@ -518,12 +518,6 @@ static int boe_panel_unprepare(struct drm_panel *panel) > usleep_range(5000, 7000); > regulator_disable(boe->pp1800); > } else { > - ret = boe_panel_off(boe); > - if (ret < 0) { > - dev_err(panel->dev, "failed to set panel off: %d\n", > - ret); > - return ret; > - } > msleep(150); > gpiod_set_value(boe->enable_gpio, 0); > usleep_range(500, 1000); > @@ -533,17 +527,39 @@ static int boe_panel_unprepare(struct drm_panel *panel) > regulator_disable(boe->pp1800); > } > > + boe->prepared_power = false; > + > + return 0; > +} > + > +static int boe_panel_unprepare(struct drm_panel *panel) > +{ > + struct boe_panel *boe = to_boe_panel(panel); > + int ret; > + > + if (!boe->prepared) > + return 0; > + > + if (!boe->desc->discharge_on_disable) { > + ret = boe_panel_off(boe); > + if (ret < 0) { > + dev_err(panel->dev, "failed to set panel off: %d\n", > + ret); > + return ret; > + } > + } > + > boe->prepared = false; > > return 0; > } > > -static int boe_panel_prepare(struct drm_panel *panel) > +static int boe_panel_prepare_power(struct drm_panel *panel) > { > struct boe_panel *boe = to_boe_panel(panel); > int ret; > > - if (boe->prepared) > + if (boe->prepared_power) > return 0; > > gpiod_set_value(boe->enable_gpio, 0); > @@ -571,18 +587,10 @@ static int boe_panel_prepare(struct drm_panel *panel) > gpiod_set_value(boe->enable_gpio, 1); > usleep_range(6000, 10000); > > - ret = boe_panel_init(boe); > - if (ret < 0) { > - dev_err(panel->dev, "failed to init panel: %d\n", ret); > - goto poweroff; > - } > - > - boe->prepared = true; > + boe->prepared_power = true; > > return 0; > > -poweroff: > - regulator_disable(boe->avee); > poweroffavdd: > regulator_disable(boe->avdd); > poweroff1v8: > @@ -593,6 +601,25 @@ static int boe_panel_prepare(struct drm_panel *panel) > return ret; > } > > +static int boe_panel_prepare(struct drm_panel *panel) > +{ > + struct boe_panel *boe = to_boe_panel(panel); > + int ret; > + > + if (boe->prepared) > + return 0; > + > + ret = boe_panel_init(boe); > + if (ret < 0) { > + dev_err(panel->dev, "failed to init panel: %d\n", ret); > + return ret; > + } > + > + boe->prepared = true; > + > + return 0; > +} > + > static int boe_panel_enable(struct drm_panel *panel) > { > struct boe_panel *boe = to_boe_panel(panel); > @@ -754,7 +781,9 @@ static int boe_panel_get_modes(struct drm_panel *panel) > static const struct drm_panel_funcs boe_panel_funcs = { > .disable = boe_panel_disable, > .unprepare = boe_panel_unprepare, > + .unprepare_power = boe_panel_unprepare_power, > .prepare = boe_panel_prepare, > + .prepare_power = boe_panel_prepare_power, > .enable = boe_panel_enable, > .get_modes = boe_panel_get_modes, > }; > -- > 2.21.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel