[PATCH] fsl_soc: Fix get_immrbase() to use ranges, rather than reg.
Kumar Gala
galak at kernel.crashing.org
Tue Jan 15 13:37:27 EST 2008
On Jan 14, 2008, at 10:29 AM, Scott Wood wrote:
> The reg property in fsl soc nodes should be removed.
>
> Signed-off-by: Scott Wood <scottwood at freescale.com>
> ---
> arch/powerpc/sysdev/fsl_soc.c | 14 +++++++++++---
> 1 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/
> fsl_soc.c
> index 3ace747..7502e03 100644
> --- a/arch/powerpc/sysdev/fsl_soc.c
> +++ b/arch/powerpc/sysdev/fsl_soc.c
> @@ -54,10 +54,18 @@ phys_addr_t get_immrbase(void)
> soc = of_find_node_by_type(NULL, "soc");
> if (soc) {
> int size;
> - const void *prop = of_get_property(soc, "reg", &size);
> + u32 naddr;
> + const u32 *prop = of_get_property(soc, "#address-cells", &size);
> +
> + if (prop && size == 4)
> + naddr = *prop;
> + else
> + naddr = 2;
Why default to two?
>
> +
> + prop = of_get_property(soc, "ranges", &size);
> + if (prop && size == 12)
> + immrbase = of_translate_address(soc, prop + naddr);
>
> - if (prop)
> - immrbase = of_translate_address(soc, prop);
why not make your code an else case if we don't have reg?
>
> of_node_put(soc);
> }
or something like, than we don't have to worry about adjust anything,
and if you don't have any children its kinda a pointless device tree :)
if (soc) {
struct device_node *child = of_get_next_child(soc, NULL);
if (child) {
const void *prop = of_get_property(soc, "ranges", NULL);
if (prop)
immrbase = of_translate_address(child, prop);
of_node_put(child);
}
of_node_put(soc);
}
- k
More information about the Linuxppc-dev
mailing list