summaryrefslogtreecommitdiffstats
path: root/src/mainboard/amd/gardenia
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2017-08-24 22:48:44 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2017-08-25 04:20:36 +0000
commit91b682c33c7d974f73038171d534f22f258a06af (patch)
treefbc6424d00c79afc4f71d278d389fc9538ae3f81 /src/mainboard/amd/gardenia
parent0ff2e01e809439efbf8cbe85bb6b48315b8a945a (diff)
downloadcoreboot-91b682c33c7d974f73038171d534f22f258a06af.tar.gz
coreboot-91b682c33c7d974f73038171d534f22f258a06af.tar.bz2
coreboot-91b682c33c7d974f73038171d534f22f258a06af.zip
soc/amd/stoneyridge: Move oem_fan_control()
While at it, replace LibAmdMemFill() with memset(). Change-Id: I770cab446add8f305f02e365e7c9763df88cd958 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/21192 Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard/amd/gardenia')
-rw-r--r--src/mainboard/amd/gardenia/BiosCallOuts.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mainboard/amd/gardenia/BiosCallOuts.c b/src/mainboard/amd/gardenia/BiosCallOuts.c
index 31681cbe276f..1d06411790c4 100644
--- a/src/mainboard/amd/gardenia/BiosCallOuts.c
+++ b/src/mainboard/amd/gardenia/BiosCallOuts.c
@@ -19,6 +19,29 @@
#include <soc/imc.h>
#include <soc/southbridge.h>
#include <stdlib.h>
+#include <string.h>
+
+/* Hardware Monitor Fan Control
+ * Hardware limitation:
+ * HWM will fail to read the input temperature via I2C if other
+ * software switches the I2C address. AMD recommends using IMC
+ * to control fans, instead of HWM.
+ */
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+{
+ /* Enable IMC fan control. the recommand way */
+ imc_reg_init();
+
+ FchParams->Imc.ImcEnable = TRUE;
+
+ /* 1 IMC, 0 HWM */
+ FchParams->Hwm.HwmControl = 1;
+
+ /* 2 disable IMC, 1 enable IMC, 0 following hw strap setting */
+ FchParams->Imc.ImcEnableOverWrite = 1;
+
+ memset(&FchParams->Imc.EcStruct, 0, sizeof(FCH_EC));
+}
static AGESA_STATUS fch_initenv(UINT32 Func, UINTN FchData, VOID *ConfigPtr)
{