diff options
Diffstat (limited to 'drivers/rtc/rtc-at91sam9.c')
-rw-r--r-- | drivers/rtc/rtc-at91sam9.c | 34 |
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 | /* | 219 | static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) |
220 | * Handle commands from user-space | ||
221 | */ | ||
222 | static 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 | ||
298 | static const struct rtc_class_ops at91_rtc_ops = { | 278 | static 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 | /* |