From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vlad Zakharov Date: Mon, 21 Nov 2016 15:50:17 +0000 Subject: [U-Boot] [PATCH v2] timer: Support clocks via phandle In-Reply-To: <20161121145145.GE2546@bill-the-cat> References: <1479574647-32326-1-git-send-email-vzakhar@synopsys.com> <1479739110.28007.18.camel@synopsys.com> <20161121145145.GE2546@bill-the-cat> Message-ID: <1479743416.28007.36.camel@synopsys.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > > > Reviewed-by: Simon Glass > > > --- > > > 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 > > > ?#include > > > ?#include > > > +#include > > > ?#include > > > ?#include > > > ? > > > @@ -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