* dt confusion, for_each_matching_node...
@ 2011-07-26 20:15 Niklas Hernaeus
[not found] ` <CA+03iojnhNU7ksPR=GBYgHo10juXXOTWcnxYH0F9h3kTtHSZzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Niklas Hernaeus @ 2011-07-26 20:15 UTC (permalink / raw)
To: Grant Likely; +Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ
[-- Attachment #1.1: Type: text/plain, Size: 2360 bytes --]
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@0 {
compatible = "arm,cortex-a9";
reg = <0>;
};
cpu@1 {
compatible = "arm,cortex-a9";
reg = <1>;
};
};
};
uart@80120000 {
compatible = "arm,pl011";
};
uart@80121000 {
compatible = "arm,pl011";
};
uart@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:
;
};
[-- Attachment #1.2: Type: text/html, Size: 2846 bytes --]
[-- Attachment #2: Type: text/plain, Size: 192 bytes --]
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
https://lists.ozlabs.org/listinfo/devicetree-discuss
^ permalink raw reply [flat|nested] 2+ messages in thread[parent not found: <CA+03iojnhNU7ksPR=GBYgHo10juXXOTWcnxYH0F9h3kTtHSZzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: dt confusion, for_each_matching_node... [not found] ` <CA+03iojnhNU7ksPR=GBYgHo10juXXOTWcnxYH0F9h3kTtHSZzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2011-07-28 22:27 ` Grant Likely 0 siblings, 0 replies; 2+ messages in thread From: Grant Likely @ 2011-07-28 22:27 UTC (permalink / raw) To: Niklas Hernaeus; +Cc: Grant Likely, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ On Tue, Jul 26, 2011 at 10:15:56PM +0200, Niklas Hernaeus wrote: > 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. The code looks fine, but as discussed on IRC, it looks like the dtb isn't getting handed to the kernel in the first place, which would be the root cause. :-) g. > > 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@0 { > compatible = "arm,cortex-a9"; > reg = <0>; > }; > cpu@1 { > compatible = "arm,cortex-a9"; > reg = <1>; > }; > }; > }; > > uart@80120000 { > compatible = "arm,pl011"; > }; > uart@80121000 { > compatible = "arm,pl011"; > }; > uart@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: > ; > }; ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-07-28 22:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-26 20:15 dt confusion, for_each_matching_node Niklas Hernaeus
[not found] ` <CA+03iojnhNU7ksPR=GBYgHo10juXXOTWcnxYH0F9h3kTtHSZzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-07-28 22:27 ` Grant Likely
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).