diff --git a/boards/nxp/frdm_mcxw71/frdm_mcxw71.yaml b/boards/nxp/frdm_mcxw71/frdm_mcxw71.yaml index 98c88fed16d7f..b71fa7ad1662d 100644 --- a/boards/nxp/frdm_mcxw71/frdm_mcxw71.yaml +++ b/boards/nxp/frdm_mcxw71/frdm_mcxw71.yaml @@ -1,3 +1,9 @@ +# +# Copyright 2018, 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + identifier: frdm_mcxw71 name: NXP FRDM_MCXW71 type: mcu @@ -22,4 +28,5 @@ supported: - uart - watchdog - netif:openthread + - rtc vendor: nxp diff --git a/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0.yaml b/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0.yaml index cec1ec0332a2b..fab93a689093d 100644 --- a/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0.yaml +++ b/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0.yaml @@ -1,5 +1,5 @@ # -# Copyright 2019, 2024 NXP +# Copyright 2019, 2024, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -28,4 +28,5 @@ supported: - sdhc - usb_device - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0_ns.yaml b/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0_ns.yaml index 2b3541c40f62b..ee3a4348eb027 100644 --- a/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0_ns.yaml +++ b/boards/nxp/lpcxpresso55s69/lpcxpresso55s69_lpc55s69_cpu0_ns.yaml @@ -1,5 +1,5 @@ # -# Copyright 2019, 2024 NXP +# Copyright 2019, 2024, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -21,4 +21,5 @@ supported: - gpio - spi - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.dts b/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.dts index dd000b4acbef3..bf416dae98e71 100644 --- a/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.dts +++ b/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.dts @@ -1,6 +1,6 @@ /* * Copyright (c) 2023 TiaC Systems - * Copyright 2019,2023-2024 NXP + * Copyright 2019, 2023-2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -20,6 +20,7 @@ led0 = &green_led; sw0 = &user_button; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -194,3 +195,7 @@ zephyr_udc0: &usb1 { &pit0 { status = "okay"; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.yaml b/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.yaml index b205958cf29b2..84d250cde4cb3 100644 --- a/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.yaml +++ b/boards/nxp/mimxrt1010_evk/mimxrt1010_evk.yaml @@ -1,6 +1,6 @@ # # Copyright (c) 2023 TiaC Systems -# Copyright (c) 2019, NXP +# Copyright 2019, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -27,4 +27,5 @@ supported: - i2c - spi - usb_device + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.dts b/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.dts index 9052a9a159783..22f2cab4767d4 100644 --- a/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.dts +++ b/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.dts @@ -1,5 +1,5 @@ /* - * Copyright 2019,2023 NXP + * Copyright 2019, 2023, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ led0 = &green_led; sw0 = &user_button; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -187,3 +188,7 @@ zephyr_udc0: &usb1 { &systick { status = "okay"; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.yaml b/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.yaml index 8f6d9713bc65d..759fcf79c62c0 100644 --- a/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.yaml +++ b/boards/nxp/mimxrt1015_evk/mimxrt1015_evk.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2019, NXP +# Copyright 2019, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -24,4 +24,5 @@ supported: - i2c - spi - usb_device + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.dts b/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.dts index 301eb74f8c5b3..23f61740ce644 100644 --- a/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.dts +++ b/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, NXP + * Copyright 2018, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -20,6 +20,7 @@ sw0 = &user_button; sdhc0 = &usdhc1; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -248,3 +249,7 @@ zephyr_udc0: &usb1 { &systick { status = "okay"; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.yaml b/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.yaml index 886968e1c76a4..5e2a7cdc3dd3d 100644 --- a/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.yaml +++ b/boards/nxp/mimxrt1020_evk/mimxrt1020_evk.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, NXP +# Copyright 2018, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -26,4 +26,5 @@ supported: - sdhc - spi - usb_device + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.dts b/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.dts index 0a03950a6bdf0..29a39b7f66f86 100644 --- a/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.dts +++ b/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, NXP + * Copyright 2020, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -23,6 +23,7 @@ accel0 = &fxos8700; sdhc0 = &usdhc1; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -256,3 +257,7 @@ zephyr_udc0: &usb1 { status = "okay"; }; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.yaml b/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.yaml index 4d2bfe65864d0..5b2ba4d667a8d 100644 --- a/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.yaml +++ b/boards/nxp/mimxrt1024_evk/mimxrt1024_evk.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2020, NXP +# Copyright 2020, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -28,4 +28,5 @@ supported: - spi - usb_device - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.dts b/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.dts index 347b2cf3f8157..78b8ca72c24ea 100644 --- a/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.dts +++ b/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.dts @@ -1,5 +1,5 @@ /* - * Copyright 2023 NXP + * Copyright 2023, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -21,6 +21,7 @@ pwm-0 = &flexpwm1_pwm3; accel0 = &fxls8974; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -245,3 +246,7 @@ lpi2c3: &lpi2c3 { m2_hci_bt_uart: &lpuart3 {}; m2_wifi_sdio: &usdhc1 {}; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.yaml b/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.yaml index b4cf62676db28..de7742a9c13cb 100644 --- a/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.yaml +++ b/boards/nxp/mimxrt1040_evk/mimxrt1040_evk.yaml @@ -1,5 +1,5 @@ # -# Copyright 2023 NXP +# Copyright 2023, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -22,4 +22,5 @@ supported: - i2c - pwm - spi + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk.dtsi b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk.dtsi index 46ce6f4733a53..499d43d1fb41b 100644 --- a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk.dtsi +++ b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, NXP + * Copyright 2017, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -23,6 +23,7 @@ accel0 = &fxos8700; sdhc0 = &usdhc1; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -279,3 +280,7 @@ zephyr_uhc1: &usbh2 { &systick { status = "okay"; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_hyperflash.yaml b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_hyperflash.yaml index 4a097f4e441d4..40915a5b11a24 100644 --- a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_hyperflash.yaml +++ b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_hyperflash.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, NXP +# Copyright 2017, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -29,4 +29,5 @@ supported: - usb_device - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_qspi.yaml b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_qspi.yaml index 62b065a0658e2..e05c61c13acc3 100644 --- a/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_qspi.yaml +++ b/boards/nxp/mimxrt1050_evk/mimxrt1050_evk_mimxrt1052_qspi.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, NXP +# Copyright 2017, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -29,4 +29,5 @@ supported: - usb_device - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk.dtsi b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk.dtsi index 87f5d688a595a..087cff325fbc3 100644 --- a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk.dtsi +++ b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk.dtsi @@ -1,5 +1,5 @@ /* - * Copyright 2018,2024-2025 NXP + * Copyright 2018, 2024-2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -22,6 +22,7 @@ watchdog0 = &wdog0; sdhc0 = &usdhc1; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -342,3 +343,7 @@ dvp_fpc24_interface: &csi {}; m2_hci_bt_uart: &lpuart3 {}; m2_wifi_sdio: &usdhc1 {}; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_hyperflash.yaml b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_hyperflash.yaml index 688e5c8f576e3..acf3d6016ff3d 100644 --- a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_hyperflash.yaml +++ b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_hyperflash.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, NXP +# Copyright 2018, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -31,4 +31,5 @@ supported: - usb_device - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi.yaml b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi.yaml index 56f608d3a6759..e4944801692ff 100644 --- a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi.yaml +++ b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, NXP +# Copyright 2018, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -33,4 +33,5 @@ supported: - usb_device - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_B.yaml b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_B.yaml index c32eb2fdcf1b4..790a5d3cb50b4 100644 --- a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_B.yaml +++ b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_B.yaml @@ -1,5 +1,6 @@ # # Copyright (c) 2022, Whisper.ai +# Copyright 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -30,4 +31,5 @@ supported: - spi - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_C.yaml b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_C.yaml index a8600ac2bfeeb..32f36d5ce4a93 100644 --- a/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_C.yaml +++ b/boards/nxp/mimxrt1060_evk/mimxrt1060_evk_mimxrt1062_qspi_C.yaml @@ -1,5 +1,6 @@ # # Copyright (c) 2022, Whisper.ai +# Copyright 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -31,4 +32,5 @@ supported: - spi - usbd - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.dts b/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.dts index 9d7209cfae1cb..4b5826281ca56 100644 --- a/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.dts +++ b/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.dts @@ -1,7 +1,7 @@ /* - * SPDX-License-Identifier: Apache-2.0 + * Copyright 2023, 2025 NXP * - * Copyright 2023 NXP + * SPDX-License-Identifier: Apache-2.0 */ /dts-v1/; @@ -23,6 +23,7 @@ gps1 = &lpuart2; telem1 = &lpuart3; telem4-gps2 = &lpuart5; + rtc = &counter_rtc; }; chosen { @@ -468,3 +469,7 @@ zephyr_udc0: &usb1 { pinctrl-0 = <&pinmux_swo>; pinctrl-names = "default"; }; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.yaml b/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.yaml index d0a6c75480ad4..43e40a30b5959 100644 --- a/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.yaml +++ b/boards/nxp/mimxrt1062_fmurt6/mimxrt1062_fmurt6.yaml @@ -1,7 +1,7 @@ # -# SPDX-License-Identifier: Apache-2.0 +# Copyright 2023, 2025 NXP # -# Copyright 2023 NXP +# SPDX-License-Identifier: Apache-2.0 # identifier: mimxrt1062_fmurt6 @@ -28,4 +28,5 @@ supported: - uart - usb_device - watchdog + - rtc vendor: nxp diff --git a/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.dts b/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.dts index ef491683159ef..4860b8cbb859e 100644 --- a/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.dts +++ b/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, NXP + * Copyright 2018, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -22,6 +22,7 @@ watchdog0 = &wdog0; sdhc0 = &usdhc1; mcuboot-button0 = &user_button; + rtc = &counter_rtc; }; chosen { @@ -363,3 +364,7 @@ zephyr_udc0: &usb1 { dvp_fpc24_i2c: &lpi2c1 {}; dvp_fpc24_interface: &csi {}; + +&counter_rtc { + status = "okay"; +}; diff --git a/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.yaml b/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.yaml index deec4f1d66dfb..a3d90dd1ce122 100644 --- a/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.yaml +++ b/boards/nxp/mimxrt1064_evk/mimxrt1064_evk.yaml @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, NXP +# Copyright 2018, 2025 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -32,4 +32,5 @@ supported: - usb_device - video - watchdog + - rtc vendor: nxp diff --git a/drivers/counter/counter_mcux_snvs.c b/drivers/counter/counter_mcux_snvs.c index e6deb2b45fbf0..fb69b909dad78 100644 --- a/drivers/counter/counter_mcux_snvs.c +++ b/drivers/counter/counter_mcux_snvs.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2021 Basalte bv + * Copyright 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -24,6 +25,25 @@ LOG_MODULE_REGISTER(mcux_snvs, CONFIG_COUNTER_LOG_LEVEL); #include #endif +/* + * Helper macros to consolidate optional SRTC alarm handling. + * When MCUX_SNVS_SRTC is not enabled, these become no-ops or zero. + */ +#ifdef MCUX_SNVS_SRTC +#define SNVS_SRTC_ENABLE_IRQ(base) SNVS_LP_SRTC_EnableInterrupts((base), kSNVS_SRTC_AlarmInterrupt) +#define SNVS_SRTC_DISABLE_IRQ(base) \ + SNVS_LP_SRTC_DisableInterrupts((base), kSNVS_SRTC_AlarmInterrupt) +#define SNVS_SRTC_GET_ALARM_FLAGS(base) \ + (SNVS_LP_SRTC_GetStatusFlags((base)) & kSNVS_SRTC_AlarmInterruptFlag) +#define SNVS_SRTC_CLEAR_ALARM_FLAGS(base) \ + SNVS_LP_SRTC_ClearStatusFlags((base), kSNVS_SRTC_AlarmInterruptFlag) +#else +#define SNVS_SRTC_ENABLE_IRQ(base) +#define SNVS_SRTC_DISABLE_IRQ(base) +#define SNVS_SRTC_GET_ALARM_FLAGS(base) (0U) +#define SNVS_SRTC_CLEAR_ALARM_FLAGS(base) +#endif + struct mcux_snvs_config { /* info must be first element */ struct counter_config_info info; @@ -45,16 +65,24 @@ struct mcux_snvs_data { static int mcux_snvs_start(const struct device *dev) { - ARG_UNUSED(dev); + const struct mcux_snvs_config *config = dev->config; + + SNVS_HP_RTC_StartTimer(config->base); + SNVS_HP_RTC_EnableInterrupts(config->base, kSNVS_RTC_AlarmInterrupt); + SNVS_SRTC_ENABLE_IRQ(config->base); - return -EALREADY; + return 0; } static int mcux_snvs_stop(const struct device *dev) { - ARG_UNUSED(dev); + const struct mcux_snvs_config *config = dev->config; - return -ENOTSUP; + SNVS_HP_RTC_DisableInterrupts(config->base, kSNVS_RTC_AlarmInterrupt); + SNVS_SRTC_DISABLE_IRQ(config->base); + SNVS_HP_RTC_StopTimer(config->base); + + return 0; } static int mcux_snvs_get_value(const struct device *dev, uint32_t *ticks) @@ -185,10 +213,7 @@ static uint32_t mcux_snvs_get_pending_int(const struct device *dev) uint32_t flags; flags = SNVS_HP_RTC_GetStatusFlags(config->base) & kSNVS_RTC_AlarmInterruptFlag; - -#ifdef MCUX_SNVS_SRTC - flags |= SNVS_LP_SRTC_GetStatusFlags(config->base) & kSNVS_SRTC_AlarmInterruptFlag; -#endif + flags |= SNVS_SRTC_GET_ALARM_FLAGS(config->base); return flags; } @@ -204,7 +229,7 @@ void mcux_snvs_isr(const struct device *dev) { const struct mcux_snvs_config *config = dev->config; struct mcux_snvs_data *data = dev->data; - + counter_alarm_callback_t cb; uint32_t current; mcux_snvs_get_value(dev, ¤t); @@ -213,25 +238,23 @@ void mcux_snvs_isr(const struct device *dev) /* Clear alarm flag */ SNVS_HP_RTC_ClearStatusFlags(config->base, kSNVS_RTC_AlarmInterruptFlag); - if (data->alarm_hp_rtc_callback) { - data->alarm_hp_rtc_callback(dev, 0, current, data->alarm_hp_rtc_user_data); - - mcux_snvs_cancel_alarm(dev, 0); + cb = data->alarm_hp_rtc_callback; + if (cb != NULL) { + data->alarm_hp_rtc_callback = NULL; + cb(dev, 0, current, data->alarm_hp_rtc_user_data); } } -#ifdef MCUX_SNVS_SRTC - if (SNVS_LP_SRTC_GetStatusFlags(config->base) & kSNVS_SRTC_AlarmInterruptFlag) { + if (SNVS_SRTC_GET_ALARM_FLAGS(config->base)) { /* Clear alarm flag */ - SNVS_LP_SRTC_ClearStatusFlags(config->base, kSNVS_SRTC_AlarmInterruptFlag); + SNVS_SRTC_CLEAR_ALARM_FLAGS(config->base); - if (data->alarm_lp_srtc_callback) { - data->alarm_lp_srtc_callback(dev, 1, current, - data->alarm_lp_srtc_user_data); - mcux_snvs_cancel_alarm(dev, 1); + cb = data->alarm_lp_srtc_callback; + if (cb != NULL) { + data->alarm_lp_srtc_callback = NULL; + cb(dev, 1, current, data->alarm_lp_srtc_user_data); } } -#endif } int mcux_snvs_rtc_set(const struct device *dev, uint32_t ticks) diff --git a/dts/arm/nxp/nxp_rt10xx.dtsi b/dts/arm/nxp/nxp_rt10xx.dtsi index a0d01ce6d530e..24fd38c070ca4 100644 --- a/dts/arm/nxp/nxp_rt10xx.dtsi +++ b/dts/arm/nxp/nxp_rt10xx.dtsi @@ -1,5 +1,5 @@ /* - * Copyright 2017,2023,2024 NXP + * Copyright 2017, 2023-2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -345,6 +345,12 @@ compatible = "nxp,imx-snvs-rtc"; interrupts = <46 0>; wakeup-source; + + counter_rtc: counter_rtc { + compatible = "zephyr,rtc-counter"; + alarms-count = <2>; + status = "disabled"; + }; }; }; diff --git a/tests/drivers/rtc/rtc_api/boards/frdm_mcxw71.conf b/samples/drivers/rtc/boards/mimxrt1010_evk.conf similarity index 75% rename from tests/drivers/rtc/rtc_api/boards/frdm_mcxw71.conf rename to samples/drivers/rtc/boards/mimxrt1010_evk.conf index 9d46414094d7d..eb07e16781ff0 100644 --- a/tests/drivers/rtc/rtc_api/boards/frdm_mcxw71.conf +++ b/samples/drivers/rtc/boards/mimxrt1010_evk.conf @@ -6,4 +6,3 @@ CONFIG_RTC_ALARM=y CONFIG_RTC_INIT_PRIORITY=70 -CONFIG_TEST_RTC_ALARM_TIME_MASK=255 diff --git a/tests/drivers/rtc/rtc_api/boards/lpcxpresso55s69_lpc55s69_cpu0.conf b/samples/drivers/rtc/boards/mimxrt1015_evk.conf similarity index 75% rename from tests/drivers/rtc/rtc_api/boards/lpcxpresso55s69_lpc55s69_cpu0.conf rename to samples/drivers/rtc/boards/mimxrt1015_evk.conf index 9d46414094d7d..eb07e16781ff0 100644 --- a/tests/drivers/rtc/rtc_api/boards/lpcxpresso55s69_lpc55s69_cpu0.conf +++ b/samples/drivers/rtc/boards/mimxrt1015_evk.conf @@ -6,4 +6,3 @@ CONFIG_RTC_ALARM=y CONFIG_RTC_INIT_PRIORITY=70 -CONFIG_TEST_RTC_ALARM_TIME_MASK=255 diff --git a/samples/drivers/rtc/boards/mimxrt1020_evk.conf b/samples/drivers/rtc/boards/mimxrt1020_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1020_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1024_evk.conf b/samples/drivers/rtc/boards/mimxrt1024_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1024_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1040_evk.conf b/samples/drivers/rtc/boards/mimxrt1040_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1040_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1050_evk.conf b/samples/drivers/rtc/boards/mimxrt1050_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1050_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1060_evk.conf b/samples/drivers/rtc/boards/mimxrt1060_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1060_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1062_fmurt6.conf b/samples/drivers/rtc/boards/mimxrt1062_fmurt6.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1062_fmurt6.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/samples/drivers/rtc/boards/mimxrt1064_evk.conf b/samples/drivers/rtc/boards/mimxrt1064_evk.conf new file mode 100644 index 0000000000000..eb07e16781ff0 --- /dev/null +++ b/samples/drivers/rtc/boards/mimxrt1064_evk.conf @@ -0,0 +1,8 @@ +# +# Copyright 2025 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_RTC_ALARM=y +CONFIG_RTC_INIT_PRIORITY=70 diff --git a/tests/drivers/rtc/rtc_api/testcase.yaml b/tests/drivers/rtc/rtc_api/testcase.yaml index 415818b7db301..bcfd94b7e9662 100644 --- a/tests/drivers/rtc/rtc_api/testcase.yaml +++ b/tests/drivers/rtc/rtc_api/testcase.yaml @@ -1,4 +1,5 @@ # Copyright (c) 2022 Bjarki Arge Andreasen +# Copyright 2025 NXP # SPDX-License-Identifier: Apache-2.0 tests: @@ -7,8 +8,21 @@ tests: - drivers - rtc - api - filter: dt_alias_exists("rtc") + filter: dt_alias_exists("rtc") and not dt_compat_enabled("zephyr,rtc-counter") depends_on: rtc timeout: 100 platform_exclude: - qemu_x86_64 + + drivers.rtc.rtc_api.rtc_counter: + tags: + - drivers + - rtc + - api + filter: dt_alias_exists("rtc") and dt_compat_enabled("zephyr,rtc-counter") + depends_on: rtc + timeout: 100 + extra_configs: + - CONFIG_RTC_ALARM=y + - CONFIG_RTC_INIT_PRIORITY=70 + - CONFIG_TEST_RTC_ALARM_TIME_MASK=255 diff --git a/tests/drivers/rtc/rtc_api_helpers/testcase.yaml b/tests/drivers/rtc/rtc_api_helpers/testcase.yaml index df1a2ee66cf42..00c5975610d18 100644 --- a/tests/drivers/rtc/rtc_api_helpers/testcase.yaml +++ b/tests/drivers/rtc/rtc_api_helpers/testcase.yaml @@ -1,4 +1,5 @@ # Copyright (c) 2022 Bjarki Arge Andreasen +# Copyright 2025 NXP # SPDX-License-Identifier: Apache-2.0 tests: @@ -8,4 +9,5 @@ tests: - rtc - api - helpers + filter: not dt_compat_enabled("zephyr,rtc-counter") depends_on: rtc diff --git a/tests/drivers/rtc/rtc_utils/testcase.yaml b/tests/drivers/rtc/rtc_utils/testcase.yaml index 992fac141b86f..ace1f3ecde5bb 100644 --- a/tests/drivers/rtc/rtc_utils/testcase.yaml +++ b/tests/drivers/rtc/rtc_utils/testcase.yaml @@ -1,4 +1,5 @@ # Copyright (c) 2024 Andrew Featherstone +# Copyright 2025 NXP # SPDX-License-Identifier: Apache-2.0 tests: @@ -6,4 +7,5 @@ tests: tags: - drivers - rtc + filter: not dt_compat_enabled("zephyr,rtc-counter") depends_on: rtc diff --git a/tests/drivers/rtc/shell/testcase.yaml b/tests/drivers/rtc/shell/testcase.yaml index 21867499fd517..608dd0c52de42 100644 --- a/tests/drivers/rtc/shell/testcase.yaml +++ b/tests/drivers/rtc/shell/testcase.yaml @@ -7,5 +7,5 @@ tests: - drivers - rtc - shell - filter: dt_alias_exists("rtc") + filter: dt_alias_exists("rtc") and not dt_compat_enabled("zephyr,rtc-counter") depends_on: rtc