Hi, On Thu, Nov 16, 2017 at 6:11 AM, Enric Balletbo i Serra <enric.balletbo@xxxxxxxxxxxxx> wrote: > Setting use-linear-interpolation in the dts will allow you to have linear > interpolation between values of brightness-levels. > > There are now 256 between each of the values of brightness-levels. If > something is requested halfway between 2 values, we'll use linear > interpolation. > > This way a high resolution pwm duty cycle can be used without having to > list out every possible value in the dts. This system also allows for > gamma corrected values (eg: "brightness-levels = <0 2 4 8 16 32>;"). > > Patch based on the Alexandru M Stan work done for ChromeOS kernels. > > Signed-off-by: Enric Balletbo i Serra <enric.balletbo@xxxxxxxxxxxxx> > --- > .../bindings/leds/backlight/pwm-backlight.txt | 2 + > drivers/video/backlight/pwm_bl.c | 55 +++++++++++++++++----- > include/linux/pwm_backlight.h | 2 + > 3 files changed, 47 insertions(+), 12 deletions(-) > > diff --git a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > index 764db86..7c48f20 100644 > --- a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > +++ b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > @@ -17,6 +17,8 @@ Optional properties: > "pwms" property (see PWM binding[0]) > - enable-gpios: contains a single GPIO specifier for the GPIO which enables > and disables the backlight (see GPIO binding[1]) > + - use-linear-interpolation: set this propriety to enable linear interpolation > + between each of the values of brightness-levels. > > [0]: Documentation/devicetree/bindings/pwm/pwm.txt > [1]: Documentation/devicetree/bindings/gpio/gpio.txt > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c > index 9bd1768..59b1bfb 100644 > --- a/drivers/video/backlight/pwm_bl.c > +++ b/drivers/video/backlight/pwm_bl.c > @@ -24,6 +24,8 @@ > #include <linux/regulator/consumer.h> > #include <linux/slab.h> > > +#define NSTEPS 256 I'm not sure this is quite the ideal way to specify it. I could sorta imagine wanting to specify just: brightness-levels = <0 65535> ...and in such a case you'll only give 256 steps in between. 256 isn't quite granular enough and the human eye can notice each step. I could fake it by putting this in the device tree: brightness-levels = <0 4095 8191 ... ... 61439 65535> ...but that's kinda silly. I'd rather just say that when we're using interpolation we just say that there will be a certain number of steps (like 32768). Is there really a huge advantage of picking 256 steps between each specified value instead of just picking a fixed number of brightness levels? -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html