Hi Grant,
Hi Manjunatha.On Fri, Jul 1, 2011 at 7:55 AM, Manjunatha GK <manjugk-l0cyMroinI0@public.gmane.org> wrote:
> Use helper function of_property_read_u32() in place of of_get_property
> and be32_to_cpup() api's for code optimization.
>
> Compile tested the changes.
>
> Signed-off-by: G, Manjunath Kondaiah <manjugk-l0cyMroinI0@public.gmane.org>
> ---
> drivers/of/irq.c | 37 ++++++++++++++++++++++---------------
> drivers/of/of_i2c.c | 8 +++-----
> drivers/of/of_mdio.c | 16 ++++++----------
> 3 files changed, 31 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 9f689f1..13c02e2 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -59,20 +59,20 @@ EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
> struct device_node *of_irq_find_parent(struct device_node *child)
> {
> struct device_node *p;
> - const __be32 *parp;
> + u32 *parp = NULL;
>
> if (!of_node_get(child))
> return NULL;
>
> do {
> - parp = of_get_property(child, "interrupt-parent", NULL);
> + of_property_read_u32(child, "interrupt-parent", parp);
> if (parp == NULL)
> p = of_get_parent(child);
This won't work. You must pass a valid pointer. It needs to be done this way;
u32 parp;
if (of_property_read_u32(child, "interrupt-parent", &parp) == 0) {
...
} else {
...
}