From: Kevin Hilman <khilman@baylibre.com>
To: linux-amlogic@lists.infradead.org,
Neil Armstrong <narmstrong@baylibre.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH 2/2] soc: amlogic: ee-pwrc: ensure driver state maches HW state
Date: Wed, 25 Sep 2019 14:25:43 -0700 [thread overview]
Message-ID: <7hftkkukyw.fsf@baylibre.com> (raw)
In-Reply-To: <20190925191233.22253-3-khilman@baylibre.com>
Kevin Hilman <khilman@baylibre.com> writes:
> During init, ensure that the driver on/off state as well as clock
> state matches the hardware state by calling drivers on/off functions
> based on whether the HW state is on/off.
>
> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
> ---
> drivers/soc/amlogic/meson-ee-pwrc.c | 30 +++++++++--------------------
> 1 file changed, 9 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/soc/amlogic/meson-ee-pwrc.c b/drivers/soc/amlogic/meson-ee-pwrc.c
> index dcce8e694a07..2cb5341aedfa 100644
> --- a/drivers/soc/amlogic/meson-ee-pwrc.c
> +++ b/drivers/soc/amlogic/meson-ee-pwrc.c
> @@ -323,6 +323,8 @@ static int meson_ee_pwrc_init_domain(struct platform_device *pdev,
> struct meson_ee_pwrc *pwrc,
> struct meson_ee_pwrc_domain *dom)
> {
> + bool is_off;
> +
> dom->pwrc = pwrc;
> dom->num_rstc = dom->desc.reset_names_count;
> dom->num_clks = dom->desc.clk_names_count;
> @@ -356,27 +358,13 @@ static int meson_ee_pwrc_init_domain(struct platform_device *pdev,
> dom->base.power_on = meson_ee_pwrc_on;
> dom->base.power_off = meson_ee_pwrc_off;
>
> - /*
> - * TOFIX: This is a special case for the VPU power domain, which can
> - * be enabled previously by the bootloader. In this case the VPU
> - * pipeline may be functional but no driver maybe never attach
> - * to this power domain, and if the domain is disabled it could
> - * cause system errors. This is why the pm_domain_always_on_gov
> - * is used here.
> - * For the same reason, the clocks should be enabled in case
> - * we need to power the domain off, otherwise the internal clocks
> - * prepare/enable counters won't be in sync.
> - */
> - if (dom->num_clks && dom->desc.is_off && !dom->desc.is_off(dom)) {
> - int ret = clk_bulk_prepare_enable(dom->num_clks, dom->clks);
> - if (ret)
> - return ret;
> -
> - pm_genpd_init(&dom->base, &pm_domain_always_on_gov, false);
> - } else
> - pm_genpd_init(&dom->base, NULL,
> - (dom->desc.is_off ?
> - dom->desc.is_off(dom) : true));
> + /* Ensure that driver state matches HW state */
> + is_off = dom->desc.is_off ? dom->desc.is_off(dom) : true;
> + if (is_off)
> + meson_ee_pwrc_off(&dom->base);
Neil pointed out off-list that this isn't quite right.
This _off() call can potentially try to disable clocks that have never
been enabled (by the clock fwk) resulting in noisy warnings.
I'll send a v2 which always calls _on() and then optionall calls _off().
That will ensure that the drivers notion of the clock state also matches
the HW state.
Kevin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2019-09-25 21:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-25 19:12 [PATCH 0/2] soc: amlogic: ee-pwrc: cleanup init state Kevin Hilman
2019-09-25 19:12 ` [PATCH 1/2] soc: amlogic: ee-pwrc: rename get_power Kevin Hilman
2019-09-25 19:12 ` [PATCH 2/2] soc: amlogic: ee-pwrc: ensure driver state maches HW state Kevin Hilman
2019-09-25 21:25 ` Kevin Hilman [this message]
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=7hftkkukyw.fsf@baylibre.com \
--to=khilman@baylibre.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=narmstrong@baylibre.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;
as well as URLs for NNTP newsgroup(s).