By using for_each_node_by_type().
Also, correct a spurioud test in check_cpu_node() on sparc64.
It is only called with nodes that have device_type "cpu".
Signed-off-by: David S. Miller <davem@davemloft.net>
#include <asm/page.h>
#include <asm/oplib.h>
#include <asm/page.h>
#include <asm/oplib.h>
#include <asm/smp.h>
#include <asm/system.h>
#include <asm/cpudata.h>
#include <asm/smp.h>
#include <asm/system.h>
#include <asm/cpudata.h>
int (*compare)(int, int, void *), void *compare_arg,
int *prom_node, int *mid)
{
int (*compare)(int, int, void *), void *compare_arg,
int *prom_node, int *mid)
{
- char node_str[128];
-
- prom_getstring(nd, "device_type", node_str, sizeof(node_str));
- if (strcmp(node_str, "cpu"))
- return -ENODEV;
-
if (!compare(nd, *cur_inst, compare_arg)) {
if (prom_node)
*prom_node = nd;
if (!compare(nd, *cur_inst, compare_arg)) {
if (prom_node)
*prom_node = nd;
static int __cpu_find_by(int (*compare)(int, int, void *), void *compare_arg,
int *prom_node, int *mid)
{
static int __cpu_find_by(int (*compare)(int, int, void *), void *compare_arg,
int *prom_node, int *mid)
{
+ struct device_node *dp;
+ int cur_inst;
-
- err = check_cpu_node(nd, &cur_inst, compare, compare_arg,
- prom_node, mid);
- if (!err)
- return 0;
-
- nd = prom_getchild(nd);
- while ((nd = prom_getsibling(nd)) != 0) {
- err = check_cpu_node(nd, &cur_inst, compare, compare_arg,
- prom_node, mid);
+ for_each_node_by_type(dp, "cpu") {
+ int err = check_cpu_node(dp->node, &cur_inst,
+ compare, compare_arg,
+ prom_node, mid);
void *compare_arg,
struct device_node **dev_node, int *mid)
{
void *compare_arg,
struct device_node **dev_node, int *mid)
{
- if (strcmp(dp->type, "cpu"))
- return -ENODEV;
-
if (!compare(dp, *cur_inst, compare_arg)) {
if (dev_node)
*dev_node = dp;
if (!compare(dp, *cur_inst, compare_arg)) {
if (dev_node)
*dev_node = dp;