On Thu, 15 Jul 2021, Linus Walleij wrote:
> Remove interrupt disablement during backlight setting. It is
> way to dangerous and makes platforms instable by having it
> miss vblank IRQs leading to the graphics derailing.
>
> The code is using ndelay() which is not available on
> platforms such as ARM and will result in 32 * udelay(1)
> which is substantial.
>
> Add some code to detect if an interrupt occurs during the
> tight loop and in that case just redo it from the top.
>
> Fixes: 5317f37e48b9 ("backlight: Add Kinetic KTD253 backlight driver")
> Cc: Stephan Gerhold <[email protected]>
> Reported-by: [email protected]
> Reviewed-by: Daniel Thompson <[email protected]>
> Signed-off-by: Linus Walleij <[email protected]>
> ---
> ChangeLog v3->v4:
> - Collect Daniel's Reviewed-by.
> ChangeLog v2->v3:
> - Read my own patch and realized a bug: when we get a timeout
> we bounce back to max period, but still count down the pwm
> with one leading to an off-by-one error. Fix it by extending
> some else clauses.
> ChangeLog v1->v2:
> - Alter the dimming code to check for how many ns the pulse
> is low, and if it gets to ~100 us then redo from start.
> This is to account for the advent that an IRQ arrives while
> setting backlight and hits the low pulse making it way
> too long.
> ---
> drivers/video/backlight/ktd253-backlight.c | 75 ++++++++++++++++------
> 1 file changed, 55 insertions(+), 20 deletions(-)
Slight change of plan.
Looks like this fixes issues introduced in v5.9. I tend to only
submit -fixes for issues added during the same merge cycle.
How loudly will you shout if I submit this for v5.15-rc1?
--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog