From ef62097adb87ad62a0def1f642b20e03676f5393 Mon Sep 17 00:00:00 2001 From: Vaibhav Hiremath Date: Mon, 17 Dec 2012 16:02:18 -0800 Subject: [PATCH] --- yaml --- r: 346431 b: refs/heads/master c: fc9bd9022e8d5863f3efce34cc38cb0c6187271c h: refs/heads/master i: 346429: ef625ced492e54dad66770c2074954e954a52c93 346427: ae4f2b8d794f5a276faba197963aaa5e47b527d0 346423: aea9747cb584b2f9ecd210d0dc8787b7b63b0891 346415: 765b59fc245e49285a26e8cd5b96f61c48ddeeb9 346399: 431020ff488b1d9219afdf57f2b2b7e97a510c01 346367: 610e5ca914b176101103024fed696a65b7d85de2 v: v3 --- [refs] | 2 +- trunk/drivers/rtc/rtc-omap.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0d81416dd062..5112a3970164 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 427af9a6216b5845d428f27111add5311c381797 +refs/heads/master: fc9bd9022e8d5863f3efce34cc38cb0c6187271c diff --git a/trunk/drivers/rtc/rtc-omap.c b/trunk/drivers/rtc/rtc-omap.c index dff9ff476b0d..600971407aac 100644 --- a/trunk/drivers/rtc/rtc-omap.c +++ b/trunk/drivers/rtc/rtc-omap.c @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -364,6 +365,10 @@ static int __init omap_rtc_probe(struct platform_device *pdev) goto fail; } + /* Enable the clock/module so that we can access the registers */ + pm_runtime_enable(&pdev->dev); + pm_runtime_get_sync(&pdev->dev); + id_entry = platform_get_device_id(pdev); if (id_entry && (id_entry->driver_data & OMAP_RTC_HAS_KICKER)) { rtc_writel(KICK0_VALUE, OMAP_RTC_KICK0_REG); @@ -448,6 +453,8 @@ static int __init omap_rtc_probe(struct platform_device *pdev) fail0: if (id_entry && (id_entry->driver_data & OMAP_RTC_HAS_KICKER)) rtc_writel(0, OMAP_RTC_KICK0_REG); + pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); iounmap(rtc_base); fail: release_mem_region(mem->start, resource_size(mem)); @@ -474,6 +481,11 @@ static int __exit omap_rtc_remove(struct platform_device *pdev) rtc_device_unregister(rtc); if (id_entry && (id_entry->driver_data & OMAP_RTC_HAS_KICKER)) rtc_writel(0, OMAP_RTC_KICK0_REG); + + /* Disable the clock/module */ + pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); + iounmap(rtc_base); release_mem_region(mem->start, resource_size(mem)); return 0; @@ -496,11 +508,17 @@ static int omap_rtc_suspend(struct platform_device *pdev, pm_message_t state) else rtc_write(0, OMAP_RTC_INTERRUPTS_REG); + /* Disable the clock/module */ + pm_runtime_put_sync(&pdev->dev); + return 0; } static int omap_rtc_resume(struct platform_device *pdev) { + /* Enable the clock/module so that we can access the registers */ + pm_runtime_get_sync(&pdev->dev); + if (device_may_wakeup(&pdev->dev)) disable_irq_wake(omap_rtc_alarm); else