Hi Vlad, On 17 November 2016 at 10:08, Vlad Zakharov <vladislav.zakha...@synopsys.com> wrote: > Earlier timer driver needed a clock-frequency property in compatible > device-tree nodes. Another way is to reference a clock via a phandle. > > So now timer_pre_probe tries to get clock by reference through device > tree. In case it is impossible to get clock device through the > reference, clock-frequency property of the timer node is read to provide > backward compatibility. > > Signed-off-by: Vlad Zakharov <vzak...@synopsys.com> > --- > drivers/timer/timer-uclass.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c > index f8ddf93..cca41f1 100644 > --- a/drivers/timer/timer-uclass.c > +++ b/drivers/timer/timer-uclass.c > @@ -8,6 +8,7 @@ > #include <dm.h> > #include <dm/lists.h> > #include <dm/device-internal.h> > +#include <clk.h> > #include <errno.h> > #include <timer.h> > > @@ -42,9 +43,17 @@ unsigned long notrace timer_get_rate(struct udevice *dev) > static int timer_pre_probe(struct udevice *dev) > { > struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev); > - > - uc_priv->clock_rate = fdtdec_get_int(gd->fdt_blob, dev->of_offset, > - "clock-frequency", 0); > + struct clk *timer_clk; > + int err; > + > + err = clk_get_by_index(dev, 0, timer_clk); > + if (!err) { > + uc_priv->clock_rate = clk_get_rate(timer_clk);
Please use a temporary variable here, like: ret = clk_get_rate(timer_clk); if (IS_ERR_VALUE(ret)) return ret; uc_priv->clock_rate = ret; > + if (uc_priv->clock_rate < 0) > + return uc_priv->clock_rate; > + } else > + uc_priv->clock_rate = fdtdec_get_int(gd->fdt_blob, > + dev->of_offset, "clock-frequency", 0); > > return 0; > } > -- > 2.7.4 > Regards, SImon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot