Message ID | 20200427074832.22134-3-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Minor WM8994 MFD/codec fixes | expand |
On Mon, 27 Apr 2020, Marek Szyprowski wrote: > When runtime PM is enabled, regulators are being controlled by the > driver's suspend and resume callbacks. They are also unconditionally > enabled at driver's probe(), and disabled in remove() functions. Add > more calls to runtime PM framework to ensure that the device's runtime > PM state matches the regulators state: > 1. at the end of probe() function: set runtime PM state to active, so > there will be no spurious call to resume(); > 2. in remove(), ensure that resume() is called before disabling runtime PM > management and unconditionally disabling the regulators. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> > --- > drivers/mfd/wm8994-core.c | 3 +++ > 1 file changed, 3 insertions(+) For my own reference (apply this as-is to your sign-off block): Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
On Mon, 27 Apr 2020, Marek Szyprowski wrote: > When runtime PM is enabled, regulators are being controlled by the > driver's suspend and resume callbacks. They are also unconditionally > enabled at driver's probe(), and disabled in remove() functions. Add > more calls to runtime PM framework to ensure that the device's runtime > PM state matches the regulators state: > 1. at the end of probe() function: set runtime PM state to active, so > there will be no spurious call to resume(); > 2. in remove(), ensure that resume() is called before disabling runtime PM > management and unconditionally disabling the regulators. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> > --- > drivers/mfd/wm8994-core.c | 3 +++ > 1 file changed, 3 insertions(+) Applied, thanks.
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 737dede4a95c..69d973ec42bf 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -584,6 +584,7 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) goto err_irq; } + pm_runtime_set_active(wm8994->dev); pm_runtime_enable(wm8994->dev); pm_runtime_idle(wm8994->dev); @@ -603,7 +604,9 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) static void wm8994_device_exit(struct wm8994 *wm8994) { + pm_runtime_get_sync(wm8994->dev); pm_runtime_disable(wm8994->dev); + pm_runtime_put_noidle(wm8994->dev); wm8994_irq_exit(wm8994); regulator_bulk_disable(wm8994->num_supplies, wm8994->supplies); regulator_bulk_free(wm8994->num_supplies, wm8994->supplies);