Lines Matching +full:cpu +full:- +full:syscon
1 // SPDX-License-Identifier: GPL-2.0-only
3 * linux/arch/arm/mach-axxia/platsmp.c
15 /* Syscon register offsets for releasing cores from reset */
31 static int axxia_boot_secondary(unsigned int cpu, struct task_struct *idle) in axxia_boot_secondary() argument
34 void __iomem *syscon; in axxia_boot_secondary() local
37 syscon_np = of_find_compatible_node(NULL, NULL, "lsi,axxia-syscon"); in axxia_boot_secondary()
39 return -ENOENT; in axxia_boot_secondary()
41 syscon = of_iomap(syscon_np, 0); in axxia_boot_secondary()
43 if (!syscon) in axxia_boot_secondary()
44 return -ENOMEM; in axxia_boot_secondary()
46 tmp = readl(syscon + SC_RST_CPU_HOLD); in axxia_boot_secondary()
47 writel(0xab, syscon + SC_CRIT_WRITE_KEY); in axxia_boot_secondary()
48 tmp &= ~(1 << cpu); in axxia_boot_secondary()
49 writel(tmp, syscon + SC_RST_CPU_HOLD); in axxia_boot_secondary()
57 int cpu; in axxia_smp_prepare_cpus() local
63 for_each_possible_cpu(cpu) { in axxia_smp_prepare_cpus()
67 np = of_get_cpu_node(cpu, NULL); in axxia_smp_prepare_cpus()
70 if (of_property_read_u32(np, "cpu-release-addr", &release_phys)) in axxia_smp_prepare_cpus()
74 set_cpu_present(cpu, true); in axxia_smp_prepare_cpus()
87 CPU_METHOD_OF_DECLARE(axxia_smp, "lsi,syscon-release", &axxia_smp_ops);