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>
This commit is contained in:
parent
d3af7d7fcc
commit
0ff2e01e80
|
@ -26,6 +26,7 @@
|
||||||
#include "imc.h"
|
#include "imc.h"
|
||||||
#include "hudson.h"
|
#include "hudson.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "northbridge/amd/pi/dimmSpd.h"
|
#include "northbridge/amd/pi/dimmSpd.h"
|
||||||
#include "northbridge/amd/pi/agesawrapper.h"
|
#include "northbridge/amd/pi/agesawrapper.h"
|
||||||
#include <boardid.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},
|
{64, Function1, FCH_GPIO_PULL_UP_ENABLE | FCH_GPIO_OUTPUT_VALUE | FCH_GPIO_OUTPUT_ENABLE | DrvStrengthSel_12mA},
|
||||||
{-1}
|
{-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
|
* 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) {
|
} else if (StdHeader->Func == AMD_INIT_ENV) {
|
||||||
FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
|
FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
|
||||||
printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");
|
printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_HUDSON_IMC_FWM))
|
if (IS_ENABLED(CONFIG_HUDSON_IMC_FWM))
|
||||||
oem_fan_control(FchParams_env);
|
oem_fan_control(FchParams_env);
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
|
||||||
* software switches the I2C address. AMD recommends using IMC
|
* software switches the I2C address. AMD recommends using IMC
|
||||||
* to control fans, instead of HWM.
|
* 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] = {
|
FCH_HWM_FAN_CTR oem_factl[5] = {
|
||||||
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
||||||
|
|
|
@ -138,7 +138,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
|
||||||
* software switches the I2C address. AMD recommends using IMC
|
* software switches the I2C address. AMD recommends using IMC
|
||||||
* to control fans, instead of HWM.
|
* 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] = {
|
FCH_HWM_FAN_CTR oem_factl[5] = {
|
||||||
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
||||||
|
|
|
@ -106,7 +106,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
|
||||||
* software switches the I2C address. AMD recommends using IMC
|
* software switches the I2C address. AMD recommends using IMC
|
||||||
* to control fans, instead of HWM.
|
* 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] = {
|
FCH_HWM_FAN_CTR oem_factl[5] = {
|
||||||
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
||||||
|
|
|
@ -108,7 +108,7 @@ static const CODEC_TBL_LIST CodecTableList[] =
|
||||||
* software switches the I2C address. AMD recommends using IMC
|
* software switches the I2C address. AMD recommends using IMC
|
||||||
* to control fans, instead of HWM.
|
* 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] = {
|
FCH_HWM_FAN_CTR oem_factl[5] = {
|
||||||
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
/*temperature input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
|
||||||
|
|
|
@ -53,7 +53,7 @@ const int BiosCalloutsLen = ARRAY_SIZE(BiosCallouts);
|
||||||
* software switches the I2C address. AMD recommends using IMC
|
* software switches the I2C address. AMD recommends using IMC
|
||||||
* to control fans, instead of HWM.
|
* 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->Imc.ImcEnable = FALSE;
|
||||||
FchParams->Hwm.HwMonitorEnable = FALSE;
|
FchParams->Hwm.HwMonitorEnable = FALSE;
|
||||||
|
|
|
@ -81,21 +81,3 @@ void enable_imc_thermal_zone(void)
|
||||||
WaitForEcLDN9MailboxCmdAck(&StdHeader);
|
WaitForEcLDN9MailboxCmdAck(&StdHeader);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* 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.
|
|
||||||
*/
|
|
||||||
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 */
|
|
||||||
|
|
||||||
LibAmdMemFill(&(FchParams->Imc.EcStruct), 0, sizeof(FCH_EC), FchParams->StdHeader);
|
|
||||||
}
|
|
||||||
|
|
|
@ -16,12 +16,7 @@
|
||||||
#ifndef HUDSON_IMC_H
|
#ifndef HUDSON_IMC_H
|
||||||
#define HUDSON_IMC_H
|
#define HUDSON_IMC_H
|
||||||
|
|
||||||
#include "Porting.h"
|
|
||||||
#include "AGESA.h"
|
|
||||||
#include <FchCommonCfg.h>
|
|
||||||
|
|
||||||
void imc_reg_init(void);
|
void imc_reg_init(void);
|
||||||
void enable_imc_thermal_zone(void);
|
void enable_imc_thermal_zone(void);
|
||||||
void oem_fan_control(FCH_DATA_BLOCK *FchParams);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue