<p>Richard Spiegel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27639">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Stoneyridge: Remove IMC support<br><br>An agreement between AMD and Google decided to remove all support to IMC.<br>All boards will use external EC. Remove all stoney IMC files and functions<br>from coreboot.<br><br>BUG=b:111780177<br>TEST=Build grunt and gardenia<br><br>Change-Id: I1bda0ac7f8f8f5bb1403396d6703a4fac6f60f88<br>Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com><br>---<br>M src/mainboard/amd/gardenia/BiosCallOuts.c<br>M src/mainboard/amd/gardenia/Makefile.inc<br>D src/mainboard/amd/gardenia/fchec.c<br>M src/soc/amd/stoneyridge/BiosCallOuts.c<br>M src/soc/amd/stoneyridge/Makefile.inc<br>D src/soc/amd/stoneyridge/acpi/AmdImc.asl<br>M src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl<br>D src/soc/amd/stoneyridge/imc.c<br>D src/soc/amd/stoneyridge/include/fchec.h<br>D src/soc/amd/stoneyridge/include/soc/imc.h<br>M src/soc/amd/stoneyridge/southbridge.c<br>M src/soc/amd/stoneyridge/spi.c<br>D src/vendorcode/amd/pi/00670F00/Lib/imc/HwmLateService.c<br>D src/vendorcode/amd/pi/00670F00/Lib/imc/ImcLib.c<br>M src/vendorcode/amd/pi/00670F00/Makefile.inc<br>M src/vendorcode/amd/pi/00670F00/Proc/Fch/Common/FchDef.h<br>16 files changed, 2 insertions(+), 831 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/39/27639/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/amd/gardenia/BiosCallOuts.c b/src/mainboard/amd/gardenia/BiosCallOuts.c</span><br><span>index 158642a..16ac549 100644</span><br><span>--- a/src/mainboard/amd/gardenia/BiosCallOuts.c</span><br><span>+++ b/src/mainboard/amd/gardenia/BiosCallOuts.c</span><br><span>@@ -15,31 +15,13 @@</span><br><span> </span><br><span> #include <amdblocks/agesawrapper.h></span><br><span> #include <amdblocks/BiosCallOuts.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <soc/imc.h></span><br><span> #include <soc/southbridge.h></span><br><span> #include <stdlib.h></span><br><span> #include <string.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Hardware Monitor Fan Control</span><br><span style="color: hsl(0, 100%, 40%);">- * Hardware limitation:</span><br><span style="color: hsl(0, 100%, 40%);">- * HWM will fail to read the input temperature via I2C if other</span><br><span style="color: hsl(0, 100%, 40%);">- * software switches the I2C address. AMD recommends using IMC</span><br><span style="color: hsl(0, 100%, 40%);">- * to control fans, instead of HWM.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> void oem_fan_control(FCH_DATA_BLOCK *FchParams)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- /* Enable IMC fan control. the recommand way */</span><br><span style="color: hsl(0, 100%, 40%);">- imc_reg_init();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- FchParams->Imc.ImcEnable = TRUE;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* 1 IMC, 0 HWM */</span><br><span style="color: hsl(0, 100%, 40%);">- FchParams->Hwm.HwmControl = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* 2 disable IMC, 1 enable IMC, 0 following hw strap setting */</span><br><span style="color: hsl(0, 100%, 40%);">- FchParams->Imc.ImcEnableOverWrite = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(&FchParams->Imc.EcStruct, 0, sizeof(FCH_EC));</span><br><span> }</span><br><span> </span><br><span> void platform_FchParams_env(FCH_DATA_BLOCK *FchParams_env)</span><br><span>diff --git a/src/mainboard/amd/gardenia/Makefile.inc b/src/mainboard/amd/gardenia/Makefile.inc</span><br><span>index 5ddfe45..dd71331 100644</span><br><span>--- a/src/mainboard/amd/gardenia/Makefile.inc</span><br><span>+++ b/src/mainboard/amd/gardenia/Makefile.inc</span><br><span>@@ -24,4 +24,3 @@</span><br><span> ramstage-y += BiosCallOuts.c</span><br><span> ramstage-y += gpio.c</span><br><span> ramstage-y += OemCustomize.c</span><br><span style="color: hsl(0, 100%, 40%);">-ramstage-$(CONFIG_STONEYRIDGE_IMC_FWM) += fchec.c</span><br><span>diff --git a/src/mainboard/amd/gardenia/fchec.c b/src/mainboard/amd/gardenia/fchec.c</span><br><span>deleted file mode 100644</span><br><span>index aca3a9e..0000000</span><br><span>--- a/src/mainboard/amd/gardenia/fchec.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,65 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2015 Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "fchec.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void agesawrapper_fchecfancontrolservice(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- FCH_DATA_BLOCK LateParams;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Thermal Zone Parameter */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg0 = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg1 = 0x00; /* Zone */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg2 = 0x3d;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg3 = 0xc6;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg4 = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg5 = 0x04;</span><br><span style="color: hsl(0, 100%, 40%);">- /* SMBUS Address for SMBUS based temperature sensor */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg6 = 0x98;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg7 = 0x01;</span><br><span style="color: hsl(0, 100%, 40%);">- /* PWM steping rate in unit of PWM level percentage */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg8 = 0x01;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun81Zone0MsgReg9 = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* IMC Fan Policy temperature thresholds */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg0 = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg1 = 0x00; /* Zone */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg2 = 0x3c; /*AC0 threshold */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg3 = 0x28; /*AC1 in oC */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg4 = 0xff; /*AC2 in oC */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg5 = 0xff; /*AC3 undefined */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg6 = 0xff; /*AC4 undefined */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg7 = 0xff; /*AC5 undefined */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg8 = 0xff; /*AC6 undefined */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgReg9 = 0xff; /*AC7 undefined */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgRegA = 0x4b; /*crit threshold */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun83Zone0MsgRegB = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* IMC Fan Policy PWM Settings */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg0 = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg1 = 0x00; /* Zone */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg2 = 0x50; /* AL0 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg3 = 0x32; /* AL1 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg4 = 0xff; /* AL2 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg5 = 0xff; /* AL3 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg6 = 0xff; /* AL4 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg7 = 0xff; /* AL5 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg8 = 0xff; /* AL6 percent */</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.MsgFun85Zone0MsgReg9 = 0xff; /* AL7 percent */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- LateParams.Imc.EcStruct.IMCFUNSupportBitMap = 0x111;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- FchECfancontrolservice(&LateParams);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/soc/amd/stoneyridge/BiosCallOuts.c b/src/soc/amd/stoneyridge/BiosCallOuts.c</span><br><span>index d2f7a32..e8e65d4 100644</span><br><span>--- a/src/soc/amd/stoneyridge/BiosCallOuts.c</span><br><span>+++ b/src/soc/amd/stoneyridge/BiosCallOuts.c</span><br><span>@@ -58,8 +58,6 @@</span><br><span> FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;</span><br><span> printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM))</span><br><span style="color: hsl(0, 100%, 40%);">- oem_fan_control(FchParams_env);</span><br><span> </span><br><span> /* XHCI configuration */</span><br><span> if (IS_ENABLED(CONFIG_STONEYRIDGE_XHCI_ENABLE))</span><br><span>diff --git a/src/soc/amd/stoneyridge/Makefile.inc b/src/soc/amd/stoneyridge/Makefile.inc</span><br><span>index 5df4889..bf5724f 100644</span><br><span>--- a/src/soc/amd/stoneyridge/Makefile.inc</span><br><span>+++ b/src/soc/amd/stoneyridge/Makefile.inc</span><br><span>@@ -57,7 +57,6 @@</span><br><span> romstage-y += romstage.c</span><br><span> romstage-$(CONFIG_USBDEBUG_IN_ROMSTAGE) += enable_usbdebug.c</span><br><span> romstage-y += gpio.c</span><br><span style="color: hsl(0, 100%, 40%);">-romstage-$(CONFIG_STONEYRIDGE_IMC_FWM) += imc.c</span><br><span> romstage-y += monotonic_timer.c</span><br><span> romstage-y += pmutil.c</span><br><span> romstage-y += reset.c</span><br><span>@@ -100,7 +99,6 @@</span><br><span> ramstage-y += monotonic_timer.c</span><br><span> ramstage-y += southbridge.c</span><br><span> ramstage-y += sb_util.c</span><br><span style="color: hsl(0, 100%, 40%);">-ramstage-$(CONFIG_STONEYRIDGE_IMC_FWM) += imc.c</span><br><span> ramstage-y += lpc.c</span><br><span> ramstage-y += northbridge.c</span><br><span> ramstage-y += pmutil.c</span><br><span>@@ -200,7 +198,6 @@</span><br><span> add_opt_prefix=$(if $(call strip_quotes, $(1)), $(2) $(call strip_quotes, $(1)), )</span><br><span> </span><br><span> OPT_STONEYRIDGE_XHCI_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE), --xhci)</span><br><span style="color: hsl(0, 100%, 40%);">-OPT_STONEYRIDGE_IMC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_IMC_FWM_FILE), --imc)</span><br><span> OPT_STONEYRIDGE_GEC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_GEC_FWM_FILEddd), --gec)</span><br><span> </span><br><span> OPT_2AMD_PUBKEY_FILE=$(call add_opt_prefix, $(CONFIG_AMD_PUBKEY_FILE), --pubkey2)</span><br><span>@@ -222,7 +219,6 @@</span><br><span> </span><br><span> </span><br><span> $(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE)) \</span><br><span style="color: hsl(0, 100%, 40%);">- $(call strip_quotes, $(CONFIG_STONEYRIDGE_IMC_FWM_FILE)) \</span><br><span> $(call strip_quotes, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE)) \</span><br><span> $(call strip_quotes, $(CONFIG_AMD_PUBKEY_FILE)) \</span><br><span> $(call strip_quotes, $(PUBSIGNEDKEY_FILE)) \</span><br><span>@@ -243,7 +239,6 @@</span><br><span> @printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"</span><br><span> $(AMDFWTOOL) \</span><br><span> $(OPT_STONEYRIDGE_XHCI_FWM_FILE) \</span><br><span style="color: hsl(0, 100%, 40%);">- $(OPT_STONEYRIDGE_IMC_FWM_FILE) \</span><br><span> $(OPT_STONEYRIDGE_GEC_FWM_FILE) \</span><br><span> $(OPT_AMD_PUBKEY_FILE) \</span><br><span> $(OPT_PSPBTLDR_FILE) \</span><br><span>diff --git a/src/soc/amd/stoneyridge/acpi/AmdImc.asl b/src/soc/amd/stoneyridge/acpi/AmdImc.asl</span><br><span>deleted file mode 100644</span><br><span>index 519b05c..0000000</span><br><span>--- a/src/soc/amd/stoneyridge/acpi/AmdImc.asl</span><br><span>+++ /dev/null</span><br><span>@@ -1,64 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2015 Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//BTDC Due to IMC Fan, ACPI control codes</span><br><span style="color: hsl(0, 100%, 40%);">-OperationRegion(IMIO, SystemIO, 0x3E, 0x02)</span><br><span style="color: hsl(0, 100%, 40%);">-Field(IMIO , ByteAcc, NoLock, Preserve) {</span><br><span style="color: hsl(0, 100%, 40%);">- IMCX,8,</span><br><span style="color: hsl(0, 100%, 40%);">- IMCA,8</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-IndexField(IMCX, IMCA, ByteAcc, NoLock, Preserve) {</span><br><span style="color: hsl(0, 100%, 40%);">- Offset(0x80),</span><br><span style="color: hsl(0, 100%, 40%);">- MSTI, 8,</span><br><span style="color: hsl(0, 100%, 40%);">- MITS, 8,</span><br><span style="color: hsl(0, 100%, 40%);">- MRG0, 8,</span><br><span style="color: hsl(0, 100%, 40%);">- MRG1, 8,</span><br><span style="color: hsl(0, 100%, 40%);">- MRG2, 8,</span><br><span style="color: hsl(0, 100%, 40%);">- MRG3, 8,</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Method(WACK, 0)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, Local0)</span><br><span style="color: hsl(0, 100%, 40%);">- While (LNotEqual(Local0, 0xFA)) {</span><br><span style="color: hsl(0, 100%, 40%);">- Store(MRG0, Local0)</span><br><span style="color: hsl(0, 100%, 40%);">- Sleep(10)</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//Init</span><br><span style="color: hsl(0, 100%, 40%);">-Method (ITZE, 0)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG0)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0xB5, MRG1)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG2)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0x96, MSTI)</span><br><span style="color: hsl(0, 100%, 40%);">- WACK()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG0)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG1)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG2)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0x80, MSTI)</span><br><span style="color: hsl(0, 100%, 40%);">- WACK()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Or(MRG2, 0x01, Local0)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG0)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0, MRG1)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(Local0, MRG2)</span><br><span style="color: hsl(0, 100%, 40%);">- Store(0x81, MSTI)</span><br><span style="color: hsl(0, 100%, 40%);">- WACK()</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl b/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl</span><br><span>index e767fdd..4aba2f9 100644</span><br><span>--- a/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl</span><br><span>+++ b/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl</span><br><span>@@ -130,10 +130,6 @@</span><br><span> Return(CRES) /* note to change the Name buffer */</span><br><span> } /* end of Method(_SB.PCI0._CRS) */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM)</span><br><span style="color: hsl(0, 100%, 40%);">- #include "acpi/AmdImc.asl"</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /*</span><br><span> *</span><br><span> * FIRST METHOD CALLED UPON BOOT</span><br><span>@@ -159,11 +155,6 @@</span><br><span> /* Determine the OS we're running on */</span><br><span> OSFL()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM)</span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_ACPI_ENABLE_THERMAL_ZONE)</span><br><span style="color: hsl(0, 100%, 40%);">- ITZE() /* enable IMC Fan Control*/</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span> } /* End Method(_SB._INI) */</span><br><span> </span><br><span> Method(OSFL, 0){</span><br><span>diff --git a/src/soc/amd/stoneyridge/imc.c b/src/soc/amd/stoneyridge/imc.c</span><br><span>deleted file mode 100644</span><br><span>index 5d883d9..0000000</span><br><span>--- a/src/soc/amd/stoneyridge/imc.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,86 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2012 Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define __SIMPLE_DEVICE__</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <amdblocks/agesawrapper.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <soc/imc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <arch/io.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <device/device.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <delay.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define VACPI_MMIO_VBASE ((u8 *)ACPI_MMIO_BASE)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_reg_init(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- u8 reg8;</span><br><span style="color: hsl(0, 100%, 40%);">- /* Init Power Management Block 2 (PM2) Registers.</span><br><span style="color: hsl(0, 100%, 40%);">- * Check BKDG for AMD Family 16h for details. */</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x00), 0x06);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x01), 0x06);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x02), 0xf7);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x03), 0xff);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x04), 0xff);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x10), 0x06);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x11), 0x06);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x12), 0xf7);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x13), 0xff);</span><br><span style="color: hsl(0, 100%, 40%);">- write8((VACPI_MMIO_VBASE + PMIO2_BASE + 0x14), 0xff);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- reg8 = pci_read_config8(PCI_DEV(0, 0x18, 0x3), 0x1e4);</span><br><span style="color: hsl(0, 100%, 40%);">- reg8 &= 0x8f;</span><br><span style="color: hsl(0, 100%, 40%);">- reg8 |= 0x10;</span><br><span style="color: hsl(0, 100%, 40%);">- pci_write_config8(PCI_DEV(0, 0x18, 0x3), 0x1e4, reg8);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void enable_imc_thermal_zone(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 FunNum;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 regs[10];</span><br><span style="color: hsl(0, 100%, 40%);">- int i;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- regs[0] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">- regs[1] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">- FunNum = Fun_80;</span><br><span style="color: hsl(0, 100%, 40%);">- for (i = 0 ; i <= 1 ; i++)</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg(MSG_REG0 + i, AccessWidth8, ®s[i], &StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg(MSG_SYS_TO_IMC, AccessWidth8, &FunNum, &StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck(&StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for (i = 2 ; i < ARRAY_SIZE(regs) ; i++)</span><br><span style="color: hsl(0, 100%, 40%);">- ReadECmsg(MSG_REG0 + i, AccessWidth8, ®s[i], &StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* enable thermal zone 0 */</span><br><span style="color: hsl(0, 100%, 40%);">- regs[2] |= 1;</span><br><span style="color: hsl(0, 100%, 40%);">- regs[0] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">- regs[1] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">- FunNum = Fun_81;</span><br><span style="color: hsl(0, 100%, 40%);">- for (i = 0 ; i < ARRAY_SIZE(regs) ; i++)</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg(MSG_REG0 + i, AccessWidth8, ®s[i], &StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg(MSG_SYS_TO_IMC, AccessWidth8, &FunNum, &StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck(&StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_sleep(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- ImcSleep(NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_wakeup(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- ImcWakeup(NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/soc/amd/stoneyridge/include/fchec.h b/src/soc/amd/stoneyridge/include/fchec.h</span><br><span>deleted file mode 100644</span><br><span>index 80125ec..0000000</span><br><span>--- a/src/soc/amd/stoneyridge/include/fchec.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,24 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2012 Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef __AMD_STONEY_FCHEC__</span><br><span style="color: hsl(0, 100%, 40%);">-#define __AMD_STONEY_FCHEC__</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <amdblocks/agesawrapper.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <soc/imc.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void agesawrapper_fchecfancontrolservice(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span>diff --git a/src/soc/amd/stoneyridge/include/soc/imc.h b/src/soc/amd/stoneyridge/include/soc/imc.h</span><br><span>deleted file mode 100644</span><br><span>index 079df79..0000000</span><br><span>--- a/src/soc/amd/stoneyridge/include/soc/imc.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,24 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2012 Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef __STONEYRIDGE_IMC_H__</span><br><span style="color: hsl(0, 100%, 40%);">-#define __STONEYRIDGE_IMC_H__</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_reg_init(void);</span><br><span style="color: hsl(0, 100%, 40%);">-void enable_imc_thermal_zone(void);</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_sleep(void);</span><br><span style="color: hsl(0, 100%, 40%);">-void imc_wakeup(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span>diff --git a/src/soc/amd/stoneyridge/southbridge.c b/src/soc/amd/stoneyridge/southbridge.c</span><br><span>index 18e6c6c..e893cb7 100644</span><br><span>--- a/src/soc/amd/stoneyridge/southbridge.c</span><br><span>+++ b/src/soc/amd/stoneyridge/southbridge.c</span><br><span>@@ -25,10 +25,10 @@</span><br><span> #include <cbmem.h></span><br><span> #include <elog.h></span><br><span> #include <amdblocks/amd_pci_util.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <amdblocks/agesawrapper.h></span><br><span> #include <soc/southbridge.h></span><br><span> #include <soc/smi.h></span><br><span> #include <soc/amd_pci_int_defs.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <fchec.h></span><br><span> #include <delay.h></span><br><span> #include <soc/pci_devs.h></span><br><span> #include <agesa_headers.h></span><br><span>@@ -766,11 +766,6 @@</span><br><span> {</span><br><span> uint8_t restored_power = PM_S5_AT_POWER_RECOVERY;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM)) {</span><br><span style="color: hsl(0, 100%, 40%);">- agesawrapper_fchecfancontrolservice();</span><br><span style="color: hsl(0, 100%, 40%);">- if (!IS_ENABLED(CONFIG_ACPI_ENABLE_THERMAL_ZONE))</span><br><span style="color: hsl(0, 100%, 40%);">- enable_imc_thermal_zone();</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span> if (IS_ENABLED(CONFIG_MAINBOARD_POWER_RESTORE))</span><br><span> restored_power = PM_RESTORE_S0_IF_PREV_S0;</span><br><span> pm_write8(PM_RTC_SHADOW, restored_power);</span><br><span>diff --git a/src/soc/amd/stoneyridge/spi.c b/src/soc/amd/stoneyridge/spi.c</span><br><span>index 718ad94..9baf433 100644</span><br><span>--- a/src/soc/amd/stoneyridge/spi.c</span><br><span>+++ b/src/soc/amd/stoneyridge/spi.c</span><br><span>@@ -29,7 +29,6 @@</span><br><span> #include <device/pci_ops.h></span><br><span> #include <soc/southbridge.h></span><br><span> #include <soc/pci_devs.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <soc/imc.h></span><br><span> </span><br><span> #define SPI_DEBUG_DRIVER IS_ENABLED(CONFIG_DEBUG_SPI_FLASH)</span><br><span> </span><br><span>@@ -169,15 +168,11 @@</span><br><span> </span><br><span> int chipset_volatile_group_begin(const struct spi_flash *flash)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- if (IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM))</span><br><span style="color: hsl(0, 100%, 40%);">- imc_sleep();</span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span> int chipset_volatile_group_end(const struct spi_flash *flash)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- if (IS_ENABLED(CONFIG_STONEYRIDGE_IMC_FWM))</span><br><span style="color: hsl(0, 100%, 40%);">- imc_wakeup();</span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Lib/imc/HwmLateService.c b/src/vendorcode/amd/pi/00670F00/Lib/imc/HwmLateService.c</span><br><span>deleted file mode 100644</span><br><span>index 8800e38..0000000</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Lib/imc/HwmLateService.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,188 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* $NoKeywords:$ */</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * @file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Config FCH Hwm controller</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Init Hwm Controller features.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @xrefitem bom "File Content Label" "Release Content"</span><br><span style="color: hsl(0, 100%, 40%);">- * @e project: AGESA</span><br><span style="color: hsl(0, 100%, 40%);">- * @e sub-project: FCH</span><br><span style="color: hsl(0, 100%, 40%);">- * @e \$Revision: 84150 $ @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">-*****************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">-*</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- * All rights reserved.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Redistribution and use in source and binary forms, with or without</span><br><span style="color: hsl(0, 100%, 40%);">- * modification, are permitted provided that the following conditions are met:</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions of source code must retain the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions in binary form must reproduce the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer in the</span><br><span style="color: hsl(0, 100%, 40%);">- * documentation and/or other materials provided with the distribution.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Neither the name of Advanced Micro Devices, Inc. nor the names of</span><br><span style="color: hsl(0, 100%, 40%);">- * its contributors may be used to endorse or promote products derived</span><br><span style="color: hsl(0, 100%, 40%);">- * from this software without specific prior written permission.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span><br><span style="color: hsl(0, 100%, 40%);">- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span><br><span style="color: hsl(0, 100%, 40%);">- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY</span><br><span style="color: hsl(0, 100%, 40%);">- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span><br><span style="color: hsl(0, 100%, 40%);">-****************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">-*/</span><br><span style="color: hsl(0, 100%, 40%);">-#include "FchPlatform.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "Filecode.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#define FILECODE PROC_FCH_HWM_FAMILY_YANGTZE_YANGTZEHWMLATESERVICE_FILECODE</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Table for Function Number</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC UINT8 FunctionNumber[] =</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- Fun_81,</span><br><span style="color: hsl(0, 100%, 40%);">- Fun_83,</span><br><span style="color: hsl(0, 100%, 40%);">- Fun_85,</span><br><span style="color: hsl(0, 100%, 40%);">- Fun_89,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Table for Max Thermal Zone</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8 MaxZone[] =</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- 4,</span><br><span style="color: hsl(0, 100%, 40%);">- 4,</span><br><span style="color: hsl(0, 100%, 40%);">- 4,</span><br><span style="color: hsl(0, 100%, 40%);">- 4,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Table for Max Register</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8 MaxRegister[] =</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- MSG_REG9,</span><br><span style="color: hsl(0, 100%, 40%);">- MSG_REGB,</span><br><span style="color: hsl(0, 100%, 40%);">- MSG_REG9,</span><br><span style="color: hsl(0, 100%, 40%);">- MSG_REGA,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*-------------------------------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-;Procedure: IsZoneFuncEnable</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Description: This routine will check every zone support function with BitMap from user define</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Exit: None</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Modified: None</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;-----------------------------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-*/</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC BOOLEAN</span><br><span style="color: hsl(0, 100%, 40%);">-IsZoneFuncEnable (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Flag,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 func,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Zone</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return (BOOLEAN) (((Flag >> (func *4)) & 0xF) & ((UINT8 )1 << Zone));</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*-------------------------------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-;Procedure: FchECfancontrolservice</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Description: This routine service EC fan policy</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Exit: None</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;Modified: None</span><br><span style="color: hsl(0, 100%, 40%);">-;</span><br><span style="color: hsl(0, 100%, 40%);">-;-----------------------------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-*/</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-FchECfancontrolservice (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 ZoneNum;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 FunNum;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 RegNum;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 *CurPoint;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 FunIndex;</span><br><span style="color: hsl(0, 100%, 40%);">- BOOLEAN IsSendEcMsg;</span><br><span style="color: hsl(0, 100%, 40%);">- FCH_DATA_BLOCK *LocalCfgPtr;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- LocalCfgPtr = (FCH_DATA_BLOCK *) FchDataPtr;</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = LocalCfgPtr->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!IsImcEnabled (StdHeader)) {</span><br><span style="color: hsl(0, 100%, 40%);">- return; //IMC is not enabled</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint = &LocalCfgPtr->Imc.EcStruct.MsgFun81Zone0MsgReg0 + MaxZone[0] * (MaxRegister[0] - MSG_REG0 + 1);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for ( FunIndex = 1; FunIndex <= 3; FunIndex++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- FunNum = FunctionNumber[FunIndex];</span><br><span style="color: hsl(0, 100%, 40%);">- for ( ZoneNum = 0; ZoneNum < MaxZone[FunIndex]; ZoneNum++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- IsSendEcMsg = IsZoneFuncEnable (LocalCfgPtr->Imc.EcStruct.IMCFUNSupportBitMap, FunIndex, ZoneNum);</span><br><span style="color: hsl(0, 100%, 40%);">- if (IsSendEcMsg) {</span><br><span style="color: hsl(0, 100%, 40%);">- for ( RegNum = MSG_REG0; RegNum <= MaxRegister[FunIndex]; RegNum++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (RegNum, AccessWidth8, CurPoint, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint += 1;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &FunNum, StdHeader); // function number</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint += (MaxRegister[FunIndex] - MSG_REG0 + 1);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint = &LocalCfgPtr->Imc.EcStruct.MsgFun81Zone0MsgReg0;</span><br><span style="color: hsl(0, 100%, 40%);">- for ( FunIndex = 0; FunIndex <= 0; FunIndex++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- FunNum = FunctionNumber[FunIndex];</span><br><span style="color: hsl(0, 100%, 40%);">- for ( ZoneNum = 0; ZoneNum < MaxZone[FunIndex]; ZoneNum++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- IsSendEcMsg = IsZoneFuncEnable (LocalCfgPtr->Imc.EcStruct.IMCFUNSupportBitMap, FunIndex, ZoneNum);</span><br><span style="color: hsl(0, 100%, 40%);">- if (IsSendEcMsg) {</span><br><span style="color: hsl(0, 100%, 40%);">- for ( RegNum = MSG_REG0; RegNum <= MaxRegister[FunIndex]; RegNum++ ) {</span><br><span style="color: hsl(0, 100%, 40%);">- if (RegNum == MSG_REG2) {</span><br><span style="color: hsl(0, 100%, 40%);">- *CurPoint &= 0xFE;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (RegNum, AccessWidth8, CurPoint, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint += 1;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &FunNum, StdHeader); // function number</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- CurPoint += (MaxRegister[FunIndex] - MSG_REG0 + 1);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Lib/imc/ImcLib.c b/src/vendorcode/amd/pi/00670F00/Lib/imc/ImcLib.c</span><br><span>deleted file mode 100644</span><br><span>index 3a5f8cd..0000000</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Lib/imc/ImcLib.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,312 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* $NoKeywords:$ */</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * @file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * FCH IMC lib</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @xrefitem bom "File Content Label" "Release Content"</span><br><span style="color: hsl(0, 100%, 40%);">- * @e project: AGESA</span><br><span style="color: hsl(0, 100%, 40%);">- * @e sub-project: FCH</span><br><span style="color: hsl(0, 100%, 40%);">- * @e \$Revision: 87213 $ @e \$Date: 2013-01-30 15:37:54 -0600 (Wed, 30 Jan 2013) $</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">-*****************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">-*</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- * All rights reserved.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Redistribution and use in source and binary forms, with or without</span><br><span style="color: hsl(0, 100%, 40%);">- * modification, are permitted provided that the following conditions are met:</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions of source code must retain the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions in binary form must reproduce the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer in the</span><br><span style="color: hsl(0, 100%, 40%);">- * documentation and/or other materials provided with the distribution.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Neither the name of Advanced Micro Devices, Inc. nor the names of</span><br><span style="color: hsl(0, 100%, 40%);">- * its contributors may be used to endorse or promote products derived</span><br><span style="color: hsl(0, 100%, 40%);">- * from this software without specific prior written permission.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span><br><span style="color: hsl(0, 100%, 40%);">- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span><br><span style="color: hsl(0, 100%, 40%);">- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY</span><br><span style="color: hsl(0, 100%, 40%);">- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span><br><span style="color: hsl(0, 100%, 40%);">-****************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">-*/</span><br><span style="color: hsl(0, 100%, 40%);">-#include "FchPlatform.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * WriteECmsg</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Address - Address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] OpFlag - Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] *Value - Out Value pointer</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteECmsg (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 OpFlag,</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Index;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (OpFlag < AccessWidth64); /* TODO: Add the assertion to make it not crash for now. */</span><br><span style="color: hsl(0, 100%, 40%);">- OpFlag = (OpFlag & 0x7f) - 1;</span><br><span style="color: hsl(0, 100%, 40%);">- if (OpFlag == 0x02) {</span><br><span style="color: hsl(0, 100%, 40%);">- OpFlag = 0x03;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for (Index = 0; Index <= OpFlag; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">- /// EC_LDN9_MAILBOX_BASE_ADDRESS</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth8, MailBoxPort, &Address, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Address++;</span><br><span style="color: hsl(0, 100%, 40%);">- /// EC_LDN9_MAILBOX_BASE_ADDRESS</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth8, MailBoxPort + 1, (UINT8 *)Value + Index, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * ReadECmsg</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Address - Address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] OpFlag - Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[out] *Value - Out Value pointer</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-ReadECmsg (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 OpFlag,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Index;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (OpFlag < AccessWidth64); /* TODO: Add the assertion to make it not crash for now. */</span><br><span style="color: hsl(0, 100%, 40%);">- OpFlag = (OpFlag & 0x7f) - 1;</span><br><span style="color: hsl(0, 100%, 40%);">- if (OpFlag == 0x02) {</span><br><span style="color: hsl(0, 100%, 40%);">- OpFlag = 0x03;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for (Index = 0; Index <= OpFlag; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">- /// EC_LDN9_MAILBOX_BASE_ADDRESS</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth8, MailBoxPort, &Address, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Address++;</span><br><span style="color: hsl(0, 100%, 40%);">- /// EC_LDN9_MAILBOX_BASE_ADDRESS</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoRead (AccessWidth8, MailBoxPort + 1, (UINT8 *)Value + Index, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * WaitForEcLDN9MailboxCmdAck</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WaitForEcLDN9MailboxCmdAck (</span><br><span style="color: hsl(0, 100%, 40%);">- IN AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Msgdata;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT16 Delaytime;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for (Delaytime = 0; Delaytime < 0xFFFF; Delaytime++) {</span><br><span style="color: hsl(0, 100%, 40%);">- ReadECmsg (MSG_REG0, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- if ( Msgdata == 0xfa) {</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- FchStall (5, StdHeader); /// Wait for 1ms</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * ImcSleep - IMC Sleep.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] FchDataPtr Fch configuration structure pointer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-ImcSleep (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Msgdata;</span><br><span style="color: hsl(0, 100%, 40%);">- FCH_DATA_BLOCK *LocalCfgPtr;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- LocalCfgPtr = (FCH_DATA_BLOCK *) FchDataPtr;</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = LocalCfgPtr->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!(IsImcEnabled (StdHeader)) ) {</span><br><span style="color: hsl(0, 100%, 40%);">- return; ///IMC is not enabled</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG0, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0xB4;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG1, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG2, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x96;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * SoftwareDisableImc - Software disable IMC strap</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] FchDataPtr Fch configuration structure pointer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-SoftwareDisableImc (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 ValueByte;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 PortStatusByte;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 AbValue;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 ABStrapOverrideReg;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = ((FCH_DATA_BLOCK *) FchDataPtr)->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">- GetChipSysMode (&PortStatusByte, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- RwPci ((LPC_BUS_DEV_FUN << 16) + FCH_LPC_REGC8 + 3, AccessWidth8, 0x7F, BIT7, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- ReadPmio (0xBF, AccessWidth8, &ValueByte, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ReadMem ((ACPI_MMIO_BASE + MISC_BASE + FCH_MISC_REG80), AccessWidth32, &AbValue);</span><br><span style="color: hsl(0, 100%, 40%);">- ABStrapOverrideReg = AbValue;</span><br><span style="color: hsl(0, 100%, 40%);">- ABStrapOverrideReg &= ~BIT2; // bit2=0 EcEnableStrap</span><br><span style="color: hsl(0, 100%, 40%);">- WriteMem ((ACPI_MMIO_BASE + MISC_BASE + 0x84), AccessWidth32, &ABStrapOverrideReg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ReadPmio (FCH_PMIOA_REGD7, AccessWidth8, &ValueByte, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- ValueByte |= BIT1;</span><br><span style="color: hsl(0, 100%, 40%);">- WritePmio (FCH_PMIOA_REGD7, AccessWidth8, &ValueByte, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ValueByte = 06;</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth8, 0xcf9, &ValueByte, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- FchStall (0xffffffff, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * ImcDisableSurebootTimer - IMC Disable Sureboot Timer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] FchDataPtr Fch configuration structure pointer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-ImcDisableSurebootTimer (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Msgdata;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = ((FCH_DATA_BLOCK *) FchDataPtr)->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!(IsImcEnabled (StdHeader)) ) {</span><br><span style="color: hsl(0, 100%, 40%);">- return; ///IMC is not enabled</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ImcWakeup (FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG0, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x01;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG1, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG2, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x94;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- ImcSleep (FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * ImcWakeup - IMC Wakeup.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] FchDataPtr Fch configuration structure pointer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-ImcWakeup (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Msgdata;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = ((FCH_DATA_BLOCK *) FchDataPtr)->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">- if (!(IsImcEnabled (StdHeader)) ) {</span><br><span style="color: hsl(0, 100%, 40%);">- return; ///IMC is not enabled</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG0, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0xB5;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG1, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG2, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x96;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * ImcIdle - IMC Idle.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] FchDataPtr Fch configuration structure pointer.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-ImcIdle (</span><br><span style="color: hsl(0, 100%, 40%);">- IN VOID *FchDataPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 Msgdata;</span><br><span style="color: hsl(0, 100%, 40%);">- AMD_CONFIG_PARAMS *StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- StdHeader = ((FCH_DATA_BLOCK *) FchDataPtr)->StdHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!(IsImcEnabled (StdHeader)) ) {</span><br><span style="color: hsl(0, 100%, 40%);">- return; ///IMC is not enabled</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG0, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x01;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG1, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x00;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_REG2, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- Msgdata = 0x98;</span><br><span style="color: hsl(0, 100%, 40%);">- WriteECmsg (MSG_SYS_TO_IMC, AccessWidth8, &Msgdata, StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">- WaitForEcLDN9MailboxCmdAck (StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Makefile.inc b/src/vendorcode/amd/pi/00670F00/Makefile.inc</span><br><span>index 26a6007..bd807a9 100644</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Makefile.inc</span><br><span>+++ b/src/vendorcode/amd/pi/00670F00/Makefile.inc</span><br><span>@@ -94,11 +94,6 @@</span><br><span> agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Fch/Common/*.[cS])</span><br><span> endif</span><br><span> agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Psp/PspBaseLib/*.[cS])</span><br><span style="color: hsl(0, 100%, 40%);">-ifeq ($(CONFIG_STONEYRIDGE_IMC_FWM),y)</span><br><span style="color: hsl(0, 100%, 40%);">-agesa_raw_files += $(wildcard $(AGESA_ROOT)/Lib/imc/*.c)</span><br><span style="color: hsl(0, 100%, 40%);">-agesa_raw_files += $(AGESA_ROOT)/Proc/Fch/Common/FchLib.c</span><br><span style="color: hsl(0, 100%, 40%);">-agesa_raw_files += $(AGESA_ROOT)/Proc/Fch/Common/FchPeLib.c</span><br><span style="color: hsl(0, 100%, 40%);">-endif</span><br><span> </span><br><span> classes-$(CONFIG_CPU_AMD_AGESA_BINARY_PI) += libagesa</span><br><span> </span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Proc/Fch/Common/FchDef.h b/src/vendorcode/amd/pi/00670F00/Proc/Fch/Common/FchDef.h</span><br><span>index c80dc52..42017bb 100644</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Proc/Fch/Common/FchDef.h</span><br><span>+++ b/src/vendorcode/amd/pi/00670F00/Proc/Fch/Common/FchDef.h</span><br><span>@@ -62,7 +62,6 @@</span><br><span> VOID ProgramFchGpioTbl (IN GPIO_CONTROL *pGpioTbl);</span><br><span> VOID ProgramFchSataPhyTbl (IN SATA_PHY_CONTROL *pSataPhyTbl, IN FCH_RESET_DATA_BLOCK *FchResetDataBlock);</span><br><span> VOID GetChipSysMode (IN VOID *Value, IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span style="color: hsl(0, 100%, 40%);">-BOOLEAN IsImcEnabled (IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span> VOID ReadPmio (IN UINT8 Address, IN UINT8 OpFlag, IN VOID *Value, IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span> VOID WritePmio (IN UINT8 Address, IN UINT8 OpFlag, IN VOID *Value, IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span> VOID RwPmio (IN UINT8 Address, IN UINT8 OpFlag, IN UINT32 AndMask, IN UINT32 OrMask, IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span>@@ -183,18 +182,14 @@</span><br><span> </span><br><span> </span><br><span> ///</span><br><span style="color: hsl(0, 100%, 40%);">-/// Fch Imc Routines</span><br><span style="color: hsl(120, 100%, 40%);">+/// Fch EC Routines</span><br><span> ///</span><br><span> /// Pei Phase</span><br><span> ///</span><br><span style="color: hsl(0, 100%, 40%);">-VOID FchInitResetImc (IN VOID *FchDataPtr);</span><br><span> VOID FchInitResetEc (IN VOID *FchDataPtr);</span><br><span> ///</span><br><span> /// Dxe Phase</span><br><span> ///</span><br><span style="color: hsl(0, 100%, 40%);">-VOID FchInitEnvImc (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID FchInitMidImc (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID FchInitLateImc (IN VOID *FchDataPtr);</span><br><span> VOID FchInitEnvEc (IN VOID *FchDataPtr);</span><br><span> VOID FchInitMidEc (IN VOID *FchDataPtr);</span><br><span> VOID FchInitLateEc (IN VOID *FchDataPtr);</span><br><span>@@ -210,17 +205,6 @@</span><br><span> VOID ReadECmsg (IN UINT8 Address, IN UINT8 OpFlag, OUT VOID* Value, IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span> VOID WaitForEcLDN9MailboxCmdAck (IN AMD_CONFIG_PARAMS *StdHeader);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcSleep (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcDisarmSurebootTimer (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcDisableSurebootTimer (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcWakeup (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcIdle (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-BOOLEAN ValidateImcFirmware (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID SoftwareToggleImcStrapping (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID ImcCrashReset (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-VOID SoftwareDisableImc (IN VOID *FchDataPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> ///</span><br><span> /// Fch Ir Routines</span><br><span> ///</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27639">change 27639</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27639"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I1bda0ac7f8f8f5bb1403396d6703a4fac6f60f88 </div>
<div style="display:none"> Gerrit-Change-Number: 27639 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Spiegel <richard.spiegel@silverbackltd.com> </div>