]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Library/PlatformCmosLib/PlatformCmosLib.c
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / PlatformCmosLib / PlatformCmosLib.c
1 /*++
2
3 Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7
8
9
10 Module Name:
11
12 CmosTable.h
13
14 Abstract:
15
16 --*/
17
18 #include <Base.h>
19 #include <Library/IoLib.h>
20 #include <Library/PlatformCmosLib.h>
21 #include "CmosMap.h"
22 #include <PchAccess.h>
23 #include "PlatformBaseAddresses.h"
24
25 #define DEFAULT_VALUE 0
26 #define DEFAULT_ATTRIBUTES 0
27 #define EXCLUDE_FROM_CHECKSUM CMOS_ATTRIBUTE_EXCLUDE_FROM_CHECKSUM
28
29 #define CMOS_DEBUG_PRINT_LEVEL_DEFAULT_VALUE 0x46 // EFI_D_WARN|EFI_D_INFO|EFI_D_LOAD
30 #define CMOS_DEBUG_PRINT_LEVEL_3_DEFAULT_VALUE 0x80 // EFI_D_ERROR
31
32 //
33 // Add the CMOS entry below
34 //
35 CMOS_ENTRY mCmosTable[] = {
36 { CPU_HT_POLICY, CPU_HT_POLICY_ENABLED, EXCLUDE_FROM_CHECKSUM },
37 { TPM_POLICY, TPM_POLICY_ENABLED, DEFAULT_ATTRIBUTES },
38 { CMOS_LCDPANELTYPE_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
39 { CMOS_LCDPANELSCALING_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
40 { CMOS_IGDBOOTTYPE_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
41 { CMOS_BACKLIGHT_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
42 { CMOS_LFP_PANEL_COLOR_DEPTH_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
43 { CMOS_EDP_ACTIVE_LFP_CONFIG_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
44 { CMOS_PRIMARY_DISPLAY_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
45 { CMOS_IGD_DISPLAY_PIPE_B_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
46 { CMOS_SDVOPANELTYPE_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
47 { CMOS_PLATFORM_RESET_OS, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
48 { CMOS_CPU_BSP_SELECT, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
49 { CMOS_CPU_RATIO_OFFSET, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
50 { CMOS_ICH_PORT80_OFFSET, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
51 { CMOS_MAXRATIO_CONFIG_REG, DEFAULT_VALUE, DEFAULT_ATTRIBUTES },
52 { RTC_ADDRESS_CENTURY, RTC_ADDRESS_CENTURY_DEFAULT, CMOS_ATTRIBUTE_EXCLUDE_FROM_CHECKSUM },
53 { CMOS_POST_CODE_BREAK_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
54 { CMOS_POST_CODE_BREAK_1_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
55 { CMOS_POST_CODE_BREAK_2_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
56 { CMOS_POST_CODE_BREAK_3_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
57 { CMOS_DEBUG_PRINT_LEVEL_REG, CMOS_DEBUG_PRINT_LEVEL_DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
58 { CMOS_DEBUG_PRINT_LEVEL_1_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
59 { CMOS_DEBUG_PRINT_LEVEL_2_REG, DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
60 { CMOS_DEBUG_PRINT_LEVEL_3_REG, CMOS_DEBUG_PRINT_LEVEL_3_DEFAULT_VALUE, EXCLUDE_FROM_CHECKSUM },
61 };
62
63 /**
64 Funtion to return platform CMOS entry.
65
66 @param [out] CmosEntry Platform CMOS entry.
67
68 @param [out] CmosEntryCount Number of platform CMOS entry.
69
70 @return Status.
71 **/
72 RETURN_STATUS
73 EFIAPI
74 GetPlatformCmosEntry (
75 OUT CMOS_ENTRY **CmosEntry,
76 OUT UINTN *CmosEntryCount
77 )
78 {
79 *CmosEntry = mCmosTable;
80 *CmosEntryCount = sizeof(mCmosTable)/sizeof(mCmosTable[0]);
81 return RETURN_SUCCESS;
82 }
83
84 /**
85 Function to check if Battery lost or CMOS cleared.
86
87 @reval TRUE Battery is always present.
88 @reval FALSE CMOS is cleared.
89 **/
90 BOOLEAN
91 EFIAPI
92 CheckCmosBatteryStatus (
93 VOID
94 )
95 {
96 //
97 // Check if the CMOS battery is present
98 // Checks RTC_PWR_STS bit in the GEN_PMCON_1 register
99 //
100
101 if ((MmioRead8 (PMC_BASE_ADDRESS + R_PCH_PMC_GEN_PMCON_1) & B_PCH_PMC_GEN_PMCON_RTC_PWR_STS) == 0) {
102 return TRUE;
103 } else {
104 return FALSE;
105 }
106 }