summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2017-07-20 20:54:36 -0600
committerKyösti Mälkki <kyosti.malkki@gmail.com>2017-08-25 01:16:10 +0000
commit0ff2e01e809439efbf8cbe85bb6b48315b8a945a (patch)
tree0c10a5c2ec8fbc01d8b9baf475538c6de88285ce /src/mainboard
parentd3af7d7fcc769d898966b7559276698e71d9b201 (diff)
downloadcoreboot-0ff2e01e809439efbf8cbe85bb6b48315b8a945a.tar.xz
amd/pi/hudson: Move oem_fan_control()
It was not intentional to change oem_fan_control() to non-static with commit 23e5ba9 binarypi mainboards: Clean up IS_ENABLED fan control Every platform except bettong had its own static version of oem_fan_control, so remove the definition of oem_fan_control from imc.h, and move it out of imc.c into bettong's BiosCallOuts.c. Change-Id: Ie95ac1fd3a57259bb35796903aa8753ef0e70d70 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/21189 Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/amd/bettong/BiosCallOuts.c21
-rw-r--r--src/mainboard/amd/db-ft3b-lc/BiosCallOuts.c2
-rw-r--r--src/mainboard/amd/lamar/BiosCallOuts.c2
-rw-r--r--src/mainboard/amd/olivehillplus/BiosCallOuts.c2
-rw-r--r--src/mainboard/bap/ode_e21XX/BiosCallOuts.c2
-rw-r--r--src/mainboard/pcengines/apu2/BiosCallOuts.c2
6 files changed, 26 insertions, 5 deletions
diff --git a/src/mainboard/amd/bettong/BiosCallOuts.c b/src/mainboard/amd/bettong/BiosCallOuts.c
index b251a5a5e7..8ea10d9080 100644
--- a/src/mainboard/amd/bettong/BiosCallOuts.c
+++ b/src/mainboard/amd/bettong/BiosCallOuts.c
@@ -26,6 +26,7 @@
#include "imc.h"
#include "hudson.h"
#include <stdlib.h>
+#include <string.h>
#include "northbridge/amd/pi/dimmSpd.h"
#include "northbridge/amd/pi/agesawrapper.h"
#include <boardid.h>
@@ -52,6 +53,25 @@ static const GPIO_CONTROL oem_bettong_gpio[] = {
{64, Function1, FCH_GPIO_PULL_UP_ENABLE | FCH_GPIO_OUTPUT_VALUE | FCH_GPIO_OUTPUT_ENABLE | DrvStrengthSel_12mA},
{-1}
};
+
+/* Bettong 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;
+ FchParams->Hwm.HwmControl = 1; /* 1 IMC, 0 HWM */
+ FchParams->Imc.ImcEnableOverWrite = 1; /* 2 disable IMC, 1 enable IMC, 0 following hw strap setting */
+
+ memset(&FchParams->Imc.EcStruct, 0, sizeof(FCH_EC));
+}
+
/**
* Fch Oem setting callback
*
@@ -72,6 +92,7 @@ AGESA_STATUS Fch_Oem_config(UINT32 Func, UINTN FchData, VOID *ConfigPtr)
} else if (StdHeader->Func == AMD_INIT_ENV) {
FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");
+
if (IS_ENABLED(CONFIG_HUDSON_IMC_FWM))
oem_fan_control(FchParams_env);
diff --git a/src/mainboard/amd/db-ft3b-lc/BiosCallOuts.c b/src/mainboard/amd/db-ft3b-lc/BiosCallOuts.c
index 9a51f5bf29..5930a4f577 100644
--- a/src/mainboard/amd/db-ft3b-lc/BiosCallOuts.c
+++ b/src/mainboard/amd/db-ft3b-lc/BiosCallOuts.c
@@ -123,7 +123,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
* software switches the I2C address. AMD recommends using IMC
* to control fans, instead of HWM.
*/
-void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
{
FCH_HWM_FAN_CTR oem_factl[5] = {
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
diff --git a/src/mainboard/amd/lamar/BiosCallOuts.c b/src/mainboard/amd/lamar/BiosCallOuts.c
index b0cdcc0dad..7a73ffee33 100644
--- a/src/mainboard/amd/lamar/BiosCallOuts.c
+++ b/src/mainboard/amd/lamar/BiosCallOuts.c
@@ -138,7 +138,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
* software switches the I2C address. AMD recommends using IMC
* to control fans, instead of HWM.
*/
-void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
{
FCH_HWM_FAN_CTR oem_factl[5] = {
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
diff --git a/src/mainboard/amd/olivehillplus/BiosCallOuts.c b/src/mainboard/amd/olivehillplus/BiosCallOuts.c
index 36dcb14539..939f3bfa1b 100644
--- a/src/mainboard/amd/olivehillplus/BiosCallOuts.c
+++ b/src/mainboard/amd/olivehillplus/BiosCallOuts.c
@@ -106,7 +106,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
* software switches the I2C address. AMD recommends using IMC
* to control fans, instead of HWM.
*/
-void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
{
FCH_HWM_FAN_CTR oem_factl[5] = {
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
diff --git a/src/mainboard/bap/ode_e21XX/BiosCallOuts.c b/src/mainboard/bap/ode_e21XX/BiosCallOuts.c
index dd73c47ed8..28e6e5a9a3 100644
--- a/src/mainboard/bap/ode_e21XX/BiosCallOuts.c
+++ b/src/mainboard/bap/ode_e21XX/BiosCallOuts.c
@@ -108,7 +108,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
* software switches the I2C address. AMD recommends using IMC
* to control fans, instead of HWM.
*/
-void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
{
FCH_HWM_FAN_CTR oem_factl[5] = {
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
diff --git a/src/mainboard/pcengines/apu2/BiosCallOuts.c b/src/mainboard/pcengines/apu2/BiosCallOuts.c
index ec9c71966c..58227790c1 100644
--- a/src/mainboard/pcengines/apu2/BiosCallOuts.c
+++ b/src/mainboard/pcengines/apu2/BiosCallOuts.c
@@ -53,7 +53,7 @@ const int BiosCalloutsLen = ARRAY_SIZE(BiosCallouts);
* software switches the I2C address. AMD recommends using IMC
* to control fans, instead of HWM.
*/
-void oem_fan_control(FCH_DATA_BLOCK *FchParams)
+static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
{
FchParams->Imc.ImcEnable = FALSE;
FchParams->Hwm.HwMonitorEnable = FALSE;