On Fri, Nov 11, 2011 at 06:27:04PM +0000, Pawel Moll wrote:
> +#if defined(CONFIG_ARCH_VEXPRESS_DT)
> +             int err;
> +             const char *path;
> +             struct device_node *node;
> +
> +             node = of_find_compatible_node(NULL, NULL, "arm,sp810");
> +             BUG_ON(!node);
> +             sysctl_base = of_iomap(node, 0);
> +             BUG_ON(!sysctl_base);
> +
> +             err = of_property_read_string(of_aliases, "timer", &path);
> +             BUG_ON(err);
> +             node = of_find_node_by_path(path);
> +             BUG_ON(!node);
> +             timer01_base = of_iomap(node, 0);
> +             BUG_ON(!timer01_base);
> +             timer01_irq = irq_of_parse_and_map(node, 0);

Are you sure you have enough BUG_ON()s there?  It's well worth reading
Linus' various messages on the use of BUG(), which can be found:

        http://yarchive.net/comp/linux/BUG.html

The lack of the timer and sysctl registers are really a 'report and maybe
we could get a message out' kind of scenario rather than a 'oops, kill
the machine'.

> +#endif
> +     } else {
>               sysctl_base = ioremap(V2M_SYSCTL, SZ_4K);
>               BUG_ON(!sysctl_base);
>               timer01_base = ioremap(V2M_TIMER01, SZ_4K);
>               BUG_ON(!timer01_base);
>               timer01_irq = IRQ_V2M_TIMER0;
> +     }

And in any case, both these paths have a common set of BUG_ON()s:
        BUG_ON(!sysctl_base);
        BUG_ON(!timer01_base);

So do we really need them having this independently?

> @@ -383,11 +412,18 @@ static struct clk_lookup v2m_lookups[] = {
>       },
>  };
>  
> +static void __init v2m_system_id(void)
> +{
> +     if (!system_rev)
> +             system_rev = readl(v2m_sysreg_base + V2M_SYS_ID);

You do understand that system_rev is for the system _revision_ not for
some kind of system ID.  For example, it's to identify whether we're on
a revision 4, 5 or 6 system.

However, with DT the differences in system revision should be encoded
into the DT itself, and the kernel should not be making choices about
the hardware off this.
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to