From nobody Wed Aug 26 09:51:17 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 6FD523CFF61 for ; Wed, 5 Aug 2026 19:32:29 +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=1785958351; cv=none; b=M0XFz5Yqdhy+0OrjQtuIs+4tcCGeUoL/gFKwoRIZeKmM1CmrBiIuPXDP7slFVCRO0/7m05xpGlhcX8GQIEv2Tp9PFK/N9nG2EfqzEHoMKgp09cnFmcwJqYtd3MXHw43K8nXlURi3N/seaNkPGg1/ksxmwcBzWX+Fv0dLbMZQcpM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785958351; c=relaxed/simple; bh=ipSRT20Aft1lwNt8pGJiWIzMDKcRjF8APfy0A6t7JtE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RvvY6ayoYX9J/DksfnK5oyAiLm5x935/LNu/lLmZ6b/6+F4vuSkM3f2PklYiOLDWdIPXHkQw0Z+Nczme+Cv950DR8UwhN3h5XmWD0mIqybc2vsdT0t9iGse+tLLNTyGQsRhHzcbYdDsjxbgCvh83C+lf67Wgq0qm1TXencgMLKk= 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=ZpI2V5KA; 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="ZpI2V5KA" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id C636B24002A for ; Wed, 5 Aug 2026 21:32:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785958347; bh=uv9tpj0u3TV1pFJXvO27WgfoME45rFUWLiaBnkzAOVg=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=ZpI2V5KANcZ98l00rTt/YRVt0pPbruhiTu4goB7664UwFp9VaXu63feYbVRHTtqsk m5aRKA000WeL9pesKSqaXshuHi/KpVBauMhEvMsb824m0+UufbBnOYStBO8h5Ud0i+ h/bg1fXl08/r15AmtLF8WjvSmi/Mm0pjrckQ6DwGB7kWeE26lZZPjkf7BfubifX6MI OOexGP3zZVtfQqPyDuhxhOrV1eSRb4NtnXQRfgmAA2Y2omBe3C8U9e4li0pw/g+cJs R+GDBpP2V7GNw+WVVE/XkM+a/N6D4GvvKyF+uJ6yElGr19txsS/8X8PekVTb3WJqu2 uZtlPKQmHiWoA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hFgXn6D8cz6tsf; Wed, 5 Aug 2026 21:32:25 +0200 (CEST) From: Markus Probst Date: Wed, 05 Aug 2026 19:32:27 +0000 Subject: [PATCH v3 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: <20260805-rtc_s35390a_int1-v3-1-e836faba3e25@posteo.de> References: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@posteo.de> In-Reply-To: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@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=4709; i=markus.probst@posteo.de; h=from:subject:message-id; bh=ipSRT20Aft1lwNt8pGJiWIzMDKcRjF8APfy0A6t7JtE=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqc4/GvRHM9pIroPXsxpkEUdnzHAaOYRPl4VqRN wrJ3dUFkfSJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCanOPxhsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9L3Mw/+OeXDQ+lfWx7YJjH8kh3pj4JnXJDeX6f IC5mPjJ2TuhMdSZBeimNV/IOf0IdR47D76gkxJHG83uo0HBuXxijHMQW459jUE52nv0vkJefL6b QMSMChjK4cj0EMppNUEKf3aOY+UENAVeZDUEv9n4k3OjRCQ+e3vMPQV+Lj5Dy10Cwz9cAXePEfx ihaIVgNDF1ZnAFjfS9FI43a5EJYL5pdoxUDXERYbUkoRsTsFj2DHfq2jDpDJerKxQI45cg9+zUX QvaK1pd5PH+TSkwPq+AIKhKqu0tX0S4poS43VSZWcZp1wntXzkOW3sCcKWIoctX/OAa1z33x0Bn NLkGaK0VSVfBJcaqXZxMaBXkxu9drtELVZf26PH/5eJqUrOpuOj3MSCzsKcG4LkkcToHaXX9oPc ASW6Gz494Jd9ddr5o7NnHfc5dBGK2lFQAsX5oMars99aemPkDu2eXSR9AP9/LKjcCLJHLFc+E0L 9/Qp6X3wPWb1o8sPkYyqPOYGDs1RCXk5kx+wjYIYo2VVsELqq2lO0NtkrZELqclWJ71m9wJytyv BMHCdLlGceMrRcWTsnNET21jKcqGKz6PTMGPdTn8Y8zpVx2Ej9m3s+7dsHan1vzSlRW8wEPxWSK IYAqVpEMx3tveN054wFUEdXJNfrGnkFQmmy02fLtxgKkx0d574HU= 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 | 109 +++++++++++++++++= ++++ .../devicetree/bindings/rtc/trivial-rtc.yaml | 3 - MAINTAINERS | 1 + 3 files changed, 110 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..0355f17f233a --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/sii,s35390a.yaml @@ -0,0 +1,109 @@ +# 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 + 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: + - 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 - ... diff --git a/MAINTAINERS b/MAINTAINERS index 5114e6db7307..4c8bc35cfe55 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22695,6 +22695,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 --=20 2.54.0 From nobody Wed Aug 26 09:51:17 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 4369D3E009D for ; Wed, 5 Aug 2026 19:32:31 +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=1785958353; cv=none; b=VMB1b2og5SDN0ybvfP6+aV8t4m9JZGquIYEICZo9fYr1N0AAbf9xHIJMq01e+cqlXXXHyyUh3GveF2w2VLVLjAISxoEPXB4+i1+gLSIPu8EDRl2/7hjwu3TfxJf1nGt5MIMcPauSbd6R/BdifEU7N8IMp649vMVyk8ul0YS6TCg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785958353; 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=c4/vmHaMhk/OEVTbcVn53SEDQU/EQFAPWbxsydqlqSqm2uBPttpMEJBRIMW/mnlZxc5hN7Wj1xEb4gRhJoaCK+lNvDmK2qLNx7+SzKFJRmr/ndjYSTNDQwLhiSZ7Pxp13W1cG+N5wpUeTrRAMV2LeDTUF3beVxxSEjfvvD7tOjU= 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=FuTlU7JT; 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="FuTlU7JT" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 6BB9F240028 for ; Wed, 5 Aug 2026 21:32:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785958349; bh=RGGhD71B+UtcIgYaLVJcbUJD2ZD+NnVvBK4/H22TbeY=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=FuTlU7JTjmUnKdY36hITMVkJ/bfd6OsyvhVMij/Io7Qw/5BveToYtKeU+PXzoginA o6xejH2TQsONo6Yrvx9efl1yrTQpqG7T6mc5EQ6OOalqEQbvZVt52osz5RymaRup0L cz+fp5+f0lmL45yCDoCyC0znSIJY6OEKQT0okJEcFoM7CV+cQ3+6EoqH0y2fyvIM6Z j5Ut9tnRD5cKT57EK0lx67JZ25pJsPAwKfTXnD8lNocog2TS7OMVBBXX+zfwEOOePz 01xVFjR5g9yPIfTYbs5nfyJz4J6teiEJvc4YYVZo1kpWzMhsupp/hEOYYpG4LrW8Tm r8ZUJVa1vYHXA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hFgXq1XKwz6tvm; Wed, 5 Aug 2026 21:32:27 +0200 (CEST) From: Markus Probst Date: Wed, 05 Aug 2026 19:32:28 +0000 Subject: [PATCH v3 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: <20260805-rtc_s35390a_int1-v3-2-e836faba3e25@posteo.de> References: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@posteo.de> In-Reply-To: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@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/jnrUPSAcsmYgBqc4/G7EfqZNccKxYtSqjnpI9+IHIGF4H1V5VNp EjkP/pC1tiJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCanOPxhsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9JsqxAAkQCxPVweIxaNyw9d9KPe5kTJOl1IbDm /yZy6s3th5KYSADmu7yE9oTl5/9hFBFp8BZG0+UJUJbeMiL2sxgdFFt30uLr5+wVs1bBH8BF0GM +7GfklJsKOiCYrM9mv6OWCu/herTwCauuCSJgQ5Ur4WkrVaeSX8qhcE+54iwZEY+/TrLdDEYBUs 2evLkackGD0GOFlfE0vk7m9+i0BORgk1AqprJtFQiy1EbQwdaq/VeqCPC9qNf3fOIiupBjRKqiQ cv9SlS+BCJhMZ0HsUctZQ1gtagggWRwxcBVbG5Lf+V2m8ln+lCCuxS7FxtMrOkdGqey8V5NEPr+ Rp/vxjKkLHVDaN9G4CczvLppB27Gjqune/TE20I7HzNbv9c3hl2k4IGu/H+3wsrEHB+/oWJ8c+9 NcZzxw62lXzULDf1pzSAn8s2XAe4e3kLb9bmI3M2n3hFonf6uvvIwQALkyXvsyLaBQKFuTIATV7 /jRXgT3qd/1paj2OlZ2o0oygFersH++JBGi9WU5EPk53HNsq0txl5nSV6/zhRa3zjiIa9lhq267 WLFWk/izj8DnlQQDrAaWLcV9009XBcIOBnN1Ld6m0A73jcc0qEGKr9Z22ekK68zOvMu8//QId+6 OrSPVNnhXauUGKpoou+vr7PBkGMPMo6JZjKkBNftD9KpNh5l0F68= 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 Wed Aug 26 09:51:17 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 4B7093DCDB1 for ; Wed, 5 Aug 2026 19:32:33 +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=1785958357; cv=none; b=J+11VqgsWWJLS8JR/L3GGap1eUnfpAR4HsyyIQcUJcbYHNkRpU/Fg46Aok4vwljo19/R4cPQp9s95yJCYjXAA4Hj7g+hLG20+sk/8w9e68JGW4NUi2a1FC4ph7l3efoWhLT2CM+iFtXq6oNiwYBZpy04fKCNgdbj2zVecsWRApQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785958357; c=relaxed/simple; bh=6wArxx1l8Hm9Dqx4mugbk8wsFGsXoxVI7ksSr89OEeg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZFGAXcdX6inmomioyXapWjAEQ+0IZ5D4YOVi81uu919NZsuIp2lv3mAltA4W4zRHlIdxrfB7Iahp7Htr+D9iTvN7kJw4GxIw3395xIWvcm0lcPIMVqtZJx2goijHkUk/JcKEODNSt/dGlUCyUe6CIxn1U15hJmrZe3fQKRUXJh0= 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=MPpaXJ7d; 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="MPpaXJ7d" Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 01331240106 for ; Wed, 5 Aug 2026 21:32:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785958351; bh=/IrZMEnYMWz3cHmLNm2dkUh37mtplEA3JG88ye8+6jg=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=MPpaXJ7dL8XTPuXoxfNEQKbs5s0vMmZP7KSao8GaoNXC6rXgZiJzcDDr/bQ50r3B8 tSA7oW0nxEPe6YIJZrjV3fIZlE4fVo3QK7UaPgaqEqeboJbIXFGTGbuURCx6KeNm+Q kXzSrYZ4FKMAt9a+N73cgvnXveY+4hqNfpd90i4w3Xt4YzKYPo6Clbcs/1RdDRxFkW DFs1rS9eJJxe0wrmCI5wvCNe8GXNFcUd1YRaQsG4H+xdtlHEhCyWEfIRfm656rKq9p COUnerO2ZWkY/xA0joMfMCoYOBYeMcsInsDRPHj/XXUegQ59c0AjPEHc9tmRPwH41c tW+RXCamcTc5A== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hFgXr4lJpz6twf; Wed, 5 Aug 2026 21:32:28 +0200 (CEST) From: Markus Probst Date: Wed, 05 Aug 2026 19:32:29 +0000 Subject: [PATCH v3 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: <20260805-rtc_s35390a_int1-v3-3-e836faba3e25@posteo.de> References: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@posteo.de> In-Reply-To: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@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/jnrUPSAcsmYgBqc4/G8UFEgIUIj1dxW5fXqz5P2FhwjmUfsNPzG L3BQP87DfyJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCanOPxhsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9JkMQ//VUG7xlXHpcWrxeNCe/jaspdRDOeVzi8 ptENaq5YFWo4i2dsiIfEizlEusdgLNg1RfF0qlTfJ35L2c0ZAfJe54i2feKJOLInHMlCluHh/ia wpJG6RVDIGEP4slQQYd0jNU8VQuQYhG28ckK879WdcMFAH0DgAWidxWRT7c50znjTfWVoIFfA86 d+oommVuI+d0y2Gl588xQmsfJDXr3YJNdwZLS5x5RZ4ir16FWCte4bk80iP4SeL6W66I3ENGUxe EdP1K2gBYorQYWm7YKBpUeEDrvT7YPM9RKE3OxM8l+ZvJRHUGY50ltpz9FjaCeMtPhPk5cbltx0 jfPySCcF+AIFYijQ2RlRSlIxcqVqWVqMbhvwln8GeywNVhyucCKqdqQA+UKVk9z+7tme4+1m6eP 3VGUOiHlLyTjJGyyw+k2JmZHMx2tB4M8jdDDMJeolSgDycDihbTY85m8c3m2/Y+0nD4gldA+7zU KdCk+Pwmn0iD0lVRzkfumWlmYrgB6YeZg4gYLqt+srxXFeQ7Ccv6in03L65D8om2z1mNtQd+HIW FAyCS+VpGpqfwB/CTksG1ekYOY2QPTZM2auaH7A2VtT1ry8iQmGgywS6108afBIGOo6CsMlQRp5 F//zqehHOwsp7AAScuiQzWsqsV1kO8Zm/x8yAd9/lfGh4CiUY/VA= 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 Wed Aug 26 09:51:17 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 434D73CFF61 for ; Wed, 5 Aug 2026 19:32:38 +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=1785958366; cv=none; b=kvbmBLWFQ8QoGeCyuoAIkRSSdly2k2zSdjiCp82RVDSc4Wk3NnyrZxk9qI/dj209zKAK1G3KWEjdp+LNiCQ5Y00CsNWjE0G1BgMluiy7wbyuPf3mDZ57VQiMY8fEzKZZ3pNhayKHeUYasWZtqtForl6cBjOI6J0/EocBAvUIL+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785958366; c=relaxed/simple; bh=+IeJdobYk33kbrWcmPukzeecuTpw5d70OaILFXM9AWg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r14db3c7xN8ZnaLNO+yti6jljd2rc+w16kc7Gqtim+tQOLmUYVIHHeFa3krBUoPPfUB2elJmyvNgJuxLXScNogP1APqzD+Y2NYRYUz+mczvku1foWMXvpPEgbB2QgaUm/Dnr8pb45YsydnSvszBSot1xyhEGBFUxOLM+K/ssPpo= 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=M0i3nJs8; 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="M0i3nJs8" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 385DC240029 for ; Wed, 5 Aug 2026 21:32:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785958352; bh=w3OK+8XA5nJGzpoQM29xYb848dehbBe9QI/Kz3xljOs=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=M0i3nJs8++8Nbst6BcXxR9gwgpwGyP9KxBs9dC/pMxsvR80kMGPOKPwUQ4WMT7KJu 1qeizQOE0LirtDO/QeHHzpQ8H3Raq06bzADbzwTFuGvdRPVLC8ieZc00qXA3FT7hr3 3nz1uIhfkMxr+OJ9cCc28cfaI0JDt5FoNNxiMu1djEswGwnV/V4oEE7XTv9/JuHu2s t94lGP45r1KII8V2pBls0L4hysUJF+baZzTN9emMJNzhyQynC/F2REKJ7RfUVn7veQ EcU+yN7qQuNBSph3Yt5SbmjD+JCZnAOsP0fchMgY4egyVfld5gEHwf6Q4sIyH1DeBK 6jxhIvBZbde/g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hFgXt0Rmxz6trs; Wed, 5 Aug 2026 21:32:30 +0200 (CEST) From: Markus Probst Date: Wed, 05 Aug 2026 19:32:31 +0000 Subject: [PATCH v3 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: <20260805-rtc_s35390a_int1-v3-4-e836faba3e25@posteo.de> References: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@posteo.de> In-Reply-To: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@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=18472; i=markus.probst@posteo.de; h=from:subject:message-id; bh=+IeJdobYk33kbrWcmPukzeecuTpw5d70OaILFXM9AWg=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqc4/G/0NBQEKmo8gmwzYq1WgjEadrIvqiEsFf6 wJaKK2gghOJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCanOPxhsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9KOuw/9GTpx4U8ie41vKgRsCL0j1QspyCpfouy 8hTuBjNV4J5lnR66bnVyGkZp9JkO+pgsTT8eTS4gMFmYBTGl6/HS34e+CQwP6Hl9hYvIAOXhgV1 B1AgwjMtefG32ORBEm+sgd9eAvc7RfgvgBjL7Z7M9To0mJpDY24K/Bg00AhnssTWvWouWQhj/ZY bGBQaBpWi0zxggJJrv1kWhuv+P74eJsbKPevxTn8FF0qlyarltd5fWTRTHqlBQL5tuPPaAyCOJJ cXf4sUvsVtz9AmkV3PggiZsartH1AWJg8mLomYynFgoWhGYbZRwJRVVm0DtkdkojCS27xAz5JB0 2prduzAhKzqLLbJuGTBpNAb7ZKTXcNdn8EcsyWfBNBbvLOxXRZahMRvOosqDAvX56+QAPXTdDIa h58IzHK1Nu7yVG9gOTWClz5HydjMgLR3P7I0eGN8dPxXWG9DsycK1Q2wkt1UeLvnqqIA6IaULwa kjapUspg9zSKTOTFdaGOSqil+ENzoSgZTyIEek7U2X7ns2kJiW19f2N+VYLSAzwnIDecsc2+dI8 TeeoPQvxwnloTuRLwwyBpCLOfbebRtkjnqfFfbwYp+Yzl6zHrK/4UEiB5po2fAUc6f76IIuql/D tjte+QpfTCZqkfRgkEIUqaaW508OjjE2YYFBHzssSDQZXNLPcxK8= 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 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 | 1 + drivers/rtc/rtc-s35390a.c | 381 ++++++++++++++++++++++++++++++++++++++----= ---- 2 files changed, 320 insertions(+), 62 deletions(-) diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 01def8231873..4e0374129a4e 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -668,6 +668,7 @@ config RTC_DRV_RC5T619 =20 config RTC_DRV_S35390A tristate "Seiko Instruments S-35390A" + depends on PINCTRL select BITREVERSE help If you say yes here you will get support for the Seiko diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c index 575bb256eb25..d63bdeff8cdb 100644 --- a/drivers/rtc/rtc-s35390a.c +++ b/drivers/rtc/rtc-s35390a.c @@ -12,11 +12,16 @@ #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 +41,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,7 +88,11 @@ MODULE_DEVICE_TABLE(of, s35390a_of_match); =20 struct s35390a { struct i2c_client *client[8]; + struct rtc_device *rtc; int twentyfourhour; + + 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) @@ -276,10 +304,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) @@ -292,7 +335,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, "\ @@ -300,33 +343,35 @@ 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 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) @@ -335,10 +380,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; + + 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; + } =20 - return err; + return 0; } =20 static int s35390a_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *a= lm) @@ -346,24 +413,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 @@ -372,7 +447,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) @@ -453,13 +528,181 @@ 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 buf, status1, flag, mask; + bool update_irq =3D false; + 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, &buf, 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 */ + buf =3D (buf & ~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 ((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 group =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_FUNC_PMIN1: + flag =3D group =3D=3D 0 ? S35390A_INT1_MODE_PMIN1 : S35390A_INT2_MODE_PM= IN1; + buf =3D (buf & ~mask) | flag; + break; + + /* INT1 only modes */ + case S35390A_FUNC_PMIN2: + buf =3D (buf & ~mask) | S35390A_INT1_MODE_PMIN2; + 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 (update_irq) + rtc_update_irq(s35390a->rtc, 1, RTC_AF); + +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, +}; + +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; + struct pinctrl_dev *pctl; + u8 status1; struct device *dev =3D &client->dev; struct nvmem_config nvmem_cfg =3D { .name =3D "s35390a_nvram", @@ -470,6 +713,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; @@ -478,7 +722,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 */ @@ -493,39 +741,16 @@ 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 - err_read =3D s35390a_read_status(s35390a, &status1); - if (err_read < 0) { - dev_err(dev, "error resetting chip\n"); - return err_read; - } - - if (status1 & S35390A_FLAG_24H) - s35390a->twentyfourhour =3D 1; - else - s35390a->twentyfourhour =3D 0; - - 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); - rtc->ops =3D &s35390a_rtc_ops; rtc->range_min =3D RTC_TIMESTAMP_BEGIN_2000; rtc->range_max =3D RTC_TIMESTAMP_END_2099; @@ -533,8 +758,40 @@ 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) - rtc_update_irq(rtc, 1, RTC_AF); + s35390a->rtc =3D rtc; + + device_set_wakeup_capable(dev, 1); + + 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; + } + } + + err =3D s35390a_read_status(s35390a, &status1); + if (err < 0) { + dev_err(dev, "error resetting chip\n"); + return err; + } + + if (status1 & S35390A_FLAG_24H) + s35390a->twentyfourhour =3D 1; + else + s35390a->twentyfourhour =3D 0; =20 nvmem_cfg.priv =3D s35390a; err =3D devm_rtc_nvmem_register(rtc, &nvmem_cfg); @@ -546,7 +803,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 Wed Aug 26 09:51:17 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 257753CF976 for ; Wed, 5 Aug 2026 19:32:39 +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=1785958362; cv=none; b=S3U6aBowUm6vVOPWdoEcaSmrA31QejlanJVmLojd8Az7klg93IcPG3HiQbwnTrtzAkZpUnE1eGkotG+2SHJ3s+DGeDSAVqwM0P928sRht1q23B9+z59/sTc0Wr0owVlT6sa7rnFwNvhiEZ1bGHZk4vuJaFLav9Xv8zsr3e4k3cQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785958362; c=relaxed/simple; bh=nU4oKF0HljyU5+Oar3xvGQYP2KUrQWpDTVckxk3b1j0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ul4LXvbgpFZgIGrfzjO6IJDilwNNTnXe398EW7aLFR8O7qe7RxH1ifSja90Ar47eJzRqr5ZjN6aXCsEcby4FYGasKubLGt57k+7+lb/z9XOs7f6oqqi4hC1iJhic/fU36y1eROaZGeL+8xFYfZ4xTDcKcevqzbwPNY2feoMYbFg= 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=PjhBvV0c; 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="PjhBvV0c" Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id D2923240027 for ; Wed, 5 Aug 2026 21:32:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=1984.8680eb; t=1785958353; bh=wJomEUU5GTCCYKoO0xr3unuZpW1V4YnPiWHTeS/RIiQ=; h=From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:To:Cc:Autocrypt:OpenPGP:From; b=PjhBvV0ca8dWcb3U+40UvwDIstWCZMQj4WkdmjmhhYLoNfaFEvEBDVl8i/uMljp1E g2w+FrTezFBYAII26w3m/re8tzsvU55yhk5GluP3zaDluWO1oDQa02f9F992Up9iLL T2EjxYkMuw6BhoL7nDHF3WFmx6a+rTLHPGzPZM7Q0xf9oa3223B9I5ABwsOfU/nP30 6ZU/H2gvvD25s4fEVbFTNpdCQ1a7Qx5f75tSx+yNd5fI1WLJkxqlHBFsiuwoxB4yii lpXpGWvwKZZd1gwycasqJDSooM00z3bDabN4qqTLXWYWaa/Q92AcZx2fYVaCZGPa8V 9z+s3cawne9gg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4hFgXv59mYz6tvm; Wed, 5 Aug 2026 21:32:31 +0200 (CEST) From: Markus Probst Date: Wed, 05 Aug 2026 19:32:33 +0000 Subject: [PATCH v3 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: <20260805-rtc_s35390a_int1-v3-5-e836faba3e25@posteo.de> References: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@posteo.de> In-Reply-To: <20260805-rtc_s35390a_int1-v3-0-e836faba3e25@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=nU4oKF0HljyU5+Oar3xvGQYP2KUrQWpDTVckxk3b1j0=; b=owEBiQJ2/ZANAwAIATR2H/jnrUPSAcsmYgBqc4/GyQzzF6iNKyJaLLL+IyBR24UoJcQZxyBCZ kCOyyW0uGGJAk8EAAEIADkWIQSCdBjE9KxY53IwxHM0dh/4561D0gUCanOPxhsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQNHYf+OetQ9IITw//TVFw1lU39BGaxlnr/0PpFc1Yv+TME8E qSNW2XeehKOyzMjw7w4X0jkqLh9K10t0lDa9erv5yeXqDCF1XD236yK+g7igo2SidcuKu7GRi0r 6ua+J5lvSaAyrxuvNFd2PJYNT41eSS8hhbJNFnBneSDohEX7KxscpYauM5Msm4S9RDZQkt4sYvQ AQl1ZBWnKEWXOnSv3/YJKKpHAZ8OeECe7Iq4tz/mTNc1HiYpUjOhw8AVWYlCPNn6Lzz7IDN0pYw CBRBolLhB9RltyUnYmls0+mQfIntcduKMfqgSa/YJNMkJKogqTK4/dO5+3CA7roVwFYNWtYh5ef f1jVO7Tq5EyN4WKko+o7a3wvTc980gRJqncv4y77UGNM8aKt+547mNwPlIrmoCYBuAaSFMKn95M ac9d96ShcEYuM+XyTkvSzK/fkE5WAuzQ2q7Z4dKLKZzYHGbCKePnRXWDamkhX1gcaGNyhUKbUMK TrEHBH5uUdz1YZwwdPVqYA2yUkUWWcJJqImzTiDoXWUrBm/sKZi5G7dLTdlWuPxC4FwcpdZtJt8 Hw//9QkY5zBddPCwJE5XwRWOjMx/qpAuixp21HhOK1Qp78PWruDtHDsJLOIRskxnifTI6NIGmvA bH0cisP/+0NAX2qnBuaLOmEglMvyi504awnrc8I2Liuzh3FXCnc0= 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 d63bdeff8cdb..2537bd8fe3e8 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 @@ -771,8 +772,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