[{"id":1763217,"web_url":"http://patchwork.ozlabs.org/comment/1763217/","msgid":"<b1f8c674-fa71-b4a4-9fbf-5c590144c0c5@linaro.org>","list_archive_url":null,"date":"2017-09-05T11:07:55","subject":"Re: [RFC 1/2] dt-bindings: pwm-backlight: add\n\tbrightness-levels-scale property","submitter":{"id":63942,"url":"http://patchwork.ozlabs.org/api/people/63942/","name":"Daniel Thompson","email":"daniel.thompson@linaro.org"},"content":"On 04/09/17 16:35, Enric Balletbo i Serra wrote:\n> Brightness is not perceived linearly; rather, it typically follows some\n> kind of parabolic curve. We can support this by skipping values in the\n> brightness-levels array in a pseudo-quadratic curve. Typically we used\n> less than 256 levels, which yields no more than 1KiB of memory in our\n> device tree. But, we've noticed that on some devices the backlight\n> performs much smoother at lower ranges if we have more than 256-levels of\n> granularity. On kevin device, for example, if we support all 64K, that\n> will waste us at least 256KiB in our device tree.\n> \n> Let's avoid to waste memory and have a huge table of numbers in our device\n> tree of numbers by adding a brightness-levels-scale property to let the\n> driver compute the brightness levels based on one algorithm and their\n> property parameters.\n> \n> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>\n> ---\n>   .../bindings/leds/backlight/pwm-backlight.txt       | 21 +++++++++++++++++++++\n>   1 file changed, 21 insertions(+)\n> \n> diff --git a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> index 764db86..11c5583 100644\n> --- a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> +++ b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> @@ -17,6 +17,16 @@ Optional properties:\n>                  \"pwms\" property (see PWM binding[0])\n>     - enable-gpios: contains a single GPIO specifier for the GPIO which enables\n>                     and disables the backlight (see GPIO binding[1])\n> +  - brightness-levels-scale: this can be used instead of 'brightness-levels',\n> +                             to represent the perceived luminance. So rather\n> +                             than specifying 'brightness-levels = <0\n> +                             1 2 ... 65535>', one can simply say\n> +                             'brightness-levels-scale = <255 65535>', where the\n> +                             first number is the max number of levels and the\n> +                             second number is the max PWM value that represent a\n> +                             100% duty cycle (brightest). The result is a\n> +                             correction table for PWM values to create linear\n> +                             brightness based on the CIE1931 algorithm.\n\nEven if we do keep this property (see first e-mail) this second value \nseems pointless to me; can't the driver just use the actual PWM max \ncounter value for this?\n\n\nDaniel.\n\n\n>   \n>   [0]: Documentation/devicetree/bindings/pwm/pwm.txt\n>   [1]: Documentation/devicetree/bindings/gpio/gpio.txt\n> @@ -33,3 +43,14 @@ Example:\n>   \t\tpower-supply = <&vdd_bl_reg>;\n>   \t\tenable-gpios = <&gpio 58 0>;\n>   \t};\n> +\n> +\tbacklight {\n> +\t\tcompatible = \"pwm-backlight\";\n> +\t\tpwms = <&pwm 0 5000000>;\n> +\n> +\t\tbrightness-levels-scale = <255 65535>;\n> +\t\tdefault-brightness-level = <128>;\n> +\n> +\t\tpower-supply = <&vdd_bl_reg>;\n> +\t\tenable-gpios = <&gpio 58 0>;\n> +\t};\n> \n\n--\nTo unsubscribe from this list: send the line \"unsubscribe devicetree\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","headers":{"Return-Path":"<devicetree-owner@vger.kernel.org>","X-Original-To":"incoming-dt@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-dt@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=devicetree-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"WY9qydDt\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xmkTY6xxmz9sPk\n\tfor <incoming-dt@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 21:08:01 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751246AbdIELIA (ORCPT\n\t<rfc822;incoming-dt@patchwork.ozlabs.org>);\n\tTue, 5 Sep 2017 07:08:00 -0400","from mail-wm0-f47.google.com ([74.125.82.47]:37929 \"EHLO\n\tmail-wm0-f47.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750954AbdIELH7 (ORCPT\n\t<rfc822; devicetree@vger.kernel.org>); Tue, 5 Sep 2017 07:07:59 -0400","by mail-wm0-f47.google.com with SMTP id 187so17375848wmn.1\n\tfor <devicetree@vger.kernel.org>;\n\tTue, 05 Sep 2017 04:07:58 -0700 (PDT)","from [192.168.1.124]\n\t(cpc87211-aztw31-2-0-cust196.18-1.cable.virginm.net. [82.46.60.197])\n\tby smtp.googlemail.com with ESMTPSA id\n\tl11sm329721wre.53.2017.09.05.04.07.55\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 05 Sep 2017 04:07:56 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=2XNQD6ljPMeyN4+xZ/EvvsfMpGNm0AnVIWboNzQ7200=;\n\tb=WY9qydDtY8JAt/Dlix8NKcQ9qQG2Itgsf2BkeFlkZDgn5ub2Shp4AXxfOZI9a33Cv7\n\tyjHwtffofN1ZxHtQvpgJArl3Kr5KdrX0ptzE7V4gyElOBQydWTsOgstxNU6qjmFFo1Qv\n\t+aWmN321OQqrRBAcpuxjcXYSVH6RZPbSInU78=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=2XNQD6ljPMeyN4+xZ/EvvsfMpGNm0AnVIWboNzQ7200=;\n\tb=jN51FaZfv+cARNVUVANiAy6/a8LfsOD2tOoCYEHtE01HE+y2P3w2ZpzydniU0qXsQX\n\tvPwh8UJWwnMYmFs4xH9LPDgrTkW34Kf8dP6bckpE7QwaAOJnvjqk/BLxSoR+/c6JyQVm\n\t1IWFCCj9R7fiZyouIeSMWerFK/arazsOX/PnYxq4L8+kLhqt5Fzd1/zNaT61nC5z7K/J\n\toU8kHr9gYumJ6bjjvwNAq093Afft0Zu/RC+kJFDuU5Q0EgxyG9nuXbHm8nTYfWNf2LhP\n\tjm5C9j+jNAbrDCjRKXBlJ4N7q4szwrB8hgVqvNtYl4N51qcZJJp134Yrw6VmGkklr1WF\n\t+olQ==","X-Gm-Message-State":"AHPjjUhpfW3S/KuMxYD60zRnVWvGNAY/pyMQKlshIk+cvja0RnnVZy+g\n\t3NcLHthM2m9nVjq/","X-Google-Smtp-Source":"ADKCNb4iDX9HIWHms4fbIcTz1M9S5X3eNnOQ2Q0/ttgWJ5HU4xjkqv2t02qi55NaGhdIdzOBPzmS1A==","X-Received":"by 10.28.154.88 with SMTP id c85mr2122390wme.59.1504609677293;\n\tTue, 05 Sep 2017 04:07:57 -0700 (PDT)","Subject":"Re: [RFC 1/2] dt-bindings: pwm-backlight: add\n\tbrightness-levels-scale property","To":"Enric Balletbo i Serra <enric.balletbo@collabora.com>,\n\tLee Jones <lee.jones@linaro.org>, Jingoo Han <jingoohan1@gmail.com>, \n\tRichard Purdie <rpurdie@rpsys.net>,\n\tJacek Anaszewski <jacek.anaszewski@gmail.com>,\n\tPavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>,\n\tMark Rutland <mark.rutland@arm.com>,\n\tDoug Anderson <dianders@google.com>, \n\tBrian Norris <briannorris@google.com>, Guenter Roeck <groeck@google.com>","Cc":"linux-leds@vger.kernel.org, devicetree@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","References":"<20170904153504.27963-1-enric.balletbo@collabora.com>\n\t<20170904153504.27963-2-enric.balletbo@collabora.com>","From":"Daniel Thompson <daniel.thompson@linaro.org>","Message-ID":"<b1f8c674-fa71-b4a4-9fbf-5c590144c0c5@linaro.org>","Date":"Tue, 5 Sep 2017 12:07:55 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170904153504.27963-2-enric.balletbo@collabora.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","Sender":"devicetree-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<devicetree.vger.kernel.org>","X-Mailing-List":"devicetree@vger.kernel.org"}},{"id":1763368,"web_url":"http://patchwork.ozlabs.org/comment/1763368/","msgid":"<CABXOdTcjOfk0+FSkOTDU=vARVht9Q3d7nQOeUe75bfb7s-SvQw@mail.gmail.com>","list_archive_url":null,"date":"2017-09-05T13:45:23","subject":"Re: [RFC 1/2] dt-bindings: pwm-backlight: add\n\tbrightness-levels-scale property","submitter":{"id":69476,"url":"http://patchwork.ozlabs.org/api/people/69476/","name":"Guenter Roeck","email":"groeck@google.com"},"content":"On Mon, Sep 4, 2017 at 8:35 AM, Enric Balletbo i Serra\n<enric.balletbo@collabora.com> wrote:\n> Brightness is not perceived linearly; rather, it typically follows some\n> kind of parabolic curve. We can support this by skipping values in the\n> brightness-levels array in a pseudo-quadratic curve. Typically we used\n> less than 256 levels, which yields no more than 1KiB of memory in our\n> device tree. But, we've noticed that on some devices the backlight\n> performs much smoother at lower ranges if we have more than 256-levels of\n> granularity. On kevin device, for example, if we support all 64K, that\n> will waste us at least 256KiB in our device tree.\n>\n> Let's avoid to waste memory and have a huge table of numbers in our device\n> tree of numbers by adding a brightness-levels-scale property to let the\n> driver compute the brightness levels based on one algorithm and their\n> property parameters.\n>\n\nGiven Daniel's comments, would it possibly make sense to provide\nsomething like \"brightness-level-range = <0, 65536>\" instead and let\nthe driver handle details ?\n\nThanks,\nGuenter\n\n> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>\n> ---\n>  .../bindings/leds/backlight/pwm-backlight.txt       | 21 +++++++++++++++++++++\n>  1 file changed, 21 insertions(+)\n>\n> diff --git a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> index 764db86..11c5583 100644\n> --- a/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> +++ b/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt\n> @@ -17,6 +17,16 @@ Optional properties:\n>                 \"pwms\" property (see PWM binding[0])\n>    - enable-gpios: contains a single GPIO specifier for the GPIO which enables\n>                    and disables the backlight (see GPIO binding[1])\n> +  - brightness-levels-scale: this can be used instead of 'brightness-levels',\n> +                             to represent the perceived luminance. So rather\n> +                             than specifying 'brightness-levels = <0\n> +                             1 2 ... 65535>', one can simply say\n> +                             'brightness-levels-scale = <255 65535>', where the\n> +                             first number is the max number of levels and the\n> +                             second number is the max PWM value that represent a\n> +                             100% duty cycle (brightest). The result is a\n> +                             correction table for PWM values to create linear\n> +                             brightness based on the CIE1931 algorithm.\n>\n>  [0]: Documentation/devicetree/bindings/pwm/pwm.txt\n>  [1]: Documentation/devicetree/bindings/gpio/gpio.txt\n> @@ -33,3 +43,14 @@ Example:\n>                 power-supply = <&vdd_bl_reg>;\n>                 enable-gpios = <&gpio 58 0>;\n>         };\n> +\n> +       backlight {\n> +               compatible = \"pwm-backlight\";\n> +               pwms = <&pwm 0 5000000>;\n> +\n> +               brightness-levels-scale = <255 65535>;\n> +               default-brightness-level = <128>;\n> +\n> +               power-supply = <&vdd_bl_reg>;\n> +               enable-gpios = <&gpio 58 0>;\n> +       };\n> --\n> 2.9.3\n>\n--\nTo unsubscribe from this list: send the line \"unsubscribe devicetree\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","headers":{"Return-Path":"<devicetree-owner@vger.kernel.org>","X-Original-To":"incoming-dt@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-dt@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=devicetree-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=google.com header.i=@google.com\n\theader.b=\"tF+sMobp\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xmnzF2PKkz9t2l\n\tfor <incoming-dt@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 23:45:29 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751871AbdIENp1 (ORCPT\n\t<rfc822;incoming-dt@patchwork.ozlabs.org>);\n\tTue, 5 Sep 2017 09:45:27 -0400","from mail-yw0-f170.google.com ([209.85.161.170]:35268 \"EHLO\n\tmail-yw0-f170.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751386AbdIENpY (ORCPT\n\t<rfc822; devicetree@vger.kernel.org>); Tue, 5 Sep 2017 09:45:24 -0400","by mail-yw0-f170.google.com with SMTP id x144so13053531ywg.2\n\tfor <devicetree@vger.kernel.org>;\n\tTue, 05 Sep 2017 06:45:24 -0700 (PDT)","by 10.13.237.129 with HTTP; Tue, 5 Sep 2017 06:45:23 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n\ts=20161025; \n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=NErA+uvrdbW9h1RdLbOe1SnO2W/qzqy2PoFfcFIIT/0=;\n\tb=tF+sMobpOpypfVctUOmWdEbEvgQrz1sDYBznLA2ZSrd1bj+v3u8ZtRE/fLFj636HK2\n\tRo6Ta+Di9dmTfDXOdpoLfAbqGN+RUKGDXONNOtcs8nc/C56JaHbdXVBl5Lfazh6cvJBN\n\tXZEcbc7vcU7NoQw3IqWUn7PDllGXgebNmEU/yQ0/WVdaKjfvkAhOezi3Y4S+XDOKWReu\n\tEMzeMK0LmcoOmp7ppJPcgxi/fpThXVNZu9vQVuBf+HiVawaTrbGOdyjVf3IjxKwv9XYc\n\tZvhLq3LFNYGOAawaaSpOIOSEAjmEG24iXgUrQun1QM5yT7/uUKYodYW+iqGinrT2z8fs\n\tkztw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=NErA+uvrdbW9h1RdLbOe1SnO2W/qzqy2PoFfcFIIT/0=;\n\tb=jCi+3UXE89lXXR4wzmDvjAuUr4lI1JSOsVGadFkkcnXJqhq6/g8xUyU48FqQjmM2yZ\n\toZ2tDX4XH/MYCZ0Kp97TxnQXtlTN8Daqr3vSf+F6vdT4d7v8m1GDdXHvfp7EvGH3mVNl\n\tVb91OQLx3O1ENWhlYsUC3V8rGkA/qjq3GMmT+Ry7u/uElR885h9sd1J4yTEBbUCZGRKI\n\t28fgglN1wHgDCtN8QY4J5aSFBgDfAu5OfF8EmE8BFCDXRqyhhdaP0GWkI7Sn1FUlMk6s\n\tCpdp8idmec3efwN6EliOIwUaBkcgB+L88CSiZdPuNuH1VVv2jdUxRY+9JUKZ5ggZ7V8i\n\ti9Gg==","X-Gm-Message-State":"AHPjjUj4aFMtHyuP8326Uw9FqK8oIN2EiBA/Zp7kZxRRCS1aBrBJ+wrP\n\tdqKqvYweK7sUOYWl4IcNn12QEKGrMnK5","X-Google-Smtp-Source":"ADKCNb4+V6dteHKfsFpKOf5PLHLoGWagHqTgkfmTJ3XUAHsWpvWZTXjzaakokR0vMrgewtcB6dkmhFtW4K3e+lVIbfI=","X-Received":"by 10.129.111.196 with SMTP id\n\tk187mr3413602ywc.178.1504619123826; \n\tTue, 05 Sep 2017 06:45:23 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170904153504.27963-2-enric.balletbo@collabora.com>","References":"<20170904153504.27963-1-enric.balletbo@collabora.com>\n\t<20170904153504.27963-2-enric.balletbo@collabora.com>","From":"Guenter Roeck <groeck@google.com>","Date":"Tue, 5 Sep 2017 06:45:23 -0700","Message-ID":"<CABXOdTcjOfk0+FSkOTDU=vARVht9Q3d7nQOeUe75bfb7s-SvQw@mail.gmail.com>","Subject":"Re: [RFC 1/2] dt-bindings: pwm-backlight: add\n\tbrightness-levels-scale property","To":"Enric Balletbo i Serra <enric.balletbo@collabora.com>","Cc":"Lee Jones <lee.jones@linaro.org>,\n\tDaniel Thompson <daniel.thompson@linaro.org>,\n\tJingoo Han <jingoohan1@gmail.com>, Richard Purdie <rpurdie@rpsys.net>,\n\tJacek Anaszewski <jacek.anaszewski@gmail.com>,\n\tPavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>,\n\tMark Rutland <mark.rutland@arm.com>,\n\tDoug Anderson <dianders@google.com>, \n\tBrian Norris <briannorris@google.com>,\n\tlinux-leds@vger.kernel.org, devicetree@vger.kernel.org,\n\tlinux-kernel <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"devicetree-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<devicetree.vger.kernel.org>","X-Mailing-List":"devicetree@vger.kernel.org"}}]