From 7d8674fd9ada62089f09a68934cdf14a305f273a Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Thu, 24 Jan 2008 22:41:05 -0600 Subject: [PATCH] --- yaml --- r: 81366 b: refs/heads/master c: b3bea15d29799797d1486aeddf883404a2e05c81 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/boot/libfdt-wrapper.c | 9 +++++++++ trunk/arch/powerpc/boot/ops.h | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7a68b9fd3733..5a8897dabc67 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 03a16b27bd30f22d88f570585551925248469f84 +refs/heads/master: b3bea15d29799797d1486aeddf883404a2e05c81 diff --git a/trunk/arch/powerpc/boot/libfdt-wrapper.c b/trunk/arch/powerpc/boot/libfdt-wrapper.c index 97af36c224bd..59016bef1391 100644 --- a/trunk/arch/powerpc/boot/libfdt-wrapper.c +++ b/trunk/arch/powerpc/boot/libfdt-wrapper.c @@ -133,6 +133,14 @@ static void *fdt_wrapper_find_node_by_prop_value(const void *prev, 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) { int rc; @@ -164,6 +172,7 @@ void fdt_init(void *blob) dt_ops.get_parent = fdt_wrapper_get_parent; 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_compatible = fdt_wrapper_find_node_by_compatible; dt_ops.get_path = fdt_wrapper_get_path; dt_ops.finalize = fdt_wrapper_finalize; diff --git a/trunk/arch/powerpc/boot/ops.h b/trunk/arch/powerpc/boot/ops.h index 5872ef1779ae..4b0544b03c64 100644 --- a/trunk/arch/powerpc/boot/ops.h +++ b/trunk/arch/powerpc/boot/ops.h @@ -46,6 +46,8 @@ struct dt_ops { void *(*find_node_by_prop_value)(const void *prev, const char *propname, const char *propval, int proplen); + void *(*find_node_by_compatible)(const void *prev, + const char *compat); unsigned long (*finalize)(void); 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; } +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_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); void dt_fixup_clock(const char *path, u32 freq);