File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change 7
7
8
8
#include <linux/bcd.h>
9
9
#include <linux/clk.h>
10
+ #include <linux/delay.h>
10
11
#include <linux/i2c.h>
11
12
#include <linux/module.h>
12
13
#include <linux/of.h>
@@ -628,6 +629,18 @@ isl1208_rtc_interrupt(int irq, void *data)
628
629
struct isl1208_state * isl1208 = i2c_get_clientdata (client );
629
630
int handled = 0 , sr , err ;
630
631
632
+ if (!isl1208 -> config -> has_tamper ) {
633
+ /*
634
+ * The INT# output is pulled low 250ms after the alarm is
635
+ * triggered. After the INT# output is pulled low, it is low for
636
+ * at least 250ms, even if the correct action is taken to clear
637
+ * it. It is impossible to clear ALM if it is still active. The
638
+ * host must wait for the RTC to progress past the alarm time
639
+ * plus the 250ms delay before clearing ALM.
640
+ */
641
+ msleep (250 );
642
+ }
643
+
631
644
/*
632
645
* I2C reads get NAK'ed if we read straight away after an interrupt?
633
646
* Using a mdelay/msleep didn't seem to help either, so we work around
You can’t perform that action at this time.
0 commit comments