| #ifndef _RTC_H | |
| #define _RTC_H | |
| /** @file | |
| * | |
| * CMOS Real-Time Clock (RTC) | |
| * | |
| * The CMOS/RTC registers are documented (with varying degrees of | |
| * accuracy and consistency) at | |
| * | |
| * http://www.nondot.org/sabre/os/files/MiscHW/RealtimeClockFAQ.txt | |
| * http://wiki.osdev.org/RTC | |
| * http://wiki.osdev.org/CMOS | |
| */ | |
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | |
| #include <pic8259.h> | |
| /** RTC IRQ */ | |
| #define RTC_IRQ 8 | |
| /** RTC interrupt vector */ | |
| #define RTC_INT IRQ_INT ( RTC_IRQ ) | |
| /** CMOS/RTC address (and NMI) register */ | |
| #define CMOS_ADDRESS 0x70 | |
| /** NMI disable bit */ | |
| #define CMOS_DISABLE_NMI 0x80 | |
| /** CMOS/RTC data register */ | |
| #define CMOS_DATA 0x71 | |
| /** RTC seconds */ | |
| #define RTC_SEC 0x00 | |
| /** RTC minutes */ | |
| #define RTC_MIN 0x02 | |
| /** RTC hours */ | |
| #define RTC_HOUR 0x04 | |
| /** RTC weekday */ | |
| #define RTC_WDAY 0x06 | |
| /** RTC day of month */ | |
| #define RTC_MDAY 0x07 | |
| /** RTC month */ | |
| #define RTC_MON 0x08 | |
| /** RTC year */ | |
| #define RTC_YEAR 0x09 | |
| /** RTC status register A */ | |
| #define RTC_STATUS_A 0x0a | |
| /** RTC update in progress bit */ | |
| #define RTC_STATUS_A_UPDATE_IN_PROGRESS 0x80 | |
| /** RTC status register B */ | |
| #define RTC_STATUS_B 0x0b | |
| /** RTC 24 hour format bit */ | |
| #define RTC_STATUS_B_24_HOUR 0x02 | |
| /** RTC binary mode bit */ | |
| #define RTC_STATUS_B_BINARY 0x04 | |
| /** RTC Periodic Interrupt Enabled bit */ | |
| #define RTC_STATUS_B_PIE 0x40 | |
| /** RTC status register C */ | |
| #define RTC_STATUS_C 0x0c | |
| /** RTC status register D */ | |
| #define RTC_STATUS_D 0x0d | |
| /** CMOS default address */ | |
| #define CMOS_DEFAULT_ADDRESS RTC_STATUS_D | |
| #endif /* _RTC_H */ |