From: Lee Jones <lee.jones@linaro.org>
To: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Cc: sameo@linux.intel.com, patches@opensource.wolfsonmicro.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] mfd: arizona: Fix initialisation of the PM runtime
Date: Wed, 24 Jun 2015 12:29:49 +0100 [thread overview]
Message-ID: <20150624112949.GK15013@x1> (raw)
In-Reply-To: <1434292910-24919-2-git-send-email-ckeepax@opensource.wolfsonmicro.com>
On Sun, 14 Jun 2015, Charles Keepax wrote:
> The PM runtime core by default assumes a chip is suspended when runtime
> PM is enabled. Currently the arizona driver enables runtime PM when the
> chip is fully active and then disables the DCVDD regulator at the end of
> arizona_dev_init. This however has several problems, firstly the if we
> reach the end of arizona_dev_init, we did not properly follow all the
> proceedures for shutting down the chip, and most notably we never marked
> the chip as cache only so any writes occurring between then and the next
> PM runtime resume will be lost. Secondly, if we are already resumed when
> we reach the end of dev_init, then at best we get unbalanced regulator
> enable/disables at work we lose DCVDD whilst we need it.
>
> Additionally, since the commit 4f0216409f7c ("mfd: arizona: Add better
> support for system suspend"), the PM runtime operations may
> disable/enable the IRQ, so the IRQs must now be enabled before we call
> any PM operations.
>
> This patch adds a call to pm_runtime_set_active to inform the PM core
> that the device is starting up active and moves the PM enabling to
> around the IRQ initialisation to avoid any PM callbacks happening until
> the IRQs are initialised.
>
> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
> ---
> drivers/mfd/arizona-core.c | 14 ++++++--------
> 1 files changed, 6 insertions(+), 8 deletions(-)
Applied, thanks.
> diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
> index e60bcd9..a72ddb2 100644
> --- a/drivers/mfd/arizona-core.c
> +++ b/drivers/mfd/arizona-core.c
> @@ -1141,10 +1141,6 @@ int arizona_dev_init(struct arizona *arizona)
> arizona->pdata.gpio_defaults[i]);
> }
>
> - pm_runtime_set_autosuspend_delay(arizona->dev, 100);
> - pm_runtime_use_autosuspend(arizona->dev);
> - pm_runtime_enable(arizona->dev);
> -
> /* Chip default */
> if (!arizona->pdata.clk32k_src)
> arizona->pdata.clk32k_src = ARIZONA_32KZ_MCLK2;
> @@ -1245,11 +1241,17 @@ int arizona_dev_init(struct arizona *arizona)
> arizona->pdata.spk_fmt[i]);
> }
>
> + pm_runtime_set_active(arizona->dev);
> + pm_runtime_enable(arizona->dev);
> +
> /* Set up for interrupts */
> ret = arizona_irq_init(arizona);
> if (ret != 0)
> goto err_reset;
>
> + pm_runtime_set_autosuspend_delay(arizona->dev, 100);
> + pm_runtime_use_autosuspend(arizona->dev);
> +
> arizona_request_irq(arizona, ARIZONA_IRQ_CLKGEN_ERR, "CLKGEN error",
> arizona_clkgen_err, arizona);
> arizona_request_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, "Overclocked",
> @@ -1278,10 +1280,6 @@ int arizona_dev_init(struct arizona *arizona)
> goto err_irq;
> }
>
> -#ifdef CONFIG_PM
> - regulator_disable(arizona->dcvdd);
> -#endif
> -
> return 0;
>
> err_irq:
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2015-06-24 11:30 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-14 14:41 [PATCH 1/2] mfd: arizona: Fix race between runtime suspend and IRQs Charles Keepax
2015-06-14 14:41 ` [PATCH 2/2] mfd: arizona: Fix initialisation of the PM runtime Charles Keepax
2015-06-24 11:29 ` Lee Jones [this message]
2015-06-24 11:28 ` [PATCH 1/2] mfd: arizona: Fix race between runtime suspend and IRQs Lee Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150624112949.GK15013@x1 \
--to=lee.jones@linaro.org \
--cc=ckeepax@opensource.wolfsonmicro.com \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@opensource.wolfsonmicro.com \
--cc=sameo@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox