1 /** @file 2 PCH Smm Library Services that implements both S/W SMI generation and detection. 3 4 Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials are licensed and made available under 8 the terms and conditions of the BSD License that accompanies this distribution. 10 The full text of the license may be found at 12 http://opensource.org/licenses/bsd-license.php. 14 16 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 18 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 20 22 24 **/ 25 26 27 #include "CommonHeader.h" 28 29 30 /** 31 Triggers a run time or boot time SMI. 32 33 This function triggers a software SMM interrupt and set the APMC status with an 8-bit Data. 34 35 @param Data The value to set the APMC status. 36 37 **/ 38 VOID 39 InternalTriggerSmi ( 40 IN UINT8 Data 41 ) 42 { 43 ASSERT(FALSE); 44 } 45 46 47 /** 48 Triggers an SMI at boot time. 49 50 This function triggers a software SMM interrupt at boot time. 51 52 **/ 53 VOID 54 EFIAPI 55 TriggerBootServiceSoftwareSmi ( 56 VOID 57 ) 58 { 59 ASSERT(FALSE); 60 } 61 62 63 /** 64 Triggers an SMI at run time. 65 66 This function triggers a software SMM interrupt at run time. 67 68 **/ 69 VOID 70 EFIAPI 71 TriggerRuntimeSoftwareSmi ( 72 VOID 73 ) 74 { 75 ASSERT(FALSE); 76 } 77 78 79 /** 80 Gets the software SMI data. 81 82 This function tests if a software SMM interrupt happens. If a software SMI happens, 83 it retrieves the SMM data and returns it as a non-negative value; otherwise a negative 84 value is returned. 85 86 @return Data The data retrieved from SMM data port in case of a software SMI; 87 otherwise a negative value. 88 89 **/ 90 INTN 91 InternalGetSwSmiData ( 92 VOID 93 ) 94 { 95 ASSERT(FALSE); 96 return -1; 97 } 98 99 100 /** 101 Test if a boot time software SMI happened. 102 103 This function tests if a software SMM interrupt happened. If a software SMM interrupt happened and 104 it was triggered at boot time, it returns TRUE. Otherwise, it returns FALSE. 105 106 @retval TRUE A software SMI triggered at boot time happened. 107 @retval FLASE No software SMI happened or the software SMI was triggered at run time. 108 109 **/ 110 BOOLEAN 111 EFIAPI 112 IsBootServiceSoftwareSmi ( 113 VOID 114 ) 115 { 116 ASSERT(FALSE); 117 return FALSE; 118 } 119 120 121 /** 122 Test if a run time software SMI happened. 123 124 This function tests if a software SMM interrupt happened. If a software SMM interrupt happened and 125 it was triggered at run time, it returns TRUE. Otherwise, it returns FALSE. 126 127 @retval TRUE A software SMI triggered at run time happened. 128 @retval FLASE No software SMI happened or the software SMI was triggered at boot time. 129 130 **/ 131 BOOLEAN 132 EFIAPI 133 IsRuntimeSoftwareSmi ( 134 VOID 135 ) 136 { 137 ASSERT(FALSE); 138 return FALSE; 139 } 140 141 142 /** 143 144 Clear APM SMI Status Bit; Set the EOS bit. 145 146 **/ 147 VOID 148 EFIAPI 149 ClearSmi ( 150 VOID 151 ) 152 { 153 154 UINT16 PmBase; 155 156 // 157 // Get PMBase 158 // 159 PmBase = PcdGet16 (PcdPchAcpiIoPortBaseAddress); 160 161 // 162 // Clear the APM SMI Status Bit 163 // 164 IoWrite16 (PmBase + R_PCH_ACPI_SMI_STS, B_PCH_ACPI_APM_STS); 165 166 // 167 // Set the EOS Bit 168 // 169 IoOr32 (PmBase + R_PCH_ACPI_SMI_EN, B_PCH_ACPI_EOS); 170 } 171 172