17 #include <linux/kernel.h>
18 #include <linux/errno.h>
20 #include <linux/module.h>
21 #include <linux/types.h>
22 #include <linux/rtc.h>
35 #define NUM_TIME_REGS (TPS65910_YEARS - TPS65910_SECONDS + 1)
37 static int tps65910_rtc_alarm_irq_enable(
struct device *
dev,
unsigned enabled)
67 dev_err(dev,
"RTC CTRL reg update failed with err:%d\n", ret);
74 dev_err(dev,
"reading from RTC failed with err:%d\n", ret);
88 static int tps65910_rtc_set_time(
struct device *dev,
struct rtc_time *tm)
105 dev_err(dev,
"RTC stop failed with err:%d\n", ret);
113 dev_err(dev,
"rtc_set_time error %d\n", ret);
121 dev_err(dev,
"RTC start failed with err:%d\n", ret);
129 static int tps65910_rtc_read_alarm(
struct device *dev,
struct rtc_wkalrm *alm)
139 dev_err(dev,
"rtc_read_alarm error %d\n", ret);
160 static int tps65910_rtc_set_alarm(
struct device *dev,
struct rtc_wkalrm *alm)
166 ret = tps65910_rtc_alarm_irq_enable(dev, 0);
181 dev_err(dev,
"rtc_set_alarm error %d\n", ret);
186 ret = tps65910_rtc_alarm_irq_enable(dev, 1);
218 .read_time = tps65910_rtc_read_time,
219 .set_time = tps65910_rtc_set_time,
220 .read_alarm = tps65910_rtc_read_alarm,
221 .set_alarm = tps65910_rtc_set_alarm,
222 .alarm_irq_enable = tps65910_rtc_alarm_irq_enable,
249 dev_dbg(&pdev->
dev,
"Enabling rtc-tps65910.\n");
257 dev_warn(&pdev->
dev,
"Wake up is not possible as irq = %d\n",
264 "rtc-tps65910", &pdev->
dev);
273 if (IS_ERR(tps_rtc->
rtc)) {
274 ret = PTR_ERR(tps_rtc->
rtc);
275 dev_err(&pdev->
dev,
"RTC device register: err %d\n", ret);
279 platform_set_drvdata(pdev, tps_rtc);
291 struct tps65910_rtc *tps_rtc = platform_get_drvdata(pdev);
293 tps65910_rtc_alarm_irq_enable(&pdev->
dev, 0);
299 #ifdef CONFIG_PM_SLEEP
301 static int tps65910_rtc_suspend(
struct device *dev)
317 static int tps65910_rtc_resume(
struct device *dev)
326 static const struct dev_pm_ops tps65910_rtc_pm_ops = {
327 .
suspend = tps65910_rtc_suspend,
328 .resume = tps65910_rtc_resume,
331 #define DEV_PM_OPS (&tps65910_rtc_pm_ops)
333 #define DEV_PM_OPS NULL
337 .probe = tps65910_rtc_probe,
341 .name =
"tps65910-rtc",