ARM: rockchip: add option to access the pmu via a phandle in smp_operations
Makes it possible to define a rockchip,pmu phandle in the cpus node directly referencing the pmu syscon instead of searching for specific compatible. The old way of finding the pmu stays of course available. Signed-off-by: Kever Yang <kever.yang@rock-chips.com> Tested-by: Kevin Hilman <khilman@linaro.org> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
parent
d003b58c83
commit
6de2d21ada
|
@ -227,6 +227,15 @@ nodes to be present and contain the properties described below.
|
||||||
# List of phandles to idle state nodes supported
|
# List of phandles to idle state nodes supported
|
||||||
by this cpu [3].
|
by this cpu [3].
|
||||||
|
|
||||||
|
- rockchip,pmu
|
||||||
|
Usage: optional for systems that have an "enable-method"
|
||||||
|
property value of "rockchip,rk3066-smp"
|
||||||
|
While optional, it is the preferred way to get access to
|
||||||
|
the cpu-core power-domains.
|
||||||
|
Value type: <phandle>
|
||||||
|
Definition: Specifies the syscon node controlling the cpu core
|
||||||
|
power domains.
|
||||||
|
|
||||||
Example 1 (dual-cluster big.LITTLE system 32-bit):
|
Example 1 (dual-cluster big.LITTLE system 32-bit):
|
||||||
|
|
||||||
cpus {
|
cpus {
|
||||||
|
|
|
@ -155,6 +155,19 @@ static int __init rockchip_smp_prepare_pmu(void)
|
||||||
struct device_node *node;
|
struct device_node *node;
|
||||||
void __iomem *pmu_base;
|
void __iomem *pmu_base;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is only called via smp_ops->smp_prepare_cpu().
|
||||||
|
* That only happens if a "/cpus" device tree node exists
|
||||||
|
* and has an "enable-method" property that selects the SMP
|
||||||
|
* operations defined herein.
|
||||||
|
*/
|
||||||
|
node = of_find_node_by_path("/cpus");
|
||||||
|
|
||||||
|
pmu = syscon_regmap_lookup_by_phandle(node, "rockchip,pmu");
|
||||||
|
of_node_put(node);
|
||||||
|
if (!IS_ERR(pmu))
|
||||||
|
return 0;
|
||||||
|
|
||||||
pmu = syscon_regmap_lookup_by_compatible("rockchip,rk3066-pmu");
|
pmu = syscon_regmap_lookup_by_compatible("rockchip,rk3066-pmu");
|
||||||
if (!IS_ERR(pmu))
|
if (!IS_ERR(pmu))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue