diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0352-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.4/0352-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0352-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch b/target/linux/brcm2708/patches-4.4/0352-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch deleted file mode 100644 index 5e1c3384c6..0000000000 --- a/target/linux/brcm2708/patches-4.4/0352-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 4821969ac388afa50202a3c4211a22d6ccef1fa1 Mon Sep 17 00:00:00 2001 -From: Nicolas Boullis <nboullis@debian.org> -Date: Sun, 10 Apr 2016 13:23:05 +0200 -Subject: [PATCH] rtc: ds1307: ensure that any pending alarm is cleared before - a new alarm is enabled -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If a previously-set alarm was disabled and then triggered, it may still -be pending when a new alarm is configured. - -Then, if the alarm is enabled before the pending alarm is cleared, then -an interrupt is immediately raised. - -Unfortunately, when the alarm is cleared and enabled during the same I²C -block write, the chip (at least the DS1339 I have) considers that the -alarm is enabled before it is cleared, and raises an interrupt. - -This patch ensures that the pending alarm is cleared before the alarm is -enabled. - -Signed-off-by: Nicolas Boullis <nboullis@debian.org> -Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> ---- - drivers/rtc/rtc-ds1307.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - ---- a/drivers/rtc/rtc-ds1307.c -+++ b/drivers/rtc/rtc-ds1307.c -@@ -540,12 +540,8 @@ static int ds1337_set_alarm(struct devic - buf[5] = 0; - buf[6] = 0; - -- /* optionally enable ALARM1 */ -+ /* disable alarms */ - buf[7] = control & ~(DS1337_BIT_A1IE | DS1337_BIT_A2IE); -- if (t->enabled) { -- dev_dbg(dev, "alarm IRQ armed\n"); -- buf[7] |= DS1337_BIT_A1IE; /* only ALARM1 is used */ -- } - buf[8] = status & ~(DS1337_BIT_A1I | DS1337_BIT_A2I); - - ret = ds1307->write_block_data(client, -@@ -555,6 +551,13 @@ static int ds1337_set_alarm(struct devic - return ret; - } - -+ /* optionally enable ALARM1 */ -+ if (t->enabled) { -+ dev_dbg(dev, "alarm IRQ armed\n"); -+ buf[7] |= DS1337_BIT_A1IE; /* only ALARM1 is used */ -+ i2c_smbus_write_byte_data(client, DS1337_REG_CONTROL, buf[7]); -+ } -+ - return 0; - } - |