diff options
| author | Krzysztof Kozlowski <k.kozlowski@samsung.com> | 2015-04-02 10:36:15 -0400 |
|---|---|---|
| committer | Lee Jones <lee.jones@linaro.org> | 2015-04-09 05:26:54 -0400 |
| commit | e554a99ee8d09132e80dc467433c9a4df9054645 (patch) | |
| tree | 3453073a3755677fe0bc8fb2947397cba0bc394d | |
| parent | dcbbcba92601dc05e5c9a844cb35a9112cb7d7ad (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.c | 14 | ||||
| -rw-r--r-- | include/linux/mfd/samsung/irq.h | 2 |
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, |
