On 7/23/21 1:17 PM, Daniel Thompson wrote:
On Fri, Jul 23, 2021 at 11:15:10AM +0100, Daniel Thompson wrote:
On Thu, Jul 22, 2021 at 09:02:04PM +0200, Marek Vasut wrote:
On 7/22/21 1:28 PM, Daniel Thompson wrote:
On Wed, Jul 21, 2021 at 08:46:42PM +0200, Marek Vasut wrote:
On 7/21/21 6:12 PM, Daniel Thompson wrote:
On Wed, Jul 21, 2021 at 05:09:57PM +0200, Marek Vasut wrote: > On 7/21/21 12:49 PM, Daniel Thompson wrote: [...] This sails very close to the edge of what is in-scope for DT (at least it does it we can read the inherited state directly from the hardware).
The problem with reading it out of hardware is that the hardware might be in undefined state and expects Linux to define that state, so that does not always work. Hence my initial suggestion to add a DT property to define the state up front, instead of using these fragile heuristics.
To achieve a flicker-free boot we must know the initial state of the backlight (not just the enable pin).
The backlight hardware might be in uninitialized state and then Linux should set the state, likely based on something in DT, because there is no previous state to read.
There is always a previous state. The kernel doesn't care whether that previous state was imposed by a power-on reset, the bootloader or a kexec.
For the driver to come up flicker-free in all the different cases we need to know whether the backlight is currently emitting light or not and, if it is emitting light, then we need to know what the duty cycle is (currently we inherit require the PWM driver to correctly inherit the duty cycle from the hardware).
Oops... this is wrong (I think it is cross-talk from an old patch). We do not currently inherit the duty cycle.
There is that, and if you did, you would be telling PWM drivers not to reset/reinit the hardware in probe. I'm not sure whether that is a good idea.
So far, the previous state has been observable by the lower level drivers (GPIO, PWM, regulator). I remain reluctant to provide workarounds for cases where it is not observable without motivating hardware. I certainly wouldn't want to make such bindings mandatory since observable hardware registers are a far more reliable source of truth than what the DT tells us about what it thinks the bootloader (or power-on reset) actually did ;-).
Which makes conclusion badly reasoned.
However, until we can clearly articulate whether the problem we want to solve is describing the initial backlight state or specifying the default (post-probe) power state for the legacy cases I'm still content not to change things ;-).
For me, it was always about specifying well defined default state of the backlight.
[...] Wow! That is *way* longer than I intended when I started writing it. Anyhow I suspect any disconnect comes about due to the difference in backlight state *after* probe being, in part, to software structure rather than purely a hardware property.
Maybe this should be added to documentation.
I'll see what I can do.
Done, see v3. I think it is better explained than the e-mail version.
Thanks