diff options
-rw-r--r-- | drivers/rtc/rtc-cmos.c | 26 | ||||
-rw-r--r-- | drivers/rtc/rtc-davinci.c | 17 | ||||
-rw-r--r-- | drivers/rtc/rtc-pl031.c | 21 | ||||
-rw-r--r-- | drivers/rtc/rtc-pxa.c | 15 | ||||
-rw-r--r-- | drivers/rtc/rtc-s3c.c | 1 | ||||
-rw-r--r-- | drivers/rtc/rtc-sa1100.c | 1 | ||||
-rw-r--r-- | drivers/rtc/rtc-sh.c | 1 | ||||
-rw-r--r-- | drivers/rtc/rtc-vr41xx.c | 21 | ||||
-rw-r--r-- | include/linux/rtc.h | 2 |
9 files changed, 0 insertions, 105 deletions
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index de632e793d46..bdb1f8e2042a 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c | |||
@@ -375,31 +375,6 @@ static int cmos_set_alarm(struct device *dev, struct rtc_wkalrm *t) | |||
375 | return 0; | 375 | return 0; |
376 | } | 376 | } |
377 | 377 | ||
378 | static int cmos_irq_set_freq(struct device *dev, int freq) | ||
379 | { | ||
380 | struct cmos_rtc *cmos = dev_get_drvdata(dev); | ||
381 | int f; | ||
382 | unsigned long flags; | ||
383 | |||
384 | if (!is_valid_irq(cmos->irq)) | ||
385 | return -ENXIO; | ||
386 | |||
387 | if (!is_power_of_2(freq)) | ||
388 | return -EINVAL; | ||
389 | /* 0 = no irqs; 1 = 2^15 Hz ... 15 = 2^0 Hz */ | ||
390 | f = ffs(freq); | ||
391 | if (f-- > 16) | ||
392 | return -EINVAL; | ||
393 | f = 16 - f; | ||
394 | |||
395 | spin_lock_irqsave(&rtc_lock, flags); | ||
396 | hpet_set_periodic_freq(freq); | ||
397 | CMOS_WRITE(RTC_REF_CLCK_32KHZ | f, RTC_FREQ_SELECT); | ||
398 | spin_unlock_irqrestore(&rtc_lock, flags); | ||
399 | |||
400 | return 0; | ||
401 | } | ||
402 | |||
403 | static int cmos_alarm_irq_enable(struct device *dev, unsigned int enabled) | 378 | static int cmos_alarm_irq_enable(struct device *dev, unsigned int enabled) |
404 | { | 379 | { |
405 | struct cmos_rtc *cmos = dev_get_drvdata(dev); | 380 | struct cmos_rtc *cmos = dev_get_drvdata(dev); |
@@ -482,7 +457,6 @@ static const struct rtc_class_ops cmos_rtc_ops = { | |||
482 | .read_alarm = cmos_read_alarm, | 457 | .read_alarm = cmos_read_alarm, |
483 | .set_alarm = cmos_set_alarm, | 458 | .set_alarm = cmos_set_alarm, |
484 | .proc = cmos_procfs, | 459 | .proc = cmos_procfs, |
485 | .irq_set_freq = cmos_irq_set_freq, | ||
486 | .alarm_irq_enable = cmos_alarm_irq_enable, | 460 | .alarm_irq_enable = cmos_alarm_irq_enable, |
487 | .update_irq_enable = cmos_update_irq_enable, | 461 | .update_irq_enable = cmos_update_irq_enable, |
488 | }; | 462 | }; |
diff --git a/drivers/rtc/rtc-davinci.c b/drivers/rtc/rtc-davinci.c index 92da73d40e13..dfd98a235ad1 100644 --- a/drivers/rtc/rtc-davinci.c +++ b/drivers/rtc/rtc-davinci.c | |||
@@ -473,22 +473,6 @@ static int davinci_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm) | |||
473 | return 0; | 473 | return 0; |
474 | } | 474 | } |
475 | 475 | ||
476 | static int davinci_rtc_irq_set_freq(struct device *dev, int freq) | ||
477 | { | ||
478 | struct davinci_rtc *davinci_rtc = dev_get_drvdata(dev); | ||
479 | unsigned long flags; | ||
480 | u16 tmr_counter = (0x8000 >> (ffs(freq) - 1)); | ||
481 | |||
482 | spin_lock_irqsave(&davinci_rtc_lock, flags); | ||
483 | |||
484 | rtcss_write(davinci_rtc, tmr_counter & 0xFF, PRTCSS_RTC_TMR0); | ||
485 | rtcss_write(davinci_rtc, (tmr_counter & 0xFF00) >> 8, PRTCSS_RTC_TMR1); | ||
486 | |||
487 | spin_unlock_irqrestore(&davinci_rtc_lock, flags); | ||
488 | |||
489 | return 0; | ||
490 | } | ||
491 | |||
492 | static struct rtc_class_ops davinci_rtc_ops = { | 476 | static struct rtc_class_ops davinci_rtc_ops = { |
493 | .ioctl = davinci_rtc_ioctl, | 477 | .ioctl = davinci_rtc_ioctl, |
494 | .read_time = davinci_rtc_read_time, | 478 | .read_time = davinci_rtc_read_time, |
@@ -496,7 +480,6 @@ static struct rtc_class_ops davinci_rtc_ops = { | |||
496 | .alarm_irq_enable = davinci_rtc_alarm_irq_enable, | 480 | .alarm_irq_enable = davinci_rtc_alarm_irq_enable, |
497 | .read_alarm = davinci_rtc_read_alarm, | 481 | .read_alarm = davinci_rtc_read_alarm, |
498 | .set_alarm = davinci_rtc_set_alarm, | 482 | .set_alarm = davinci_rtc_set_alarm, |
499 | .irq_set_freq = davinci_rtc_irq_set_freq, | ||
500 | }; | 483 | }; |
501 | 484 | ||
502 | static int __init davinci_rtc_probe(struct platform_device *pdev) | 485 | static int __init davinci_rtc_probe(struct platform_device *pdev) |
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c index 0e7c15b24c1c..d829ea63c4fb 100644 --- a/drivers/rtc/rtc-pl031.c +++ b/drivers/rtc/rtc-pl031.c | |||
@@ -293,25 +293,6 @@ static int pl031_set_alarm(struct device *dev, struct rtc_wkalrm *alarm) | |||
293 | return ret; | 293 | return ret; |
294 | } | 294 | } |
295 | 295 | ||
296 | static int pl031_irq_set_freq(struct device *dev, int freq) | ||
297 | { | ||
298 | struct pl031_local *ldata = dev_get_drvdata(dev); | ||
299 | |||
300 | /* Cant set timer if it is already enabled */ | ||
301 | if (readl(ldata->base + RTC_TCR) & RTC_TCR_EN) { | ||
302 | dev_err(dev, "can't change frequency while timer enabled\n"); | ||
303 | return -EINVAL; | ||
304 | } | ||
305 | |||
306 | /* If self start bit in RTC_TCR is set timer will start here, | ||
307 | * but we never set that bit. Instead we start the timer when | ||
308 | * set_state is called with enabled == 1. | ||
309 | */ | ||
310 | writel(RTC_TIMER_FREQ / freq, ldata->base + RTC_TLR); | ||
311 | |||
312 | return 0; | ||
313 | } | ||
314 | |||
315 | static int pl031_remove(struct amba_device *adev) | 296 | static int pl031_remove(struct amba_device *adev) |
316 | { | 297 | { |
317 | struct pl031_local *ldata = dev_get_drvdata(&adev->dev); | 298 | struct pl031_local *ldata = dev_get_drvdata(&adev->dev); |
@@ -408,7 +389,6 @@ static struct rtc_class_ops stv1_pl031_ops = { | |||
408 | .read_alarm = pl031_read_alarm, | 389 | .read_alarm = pl031_read_alarm, |
409 | .set_alarm = pl031_set_alarm, | 390 | .set_alarm = pl031_set_alarm, |
410 | .alarm_irq_enable = pl031_alarm_irq_enable, | 391 | .alarm_irq_enable = pl031_alarm_irq_enable, |
411 | .irq_set_freq = pl031_irq_set_freq, | ||
412 | }; | 392 | }; |
413 | 393 | ||
414 | /* And the second ST derivative */ | 394 | /* And the second ST derivative */ |
@@ -418,7 +398,6 @@ static struct rtc_class_ops stv2_pl031_ops = { | |||
418 | .read_alarm = pl031_stv2_read_alarm, | 398 | .read_alarm = pl031_stv2_read_alarm, |
419 | .set_alarm = pl031_stv2_set_alarm, | 399 | .set_alarm = pl031_stv2_set_alarm, |
420 | .alarm_irq_enable = pl031_alarm_irq_enable, | 400 | .alarm_irq_enable = pl031_alarm_irq_enable, |
421 | .irq_set_freq = pl031_irq_set_freq, | ||
422 | }; | 401 | }; |
423 | 402 | ||
424 | static struct amba_id pl031_ids[] = { | 403 | static struct amba_id pl031_ids[] = { |
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c index b216ae5389c8..a1fdc802598a 100644 --- a/drivers/rtc/rtc-pxa.c +++ b/drivers/rtc/rtc-pxa.c | |||
@@ -209,20 +209,6 @@ static void pxa_rtc_release(struct device *dev) | |||
209 | free_irq(pxa_rtc->irq_1Hz, dev); | 209 | free_irq(pxa_rtc->irq_1Hz, dev); |
210 | } | 210 | } |
211 | 211 | ||
212 | static int pxa_periodic_irq_set_freq(struct device *dev, int freq) | ||
213 | { | ||
214 | struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev); | ||
215 | int period_ms; | ||
216 | |||
217 | if (freq < 1 || freq > MAXFREQ_PERIODIC) | ||
218 | return -EINVAL; | ||
219 | |||
220 | period_ms = 1000 / freq; | ||
221 | rtc_writel(pxa_rtc, PIAR, period_ms); | ||
222 | |||
223 | return 0; | ||
224 | } | ||
225 | |||
226 | static int pxa_alarm_irq_enable(struct device *dev, unsigned int enabled) | 212 | static int pxa_alarm_irq_enable(struct device *dev, unsigned int enabled) |
227 | { | 213 | { |
228 | struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev); | 214 | struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev); |
@@ -336,7 +322,6 @@ static const struct rtc_class_ops pxa_rtc_ops = { | |||
336 | .alarm_irq_enable = pxa_alarm_irq_enable, | 322 | .alarm_irq_enable = pxa_alarm_irq_enable, |
337 | .update_irq_enable = pxa_update_irq_enable, | 323 | .update_irq_enable = pxa_update_irq_enable, |
338 | .proc = pxa_rtc_proc, | 324 | .proc = pxa_rtc_proc, |
339 | .irq_set_freq = pxa_periodic_irq_set_freq, | ||
340 | }; | 325 | }; |
341 | 326 | ||
342 | static int __init pxa_rtc_probe(struct platform_device *pdev) | 327 | static int __init pxa_rtc_probe(struct platform_device *pdev) |
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index 80fb7e72f9d9..714964913e5e 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c | |||
@@ -348,7 +348,6 @@ static const struct rtc_class_ops s3c_rtcops = { | |||
348 | .set_time = s3c_rtc_settime, | 348 | .set_time = s3c_rtc_settime, |
349 | .read_alarm = s3c_rtc_getalarm, | 349 | .read_alarm = s3c_rtc_getalarm, |
350 | .set_alarm = s3c_rtc_setalarm, | 350 | .set_alarm = s3c_rtc_setalarm, |
351 | .irq_set_freq = s3c_rtc_setfreq, | ||
352 | .proc = s3c_rtc_proc, | 351 | .proc = s3c_rtc_proc, |
353 | .alarm_irq_enable = s3c_rtc_setaie, | 352 | .alarm_irq_enable = s3c_rtc_setaie, |
354 | }; | 353 | }; |
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c index d47b3fc9830f..d1a2b0bc3b24 100644 --- a/drivers/rtc/rtc-sa1100.c +++ b/drivers/rtc/rtc-sa1100.c | |||
@@ -392,7 +392,6 @@ static const struct rtc_class_ops sa1100_rtc_ops = { | |||
392 | .read_alarm = sa1100_rtc_read_alarm, | 392 | .read_alarm = sa1100_rtc_read_alarm, |
393 | .set_alarm = sa1100_rtc_set_alarm, | 393 | .set_alarm = sa1100_rtc_set_alarm, |
394 | .proc = sa1100_rtc_proc, | 394 | .proc = sa1100_rtc_proc, |
395 | .irq_set_freq = sa1100_irq_set_freq, | ||
396 | .alarm_irq_enable = sa1100_rtc_alarm_irq_enable, | 395 | .alarm_irq_enable = sa1100_rtc_alarm_irq_enable, |
397 | }; | 396 | }; |
398 | 397 | ||
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c index ff50a8bc13f6..148544979a54 100644 --- a/drivers/rtc/rtc-sh.c +++ b/drivers/rtc/rtc-sh.c | |||
@@ -603,7 +603,6 @@ static struct rtc_class_ops sh_rtc_ops = { | |||
603 | .set_time = sh_rtc_set_time, | 603 | .set_time = sh_rtc_set_time, |
604 | .read_alarm = sh_rtc_read_alarm, | 604 | .read_alarm = sh_rtc_read_alarm, |
605 | .set_alarm = sh_rtc_set_alarm, | 605 | .set_alarm = sh_rtc_set_alarm, |
606 | .irq_set_freq = sh_rtc_irq_set_freq, | ||
607 | .proc = sh_rtc_proc, | 606 | .proc = sh_rtc_proc, |
608 | .alarm_irq_enable = sh_rtc_alarm_irq_enable, | 607 | .alarm_irq_enable = sh_rtc_alarm_irq_enable, |
609 | }; | 608 | }; |
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c index 86f14909f9db..c5698cda366a 100644 --- a/drivers/rtc/rtc-vr41xx.c +++ b/drivers/rtc/rtc-vr41xx.c | |||
@@ -207,26 +207,6 @@ static int vr41xx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) | |||
207 | return 0; | 207 | return 0; |
208 | } | 208 | } |
209 | 209 | ||
210 | static int vr41xx_rtc_irq_set_freq(struct device *dev, int freq) | ||
211 | { | ||
212 | u64 count; | ||
213 | |||
214 | if (!is_power_of_2(freq)) | ||
215 | return -EINVAL; | ||
216 | count = RTC_FREQUENCY; | ||
217 | do_div(count, freq); | ||
218 | |||
219 | spin_lock_irq(&rtc_lock); | ||
220 | |||
221 | periodic_count = count; | ||
222 | rtc1_write(RTCL1LREG, periodic_count); | ||
223 | rtc1_write(RTCL1HREG, periodic_count >> 16); | ||
224 | |||
225 | spin_unlock_irq(&rtc_lock); | ||
226 | |||
227 | return 0; | ||
228 | } | ||
229 | |||
230 | static int vr41xx_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) | 210 | static int vr41xx_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) |
231 | { | 211 | { |
232 | switch (cmd) { | 212 | switch (cmd) { |
@@ -298,7 +278,6 @@ static const struct rtc_class_ops vr41xx_rtc_ops = { | |||
298 | .set_time = vr41xx_rtc_set_time, | 278 | .set_time = vr41xx_rtc_set_time, |
299 | .read_alarm = vr41xx_rtc_read_alarm, | 279 | .read_alarm = vr41xx_rtc_read_alarm, |
300 | .set_alarm = vr41xx_rtc_set_alarm, | 280 | .set_alarm = vr41xx_rtc_set_alarm, |
301 | .irq_set_freq = vr41xx_rtc_irq_set_freq, | ||
302 | }; | 281 | }; |
303 | 282 | ||
304 | static int __devinit rtc_probe(struct platform_device *pdev) | 283 | static int __devinit rtc_probe(struct platform_device *pdev) |
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index 0e2063acc260..741a51cc4460 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h | |||
@@ -133,7 +133,6 @@ extern struct class *rtc_class; | |||
133 | * The (current) exceptions are mostly filesystem hooks: | 133 | * The (current) exceptions are mostly filesystem hooks: |
134 | * - the proc() hook for procfs | 134 | * - the proc() hook for procfs |
135 | * - non-ioctl() chardev hooks: open(), release(), read_callback() | 135 | * - non-ioctl() chardev hooks: open(), release(), read_callback() |
136 | * - periodic irq calls: irq_set_state(), irq_set_freq() | ||
137 | * | 136 | * |
138 | * REVISIT those periodic irq calls *do* have ops_lock when they're | 137 | * REVISIT those periodic irq calls *do* have ops_lock when they're |
139 | * issued through ioctl() ... | 138 | * issued through ioctl() ... |
@@ -148,7 +147,6 @@ struct rtc_class_ops { | |||
148 | int (*set_alarm)(struct device *, struct rtc_wkalrm *); | 147 | int (*set_alarm)(struct device *, struct rtc_wkalrm *); |
149 | int (*proc)(struct device *, struct seq_file *); | 148 | int (*proc)(struct device *, struct seq_file *); |
150 | int (*set_mmss)(struct device *, unsigned long secs); | 149 | int (*set_mmss)(struct device *, unsigned long secs); |
151 | int (*irq_set_freq)(struct device *, int freq); | ||
152 | int (*read_callback)(struct device *, int data); | 150 | int (*read_callback)(struct device *, int data); |
153 | int (*alarm_irq_enable)(struct device *, unsigned int enabled); | 151 | int (*alarm_irq_enable)(struct device *, unsigned int enabled); |
154 | int (*update_irq_enable)(struct device *, unsigned int enabled); | 152 | int (*update_irq_enable)(struct device *, unsigned int enabled); |