From nobody Sat Aug 1 21:34:07 2026 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8787A345CBC for ; Sat, 1 Aug 2026 18:43:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.67.36.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609791; cv=none; b=Q0IR/uZ2V83UWyMAKZhm7RKdhM/HLe9YVp/J3GpWMxr2ffEWq2YQsF2iKrmjehfzDu3Wg+pS7XPOsbvCXjd9gBxDj7a/UcCybj6QiMaf9IzrFWjN6qUre55kgPWbJlghoS7L5mvdTV9TdQkKekm55P3aIHxCQyR4aPtZjmt4F6M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609791; c=relaxed/simple; bh=E5JWAN0m1kGY1R7OT60OGbYi4BBz/4Fe+OiDxuBLstQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I92Wls1Hpmlfw3HhqvJseR10+KxTbpKyO0Ey49YRbkDJsy/RMysWaL5VMPn2kId1ofg0XpoX1QACV1pU70bqVRiUzlgJmHIlGCgnqx7eO3JN17P6nTJOf7zWeLidWWv81md/yCYQZsC9ssLzS9G85dzSXN7QUMV/h1nIeoMTrw8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de; spf=pass smtp.mailfrom=posteo.de; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b=moC0bcII; arc=none smtp.client-ip=185.67.36.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=posteo.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b="moC0bcII" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id EE57A240028 for ; Sat, 1 Aug 2026 20:43:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785609780; bh=MLNXXaTC+Mcmzw26XB4POwyxYI5GqXN0i5lg+Jg9plI=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=moC0bcIIS1fuXl5je42CXRVqSYvlxgsah9d6pyXLhL+TU1YUzgYMbiF3aU8hD8zy8 CJWTOhzyhgFDSqG01KYeJ2+M8nTAlT1uUTeEGpbdishD9enaLyMkjhqdS8W/mXz0FT MUAWpHbQcaDzRt3qrw3YT+L6T/RMmMoFDAZqw6KVCAiBFAUChQqmg+c67VczXmW4ht 3Pxlx5vWcPgQvj58jGBr/P1TzG2oOolaY+aWLXwGs2j53R6/hzoY9VM7AsmMnIZyK1 RYbSSHTrmaNzqCtY3Pl4tpuk6BGOOCk6JFP4gfM2iAI4QdF9DRoXiNRAUiEqge0pDw tilh9Z/HWpEYg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hCBdb2RDcz9rxM; Sat, 1 Aug 2026 20:42:59 +0200 (CEST) From: Markus Probst Date: Sat, 01 Aug 2026 18:43:00 +0000 Subject: [PATCH v2 1/5] dt-bindings: rtc: Add pinctrl for S35390A Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-rtc_s35390a_int1-v2-1-f10c99ad1d6c@posteo.de> References: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> In-Reply-To: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> To: Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Michael Langer , Andrew Morton Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=6263; i=markus.probst@posteo.de; h=from:subject:message-id; bh=E5JWAN0m1kGY1R7OT60OGbYi4BBz/4Fe+OiDxuBLstQ=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqbj4vCStqgMlwnH7BhUZZeIzKJgqwvZlg4RCdu UqtzvFQIr+JAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCam4+LxsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9KhNA//WTK2pjSSolcj2B1XGKAGoDCTlEfyys5 olp0VqTvC9gpsJyLWiYyNyXPuj1bwwUyebR91ZzPBTZjQZTKIZdSuIUfFGorU5AAnCU6AFWgiu2 B5D9EPXmRyyBxHuF1GpXDtztbttvn61qgJLdC/nEul0J764OCPEOEblUMSvL6Xgn2ceaf4uirVn zvN02DAWrynvFCsQARk98MfmOSrYoJJ+RJA6VEvCPDnSbFch2ASYMHfOiqlRWtUBkStwkPrn9aS 87cN3EgPwhMJ7myFbi+Hzh5UCHxVwHG64+C32ieNvBkFXNX1GvLOW4b278gMNab8z/1qyMCq2x9 9TulJ4NoGQ4o6rCeKPoXyD+0Q9VP/WP+5J/djpN2Zns1CxsgOgoIQHDgV4XABO1p0o9oSd+fHs8 myksSEXpkj8Ru+Q9sp1NavmpV874Km7b7y/RI7FghgQhYxOYEwSnsEmKpsob8kq5KpOTm3rCwPP n0R950BvMIfURHh/s+zx7z80IAb5TdFaKj7wRB6zORfCHNpErwJqrEw6hGnxO+LooXrfxg+HU3p C3Nre0O5UALmkgBtEtUlNY+sKNTMyNQ4SqU0RxGrPRyjOBIcQZJvxx4KvTRUTUAhh3N4vrNellk 0XrASOtk3tKD+URKLWUmk83XAr2FUZ6/xaHJSc1v9DQoOBz4defA= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=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 aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt 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 --- .../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/Docum= entation/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 + +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 pi= ns. + + 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 + + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + rtc: rtc@30 { + compatible =3D "sii,s35390a"; + reg =3D <0x30>; + pinctrl-0 =3D <&rtc_pins_default>; + pinctrl-names =3D "default"; + + wakeup-parent =3D <&int>; + + rtc_pins_default: pins { + int1-pins { + pins =3D S35390A_PIN_INT1; + sii,mode =3D ; + }; + int2-pins { + pins =3D S35390A_PIN_INT2; + sii,mode =3D ; + }; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml b/Docum= entation/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 =20 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/gi= t/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/s3= 5390a.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 */ --=20 2.54.0 From nobody Sat Aug 1 21:34:07 2026 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 764BB3BB124 for ; Sat, 1 Aug 2026 18:43:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.67.36.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609791; cv=none; b=mXxp3say8tsbpTyTETBvy16hqXgNvNL7A7bQnj2Yi6EErPndAUif0GXsSXWjYfquRBhsmNx0nk7Hi6qDD/kGWDO3MEzYYIv2CQTY6QZZMDd/lZi4bbU4choVHOmEDaGqxnh9JgTpRbaaxtzAw4HmSx/arrhqas5quNiA6eifS4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609791; c=relaxed/simple; bh=QV/D+X9L6iHtWxf2FTb2FsPSMVe+HAIVh5ovcaU9Yq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Shizdic97SghZQqgiAFNhkqmE9r6iGJcuHCLJxhKtZUSOlLQHBHvbu/NhA8TX6n+prvTZnQ0wBbk1py4lE1s8WLYYjvZm6lsBHur2ftBPakkz9jo1T0io3ERpSxn0+ULch0JZRhhrx9hhXXAar+BLr98y0JvRaQeAgqdxlZXoSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de; spf=pass smtp.mailfrom=posteo.de; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b=CgqkfNSE; arc=none smtp.client-ip=185.67.36.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=posteo.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b="CgqkfNSE" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 2DEB7240027 for ; Sat, 1 Aug 2026 20:43:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785609782; bh=RGGhD71B+UtcIgYaLVJcbUJD2ZD+NnVvBK4/H22TbeY=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=CgqkfNSETg/qQ6f3/j38HASmAG9mWFBN/st+xcliEoxWaLOdkR+SjM3xuDnWDKEBf O3+j3W0rsBkL6W0i7W6Xa714Nob4jlzfjdEW+Z5YRyhJw2PnAQJ/MOWiLSbwX+rv3h Jt7KHirb/rovR9lwya62yOQ5EA4NqUSYbpo9/7UFWzz/aP4dj+00GDA1OL+2g4d9IU eH5H14Ie+SzcqGyxL2HOSpplA0JqYs6nl9NrL360pVrzxWdAKM1Vb747ZnSNRM2d/8 z3UmNlUOLTDpj9bOFauAb80X/EK5YHf0pvHfVvLwSGjzHCAvn1Sm8Z8IM2r+hL2GvK x/mdvoC45o9zg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hCBdc2VrQz9rxB; Sat, 1 Aug 2026 20:43:00 +0200 (CEST) From: Markus Probst Date: Sat, 01 Aug 2026 18:43:01 +0000 Subject: [PATCH v2 2/5] rtc: s35390a: Add missing newline to dev_err Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-rtc_s35390a_int1-v2-2-f10c99ad1d6c@posteo.de> References: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> In-Reply-To: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> To: Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Michael Langer , Andrew Morton Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=693; i=markus.probst@posteo.de; h=from:subject:message-id; bh=QV/D+X9L6iHtWxf2FTb2FsPSMVe+HAIVh5ovcaU9Yq0=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqbj4wpWGU7YlFLQpD3mpVlkJwXuhTfRyDWkAPZ 7gBJQVO1tOJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCam4+MBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9LRXQ/+NeqiE91eztegFpxmBn4+GqmSP4ehMRk b/nYl+Mlq2bmePwtF296I/vnLidBW+JzjR9L1F+mIeSB39IxxH8qYYj69K8kKXUXmfG/PTOhiAw a9ZLnWCta+qG2nWlZwL0YbXRjWMJ/VTzG3YbQVnW0j7uZTlZrWJbO9KbIcX6FxHQwefK0LjsKhb VvsRhPJOjRQAb8yN8vQ8brRRfB1/eD6YXbx7QFcSOWRbVgODV9zgFF+GqsfQbPKgidGs4Qgpuf8 1uAJZU6IH2GMkL9OrIcZXIALCnnJ3gJX9wUcDXaQfTs+TFDxUyfXgcIvVEufDHXKJL3XbQS4yiE 2rUZRVNvWhkwn/FerqmAGVE1bOqFkW/boGp3vEmWUfyzH0Ab19yIqywYi/6mIbX4MSWdpjsetHn HQyZgY+4FqAD0vgUwWYyp0IW0J+6y6pU1fxvEv0CLMe8UqsWDb/dy+BFTfTUu4mS9lPSqwjTy8I wBBlGELqaJPRZRy47tFwgMJqoBxDNTZ03pgXnT0j7DsgT2zVLa6ydazWGPhgDNcPXmXdUhu5J8Y ldxntIrE+HP/6pY1+K8iRa2Qg3y9I3ZhTh4T3mmeISi+MqMurHf19rlptGvIJhH61wjuNunnTb5 7sol/sExBPxNJRMm8xz2O8MlCYCbfq8n10l0PW8amOXS5v0U7IV8= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=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 aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt Fixes: 3bd32722c827d ("rtc: s35390a: improve irq handling") Signed-off-by: Markus Probst --- drivers/rtc/rtc-s35390a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index b72eef4fb099..4cfe7034c516 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -494,7 +494,7 @@ static int s35390a_probe(struct i2c_client *client) buf =3D 0; err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1); if (err < 0) { - dev_err(dev, "error disabling alarm"); + dev_err(dev, "error disabling alarm\n"); return err; } } else { --=20 2.54.0 From nobody Sat Aug 1 21:34:07 2026 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5588E3B583A for ; Sat, 1 Aug 2026 18:43:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.67.36.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609799; cv=none; b=W5lmE7pTPvS69MAJDwlN1KciYzSHeP8Eex17CM4G7cLg+UBk2LjrxzpWQSjve7FCigtCvd7YuTunTyMdMHtKOp30Q89K7vxC7obRnE7pk0Gmsz+jGq8FjiupXc/ZGtVOCcszy0rMHumA6FCXeGQbRvBdDRjXU/Fpg44Atb1AJbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609799; c=relaxed/simple; bh=fZl3B+SYiSN0CoE6+O4hYlK9Wqy6umtF28rp8a6TBSg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fdMduzONsMhHk2w6It4HUXFdtryz7FFt/1v9KAAIZGbVikjDBy6j+bhW3vWHt95Y/vs3ArtU+18lkkOALg0rY4664V20M6EUdCdNsGblnrroWgXGmLkascrdhiywe5g9aYcR7TCbQ4pkTAqh7v54MLuhGhcemyxTTgZKgK9RIUM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de; spf=pass smtp.mailfrom=posteo.de; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b=L7YQae4R; arc=none smtp.client-ip=185.67.36.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=posteo.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b="L7YQae4R" Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 2A957240106 for ; Sat, 1 Aug 2026 20:43:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785609783; bh=S5UEi3GeWxJmjjaY8LOsfTG4uHV330+lLuwCpBBqRio=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=L7YQae4RnI7E8IG7eHxFe6nbczBzJkq49sbdKwgL/D1z7SQsSPfhcSTg8t+lKIcwd 02wMVhKQ5BlZqA54yx0ENs2UD8aw0G/IIGD2DkR0rF8cQcCjaUp5Vnp02B9ZnfE4PM ixRpx2S2s9xAJWIx8ifE5XMfCFX4yQ0SmUTnSVl4lm/ay3tKAUm3MfVE7yKVKAJ85p kqDWkUKq+9nyPvTN0P0bUVFQSlbRWnOS/2k49iUESSDz+F5PiXJrw+QcDmAUANaOgn iXxreWf5CPHQndI15BRz6ZMcyty7hkE7GHUp8x8a6iq5Z39X6vXb9aO3w1M6abysyD J4fEexfiVrWKQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hCBdd4hjJz9rxD; Sat, 1 Aug 2026 20:43:01 +0200 (CEST) From: Markus Probst Date: Sat, 01 Aug 2026 18:43:02 +0000 Subject: [PATCH v2 3/5] rtc: s35390a: Fix alarm not disabling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-rtc_s35390a_int1-v2-3-f10c99ad1d6c@posteo.de> References: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> In-Reply-To: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> To: Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Michael Langer , Andrew Morton Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=2217; i=markus.probst@posteo.de; h=from:subject:message-id; bh=fZl3B+SYiSN0CoE6+O4hYlK9Wqy6umtF28rp8a6TBSg=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqbj4wTLyWbXf9auYsd8GgJzeJhTY9iI/bvKQZE nY8r2D8UqqJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCam4+MBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9ITWA//X8vbegXbyMzXRGZxa8xfqWQ1dQ4uzIQ dAK7pKEstw0di1x3Lnpk00E5x1Xj2tlEfOef8V2yhIbiq/bqRXpjlwoFUMHmCQPvP6PoAoNs1bt +CR9P9QdEJUIWw3xm8XONk4ZQco9Wva8QnxTCt1JxV1jesuXqTXJEILP/m8W4mgmBl4eQGYr7w0 Rnydof9bVXf9wtA6/fZSUO6LvHVaNcnZWg+J2VrQkK4LYtOWG3JRp/PeG/TW9zPLpDtYoQg2BdX tRpGzkhDZSRpiUPFjuIXiNanyc7BNnx1ZF2gSOrumtYjkdOYYEoDV52/ysuPC1BzMVpL81V1e9A WX2z5Yvcnu5FhJzuwf9GC78u35c5KKa/SS2soVJ9HEWpQuJGZyvvtKO9e2buNgaJ8bHeR9cNwBP XAqAj2Exvxzu0w5i4T7B9cPsJtd5Ia5QOmu5h95qh3QMZPT7k9Ykb3fFJCknyNx8ItuF4NZIKDl a2Gs58dISeF7bvbM368I4qBjJnEM5hXTW/PJR8IXJ5gjNkRXtL6zITO6rpwpN6+WaqP9KwmFBCg bx3x4Ypn0oaTgfH4Bcv3BQ5H9aNWPAQ5DjFOHEeUrFm5tVF9520pD5hRl8ltcxP6Db2Z6mByGB9 FFX3qv7VUU3WxhIubChKuvvMCiS4sjRmNvtWd8PtKcZ+/LvC6z88= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=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 aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt Implement alarm_irq_enable callback to disable alarm if requested. On reenable restore last used alarm time. Fixes: 542dd33a4925 ("drivers/rtc/rtc-s35390a.c: add wakealarm support for = rtc-s35390A rtc chip") Signed-off-by: Markus Probst --- drivers/rtc/rtc-s35390a.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index 4cfe7034c516..fbf5471eb3d0 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -64,6 +64,7 @@ MODULE_DEVICE_TABLE(of, s35390a_of_match); =20 struct s35390a { struct i2c_client *client[8]; + struct rtc_time tm_alarm; int twentyfourhour; }; =20 @@ -320,6 +321,9 @@ static int s35390a_rtc_set_alarm(struct device *dev, st= ruct rtc_wkalrm *alm) err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf)); =20 + if (!err) + s35390a->tm_alarm =3D alm->time; + return err; } =20 @@ -379,6 +383,19 @@ static int s35390a_rtc_read_alarm(struct device *dev, = struct rtc_wkalrm *alm) return 0; } =20 +static int s35390a_rtc_alarm_irq_enable(struct device *dev, unsigned int e= nabled) +{ + struct s35390a *s35390a =3D dev_get_drvdata(dev); + struct rtc_wkalrm alm; + + alm.enabled =3D enabled; + + if (enabled) + alm.time =3D s35390a->tm_alarm; + + return s35390a_rtc_set_alarm(dev, &alm); +} + static int s35390a_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) { @@ -410,11 +427,12 @@ static int s35390a_rtc_ioctl(struct device *dev, unsi= gned int cmd, } =20 static const struct rtc_class_ops s35390a_rtc_ops =3D { - .read_time =3D s35390a_rtc_read_time, - .set_time =3D s35390a_rtc_set_time, - .set_alarm =3D s35390a_rtc_set_alarm, - .read_alarm =3D s35390a_rtc_read_alarm, - .ioctl =3D s35390a_rtc_ioctl, + .read_time =3D s35390a_rtc_read_time, + .set_time =3D s35390a_rtc_set_time, + .set_alarm =3D s35390a_rtc_set_alarm, + .read_alarm =3D s35390a_rtc_read_alarm, + .alarm_irq_enable =3D s35390a_rtc_alarm_irq_enable, + .ioctl =3D s35390a_rtc_ioctl, }; =20 static int s35390a_nvmem_read(void *priv, unsigned int offset, void *val, --=20 2.54.0 From nobody Sat Aug 1 21:34:07 2026 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D9F53C3432 for ; Sat, 1 Aug 2026 18:43:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.67.36.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609799; cv=none; b=UUwHLpsJ2fckDAM5hFg5zVLDsnHOy8ISNBHpTwiHEu6WQQpj+oGeS2D7Nwpy4tMnw2GTOMHhY6+pHnmBMh04MmoB6RdCnMGsymS+NsUS+/8BHpXWruFgugt9x9LP2v6IXYv1ALPhSxXQuYkW/+fpqsd4MSNBBxBOGpcG5Q3qv/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609799; c=relaxed/simple; bh=yZjweCJcsptb0VYNMvC+HHHEQ1gNnBraKUjH/ut1+VI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dGAuzfyzM7ZAPuxsWPZXgTrn7+W9lUcLA58xZ9mYMpG3rHDYhZSFav0h/ek+W6hhRgNMlUOEUUPghni/o62NYwbtt8dfxclYqABkL8N2PKBcNE+1eh9WSFnTuvuuZTsov9nRbTPJyIaeUqp07yLXp7GXW/OgEZulz24cg8j0aVg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de; spf=pass smtp.mailfrom=posteo.de; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b=kGMwdG+v; arc=none smtp.client-ip=185.67.36.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=posteo.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b="kGMwdG+v" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id C4CC424002E for ; Sat, 1 Aug 2026 20:43:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785609784; bh=FqVh05ZmUUOgEsKcHQf6YryhRCr6yZI80Wbx2TgUXRA=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=kGMwdG+vZ9tomSVhSoGyuPWYSJoXYyXgZjEa2u+OAZObEIXVPqW6vlgBNop5guuNy J0rk2weqz9QnJnpZacQJAGh3Z0JiqEI8XpNrQL19MDQwPd1zn6tMjRa85LpTkXzPX4 q/Uo5jLY38He3CQAzIckyxfSLn84aPL8KKIvxWANcBm+YecLdbkl9amtbndzH0Awy5 N9XIi+gFLI+g+lBXnszCIDCz8mS+E//tyV7BiVKAjPqh3wgmQHZmpb82+D272+tTjX KyaHjDK84wRhi+4/AD1pGF9/IKD1j+U3JLpu3Iyk1YYTXM5LElH/5sQPGnmkEPL7xg c32oeW94PS9+g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hCBdf4zWzz9rxB; Sat, 1 Aug 2026 20:43:02 +0200 (CEST) From: Markus Probst Date: Sat, 01 Aug 2026 18:43:04 +0000 Subject: [PATCH v2 4/5] rtc: s35390a: Add pinctrl Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-rtc_s35390a_int1-v2-4-f10c99ad1d6c@posteo.de> References: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> In-Reply-To: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> To: Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Michael Langer , Andrew Morton Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=17249; i=markus.probst@posteo.de; h=from:subject:message-id; bh=yZjweCJcsptb0VYNMvC+HHHEQ1gNnBraKUjH/ut1+VI=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqbj4weQI3Lg/GAhr2jpN/+eVXX7MrbMW9ITjkD Zy3aLMiwICJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCam4+MBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9KLdQ//btSdpTOwptr/kjwQ4ZnWPq+XeefIoQo bT48UMYuofjBjS4MidCMunqBEjaI04aupPLTuuL2paRe3ZQmGXE0GozxhN8RnIxJOk1/ph3fxHb aSPU/tQzcU19JvKj5BuCaEtRmBs9YTzDtIRrmk93ksWsg/HFCT21AaOwMl9H+Pa92d2K/5fSJdc XKr3+zRDLnZNbXWI3UKXJ6c5uCzKWEBLJs3FXPNn/wz6x24jh07q2zQIm2eQrmJ0BdU50iXhiG3 F1i2b73+aiLi1uIMsPX0y5lLJTR9W/sL6GVwakfFZdZ8OlTTZwQAn7WcqbPsyJdIhw/Y5TIzA9u zUoAFKKbP74hK3f0SInkbW3q/PgqdSXhgl0xZPjG5u2PlrztSwiHkdcNvYdfzfXrlJnrRcZ1SuW N4ljQo5rw3do2jUkg4giimZ8dVTNRGfXnO6nvSF9sTcQ9pPKbOFqNAXzxsjtJjyd0GjF8a5viT1 X0TCZBgEL3kY17w8p0T/pC2stXV8Tw9xzk3S8MSblJcIk92TBIxVbiSvRNTGOaogz3c9ms7wCNk cU8eJR4mkIC6IxoIShBiOxD/Yp49Ojl0c1Qxox255DmIRFe0komdlwraqC5oxeeI7xRPvedvaIV g52W7bmXIzI2KrdVTcgvThlbljjRm72UqQdw8XX1vKEZnJI1bWFY= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=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 aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt Allow configuration of other output modes than wake alarm, including: - keeping the previous configured mode - disabling output - custom frequency - minute periodical interrupt (1: 50% duty, 2: 7.81 ms) - raw 32.768 kHz output Allow use of interrupt signal 1. Signed-off-by: Markus Probst --- drivers/rtc/Kconfig | 3 + drivers/rtc/rtc-s35390a.c | 403 +++++++++++++++++++++++++++++++++++++++---= ---- 2 files changed, 349 insertions(+), 57 deletions(-) diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 01def8231873..054ff134d84e 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -668,7 +668,10 @@ config RTC_DRV_RC5T619 =20 config RTC_DRV_S35390A tristate "Seiko Instruments S-35390A" + depends on OF + depends on PINCTRL select BITREVERSE + select GENERIC_PINCONF help If you say yes here you will get support for the Seiko Instruments S-35390A. diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index fbf5471eb3d0..fc0dbce0e8f4 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -12,11 +12,18 @@ #include #include #include +#include +#include +#include +#include + +#define DRIVER_NAME "rtc-s35390a" =20 #define S35390A_CMD_STATUS1 0 #define S35390A_CMD_STATUS2 1 #define S35390A_CMD_TIME1 2 #define S35390A_CMD_TIME2 3 +#define S35390A_CMD_INT1_REG1 4 #define S35390A_CMD_INT2_REG1 5 #define S35390A_CMD_FREE_REG 7 =20 @@ -36,19 +43,31 @@ #define S35390A_FLAG_POC BIT(0) #define S35390A_FLAG_BLD BIT(1) #define S35390A_FLAG_INT2 BIT(2) +#define S35390A_FLAG_INT1 BIT(3) #define S35390A_FLAG_24H BIT(6) #define S35390A_FLAG_RESET BIT(7) =20 /* flag for STATUS2 */ #define S35390A_FLAG_TEST BIT(0) =20 + +#define S35390A_INT_MODE_NOINTR 0x00 + /* INT2 pin output mode */ #define S35390A_INT2_MODE_MASK 0x0E -#define S35390A_INT2_MODE_NOINTR 0x00 #define S35390A_INT2_MODE_ALARM BIT(1) /* INT2AE */ #define S35390A_INT2_MODE_PMIN_EDG BIT(2) /* INT2ME */ #define S35390A_INT2_MODE_FREQ BIT(3) /* INT2FE */ -#define S35390A_INT2_MODE_PMIN (BIT(3) | BIT(2)) /* INT2FE | INT2ME */ +#define S35390A_INT2_MODE_PMIN1 (BIT(3) | BIT(2)) /* INT2FE | INT2ME */ + +/* INT1 pin output mode */ +#define S35390A_INT1_MODE_MASK 0xF0 +#define S35390A_INT1_MODE_ALARM BIT(5) /* INT1AE */ +#define S35390A_INT1_MODE_PMIN_EDG BIT(6) /* INT1ME */ +#define S35390A_INT1_MODE_FREQ BIT(7) /* INT1FE */ +#define S35390A_INT1_MODE_PMIN1 (BIT(7) | BIT(6)) /* INT1FE | INT1ME */ +#define S35390A_INT1_MODE_PMIN2 (BIT(7) | BIT(6) | BIT(5)) /* INT1FE | IN= T1ME | INT1AE */ +#define S35390A_INT1_MODE_32768KHZ BIT(4) /* 32kE */ =20 static const struct i2c_device_id s35390a_id[] =3D { { .name =3D "s35390a" }, @@ -64,8 +83,15 @@ MODULE_DEVICE_TABLE(of, s35390a_of_match); =20 struct s35390a { struct i2c_client *client[8]; - struct rtc_time tm_alarm; + struct rtc_device *rtc; + struct pinctrl_dev *pinctrl; + struct rtc_wkalrm alarm; int twentyfourhour; + + struct mutex mode_lock; + bool mode_init; + int mode[2]; + u8 freq[2]; }; =20 static int s35390a_set_reg(struct s35390a *s35390a, int reg, u8 *buf, int= len) @@ -283,33 +309,33 @@ static int s35390a_rtc_set_alarm(struct device *dev, = struct rtc_wkalrm *alm) alm->time.tm_min, alm->time.tm_hour, alm->time.tm_mday, alm->time.tm_mon, alm->time.tm_year, alm->time.tm_wday); =20 - /* disable interrupt (which deasserts the irq line) */ - err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); - if (err < 0) - return err; + guard(mutex)(&s35390a->mode_lock); =20 - /* clear pending interrupt (in STATUS1 only), if any */ - err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &sts, sizeof(sts)); + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); if (err < 0) return err; =20 - if (alm->enabled) - sts =3D S35390A_INT2_MODE_ALARM; - else - sts =3D S35390A_INT2_MODE_NOINTR; + /* disable interrupt (which deasserts the irq line) */ + if (s35390a->mode[0] =3D=3D S35390A_MODE_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT_MODE_NOINTR; + + if (s35390a->mode[1] =3D=3D S35390A_MODE_WAKEUP) + sts =3D (sts & ~S35390A_INT2_MODE_MASK) | S35390A_INT_MODE_NOINTR; =20 - /* set interrupt mode*/ err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); if (err < 0) return err; =20 + if (!alm->enabled) + goto end; + if (alm->time.tm_wday !=3D -1) buf[S35390A_ALRM_BYTE_WDAY] =3D bin2bcd(alm->time.tm_wday) | 0x80; else buf[S35390A_ALRM_BYTE_WDAY] =3D 0; =20 buf[S35390A_ALRM_BYTE_HOURS] =3D s35390a_hr2reg(s35390a, - alm->time.tm_hour) | 0x80; + alm->time.tm_hour) | 0x80; buf[S35390A_ALRM_BYTE_MINS] =3D bin2bcd(alm->time.tm_min) | 0x80; =20 if (alm->time.tm_hour >=3D 12) @@ -318,13 +344,33 @@ static int s35390a_rtc_set_alarm(struct device *dev, = struct rtc_wkalrm *alm) for (i =3D 0; i < 3; ++i) buf[i] =3D bitrev8(buf[i]); =20 - err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf, - sizeof(buf)); + /* set interrupt mode */ + if (s35390a->mode[0] =3D=3D S35390A_MODE_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT1_MODE_ALARM; + + if (s35390a->mode[1] =3D=3D S35390A_MODE_WAKEUP) + sts =3D (sts & ~S35390A_INT2_MODE_MASK) | S35390A_INT2_MODE_ALARM; + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); + if (err < 0) + return err; + + if (s35390a->mode[0] =3D=3D S35390A_MODE_WAKEUP) { + err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT1_REG1, buf, sizeof(buf)= ); + if (err) + return err; + } + + if (s35390a->mode[1] =3D=3D S35390A_MODE_WAKEUP) { + err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf)= ); + if (err) + return err; + } =20 - if (!err) - s35390a->tm_alarm =3D alm->time; +end: + s35390a->alarm =3D *alm; =20 - return err; + return 0; } =20 static int s35390a_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *a= lm) @@ -332,24 +378,35 @@ static int s35390a_rtc_read_alarm(struct device *dev,= struct rtc_wkalrm *alm) struct i2c_client *client =3D to_i2c_client(dev); struct s35390a *s35390a =3D i2c_get_clientdata(client); u8 buf[3], sts; - int i, err; + int i, err, reg; + + guard(mutex)(&s35390a->mode_lock); =20 err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); if (err < 0) return err; =20 - if ((sts & S35390A_INT2_MODE_MASK) !=3D S35390A_INT2_MODE_ALARM) { + if (s35390a->mode[1] =3D=3D S35390A_MODE_WAKEUP + && (sts & S35390A_INT2_MODE_MASK) =3D=3D S35390A_INT2_MODE_ALARM) { + + reg =3D S35390A_CMD_INT2_REG1; + } else if (s35390a->mode[0] =3D=3D S35390A_MODE_WAKEUP + && (sts & S35390A_INT1_MODE_MASK) =3D=3D S35390A_INT1_MODE_ALARM) { + + reg =3D S35390A_CMD_INT1_REG1; + } else { /* * When the alarm isn't enabled, the register to configure * the alarm time isn't accessible. */ alm->enabled =3D 0; + alm->time =3D s35390a->alarm.time; return 0; - } else { - alm->enabled =3D 1; } =20 - err =3D s35390a_get_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf)); + alm->enabled =3D 1; + + err =3D s35390a_get_reg(s35390a, reg, buf, sizeof(buf)); if (err < 0) return err; =20 @@ -358,7 +415,7 @@ static int s35390a_rtc_read_alarm(struct device *dev, s= truct rtc_wkalrm *alm) buf[i] =3D bitrev8(buf[i]); =20 /* - * B0 of the three matching registers is an enable flag. Iff it is set + * B0 of the three matching registers is an enable flag. If it is set * the configured value is used for matching. */ if (buf[S35390A_ALRM_BYTE_WDAY] & 0x80) @@ -388,10 +445,10 @@ static int s35390a_rtc_alarm_irq_enable(struct device= *dev, unsigned int enabled struct s35390a *s35390a =3D dev_get_drvdata(dev); struct rtc_wkalrm alm; =20 - alm.enabled =3D enabled; - if (enabled) - alm.time =3D s35390a->tm_alarm; + alm =3D s35390a->alarm; + + alm.enabled =3D enabled; =20 return s35390a_rtc_set_alarm(dev, &alm); } @@ -452,13 +509,241 @@ static int s35390a_nvmem_write(void *priv, unsigned = int offset, void *val, return s35390a_set_reg(s35390a, S35390A_CMD_FREE_REG, val, bytes); } =20 +static int s35390a_pinctrl_get_groups_count(struct pinctrl_dev *pctldev) +{ + return 0; +} + +static const char *s35390a_pinctrl_get_group_name(struct pinctrl_dev *pctl= dev, + unsigned int group) +{ + return NULL; +} + +static const struct pinctrl_pin_desc s35390a_pins_desc[] =3D { + PINCTRL_PIN(0, "int1"), + PINCTRL_PIN(1, "int2"), +}; + +static const struct pinctrl_ops s35390a_pinctrl_ops =3D { + .get_groups_count =3D s35390a_pinctrl_get_groups_count, + .get_group_name =3D s35390a_pinctrl_get_group_name, + .dt_node_to_map =3D pinconf_generic_dt_node_to_map_pin, + .dt_free_map =3D pinconf_generic_dt_free_map, +}; + +#define PIN_CONFIG_MODE (PIN_CONFIG_END + 1) +#define PIN_CONFIG_FREQ (PIN_CONFIG_END + 2) + +static const struct pinconf_generic_params s35390a_pinconf_params[] =3D { + {"sii,mode", PIN_CONFIG_MODE}, + {"sii,frequency", PIN_CONFIG_FREQ}, +}; + +static int s35390a_set_freq(struct s35390a *s35390a, int pin, int freq) +{ + int err, reg; + u8 buf; + + reg =3D pin =3D=3D 0 ? S35390A_CMD_INT1_REG1 : S35390A_CMD_INT2_REG1; + + buf =3D bitrev8(freq); + + err =3D s35390a_set_reg(s35390a, reg, &buf, 1); + if (err < 0) + return err; + return 0; +} + +static int s35390a_update_mode(struct s35390a *s35390a, int pin, int mode,= int freq) +{ + int err; + u8 buf, status1, flag, mask; + bool update_irq =3D false; + + mask =3D pin =3D=3D 0 ? S35390A_INT1_MODE_MASK : S35390A_INT2_MODE_MASK; + + s35390a->mode_init =3D true; + + guard(mutex)(&s35390a->mode_lock); + + dev_dbg(&s35390a->client[0]->dev, "%s: pin=3D%d mode=3D%d\n", + __func__, pin, mode); + + if (mode =3D=3D S35390A_MODE_FREQ) { + if (freq & ~S35390A_FREQ_MASK) { + dev_err(&s35390a->client[0]->dev, "Unsupported frequency %u\n", freq); + return -EINVAL; + } + } else + freq =3D 0; + + if (mode =3D=3D s35390a->mode[pin] && freq =3D=3D s35390a->freq[pin]) + return 0; + + s35390a->mode[pin] =3D mode; + s35390a->freq[pin] =3D freq; + + if (mode =3D=3D S35390A_MODE_IGNORE) + return 0; + + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error reading status\n"); + return err; + } + + switch (mode) { + case S35390A_MODE_DISABLE: + case S35390A_MODE_ALARM: /* not implemented */ + buf =3D (buf & ~mask) | S35390A_INT_MODE_NOINTR; + break; + case S35390A_MODE_WAKEUP: + flag =3D pin =3D=3D 0 ? S35390A_INT1_MODE_ALARM : S35390A_INT2_MODE_ALAR= M; + if ((buf & mask) !=3D flag) { + buf =3D (buf & ~mask) | S35390A_INT_MODE_NOINTR; + break; + } + + err =3D s35390a_read_status(s35390a, &status1); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error reading status\n"); + return err; + } + + flag =3D pin =3D=3D 0 ? S35390A_FLAG_INT1 : S35390A_FLAG_INT2; + + /* disable alarm */ + if (status1 & flag) { + buf =3D (buf & ~mask) | S35390A_INT_MODE_NOINTR; + update_irq =3D true; + } + + break; + case S35390A_MODE_FREQ: + flag =3D pin =3D=3D 0 ? S35390A_INT1_MODE_FREQ : S35390A_INT2_MODE_FREQ; + buf =3D (buf & ~mask) | flag; + break; + case S35390A_MODE_PMIN1: + flag =3D pin =3D=3D 0 ? S35390A_INT1_MODE_PMIN1 : S35390A_INT2_MODE_PMIN= 1; + buf =3D (buf & ~mask) | flag; + break; + + /* INT1 only modes */ + case S35390A_MODE_PMIN2: + buf =3D (buf & ~mask) | S35390A_INT1_MODE_PMIN2; + break; + case S35390A_MODE_32768KHZ: + buf =3D (buf & ~mask) | S35390A_INT1_MODE_32768KHZ; + break; + } + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error setting interrupts\n"); + return err; + } + + if (freq) { + err =3D s35390a_set_freq(s35390a, pin, freq); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error setting frequency\n"); + return err; + } + } + + if (update_irq) + rtc_update_irq(s35390a->rtc, 1, RTC_AF); + + return 0; +} + +static int s35390a_pinconf_get(struct pinctrl_dev *pctldev, + unsigned int pin, unsigned long *config) +{ + struct s35390a *s35390a =3D pinctrl_dev_get_drvdata(pctldev); + unsigned int param =3D pinconf_to_config_param(*config); + u16 arg; + + switch (param) { + case PIN_CONFIG_MODE: + arg =3D s35390a->mode[pin]; + break; + case PIN_CONFIG_FREQ: + arg =3D s35390a->freq[pin]; + break; + default: + return -EOPNOTSUPP; + } + + *config =3D pinconf_to_config_packed(param, arg); + + return 0; +} + +static int s35390a_pinconf_set(struct pinctrl_dev *pctldev, + unsigned int pin, unsigned long *configs, + unsigned int num_configs) +{ + struct s35390a *s35390a =3D pinctrl_dev_get_drvdata(pctldev); + unsigned int param; + u32 param_val; + int i, mode, freq =3D 0; + + mode =3D pin =3D=3D 0 ? S35390A_MODE_IGNORE : S35390A_MODE_WAKEUP; + + for (i =3D 0; i < num_configs; i++) { + param =3D pinconf_to_config_param(configs[0]); + param_val =3D pinconf_to_config_argument(configs[0]); + + switch (param) { + case PIN_CONFIG_MODE: + if (param_val <=3D (pin =3D=3D 0 ? S35390A_MODE_INT1_MAX : S35390A_MODE= _INT2_MAX)) + mode =3D param_val; + else { + dev_err(&s35390a->client[0]->dev, "Unsupported pin mode %u\n", + param_val); + return -EINVAL; + } + break; + case PIN_CONFIG_FREQ: + freq =3D param_val; + break; + default: + dev_err(&s35390a->client[0]->dev, "Property %u not supported\n", + param); + return -EOPNOTSUPP; + } + } + + return s35390a_update_mode(s35390a, pin, mode, freq); +} + + +static const struct pinconf_ops s35390a_pinconf_ops =3D { + .is_generic =3D true, + .pin_config_get =3D s35390a_pinconf_get, + .pin_config_set =3D s35390a_pinconf_set, +}; + +static struct pinctrl_desc s35390a_pinctrl_desc =3D { + .name =3D DRIVER_NAME, + .pins =3D s35390a_pins_desc, + .npins =3D ARRAY_SIZE(s35390a_pins_desc), + .pctlops =3D &s35390a_pinctrl_ops, + .confops =3D &s35390a_pinconf_ops, + .custom_params =3D s35390a_pinconf_params, + .num_custom_params =3D ARRAY_SIZE(s35390a_pinconf_params), + .owner =3D THIS_MODULE, +}; + static int s35390a_probe(struct i2c_client *client) { int err, err_read; unsigned int i; struct s35390a *s35390a; struct rtc_device *rtc; - u8 buf, status1; + u8 status1; struct device *dev =3D &client->dev; struct nvmem_config nvmem_cfg =3D { .name =3D "s35390a_nvram", @@ -477,7 +762,10 @@ static int s35390a_probe(struct i2c_client *client) if (!s35390a) return -ENOMEM; =20 + mutex_init(&s35390a->mode_lock); + s35390a->client[0] =3D client; + i2c_set_clientdata(client, s35390a); =20 /* This chip uses multiple addresses, use dummy devices for them */ @@ -492,10 +780,37 @@ static int s35390a_probe(struct i2c_client *client) } } =20 + err =3D s35390a_disable_test_mode(s35390a); + if (err < 0) { + dev_err(dev, "error disabling test mode\n"); + return err; + } + rtc =3D devm_rtc_allocate_device(dev); if (IS_ERR(rtc)) return PTR_ERR(rtc); =20 + rtc->ops =3D &s35390a_rtc_ops; + rtc->range_min =3D RTC_TIMESTAMP_BEGIN_2000; + rtc->range_max =3D RTC_TIMESTAMP_END_2099; + + set_bit(RTC_FEATURE_ALARM_RES_MINUTE, rtc->features); + clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features); + + s35390a->rtc =3D rtc; + + err =3D devm_pinctrl_register_and_init(dev, &s35390a_pinctrl_desc, s35390= a, + &s35390a->pinctrl); + if (err) + return err; + + /* If no pinctrl config is defined in DT, fallback to previous behaviour = */ + if (!s35390a->mode_init) { + err =3D s35390a_update_mode(s35390a, 1, S35390A_MODE_WAKEUP, 0); + if (err) + return err; + } + err_read =3D s35390a_read_status(s35390a, &status1); if (err_read < 0) { dev_err(dev, "error resetting chip\n"); @@ -507,34 +822,8 @@ static int s35390a_probe(struct i2c_client *client) else s35390a->twentyfourhour =3D 0; =20 - if (status1 & S35390A_FLAG_INT2) { - /* disable alarm (and maybe test mode) */ - buf =3D 0; - err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1); - if (err < 0) { - dev_err(dev, "error disabling alarm\n"); - return err; - } - } else { - err =3D s35390a_disable_test_mode(s35390a); - if (err < 0) { - dev_err(dev, "error disabling test mode\n"); - return err; - } - } - device_set_wakeup_capable(dev, 1); =20 - rtc->ops =3D &s35390a_rtc_ops; - rtc->range_min =3D RTC_TIMESTAMP_BEGIN_2000; - rtc->range_max =3D RTC_TIMESTAMP_END_2099; - - set_bit(RTC_FEATURE_ALARM_RES_MINUTE, rtc->features); - clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features); - - if (status1 & S35390A_FLAG_INT2) - rtc_update_irq(rtc, 1, RTC_AF); - nvmem_cfg.priv =3D s35390a; err =3D devm_rtc_nvmem_register(rtc, &nvmem_cfg); if (err) @@ -545,7 +834,7 @@ static int s35390a_probe(struct i2c_client *client) =20 static struct i2c_driver s35390a_driver =3D { .driver =3D { - .name =3D "rtc-s35390a", + .name =3D DRIVER_NAME, .of_match_table =3D of_match_ptr(s35390a_of_match), }, .probe =3D s35390a_probe, --=20 2.54.0 From nobody Sat Aug 1 21:34:07 2026 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4C8F3C3C06 for ; Sat, 1 Aug 2026 18:43:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.67.36.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609795; cv=none; b=nsmxt1tXpYXqP4WKljyMeG3Uf1iKxJcf4ReCjMelGuYazMTbwS3OaZ09JrUuVcxlOuNe1AMVz1OhT12sglwpJKEY+IW+UmdgJh13lWzlmQhISGEKaw9ejvxg7YCnYZ4G6wXmMBgSr5GiaVkmDBWXKpfmQd9S6V1Sbvem51gofx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785609795; c=relaxed/simple; bh=XDpgTQdfxxWSVJVgMsE/llAVPp+55ZH/3eGVXXUjiLo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UqKh105VHevmO5gHBESSrJvgUy6ipnoaFuNM229QiBkBh6LFe8AcB6XNav8M9TKnKvg6KDwKvhBd70rOAw91XgKZNew95BMc/+o8RBy416U6+ZX3NSN0ThUTjXxvgy5XHsev98s+Rl3dbdRDQYXS5K0SU5UwT/kmMx2qMgcXHtU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de; spf=pass smtp.mailfrom=posteo.de; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b=CFWj4B6z; arc=none smtp.client-ip=185.67.36.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=posteo.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=posteo.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=posteo.de header.i=@posteo.de header.b="CFWj4B6z" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id C1B8124002D for ; Sat, 1 Aug 2026 20:43:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785609785; bh=CcERLpCyZZ4OPuVOIyPC+AGoiEre2YF4pH3QaRUDAS4=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=CFWj4B6zRe6VrTGbOjtDObNrS7OzGHXcLr047W9UQ1tbkP4MZKgK1elzTMLKXtozF +S4n823E5VaxBU6QVbKTV7Foeb2URZ/xahr22nTVlhkdh0H3jXDTj3vtXpqDeFUYUk brPcj8pLT6nnFPPI2G3TbmpdJKwd55EFddhl17RtJH8l/BxrfeP68VVBH4CjQWyOrK hMMIGDJrCpy2cM4atFzJ+oeZG6wBR/JE8hJTfCl2v/iaAJHaZ89aeT/OLnBjySBy/N 9Kx01DNzU0P5dSVF/7AfQedxnUyApNDspiVKfkboPgXKQ4o6IPZ/H/VfoVyaRKdTNK 1ESUjRmTRDj/g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hCBdh1Rdbz9rxD; Sat, 1 Aug 2026 20:43:04 +0200 (CEST) From: Markus Probst Date: Sat, 01 Aug 2026 18:43:05 +0000 Subject: [PATCH v2 5/5] rtc: s35390a: Add synology quirk Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-rtc_s35390a_int1-v2-5-f10c99ad1d6c@posteo.de> References: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> In-Reply-To: <20260801-rtc_s35390a_int1-v2-0-f10c99ad1d6c@posteo.de> To: Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Michael Langer , Andrew Morton Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=1424; i=markus.probst@posteo.de; h=from:subject:message-id; bh=XDpgTQdfxxWSVJVgMsE/llAVPp+55ZH/3eGVXXUjiLo=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqbj4wCAyyKVKPayUNNpaxuFrBVHOUNRQAhAACa ScxZfhemGGJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCam4+MBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9KRXA/+IStNyinQvEKOuH12oMTA15LvANQF5Za iChoSdchf2+QRk8NehDAqIX8uC4w76+v4CyyprbyBpqYksRswYJ9CItAKPOFmE+uDRgwute1tdv iwo+7uSviub+vLO9HMKyLiH8Uph6BNxR4j0VOayeM24m0j7EGN8yeYsU7yHUlAM+RAUxZGAFo/c 1+rB+ojzdUBy+tKqz/2Qm/nGME4V18GTAjeaavFtK4CA0Ga6UF+VAJ04xqmNqwhBvoZs+SDtEAr ggo8/oUccLoPYwyqhJc06w2rMl8lzcuGw2RDkmdydXmBukKPiR1ziLdYXyWP6liQkch3BpBKPMr 7o+oKcYSw5l4Ld81Caz2HJ1gQBKL6/bKiG39PKfsBwQvKMQRzX2PVLi98K25/pwsxDwjVAvVfUk cB0pZyov3+Wb4S7yndE2gGpf2DFJzrbxtGIQ561kqKTYXwvgMQWNQ56hbCjY7c8egUOXUhTJNDE 8ZO36j2CaS7L0bagemtUw8shr0BnGWzXgUkzP2/XVmX1Arcct8USzOtnUnw8gL8mJ5QBAkbcf3K WGIFnQvbcSFGjGyyGsAAlCZfM4Q7zJtZr8y3fCSgpe3i2EAvEKVEGrG/LacHugY7PvR+699Vk8X GURObWsL0tKX6mp3KpwFoSMSQsnrY2BcxDElsMGcuGyZ1kBHYsEw= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=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 aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt Synology NAS devices use interrupt signal 1 for wakeup alarms. On ACPI it is not possible to configure pinctrl. Use interrupt signal 1 for wakeup if no pinctrl state has been configured in devicetree and dmi sys vendor matches "Synology Inc.". Signed-off-by: Markus Probst --- drivers/rtc/rtc-s35390a.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index fc0dbce0e8f4..f20b8a5a72de 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -5,6 +5,7 @@ * Copyright (c) 2007 Byron Bradley */ =20 +#include #include #include #include @@ -806,7 +807,16 @@ static int s35390a_probe(struct i2c_client *client) =20 /* If no pinctrl config is defined in DT, fallback to previous behaviour = */ if (!s35390a->mode_init) { - err =3D s35390a_update_mode(s35390a, 1, S35390A_MODE_WAKEUP, 0); + i =3D 1; + /* + * Synology uses interrupt signal 1 for wakeup. Since pinctrl cannot be + * configured on ACPI, we check against the dmi sys vendor. + */ + if (dmi_match(DMI_SYS_VENDOR, "Synology Inc.")) { + i =3D 0; + s35390a_update_mode(s35390a, 1, S35390A_MODE_DISABLE, 0); + } + err =3D s35390a_update_mode(s35390a, i, S35390A_MODE_WAKEUP, 0); if (err) return err; } --=20 2.54.0