rtc: pcf2127: add UIE support for PCF2131
authorHugo Villeneuve <hvilleneuve@dimonoff.com>
Thu, 22 Jun 2023 14:57:59 +0000 (10:57 -0400)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 27 Jul 2023 20:54:53 +0000 (22:54 +0200)
The PCF2127/29 do NOT support alarms with a 1 second resolution, but
the PCF2131 does.

Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Link: https://lore.kernel.org/r/20230622145800.2442116-17-hugo@hugovil.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-pcf2127.c

index 3acab5a..78141bb 100644 (file)
@@ -1128,8 +1128,16 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
        pcf2127->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        pcf2127->rtc->range_max = RTC_TIMESTAMP_END_2099;
        pcf2127->rtc->set_start_time = true; /* Sets actual start to 1970 */
-       set_bit(RTC_FEATURE_ALARM_RES_2S, pcf2127->rtc->features);
-       clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf2127->rtc->features);
+
+       /*
+        * PCF2127/29 do not work correctly when setting alarms at 1s intervals.
+        * PCF2131 is ok.
+        */
+       if (pcf2127->cfg->type == PCF2127 || pcf2127->cfg->type == PCF2129) {
+               set_bit(RTC_FEATURE_ALARM_RES_2S, pcf2127->rtc->features);
+               clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf2127->rtc->features);
+       }
+
        clear_bit(RTC_FEATURE_ALARM, pcf2127->rtc->features);
 
        if (alarm_irq > 0) {