intelblocks/oc_wdt: Consolidate the API
Reduce the OC WDT integration code footprint by consolidating multiple API calls into a single function to be called by SoC. Change-Id: Iba031cd8e0b72cabc4d0d8a216273d763231c889 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/77574 Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
c484e831e4
commit
1728e1bc15
|
@ -5,22 +5,12 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
/*
|
/* Starts and reloads the OC watchdog if enabled in Kconfig */
|
||||||
* Starts and reloads the OC watchdog with given timeout.
|
void setup_oc_wdt(void);
|
||||||
*
|
|
||||||
* timeout - Time in seconds before OC watchdog times out. Supported range = 70 - 1024
|
|
||||||
*/
|
|
||||||
void oc_wdt_start(unsigned int timeout);
|
|
||||||
|
|
||||||
/* Reloads the OC watchdog (if enabled) preserving the current settings. */
|
/* Reloads the OC watchdog (if enabled) preserving the current settings. */
|
||||||
void oc_wdt_reload(void);
|
void oc_wdt_reload(void);
|
||||||
|
|
||||||
/* Disables the OC WDT */
|
|
||||||
void oc_wdt_disable(void);
|
|
||||||
|
|
||||||
/* Checks if OC WDT is enabled and returns true if so, otherwise false */
|
|
||||||
bool is_oc_wdt_enabled(void);
|
|
||||||
|
|
||||||
/* Returns currently programmed OC watchdog timeout in seconds */
|
/* Returns currently programmed OC watchdog timeout in seconds */
|
||||||
unsigned int oc_wdt_get_current_timeout(void);
|
unsigned int oc_wdt_get_current_timeout(void);
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
*
|
*
|
||||||
* timeout - Time in seconds before OC watchdog times out. Supported range = 70 - 1024
|
* timeout - Time in seconds before OC watchdog times out. Supported range = 70 - 1024
|
||||||
*/
|
*/
|
||||||
void oc_wdt_start(unsigned int timeout)
|
static void oc_wdt_start(unsigned int timeout)
|
||||||
{
|
{
|
||||||
uint32_t oc_wdt_ctrl;
|
uint32_t oc_wdt_ctrl;
|
||||||
|
|
||||||
|
@ -48,6 +48,12 @@ void oc_wdt_start(unsigned int timeout)
|
||||||
outl(oc_wdt_ctrl, PCH_OC_WDT_CTL);
|
outl(oc_wdt_ctrl, PCH_OC_WDT_CTL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Checks if OC WDT is enabled and returns true if so, otherwise false. */
|
||||||
|
static bool is_oc_wdt_enabled(void)
|
||||||
|
{
|
||||||
|
return (inl(PCH_OC_WDT_CTL) & PCH_OC_WDT_CTL_EN) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Reloads the OC watchdog (if enabled) preserving the current settings. */
|
/* Reloads the OC watchdog (if enabled) preserving the current settings. */
|
||||||
void oc_wdt_reload(void)
|
void oc_wdt_reload(void)
|
||||||
{
|
{
|
||||||
|
@ -65,7 +71,7 @@ void oc_wdt_reload(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disables the OC WDT. */
|
/* Disables the OC WDT. */
|
||||||
void oc_wdt_disable(void)
|
static void oc_wdt_disable(void)
|
||||||
{
|
{
|
||||||
uint32_t oc_wdt_ctrl;
|
uint32_t oc_wdt_ctrl;
|
||||||
|
|
||||||
|
@ -76,14 +82,22 @@ void oc_wdt_disable(void)
|
||||||
outl(oc_wdt_ctrl, PCH_OC_WDT_CTL);
|
outl(oc_wdt_ctrl, PCH_OC_WDT_CTL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Checks if OC WDT is enabled and returns true if so, otherwise false. */
|
|
||||||
bool is_oc_wdt_enabled(void)
|
|
||||||
{
|
|
||||||
return (inl(PCH_OC_WDT_CTL) & PCH_OC_WDT_CTL_EN) ? true : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns currently programmed OC watchdog timeout in seconds */
|
/* Returns currently programmed OC watchdog timeout in seconds */
|
||||||
unsigned int oc_wdt_get_current_timeout(void)
|
unsigned int oc_wdt_get_current_timeout(void)
|
||||||
{
|
{
|
||||||
return (inl(PCH_OC_WDT_CTL) & PCH_OC_WDT_CTL_TOV_MASK) + 1;
|
return (inl(PCH_OC_WDT_CTL) & PCH_OC_WDT_CTL_TOV_MASK) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Starts and reloads the OC watchdog if enabled in Kconfig */
|
||||||
|
void setup_oc_wdt(void)
|
||||||
|
{
|
||||||
|
if (CONFIG(SOC_INTEL_COMMON_OC_WDT_ENABLE)) {
|
||||||
|
oc_wdt_start(CONFIG_SOC_INTEL_COMMON_OC_WDT_TIMEOUT_SECONDS);
|
||||||
|
if (is_oc_wdt_enabled())
|
||||||
|
printk(BIOS_DEBUG, "OC Watchdog enabled\n");
|
||||||
|
else
|
||||||
|
printk(BIOS_ERR, "Failed to enable OC watchdog\n");
|
||||||
|
} else {
|
||||||
|
oc_wdt_disable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue