[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140923103326.GA404@localhost>
Date: Tue, 23 Sep 2014 12:33:26 +0200
From: Johan Hovold <johan@...nel.org>
To: Boris BREZILLON <boris.brezillon@...e-electrons.com>
Cc: Nicolas Ferre <nicolas.ferre@...el.com>,
Jean-Christophe Plagniol-Villard <plagnioj@...osoft.com>,
Alexandre Belloni <alexandre.belloni@...e-electrons.com>,
Andrew Victor <linux@...im.org.za>,
Alessandro Zummo <a.zummo@...ertech.it>,
rtc-linux@...glegroups.com, Samuel Ortiz <sameo@...ux.intel.com>,
Lee Jones <lee.jones@...aro.org>,
Johan Hovold <jhovold@...il.com>,
Rob Herring <robh+dt@...nel.org>,
Pawel Moll <pawel.moll@....com>,
Mark Rutland <mark.rutland@....com>,
Ian Campbell <ijc+devicetree@...lion.org.uk>,
Kumar Gala <galak@...eaurora.org>, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v7 08/10] rtc: at91sam9: use clk API instead of relying
on AT91_SLOW_CLOCK
On Tue, Sep 23, 2014 at 11:38:48AM +0200, Boris BREZILLON wrote:
> @@ -328,6 +328,7 @@ static int at91_rtc_probe(struct platform_device *pdev)
> struct sam9_rtc *rtc;
> int ret, irq;
> u32 mr;
> + unsigned int sclk_rate;
>
> irq = platform_get_irq(pdev, 0);
> if (irq < 0) {
> @@ -385,11 +386,27 @@ static int at91_rtc_probe(struct platform_device *pdev)
> return -ENOMEM;
> }
>
> + rtc->sclk = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(rtc->sclk))
> + return PTR_ERR(rtc->sclk);
> +
> + sclk_rate = clk_get_rate(rtc->sclk);
> + if (!sclk_rate || sclk_rate > AT91_RTT_RTTRST) {
You probably meant AT91_RTT_RTPRES here.
> + dev_err(&pdev->dev, "Invalid slow clock rate");
> + return -EINVAL;
> + }
> +
> + ret = clk_prepare_enable(rtc->sclk);
> + if (ret) {
> + dev_err(&pdev->dev, "Could not enable slow clock");
> + return ret;
> + }
> +
> mr = rtt_readl(rtc, MR);
>
> /* unless RTT is counting at 1 Hz, re-initialize it */
> - if ((mr & AT91_RTT_RTPRES) != AT91_SLOW_CLOCK) {
> - mr = AT91_RTT_RTTRST | (AT91_SLOW_CLOCK & AT91_RTT_RTPRES);
> + if ((mr & AT91_RTT_RTPRES) != sclk_rate) {
> + mr = AT91_RTT_RTTRST | (sclk_rate & AT91_RTT_RTPRES);
> gpbr_writel(rtc, 0);
> }
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists