Re: [PATCH] ARM: SPEAr600: Add device-tree support to SPEAr600 boards
From: Arnd Bergmann <hidden>
Date: 2012-03-22 14:20:09
Also in:
linux-arm-kernel
On Thursday 22 March 2012, viresh kumar wrote:
On Mar 21, 2012 6:09 PM, "Arnd Bergmann" [off-list ref] wrote:quoted
Regarding the spear3xx patches, I'm looking forward to your patches. I think spear is simple and clean enough that it can serve as an example for others doing DT conversion.I was doing DT stuff for 3xx and have a doubt regarding DT. How are boards identified at runtime now? Earlier we had machine_is_*() to do that.
The direct replacement is of_machine_is_compatible(), but there are a lot
of cases where it's better to have a local property in the device node
that a driver is using.
For instance, in case of your clock driver, I would suggest you use
the "compatible" property of the clock device node, and do
/* null terminated array, turn the lookups into null termination as well */
struct of_device_id spear_clock_match = {
{ "st,spear300-clock", &spear300_clk_lookups },
{ "st,spear310-clock", &spear310_clk_lookups },
{ "st,spear320-clock", &spear320_clk_lookups },
{ },
};
void __init spear3xx_of_clk_init(void)
{
struct device_node *np;
struct of_device_id *match;
struct clk_lookup *lookup;
for_each_matching_node(np, &spear_clock_match)
match = of_match_node(&spear_clock_match, np);
for (lookup = match->data; lookup->clk; lookup++)
clk_register(lookup);
for (lookup = spear_clk_lookups; lookup->clk; lookup++)
clk_register(lookup);
}
Also why are both DT_MACHINE_START and MACHINE_START present on some SoC's?
This is for the transition phase where you want to be able to boot both using ATAG and using DT. Arnd