#ifndef __RTC_H #define __RTC_H #define PORT_CMOS_INDEX 0x0070 #define PORT_CMOS_DATA 0x0071 // PORT_CMOS_INDEX nmi disable bit #define NMI_DISABLE_BIT 0x80 // Standard BIOS RTC chip entries #define CMOS_RTC_SECONDS 0x00 #define CMOS_RTC_SECONDS_ALARM 0x01 #define CMOS_RTC_MINUTES 0x02 #define CMOS_RTC_MINUTES_ALARM 0x03 #define CMOS_RTC_HOURS 0x04 #define CMOS_RTC_HOURS_ALARM 0x05 #define CMOS_RTC_DAY_WEEK 0x06 #define CMOS_RTC_DAY_MONTH 0x07 #define CMOS_RTC_MONTH 0x08 #define CMOS_RTC_YEAR 0x09 #define CMOS_STATUS_A 0x0a #define CMOS_STATUS_B 0x0b #define CMOS_STATUS_C 0x0c #define CMOS_STATUS_D 0x0d #define CMOS_RESET_CODE 0x0f // QEMU cmos config fields. DO NOT ADD MORE. (All new content should // be passed via the fw_cfg "file" interface.) #define CMOS_FLOPPY_DRIVE_TYPE 0x10 #define CMOS_DISK_DATA 0x12 #define CMOS_EQUIPMENT_INFO 0x14 #define CMOS_DISK_DRIVE1_TYPE 0x19 #define CMOS_DISK_DRIVE2_TYPE 0x1a #define CMOS_DISK_DRIVE1_CYL 0x1b #define CMOS_DISK_DRIVE2_CYL 0x24 #define CMOS_MEM_EXTMEM_LOW 0x30 #define CMOS_MEM_EXTMEM_HIGH 0x31 #define CMOS_CENTURY 0x32 #define CMOS_MEM_EXTMEM2_LOW 0x34 #define CMOS_MEM_EXTMEM2_HIGH 0x35 #define CMOS_BIOS_BOOTFLAG1 0x38 #define CMOS_BIOS_DISKTRANSFLAG 0x39 #define CMOS_BIOS_BOOTFLAG2 0x3d #define CMOS_MEM_HIGHMEM_LOW 0x5b #define CMOS_MEM_HIGHMEM_MID 0x5c #define CMOS_MEM_HIGHMEM_HIGH 0x5d #define CMOS_BIOS_SMP_COUNT 0x5f // RTC register flags #define RTC_A_UIP 0x80 #define RTC_B_SET 0x80 #define RTC_B_PIE 0x40 #define RTC_B_AIE 0x20 #define RTC_B_UIE 0x10 #define RTC_B_BIN 0x04 #define RTC_B_24HR 0x02 #define RTC_B_DSE 0x01 #ifndef __ASSEMBLY__ #include "types.h" // u8 // rtc.c u8 rtc_read(u8 index); void rtc_write(u8 index, u8 val); void rtc_mask(u8 index, u8 off, u8 on); int rtc_updating(void); void rtc_setup(void); void rtc_use(void); void rtc_release(void); #endif // !__ASSEMBLY__ #endif // rtc.h