mb/ocp/deltalake: Add VPD variable for FRB2 timer action

Tested on OCP Delta Lake, the timer action can be set correctly.

Change-Id: I1013169e12455e01214d089c9398c78143af4df8
Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44019
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Johnny Lin 2020-07-29 15:58:17 +08:00 committed by Angel Pons
parent b96d9b6e2f
commit 5ea5336b6e
2 changed files with 16 additions and 3 deletions

View File

@ -101,7 +101,7 @@ enum cb_err ipmi_set_post_start(const int port)
void init_frb2_wdt(void) void init_frb2_wdt(void)
{ {
char val[VPD_LEN]; char val[VPD_LEN];
u8 enable; uint8_t enable, action;
uint16_t countdown; uint16_t countdown;
if (vpd_get_bool(FRB2_TIMER, VPD_RW_THEN_RO, &enable)) { if (vpd_get_bool(FRB2_TIMER, VPD_RW_THEN_RO, &enable)) {
@ -122,8 +122,16 @@ void init_frb2_wdt(void)
FRB2_COUNTDOWN_DEFAULT * 100); FRB2_COUNTDOWN_DEFAULT * 100);
countdown = FRB2_COUNTDOWN_DEFAULT; countdown = FRB2_COUNTDOWN_DEFAULT;
} }
ipmi_init_and_start_bmc_wdt(CONFIG_BMC_KCS_BASE, countdown,
TIMEOUT_HARD_RESET); if (vpd_gets(FRB2_ACTION, val, VPD_LEN, VPD_RW_THEN_RO)) {
action = (uint8_t)atol(val);
printk(BIOS_DEBUG, "FRB2 timer action set to: %d\n", action);
} else {
printk(BIOS_DEBUG, "FRB2 timer action use default value: %d\n",
FRB2_ACTION_DEFAULT);
action = FRB2_ACTION_DEFAULT;
}
ipmi_init_and_start_bmc_wdt(CONFIG_BMC_KCS_BASE, countdown, action);
} else { } else {
printk(BIOS_DEBUG, "Disable FRB2 timer\n"); printk(BIOS_DEBUG, "Disable FRB2 timer\n");
ipmi_stop_bmc_wdt(CONFIG_BMC_KCS_BASE); ipmi_stop_bmc_wdt(CONFIG_BMC_KCS_BASE);

View File

@ -15,6 +15,11 @@
/* Default countdown is 15 minutes when the VPD variable is not found */ /* Default countdown is 15 minutes when the VPD variable is not found */
#define FRB2_COUNTDOWN_DEFAULT 9000 #define FRB2_COUNTDOWN_DEFAULT 9000
/* VPD variable for setting FRB2 timer action.
0: No action, 1: hard reset, 2: power down, 3: power cycle */
#define FRB2_ACTION "frb2_action"
#define FRB2_ACTION_DEFAULT 0 /* Default no action when the VPD variable is not found */
/* Define the VPD keys for UPD variables that can be overwritten */ /* Define the VPD keys for UPD variables that can be overwritten */
#define FSP_LOG "fsp_log_enable" /* 1 or 0: enable or disable FSP SOL log */ #define FSP_LOG "fsp_log_enable" /* 1 or 0: enable or disable FSP SOL log */
#define FSP_LOG_DEFAULT 1 /* Default value when the VPD variable is not found */ #define FSP_LOG_DEFAULT 1 /* Default value when the VPD variable is not found */