diff --git a/boards/arm/mimxrt685_evk/doc/index.rst b/boards/arm/mimxrt685_evk/doc/index.rst index 7c39aa12158..0ea84b42ec4 100644 --- a/boards/arm/mimxrt685_evk/doc/index.rst +++ b/boards/arm/mimxrt685_evk/doc/index.rst @@ -89,6 +89,8 @@ features: +-----------+------------+-------------------------------------+ | PWM | on-chip | pwm | +-----------+------------+-------------------------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+-------------------------------------+ The default configuration can be found in the defconfig file: diff --git a/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.dts b/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.dts index 344e16c5b58..d5e8aa5e87a 100644 --- a/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.dts +++ b/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.dts @@ -26,6 +26,7 @@ green-pwm-led = &green_pwm_led; blue-pwm-led = &blue_pwm_led; red-pwm-led = &red_pwm_led; + watchdog0 = &wwdt0; }; chosen { @@ -265,6 +266,10 @@ i2s1: &flexcomm3 { status = "okay"; }; +&wwdt0 { + status = "okay"; +}; + &user_button_1 { status = "okay"; }; diff --git a/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.yaml b/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.yaml index 6629c9bcfb8..37375da3311 100644 --- a/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.yaml +++ b/boards/arm/mimxrt685_evk/mimxrt685_evk_cm33.yaml @@ -26,3 +26,4 @@ supported: - i2c - i2s - spi + - watchdog diff --git a/drivers/watchdog/wdt_mcux_wwdt.c b/drivers/watchdog/wdt_mcux_wwdt.c index 90ee877d1ed..f92fe927b3d 100644 --- a/drivers/watchdog/wdt_mcux_wwdt.c +++ b/drivers/watchdog/wdt_mcux_wwdt.c @@ -72,7 +72,6 @@ static int mcux_wwdt_disable(const struct device *dev) static int mcux_wwdt_install_timeout(const struct device *dev, const struct wdt_timeout_cfg *cfg) { - const struct mcux_wwdt_config *config = dev->config; struct mcux_wwdt_data *data = dev->data; uint32_t clock_freq; @@ -81,8 +80,14 @@ static int mcux_wwdt_install_timeout(const struct device *dev, return -ENOMEM; } +#if defined(CONFIG_SOC_MIMXRT685S_CM33) + clock_freq = CLOCK_GetWdtClkFreq(0); +#else + const struct mcux_wwdt_config *config = dev->config; + CLOCK_SetClkDiv(kCLOCK_DivWdtClk, config->clk_divider, true); clock_freq = CLOCK_GetWdtClkFreq(); +#endif WWDT_GetDefaultConfig(&data->wwdt_config); diff --git a/dts/arm/nxp/nxp_rt6xx_common.dtsi b/dts/arm/nxp/nxp_rt6xx_common.dtsi index 771f4cb5d09..6fcc003e528 100644 --- a/dts/arm/nxp/nxp_rt6xx_common.dtsi +++ b/dts/arm/nxp/nxp_rt6xx_common.dtsi @@ -250,6 +250,24 @@ label = "SC_TIMER"; #pwm-cells = <2>; }; + + wwdt0: watchdog@e000 { + compatible = "nxp,lpc-wwdt"; + reg = <0xe000 0x1000>; + interrupts = <0 0>; + status = "disabled"; + clk-divider = <1>; + label = "WWDT_0"; + }; + + wwdt1: watchdog@2e000 { + compatible = "nxp,lpc-wwdt"; + reg = <0x2e000 0x1000>; + interrupts = <52 0>; + status = "disabled"; + clk-divider = <1>; + label = "WWDT_1"; + }; }; &nvic { diff --git a/soc/arm/nxp_imx/rt6xx/Kconfig.defconfig.mimxrt685_cm33 b/soc/arm/nxp_imx/rt6xx/Kconfig.defconfig.mimxrt685_cm33 index 7cd7b8224f3..e0d9fed0c58 100644 --- a/soc/arm/nxp_imx/rt6xx/Kconfig.defconfig.mimxrt685_cm33 +++ b/soc/arm/nxp_imx/rt6xx/Kconfig.defconfig.mimxrt685_cm33 @@ -62,4 +62,8 @@ config PWM_MCUX_SCTIMER default y depends on PWM +config WDT_MCUX_WWDT + default y + depends on WATCHDOG + endif # SOC_MIMXRT685S_CM33 diff --git a/soc/arm/nxp_imx/rt6xx/soc.c b/soc/arm/nxp_imx/rt6xx/soc.c index 4b7c23cc883..c2e1c933c43 100644 --- a/soc/arm/nxp_imx/rt6xx/soc.c +++ b/soc/arm/nxp_imx/rt6xx/soc.c @@ -171,7 +171,14 @@ static ALWAYS_INLINE void clock_init(void) /* attach AUDIO PLL clock to FLEXCOMM3 (I2S3) */ CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM3); #endif - +#if (DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(wwdt0), nxp_lpc_wwdt, okay)) + CLOCK_AttachClk(kLPOSC_to_WDT0_CLK); +#else + /* Allowed to select none if not being used for watchdog to + * reduce power + */ + CLOCK_AttachClk(kNONE_to_WDT0_CLK); +#endif #endif /* CONFIG_SOC_MIMXRT685S_CM33 */ } diff --git a/tests/drivers/watchdog/wdt_basic_api/testcase.yaml b/tests/drivers/watchdog/wdt_basic_api/testcase.yaml index c2f9eda2cb9..05f8a48359a 100644 --- a/tests/drivers/watchdog/wdt_basic_api/testcase.yaml +++ b/tests/drivers/watchdog/wdt_basic_api/testcase.yaml @@ -3,7 +3,7 @@ tests: depends_on: watchdog tags: drivers watchdog filter: not (CONFIG_WDT_SAM or dt_compat_enabled("st,stm32-window-watchdog")) - platform_exclude: mec15xxevb_assy6853 + platform_exclude: mec15xxevb_assy6853 mimxrt685_evk_cm33 drivers.watchdog.stm32wwdg: depends_on: watchdog tags: drivers watchdog diff --git a/west.yml b/west.yml index 7d89b15f341..3a9244521b8 100644 --- a/west.yml +++ b/west.yml @@ -92,7 +92,7 @@ manifest: groups: - hal - name: hal_nxp - revision: 4b493d4346e841e786a8daa2eb2ee03cbe5cfd37 + revision: bb97ba1cb3820d5799f53c7af765830d766b56a2 path: modules/hal/nxp groups: - hal