From nobody Mon Sep 28 16:23:31 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 CDD693A5421 for ; Wed, 19 Aug 2026 22:05:55 +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=1787177158; cv=none; b=JWR6HITI7CvXnw/X/2eAmJDjUTITYjwECpVg+NSU6yHh8b1n9Gpw4DESubmvEHgoQve/zy0W+/WP+K3osMTp1vgVGmxy07NXx2xZJX+NAYM+x40Myk2qDPwOhSVgJ6OfKovKd0UzqwFsYlUQ1nrGnr9bi9E1vWDkA3RaicrZVoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177158; c=relaxed/simple; bh=/RN4bcc6JZOueMRQ2yaP4BUuLLpjTzlr7/VSEGCklNo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ld+r6AJ1xh6LA1mGSMSuWGF3AY2YJ8GO0xO9ZkBOJW0AgSsT04GR84hCWTZxDseiFUtyBhs2nCAQgrtGoAAITQKSlh5Ly3GJEWAZdU6hr2ryRw+pCH/6aeRRqs7Zde4QTWg19ZlmG731p439QGA+fEKc4zrSV4VdKWy65W/hA1I= 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=B7hCpQg8; 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="B7hCpQg8" Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 0F96D240106 for ; Thu, 20 Aug 2026 00:05:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177154; bh=ELtl4sHgY9Ch4KYBqdzaGVJ+wwPAgLu5Sies0dF8+Lg=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=B7hCpQg8Ugg/JQfhJw98lW8JRtxQlNeZOBTnF1YSNlvMnP+xz+/Bl5sPf2xGMijQl hN8UCLpCL0XuH9wBwPjW7tMheEUINygJutsUvGgSxKDmq3v38AnVQaIP7lAtgburoX lcTm1in0PhlU0sfq+fU7e0GBeKN5E+CwnjYq0qNS58/0NsbX92qvsQxw0Hip8+Av+q 4FETHbVlVorYepD4VrWjjQsLy54Ym8eid185rXG5UuKT4Z+Dqj3TXX7cvtf/q5N8md W9jruZKz3OQGj8PWDoSwR/6WlWloKc6YCmAh4CVzvCKySyHLF2xVMu6dHg2CJtK/vS auQ6RcNIhgoCw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHN3gmPz9rxL; Thu, 20 Aug 2026 00:05:52 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:53 +0000 Subject: [PATCH v5 1/6] 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: <20260820-rtc_s35390a_int1-v5-1-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=4267; i=markus.probst@posteo.de; h=from:subject:message-id; bh=/RN4bcc6JZOueMRQ2yaP4BUuLLpjTzlr7/VSEGCklNo=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqhii8D7IaVVkAhB9EUWXeIteCdgpVafSwGHZ+n n53JN5ecyWJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9JQog/+PFx0uR5U2uVc7m1HEiY1bEsjeXupbhP NYU9bZCYBFGJ2B7lsOtfv5CSOyGWJ9lFByLB2r4OEArh+CpuCtZ8vAc3R+C2xW+8U2su1wetW6T fVBD7E1D4oN8kET+CDAGXg/qgtVqHMdM/igHS7OvTx3ocwjttsM4zEKA/PvaNVf/+FS7a+jlwpF RCMj4BsRGQbLFKE/nyTf/2gUOROO8ZQIK+sApFn3Wa6Zb/Tq9EivlbXQERG/2GxGVkzehvw23RX nrsTPm/JqJpQr+crLhmkgu6AEli4MOCna2374RrCSpl9zgqxr3XHNx3mRPpsi9YryT8S4/nztmA DExpjs6HuqYEDKEgPc92+AVEwPQYFnVSYxsnFKyFrK6JHj/lLFHXm5iZN1egFXn+IrSJXIXgShy QtG1YOSdVp03Bizrl4Bv/TA4P3O79BCk+spVqu0tFuJ/U0wJl71hfiMlEZ4SMO6Q5QMwzsR+PCm UUPxjLlrogPalAcatrVu5Zvf6pUxMEjR3mgjntnIyopJ6s1kwrd6L+Z3+FS1DOXSLE99qlEdhdd yaOIdtZaIJF122RQqsERYFIBJk675nYCmC8O3KE+k0DlufG672A7I1MO5jvmM9tHXKn3peqKNZ3 IZgUWkJWU74iwsL4qUmEdKUnmTVq24qjvL2yxndpiEZsaM0UdXr4= 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 | 111 +++++++++++++++++= ++++ .../devicetree/bindings/rtc/trivial-rtc.yaml | 3 - 2 files changed, 111 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..d9da3abbbd51 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/sii,s35390a.yaml @@ -0,0 +1,111 @@ +# 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 + + "#clock-cells": + const: 1 + +patternProperties: + "^pins": + type: object + patternProperties: + "-pins$": + type: object + properties: + pins: + $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pins + minItems: 1 + items: + enum: + - int1 + - int2 + + function: + $ref: /schemas/types.yaml#/definitions/string + description: | + Pin function: + - ignore: Preserve the previous state. + - disable: Disable pin output. + - wakeup: Output wakes up the system. + - clock: Output clock pulse. + - pmin1: Minute periodical output with 50% duty. + - pmin2: Minute periodical output L for 7.81 ms. + Can only be used with pin int1. + enum: + - ignore + - disable + - wakeup + - clock + - pmin1 + - pmin2 + + required: + - pins + - function + + additionalProperties: false + + additionalProperties: false + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + 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 "int1"; + function =3D "wakeup"; + }; + int2-pins { + pins =3D "int2"; + function =3D "disable"; + }; + }; + }; + }; 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 - ... --=20 2.54.0 From nobody Mon Sep 28 16:23:31 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 541FF3A5449 for ; Wed, 19 Aug 2026 22:05:59 +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=1787177161; cv=none; b=fa6csapbZv/zgenILAiSi6HimFv9i+gLKqnESjADxcwanV78m4xxnNihCLj1oVrKgsBsbHUZHUA3AMXF+hUToNr+EcrsvzHQHnoJ83Ls4+bm0FRomAh/O62dWQ7vu+hriWGdamvUic4298ihoaKAf/uOqje9luZNBIbha6ceEYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177161; 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=kFAnzIz0m+CedE5ByKHVlWCYSJkNKM4/O4NS4we9vcO0mT/nw7VmxUgTWny5oCOJbv/qwdQgU/+CDmJnL5/doCCrGO3i6Y5laj0Ms5r0IqewJj1jsiXkyB+xleFcTM6BxNNXCbH+I0T32vDjFuCR1XwFEEzHCi5NgaHikO+mEuE= 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=OhV5pv6y; 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="OhV5pv6y" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 423AE24002A for ; Thu, 20 Aug 2026 00:05:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177155; bh=RGGhD71B+UtcIgYaLVJcbUJD2ZD+NnVvBK4/H22TbeY=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=OhV5pv6ym2oEZmUNWBU4/O6kU8XOW31msmHvzHMACJKahcXum5drjmHopJeoerHCt 8x/lAVdHc5im1DrJb+1OUhNc1f17JALBgz1YVCuXa+LygOV9MQ0jYtMnL/AAahbf9w A0iLOzpiDbpoPQc8H02esKQ8W8hJpuVBi/4NfXOSt/YAFgF3pAvBcGFrp3chakOnaM 3R5dLWJ3Q/vwCRF8Ii1tQqq+/xD1+Z+UhI91euVGNrggUw9WiZXMQeNFHI+jkD6Whs pMqR9cLH2bb7SoNcU9VL4L4F+33q36p86sfJPMSRIIwUdm9jUXvX3fwRouP5XiKFSe r959i+/w2gMww== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHP3kNxz9rxM; Thu, 20 Aug 2026 00:05:53 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:54 +0000 Subject: [PATCH v5 2/6] 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: <20260820-rtc_s35390a_int1-v5-2-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@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/jnrUPSAcsmYgBqhii8f4oq+7sK5VdzSaBo7VT/rK+lo7oCiZtZK bYOOEzvKLmJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9LHWhAAmzjdLNNUXS/L86rWgPjPL0dj3r/8lEp AoaZKg5Yc8u9F4v0w6HbdY207gwqBpWs8EGFJgQWSyySYVIcd9yrB0lVVBGXZt9gPkBydj1mYzt MnYcvXwQWMIqnk+uyDno5uj44TUW6hdJWl7jRBL4665Ptgtd151qPvmRB35LjUnLBjtMUPF7YUq cwIJeH2+mDZ0crzDyf6ub0Z8NeCvBPfpuNOqtzMnKsHQqT7ByThuclFCWEPcsgpwIDzfY9KL8Wd wAhY3aKv6LPgxKIhLD7k3EnS/H8b0/vAq3+V2r7dEW4+SXf7D2QxtltUwdgHapdcxdTYp3a8zP5 UzwAASFcDdIEnxtlgoozrppU4v7YaygjtRCH8CaZqfdtaQ+gw7qyYie92jFp0gC/cMjwxQnaUtk Rc5LTg53XmzSpt6kwBduI0AssMzEJGFwHl8hKtg6zqDLqPkHTKQwcwSugTmz/tS20306Ordasvg 8VEkzllKh1b4kQxZpG7ZAy7Uz1obmtr5R8x/U6qGkrK4q/R9SAXOYlok5JKAB4sffo39FsDQdQ7 sMBlYgwz6YT8C+Cxhigk/1zrBI/Ygil9WyLPkTLbEU4iStLahJv53+c7qAjfDImxJ92AKoN7vdy Nt2f+1bQ4GcRI9xfeOdsPQia/pCKENHMP7i5dRuzZC0wdvGNMGPY= 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 Mon Sep 28 16:23:31 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 BBC123E173B for ; Wed, 19 Aug 2026 22:05:59 +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=1787177162; cv=none; b=GUAIbTVM92N+AvcugangBYJDurug51hz9ucARcfxvQln8/qGfqLpqJV/Hmd18n30S8YEMX+MPx7Obm/TDGQtGecaFIm4L6RrJtx6vI/OudO5Yfqy5AExXjVqHTnBjUWA/gyCYIGZtG5yHQI31ddJ32Zi+ON1D+LHEqkZlPIkoVs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177162; c=relaxed/simple; bh=6wArxx1l8Hm9Dqx4mugbk8wsFGsXoxVI7ksSr89OEeg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MxDa7UoUhlEhE5uxyMvgHsNMFwHDWiji1db1vATiUBFhX9araWPWp4CliLnkxTepFBuMxIWC0rCoPjaNOLmNwzqxLWjIKNETma0eyq8Hup6N2ZYC+LAxmDgU0apBp4tEIaT11WChYZ2BivAIeinGljf8IxMdUstvm00cx3dZr3c= 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=mq21MOGj; 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="mq21MOGj" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 24972240028 for ; Thu, 20 Aug 2026 00:05:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177156; bh=/IrZMEnYMWz3cHmLNm2dkUh37mtplEA3JG88ye8+6jg=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=mq21MOGjUWL2u4U2ODfE8twbVtnz3sdjvfWo0Xa71FTcHktbpDxzN9+1VL/sd9Q3j jf8mfS79T/uJNNpAr9KvBGFcCg0RNMjs1MjIuKKI31YVcs+3DwxcFXWiEHUrlgXVCe C6YaN6IQ49xI7jkTMCosmuqdcznnc9s7lIev6m3yeBnJjKbYWpiZKBg9RG4vx8AVXI 0fQj5xOBfrrsk3/zBvKfrH/dD3+SuRvJvpMgojEi80Duu/tn2b4SrHC2BHwWCI4hDk 24V/NFt0PXEtI2mJtZUoFzGTiPJpkO/QD+7um5W6RQLXXgAVW+3Jqg/NN5HkNgdjAM VAygE/iv2o/4w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHQ3YzCz9rxG; Thu, 20 Aug 2026 00:05:54 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:55 +0000 Subject: [PATCH v5 3/6] 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: <20260820-rtc_s35390a_int1-v5-3-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=1828; i=markus.probst@posteo.de; h=from:subject:message-id; bh=6wArxx1l8Hm9Dqx4mugbk8wsFGsXoxVI7ksSr89OEeg=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqhii9YLrqs/dKBd8cfPWA8rwuro+U77eFyuWKR DyMiGcwjASJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovRsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9L+AA/+KhBirOqiBrWG++h2k1DQLyLptuSiCmh R3uw1NmU13LIIdFxDZVzAGqcwEb7kmhRv+DG9TNDeEHF5GYnq/3af8Q+6KYOH/v/7iT036rSPMR klsqC+dI5ZaRNvHA92d58mf5DxK+ajpIqYtS2SlLzR9ekBwchGqQ+O2N4dVoaf9zC6sHiqGoyQg 0UFmvgDfKdVrQEZIsR3KaN1KT/+z4yFdxylHibL8nWt0S+5RZwANOl8JCMoLowgPrKs1hjDG4DA E7TxP4/pFuOxUGgZ68OxJydes8YrVazVNzaDkP+PwATrpSANOPWcS+8BNDfnryKfYaUbq1GBdZA PN+REqWdn4ojFF8uYczs2FcMbpKxC4XAQANclscnxsUOwxqaRZcFYGZGA2gWwyq66Ykt/twGn4X FYEI9Gz9JFDLZyFmHA+muZ9z3i/pJvrsM4eldL6ymn2rwL58SmZf1raPgTDLC35sX1O0u7S+uGz uNtHzqMDbg3Cxaqggvz3+Grgv1kAzw7YAZjJ2W5IR9qOS0Hf+t2MG0GNvPNJl5rZf9UZgMD9xsk piTxwfo5/CLHy0Q25yFvHjp+l63CFhx0LIHA2DSCp5cF/Wo/bD0wx0GW5qLlIaGLzEWMCPYM+xk PvlGnOxoSo4Ydx2dMARSHNybXGJpYjr5oLNhisXY0Q70zb1OALrw= 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. 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 | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index 4cfe7034c516..575bb256eb25 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -270,6 +270,24 @@ static int s35390a_rtc_read_time(struct device *dev, s= truct rtc_time *tm) 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); + u8 sts; + int err; + + if (enabled) + sts =3D S35390A_INT2_MODE_ALARM; + else + sts =3D S35390A_INT2_MODE_NOINTR; + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); + if (err < 0) + return err; + + return 0; +} + static int s35390a_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *al= m) { struct i2c_client *client =3D to_i2c_client(dev); @@ -410,11 +428,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 Mon Sep 28 16:23:31 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 D06EC3E2771 for ; Wed, 19 Aug 2026 22:05:59 +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=1787177163; cv=none; b=vCwHnFoIYdXUMX2LoCSo7lWL16H7atudta51z8edz7F2dVq4L6Hbm3Y+podpy6ssX3Wa/1HsK0qHn8UnssOmO/DikTB94dnb7mKDLd7cv7HPtH+2YNT4vVZpXM5z42/jFiCauHvzXPmB/FiQfEd01EcnFxtDeB868+JSFVSoJhI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177163; c=relaxed/simple; bh=ANPqvCRGwc3kfpGV3566usZnTG0fF7b/v30Ov/cXTYw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jSRN0exPXFvPYk5MUl/16r//avdbHJEyuYA2NVWimjqahZPGjC3ZXaaI/rqmY9L8p1Z8QIe78kt3/+gRV25LR+40A9iGo84+Zzo5gShLxJ7LalBcfHCYORLC2Xd0aoFndMmTcu+2kFTiSZSZVd24dkTE/8U0E2jUzJQNwPMv0tc= 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=Z7I2z3ee; 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="Z7I2z3ee" Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 3FFE7240103 for ; Thu, 20 Aug 2026 00:05:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177157; bh=7qkqme4rz5RuKO+2sV66ykbV33lOIbDA2sred83QjpY=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=Z7I2z3ee07VDR4Z6L/yA0PqHpZcwLa2VsnAJLUm+8r98oH+xEsNw522ChUz6uXOPk Dj/cTsQ0RPftrPAYn8r0ktYL6yIJra8LLkkFZkgBHYrT0ng+ltMkfQKyIfiECQcKD8 QlaYpMW3vshifLiU8ynGuVDOy/ODi6jvT4/0oMhoKne6DPW+0xb3MbVfn4d2Iq+zUj sopNcvE+eQCKjzuo5xlH/eh+XJfM8KQREhpTYaNs2YGqSyj18RmYr5jKTs4EsS6Biq DUWbLQ7tHWJrdOtimo6SRdFQXjZgKld4GSPDA1SQesZ+Yemgy1knypMIy77eb9XNH/ az/VQOFwTymaQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHR48SMz9rxL; Thu, 20 Aug 2026 00:05:55 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:56 +0000 Subject: [PATCH v5 4/6] rtc: s35390a: force 24-hour mode 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: <20260820-rtc_s35390a_int1-v5-4-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=4920; i=markus.probst@posteo.de; h=from:subject:message-id; bh=ANPqvCRGwc3kfpGV3566usZnTG0fF7b/v30Ov/cXTYw=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqhii98Tb8rcTDsMiljgH87mfpa3y8zAyqeAFoY YQ1TsrsoImJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovRsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9JOmw/7B+PtXu+rO1dortPSY7miqoP1+eAUWIg 5z3Eke7tOMGIqR7Kc0A5wVF8Qqd+pHUt1YOTbyewxUqnzwGW/mCFFlp8x6FheEXIKbo3kpAsOh2 yBWGuBR8V6EAq2AEviFLMG6OleSD1fS1jvhk04BLLrUnp5t86xZsk+2H2QPG5BRs881UU4PKGWD D2rsqBizUqSpx1dckb2OPI62cRAL59K+DSYcpcZRlHWfepioFFyhzyDV6a8oDW+kZNTJ2KAWBRd PMj+oxAIsHbUzFTrIYyG2gT6HuZmD/0eXRk7v5ZnCSwOnB3Hwo9GBhMfrVFUfK4lelzD3rmv/1O 5g30xZByjFQFERDcTNMvRhO86+ypAIPatby3hsZVuc4XqpjFbA8wIfSHrTWjsOa1IPJQSeZobsl ijc/bqA4bkAI2QkhGxbmZQic9Lm6yp8yyROt7soGVnYF2dZTTOWKqqui3VenVF8o3kj566W/8ss gHUf4ulY9WA6qb2WVGicGUgeDA2gbVX9OclReWV7NIQB9laAvkubKJjou3f/GPi8oDVATc9Wfyu /AoKauEujQb+vgO57PH7PffKtFxeH6qnWJUuSnkIwF+KXZ1oMx88RrjExXugiKmviQllE72QBZX ZFAtcoObPcfKIXPxXQ61DVbtiIGkh9mzZVbEQGQJCSl5Q6IwXEd0= 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 Instead of trying to remember the current 12/24-hour mode, which could result in time corruption if out of sync, we force the use of the 24-hour mode. Set to 24-hour mode if in 12-hour mode on startup and assume 24-hour mode. The 24-hour mode is already forced on reset. Signed-off-by: Markus Probst --- drivers/rtc/rtc-s35390a.c | 67 +++++++++++++++++++++----------------------= ---- 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index 575bb256eb25..b34a3f7e8476 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -64,7 +64,6 @@ MODULE_DEVICE_TABLE(of, s35390a_of_match); =20 struct s35390a { struct i2c_client *client[8]; - int twentyfourhour; }; =20 static int s35390a_set_reg(struct s35390a *s35390a, int reg, u8 *buf, int= len) @@ -181,31 +180,6 @@ static int s35390a_disable_test_mode(struct s35390a *s= 35390a) return s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)); } =20 -static char s35390a_hr2reg(struct s35390a *s35390a, int hour) -{ - if (s35390a->twentyfourhour) - return bin2bcd(hour); - - if (hour < 12) - return bin2bcd(hour); - - return 0x40 | bin2bcd(hour - 12); -} - -static int s35390a_reg2hr(struct s35390a *s35390a, char reg) -{ - unsigned hour; - - if (s35390a->twentyfourhour) - return bcd2bin(reg & 0x3f); - - hour =3D bcd2bin(reg & 0x3f); - if (reg & 0x40) - hour +=3D 12; - - return hour; -} - static int s35390a_rtc_set_time(struct device *dev, struct rtc_time *tm) { struct i2c_client *client =3D to_i2c_client(dev); @@ -225,7 +199,7 @@ static int s35390a_rtc_set_time(struct device *dev, str= uct rtc_time *tm) buf[S35390A_BYTE_MONTH] =3D bin2bcd(tm->tm_mon + 1); buf[S35390A_BYTE_DAY] =3D bin2bcd(tm->tm_mday); buf[S35390A_BYTE_WDAY] =3D bin2bcd(tm->tm_wday); - buf[S35390A_BYTE_HOURS] =3D s35390a_hr2reg(s35390a, tm->tm_hour); + buf[S35390A_BYTE_HOURS] =3D bin2bcd(tm->tm_hour); buf[S35390A_BYTE_MINS] =3D bin2bcd(tm->tm_min); buf[S35390A_BYTE_SECS] =3D bin2bcd(tm->tm_sec); =20 @@ -256,7 +230,7 @@ static int s35390a_rtc_read_time(struct device *dev, st= ruct rtc_time *tm) =20 tm->tm_sec =3D bcd2bin(buf[S35390A_BYTE_SECS]); tm->tm_min =3D bcd2bin(buf[S35390A_BYTE_MINS]); - tm->tm_hour =3D s35390a_reg2hr(s35390a, buf[S35390A_BYTE_HOURS]); + tm->tm_hour =3D bcd2bin(buf[S35390A_BYTE_HOURS] & 0x3f); tm->tm_wday =3D bcd2bin(buf[S35390A_BYTE_WDAY]); tm->tm_mday =3D bcd2bin(buf[S35390A_BYTE_DAY]); tm->tm_mon =3D bcd2bin(buf[S35390A_BYTE_MONTH]) - 1; @@ -325,8 +299,7 @@ static int s35390a_rtc_set_alarm(struct device *dev, st= ruct rtc_wkalrm *alm) else buf[S35390A_ALRM_BYTE_WDAY] =3D 0; =20 - buf[S35390A_ALRM_BYTE_HOURS] =3D s35390a_hr2reg(s35390a, - alm->time.tm_hour) | 0x80; + buf[S35390A_ALRM_BYTE_HOURS] =3D bin2bcd(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) @@ -381,8 +354,7 @@ static int s35390a_rtc_read_alarm(struct device *dev, s= truct rtc_wkalrm *alm) =20 if (buf[S35390A_ALRM_BYTE_HOURS] & 0x80) alm->time.tm_hour =3D - s35390a_reg2hr(s35390a, - buf[S35390A_ALRM_BYTE_HOURS] & ~0x80); + bcd2bin(buf[S35390A_ALRM_BYTE_HOURS] & 0x3f); =20 if (buf[S35390A_ALRM_BYTE_MINS] & 0x80) alm->time.tm_min =3D bcd2bin(buf[S35390A_ALRM_BYTE_MINS] & ~0x80); @@ -459,7 +431,7 @@ static int s35390a_probe(struct i2c_client *client) unsigned int i; struct s35390a *s35390a; struct rtc_device *rtc; - u8 buf, status1; + u8 buf, status1, time[7]; struct device *dev =3D &client->dev; struct nvmem_config nvmem_cfg =3D { .name =3D "s35390a_nvram", @@ -503,10 +475,31 @@ static int s35390a_probe(struct i2c_client *client) return err_read; } =20 - if (status1 & S35390A_FLAG_24H) - s35390a->twentyfourhour =3D 1; - else - s35390a->twentyfourhour =3D 0; + if (!(status1 & S35390A_FLAG_24H) && err_read !=3D 1) { + unsigned int hour; + + status1 |=3D S35390A_FLAG_24H; + + err =3D s35390a_get_reg(s35390a, S35390A_CMD_TIME1, time, sizeof(time)); + if (err < 0) + return dev_err_probe(dev, err, "reading 12-hour time failed\n"); + + /* converting to 24-hour time */ + time[S35390A_BYTE_HOURS] =3D bitrev8(time[S35390A_BYTE_HOURS]); + hour =3D bcd2bin(time[S35390A_BYTE_HOURS] & 0x3f); + if (time[S35390A_BYTE_HOURS] & 0x40) + hour +=3D 12; + + time[S35390A_BYTE_HOURS] =3D bitrev8(bin2bcd(hour)); + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS1, &status1, sizeof(s= tatus1)); + if (err < 0) + return dev_err_probe(dev, err, "setting 24-hour mode failed\n"); + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_TIME1, time, sizeof(time)); + if (err < 0) + return dev_err_probe(dev, err, "setting 24-hour time failed\n"); + } =20 if (status1 & S35390A_FLAG_INT2) { /* disable alarm (and maybe test mode) */ --=20 2.54.0 From nobody Mon Sep 28 16:23:31 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 9E75E42A96 for ; Wed, 19 Aug 2026 22:06:00 +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=1787177164; cv=none; b=ceQaIGdh5InNsxatTh5drPgMsFYqeXQhStj8CaS/eiyHuaekC8bHqeDurSgbTY9cw9RDxyhMwepuEww+IXW5gSSESI6dK5yvURtMc4TFN3owo5hZcoAsuN7i4yqKh48vwEig4tKGW33KXbg8jhk8rphzxzoGmVXwT8F09VoZ19U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177164; c=relaxed/simple; bh=ppnCoOV/U3lAOwtjCUt5q5coeJAXavArGDhIT5Mq6ww=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SF48rdK2oR8Jp5QXpdtZGHjUY137QQHM37AC/nYcT+vYkIdHH5jHTIF+ni9ZX51Bu0JPg8ASJkM9bRLclktWEVUQv+rBuwyXVt/YnXoEEy6pYkvRouCYg4rrMtelPTfDfboNN/hOsHGeLwrFRtvIivVVQhV/THvdwOmizos0f7o= 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=KIknZ3UL; 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="KIknZ3UL" Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 6070C240105 for ; Thu, 20 Aug 2026 00:05:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177158; bh=ORskablGEFKqThfh4GZ9dQdte89qsFIeUrDqS62dD2c=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=KIknZ3ULee6yzDXxC86Ztj7cQqs3aY0CxnuYAPC9PHC/xb9+TniKTa5TBTPP3zUbQ TBKmiInLKsoZtW9sR7Ts0T03qTvc8XXKVIwk4lfETd53buBQ0cwCQT+fEgoRHe3CMo HhgLz1Sm3ggmR0i7N194ZshsWNqGwDtHBjGqiwVSSTzgcGLkYfXlI/wkFTfuV/B26a 1+AK0dXIcCUn7yE58rF2IqTAV8ynYG7r3DEAX2u9ZCfI6mvAPv4QA9IWs3kJBTtQpL xbyP1zcp9NBo1qWYfOq8z9yj0Ske/UrCc1OcXmB6srqKoG2S4lS+/enu2aeg/vmFTe K0O68Ej3a9yNQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHS3zDBz9rxG; Thu, 20 Aug 2026 00:05:56 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:57 +0000 Subject: [PATCH v5 5/6] 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: <20260820-rtc_s35390a_int1-v5-5-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=19268; i=markus.probst@posteo.de; h=from:subject:message-id; bh=ppnCoOV/U3lAOwtjCUt5q5coeJAXavArGDhIT5Mq6ww=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqhii9ci75Y2q2QaILS2q0b6OBT51t/HRdJnLQP PlbhMk26WWJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovRsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9IJ2g//aNkRbsTtEugjohKRdBjhz10v08Hcb+Y hIpZ/Y8I4Bi3Iu5iyoLNxpgUJvZbBakU7luihAcYL/6H76l2QaZuUc/dxoW8aIdTfMJ2Hz5dDBS YZpu4D1HOvIlidxCEHLFvqbWj8hzk/UOrq4VXO2ApsYyU1Eh03zj4rHioQIyRRsAsMlQbp6Iah+ XPQotxl76oOKg0d4SO4mKhHi136ZN+a/JOPLSawdT6ZHkDWtife6vdf3ZzPl/ElOpdirsrpu+zP rjXtpcqt4/XTPyKfl0EKCDP9MVBvocVzx7nhf762q1bnBH7aKb21pgcRXFygUAJAzkGylZOiTav SbN114w+6KczLufNwM65/wQKnu35PDrF9Pkj0S9yu5ypAOw3imrj5+ddVfMLeIS9pTYLvzO9QS8 FmmiqnCTNHQa7LV9v5PhgPDs6pFkj770ZEC5JHcxjl40StxmZwOwONWf/2kf9SHYB5pw3cd4jON SjZ1tBCiXW1y/W2ulbIHGPri2MsNNOlKuIayFRaEbhqr3ToY/ty1y/n04olPzeYN1NOvIiWCRs0 6ENI8tbmEjmplMFtU1+CtWPBDoz3UEgUqSaypwgQkPovmBVUD/UUgajjowNjLBZP3vr91z06zV/ eYiZ9r+Turin9w5OECwlrPfDCAsMSFU5dRKWUT3wa+gig43YAq8s= X-Developer-Key: i=markus.probst@posteo.de; a=openpgp; fpr=827418C4F4AC58E77230C47334761FF8E7AD43D2 Autocrypt: addr=markus.probst@posteo.de; prefer-encrypt=mutual; keydata=xsFNBGiDvXgBEADAXUceKafpl46S35UmDh2wRvvx+UfZbcTjeQOlSwKP7YVJ4JOZrVs93qReNLkO WguIqPBxR9blQ4nyYrqSCV+MMw/3ifyXIm6Pw2YRUDg+WTEOjTixRCoWDgUj1nOsvJ9tVAm76Ww+ /pAnepVRafMID0rqEfD9oGv1YrfpeFJhyE2zUw3SyyNLIKWD6QeLRhKQRbSnsXhGLFBXCqt9k5JA RhgQof9zvztcCVlT5KVvuyfC4H+HzeGmu9201BVyihJwKdcKPq+n/aY5FUVxNTgtI9f8wIbmfAja oT1pjXSp+dszakA98fhONM98pOq723o/1ZGMZukyXFfsDGtA3BB79HoopHKujLGWAGskzClwTjRQ xBqxh/U/lL1pc+0xPWikTNCmtziCOvv0KA0arDOMQlyFvImzX6oGVgE4ksKQYbMZ3Ikw6L1Rv1J+ FvN0aNwOKgL2ztBRYscUGcQvA0Zo1fGCAn/BLEJvQYShWKeKqjyncVGoXFsz2AcuFKe1pwETSsN6 OZncjy32e4ktgs07cWBfx0v62b8md36jau+B6RVnnodaA8++oXl3FRwiEW8XfXWIjy4umIv93tb8 8ekYsfOfWkTSewZYXGoqe4RtK80ulMHb/dh2FZQIFyRdN4HOmB4FYO5sEYFr9YjHLmDkrUgNodJC XCeMe4BO4iaxUQARAQABzRdtYXJrdXMucHJvYnN0QHBvc3Rlby5kZcLBkQQTAQgAOxYhBIJ0GMT0 rFjncjDEczR2H/jnrUPSBQJog714AhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEDR2 H/jnrUPSgdkQAISaTk2D345ehXEkn5z2yUEjaVjHIE7ziqRaOgn/QanCgeTUinIv6L6QXUFvvIfH 1OLPwQ1hfvEg9NnNLyFezWSy6jvoVBTIPqicD/r3FkithnQ1IDkdSjrarPMxJkvuh3l7XZHo49GV HQ8i5zh5w4YISrcEtE99lJisvni2Jqx7we5tey9voQFDyM8jxlSWv3pmoUTCtBkX/eKHJXosgsuS B4TGDCVPOjla/emI5c9MhMG7O4WEEmoSdPbmraPw66YZD6uLyhV4DPHbiDWRzXWnClHSyjB9rky9 lausFxogvu4l9H+KDsXIadNDWdLdu1/enS/wDd9zh5S78rY2jeXaG4mnf4seEKamZ7KQ6FIHrcyP ezdDzssPQcTQcGRMQzCn6wP3tlGk7rsfmyHMlFqdRoNNv+ZER/OkmZFPW655zRfbMi0vtrqK2Awm 9ggobb1oktfd9PPNXMUY+DNVlgR2G7jLnenSoQausLUm0pHoNE8TWFv851Y6SOYnvn488sP1Tki5 F3rKwclawQFHUXTCQw+QSh9ay8xgnNZfH+u9NY7w3gPoeKBOAFcBc2BtzcgekeWS8qgEmm2/oNFV G0ivPQbRx8FjRKbuF7g3YhgNZZ0ac8FneuUtJ2PkSIFTZhaAiC0utvxk0ndmWFiW4acEkMZGrLaM L2zWNjrqwsD2zsFNBGiDvXgBEADCXQy1n7wjRxG12DOVADawjghKcG+5LtEf31WftHKLFbp/HArj BhkT6mj+CCI1ClqY+FYU5CK/s0ScMfLxRGLZ0Ktzawb78vOgBVFT3yB1yWBTewsAXdqNqRooaUNo 8cG/NNJLjhccH/7PO/FWX5qftOVUJ/AIsAhKQJ18Tc8Ik73v427EDxuKb9mTAnYQFA3Ev3hAiVbO 6Rv39amVOfJ8sqwiSUGidj2Fctg2aB5JbeMln0KCUbTD1LhEFepeKypfofAXQbGwaCjAhmkWy/q3 IT1mUrPxOngbxdRoOx1tGUC0HCMUW1sFaJgQPMmDcR0JGPOpgsKnitsSnN7ShcCr1buel7vLnUMD +TAZ5opdoF6HjAvAnBQaijtK6minkrM0seNXnCg0KkV8xhMNa6zCs1rq4GgjNLJue2EmuyHooHA4 7JMoLVHcxVeuNTp6K2+XRx0Pk4e2Lj8IVy9yEYyrywEOC5XRW37KJjsiOAsumi1rkvM7QREWgUDe Xs0+RpxI3QrrANh71fLMRo7LKRF3Gvw13NVCCC9ea20P4PwhgWKStkwO2NO+YJsAoS1QycMi/vKu 0EHhknYXamaSV50oZzHKmX56vEeJHTcngrM8R1SwJCYopCx9gkz90bTVYlitJa5hloWTYeMD7FNj Y6jfVSzgM/K4gMgUNDW/PPGeMwARAQABwsF2BBgBCAAgFiEEgnQYxPSsWOdyMMRzNHYf+OetQ9IF AmiDvXgCGwwACgkQNHYf+OetQ9LHDBAAhk+ab8+WrbS/b1/gYW3q1KDiXU719nCtfkUVXKidW5Ec Idlr5HGt8ilLoxSWT2Zi368iHCXS0WenGgPwlv8ifvB7TOZiiTDZROZkXjEBmU4nYjJ7GymawpWv oQwjMsPuq6ysbzWtOZ7eILx7cI0FjQeJ/Q2baRJub0uAZNwBOxCkAS6lpk5Fntd2u8CWmDQo4SYp xeuQ+pwkp0yEP30RhN2BO2DXiBEGSZSYh+ioGbCHQPIV3iVj0h6lcCPOqopZqyeCfigeacBI0nvN jHWz/spzF3+4OS+3RJvoHtAQmProxyGib8iVsTxgZO3UUi4TSODeEt0i0kHSPY4sCciOyXfAyYoD DFqhRjOEwBBxhr+scU4C1T2AflozvDwq3VSONjrKJUkhd8+WsdXxMdPFgBQuiKKwUy11mz6KQfcR wmDehF3UaUoxa+YIhWPbKmycxuX/D8SvnqavzAeAL1OcRbEI/HsoroVlEFbBRNBZLJUlnTPs8ZcU 4+8rq5YX1GUrJL3jf6SAfSgO7UdkEET3PdcKFYtS+ruV1Cp5V0q4kCfI5jk25iiz8grM2wOzVSsc l1mEkhiEPH87HP0whhb544iioSnumd3HJKL7dzhRegsMizatupp8D65A2JziW0WKopa1iw9fti3A aBeNN4ijKZchBXHPgVx+YtWRHfcm4l8= OpenPGP: url=https://posteo.de/keys/markus.probst@posteo.de.asc; preference=encrypt Allow configuration of pin functions, including: - keeping the previous configured function - disabling output - waking up the system - minute periodical interrupt (1: 50% duty, 2: 7.81 ms) If no function has been configured, fallback to previous behaviour. Signed-off-by: Markus Probst --- drivers/rtc/Kconfig | 2 + drivers/rtc/rtc-s35390a.c | 383 ++++++++++++++++++++++++++++++++++++++----= ---- 2 files changed, 318 insertions(+), 67 deletions(-) diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 01def8231873..2d79710c4837 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -668,7 +668,9 @@ config RTC_DRV_RC5T619 =20 config RTC_DRV_S35390A tristate "Seiko Instruments S-35390A" + 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 b34a3f7e8476..bc783be1561e 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -12,11 +12,17 @@ #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 +42,38 @@ #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 */ + +#define S35390A_FUNC_IGNORE 0x00 +#define S35390A_FUNC_DISABLE 0x01 +#define S35390A_FUNC_WAKEUP 0x02 +#define S35390A_FUNC_CLOCK 0x03 +#define S35390A_FUNC_PMIN1 0x04 +#define S35390A_FUNC_PMIN2 0x05 + =20 static const struct i2c_device_id s35390a_id[] =3D { { .name =3D "s35390a" }, @@ -64,6 +89,10 @@ MODULE_DEVICE_TABLE(of, s35390a_of_match); =20 struct s35390a { struct i2c_client *client[8]; + struct rtc_device *rtc; + + struct mutex pinfunction_lock; /* lock preventing concurrent access of pi= n function */ + int pinfunction[2]; }; =20 static int s35390a_set_reg(struct s35390a *s35390a, int reg, u8 *buf, int= len) @@ -166,20 +195,6 @@ static int s35390a_read_status(struct s35390a *s35390a= , char *status1) return 0; } =20 -static int s35390a_disable_test_mode(struct s35390a *s35390a) -{ - u8 buf[1]; - - if (s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)) < 0) - return -EIO; - - if (!(buf[0] & S35390A_FLAG_TEST)) - return 0; - - buf[0] &=3D ~S35390A_FLAG_TEST; - return s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)); -} - static int s35390a_rtc_set_time(struct device *dev, struct rtc_time *tm) { struct i2c_client *client =3D to_i2c_client(dev); @@ -250,10 +265,25 @@ static int s35390a_rtc_alarm_irq_enable(struct device= *dev, unsigned int enabled u8 sts; int err; =20 - if (enabled) - sts =3D S35390A_INT2_MODE_ALARM; - else - sts =3D S35390A_INT2_MODE_NOINTR; + guard(mutex)(&s35390a->pinfunction_lock); + + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); + if (err < 0) + return err; + + if (enabled) { + if (s35390a->pinfunction[0] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT1_MODE_ALARM; + + if (s35390a->pinfunction[1] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT2_MODE_MASK) | S35390A_INT2_MODE_ALARM; + } else { + if (s35390a->pinfunction[0] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT_MODE_NOINTR; + + if (s35390a->pinfunction[1] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT2_MODE_MASK) | S35390A_INT_MODE_NOINTR; + } =20 err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); if (err < 0) @@ -266,7 +296,7 @@ static int s35390a_rtc_set_alarm(struct device *dev, st= ruct rtc_wkalrm *alm) { struct i2c_client *client =3D to_i2c_client(dev); struct s35390a *s35390a =3D i2c_get_clientdata(client); - u8 buf[3], sts =3D 0; + u8 buf[3], sts =3D 0, tmp; int err, i; =20 dev_dbg(&client->dev, "%s: alm is secs=3D%d, mins=3D%d, hours=3D%d mday= =3D%d, "\ @@ -274,26 +304,28 @@ 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->pinfunction_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->pinfunction[0] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT_MODE_NOINTR; + + if (s35390a->pinfunction[1] =3D=3D S35390A_FUNC_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 + /* clear pending interrupt (in STATUS1 only), if any */ + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &tmp, sizeof(tmp)); + if (err < 0) + return err; + if (alm->time.tm_wday !=3D -1) buf[S35390A_ALRM_BYTE_WDAY] =3D bin2bcd(alm->time.tm_wday) | 0x80; else @@ -308,10 +340,32 @@ 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)); + if (alm->enabled) { + /* set interrupt mode */ + if (s35390a->pinfunction[0] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT1_MODE_MASK) | S35390A_INT1_MODE_ALARM; + + if (s35390a->pinfunction[1] =3D=3D S35390A_FUNC_WAKEUP) + sts =3D (sts & ~S35390A_INT2_MODE_MASK) | S35390A_INT2_MODE_ALARM; =20 - return err; + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); + if (err < 0) + return err; + } + + if (s35390a->pinfunction[0] =3D=3D S35390A_FUNC_WAKEUP) { + err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT1_REG1, buf, sizeof(buf)= ); + if (err < 0) + return err; + } + + if (s35390a->pinfunction[1] =3D=3D S35390A_FUNC_WAKEUP) { + err =3D s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf)= ); + if (err < 0) + return err; + } + + return 0; } =20 static int s35390a_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *a= lm) @@ -319,24 +373,32 @@ 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->pinfunction_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->pinfunction[1] =3D=3D S35390A_FUNC_WAKEUP && + (sts & S35390A_INT2_MODE_MASK) =3D=3D S35390A_INT2_MODE_ALARM) { + reg =3D S35390A_CMD_INT2_REG1; + } else if (s35390a->pinfunction[0] =3D=3D S35390A_FUNC_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; 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 @@ -345,7 +407,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) @@ -425,13 +487,170 @@ 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 const struct pinctrl_pin_desc s35390a_pins_desc[] =3D { + PINCTRL_PIN(0, "int1"), + PINCTRL_PIN(1, "int2"), +}; + +static const unsigned int int1_pins[] =3D { 0 }; +static const unsigned int int2_pins[] =3D { 1 }; + +static const struct pingroup s35390a_pin_groups[] =3D { + PINCTRL_PINGROUP("int1_grp", int1_pins, ARRAY_SIZE(int1_pins)), + PINCTRL_PINGROUP("int2_grp", int2_pins, ARRAY_SIZE(int2_pins)), +}; + +static int s35390a_pinctrl_get_groups_count(struct pinctrl_dev *pctldev) +{ + return ARRAY_SIZE(s35390a_pin_groups); +} + +static const char *s35390a_pinctrl_get_group_name(struct pinctrl_dev *pctl= dev, + unsigned int group) +{ + return s35390a_pin_groups[group].name; +} + +static int s35390a_pinctrl_get_group_pins(struct pinctrl_dev *pctldev, uns= igned int selector, + const unsigned int **pins, unsigned int *npins) +{ + *pins =3D s35390a_pin_groups[selector].pins; + *npins =3D s35390a_pin_groups[selector].npins; + return 0; +} + +static const char * const all_groups[] =3D { "int1_grp", "int2_grp" }; +static const char * const int1_groups[] =3D { "int1_grp" }; + +static const struct pinfunction s35390a_functions[] =3D { + [S35390A_FUNC_IGNORE] =3D PINCTRL_PINFUNCTION("ignore", all_groups, ARRAY= _SIZE(all_groups)), + [S35390A_FUNC_DISABLE] =3D PINCTRL_PINFUNCTION("disable", all_groups, ARR= AY_SIZE(all_groups)), + [S35390A_FUNC_WAKEUP] =3D PINCTRL_PINFUNCTION("wakeup", all_groups, ARRAY= _SIZE(all_groups)), + [S35390A_FUNC_CLOCK] =3D PINCTRL_PINFUNCTION("clock", all_groups, ARRAY_S= IZE(all_groups)), + [S35390A_FUNC_PMIN1] =3D PINCTRL_PINFUNCTION("pmin1", all_groups, ARRAY_S= IZE(all_groups)), + [S35390A_FUNC_PMIN2] =3D PINCTRL_PINFUNCTION("pmin2", int1_groups, ARRAY_= SIZE(int1_groups)), +}; + +static int s35390a_pinctrl_get_functions_count(struct pinctrl_dev *pctldev) +{ + return ARRAY_SIZE(s35390a_functions); +} + +static const char *s35390a_pinctrl_get_function_name(struct pinctrl_dev *p= ctldev, + unsigned int selector) +{ + return s35390a_functions[selector].name; +} + +static int s35390a_pinctrl_get_function_groups(struct pinctrl_dev *pctldev= , unsigned int selector, + const char * const **groups, + unsigned int * const ngroups) +{ + *groups =3D s35390a_functions[selector].groups; + *ngroups =3D s35390a_functions[selector].ngroups; + return 0; +} + +static int s35390a_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned i= nt function, + unsigned int group) +{ + int err; + u8 status2, flag, mask; + struct s35390a *s35390a =3D pinctrl_dev_get_drvdata(pctldev); + + mask =3D group =3D=3D 0 ? S35390A_INT1_MODE_MASK : S35390A_INT2_MODE_MASK; + + guard(mutex)(&s35390a->pinfunction_lock); + + dev_dbg(&s35390a->client[0]->dev, "%s: function=3D%d group=3D%d\n", + __func__, function, group); + + if (function =3D=3D s35390a->pinfunction[group]) + return 0; + + if (function =3D=3D S35390A_FUNC_IGNORE) + goto end; + + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &status2, 1); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error reading status\n"); + return err; + } + + switch (function) { + case S35390A_FUNC_DISABLE: + case S35390A_FUNC_CLOCK: /* not implemented */ + status2 =3D (status2 & ~mask) | S35390A_INT_MODE_NOINTR; + break; + case S35390A_FUNC_WAKEUP: + flag =3D group =3D=3D 0 ? S35390A_INT1_MODE_ALARM : S35390A_INT2_MODE_AL= ARM; + + if ((status2 & mask) !=3D flag) + status2 =3D (status2 & ~mask) | S35390A_INT_MODE_NOINTR; + + break; + case S35390A_FUNC_PMIN1: + flag =3D group =3D=3D 0 ? S35390A_INT1_MODE_PMIN1 : S35390A_INT2_MODE_PM= IN1; + status2 =3D (status2 & ~mask) | flag; + break; + + /* INT1 only modes */ + case S35390A_FUNC_PMIN2: + if (group =3D=3D 1) + return -EINVAL; + + status2 =3D (status2 & ~mask) | S35390A_INT1_MODE_PMIN2; + break; + } + + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &status2, 1); + if (err < 0) { + dev_err(&s35390a->client[0]->dev, "error setting interrupts\n"); + return err; + } + +end: + s35390a->pinfunction[group] =3D function; + + return 0; +} + +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, + .get_group_pins =3D s35390a_pinctrl_get_group_pins, +#if IS_ENABLED(CONFIG_OF) + .dt_node_to_map =3D pinconf_generic_dt_node_to_map_all, + .dt_free_map =3D pinconf_generic_dt_free_map +#endif +}; + +static const struct pinmux_ops s35390a_pinmux_ops =3D { + .get_functions_count =3D s35390a_pinctrl_get_functions_count, + .get_function_name =3D s35390a_pinctrl_get_function_name, + .get_function_groups =3D s35390a_pinctrl_get_function_groups, + .set_mux =3D s35390a_pinctrl_set_mux, + .strict =3D true, +}; + +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, + .pmxops =3D &s35390a_pinmux_ops, + .owner =3D THIS_MODULE, +}; + static int s35390a_probe(struct i2c_client *client) { - int err, err_read; + int err; unsigned int i; struct s35390a *s35390a; struct rtc_device *rtc; - u8 buf, status1, time[7]; + struct pinctrl_dev *pctl; + u8 status1, status2, time[7]; + bool irq =3D false; struct device *dev =3D &client->dev; struct nvmem_config nvmem_cfg =3D { .name =3D "s35390a_nvram", @@ -442,6 +661,7 @@ static int s35390a_probe(struct i2c_client *client) .reg_read =3D s35390a_nvmem_read, .reg_write =3D s35390a_nvmem_write, }; + int fallback[ARRAY_SIZE(s35390a_pin_groups)]; =20 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) return -ENODEV; @@ -450,7 +670,11 @@ static int s35390a_probe(struct i2c_client *client) if (!s35390a) return -ENOMEM; =20 + mutex_init(&s35390a->pinfunction_lock); + memset(s35390a->pinfunction, -1, sizeof(s35390a->pinfunction)); + s35390a->client[0] =3D client; + i2c_set_clientdata(client, s35390a); =20 /* This chip uses multiple addresses, use dummy devices for them */ @@ -465,17 +689,13 @@ static int s35390a_probe(struct i2c_client *client) } } =20 - rtc =3D devm_rtc_allocate_device(dev); - if (IS_ERR(rtc)) - return PTR_ERR(rtc); - - err_read =3D s35390a_read_status(s35390a, &status1); - if (err_read < 0) { + err =3D s35390a_read_status(s35390a, &status1); + if (err < 0) { dev_err(dev, "error resetting chip\n"); - return err_read; + return err; } =20 - if (!(status1 & S35390A_FLAG_24H) && err_read !=3D 1) { + if (!(status1 & S35390A_FLAG_24H) && err !=3D 1) { unsigned int hour; =20 status1 |=3D S35390A_FLAG_24H; @@ -501,23 +721,28 @@ static int s35390a_probe(struct i2c_client *client) return dev_err_probe(dev, err, "setting 24-hour time failed\n"); } =20 + err =3D s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &status2, sizeof(st= atus2)); + if (err < 0) + return dev_err_probe(dev, err, "disabling alarm and test mode failed\n"); + + if (status1 & S35390A_FLAG_INT1) { + status2 =3D (status2 & ~S35390A_INT1_MODE_MASK) | S35390A_INT_MODE_NOINT= R; + irq =3D true; + } + 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; - } + status2 =3D (status2 & ~S35390A_INT2_MODE_MASK) | S35390A_INT_MODE_NOINT= R; + irq =3D true; } =20 - device_set_wakeup_capable(dev, 1); + status2 &=3D ~S35390A_FLAG_TEST; + err =3D s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &status2, sizeof(st= atus2)); + if (err < 0) + return dev_err_probe(dev, err, "disabling alarm and test mode failed\n"); + + 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; @@ -526,9 +751,33 @@ static int s35390a_probe(struct i2c_client *client) set_bit(RTC_FEATURE_ALARM_RES_MINUTE, rtc->features); clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features); =20 - if (status1 & S35390A_FLAG_INT2) + s35390a->rtc =3D rtc; + + device_set_wakeup_capable(dev, 1); + + if (irq) rtc_update_irq(rtc, 1, RTC_AF); =20 + err =3D devm_pinctrl_register_and_init(dev, &s35390a_pinctrl_desc, s35390= a, &pctl); + if (err) + return dev_err_probe(dev, err, "pinctrl register failed\n"); + + err =3D pinctrl_enable(pctl); + if (err) + return dev_err_probe(dev, err, "pinctrl enable failed\n"); + + /* If no pinmux function is defined in DT, fallback to previous behaviour= */ + fallback[0] =3D S35390A_FUNC_IGNORE; + fallback[1] =3D S35390A_FUNC_WAKEUP; + + for (i =3D 0; i < ARRAY_SIZE(s35390a_pin_groups); i++) { + if (s35390a->pinfunction[i] =3D=3D -1) { + err =3D s35390a_pinctrl_set_mux(pctl, fallback[i], i); + if (err) + return err; + } + } + nvmem_cfg.priv =3D s35390a; err =3D devm_rtc_nvmem_register(rtc, &nvmem_cfg); if (err) @@ -539,7 +788,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 Mon Sep 28 16:23:31 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 6A6223E2752 for ; Wed, 19 Aug 2026 22:06:01 +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=1787177163; cv=none; b=JsPStjw69+pVMLnHUooeMGcOvR9W+sh3uyZWfYMoHGEUNlss206ZMB9bmxfE2va+QXv0hdfK+hfvnZYqT9D+nB0W53lBkqvkmG7vhcGIKo5D75LHzYyM6CxcAXUcA5TdcZ8t45xuhaK2H8mxJEcnjzf5V9j0UUBD7xQ505UCXSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787177163; c=relaxed/simple; bh=KC10D+LFyyabPzwcfYGpsHkfyCMijf0xISzFbM4eGfA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TjuNNNezQEu5DJsW+I95BVXkEiIqQVOR+9bc/HMGgESQ6l/A3XvF3gVtFCtOKMUc/n9A5T4yWyBhXRifvghvlFNnr2LbFi9qz7/UzVfIiLZI7CvDXCSZSkkE43DF+l1+PhGDg8NIPJ73tFx+U0LIjXsjbm1Cbdp8eINoFOQ2cD8= 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=RlJ9plRx; 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="RlJ9plRx" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 2B601240029 for ; Thu, 20 Aug 2026 00:05:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1787177159; bh=7gM3KF+dBG0DIM5zaeP0iBymo3E6ezWlCjJmCMkudS8=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=RlJ9plRx+yr6QsYUrHsRzWjf5T1ywMuhvEH9/eKYKOdoPUzjktldCPAKUPVHYukOd jcn7hqJy7m6ZAzsqsdoAYtkQZAOw4hPS/cG9E3Yju/QKh3g66nbrinF6ky47N3WVIT z6fuAtEQ8HAbWc6Wkv1spII4Qj6FrkTWHo0saaYJ5Jr504puQgK2r7X6qdtKdWPmZX BfgcPUco2T87Lt9490UotGxKzIKYUgc6JGv3o6mnnLuYnWdYmTiUqXUtvYgCUkXaRr utV3pg5tv5uwbfumfPGxmxtuFjlUzqvcsl9+PBoj7eR7Bv9qvwUwxvRZPJdkLEcQve H68LmWoV853mw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hQLHT45z1z9rxK; Thu, 20 Aug 2026 00:05:57 +0200 (CEST) From: Markus Probst Date: Wed, 19 Aug 2026 22:05:58 +0000 Subject: [PATCH v5 6/6] 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: <20260820-rtc_s35390a_int1-v5-6-5eb4ef85c6a9@posteo.de> References: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@posteo.de> In-Reply-To: <20260820-rtc_s35390a_int1-v5-0-5eb4ef85c6a9@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 , Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Probst X-Developer-Signature: v=1; a=openpgp-sha256; l=1557; i=markus.probst@posteo.de; h=from:subject:message-id; bh=KC10D+LFyyabPzwcfYGpsHkfyCMijf0xISzFbM4eGfA=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqhii9jPrACFl3VM6vOHIXvNv35vkdRTAFR9Rth NvsFmrMnSeJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCaoYovRsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9I5Sg//VCKrvqTZtGR8Fdv89bA0hU18vVls4zq 3/DGYN0zv+Z6xEQP+iSKC93+7zw5Mntm2rxIxYKIkrTptJ1qU7lNcL49kJ8curVJ+y9mAgwnpxN S27Sokgi0fVagOhTY6MpSXjNqe7eM3aklawoYCQqYGxEOKPnTgbQ07lLL1ljWdmX4bcGMqAPkI9 kdWsa4qYeYPpZt0Iqun++RNok7Rovwe+ryqfbZJDyBtakvFTDFNE2DwnjnzibqQwwC7SeQmG41W EyMkeIk78SGK+XURnM+sW/K4kBJ6eP5Bp5vVfWZNj95htziV1Qvx8Z5yz/uSFwd/DPizkXHh/ik vP4ibyQxIHb9ywC2r6I9rrTVKga/cukien4vGNsPiYh8qtBDHyWVepGCyanma385A+cjBjDo7vH M4otpp97rUsQ1fe975k4IfENdKVHPFLBTGHZ1+bGmdelh9URBm3bFIENtzmFKbY8I2fuoYrpmbV n4fYSeq1Wmv97wHcjLDG/ZP72ubvV69GPDgYcza1TOiw9kAApUGrjU4BMWs1VijMX5IED6qgdPG XSHbmW41O69VgtdDmrYEQl+2+OFzWidZ8eOcwCgR507bUT/KSs8oKUvAOLVPg0Ln8YnE9qeKFS1 k3WR1KyCSjRFH2L6y+z8lbp++LLC9+WdjEljxCwuYHrrtW3RnPTc= 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 pinmux function has been configured in devicetree and dmi sys vendor matches "Synology Inc.". Signed-off-by: Markus Probst --- drivers/rtc/rtc-s35390a.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index bc783be1561e..72bb3aea1956 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 @@ -767,8 +768,18 @@ static int s35390a_probe(struct i2c_client *client) return dev_err_probe(dev, err, "pinctrl enable failed\n"); =20 /* If no pinmux function is defined in DT, fallback to previous behaviour= */ - fallback[0] =3D S35390A_FUNC_IGNORE; - fallback[1] =3D S35390A_FUNC_WAKEUP; + + if (dmi_match(DMI_SYS_VENDOR, "Synology Inc.")) { + /* + * Synology uses interrupt signal 1 for wakeup. Since pinctrl cannot be + * configured on ACPI, we check against the dmi sys vendor. + */ + fallback[0] =3D S35390A_FUNC_WAKEUP; + fallback[1] =3D S35390A_FUNC_DISABLE; + } else { + fallback[0] =3D S35390A_FUNC_IGNORE; + fallback[1] =3D S35390A_FUNC_WAKEUP; + } =20 for (i =3D 0; i < ARRAY_SIZE(s35390a_pin_groups); i++) { if (s35390a->pinfunction[i] =3D=3D -1) { --=20 2.54.0