//************************************************************************* //************************************************************************* //** ** //** (C)Copyright 1985-2011, American Megatrends, Inc. ** //** ** //** All Rights Reserved. ** //** ** //** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** //** ** //** Phone: (770)-246-8600 ** //** ** //************************************************************************* //************************************************************************* //************************************************************************* // $Header: /Alaska/BIN/Chipset/Intel/SouthBridge/LynxPoint/Intel Pch SB Chipset/RTC.h 3 7/17/13 1:54a Scottyang $ // // $Revision: 3 $ // // $Date: 7/17/13 1:54a $ //************************************************************************* // Revision History // ---------------- // $Log: /Alaska/BIN/Chipset/Intel/SouthBridge/LynxPoint/Intel Pch SB Chipset/RTC.h $ // // 3 7/17/13 1:54a Scottyang // [TAG] EIP128233 // [Category] Improvement // [Description] Improving UEFI PXE image downloading proformance. // [Files] RTC.h // SBRun.c // // 2 1/11/13 1:51a Scottyang // [TAG] EIP88358 // [Category] Improvement // [Description] Add FORCE_USER_TO_SETUP_IF_CMOS_BAD token // [Files] SBDex.c, SBPei.c, RTC.h, SB.sdl // // 1 2/08/12 8:24a Yurenlai // Intel Lynx Point/SB eChipset initially releases. // //************************************************************************* // // // Name: RTC.h // // Description: Real Time Clock and CMOS Data bank registr definitions. // // //************************************************************************* #ifndef __RTC__H__ #define __RTC__H__ #ifdef __cplusplus extern "C" { #endif #include #define EFI_TIME_VARIABLE_GUID \ {0x9d0da369, 0x540b, 0x46f8, 0x85, 0xa0, 0x2b, 0x5f, 0x2c, 0x30, 0x1e, 0x15} // [EIP88358] >> #define CMOS_BAD_HOB_GUID \ {0x7e7369ce, 0x0188, 0x4183, 0x8c, 0x2d, 0xda, 0xf7, 0xb7, 0x30, 0xe4, 0x2b} // [EIP88358] << //--------------------------------------------------------------------------- // Define Real Time Clock INDEX and DATA registers //--------------------------------------------------------------------------- #define RTC_INDEX_REG 0x70 #define RTC_DATA_REG 0x71 //--------------------------------------------------------------------------- // Define Internal Registers for Real Time Clock //--------------------------------------------------------------------------- #define RTC_SECONDS_REG 0x00 // R/W Range 0..59 #define RTC_SECONDS_ALARM_REG 0x01 // R/W Range 0..59 #define RTC_MINUTES_REG 0x02 // R/W Range 0..59 #define RTC_MINUTES_ALARM_REG 0x03 // R/W Range 0..59 #define RTC_HOURS_REG 0x04 // R/W Range 1..12 or 0..23 // Bit 7 is AM/PM #define RTC_HOURS_ALARM_REG 0x05 // R/W Range 1..12 or 0..23 // Bit 7 is AM/PM #define RTC_DAY_OF_WEEK_REG 0x06 // R/W Range 1..7 #define RTC_DAY_OF_MONTH_REG 0x07 // R/W Range 1..31 #define RTC_MONTH_REG 0x08 // R/W Range 1..12 #define RTC_YEAR_REG 0x09 // R/W Range 0..99 #define RTC_REG_A_INDEX 0x0a // R/W[0..6] R0[7] #define RTC_REG_B_INDEX 0x0b // R/W #define RTC_REG_C_INDEX 0x0c // RO #define RTC_REG_D_INDEX 0x0d // RO #define RTC_NMI_MASK 0x80 #pragma pack(push,1) //--------------------------------------------------------------------------- // Register A Bit definitions //--------------------------------------------------------------------------- typedef union { UINT8 REG_A; struct { UINT8 RateSel : 4; UINT8 Divisor : 3; UINT8 UpdInProgr : 1; }; } RTC_REG_A; //--------------------------------------------------------------------------- // Register B Bit definitions //--------------------------------------------------------------------------- typedef union { UINT8 REG_B; struct { UINT8 DaylightSav : 1; // 0 - Daylight saving disabled // 1 - Daylight savings enabled UINT8 Mode : 1; // 0 - 12 hour mode // 1 - 24 hour mode UINT8 Format : 1; // 0 - BCD Format // 1 - Binary Format UINT8 SquareWave : 1; // 0 - Disable SQWE output // 1 - Enable SQWE output UINT8 UpdateInt : 1; // 0 - Update INT disabled // 1 - Update INT enabled UINT8 AlarmInt : 1; // 0 - Alarm INT disabled // 1 - Alarm INT Enabled UINT8 PeriodicInt : 1; // 0 - Periodic INT disabled // 1 - Periodic INT Enabled UINT8 Set : 1; // 0 - Normal operation // 1 - Updates inhibited }; } RTC_REG_B; //--------------------------------------------------------------------------- // Register C Bit definitions //--------------------------------------------------------------------------- typedef union { UINT8 REG_C; struct { UINT8 Reserved : 4; // Read as zero. Can not be written. UINT8 UpdEndFlag : 1; // Update End Interrupt Flag UINT8 AlarmFlag : 1; // Alarm Interrupt Flag UINT8 PeriodicFlag : 1; // Periodic Interrupt Flag UINT8 IrqFlag : 1; // Iterrupt Request Flag = // PF & PIE | AF & AIE | UF & UIE }; } RTC_REG_C; //--------------------------------------------------------------------------- // Register D Bit definitions //--------------------------------------------------------------------------- typedef union { UINT8 REG_D; struct { UINT8 Reserved : 7; UINT8 DataValid : 1; // Valid RAM and Time }; } RTC_REG_D; //--------------------------------------------------------------------------- // Bit definitions for Day Alarm Register (Porting Required if needed) //--------------------------------------------------------------------------- typedef union { UINT8 REG_DATE_ALARM; struct { UINT8 DateAlarm : 6; UINT8 Reserved : 2; }; } RTC_DATE_ALARM_REG; //--------------------------------------------------------------------------- // Bit definitions for Month Alarm Register (Porting Required if needed) //--------------------------------------------------------------------------- typedef union { UINT8 REG_MONTH_ALARM; struct { UINT8 MonthAlarm : 6; UINT8 Reserved : 2; }; } RTC_MONTH_ALARM_REG; // [EIP88358] >> typedef struct _CMOS_BAD_HOB { EFI_HOB_GUID_TYPE Header; } CMOS_BAD_HOB; // [EIP88358] << #pragma pack(pop) /****** DO NOT WRITE BELOW THIS LINE *******/ #ifdef __cplusplus } #endif #endif //************************************************************************* //************************************************************************* //** ** //** (C)Copyright 1985-2011, American Megatrends, Inc. ** //** ** //** All Rights Reserved. ** //** ** //** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** //** ** //** Phone: (770)-246-8600 ** //** ** //************************************************************************* //*************************************************************************