linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 0/4] add NXP RTC driver support for S32G2/S32G3 SoCs
@ 2025-04-03 10:33 Ciprian Costea
  2025-04-03 10:33 ` [PATCH v9 1/4] dt-bindings: rtc: add schema for NXP " Ciprian Costea
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Ciprian Costea @ 2025-04-03 10:33 UTC (permalink / raw)
  To: Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Catalin Marinas, Will Deacon
  Cc: linux-rtc, devicetree, linux-kernel, linux-arm-kernel,
	NXP S32 Linux, imx, Christophe Lizzi, Alberto Ruiz,
	Enric Balletbo, Eric Chanudet, Ciprian Marian Costea

From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>

This patch series add support for the NXP RTC hardware module present on
S32G2/S32G3 SoCs.

RTC tracks clock time during system suspend. It is used as a time-based
wakeup source for the S32G2/S32G3 SoCs.

RTC is not battery-powered and it is not kept alive during system reset.

Following is an example of Suspend to RAM trigger on S32G2/S32G3 SoCs,
using userspace tools such as rtcwake:
# rtcwake -s 120 -m mem
# rtcwake: assuming RTC uses UTC ...
# rtcwake: wakeup from "mem" using /dev/rtc0 at Wed Feb  6 06:28:36 2036
#

Changes in V9:
- Added missing 'bitfield.h' include file
- Moved reserved clk mask check earlier to stop execution in case a
reserved clk is being used.
- Used 'DIV_ROUND_UP' macro when determining the rtc clock frequency.
- Fixed some indentation inconsistencies.
- Added Frank Li's Reviewed-by tag.

Changes in V8:
- Added description of uncommon S32G RTC hardware behaviour on resume.

Changes in V7:
- Changed 'ioread32/iowrite32' calls to more common 'readl/writel'.
- Removed calculations performed in 'suspend' and 'resume' routines by
  using RTC API ('APIVAL') functionality instead of relying on setting
  'RTCVAL'.
- Simplified 'set_alarm' and 'read_time/read_alarm' by usage of
  RTC APIVAL functionality and relying on kernel system time.
- Added comment about the available RTC hardware frequency divisors in the
  RTC driver.
- Used both available frequency divisors to increase the RTC rollover
  time.
- Removed a redundant error check on 'priv->irq'.

Changes in V6:
- Fixed a coding style issue regarding kernel doc reported by kernel test robot
- Refactored small sections from the S32G RTC driver without impacting
  functionality
- Fixed an error probe path issue on S32G RTC driver.
- Added 'rtc' schema in S32G-RTC bindings

Changes in V5:
- Removed rollover support.
- Removed clock switching support between Runtime and Suspend. A clock source
  which is always available has been used instead.
- Enabled 512 value RTC hardware frequency divisor to achieve higher rollover
  time
- Removed unneeded 'remove' callback.
- Decreased driver print verbosity on error paths.
- Provided 'clock-names' actual names in bindings documentation
- Remove __maybe_unused notations. Used the DEFINE_SIMPLE_DEV_PM_OPS() and
  pm_sleep_ptr() macros to handle the .suspend/.resume callbacks.
- Fixed some alignment issues.

Changes in V4:
- Dropped 'assigned-*' clock management approach. Simplified RTC Runtime
  and Suspend/Standby clock configuration.
- Simplified error paths on probe function
- Removed node label from bindings example
- Several cosmetic coding style fixes

Changes in V3:
- Removed 'nxp,s32g3-rtc' compatible string
- Change to 'remove' callback from 'remove_new'
- Used 'dev.parent' from 'struct rtc_device' instead of defining a
  specific 'struct device' in driver data
- Fixed several errors reported by kernel test robot
- Removed 'assigned-clocks', 'assigned-clock-parents' and
  'assigned-clock-rates' from required properties in the binding
  documentation.
- Refactored S32G RTC driver such that a default clock source and
  divisors configuration will be applied in case 'assigned-clocks' and
  'assigned-clock-parents' properties are missing.

Changes in V2:
- Removed 'clksel' support from dts bindings. Used clock parents support
  from CCF to better illustrate the RTC hardware IP from S32G2/S32G3.
- Removed frequency dividers support from dts bindings. Used assigned
  clock frequencies support from CCF instead.
- Reduced the interval while RTC is voluntarily disabled to a simple
  register write in order to avoid any race condition between a possbile
  rollover and 'suspend' callback execution flow.
- Updated bindings documentation with respect to clocking support.
- Fixed a potential unused variable warning reported by kernel test robot.
- Updated to usage of 'devm_rtc_allocate_device' and 'devm_rtc_register_device'
  instead of deprecated 'devm_rtc_device_register'.

Ciprian Marian Costea (4):
  dt-bindings: rtc: add schema for NXP S32G2/S32G3 SoCs
  rtc: s32g: add NXP S32G2/S32G3 SoC support
  arm64: defconfig: add S32G RTC module support
  MAINTAINERS: add NXP S32G RTC driver

 .../devicetree/bindings/rtc/nxp,s32g-rtc.yaml |  72 ++++
 MAINTAINERS                                   |   2 +
 arch/arm64/configs/defconfig                  |   1 +
 drivers/rtc/Kconfig                           |  11 +
 drivers/rtc/Makefile                          |   1 +
 drivers/rtc/rtc-s32g.c                        | 385 ++++++++++++++++++
 6 files changed, 472 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/rtc/nxp,s32g-rtc.yaml
 create mode 100644 drivers/rtc/rtc-s32g.c

-- 
2.45.2



^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2025-05-25 21:36 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-03 10:33 [PATCH v9 0/4] add NXP RTC driver support for S32G2/S32G3 SoCs Ciprian Costea
2025-04-03 10:33 ` [PATCH v9 1/4] dt-bindings: rtc: add schema for NXP " Ciprian Costea
2025-04-03 10:33 ` [PATCH v9 2/4] rtc: s32g: add NXP S32G2/S32G3 SoC support Ciprian Costea
2025-04-09 14:14   ` Enric Balletbo i Serra
2025-04-09 14:26     ` Ciprian Marian Costea
2025-04-09 14:42       ` Enric Balletbo i Serra
2025-04-09 14:58         ` Ciprian Marian Costea
2025-04-10  7:08           ` Enric Balletbo i Serra
2025-04-11  8:09           ` Ciprian Marian Costea
2025-04-03 10:33 ` [PATCH v9 3/4] arm64: defconfig: add S32G RTC module support Ciprian Costea
2025-04-04  6:17   ` Krzysztof Kozlowski
2025-04-04  6:24     ` Ciprian Marian Costea
2025-04-04  7:15       ` Krzysztof Kozlowski
2025-04-04  7:19         ` Ciprian Marian Costea
2025-04-04  8:53           ` Alexandre Belloni
2025-04-04 11:36             ` Ciprian Marian Costea
2025-05-20  9:01             ` Ciprian Marian Costea
2025-04-03 10:33 ` [PATCH v9 4/4] MAINTAINERS: add NXP S32G RTC driver Ciprian Costea
2025-05-25 21:33 ` (subset) [PATCH v9 0/4] add NXP RTC driver support for S32G2/S32G3 SoCs Alexandre Belloni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).