--- /dev/null
+#ifndef __LUNAIX_RTC_H
+#define __LUNAIX_RTC_H
+
+#include "io.h"
+
+#define RTC_INDEX_PORT 0x70
+#define RTC_TARGET_PORT 0x71
+
+#define WITH_NMI_DISABLED 0x80
+
+#define RTC_CURRENT_CENTRY 20
+
+#define RTC_REG_YRS 0x9
+#define RTC_REG_MTH 0x8
+#define RTC_REG_DAY 0x7
+#define RTC_REG_WDY 0x6
+#define RTC_REG_HRS 0x4
+#define RTC_REG_MIN 0x2
+#define RTC_REG_SEC 0x0
+
+#define RTC_REG_A 0xA
+#define RTC_REG_B 0xB
+#define RTC_REG_C 0xC
+#define RTC_REG_D 0xD
+
+#define RTC_BIN_ENCODED(reg) (reg & 0x04)
+#define RTC_24HRS_ENCODED(reg) (reg & 0x02)
+
+typedef struct
+{
+ uint32_t year; // use int32 as we need to store the 4-digit year
+ uint8_t month;
+ uint8_t day;
+ uint8_t weekday;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
+} rtc_datetime;
+
+
+uint8_t
+rtc_read_reg(uint8_t reg_selector);
+
+void
+rtc_get_datetime(rtc_datetime* datetime);
+
+#endif /* __LUNAIX_RTC_H */