[U-Boot] [PATCH v2] timer: Support clocks via phandle

Vlad Zakharov Vladislav.Zakharov at synopsys.com
Mon Nov 21 16:50:17 CET 2016


Hi again,

On Mon, 2016-11-21 at 09:51 -0500, Tom Rini wrote:
> On Mon, Nov 21, 2016 at 02:38:30PM +0000, Vlad Zakharov wrote:
> > 
> > Hi Tom,
> > 
> > On Sat, 2016-11-19 at 19:57 +0300, Vlad Zakharov 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 <vzakhar at synopsys.com>
> > > Reviewed-by: Simon Glass <sjg at chromium.org>
> > > ---
> > > Changes v1..v2:
> > >  - Use temporary variable when getting clock rate
> > > 
> > >  drivers/timer/timer-uclass.c | 17 ++++++++++++++---
> > >  1 file changed, 14 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c
> > > index f8ddf93..a891a58 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,19 @@ 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;
> > > +	ulong ret;
> > > +
> > > +	err = clk_get_by_index(dev, 0, timer_clk);
> > > +	if (!err) {
> > > +		ret = clk_get_rate(timer_clk);
> > > +		if (IS_ERR_VALUE(ret))
> > > +			return ret;
> > > +		uc_priv->clock_rate = ret;
> > > +	} else
> > > +		uc_priv->clock_rate = fdtdec_get_int(gd->fdt_blob,
> > > +				dev->of_offset,	"clock-frequency", 0);
> > >  
> > >  	return 0;
> > >  }
> > 
> > Could you please apply this patch if there's no any objections or comments on it?
> > Thanks.
> 
> Is this required for the other series?  If not, I'd like to let it
> "bake" a bit longer, but if it's needed, I'm OK with it coming in via
> the arc tree now as well.  Thanks!
> 

This update is not required for any patch series that have already been sent to mailing list.

Nevertheless this week I am going to send another series that introduces ARC clk driver and uses this driver to get
timer clock via the reference in device tree. Therefore current patch will be required for the updates I have just
described.

Thanks.

-- 
Best regards,
Vlad Zakharov <vzakhar at synopsys.com>


More information about the U-Boot mailing list