mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
drivers/rtc/rtc-twl.c: optimize IRQ bit access
As the TWL RTC driver has a cached copy of enabled RTC interrupt bits in variable rtc_irq_bits, that can be checked before really setting or masking any of the interrupt bits. Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com> Cc: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b4f0b880c8
commit
ce9f650636
@ -176,6 +176,10 @@ static int set_rtc_irq_bit(unsigned char bit)
|
||||
unsigned char val;
|
||||
int ret;
|
||||
|
||||
/* if the bit is set, return from here */
|
||||
if (rtc_irq_bits & bit)
|
||||
return 0;
|
||||
|
||||
val = rtc_irq_bits | bit;
|
||||
val &= ~BIT_RTC_INTERRUPTS_REG_EVERY_M;
|
||||
ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG);
|
||||
@ -193,6 +197,10 @@ static int mask_rtc_irq_bit(unsigned char bit)
|
||||
unsigned char val;
|
||||
int ret;
|
||||
|
||||
/* if the bit is clear, return from here */
|
||||
if (!(rtc_irq_bits & bit))
|
||||
return 0;
|
||||
|
||||
val = rtc_irq_bits & ~bit;
|
||||
ret = twl_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG);
|
||||
if (ret == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user