aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-at91sam9.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-at91sam9.c')
-rw-r--r--drivers/rtc/rtc-at91sam9.c34
1 files changed, 7 insertions, 27 deletions
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c
index f677e0710ca..a3ad957507d 100644
--- a/drivers/rtc/rtc-at91sam9.c
+++ b/drivers/rtc/rtc-at91sam9.c
@@ -216,37 +216,17 @@ static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
216 return 0; 216 return 0;
217} 217}
218 218
219/* 219static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
220 * Handle commands from user-space
221 */
222static int at91_rtc_ioctl(struct device *dev, unsigned int cmd,
223 unsigned long arg)
224{ 220{
225 struct sam9_rtc *rtc = dev_get_drvdata(dev); 221 struct sam9_rtc *rtc = dev_get_drvdata(dev);
226 int ret = 0;
227 u32 mr = rtt_readl(rtc, MR); 222 u32 mr = rtt_readl(rtc, MR);
228 223
229 dev_dbg(dev, "ioctl: cmd=%08x, arg=%08lx, mr %08x\n", cmd, arg, mr); 224 dev_dbg(dev, "alarm_irq_enable: enabled=%08x, mr %08x\n", enabled, mr);
230 225 if (enabled)
231 switch (cmd) {
232 case RTC_AIE_OFF: /* alarm off */
233 rtt_writel(rtc, MR, mr & ~AT91_RTT_ALMIEN);
234 break;
235 case RTC_AIE_ON: /* alarm on */
236 rtt_writel(rtc, MR, mr | AT91_RTT_ALMIEN); 226 rtt_writel(rtc, MR, mr | AT91_RTT_ALMIEN);
237 break; 227 else
238 case RTC_UIE_OFF: /* update off */ 228 rtt_writel(rtc, MR, mr & ~AT91_RTT_ALMIEN);
239 rtt_writel(rtc, MR, mr & ~AT91_RTT_RTTINCIEN); 229 return 0;
240 break;
241 case RTC_UIE_ON: /* update on */
242 rtt_writel(rtc, MR, mr | AT91_RTT_RTTINCIEN);
243 break;
244 default:
245 ret = -ENOIOCTLCMD;
246 break;
247 }
248
249 return ret;
250} 230}
251 231
252/* 232/*
@@ -296,12 +276,12 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *_rtc)
296} 276}
297 277
298static const struct rtc_class_ops at91_rtc_ops = { 278static const struct rtc_class_ops at91_rtc_ops = {
299 .ioctl = at91_rtc_ioctl,
300 .read_time = at91_rtc_readtime, 279 .read_time = at91_rtc_readtime,
301 .set_time = at91_rtc_settime, 280 .set_time = at91_rtc_settime,
302 .read_alarm = at91_rtc_readalarm, 281 .read_alarm = at91_rtc_readalarm,
303 .set_alarm = at91_rtc_setalarm, 282 .set_alarm = at91_rtc_setalarm,
304 .proc = at91_rtc_proc, 283 .proc = at91_rtc_proc,
284 .alarm_irq_enable = at91_rtc_alarm_irq_enable,
305}; 285};
306 286
307/* 287/*