[PATCH v4 0/4] rtc: Add NXP PCF8525 RTC driver with watchdog and hwmon
From: Shiv Prakash Gupta
Date: Fri Oct 30 2026 - 07:33:40 EST
The PCF8525 is an NXP I2C real-time clock using an external
32.768-kHz crystal. It provides alarms, external timestamp capture,
recording of the last calendar write, backup battery switch-over,
a hardware watchdog timer, and an on-chip temperature sensor.
This series introduces DT bindings, the core RTC driver, watchdog
support, and optional hardware-monitoring (temperature readout) via
the hwmon subsystem.
Changes in v4:
- Rework timestamp handling to serialize sysfs clear and IRQ
processing, read Timestamp1 before clearing TSF, and restore TSM
after the CTS command.
- Correct Timestamp2 handling to report the last calendar write
instead of treating it as a second external timestamp capture.
- Rework the INTA threaded IRQ handler to drain pending AF/MSF/TSF
events and re-read status registers, avoiding missed events on an
edge-triggered IRQ.
- Preserve all CTRL2 Write-0-to-Clear status flags, including WDTF,
across register read-modify-write operations.
- Rework watchdog support to use nINTB as the watchdog output without
a Linux watchdog IRQ or pretimeout notification; remove unsupported
pretimeout handling and write-only watchdog-value read.
- Establish a known watchdog state at probe, clear stale WDTF before
enabling the watchdog output, and report the hardware-achieved
timeout.
- Fix RTC feature and time-setting handling, including
update-interrupt capability reporting and writing the
hundredths-of-a-second register when setting the calendar.
- Improve interrupt/wakeup and device-managed cleanup ordering so
hardware interrupt sources are safely masked on probe failure and
driver removal.
- Rework hwmon registration and power-management handling so the
temperature readout is enabled before exposure to userspace and
cleanly disabled on failure, suspend, and removal.
Changes in v3:
- patch 2: protect the Write-0-to-Clear (W0C) status flags in the
CTRL2/CTRL3 read-modify-write cycles so concurrently asserted
interrupt events are not silently cleared
- patch 2: replace the timestamp spinlock with a mutex and re-read
CTRL4 under it, closing the TOCTOU race between the threaded IRQ
handler and the sysfs timestamp store
- patch 3: configure the nINTB/CLKOUT pin (CLKOE=0) before requesting
the watchdog IRQ to avoid a spurious interrupt storm
- patch 3: add suspend/resume PM ops to stop and re-ping the watchdog
across system sleep
- patch 3: add WDIOF_PRETIMEOUT so the watchdog core attaches a
pretimeout governor
- patch 3: re-mask INTA/INTB interrupts on driver unbind via devm
cleanup actions
- patch 4: enable TEMP_RD_EN before registering the hwmon device and
add a devm cleanup to disable it on unbind
Changes in v2:
- Fix include: use <linux/pm_wakeirq.h> instead of <pm_wakeup.h>
- Add spinlock_t ts_lock to protect ts[]/ts_valid[] from IRQ/sysfs race
- Fix W0C ordering: clear AF/TSF flags before acting on alarm/timestamp
events
- Use dev_pm_set_wake_irq() for suspend wakeup wiring
- Clear stale WDTF before unmasking watchdog interrupt on INTB to prevent
boot loop when battery-backed flag persists across resets
- Add watchdog_notify_pretimeout() call in INTB IRQ handler
- Set WDOG_HW_RUNNING if bootloader left watchdog running at probe time
- Register hwmon device first, then enable PCF8525_CTRL5_TEMP_RD_EN only
after successful registration
Shiv Prakash Gupta (4):
dt-bindings: rtc: Add NXP PCF8525 RTC
rtc: pcf8525: Add NXP PCF8525 RTC driver
rtc: pcf8525: Add watchdog support
rtc: pcf8525: Add temperature sensor support via hwmon
.../devicetree/bindings/rtc/nxp,pcf8525.yaml | 86 +
MAINTAINERS | 7 +
drivers/rtc/Kconfig | 25 +
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-pcf8525.c | 1608 +++++++++++++++++
5 files changed, 1727 insertions(+)
create mode 100644 Documentation/devicetree/bindings/rtc/nxp,pcf8525.yaml
create mode 100644 drivers/rtc/rtc-pcf8525.c
--
2.34.1