Message ID | 20180423141054.13128-3-philippe.cornu@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Philippe, Reviewed-by: Vincent Abriou <vincent.abriou@st.com> BR Vincent On 04/23/2018 04:10 PM, Philippe Cornu wrote: > The backlight 1st update was in the otm8009a_prepare() function > for a bad reason: backlight was not working in video mode and the > otm8009a_prepare() is in command mode for the init sequence. As the > backlight is now fixed (no lpm), it is good to put it back in the > otm8009a_enable() function, avoiding also image glitches visible > on some "slow" devices. > > Signed-off-by: Philippe Cornu <philippe.cornu@st.com> > --- > drivers/gpu/drm/panel/panel-orisetech-otm8009a.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > index 0fd2e0144d2b..de4a16d5275c 100644 > --- a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > +++ b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > @@ -330,13 +330,6 @@ static int otm8009a_prepare(struct drm_panel *panel) > > ctx->prepared = true; > > - /* > - * Power on the backlight. Note: end-user still controls brightness > - * Note: ctx->prepared must be true before updating the backlight. > - */ > - ctx->bl_dev->props.power = FB_BLANK_UNBLANK; > - backlight_update_status(ctx->bl_dev); > - > return 0; > } > > @@ -344,6 +337,16 @@ static int otm8009a_enable(struct drm_panel *panel) > { > struct otm8009a *ctx = panel_to_otm8009a(panel); > > + if (ctx->enabled) > + return 0; > + > + /* > + * Power on the backlight. Note: end-user still controls brightness > + * Note: ctx->prepared must be true before updating the backlight. > + */ > + ctx->bl_dev->props.power = FB_BLANK_UNBLANK; > + backlight_update_status(ctx->bl_dev); > + > ctx->enabled = true; > > return 0; >
diff --git a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c index 0fd2e0144d2b..de4a16d5275c 100644 --- a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c +++ b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c @@ -330,13 +330,6 @@ static int otm8009a_prepare(struct drm_panel *panel) ctx->prepared = true; - /* - * Power on the backlight. Note: end-user still controls brightness - * Note: ctx->prepared must be true before updating the backlight. - */ - ctx->bl_dev->props.power = FB_BLANK_UNBLANK; - backlight_update_status(ctx->bl_dev); - return 0; } @@ -344,6 +337,16 @@ static int otm8009a_enable(struct drm_panel *panel) { struct otm8009a *ctx = panel_to_otm8009a(panel); + if (ctx->enabled) + return 0; + + /* + * Power on the backlight. Note: end-user still controls brightness + * Note: ctx->prepared must be true before updating the backlight. + */ + ctx->bl_dev->props.power = FB_BLANK_UNBLANK; + backlight_update_status(ctx->bl_dev); + ctx->enabled = true; return 0;
The backlight 1st update was in the otm8009a_prepare() function for a bad reason: backlight was not working in video mode and the otm8009a_prepare() is in command mode for the init sequence. As the backlight is now fixed (no lpm), it is good to put it back in the otm8009a_enable() function, avoiding also image glitches visible on some "slow" devices. Signed-off-by: Philippe Cornu <philippe.cornu@st.com> --- drivers/gpu/drm/panel/panel-orisetech-otm8009a.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)