[PATCH 3.13.y-ckt 103/139] rtc: omap: fix missing wakealarm attribute

Kamal Mostafa kamal at canonical.com
Wed Jan 28 22:20:46 UTC 2015


3.13.11-ckt15 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Johan Hovold <johan at kernel.org>

commit 7ecd9a3f062147400e605713724dd67dbb7e5053 upstream.

The platform device must be registered as wakeup capable before
registering the class device, or the wakealarm attribute will not be
created.

Also make sure to unregister the wakeup source on probe errors.

Fixes: 1d2e2b65d098 ("rtc: omap: restore back (hard-code) wakeup support")
Signed-off-by: Johan Hovold <johan at kernel.org>
Reviewed-by: Felipe Balbi <balbi at ti.com>
Tested-by: Felipe Balbi <balbi at ti.com>
Cc: Alessandro Zummo <a.zummo at towertech.it>
Cc: Tony Lindgren <tony at atomide.com>
Cc: Benot Cousson <bcousson at baylibre.com>
Cc: Lokesh Vutla <lokeshvutla at ti.com>
Cc: Guenter Roeck <linux at roeck-us.net>
Cc: Sekhar Nori <nsekhar at ti.com>
Cc: Tero Kristo <t-kristo at ti.com>
Cc: Keerthy J <j-keerthy at ti.com>
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
 drivers/rtc/rtc-omap.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
index 26de5f8..336b0f0 100644
--- a/drivers/rtc/rtc-omap.c
+++ b/drivers/rtc/rtc-omap.c
@@ -379,6 +379,8 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
 		rtc_writel(KICK1_VALUE, OMAP_RTC_KICK1_REG);
 	}
 
+	device_init_wakeup(&pdev->dev, true);
+
 	rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
 			&omap_rtc_ops, THIS_MODULE);
 	if (IS_ERR(rtc)) {
@@ -441,8 +443,6 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
 	 *    is write-only, and always reads as zero...)
 	 */
 
-	device_init_wakeup(&pdev->dev, true);
-
 	if (new_ctrl & (u8) OMAP_RTC_CTRL_SPLIT)
 		pr_info("%s: split power mode\n", pdev->name);
 
@@ -452,6 +452,7 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
 	return 0;
 
 fail0:
+	device_init_wakeup(&pdev->dev, false);
 	if (id_entry && (id_entry->driver_data & OMAP_RTC_HAS_KICKER))
 		rtc_writel(0, OMAP_RTC_KICK0_REG);
 	pm_runtime_put_sync(&pdev->dev);
-- 
1.9.1





More information about the kernel-team mailing list