3 Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
24 #include <Library/IoLib.h>
25 #include <Library/PlatformCmosLib.h>
27 #include <PchAccess.h>
28 #include "PlatformBaseAddresses.h"
30 #define DEFAULT_VALUE 0
31 #define DEFAULT_ATTRIBUTES 0
32 #define EXCLUDE_FROM_CHECKSUM CMOS_ATTRIBUTE_EXCLUDE_FROM_CHECKSUM
34 #define CMOS_DEBUG_PRINT_LEVEL_DEFAULT_VALUE 0x46 // EFI_D_WARN|EFI_D_INFO|EFI_D_LOAD
35 #define CMOS_DEBUG_PRINT_LEVEL_3_DEFAULT_VALUE 0x80 // EFI_D_ERROR
38 // Add the CMOS entry below
40 CMOS_ENTRY mCmosTable
[] = {
41 { CPU_HT_POLICY
, CPU_HT_POLICY_ENABLED
, EXCLUDE_FROM_CHECKSUM
},
42 { TPM_POLICY
, TPM_POLICY_ENABLED
, DEFAULT_ATTRIBUTES
},
43 { CMOS_LCDPANELTYPE_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
44 { CMOS_LCDPANELSCALING_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
45 { CMOS_IGDBOOTTYPE_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
46 { CMOS_BACKLIGHT_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
47 { CMOS_LFP_PANEL_COLOR_DEPTH_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
48 { CMOS_EDP_ACTIVE_LFP_CONFIG_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
49 { CMOS_PRIMARY_DISPLAY_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
50 { CMOS_IGD_DISPLAY_PIPE_B_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
51 { CMOS_SDVOPANELTYPE_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
52 { CMOS_PLATFORM_RESET_OS
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
53 { CMOS_CPU_BSP_SELECT
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
54 { CMOS_CPU_RATIO_OFFSET
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
55 { CMOS_ICH_PORT80_OFFSET
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
56 { CMOS_MAXRATIO_CONFIG_REG
, DEFAULT_VALUE
, DEFAULT_ATTRIBUTES
},
57 { RTC_ADDRESS_CENTURY
, RTC_ADDRESS_CENTURY_DEFAULT
, CMOS_ATTRIBUTE_EXCLUDE_FROM_CHECKSUM
},
58 { CMOS_POST_CODE_BREAK_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
59 { CMOS_POST_CODE_BREAK_1_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
60 { CMOS_POST_CODE_BREAK_2_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
61 { CMOS_POST_CODE_BREAK_3_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
62 { CMOS_DEBUG_PRINT_LEVEL_REG
, CMOS_DEBUG_PRINT_LEVEL_DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
63 { CMOS_DEBUG_PRINT_LEVEL_1_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
64 { CMOS_DEBUG_PRINT_LEVEL_2_REG
, DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
65 { CMOS_DEBUG_PRINT_LEVEL_3_REG
, CMOS_DEBUG_PRINT_LEVEL_3_DEFAULT_VALUE
, EXCLUDE_FROM_CHECKSUM
},
69 Funtion to return platform CMOS entry.
71 @param [out] CmosEntry Platform CMOS entry.
73 @param [out] CmosEntryCount Number of platform CMOS entry.
79 GetPlatformCmosEntry (
80 OUT CMOS_ENTRY
**CmosEntry
,
81 OUT UINTN
*CmosEntryCount
84 *CmosEntry
= mCmosTable
;
85 *CmosEntryCount
= sizeof(mCmosTable
)/sizeof(mCmosTable
[0]);
86 return RETURN_SUCCESS
;
90 Function to check if Battery lost or CMOS cleared.
92 @reval TRUE Battery is always present.
93 @reval FALSE CMOS is cleared.
97 CheckCmosBatteryStatus (
102 // Check if the CMOS battery is present
103 // Checks RTC_PWR_STS bit in the GEN_PMCON_1 register
106 if ((MmioRead8 (PMC_BASE_ADDRESS
+ R_PCH_PMC_GEN_PMCON_1
) & B_PCH_PMC_GEN_PMCON_RTC_PWR_STS
) == 0) {