Hello Sam, On Mon, Jul 03, 2017 at 10:17:46PM +0200, Sam Ravnborg wrote: > If there is no OFTREE support of_clk_get_by_name failed with > -ENOENT, which caused clk_get to bail out. > This had the effect that nothing was printed on the serial console > with at91sam9263-ek. > > Fix this by modifying the logic to explicitly check for -EPROBE_DEFER > like we do in the kernel. > > Fixes: 90f7eacb ("clk: let clk_get return errors from of_clk_get_by_name") > Cc: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > --- > drivers/clk/clkdev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c > index 6b1666355..939b067cc 100644 > --- a/drivers/clk/clkdev.c > +++ b/drivers/clk/clkdev.c > @@ -181,7 +181,7 @@ struct clk *clk_get(struct device_d *dev, const char *con_id) > > if (dev) { > clk = of_clk_get_by_name(dev->device_node, con_id); > - if (!IS_ERR(clk) || PTR_ERR(clk) != -ENODEV) > + if (!IS_ERR(clk) || PTR_ERR(clk) == -EPROBE_DEFER) Hmm, I don't remember which was the failure I saw that lead me to create this patch. Probably I wanted to see EPROBE_DEFER. Looking into the tree of functions that can be called from of_clk_get_by_name I didn't find a function that returns ENODEV. But consider a clock provider that tries to give you the clock and triggers a EIO or ETIMEOUT. IMHO this should be given to the caller instead of continuing with clk_get_sys. So I suggest - if (!IS_ERR(clk) || PTR_ERR(clk) != -ENODEV) + if (!IS_ERR(clk) || PTR_ERR(clk) != -ENOENT) instead of your patch. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox