[POWERPC] bootwrapper: Add find_node_by_compatible
Add the ability to find a device node by just what its compatible with. This is useful in cases that we don't have a prop to find the node with. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
03a16b27bd
commit
b3bea15d29
|
@ -133,6 +133,14 @@ static void *fdt_wrapper_find_node_by_prop_value(const void *prev,
|
||||||
return offset_devp(offset);
|
return offset_devp(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *fdt_wrapper_find_node_by_compatible(const void *prev,
|
||||||
|
const char *val)
|
||||||
|
{
|
||||||
|
int offset = fdt_node_offset_by_compatible(fdt, devp_offset_find(prev),
|
||||||
|
val);
|
||||||
|
return offset_devp(offset);
|
||||||
|
}
|
||||||
|
|
||||||
static char *fdt_wrapper_get_path(const void *devp, char *buf, int len)
|
static char *fdt_wrapper_get_path(const void *devp, char *buf, int len)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -164,6 +172,7 @@ void fdt_init(void *blob)
|
||||||
dt_ops.get_parent = fdt_wrapper_get_parent;
|
dt_ops.get_parent = fdt_wrapper_get_parent;
|
||||||
dt_ops.create_node = fdt_wrapper_create_node;
|
dt_ops.create_node = fdt_wrapper_create_node;
|
||||||
dt_ops.find_node_by_prop_value = fdt_wrapper_find_node_by_prop_value;
|
dt_ops.find_node_by_prop_value = fdt_wrapper_find_node_by_prop_value;
|
||||||
|
dt_ops.find_node_by_compatible = fdt_wrapper_find_node_by_compatible;
|
||||||
dt_ops.get_path = fdt_wrapper_get_path;
|
dt_ops.get_path = fdt_wrapper_get_path;
|
||||||
dt_ops.finalize = fdt_wrapper_finalize;
|
dt_ops.finalize = fdt_wrapper_finalize;
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,8 @@ struct dt_ops {
|
||||||
void *(*find_node_by_prop_value)(const void *prev,
|
void *(*find_node_by_prop_value)(const void *prev,
|
||||||
const char *propname,
|
const char *propname,
|
||||||
const char *propval, int proplen);
|
const char *propval, int proplen);
|
||||||
|
void *(*find_node_by_compatible)(const void *prev,
|
||||||
|
const char *compat);
|
||||||
unsigned long (*finalize)(void);
|
unsigned long (*finalize)(void);
|
||||||
char *(*get_path)(const void *phandle, char *buf, int len);
|
char *(*get_path)(const void *phandle, char *buf, int len);
|
||||||
};
|
};
|
||||||
|
@ -172,6 +174,15 @@ static inline void *find_node_by_alias(const char *alias)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void *find_node_by_compatible(const void *prev,
|
||||||
|
const char *compat)
|
||||||
|
{
|
||||||
|
if (dt_ops.find_node_by_compatible)
|
||||||
|
return dt_ops.find_node_by_compatible(prev, compat);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void dt_fixup_memory(u64 start, u64 size);
|
void dt_fixup_memory(u64 start, u64 size);
|
||||||
void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq);
|
void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq);
|
||||||
void dt_fixup_clock(const char *path, u32 freq);
|
void dt_fixup_clock(const char *path, u32 freq);
|
||||||
|
|
Loading…
Reference in New Issue