summaryrefslogtreecommitdiffstats
path: root/drivers/soc
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2018-02-21 05:15:22 -0500
committerSylwester Nawrocki <s.nawrocki@samsung.com>2018-03-06 11:33:37 -0500
commitaf8d30ac64e1ddef50981dc039f5773f57338b1a (patch)
tree9b5b594b2d336eb2772f3488af50239a61ebcaf9 /drivers/soc
parent7928b2cbe55b2a410a0f5c1f154610059c57b1b2 (diff)
soc: samsung: pm_domains: Add blacklisting clock handling
Handling of clock reparenting will be move to clock controller driver, so add possibility to blacklist clock handling on systems, where the clock controller already does all needed operations. This is needed to avoid potential deadlock on clock reparenting during power domain on/off procedure. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/samsung/pm_domains.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/soc/samsung/pm_domains.c b/drivers/soc/samsung/pm_domains.c
index b6a436594a19..cef30bdf19b1 100644
--- a/drivers/soc/samsung/pm_domains.c
+++ b/drivers/soc/samsung/pm_domains.c
@@ -147,6 +147,9 @@ static __init const char *exynos_get_domain_name(struct device_node *node)
147 return kstrdup_const(name, GFP_KERNEL); 147 return kstrdup_const(name, GFP_KERNEL);
148} 148}
149 149
150static const char *soc_force_no_clk[] = {
151};
152
150static __init int exynos4_pm_init_power_domain(void) 153static __init int exynos4_pm_init_power_domain(void)
151{ 154{
152 struct device_node *np; 155 struct device_node *np;
@@ -183,6 +186,11 @@ static __init int exynos4_pm_init_power_domain(void)
183 pd->pd.power_on = exynos_pd_power_on; 186 pd->pd.power_on = exynos_pd_power_on;
184 pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg; 187 pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg;
185 188
189 for (i = 0; i < ARRAY_SIZE(soc_force_no_clk); i++)
190 if (of_find_compatible_node(NULL, NULL,
191 soc_force_no_clk[i]))
192 goto no_clk;
193
186 for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) { 194 for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
187 char clk_name[8]; 195 char clk_name[8];
188 196