[PATCH v2 1/5] dt-bindings: rtc: Add pinctrl for S35390A
Markus Probst <[email protected]> Sat, 01 Aug 2026 18:43:00 +0000
| Newsgroups | org.kernel.vger.linux-rtc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> --- .../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 <[email protected]> + +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@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