Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751883AbdIENp2 (ORCPT ); Tue, 5 Sep 2017 09:45:28 -0400 Received: from mail-yw0-f182.google.com ([209.85.161.182]:33318 "EHLO mail-yw0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751860AbdIENpY (ORCPT ); Tue, 5 Sep 2017 09:45:24 -0400 X-Google-Smtp-Source: ADKCNb4+V6dteHKfsFpKOf5PLHLoGWagHqTgkfmTJ3XUAHsWpvWZTXjzaakokR0vMrgewtcB6dkmhFtW4K3e+lVIbfI= MIME-Version: 1.0 In-Reply-To: <20170904153504.27963-2-enric.balletbo@collabora.com> References: <20170904153504.27963-1-enric.balletbo@collabora.com> <20170904153504.27963-2-enric.balletbo@collabora.com> From: Guenter Roeck Date: Tue, 5 Sep 2017 06:45:23 -0700 Message-ID: Subject: Re: [RFC 1/2] dt-bindings: pwm-backlight: add brightness-levels-scale property To: Enric Balletbo i Serra Cc: Lee Jones , Daniel Thompson , Jingoo Han , Richard Purdie , Jacek Anaszewski , Pavel Machek , Rob Herring , Mark Rutland , Doug Anderson , Brian Norris , linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3253 Lines: 68 On Mon, Sep 4, 2017 at 8:35 AM, Enric Balletbo i Serra wrote: > Brightness is not perceived linearly; rather, it typically follows some > kind of parabolic curve. We can support this by skipping values in the > brightness-levels array in a pseudo-quadratic curve. Typically we used > less than 256 levels, which yields no more than 1KiB of memory in our > device tree. But, we've noticed that on some devices the backlight > performs much smoother at lower ranges if we have more than 256-levels of > granularity. On kevin device, for example, if we support all 64K, that > will waste us at least 256KiB in our device tree. > > Let's avoid to waste memory and have a huge table of numbers in our device > tree of numbers by adding a brightness-levels-scale property to let the > driver compute the brightness levels based on one algorithm and their > property parameters. > Given Daniel's comments, would it possibly make sense to provide something like "brightness-level-range = <0, 65536>" instead and let the driver handle details ? Thanks, Guenter > Signed-off-by: Enric Balletbo i Serra > --- > .../bindings/leds/backlight/pwm-backlight.txt | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > index 764db86..11c5583 100644 > --- a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > +++ b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt > @@ -17,6 +17,16 @@ 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]) > + - brightness-levels-scale: this can be used instead of 'brightness-levels', > + to represent the perceived luminance. So rather > + than specifying 'brightness-levels = <0 > + 1 2 ... 65535>', one can simply say > + 'brightness-levels-scale = <255 65535>', where the > + first number is the max number of levels and the > + second number is the max PWM value that represent a > + 100% duty cycle (brightest). The result is a > + correction table for PWM values to create linear > + brightness based on the CIE1931 algorithm. > > [0]: Documentation/devicetree/bindings/pwm/pwm.txt > [1]: Documentation/devicetree/bindings/gpio/gpio.txt > @@ -33,3 +43,14 @@ Example: > power-supply = <&vdd_bl_reg>; > enable-gpios = <&gpio 58 0>; > }; > + > + backlight { > + compatible = "pwm-backlight"; > + pwms = <&pwm 0 5000000>; > + > + brightness-levels-scale = <255 65535>; > + default-brightness-level = <128>; > + > + power-supply = <&vdd_bl_reg>; > + enable-gpios = <&gpio 58 0>; > + }; > -- > 2.9.3 >