Re: [PATCH 2/4] drm/panel: otm8009a: fix glitches by moving backlight enable to otm8009a_enable()
Hi Philippe, Reviewed-by: Vincent AbriouBR 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 > --- > 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; >
Re: [PATCH 2/4] drm/panel: otm8009a: fix glitches by moving backlight enable to otm8009a_enable()
Hi Philippe, Reviewed-by: Vincent Abriou 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 > --- > 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; >
[PATCH 2/4] drm/panel: otm8009a: fix glitches by moving backlight enable to otm8009a_enable()
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--- 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; -- 2.15.1
[PATCH 2/4] drm/panel: otm8009a: fix glitches by moving backlight enable to otm8009a_enable()
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 --- 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; -- 2.15.1