#include <Library/BaseMemoryLib.h>\r
#include <Guid/SmmRegisterInfoGuid.h>\r
\r
-#define SMM_DATA_PORT 0xB3\r
-#define SMM_CONTROL_PORT 0xB2\r
+#define SMM_DATA_PORT 0xB3\r
+#define SMM_CONTROL_PORT 0xB2\r
\r
typedef struct {\r
- UINT8 GblBitOffset;\r
- UINT8 ApmBitOffset;\r
- UINT32 Address;\r
+ UINT8 GblBitOffset;\r
+ UINT8 ApmBitOffset;\r
+ UINT32 Address;\r
} SMM_CONTROL2_REG;\r
\r
-SMM_CONTROL2_REG mSmiCtrlReg;\r
+SMM_CONTROL2_REG mSmiCtrlReg;\r
\r
/**\r
Invokes SMI activation from either the preboot or runtime environment.\r
EFI_STATUS\r
EFIAPI\r
Activate (\r
- IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
- IN OUT UINT8 *CommandPort OPTIONAL,\r
- IN OUT UINT8 *DataPort OPTIONAL,\r
- IN BOOLEAN Periodic OPTIONAL,\r
- IN EFI_SMM_PERIOD ActivationInterval OPTIONAL\r
+ IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
+ IN OUT UINT8 *CommandPort OPTIONAL,\r
+ IN OUT UINT8 *DataPort OPTIONAL,\r
+ IN BOOLEAN Periodic OPTIONAL,\r
+ IN EFI_SMM_PERIOD ActivationInterval OPTIONAL\r
)\r
{\r
- UINT32 SmiEn;\r
- UINT32 SmiEnableBits;\r
+ UINT32 SmiEn;\r
+ UINT32 SmiEnableBits;\r
\r
if (Periodic) {\r
return EFI_INVALID_PARAMETER;\r
IoWrite32 (mSmiCtrlReg.Address, SmiEn | SmiEnableBits);\r
}\r
\r
- IoWrite8 (SMM_DATA_PORT, DataPort == NULL ? 0 : *DataPort);\r
+ IoWrite8 (SMM_DATA_PORT, DataPort == NULL ? 0 : *DataPort);\r
IoWrite8 (SMM_CONTROL_PORT, CommandPort == NULL ? 0 : *CommandPort);\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
Deactivate (\r
- IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
- IN BOOLEAN Periodic\r
+ IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
+ IN BOOLEAN Periodic\r
)\r
{\r
if (Periodic) {\r
///\r
/// SMM COntrol2 Protocol instance\r
///\r
-EFI_SMM_CONTROL2_PROTOCOL mSmmControl2 = {\r
+EFI_SMM_CONTROL2_PROTOCOL mSmmControl2 = {\r
Activate,\r
Deactivate,\r
0\r
**/\r
PLD_GENERIC_REGISTER *\r
GetSmmCtrlRegById (\r
- IN PLD_SMM_REGISTERS *SmmRegister,\r
- IN UINT32 Id\r
+ IN PLD_SMM_REGISTERS *SmmRegister,\r
+ IN UINT32 Id\r
)\r
{\r
- UINT32 Index;\r
- PLD_GENERIC_REGISTER *PldReg;\r
+ UINT32 Index;\r
+ PLD_GENERIC_REGISTER *PldReg;\r
\r
PldReg = NULL;\r
for (Index = 0; Index < SmmRegister->Count; Index++) {\r
(PldReg->Address.Address == 0) ||\r
(PldReg->Address.RegisterBitWidth != 1) ||\r
(PldReg->Address.AddressSpaceId != EFI_ACPI_3_0_SYSTEM_IO) ||\r
- (PldReg->Value != 1)) {\r
+ (PldReg->Value != 1))\r
+ {\r
DEBUG ((DEBUG_INFO, "Unexpected SMM register.\n"));\r
DEBUG ((DEBUG_INFO, "AddressSpaceId= 0x%x\n", PldReg->Address.AddressSpaceId));\r
DEBUG ((DEBUG_INFO, "RegBitWidth = 0x%x\n", PldReg->Address.RegisterBitWidth));\r
DEBUG ((DEBUG_INFO, "RegBitOffset = 0x%x\n", PldReg->Address.RegisterBitOffset));\r
DEBUG ((DEBUG_INFO, "AccessSize = 0x%x\n", PldReg->Address.AccessSize));\r
- DEBUG ((DEBUG_INFO, "Address = 0x%lx\n",PldReg->Address.Address ));\r
+ DEBUG ((DEBUG_INFO, "Address = 0x%lx\n", PldReg->Address.Address));\r
return NULL;\r
}\r
+\r
return PldReg;\r
}\r
\r
-\r
/**\r
Fixup data pointers so that the services can be called in virtual mode.\r
\r
VOID\r
EFIAPI\r
SmmControlVirtualAddressChangeEvent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EfiConvertPointer (0x0, (VOID **) &(mSmmControl2.Trigger));\r
- EfiConvertPointer (0x0, (VOID **) &(mSmmControl2.Clear));\r
+ EfiConvertPointer (0x0, (VOID **)&(mSmmControl2.Trigger));\r
+ EfiConvertPointer (0x0, (VOID **)&(mSmmControl2.Clear));\r
}\r
\r
-\r
/**\r
This function installs EFI_SMM_CONTROL2_PROTOCOL.\r
\r
EFI_STATUS\r
EFIAPI\r
SmmControlEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HOB_GUID_TYPE *GuidHob;\r
- PLD_SMM_REGISTERS *SmmRegister;\r
- PLD_GENERIC_REGISTER *SmiGblEnReg;\r
- PLD_GENERIC_REGISTER *SmiApmEnReg;\r
- EFI_EVENT Event;\r
+ EFI_STATUS Status;\r
+ EFI_HOB_GUID_TYPE *GuidHob;\r
+ PLD_SMM_REGISTERS *SmmRegister;\r
+ PLD_GENERIC_REGISTER *SmiGblEnReg;\r
+ PLD_GENERIC_REGISTER *SmiApmEnReg;\r
+ EFI_EVENT Event;\r
\r
GuidHob = GetFirstGuidHob (&gSmmRegisterInfoGuid);\r
if (GuidHob == NULL) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
- SmmRegister = (PLD_SMM_REGISTERS *) (GET_GUID_HOB_DATA(GuidHob));\r
+ SmmRegister = (PLD_SMM_REGISTERS *)(GET_GUID_HOB_DATA (GuidHob));\r
SmiGblEnReg = GetSmmCtrlRegById (SmmRegister, REGISTER_ID_SMI_GBL_EN);\r
if (SmiGblEnReg == NULL) {\r
DEBUG ((DEBUG_ERROR, "SMI global enable reg not found.\n"));\r
return EFI_NOT_FOUND;\r
}\r
+\r
mSmiCtrlReg.Address = (UINT32)SmiGblEnReg->Address.Address;\r
mSmiCtrlReg.GblBitOffset = SmiGblEnReg->Address.RegisterBitOffset;\r
\r
DEBUG ((DEBUG_ERROR, "APM:0x%x, GBL:0x%x\n", SmiApmEnReg->Address.Address, mSmiCtrlReg.Address));\r
return EFI_UNSUPPORTED;\r
}\r
+\r
mSmiCtrlReg.ApmBitOffset = SmiApmEnReg->Address.RegisterBitOffset;\r
\r
//\r