diff options
Diffstat (limited to 'drivers/rtc/rtc-sh.c')
-rw-r--r-- | drivers/rtc/rtc-sh.c | 39 |
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 | ||
347 | static int sh_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) | 347 | static 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 | ||
372 | static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm) | 353 | static 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 | ||
598 | static struct rtc_class_ops sh_rtc_ops = { | 579 | static 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 | ||
609 | static int __init sh_rtc_probe(struct platform_device *pdev) | 588 | static 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); |
763 | err_badmap: | 742 | err_badmap: |
764 | release_resource(rtc->res); | 743 | release_mem_region(rtc->res->start, rtc->regsize); |
765 | err_badres: | 744 | err_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 | ||