diff options
| author | Keerthy <j-keerthy@ti.com> | 2015-08-18 15:11:15 +0530 | 
|---|---|---|
| committer | Alexandre Belloni <alexandre.belloni@free-electrons.com> | 2015-09-05 19:37:20 +0200 | 
| commit | 532409aa1ba8b69d5a3dea159d4b1bd9adbd7a46 (patch) | |
| tree | 490e74374ac5471ef1a93c265d4b9f7dd0d8e9b9 | |
| parent | fff51e771eafc3b4fa6daf1372fd4a4023bb402b (diff) | |
rtc: omap: Add internal clock enabling support
The rtc can be clocked by an internal 32K clock. Adding the support
to enable the same.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
| -rw-r--r-- | drivers/rtc/rtc-omap.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c index 8b6355ffaff9..f31c0127dae0 100644 --- a/drivers/rtc/rtc-omap.c +++ b/drivers/rtc/rtc-omap.c @@ -25,6 +25,7 @@  #include <linux/of_device.h>  #include <linux/pm_runtime.h>  #include <linux/io.h> +#include <linux/clk.h>  /*   * The OMAP RTC is a year/month/day/hours/minutes/seconds BCD clock @@ -132,6 +133,7 @@ struct omap_rtc_device_type {  struct omap_rtc {  	struct rtc_device *rtc;  	void __iomem *base; +	struct clk *clk;  	int irq_alarm;  	int irq_timer;  	u8 interrupts_reg; @@ -553,6 +555,11 @@ static int omap_rtc_probe(struct platform_device *pdev)  	if (rtc->irq_alarm <= 0)  		return -ENOENT; +	rtc->clk = devm_clk_get(&pdev->dev, "int-clk"); + +	if (!IS_ERR(rtc->clk)) +		clk_prepare_enable(rtc->clk); +  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	rtc->base = devm_ioremap_resource(&pdev->dev, res);  	if (IS_ERR(rtc->base)) @@ -681,6 +688,9 @@ static int __exit omap_rtc_remove(struct platform_device *pdev)  	device_init_wakeup(&pdev->dev, 0); +	if (!IS_ERR(rtc->clk)) +		clk_disable_unprepare(rtc->clk); +  	rtc->type->unlock(rtc);  	/* leave rtc running, but disable irqs */  	rtc_write(rtc, OMAP_RTC_INTERRUPTS_REG, 0); | 
