From: Amit Daniel Kachhap <amit.daniel@samsung.com>
To: linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org
Cc: kgene.kim@samsung.com, linux-kernel@vger.kernel.org,
s.nawrocki@samsung.com, pankaj.dubey@samsung.com,
ulf.hansson@linaro.org, khilman@kernel.org,
linux-pm@vger.kernel.org, geert@linux-m68k.org,
rjw@rjwysocki.net, devicetree@vger.kernel.org,
Amit Daniel Kachhap <amit.daniel@samsung.com>
Subject: [PATCH RFC v2 08/12] soc: samsung: pm_domain: Add support for parent power domain
Date: Mon, 24 Nov 2014 18:34:12 +0530 [thread overview]
Message-ID: <1416834256-11225-8-git-send-email-amit.daniel@samsung.com> (raw)
In-Reply-To: <1416834256-11225-1-git-send-email-amit.daniel@samsung.com>
This patch adds supports for parent power domain. This will ensure
invoking of parent/child power domain on/off in a correct sequence.
In exynos7 SOC's, power domain controllers have parent and child
hierarchy.
Cc: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
---
.../bindings/arm/exynos/power_domain.txt | 2 +
drivers/soc/samsung/pm_domains.c | 43 +++++++++++++++++++-
2 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
index 00ebda1..0160bdc 100644
--- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
+++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
@@ -24,6 +24,7 @@ Optional Properties:
- pclkN, clkN: Pairs of parent of input clock and input clock to the
devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
are supported currently.
+- parents: phandle of parent power domains.
Node of a device using power domains must have a samsung,power-domain property
defined with a phandle to respective power domain.
@@ -48,6 +49,7 @@ Example:
mfc_pd: power-domain@10044060 {
compatible = "samsung,exynos4210-pd", "samsung,exynos7-pd-mfc";
reg = <0x10044060 0x20>;
+ parents = <&pd_top>;
#power-domain-cells = <0>;
};
diff --git a/drivers/soc/samsung/pm_domains.c b/drivers/soc/samsung/pm_domains.c
index f4f2a6c..89e2fd5 100644
--- a/drivers/soc/samsung/pm_domains.c
+++ b/drivers/soc/samsung/pm_domains.c
@@ -25,10 +25,10 @@
#include <linux/soc/samsung/exynos-pmu.h>
#define MAX_CLK_PER_DOMAIN 4
+#define MAX_PARENT_POWER_DOMAIN 10
static struct exynos_pmu_pd_ops *pd_ops;
-
/*
* Exynos specific wrapper around the generic power domain
*/
@@ -169,6 +169,47 @@ no_clk:
of_genpd_add_provider_simple(np, &pd->pd);
}
+ /* Assign the child power domains to their parents */
+ for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
+ struct device_node *parent_np;
+ int i;
+ struct generic_pm_domain *child_domain, *parent_domain;
+ const char *name;
+
+ if (of_property_read_string_index(np, "compatible", 1,
+ &name)) {
+ /* Second entry not found, use the node name*/
+ name = np->name;
+ }
+
+ child_domain = pm_genpd_lookup_name(name);
+ if (!child_domain)
+ continue;
+ /* search parents in device tree */
+ for (i = 0; i < MAX_PARENT_POWER_DOMAIN; i++) {
+ parent_np = of_parse_phandle(np, "parents", i);
+ if (!parent_np)
+ break;
+
+ if (of_property_read_string_index(parent_np,
+ "compatible", 1, &name)) {
+ /* Second entry not found, use the node name*/
+ name = parent_np->name;
+ }
+
+ parent_domain = pm_genpd_lookup_name(name);
+ if (!parent_domain)
+ break;
+ if (pm_genpd_add_subdomain(parent_domain, child_domain))
+ pr_warn("%s failed to add subdomain: %s\n",
+ parent_domain->name,
+ child_domain->name);
+ else
+ pr_info("%s has as child subdomain: %s.\n",
+ parent_domain->name,
+ child_domain->name);
+ }
+ }
return 0;
}
--
1.7.9.5
next prev parent reply other threads:[~2014-11-24 13:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 12:52 [PATCH RFC v2 00/12] soc: samsung: Modify and enhance power domain driver Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 01/12] arm: exynos: Add platform driver support for " Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 02/12] soc: exynos: Move exynos power domain file to driver/soc/samsung folder Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 03/12] soc: samsung: exynos-pmu: Register exynos pd driver as a mfd client Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 04/12] soc: samsung: Re-structure PMU driver to create pd on/off handlers Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 05/12] soc: samsung: pm_domain: Use unique compatible name for power domain Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 06/12] driver: soc: exynos-pmu: Add exynos7 power domain on/off ops Amit Daniel Kachhap
[not found] ` <1416834256-11225-6-git-send-email-amit.daniel-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-25 7:30 ` Ulf Hansson
2014-11-25 8:33 ` amit daniel kachhap
2014-11-24 13:04 ` [PATCH RFC v2 07/12] PM / Domains: export pm_genpd_lookup_name Amit Daniel Kachhap
2014-11-25 7:35 ` Ulf Hansson
2014-11-25 8:48 ` amit daniel kachhap
2014-11-27 14:20 ` Ulf Hansson
2014-11-28 8:52 ` amit daniel kachhap
2014-11-24 13:04 ` Amit Daniel Kachhap [this message]
2014-11-25 7:59 ` [PATCH RFC v2 08/12] soc: samsung: pm_domain: Add support for parent power domain Ulf Hansson
[not found] ` <CAPDyKFoBnViXQF=wDYp0x4gaOO4ht3a8KBeY6=k6_Zkkav28pQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-25 8:57 ` amit daniel kachhap
2014-11-25 9:19 ` Geert Uytterhoeven
2014-12-03 8:36 ` Marek Szyprowski
2014-11-24 13:04 ` [PATCH RFC v2 09/12] drivers: soc: pm_domain: Modify the parent clocks bindings Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 10/12] drivers: soc: samsung: Add support for clock enabling in power domain Amit Daniel Kachhap
[not found] ` <1416834256-11225-1-git-send-email-amit.daniel-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-24 13:04 ` [PATCH RFC v2 11/12] drivers: soc: samsung: Add support for clock rate save/restore " Amit Daniel Kachhap
2014-11-24 13:04 ` [PATCH RFC v2 12/12] arm64: Kconfig: Enable PM_GENERIC_DOMAINS for exynos7 Amit Daniel Kachhap
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=1416834256-11225-8-git-send-email-amit.daniel@samsung.com \
--to=amit.daniel@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=kgene.kim@samsung.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=pankaj.dubey@samsung.com \
--cc=rjw@rjwysocki.net \
--cc=s.nawrocki@samsung.com \
--cc=ulf.hansson@linaro.org \
/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).