rtc: ds1307: fix RX8130 wakeup alarm WADA bit for day-of-month mode
authorRobert Leussler <robert.leussler@leica-geosystems.com>
Tue, 21 Jul 2026 08:19:07 +0000 (08:19 +0000)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 19 Aug 2026 22:28:44 +0000 (00:28 +0200)
commit878d93aaa596a861dbc8d71f7c38e62a2e805f01
treef28ea99fb46bce9022e7f2327d0daea129085688
parentb1407862fb57c6455a04fa5d0d02b58496a38cc9
rtc: ds1307: fix RX8130 wakeup alarm WADA bit for day-of-month mode

The RX8130 wakeup alarm never fired when set via
/sys/class/rtc/rtc0/wakealarm. The root cause is that the WADA bit
(bit 3) in the Extension register (0x1c) was never set before
programming the alarm registers.

Per the RX8130 datasheet:
WADA=0 - Week alarm: register 0x19 is compared against day-of-week
WADA=1 - Day alarm:  register 0x19 is compared against day-of-month

rx8130_set_alarm() always writes a BCD day-of-month value to alarm
register 0x19, so WADA must be 1. With WADA=0 the hardware matched the
day-of-month value (e.g. 15) as a day-of-week index, which is always
out of range (valid weekdays are 0-6), so the alarm interrupt was never
asserted.

Fix by setting the WADA bit in rx8130_set_alarm() before writing the
Extension register back to the device.

This is consistent with rx8130_read_alarm(), which decodes the same
register under the same assumption (24-hour and day-of-month mode).

Signed-off-by: Robert Leussler <robert.leussler@leica-geosystems.com>
Link: https://patch.msgid.link/20260721081907.3518648-1-robert.leussler@leica-geosystems.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-ds1307.c