[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1326973942-11576-1-git-send-email-vbyravarasu@nvidia.com>
Date: Thu, 19 Jan 2012 17:22:22 +0530
From: Venu Byravarasu <vbyravarasu@...dia.com>
To: a.zummo@...ertech.it, rtc-linux@...glegroups.com,
linux-kernel@...r.kernel.org
Cc: Venu Byravarasu <vbyravarasu@...dia.com>
Subject: [PATCH] rtc: twl: optimize IRQ bit access
From: Venu Byravarasu <vbyravarasu@...dia.com>
As TWL RTC driver is having 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@...dia.com>
---
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 a0236a0..b1f6c8b 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)
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)
--
1.7.1.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists