summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Probst <markus.probst@posteo.de>2026-09-30 15:31:53 +0000
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2026-10-29 11:15:58 +0100
commitf6550426f21ec5293feddb74368be6f4e9eefac1 (patch)
treec41434d9fa4f59d9449019ad56324f7b0cfdc992
parentcb4e92b151141d2babd2f89e9f67599d38be3878 (diff)
rtc: s35390a: Add synology quirk
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 <markus.probst@posteo.de> Link: https://patch.msgid.link/20260930-rtc_s35390a_int1-v10-6-e7b1cbc50a7b@posteo.de Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
-rw-r--r--drivers/rtc/rtc-s35390a.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c
index 649d36d37f1f..d3e829052927 100644
--- a/drivers/rtc/rtc-s35390a.c
+++ b/drivers/rtc/rtc-s35390a.c
@@ -5,6 +5,7 @@
* Copyright (c) 2007 Byron Bradley
*/
+#include <linux/dmi.h>
#include <linux/module.h>
#include <linux/rtc.h>
#include <linux/i2c.h>
@@ -778,8 +779,18 @@ static int s35390a_probe(struct i2c_client *client)
return dev_err_probe(dev, err, "pinctrl enable failed\n");
/* If no pinmux function is defined in DT, fallback to previous behaviour */
- fallback[0] = S35390A_FUNC_IGNORE;
- fallback[1] = 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] = S35390A_FUNC_WAKEUP;
+ fallback[1] = S35390A_FUNC_DISABLE;
+ } else {
+ fallback[0] = S35390A_FUNC_IGNORE;
+ fallback[1] = S35390A_FUNC_WAKEUP;
+ }
for (i = 0; i < ARRAY_SIZE(s35390a_pin_groups); i++) {
if (s35390a->pinfunction[i] == -1) {