powerpc/pseries: re-use code from of_helpers module
The derive_parent() has similar semantics to what we have in newly introduced of_helpers module. The replacement reduces code base and propagates the actual error code to the caller. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
a46d988409
commit
06bacefcbd
|
@ -18,6 +18,8 @@
|
|||
#include <linux/cpu.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#include "of_helpers.h"
|
||||
#include "offline_states.h"
|
||||
#include "pseries.h"
|
||||
|
||||
|
@ -244,36 +246,13 @@ cc_error:
|
|||
return first_dn;
|
||||
}
|
||||
|
||||
static struct device_node *derive_parent(const char *path)
|
||||
{
|
||||
struct device_node *parent;
|
||||
char *last_slash;
|
||||
|
||||
last_slash = strrchr(path, '/');
|
||||
if (last_slash == path) {
|
||||
parent = of_find_node_by_path("/");
|
||||
} else {
|
||||
char *parent_path;
|
||||
int parent_path_len = last_slash - path + 1;
|
||||
parent_path = kmalloc(parent_path_len, GFP_KERNEL);
|
||||
if (!parent_path)
|
||||
return NULL;
|
||||
|
||||
strlcpy(parent_path, path, parent_path_len);
|
||||
parent = of_find_node_by_path(parent_path);
|
||||
kfree(parent_path);
|
||||
}
|
||||
|
||||
return parent;
|
||||
}
|
||||
|
||||
int dlpar_attach_node(struct device_node *dn)
|
||||
{
|
||||
int rc;
|
||||
|
||||
dn->parent = derive_parent(dn->full_name);
|
||||
if (!dn->parent)
|
||||
return -ENOMEM;
|
||||
dn->parent = pseries_of_derive_parent(dn->full_name);
|
||||
if (IS_ERR(dn->parent))
|
||||
return PTR_ERR(dn->parent);
|
||||
|
||||
rc = of_attach_node(dn);
|
||||
if (rc) {
|
||||
|
|
Loading…
Reference in New Issue