Lines Matching +full:power +full:- +full:domain +full:- +full:node

1 // SPDX-License-Identifier: GPL-2.0-or-later
57 np = dev->of_node; in rockchip_get_core_reset()
77 * We need to soft reset the cpu when we turn off the cpu power domain, in pmu_set_power_domain()
87 pr_err("%s: could not update power domain\n", in pmu_set_power_domain()
92 ret = -1; in pmu_set_power_domain()
96 pr_err("%s: could not read power domain state\n", 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 /* enable the SCU power domain */ in rockchip_smp_prepare_cpus()
285 of_node_put(node); in rockchip_smp_prepare_cpus()
286 node = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu"); in rockchip_smp_prepare_cpus()
287 if (!node) { in rockchip_smp_prepare_cpus()
292 scu_base_addr = of_iomap(node, 0); in rockchip_smp_prepare_cpus()
295 of_node_put(node); in rockchip_smp_prepare_cpus()
320 if (rockchip_smp_prepare_sram(node)) { in rockchip_smp_prepare_cpus()
321 of_node_put(node); in rockchip_smp_prepare_cpus()
326 of_node_put(node); in rockchip_smp_prepare_cpus()
342 * prior to having the power domain disabled. in rockchip_cpu_kill()
376 CPU_METHOD_OF_DECLARE(rk3036_smp, "rockchip,rk3036-smp", &rk3036_smp_ops);
377 CPU_METHOD_OF_DECLARE(rk3066_smp, "rockchip,rk3066-smp", &rockchip_smp_ops);