aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-sh.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-sh.c')
-rw-r--r--drivers/rtc/rtc-sh.c39
1 files changed, 9 insertions, 30 deletions
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index 5efbd5990ff8..6ac55fd48413 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -344,29 +344,10 @@ static inline void sh_rtc_setcie(struct device *dev, unsigned int enable)
344 spin_unlock_irq(&rtc->lock); 344 spin_unlock_irq(&rtc->lock);
345} 345}
346 346
347static int sh_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) 347static int sh_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
348{ 348{
349 struct sh_rtc *rtc = dev_get_drvdata(dev); 349 sh_rtc_setaie(dev, enabled);
350 unsigned int ret = 0; 350 return 0;
351
352 switch (cmd) {
353 case RTC_AIE_OFF:
354 case RTC_AIE_ON:
355 sh_rtc_setaie(dev, cmd == RTC_AIE_ON);
356 break;
357 case RTC_UIE_OFF:
358 rtc->periodic_freq &= ~PF_OXS;
359 sh_rtc_setcie(dev, 0);
360 break;
361 case RTC_UIE_ON:
362 rtc->periodic_freq |= PF_OXS;
363 sh_rtc_setcie(dev, 1);
364 break;
365 default:
366 ret = -ENOIOCTLCMD;
367 }
368
369 return ret;
370} 351}
371 352
372static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm) 353static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
@@ -596,14 +577,12 @@ static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
596} 577}
597 578
598static struct rtc_class_ops sh_rtc_ops = { 579static struct rtc_class_ops sh_rtc_ops = {
599 .ioctl = sh_rtc_ioctl,
600 .read_time = sh_rtc_read_time, 580 .read_time = sh_rtc_read_time,
601 .set_time = sh_rtc_set_time, 581 .set_time = sh_rtc_set_time,
602 .read_alarm = sh_rtc_read_alarm, 582 .read_alarm = sh_rtc_read_alarm,
603 .set_alarm = sh_rtc_set_alarm, 583 .set_alarm = sh_rtc_set_alarm,
604 .irq_set_state = sh_rtc_irq_set_state,
605 .irq_set_freq = sh_rtc_irq_set_freq,
606 .proc = sh_rtc_proc, 584 .proc = sh_rtc_proc,
585 .alarm_irq_enable = sh_rtc_alarm_irq_enable,
607}; 586};
608 587
609static int __init sh_rtc_probe(struct platform_device *pdev) 588static int __init sh_rtc_probe(struct platform_device *pdev)
@@ -761,7 +740,7 @@ err_unmap:
761 clk_put(rtc->clk); 740 clk_put(rtc->clk);
762 iounmap(rtc->regbase); 741 iounmap(rtc->regbase);
763err_badmap: 742err_badmap:
764 release_resource(rtc->res); 743 release_mem_region(rtc->res->start, rtc->regsize);
765err_badres: 744err_badres:
766 kfree(rtc); 745 kfree(rtc);
767 746
@@ -786,7 +765,7 @@ static int __exit sh_rtc_remove(struct platform_device *pdev)
786 } 765 }
787 766
788 iounmap(rtc->regbase); 767 iounmap(rtc->regbase);
789 release_resource(rtc->res); 768 release_mem_region(rtc->res->start, rtc->regsize);
790 769
791 clk_disable(rtc->clk); 770 clk_disable(rtc->clk);
792 clk_put(rtc->clk); 771 clk_put(rtc->clk);
@@ -803,11 +782,11 @@ static void sh_rtc_set_irq_wake(struct device *dev, int enabled)
803 struct platform_device *pdev = to_platform_device(dev); 782 struct platform_device *pdev = to_platform_device(dev);
804 struct sh_rtc *rtc = platform_get_drvdata(pdev); 783 struct sh_rtc *rtc = platform_get_drvdata(pdev);
805 784
806 set_irq_wake(rtc->periodic_irq, enabled); 785 irq_set_irq_wake(rtc->periodic_irq, enabled);
807 786
808 if (rtc->carry_irq > 0) { 787 if (rtc->carry_irq > 0) {
809 set_irq_wake(rtc->carry_irq, enabled); 788 irq_set_irq_wake(rtc->carry_irq, enabled);
810 set_irq_wake(rtc->alarm_irq, enabled); 789 irq_set_irq_wake(rtc->alarm_irq, enabled);
811 } 790 }
812} 791}
813 792