Messages in this thread Patch in this message | | | Date | Fri, 13 Nov 2009 11:34:44 +0100 | From | Kristoffer Glembo <> | Subject | Re: linux-next: sparc tree build failure |
| |
I noticed just now that this patch broke the driver on LEON SPARC. It does not find the root node by using of_find_node_by_name(NULL, "/").
I'm not sure whether this is because we build our OF tree wrong or if it is an incorrect way of doing things. But if I instead change it to of_find_node_by_path("/") it works fine.
Signed-off-by: Kristoffer Glembo <kristoffer@gaisler.com>
--- drivers/serial/apbuart.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/serial/apbuart.c b/drivers/serial/apbuart.c index a1e9503..fe91319 100644 --- a/drivers/serial/apbuart.c +++ b/drivers/serial/apbuart.c @@ -609,7 +609,7 @@ static void grlib_apbuart_configure(void) return;
/* Get bus frequency */ - rp = of_find_node_by_name(NULL, "/"); + rp = of_find_node_by_path("/"); rp = of_get_next_child(rp, NULL); prop = of_get_property(rp, "clock-frequency", NULL); freq_khz = *prop; -- 1.5.2.2
David Miller wrote: > > Hmm, it took a tiny bit more than that :-) Here's what I commited > to fix this, thanks. > > apbuart: Kill dependency on deprecated Sparc-only PROM interfaces. > > Use the proper modern OF ones instead. > > Noticed by Stephen Rothwell. > > Signed-off-by: David S. Miller <davem@davemloft.net> > --- > drivers/serial/apbuart.c | 12 ++++++------ > 1 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/serial/apbuart.c b/drivers/serial/apbuart.c > index c7883a3..5f9dec3 100644 > --- a/drivers/serial/apbuart.c > +++ b/drivers/serial/apbuart.c > @@ -29,7 +29,6 @@ > #include <linux/io.h> > #include <linux/serial_core.h> > #include <asm/irq.h> > -#include <asm/oplib.h> > > #include "apbuart.h" > > @@ -596,10 +595,9 @@ static struct of_platform_driver grlib_apbuart_of_driver = { > static void grlib_apbuart_configure(void) > { > static int enum_done; > - struct device_node *np; > + struct device_node *np, *rp; > struct uart_port *port = NULL; > - > - int node; > + const u32 *prop; > int freq_khz; > int v = 0, d = 0; > unsigned int addr; > @@ -610,8 +608,10 @@ static void grlib_apbuart_configure(void) > return; > > /* Get bus frequency */ > - node = prom_getchild(prom_root_node); > - freq_khz = prom_getint(node, "clock-frequency"); > + rp = of_find_node_by_name(NULL, "/"); > + rp = of_get_next_child(rp, NULL); > + prop = of_get_property(rp, "clock-frequency", NULL); > + freq_khz = *prop; > > line = 0; > for_each_matching_node(np, apbuart_match) {
| |