OSDN Git Service

backlight: pwm_bl: Fix heuristic to determine number of brightness levels
authorMatthias Kaehlcke <mka@chromium.org>
Wed, 12 Jun 2019 18:00:03 +0000 (11:00 -0700)
committerLee Jones <lee.jones@linaro.org>
Thu, 27 Jun 2019 06:09:05 +0000 (07:09 +0100)
commit73fbfc499448455f1e1c77717040e09e25f1d976
tree52eda9b252823448aaaaf79db9379a2b896378c3
parent98b7404eb7d64e55f8fdd419cb3965a8abf0e217
backlight: pwm_bl: Fix heuristic to determine number of brightness levels

With commit 88ba95bedb79 ("backlight: pwm_bl: Compute brightness of
LED linearly to human eye") the number of set bits (aka hweight())
in the PWM period is used in the heuristic to determine the number
of brightness levels, when the brightness table isn't specified in
the DT. The number of set bits doesn't provide a reliable clue about
the length of the period, instead change the heuristic to:

 nlevels = period / fls(period)

Also limit the maximum number of brightness levels to 4096 to avoid
excessively large tables.

With this the number of levels increases monotonically with the PWM
period, until the maximum of 4096 levels is reached:

period (ns)    # levels

100            16
500        62
1000        111
5000        416
10000        769
50000        3333
100000        4096

Fixes: 88ba95bedb79 ("backlight: pwm_bl: Compute brightness of LED linearly to human eye")
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/video/backlight/pwm_bl.c