[PATCH v2 1/5] dt-bindings: rtc: Add pinctrl for S35390A
Markus Probst
markus.probst at posteo.de
Sat Aug 1 11:43:00 PDT 2026
Synology NAS devices use the output pin for interrupt signal 1 to wake up
the system.
Move devicetree bindings for sii,s35390a into its own file.
Add necessary properties to configure the individual pins via pinctrl,
which allows the interrupt signal 1 to be used for wakeup alarm.
Signed-off-by: Markus Probst <markus.probst at posteo.de>
---
.../devicetree/bindings/rtc/sii,s35390a.yaml | 119 +++++++++++++++++++++
.../devicetree/bindings/rtc/trivial-rtc.yaml | 3 -
MAINTAINERS | 1 +
include/dt-bindings/rtc/s35390a.h | 23 ++++
4 files changed, 143 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/rtc/sii,s35390a.yaml b/Documentation/devicetree/bindings/rtc/sii,s35390a.yaml
new file mode 100644
index 000000000000..78a049576d5e
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/sii,s35390a.yaml
@@ -0,0 +1,119 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/sii,s35390a.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: S-35390A 2-WIRE REAL-TIME CLOCK
+
+maintainers:
+ - Alexandre Belloni <alexandre.belloni at bootlin.com>
+
+description:
+ The S-35390A is a CMOS 2-wire real-time clock IC which operates with the
+ very low current consumption in the wide range of operation voltage.
+
+allOf:
+ - $ref: rtc.yaml#
+
+properties:
+ compatible:
+ const: sii,s35390a
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ minItems: 1
+ maxItems: 2
+ description: Supports up to 2 interrupt lines via the INT1 and INT2 pins.
+
+ wakeup-parent: true
+
+ wakeup-source: true
+
+required:
+ - compatible
+ - reg
+
+patternProperties:
+ "^pins":
+ type: object
+ patternProperties:
+ "-pins$":
+ type: object
+ properties:
+ pins:
+ $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pins
+
+ sii,mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Modes for the specific pin:
+ - S35390A_MODE_IGNORE: Preserve the previous state.
+ - S35390A_MODE_DISABLE: Disable all interrupts.
+ - S35390A_MODE_WAKEUP: Used for waking up the system.
+ - S35390A_MODE_ALARM: Userspace defined alarm.
+ - S35390A_MODE_FREQ: Periodical at configurable frequency.
+ - S35390A_MODE_PMIN1: Minute periodical output with 50% duty.
+ - S35390A_MODE_PMIN2: Minute periodical output L for 7.81 ms.
+ Can only be used with pin INT1.
+ - S35390A_MODE_32768KHZ: Raw 32.768 kHz output.
+ Can only be used with pin INT1.
+ minimum: 0
+ maximum: 7
+
+ sii,frequency:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Frequency in Hz to be used with mode S35390A_MODE_FREQ.
+ minimum: 1
+ maximum: 31
+
+ required:
+ - sii,mode
+
+ if:
+ properties:
+ sii,mode:
+ const: 4
+ then:
+ required:
+ - sii,frequency
+ else:
+ properties:
+ sii,frequency: false
+
+ additionalProperties: false
+
+ additionalProperties: false
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/rtc/s35390a.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rtc: rtc at 30 {
+ compatible = "sii,s35390a";
+ reg = <0x30>;
+ pinctrl-0 = <&rtc_pins_default>;
+ pinctrl-names = "default";
+
+ wakeup-parent = <&int>;
+
+ rtc_pins_default: pins {
+ int1-pins {
+ pins = S35390A_PIN_INT1;
+ sii,mode = <S35390A_MODE_WAKEUP>;
+ };
+ int2-pins {
+ pins = S35390A_PIN_INT2;
+ sii,mode = <S35390A_MODE_DISABLE>;
+ };
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml b/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
index f4d0eed98a08..7b3f682ef4d5 100644
--- a/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
+++ b/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
@@ -81,8 +81,6 @@ properties:
- ricoh,rv5c386
# I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
- ricoh,rv5c387a
- # 2-wire CMOS real-time clock
- - sii,s35390a
# ST SPEAr Real-time Clock
- st,spear600-rtc
# VIA/Wondermedia VT8500 Real-time Clock
@@ -105,5 +103,4 @@ required:
- reg
additionalProperties: false
-
...
diff --git a/MAINTAINERS b/MAINTAINERS
index 716acfc3d7c1..c85be1eefdb1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -22696,6 +22696,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
F: Documentation/admin-guide/rtc.rst
F: Documentation/devicetree/bindings/rtc/
F: drivers/rtc/
+F: include/dt-bindings/rtc/
F: include/linux/rtc.h
F: include/linux/rtc/
F: include/uapi/linux/rtc.h
diff --git a/include/dt-bindings/rtc/s35390a.h b/include/dt-bindings/rtc/s35390a.h
new file mode 100644
index 000000000000..dcd0ca15f9e9
--- /dev/null
+++ b/include/dt-bindings/rtc/s35390a.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */
+
+#ifndef __DT_BINDINGS_RTC_S35390A_H
+#define __DT_BINDINGS_RTC_S35390A_H
+
+#define S35390A_MODE_IGNORE 0x0
+#define S35390A_MODE_DISABLE 0x1
+#define S35390A_MODE_WAKEUP 0x2
+#define S35390A_MODE_ALARM 0x3
+#define S35390A_MODE_FREQ 0x4
+#define S35390A_MODE_PMIN1 0x5
+#define S35390A_MODE_PMIN2 0x6
+#define S35390A_MODE_32768KHZ 0x7
+
+#define S35390A_MODE_INT1_MAX 0x7
+#define S35390A_MODE_INT2_MAX 0x5
+
+#define S35390A_FREQ_MASK 0x1F
+
+#define S35390A_PIN_INT1 "int1"
+#define S35390A_PIN_INT2 "int2"
+
+#endif /* __DT_BINDINGS_RTC_S35390A_H */
--
2.54.0
More information about the linux-arm-kernel
mailing list