On 7/24/23 15:49, Doug Anderson wrote:
Hi,
[...]
Maybe the EPROBE_DEFER actually happens and triggers the failure ?
I could certainly believe that EPROBE_DEFER is involved.
So no, it is not. It is difficult to set this up and access the signals,
but so I did.
What happens is this:
panel_simple_probe() calls devm_regulator_get()
-> If the regulator was ENABLED, then it is now DISABLED
-> For regulator-fixed, this means the regulator GPIO goes HIGH->LOW
panel_simple_prepare() triggers panel_simple_resume()
-> If this occurs too soon after devm_regulator_get() turned the
regulator OFF and thus regulator GPIO low, then unprepare time is
not respected => FAIL
Since there is no way to find out in which state the regulator was when
devm_regulator_get() was called, we have to wait the full unprepare time
before re-enabling that regulator in panel_simple_resume().