Lines Matching +full:pd +full:- +full:node
1 // SPDX-License-Identifier: GPL-2.0-or-later
38 static int pmu_power_domain_is_on(int pd) in pmu_power_domain_is_on() argument
47 return !(val & BIT(pd)); in pmu_power_domain_is_on()
57 np = dev->of_node; in rockchip_get_core_reset()
64 static int pmu_set_power_domain(int pd, bool on) in pmu_set_power_domain() argument
66 u32 val = (on) ? 0 : BIT(pd); in pmu_set_power_domain()
67 struct reset_control *rstc = rockchip_get_core_reset(pd); in pmu_set_power_domain()
72 __func__, pd); in pmu_set_power_domain()
85 ret = regmap_update_bits(pmu, PMU_PWRDN_CON, BIT(pd), val); in pmu_set_power_domain()
92 ret = -1; in pmu_set_power_domain()
94 ret = pmu_power_domain_is_on(pd); in pmu_set_power_domain()
122 return -ENXIO; in rockchip_boot_secondary()
128 return -ENXIO; in rockchip_boot_secondary()
159 * rockchip_smp_prepare_sram - populate necessary sram block
160 * Starting cores execute the code residing at the start of the on-chip sram
161 * after power-on. Therefore make sure, this sram region is reserved and
163 * core to the real startup code in ram into the sram-region.
164 * @node: mmio-sram device node
166 static int __init rockchip_smp_prepare_sram(struct device_node *node) in rockchip_smp_prepare_sram() argument
168 unsigned int trampoline_sz = &rockchip_secondary_trampoline_end - in rockchip_smp_prepare_sram()
174 ret = of_address_to_resource(node, 0, &res); in rockchip_smp_prepare_sram()
176 pr_err("%s: could not get address for node %pOF\n", in rockchip_smp_prepare_sram()
177 __func__, node); in rockchip_smp_prepare_sram()
185 return -EINVAL; in rockchip_smp_prepare_sram()
202 .name = "rockchip-pmu",
210 struct device_node *node; in rockchip_smp_prepare_pmu() local
214 * This function is only called via smp_ops->smp_prepare_cpu(). in rockchip_smp_prepare_pmu()
215 * That only happens if a "/cpus" device tree node exists in rockchip_smp_prepare_pmu()
216 * and has an "enable-method" property that selects the SMP in rockchip_smp_prepare_pmu()
219 node = of_find_node_by_path("/cpus"); in rockchip_smp_prepare_pmu()
221 pmu = syscon_regmap_lookup_by_phandle(node, "rockchip,pmu"); in rockchip_smp_prepare_pmu()
222 of_node_put(node); in rockchip_smp_prepare_pmu()
226 pmu = syscon_regmap_lookup_by_compatible("rockchip,rk3066-pmu"); in rockchip_smp_prepare_pmu()
232 node = of_find_compatible_node(NULL, NULL, "rockchip,rk3066-pmu"); in rockchip_smp_prepare_pmu()
233 if (!node) { in rockchip_smp_prepare_pmu()
234 pr_err("%s: could not find pmu dt node\n", __func__); in rockchip_smp_prepare_pmu()
235 return -ENODEV; in rockchip_smp_prepare_pmu()
238 pmu_base = of_iomap(node, 0); in rockchip_smp_prepare_pmu()
239 of_node_put(node); in rockchip_smp_prepare_pmu()
242 return -ENOMEM; in rockchip_smp_prepare_pmu()
260 struct device_node *node; in rockchip_smp_prepare_cpus() local
263 node = of_find_compatible_node(NULL, NULL, "rockchip,rk3066-smp-sram"); in rockchip_smp_prepare_cpus()
264 if (!node) { in rockchip_smp_prepare_cpus()
265 pr_err("%s: could not find sram dt node\n", __func__); in rockchip_smp_prepare_cpus()
269 sram_base_addr = of_iomap(node, 0); in rockchip_smp_prepare_cpus()
272 of_node_put(node); in rockchip_smp_prepare_cpus()
277 of_node_put(node); in rockchip_smp_prepare_cpus()
282 if (rockchip_smp_prepare_sram(node)) { in rockchip_smp_prepare_cpus()
283 of_node_put(node); in rockchip_smp_prepare_cpus()
290 of_node_put(node); in rockchip_smp_prepare_cpus()
291 node = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu"); in rockchip_smp_prepare_cpus()
292 if (!node) { in rockchip_smp_prepare_cpus()
297 scu_base_addr = of_iomap(node, 0); in rockchip_smp_prepare_cpus()
300 of_node_put(node); in rockchip_smp_prepare_cpus()
319 of_node_put(node); in rockchip_smp_prepare_cpus()
373 CPU_METHOD_OF_DECLARE(rk3036_smp, "rockchip,rk3036-smp", &rk3036_smp_ops);
374 CPU_METHOD_OF_DECLARE(rk3066_smp, "rockchip,rk3066-smp", &rockchip_smp_ops);