mfd: sec: Fix RTC alarm interrupt number on S2MPS11
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Thu, 2 Apr 2015 14:36:15 +0000 (16:36 +0200)
committerLee Jones <lee.jones@linaro.org>
Thu, 9 Apr 2015 09:26:54 +0000 (10:26 +0100)
The RTC on S2MPS11 is the same as S2MPS14. However interrupt numbers of
RTC alarms 0 and 1 were inversed between these two devices. So when
rtc-s5m driver requested S2MPS14_IRQ_RTCA0 interrupt, it matched to
S2MPS11_IRQ_RTCA1, not RTCA0.

Fix this by using consistent RTC alarm interrupt numbers and adding a
BUILD_BUG_ON for future generations.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/sec-irq.c
include/linux/mfd/samsung/irq.h

index ba86a918c2dace19be14235f484f380a970d667e..806fa8dbb22d81999df749d35ba90efe2d789e19 100644 (file)
@@ -61,14 +61,14 @@ static const struct regmap_irq s2mps11_irqs[] = {
                .reg_offset = 1,
                .mask = S2MPS11_IRQ_RTC60S_MASK,
        },
-       [S2MPS11_IRQ_RTCA0] = {
-               .reg_offset = 1,
-               .mask = S2MPS11_IRQ_RTCA0_MASK,
-       },
        [S2MPS11_IRQ_RTCA1] = {
                .reg_offset = 1,
                .mask = S2MPS11_IRQ_RTCA1_MASK,
        },
+       [S2MPS11_IRQ_RTCA0] = {
+               .reg_offset = 1,
+               .mask = S2MPS11_IRQ_RTCA0_MASK,
+       },
        [S2MPS11_IRQ_SMPL] = {
                .reg_offset = 1,
                .mask = S2MPS11_IRQ_SMPL_MASK,
@@ -484,6 +484,12 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
                return ret;
        }
 
+       /*
+        * The rtc-s5m driver requests S2MPS14_IRQ_RTCA0 also for S2MPS11
+        * so the interrupt number must be consistent.
+        */
+       BUILD_BUG_ON(((enum s2mps14_irq)S2MPS11_IRQ_RTCA0) != S2MPS14_IRQ_RTCA0);
+
        return 0;
 }
 
index f35af7361b606f630dee92dc7c28e96df7c71c46..667aa40486dd41ca2e0ade8f2cee7c6e35c470bd 100644 (file)
@@ -74,8 +74,8 @@ enum s2mps11_irq {
        S2MPS11_IRQ_MRB,
 
        S2MPS11_IRQ_RTC60S,
-       S2MPS11_IRQ_RTCA0,
        S2MPS11_IRQ_RTCA1,
+       S2MPS11_IRQ_RTCA0,
        S2MPS11_IRQ_SMPL,
        S2MPS11_IRQ_RTC1S,
        S2MPS11_IRQ_WTSR,