From: Ciprian Costea <ciprianmarian.costea@oss.nxp.com>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>
Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, NXP S32 Linux <s32@nxp.com>,
imx@lists.linux.dev, Christophe Lizzi <clizzi@redhat.com>,
Alberto Ruiz <aruizrui@redhat.com>,
Enric Balletbo <eballetb@redhat.com>,
Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
Subject: [PATCH v7 0/4] add NXP RTC driver support for S32G2/S32G3 SoCs
Date: Fri, 7 Feb 2025 18:38:04 +0200 [thread overview]
Message-ID: <20250207163808.1208552-1-ciprianmarian.costea@oss.nxp.com> (raw)
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 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 | 383 ++++++++++++++++++
6 files changed, 470 insertions(+)
create mode 100644 Documentation/devicetree/bindings/rtc/nxp,s32g-rtc.yaml
create mode 100644 drivers/rtc/rtc-s32g.c
--
2.45.2
next reply other threads:[~2025-02-07 16:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-07 16:38 Ciprian Costea [this message]
2025-02-07 16:38 ` [PATCH v7 1/4] dt-bindings: rtc: add schema for NXP S32G2/S32G3 SoCs Ciprian Costea
2025-02-07 16:38 ` [PATCH v7 2/4] rtc: s32g: add NXP S32G2/S32G3 SoC support Ciprian Costea
2025-02-07 20:16 ` Frank Li
2025-02-11 11:25 ` Ciprian Marian Costea
2025-02-11 17:07 ` Frank Li
2025-02-12 8:11 ` Ciprian Marian Costea
2025-02-12 15:50 ` Frank Li
2025-02-12 16:39 ` Ciprian Marian Costea
2025-02-07 16:38 ` [PATCH v7 3/4] arm64: defconfig: add S32G RTC module support Ciprian Costea
2025-02-07 16:38 ` [PATCH v7 4/4] MAINTAINERS: add NXP S32G RTC driver Ciprian Costea
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250207163808.1208552-1-ciprianmarian.costea@oss.nxp.com \
--to=ciprianmarian.costea@oss.nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=aruizrui@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=clizzi@redhat.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=eballetb@redhat.com \
--cc=imx@lists.linux.dev \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rtc@vger.kernel.org \
--cc=robh@kernel.org \
--cc=s32@nxp.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox