static int puv3_rtc_remove(struct platform_device *dev) { puv3_rtc_setpie(&dev->dev, 0); puv3_rtc_setaie(&dev->dev, 0); release_resource(puv3_rtc_mem); kfree(puv3_rtc_mem); return 0; }
static int __devexit puv3_rtc_remove(struct platform_device *dev) { struct rtc_device *rtc = platform_get_drvdata(dev); platform_set_drvdata(dev, NULL); rtc_device_unregister(rtc); puv3_rtc_setpie(&dev->dev, 0); puv3_rtc_setaie(0); release_resource(puv3_rtc_mem); kfree(puv3_rtc_mem); return 0; }
static int puv3_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) { struct rtc_time *tm = &alrm->time; unsigned long rtcalarm_count = 0; pr_debug("puv3_rtc_setalarm: %d, %02x/%02x/%02x %02x.%02x.%02x\n", alrm->enabled, tm->tm_mday & 0xff, tm->tm_mon & 0xff, tm->tm_year & 0xff, tm->tm_hour & 0xff, tm->tm_min & 0xff, tm->tm_sec); rtc_tm_to_time(tm, &rtcalarm_count); writel(rtcalarm_count, RTC_RTAR); puv3_rtc_setaie(alrm->enabled); if (alrm->enabled) enable_irq_wake(puv3_rtc_alarmno); else disable_irq_wake(puv3_rtc_alarmno); return 0; }