aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>2015-04-02 10:36:15 -0400
committerLee Jones <lee.jones@linaro.org>2015-04-09 05:26:54 -0400
commite554a99ee8d09132e80dc467433c9a4df9054645 (patch)
tree3453073a3755677fe0bc8fb2947397cba0bc394d
parentdcbbcba92601dc05e5c9a844cb35a9112cb7d7ad (diff)
mfd: sec: Fix RTC alarm interrupt number on S2MPS11
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>
-rw-r--r--drivers/mfd/sec-irq.c14
-rw-r--r--include/linux/mfd/samsung/irq.h2
2 files changed, 11 insertions, 5 deletions
diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c
index ba86a918c2da..806fa8dbb22d 100644
--- a/drivers/mfd/sec-irq.c
+++ b/drivers/mfd/sec-irq.c
@@ -61,14 +61,14 @@ static const struct regmap_irq s2mps11_irqs[] = {
61 .reg_offset = 1, 61 .reg_offset = 1,
62 .mask = S2MPS11_IRQ_RTC60S_MASK, 62 .mask = S2MPS11_IRQ_RTC60S_MASK,
63 }, 63 },
64 [S2MPS11_IRQ_RTCA0] = {
65 .reg_offset = 1,
66 .mask = S2MPS11_IRQ_RTCA0_MASK,
67 },
68 [S2MPS11_IRQ_RTCA1] = { 64 [S2MPS11_IRQ_RTCA1] = {
69 .reg_offset = 1, 65 .reg_offset = 1,
70 .mask = S2MPS11_IRQ_RTCA1_MASK, 66 .mask = S2MPS11_IRQ_RTCA1_MASK,
71 }, 67 },
68 [S2MPS11_IRQ_RTCA0] = {
69 .reg_offset = 1,
70 .mask = S2MPS11_IRQ_RTCA0_MASK,
71 },
72 [S2MPS11_IRQ_SMPL] = { 72 [S2MPS11_IRQ_SMPL] = {
73 .reg_offset = 1, 73 .reg_offset = 1,
74 .mask = S2MPS11_IRQ_SMPL_MASK, 74 .mask = S2MPS11_IRQ_SMPL_MASK,
@@ -484,6 +484,12 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
484 return ret; 484 return ret;
485 } 485 }
486 486
487 /*
488 * The rtc-s5m driver requests S2MPS14_IRQ_RTCA0 also for S2MPS11
489 * so the interrupt number must be consistent.
490 */
491 BUILD_BUG_ON(((enum s2mps14_irq)S2MPS11_IRQ_RTCA0) != S2MPS14_IRQ_RTCA0);
492
487 return 0; 493 return 0;
488} 494}
489 495
diff --git a/include/linux/mfd/samsung/irq.h b/include/linux/mfd/samsung/irq.h
index f35af7361b60..667aa40486dd 100644
--- a/include/linux/mfd/samsung/irq.h
+++ b/include/linux/mfd/samsung/irq.h
@@ -74,8 +74,8 @@ enum s2mps11_irq {
74 S2MPS11_IRQ_MRB, 74 S2MPS11_IRQ_MRB,
75 75
76 S2MPS11_IRQ_RTC60S, 76 S2MPS11_IRQ_RTC60S,
77 S2MPS11_IRQ_RTCA0,
78 S2MPS11_IRQ_RTCA1, 77 S2MPS11_IRQ_RTCA1,
78 S2MPS11_IRQ_RTCA0,
79 S2MPS11_IRQ_SMPL, 79 S2MPS11_IRQ_SMPL,
80 S2MPS11_IRQ_RTC1S, 80 S2MPS11_IRQ_RTC1S,
81 S2MPS11_IRQ_WTSR, 81 S2MPS11_IRQ_WTSR,