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: [PATCH 2/2] soc: amlogic: ee-pwrc: ensure driver state maches HW state
Date: Wed, 25 Sep 2019 12:12:33 -0700 [thread overview]
Message-ID: <20190925191233.22253-3-khilman@baylibre.com> (raw)
In-Reply-To: <20190925191233.22253-1-khilman@baylibre.com>
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);
+ else
+ meson_ee_pwrc_on(&dom->base);
+ pm_genpd_init(&dom->base, NULL, is_off);
return 0;
}
--
2.22.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2019-09-25 19:13 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 ` Kevin Hilman [this message]
2019-09-25 21:25 ` [PATCH 2/2] soc: amlogic: ee-pwrc: ensure driver state maches HW state Kevin Hilman
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=20190925191233.22253-3-khilman@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).