dt confusion, for_each_matching_node...
Niklas Hernaeus
niklas.hernaeus at linaro.org
Wed Jul 27 06:15:56 EST 2011
Hi Grant.
I am afraid I am seriously confused about how the dt is supposed to work.
Maybe I simply lack a detail, if I am lucky... perhaps it is to late in the
day...
Problem:
I cannot get the for_each_matching_node macro to give me anything, so the I
guess the of_find_matching_node cannot find anything.
I am using the uarts in the test code. With the test code below the snowball
dies.
Anyone see my mistake?
Thanks for any and all input.
/Niklas.
Suggestion: I forgot some initialization somewhere?
In this device tree I have:
/ {
model = "ST-Ericsson Snowball";
compatible = "snowball";
#address-cells = <1>;
#size-cells = <1>;
#chosen {
bootargs = "root=/dev/ram0 console=ttyAMA2,115200n8 debug
earlyprintk";
};
#memory {
reg = <0x90000000 0x20000000>;
};
#soc-u8500 {
address-cells = <1>;
size-cells = <1>;
compatible = "simple-bus";
periph1-base = <0x32000>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu at 0 {
compatible = "arm,cortex-a9";
reg = <0>;
};
cpu at 1 {
compatible = "arm,cortex-a9";
reg = <1>;
};
};
};
uart at 80120000 {
compatible = "arm,pl011";
};
uart at 80121000 {
compatible = "arm,pl011";
};
uart at 80007000 {
compatible = "arm,pl011";
};
};
Test code:
static const struct of_device_id snowball_uarts[] __initconst={
{.compatible="arm,pl011"},
{},
};
static void __init mop500_uart_init_dt(void)
{
struct device_node *node;
u32 p0;
int ret;
/* Get device info from device-tree */
for_each_matching_node(node, snowball_uarts) {
goto doit; /* Got something, all ok */
}
goto die;
doit:
/* Standard init, no dt */
db8500_add_uart0(&uart0_plat);
db8500_add_uart1(&uart1_plat);
db8500_add_uart2(&uart2_plat);
die:
;
};
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/devicetree-discuss/attachments/20110726/9cbe374b/attachment.html>
More information about the devicetree-discuss
mailing list