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().

Reply via email to