rtc-lpc32xx.c (ba4a84f5ab6ef91394d745812131a443514f4a99) | rtc-lpc32xx.c (f04dd349a343c9399b8e8fe17359fe94cd63d539) |
---|---|
1/* 2 * Copyright (C) 2010 NXP Semiconductors 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 52 unchanged lines hidden (view full) --- 61}; 62 63static int lpc32xx_rtc_read_time(struct device *dev, struct rtc_time *time) 64{ 65 unsigned long elapsed_sec; 66 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 67 68 elapsed_sec = rtc_readl(rtc, LPC32XX_RTC_UCOUNT); | 1/* 2 * Copyright (C) 2010 NXP Semiconductors 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 52 unchanged lines hidden (view full) --- 61}; 62 63static int lpc32xx_rtc_read_time(struct device *dev, struct rtc_time *time) 64{ 65 unsigned long elapsed_sec; 66 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 67 68 elapsed_sec = rtc_readl(rtc, LPC32XX_RTC_UCOUNT); |
69 rtc_time_to_tm(elapsed_sec, time); | 69 rtc_time64_to_tm(elapsed_sec, time); |
70 71 return 0; 72} 73 74static int lpc32xx_rtc_set_mmss(struct device *dev, unsigned long secs) 75{ 76 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 77 u32 tmp; --- 12 unchanged lines hidden (view full) --- 90 return 0; 91} 92 93static int lpc32xx_rtc_read_alarm(struct device *dev, 94 struct rtc_wkalrm *wkalrm) 95{ 96 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 97 | 70 71 return 0; 72} 73 74static int lpc32xx_rtc_set_mmss(struct device *dev, unsigned long secs) 75{ 76 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 77 u32 tmp; --- 12 unchanged lines hidden (view full) --- 90 return 0; 91} 92 93static int lpc32xx_rtc_read_alarm(struct device *dev, 94 struct rtc_wkalrm *wkalrm) 95{ 96 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 97 |
98 rtc_time_to_tm(rtc_readl(rtc, LPC32XX_RTC_MATCH0), &wkalrm->time); | 98 rtc_time64_to_tm(rtc_readl(rtc, LPC32XX_RTC_MATCH0), &wkalrm->time); |
99 wkalrm->enabled = rtc->alarm_enabled; 100 wkalrm->pending = !!(rtc_readl(rtc, LPC32XX_RTC_INTSTAT) & 101 LPC32XX_RTC_INTSTAT_MATCH0); 102 103 return rtc_valid_tm(&wkalrm->time); 104} 105 106static int lpc32xx_rtc_set_alarm(struct device *dev, 107 struct rtc_wkalrm *wkalrm) 108{ 109 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 110 unsigned long alarmsecs; 111 u32 tmp; | 99 wkalrm->enabled = rtc->alarm_enabled; 100 wkalrm->pending = !!(rtc_readl(rtc, LPC32XX_RTC_INTSTAT) & 101 LPC32XX_RTC_INTSTAT_MATCH0); 102 103 return rtc_valid_tm(&wkalrm->time); 104} 105 106static int lpc32xx_rtc_set_alarm(struct device *dev, 107 struct rtc_wkalrm *wkalrm) 108{ 109 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); 110 unsigned long alarmsecs; 111 u32 tmp; |
112 int ret; | |
113 | 112 |
114 ret = rtc_tm_to_time(&wkalrm->time, &alarmsecs); 115 if (ret < 0) { 116 dev_warn(dev, "Failed to convert time: %d\n", ret); 117 return ret; 118 } | 113 alarmsecs = rtc_tm_to_time64(&wkalrm->time); |
119 120 spin_lock_irq(&rtc->lock); 121 122 /* Disable alarm during update */ 123 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); 124 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp & ~LPC32XX_RTC_CTRL_MATCH0); 125 126 rtc_writel(rtc, LPC32XX_RTC_MATCH0, alarmsecs); --- 259 unchanged lines hidden --- | 114 115 spin_lock_irq(&rtc->lock); 116 117 /* Disable alarm during update */ 118 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); 119 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp & ~LPC32XX_RTC_CTRL_MATCH0); 120 121 rtc_writel(rtc, LPC32XX_RTC_MATCH0, alarmsecs); --- 259 unchanged lines hidden --- |