Lines Matching full:cmos
3 * RTC class driver for "CMOS RTC": PCs, ACPI, etc
10 * The original "cmos clock" chip was an MC146818 chip, now obsolete.
253 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_read_alarm() local
257 if (!is_valid_irq(cmos->irq)) in cmos_read_alarm()
270 if (cmos->day_alrm) { in cmos_read_alarm()
272 t->time.tm_mday = CMOS_READ(cmos->day_alrm) & 0x3f; in cmos_read_alarm()
276 if (cmos->mon_alrm) { in cmos_read_alarm()
277 t->time.tm_mon = CMOS_READ(cmos->mon_alrm); in cmos_read_alarm()
300 if (cmos->day_alrm) { in cmos_read_alarm()
306 if (cmos->mon_alrm) { in cmos_read_alarm()
321 static void cmos_checkintr(struct cmos_rtc *cmos, unsigned char rtc_control) in cmos_checkintr() argument
335 rtc_update_irq(cmos->rtc, 1, rtc_intr); in cmos_checkintr()
338 static void cmos_irq_enable(struct cmos_rtc *cmos, unsigned char mask) in cmos_irq_enable() argument
346 cmos_checkintr(cmos, rtc_control); in cmos_irq_enable()
354 if (cmos->wake_on) in cmos_irq_enable()
355 cmos->wake_on(cmos->dev); in cmos_irq_enable()
358 cmos_checkintr(cmos, rtc_control); in cmos_irq_enable()
361 static void cmos_irq_disable(struct cmos_rtc *cmos, unsigned char mask) in cmos_irq_disable() argument
372 if (cmos->wake_off) in cmos_irq_disable()
373 cmos->wake_off(cmos->dev); in cmos_irq_disable()
376 cmos_checkintr(cmos, rtc_control); in cmos_irq_disable()
381 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_validate_alarm() local
386 if (!cmos->day_alrm) { in cmos_validate_alarm()
398 } else if (!cmos->mon_alrm) { in cmos_validate_alarm()
448 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_set_alarm() local
453 if (!is_valid_irq(cmos->irq)) in cmos_set_alarm()
482 cmos_irq_disable(cmos, RTC_AIE); in cmos_set_alarm()
490 if (cmos->day_alrm) { in cmos_set_alarm()
491 CMOS_WRITE(mday, cmos->day_alrm); in cmos_set_alarm()
492 if (cmos->mon_alrm) in cmos_set_alarm()
493 CMOS_WRITE(mon, cmos->mon_alrm); in cmos_set_alarm()
506 cmos_irq_enable(cmos, RTC_AIE); in cmos_set_alarm()
510 cmos->alarm_expires = rtc_tm_to_time64(&t->time); in cmos_set_alarm()
517 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_alarm_irq_enable() local
523 cmos_irq_enable(cmos, RTC_AIE); in cmos_alarm_irq_enable()
525 cmos_irq_disable(cmos, RTC_AIE); in cmos_alarm_irq_enable()
535 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_procfs() local
561 cmos->rtc->irq_freq, in cmos_procfs()
620 struct cmos_rtc *cmos = priv; in cmos_nvram_write() local
633 if (off == cmos->day_alrm in cmos_nvram_write()
634 || off == cmos->mon_alrm in cmos_nvram_write()
635 || off == cmos->century) in cmos_nvram_write()
812 /* force periodic irq to CMOS reset default of 1024Hz; in cmos_do_probe()
913 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_do_remove() local
916 cmos_do_shutdown(cmos->irq); in cmos_do_remove()
918 if (is_valid_irq(cmos->irq)) { in cmos_do_remove()
919 free_irq(cmos->irq, cmos->rtc); in cmos_do_remove()
924 cmos->rtc = NULL; in cmos_do_remove()
926 ports = cmos->iomem; in cmos_do_remove()
931 cmos->iomem = NULL; in cmos_do_remove()
933 cmos->dev = NULL; in cmos_do_remove()
938 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_aie_poweroff() local
944 if (!cmos->alarm_expires) in cmos_aie_poweroff()
967 if (cmos->alarm_expires == t_now + 1) { in cmos_aie_poweroff()
974 } else if (cmos->alarm_expires > t_now + 1) { in cmos_aie_poweroff()
983 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_suspend() local
988 cmos->suspend_ctrl = tmp = CMOS_READ(RTC_CONTROL); in cmos_suspend()
1000 cmos_checkintr(cmos, tmp); in cmos_suspend()
1005 cmos->enabled_wake = 1; in cmos_suspend()
1006 if (cmos->wake_on) in cmos_suspend()
1007 cmos->wake_on(dev); in cmos_suspend()
1009 enable_irq_wake(cmos->irq); in cmos_suspend()
1012 memset(&cmos->saved_wkalrm, 0, sizeof(struct rtc_wkalrm)); in cmos_suspend()
1013 cmos_read_alarm(dev, &cmos->saved_wkalrm); in cmos_suspend()
1038 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_check_wkalrm() local
1046 if (!(cmos->suspend_ctrl & RTC_AIE)) in cmos_check_wkalrm()
1056 if (t_now >= cmos->alarm_expires && cmos_use_acpi_alarm()) { in cmos_check_wkalrm()
1057 cmos_interrupt(0, (void *)cmos->rtc); in cmos_check_wkalrm()
1064 t_saved_expires = rtc_tm_to_time64(&cmos->saved_wkalrm.time); in cmos_check_wkalrm()
1066 cmos->saved_wkalrm.enabled != current_alarm.enabled) { in cmos_check_wkalrm()
1067 cmos_set_alarm(dev, &cmos->saved_wkalrm); in cmos_check_wkalrm()
1076 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_resume() local
1079 if (cmos->enabled_wake && !cmos_use_acpi_alarm()) { in cmos_resume()
1080 if (cmos->wake_off) in cmos_resume()
1081 cmos->wake_off(dev); in cmos_resume()
1083 disable_irq_wake(cmos->irq); in cmos_resume()
1084 cmos->enabled_wake = 0; in cmos_resume()
1091 tmp = cmos->suspend_ctrl; in cmos_resume()
1092 cmos->suspend_ctrl = 0; in cmos_resume()
1113 rtc_update_irq(cmos->rtc, 1, mask); in cmos_resume()
1132 /* On non-x86 systems, a "CMOS" RTC lives most naturally on platform_bus.
1147 struct cmos_rtc *cmos = dev_get_drvdata(dev); in rtc_handler() local
1159 cmos_interrupt(0, (void *)cmos->rtc); in rtc_handler()
1169 rtc_update_irq(cmos->rtc, 1, rtc_intr); in rtc_handler()
1224 /* Every ACPI platform has a mc146818 compatible "cmos rtc". Here we find
1266 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_check_acpi_rtc_status() local
1281 rtc_update_irq(cmos->rtc, 1, mask); in cmos_check_acpi_rtc_status()
1333 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_pnp_shutdown() local
1342 cmos_do_shutdown(cmos->irq); in cmos_pnp_shutdown()
1431 struct cmos_rtc *cmos = dev_get_drvdata(dev); in cmos_platform_shutdown() local
1440 cmos_do_shutdown(cmos->irq); in cmos_platform_shutdown()
1502 MODULE_DESCRIPTION("Driver for PC-style 'CMOS' RTCs");