mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
rtc: isl1208: Update correct procedure for clearing alarm
As per the latest HW manual[1], there is an internal delay(~250 microsec) from setting ALME = 0 to disabling the alarm function, so the user must add a short delay of greater than 250µs between setting ALME = 0 and clearing ALM. Currently setting of ALME = 0 is done after clearing the ALM, so just reverse the operation and add a delay of 275 microsec. [1]https://www.renesas.com/us/en/document/dst/raa215300-datasheet?r=1506351 Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Link: https://lore.kernel.org/r/20240618152635.48956-3-biju.das.jz@bp.renesas.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
0dbd610c42
commit
43696b3a9e
@ -663,6 +663,13 @@ isl1208_rtc_interrupt(int irq, void *data)
|
||||
|
||||
rtc_update_irq(isl1208->rtc, 1, RTC_IRQF | RTC_AF);
|
||||
|
||||
/* Disable the alarm */
|
||||
err = isl1208_rtc_toggle_alarm(client, 0);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
fsleep(275);
|
||||
|
||||
/* Clear the alarm */
|
||||
sr &= ~ISL1208_REG_SR_ALM;
|
||||
sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
|
||||
@ -671,11 +678,6 @@ isl1208_rtc_interrupt(int irq, void *data)
|
||||
__func__);
|
||||
else
|
||||
handled = 1;
|
||||
|
||||
/* Disable the alarm */
|
||||
err = isl1208_rtc_toggle_alarm(client, 0);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
if (isl1208->config->has_tamper && (sr & ISL1208_REG_SR_EVT)) {
|
||||
|
Loading…
Reference in New Issue
Block a user