| .. | .. |
|---|
| 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) |
|---|