[PATCH v3 0/3] Add the System Timer Module counter

Daniel Lezcano posted 3 patches 1 month, 3 weeks ago
There is a newer version of this series
.../bindings/counter/nxp,s32g2-stm-cnt.yaml   |  64 +++
drivers/counter/Kconfig                       |  10 +
drivers/counter/Makefile                      |  21 +-
drivers/counter/nxp-stm-cnt.c                 | 386 ++++++++++++++++++
4 files changed, 472 insertions(+), 9 deletions(-)
create mode 100644 Documentation/devicetree/bindings/counter/nxp,s32g2-stm-cnt.yaml
create mode 100644 drivers/counter/nxp-stm-cnt.c
[PATCH v3 0/3] Add the System Timer Module counter
Posted by Daniel Lezcano 1 month, 3 weeks ago
The NXP S32 family provides a System Timer Module (STM), a 32-bit
free-running counter clocked from a peripheral clock. The STM includes
a prescaler and one or more compare channels generating optional
interrupts. When used as a generic hardware counter, only the main
free-running counter is required, while the compare channels are
typically unused.

On S32G2 devices, the STM is exposed as a simple counter block that
can operate continuously and be shared across subsystems such as the
Linux kernel, firmware components running on Cortex-M7 cores, or other
co-processors. The counter can be read atomically and provides a
stable timestamp source to correlate events occurring in different
execution contexts.

The Linux kernel controls the STM through a memory-mapped interface,
configuring the prescaler, enabling or disabling the counter, and
accounting for wrap-arounds. Other subsystems access the counter in
read-only mode, making it a shared timestamp reference across the
platform.

This driver adds support for the STM when used as a counter on S32G2
platforms. The device is described in the device tree using the
following compatible:

compatible = "nxp,s32g2-stm-cnt";

The driver exposes basic counter functionality: start, stop, reset,
prescaler configuration, and overflow handling.

Changelog:
	* v3
	  - Fixed compatible typo "nxp,s32g2-stm" to "nxp,s32g2-stm-cnt"

	* v2
	  - Added Rob's tag
	  ** kbuild
	  - Reordered alphabetically the headers
	  - Added bitfield.h header
	  - Use DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr()

Daniel Lezcano (3):
  counters: Reorder the Makefile
  dt-bindings: counter: Add NXP System Timer Module Counter
  counter: Add STM based counter

 .../bindings/counter/nxp,s32g2-stm-cnt.yaml   |  64 +++
 drivers/counter/Kconfig                       |  10 +
 drivers/counter/Makefile                      |  21 +-
 drivers/counter/nxp-stm-cnt.c                 | 386 ++++++++++++++++++
 4 files changed, 472 insertions(+), 9 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/counter/nxp,s32g2-stm-cnt.yaml
 create mode 100644 drivers/counter/nxp-stm-cnt.c

-- 
2.43.0
Re: [PATCH v3 0/3] Add the System Timer Module counter
Posted by Daniel Lezcano 1 month, 2 weeks ago
Hi William,

just a heads up about these changes.

Thanks

  -- Daniel

On 12/17/25 08:49, Daniel Lezcano wrote:
> The NXP S32 family provides a System Timer Module (STM), a 32-bit
> free-running counter clocked from a peripheral clock. The STM includes
> a prescaler and one or more compare channels generating optional
> interrupts. When used as a generic hardware counter, only the main
> free-running counter is required, while the compare channels are
> typically unused.
> 
> On S32G2 devices, the STM is exposed as a simple counter block that
> can operate continuously and be shared across subsystems such as the
> Linux kernel, firmware components running on Cortex-M7 cores, or other
> co-processors. The counter can be read atomically and provides a
> stable timestamp source to correlate events occurring in different
> execution contexts.
> 
> The Linux kernel controls the STM through a memory-mapped interface,
> configuring the prescaler, enabling or disabling the counter, and
> accounting for wrap-arounds. Other subsystems access the counter in
> read-only mode, making it a shared timestamp reference across the
> platform.
> 
> This driver adds support for the STM when used as a counter on S32G2
> platforms. The device is described in the device tree using the
> following compatible:
> 
> compatible = "nxp,s32g2-stm-cnt";
> 
> The driver exposes basic counter functionality: start, stop, reset,
> prescaler configuration, and overflow handling.
> 
> Changelog:
> 	* v3
> 	  - Fixed compatible typo "nxp,s32g2-stm" to "nxp,s32g2-stm-cnt"
> 
> 	* v2
> 	  - Added Rob's tag
> 	  ** kbuild
> 	  - Reordered alphabetically the headers
> 	  - Added bitfield.h header
> 	  - Use DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr()
> 
> Daniel Lezcano (3):
>    counters: Reorder the Makefile
>    dt-bindings: counter: Add NXP System Timer Module Counter
>    counter: Add STM based counter
> 
>   .../bindings/counter/nxp,s32g2-stm-cnt.yaml   |  64 +++
>   drivers/counter/Kconfig                       |  10 +
>   drivers/counter/Makefile                      |  21 +-
>   drivers/counter/nxp-stm-cnt.c                 | 386 ++++++++++++++++++
>   4 files changed, 472 insertions(+), 9 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/counter/nxp,s32g2-stm-cnt.yaml
>   create mode 100644 drivers/counter/nxp-stm-cnt.c
> 


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog