Re: [PATCH] regulator: core: Handle PM_SUSPEND_TO_IDLE suspend_state_t

From: Hans de Goede
Date: Mon Feb 19 2018 - 15:59:23 EST


Hi,

On 19-02-18 12:34, Mark Brown wrote:
On Sun, Feb 18, 2018 at 06:04:24PM +0100, Hans de Goede wrote:
The regulator framework is used on x86 in some cases now and x86 has
a PM_SUSPEND_TO_IDLE suspend_state_t, treat this as PM_SUSPEND_STANDBY,
this fixes these errors on resume:

This was already fixed by Geert.

There are multiple callers of regulator_get_suspend_state() in
drivers/regulator/core.c, I assume you refer to this commit:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/regulator/core.c?id=57a0dd187956ea04870f4bbbf25a63c425ee7cad

Even with that commit I'm still seeing these errors on resume:

[ 753.064002] dpm_run_callback(): regulator_resume_early+0x0/0x60 returns -22
[ 753.064014] PM: Device regulator.0 failed to resume early: error -22

These are caused by the -EINVAL return after the
regulator_get_suspend_state() call in
_regulator_resume_early() and there are other callers
of regulator_get_suspend_state() which return -EINVAL
too.

I think just returning 0 in this case makes sense, but it
looks like that needs to be done in several places.

Regards,

Hans