aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc
diff options
context:
space:
mode:
authorWan ZongShun <mcuos.com@gmail.com>2010-08-10 21:02:11 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-11 11:59:07 -0400
commit93b1384fb2028266c71aa417ae437c02537b1119 (patch)
treeda780e3cfdc4e38246d8f75edf2930ea89968861 /drivers/rtc
parentf3f99cf39180fc04a36cd376f434092fae85f317 (diff)
rtc/pxa: remove unnecessary private ops->ioctl()
We shouldn't implement private ops->ioctl() unless absolutely necessary. pxa series RTC driver's ioctl() is unnecessary, since RTC subsystem has implement the ioctl() very well,so we can only use the API of '.alarm_irq_enable' and '.update_irq_enable' to do enable irq action. Signed-off-by: Wan ZongShun <mcuos.com@gmail.com> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Acked-by: Eric Miao <eric.y.miao@gmail.com> Cc: Paul Gortmaker <p_gortmaker@yahoo.com> Cc: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-pxa.c41
1 files changed, 22 insertions, 19 deletions
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c
index b15375adbb8..29e867a1aaa 100644
--- a/drivers/rtc/rtc-pxa.c
+++ b/drivers/rtc/rtc-pxa.c
@@ -235,32 +235,34 @@ static int pxa_periodic_irq_set_state(struct device *dev, int enabled)
235 return 0; 235 return 0;
236} 236}
237 237
238static int pxa_rtc_ioctl(struct device *dev, unsigned int cmd, 238static int pxa_alarm_irq_enable(struct device *dev, unsigned int enabled)
239 unsigned long arg)
240{ 239{
241 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev); 240 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
242 int ret = 0;
243 241
244 spin_lock_irq(&pxa_rtc->lock); 242 spin_lock_irq(&pxa_rtc->lock);
245 switch (cmd) { 243
246 case RTC_AIE_OFF: 244 if (enabled)
247 rtsr_clear_bits(pxa_rtc, RTSR_RDALE1);
248 break;
249 case RTC_AIE_ON:
250 rtsr_set_bits(pxa_rtc, RTSR_RDALE1); 245 rtsr_set_bits(pxa_rtc, RTSR_RDALE1);
251 break; 246 else
252 case RTC_UIE_OFF: 247 rtsr_clear_bits(pxa_rtc, RTSR_RDALE1);
253 rtsr_clear_bits(pxa_rtc, RTSR_HZE); 248
254 break; 249 spin_unlock_irq(&pxa_rtc->lock);
255 case RTC_UIE_ON: 250 return 0;
251}
252
253static int pxa_update_irq_enable(struct device *dev, unsigned int enabled)
254{
255 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
256
257 spin_lock_irq(&pxa_rtc->lock);
258
259 if (enabled)
256 rtsr_set_bits(pxa_rtc, RTSR_HZE); 260 rtsr_set_bits(pxa_rtc, RTSR_HZE);
257 break; 261 else
258 default: 262 rtsr_clear_bits(pxa_rtc, RTSR_HZE);
259 ret = -ENOIOCTLCMD;
260 }
261 263
262 spin_unlock_irq(&pxa_rtc->lock); 264 spin_unlock_irq(&pxa_rtc->lock);
263 return ret; 265 return 0;
264} 266}
265 267
266static int pxa_rtc_read_time(struct device *dev, struct rtc_time *tm) 268static int pxa_rtc_read_time(struct device *dev, struct rtc_time *tm)
@@ -339,11 +341,12 @@ static int pxa_rtc_proc(struct device *dev, struct seq_file *seq)
339static const struct rtc_class_ops pxa_rtc_ops = { 341static const struct rtc_class_ops pxa_rtc_ops = {
340 .open = pxa_rtc_open, 342 .open = pxa_rtc_open,
341 .release = pxa_rtc_release, 343 .release = pxa_rtc_release,
342 .ioctl = pxa_rtc_ioctl,
343 .read_time = pxa_rtc_read_time, 344 .read_time = pxa_rtc_read_time,
344 .set_time = pxa_rtc_set_time, 345 .set_time = pxa_rtc_set_time,
345 .read_alarm = pxa_rtc_read_alarm, 346 .read_alarm = pxa_rtc_read_alarm,
346 .set_alarm = pxa_rtc_set_alarm, 347 .set_alarm = pxa_rtc_set_alarm,
348 .alarm_irq_enable = pxa_alarm_irq_enable,
349 .update_irq_enable = pxa_update_irq_enable,
347 .proc = pxa_rtc_proc, 350 .proc = pxa_rtc_proc,
348 .irq_set_state = pxa_periodic_irq_set_state, 351 .irq_set_state = pxa_periodic_irq_set_state,
349 .irq_set_freq = pxa_periodic_irq_set_freq, 352 .irq_set_freq = pxa_periodic_irq_set_freq,