.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Oki MSM6242 RTC Driver |
---|
3 | 4 | * |
---|
.. | .. |
---|
87 | 88 | __raw_writel(val, &priv->regs[reg]); |
---|
88 | 89 | } |
---|
89 | 90 | |
---|
90 | | -static inline void msm6242_set(struct msm6242_priv *priv, unsigned int val, |
---|
91 | | - unsigned int reg) |
---|
92 | | -{ |
---|
93 | | - msm6242_write(priv, msm6242_read(priv, reg) | val, reg); |
---|
94 | | -} |
---|
95 | | - |
---|
96 | | -static inline void msm6242_clear(struct msm6242_priv *priv, unsigned int val, |
---|
97 | | - unsigned int reg) |
---|
98 | | -{ |
---|
99 | | - msm6242_write(priv, msm6242_read(priv, reg) & ~val, reg); |
---|
100 | | -} |
---|
101 | | - |
---|
102 | 91 | static void msm6242_lock(struct msm6242_priv *priv) |
---|
103 | 92 | { |
---|
104 | 93 | int cnt = 5; |
---|
105 | 94 | |
---|
106 | | - msm6242_set(priv, MSM6242_CD_HOLD, MSM6242_CD); |
---|
| 95 | + msm6242_write(priv, MSM6242_CD_HOLD|MSM6242_CD_IRQ_FLAG, MSM6242_CD); |
---|
107 | 96 | |
---|
108 | 97 | while ((msm6242_read(priv, MSM6242_CD) & MSM6242_CD_BUSY) && cnt) { |
---|
109 | | - msm6242_clear(priv, MSM6242_CD_HOLD, MSM6242_CD); |
---|
| 98 | + msm6242_write(priv, MSM6242_CD_IRQ_FLAG, MSM6242_CD); |
---|
110 | 99 | udelay(70); |
---|
111 | | - msm6242_set(priv, MSM6242_CD_HOLD, MSM6242_CD); |
---|
| 100 | + msm6242_write(priv, MSM6242_CD_HOLD|MSM6242_CD_IRQ_FLAG, MSM6242_CD); |
---|
112 | 101 | cnt--; |
---|
113 | 102 | } |
---|
114 | 103 | |
---|
.. | .. |
---|
119 | 108 | |
---|
120 | 109 | static void msm6242_unlock(struct msm6242_priv *priv) |
---|
121 | 110 | { |
---|
122 | | - msm6242_clear(priv, MSM6242_CD_HOLD, MSM6242_CD); |
---|
| 111 | + msm6242_write(priv, MSM6242_CD_IRQ_FLAG, MSM6242_CD); |
---|
123 | 112 | } |
---|
124 | 113 | |
---|
125 | 114 | static int msm6242_read_time(struct device *dev, struct rtc_time *tm) |
---|