[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <d9601340-fb29-6c83-c35f-f6375f1648cd@gmail.com>
Date: Thu, 4 Jan 2018 17:33:21 +0800
From: hl <huanglin821201@...il.com>
To: Peter Ujfalusi <peter.ujfalusi@...com>, hl <hl@...k-chips.com>,
Thierry Reding <thierry.reding@...il.com>,
Jingoo Han <jg1.han@...sung.com>,
Bryan Wu <cooloney@...il.com>, Lee Jones <lee.jones@...aro.org>
Cc: Mark Rutland <mark.rutland@....com>, devicetree@...r.kernel.org,
linux-fbdev@...r.kernel.org, Russell King <linux@....linux.org.uk>,
Brian Norris <briannorris@...gle.com>,
Pawel Moll <pawel.moll@....com>,
Ian Campbell <ijc+devicetree@...lion.org.uk>,
linux-kernel@...r.kernel.org, Rob Herring <robh+dt@...nel.org>,
Doug Anderson <dianders@...gle.com>,
Matthias Kaehlcke <mka@...gle.com>,
Tomi Valkeinen <tomi.valkeinen@...com>,
Kumar Gala <galak@...eaurora.org>,
Eric Miao <eric.y.miao@...il.com>,
Jean-Christophe Plagniol-Villard <plagnioj@...osoft.com>,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [RFC] pwm-backlight: Allow backlight to remain disabled on boot
Hi
On Thursday, January 04, 2018 04:22 PM, Peter Ujfalusi wrote:
> Hi,
>
> On 2018-01-04 04:18, hl wrote:
>> Hi All,
>>
>> Since many panel power sequence request backlight stay disable
>>
>> before panel power ready, but with now pwm-backlight drvier, it default to
>>
>> enable backlight when pwm-backlight probe, it mess up the panel power
>> sequence.
>>
>> So we need this patch. This patch have been fly for a long time, does
>> anyone have plan
>>
>> to merge it?
> you should not need this anymore since we have:
> 892c7788c724backlight: pwm_bl: Fix GPIO out for unimplemented
> .get_direction()
>
> d1b812945750 backlight: pwm_bl: Check the PWM state for initial
> backlight power state
>
> 7613c922315e backlight: pwm_bl: Move the checks for initial power state
> to a separate function
>
> With these in place the backlight will be kept disabled if it was
> disabled during boot _if_ you have booted via DT _and_ you have a
> phandle pointing to the backlight node (implying that the backlight is
> managed by the display driver).
Oh, thanks for reminding me.
>
>>
>> On Thursday, July 31, 2014 07:42 PM, Thierry Reding wrote:
>>> From: Thierry Reding <treding@...dia.com>
>>>
>>> The default for backlight devices is to be enabled immediately when
>>> registering with the backlight core. This can be useful for setups that
>>> use a simple framebuffer device and where the backlight cannot otherwise
>>> be hooked up to the panel.
>>>
>>> However, when dealing with more complex setups, such as those of recent
>>> ARM SoCs, this can be problematic. Since the backlight is usually setup
>>> separately from the display controller, the probe order is not usually
>>> deterministic. That can lead to situations where the backlight will be
>>> powered up and the panel will show an uninitialized framebuffer.
>>>
>>> Furthermore, subsystems such as DRM have advanced functionality to set
>>> the power mode of a panel. In order to allow such setups to power up the
>>> panel at exactly the right moment, a way is needed to prevent the
>>> backlight core from powering the backlight up automatically when it is
>>> registered.
>>>
>>> This commit introduces a new boot_off field in the platform data (and
>>> also implements getting the same information from device tree). When set
>>> the initial backlight power mode will be set to "off".
>>>
>>> Signed-off-by: Thierry Reding <treding@...dia.com>
>>> ---
>>> I've been meaning to send this for a while but was always holding back
>>> because of the indoctrination that this type of configuration shouldn't
>>> be part of device tree. However this issue was recently raised again in
>>> the context of power up sequences for display panels. As described above
>>> the issue is that panel datasheets recommend that the backlight attached
>>> to a panel be turned on at the very last step to avoid visual glitches
>>> during the panel's power up sequence. With the current implementation it
>>> is typical for the backlight to be probed before the display panel. That
>>> has, in many cases, the side-effect of enabling the backlight, therefore
>>> making the screen content visible before it's actually initialized.
>>>
>>> Some panels come up with random garbage when uninitialized, others show
>>> all white. With some luck the panel will be all black and users won't
>>> really notice.
>>>
>>> This patch is an attempt to enable boards to override the default of
>>> turning on the backlight for the pwm-backlight driver. I'm not sure if
>>> there was a specific reason to turn on the backlight by default when
>>> this driver was initially written, but the fact is that since it has
>>> pretty much always been like this we can't really go and change the
>>> default, otherwise a lot of people may end up with no backlight and no
>>> clue as to how to enable it. So the only reasonable thing we can do is
>>> to keep the old behaviour and give new boards a way to override it if
>>> they know that some other part of the stack will enable it at the right
>>> moment.
>>>
>>> .../devicetree/bindings/video/backlight/pwm-backlight.txt | 1 +
>>> drivers/video/backlight/pwm_bl.c |
>>> 8 ++++++++
>>> include/linux/pwm_backlight.h |
>>> 2 ++
>>> 3 files changed, 11 insertions(+)
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt
>>> b/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt
>>> index 764db86d441a..65e001a1733d 100644
>>> --- a/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt
>>> +++ b/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt
>>> @@ -17,6 +17,7 @@ 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])
>>> + - backlight-boot-off: keep the backlight disabled on boot
>>> [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 d7a3d13e72ec..62adfc9d37a7 100644
>>> --- a/drivers/video/backlight/pwm_bl.c
>>> +++ b/drivers/video/backlight/pwm_bl.c
>>> @@ -173,6 +173,8 @@ static int pwm_backlight_parse_dt(struct device *dev,
>>> data->max_brightness--;
>>> }
>>> + data->boot_off = of_property_read_bool(node,
>>> "backlight-boot-off");
>>> +
>>> return 0;
>>> }
>>> @@ -317,6 +319,12 @@ static int pwm_backlight_probe(struct
>>> platform_device *pdev)
>>> }
>>> bl->props.brightness = data->dft_brightness;
>>> +
>>> + if (data->boot_off)
>>> + bl->props.power = FB_BLANK_POWERDOWN;
>>> + else
>>> + bl->props.power = FB_BLANK_UNBLANK;
>>> +
>>> backlight_update_status(bl);
>>> platform_set_drvdata(pdev, bl);
>>> diff --git a/include/linux/pwm_backlight.h
>>> b/include/linux/pwm_backlight.h
>>> index efdd9227a49c..1fc14989da4a 100644
>>> --- a/include/linux/pwm_backlight.h
>>> +++ b/include/linux/pwm_backlight.h
>>> @@ -15,6 +15,8 @@ struct platform_pwm_backlight_data {
>>> unsigned int *levels;
>>> /* TODO remove once all users are switched to gpiod_* API */
>>> int enable_gpio;
>>> + bool boot_off;
>>> +
>>> int (*init)(struct device *dev);
>>> int (*notify)(struct device *dev, int brightness);
>>> void (*notify_after)(struct device *dev, int brightness);
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@...ts.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> - Péter
>
> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
>
>
Powered by blists - more mailing lists