mirror of https://github.com/torvalds/linux.git
pmdomain: samsung: Rework legacy splash-screen handover workaround
Limit the workaround for the lack of the proper splash-screen handover
handling to the legacy ARM 32bit systems and replace forcing a sync_state
by explicite power domain shutdown. This approach lets compiler to
optimize it out on newer ARM 64bit systems.
Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Fixes: 0745658aeb ("pmdomain: samsung: Fix splash-screen handover by enforcing a sync_state")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
7458f72cc2
commit
fccac54b0d
|
|
@ -128,6 +128,15 @@ static int exynos_pd_probe(struct platform_device *pdev)
|
||||||
pd->pd.power_on = exynos_pd_power_on;
|
pd->pd.power_on = exynos_pd_power_on;
|
||||||
pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg;
|
pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some Samsung platforms with bootloaders turning on the splash-screen
|
||||||
|
* and handing it over to the kernel, requires the power-domains to be
|
||||||
|
* reset during boot.
|
||||||
|
*/
|
||||||
|
if (IS_ENABLED(CONFIG_ARM) &&
|
||||||
|
of_device_is_compatible(np, "samsung,exynos4210-pd"))
|
||||||
|
exynos_pd_power_off(&pd->pd);
|
||||||
|
|
||||||
on = readl_relaxed(pd->base + 0x4) & pd->local_pwr_cfg;
|
on = readl_relaxed(pd->base + 0x4) & pd->local_pwr_cfg;
|
||||||
|
|
||||||
pm_genpd_init(&pd->pd, NULL, !on);
|
pm_genpd_init(&pd->pd, NULL, !on);
|
||||||
|
|
@ -146,15 +155,6 @@ static int exynos_pd_probe(struct platform_device *pdev)
|
||||||
parent.np, child.np);
|
parent.np, child.np);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Some Samsung platforms with bootloaders turning on the splash-screen
|
|
||||||
* and handing it over to the kernel, requires the power-domains to be
|
|
||||||
* reset during boot. As a temporary hack to manage this, let's enforce
|
|
||||||
* a sync_state.
|
|
||||||
*/
|
|
||||||
if (!ret)
|
|
||||||
of_genpd_sync_state(np);
|
|
||||||
|
|
||||||
pm_runtime_enable(dev);
|
pm_runtime_enable(dev);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue