<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, &regs[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, &regs[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, &regs[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>