Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6de2d21a authored by Heiko Stuebner's avatar Heiko Stuebner
Browse files

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: default avatarKever Yang <kever.yang@rock-chips.com>
Tested-by: default avatarKevin Hilman <khilman@linaro.org>
Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
parent d003b58c
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -227,6 +227,15 @@ nodes to be present and contain the properties described below.
			# List of phandles to idle state nodes supported
			  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):

	cpus {
+13 −0
Original line number Diff line number Diff line
@@ -155,6 +155,19 @@ static int __init rockchip_smp_prepare_pmu(void)
	struct device_node *node;
	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");
	if (!IS_ERR(pmu))
		return 0;