Use the for_each_of_cpu_node iterator to iterate over cpu nodes. This
has the side effect of defaulting to iterating using "cpu" node names in
preference to the deprecated (for FDT) device_type == "cpu".

Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org>
Cc: Paul Mackerras <pau...@samba.org>
Cc: Michael Ellerman <m...@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Rob Herring <r...@kernel.org>
---
Please ack and I will take via the DT tree. This is dependent on the
first 2 patches.

 arch/powerpc/platforms/powermac/feature.c | 51 ++++++++---------------
 arch/powerpc/platforms/powermac/setup.c   | 15 +++----
 2 files changed, 26 insertions(+), 40 deletions(-)

diff --git a/arch/powerpc/platforms/powermac/feature.c 
b/arch/powerpc/platforms/powermac/feature.c
index 4eb8cb38fc69..ed2f54b3f173 100644
--- a/arch/powerpc/platforms/powermac/feature.c
+++ b/arch/powerpc/platforms/powermac/feature.c
@@ -1049,7 +1049,6 @@ core99_reset_cpu(struct device_node *node, long param, 
long value)
        unsigned long flags;
        struct macio_chip *macio;
        struct device_node *np;
-       struct device_node *cpus;
        const int dflt_reset_lines[] = {        KL_GPIO_RESET_CPU0,
                                                KL_GPIO_RESET_CPU1,
                                                KL_GPIO_RESET_CPU2,
@@ -1059,10 +1058,7 @@ core99_reset_cpu(struct device_node *node, long param, 
long value)
        if (macio->type != macio_keylargo)
                return -ENODEV;

-       cpus = of_find_node_by_path("/cpus");
-       if (cpus == NULL)
-               return -ENODEV;
-       for (np = cpus->child; np != NULL; np = np->sibling) {
+       for_each_of_cpu_node(np) {
                const u32 *num = of_get_property(np, "reg", NULL);
                const u32 *rst = of_get_property(np, "soft-reset", NULL);
                if (num == NULL || rst == NULL)
@@ -1072,7 +1068,6 @@ core99_reset_cpu(struct device_node *node, long param, 
long value)
                        break;
                }
        }
-       of_node_put(cpus);
        if (np == NULL || reset_io == 0)
                reset_io = dflt_reset_lines[param];

@@ -1504,16 +1499,12 @@ static long g5_reset_cpu(struct device_node *node, long 
param, long value)
        unsigned long flags;
        struct macio_chip *macio;
        struct device_node *np;
-       struct device_node *cpus;

        macio = &macio_chips[0];
        if (macio->type != macio_keylargo2 && macio->type != macio_shasta)
                return -ENODEV;

-       cpus = of_find_node_by_path("/cpus");
-       if (cpus == NULL)
-               return -ENODEV;
-       for (np = cpus->child; np != NULL; np = np->sibling) {
+       for_each_of_cpu_node(np) {
                const u32 *num = of_get_property(np, "reg", NULL);
                const u32 *rst = of_get_property(np, "soft-reset", NULL);
                if (num == NULL || rst == NULL)
@@ -1523,7 +1514,6 @@ static long g5_reset_cpu(struct device_node *node, long 
param, long value)
                        break;
                }
        }
-       of_node_put(cpus);
        if (np == NULL || reset_io == 0)
                return -ENODEV;

@@ -2515,31 +2505,26 @@ static int __init probe_motherboard(void)
         * supposed to be set when not supported, but I'm not very confident
         * that all Apple OF revs did it properly, I do it the paranoid way.
         */
-       while (uninorth_base && uninorth_rev > 3) {
-               struct device_node *cpus = of_find_node_by_path("/cpus");
+       if (uninorth_base && uninorth_rev > 3) {
                struct device_node *np;

-               if (!cpus || !cpus->child) {
-                       printk(KERN_WARNING "Can't find CPU(s) in device tree 
!\n");
-                       of_node_put(cpus);
-                       break;
-               }
-               np = cpus->child;
-               /* Nap mode not supported on SMP */
-               if (np->sibling) {
-                       of_node_put(cpus);
-                       break;
-               }
-               /* Nap mode not supported if flush-on-lock property is present 
*/
-               if (of_get_property(np, "flush-on-lock", NULL)) {
-                       of_node_put(cpus);
-                       break;
+               for_each_of_cpu_node(np) {
+                       int cpu_count = 1;
+
+                       /* Nap mode not supported on SMP */
+                       if (of_get_property(np, "flush-on-lock", NULL) ||
+                           (cpu_count > 1)) {
+                               powersave_nap = 0;
+                               of_node_put(np);
+                               break;
+                       }
+
+                       cpu_count++;
+                       powersave_nap = 1;
                }
-               of_node_put(cpus);
-               powersave_nap = 1;
-               printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
-               break;
        }
+       if (powersave_nap)
+               printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");

        /* On CPUs that support it (750FX), lowspeed by default during
         * NAP mode
diff --git a/arch/powerpc/platforms/powermac/setup.c 
b/arch/powerpc/platforms/powermac/setup.c
index 3a529fcdae97..2f00e3daafb0 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -243,10 +243,9 @@ static void __init l2cr_init(void)
 {
        /* Checks "l2cr-value" property in the registry */
        if (cpu_has_feature(CPU_FTR_L2CR)) {
-               struct device_node *np = of_find_node_by_name(NULL, "cpus");
-               if (!np)
-                       np = of_find_node_by_type(NULL, "cpu");
-               if (np) {
+               struct device_node *np;
+
+               for_each_of_cpu_node(np) {
                        const unsigned int *l2cr =
                                of_get_property(np, "l2cr-value", NULL);
                        if (l2cr) {
@@ -256,6 +255,7 @@ static void __init l2cr_init(void)
                                _set_L2CR(ppc_override_l2cr_value);
                        }
                        of_node_put(np);
+                       break;
                }
        }

@@ -279,8 +279,8 @@ static void __init pmac_setup_arch(void)
        /* Set loops_per_jiffy to a half-way reasonable value,
           for use until calibrate_delay gets called. */
        loops_per_jiffy = 50000000 / HZ;
-       cpu = of_find_node_by_type(NULL, "cpu");
-       if (cpu != NULL) {
+
+       for_each_of_cpu_node(cpu) {
                fp = of_get_property(cpu, "clock-frequency", NULL);
                if (fp != NULL) {
                        if (pvr >= 0x30 && pvr < 0x80)
@@ -292,8 +292,9 @@ static void __init pmac_setup_arch(void)
                        else
                                /* 601, 603, etc. */
                                loops_per_jiffy = *fp / (2 * HZ);
+                       of_node_put(cpu);
+                       break;
                }
-               of_node_put(cpu);
        }

        /* See if newworld or oldworld */
--
2.17.1

Reply via email to