rtc: m41t80: Fix invalid alarm time
PATCH 1/1 rtc: m41t80: Fix invalid alarm time
From: Ladislav Michl <[email protected]>
When no alarm has been programmed on m41t80 chip, an error message is printed during boot:
rtc rtc0: invalid alarm value: 2023-4-12 45:85:85
Fix this by returning -1 instead of actual register values.
Signed-off-by Ladislav Michl <[email protected]>
---
NOTE:
This patch is shamelessly based on
15d82d224987 ("rtc: sh: Fix invalid alarm warning for non-enabled alarm") so question arises whenever rtc core should'n handle !alrm->enabled case itself.
drivers/rtc/rtc-m41t80.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)
drivers/rtc/rtc-m41t80.c +14 -6
@@ -572,15 +572,23 @@ static int m41t80_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)if (flags <0 )return flags; - alrm->time.tm_sec =bcd2bin (alarmvals[4 ] &0x7f ); - alrm->time.tm_min =bcd2bin (alarmvals[3 ] &0x7f ); - alrm->time.tm_hour =bcd2bin (alarmvals[2 ] &0x3f ); - alrm->time.tm_mday =bcd2bin (alarmvals[1 ] &0x3f ); - alrm->time.tm_mon =bcd2bin (alarmvals[0 ] &0x3f ) -1 ; - alrm->enabled = !!(alarmvals[0 ] &M41T80_ALMON_AFE ); alrm->pending = (flags &M41T80_FLAGS_AF ) && alrm->enabled; +if (alrm->enabled) { + alrm->time.tm_sec =bcd2bin (alarmvals[4 ] &0x7f ); + alrm->time.tm_min =bcd2bin (alarmvals[3 ] &0x7f ); + alrm->time.tm_hour =bcd2bin (alarmvals[2 ] &0x3f ); + alrm->time.tm_mday =bcd2bin (alarmvals[1 ] &0x3f ); + alrm->time.tm_mon =bcd2bin (alarmvals[0 ] &0x3f ) -1 ; + }else { + alrm->time.tm_sec =-1 ; + alrm->time.tm_min =-1 ; + alrm->time.tm_hour =-1 ; + alrm->time.tm_mday =-1 ; + alrm->time.tm_mon =-1 ; + } +return 0 ; }
Signature · 1 line
2.32.0