diff --git a/drivers/watchdog/wdt_mcux_imx_wdog.c b/drivers/watchdog/wdt_mcux_imx_wdog.c index 2eee0bc9225..29c84453f4d 100644 --- a/drivers/watchdog/wdt_mcux_imx_wdog.c +++ b/drivers/watchdog/wdt_mcux_imx_wdog.c @@ -13,7 +13,7 @@ #include LOG_MODULE_REGISTER(wdt_mcux_wdog); -#define WDOG_TMOUT_SEC(x) ((x * 2 / MSEC_PER_SEC) - 1) +#define WDOG_TMOUT_SEC(x) (((x * 2) / MSEC_PER_SEC) - 1) struct mcux_wdog_config { WDOG_Type *base; @@ -75,6 +75,11 @@ static int mcux_wdog_install_timeout(const struct device *dev, WDOG_GetDefaultConfig(&data->wdog_config); data->wdog_config.interruptTimeValue = 0U; + if (cfg->window.max < (MSEC_PER_SEC / 2)) { + LOG_ERR("Invalid window max, shortest window is 500ms"); + return -EINVAL; + } + data->wdog_config.timeoutValue = WDOG_TMOUT_SEC(cfg->window.max); diff --git a/samples/subsys/task_wdt/prj.conf b/samples/subsys/task_wdt/prj.conf index 2e1f0cb5883..f99d9c31094 100644 --- a/samples/subsys/task_wdt/prj.conf +++ b/samples/subsys/task_wdt/prj.conf @@ -5,6 +5,6 @@ CONFIG_WDT_LOG_LEVEL_DBG=y CONFIG_WDT_DISABLE_AT_BOOT=y CONFIG_TASK_WDT=y -CONFIG_TASK_WDT_MIN_TIMEOUT=100 +CONFIG_TASK_WDT_MIN_TIMEOUT=500 CONFIG_THREAD_NAME=y