diff options
Diffstat (limited to 'drivers/rtc/rtc-twl.c')
-rw-r--r-- | drivers/rtc/rtc-twl.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c index d43b4f6eb4e4..18dff5255670 100644 --- a/drivers/rtc/rtc-twl.c +++ b/drivers/rtc/rtc-twl.c | |||
@@ -176,6 +176,10 @@ static int set_rtc_irq_bit(unsigned char bit) | |||
176 | unsigned char val; | 176 | unsigned char val; |
177 | int ret; | 177 | int ret; |
178 | 178 | ||
179 | /* if the bit is set, return from here */ | ||
180 | if (rtc_irq_bits & bit) | ||
181 | return 0; | ||
182 | |||
179 | val = rtc_irq_bits | bit; | 183 | val = rtc_irq_bits | bit; |
180 | val &= ~BIT_RTC_INTERRUPTS_REG_EVERY_M; | 184 | val &= ~BIT_RTC_INTERRUPTS_REG_EVERY_M; |
181 | ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); | 185 | ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); |
@@ -193,6 +197,10 @@ static int mask_rtc_irq_bit(unsigned char bit) | |||
193 | unsigned char val; | 197 | unsigned char val; |
194 | int ret; | 198 | int ret; |
195 | 199 | ||
200 | /* if the bit is clear, return from here */ | ||
201 | if (!(rtc_irq_bits & bit)) | ||
202 | return 0; | ||
203 | |||
196 | val = rtc_irq_bits & ~bit; | 204 | val = rtc_irq_bits & ~bit; |
197 | ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); | 205 | ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); |
198 | if (ret == 0) | 206 | if (ret == 0) |