Commit b5167159d4341d408ef6b941975f2fe8973b2a94

Authored by Wolfram Sang
Committed by John Stultz
1 parent a91d2bab35

rtc: stmp3xxx: Get rid of mach-specific accessors

Replace the accessors with standard readl/writel to remove their
platform-dependency. Also, drop __raw_(read|write)l-accessors while we
are here.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Tested-by: Shawn Guo <shawn.guo@freescale.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>

Showing 1 changed file with 34 additions and 30 deletions Side-by-side Diff

drivers/rtc/rtc-stmp3xxx.c
... ... @@ -18,6 +18,7 @@
18 18 */
19 19 #include <linux/kernel.h>
20 20 #include <linux/module.h>
  21 +#include <linux/io.h>
21 22 #include <linux/init.h>
22 23 #include <linux/platform_device.h>
23 24 #include <linux/interrupt.h>
24 25  
... ... @@ -25,9 +26,10 @@
25 26 #include <linux/slab.h>
26 27  
27 28 #include <mach/common.h>
28   -#include <mach/mxs.h>
29 29  
30 30 #define STMP3XXX_RTC_CTRL 0x0
  31 +#define STMP3XXX_RTC_CTRL_SET 0x4
  32 +#define STMP3XXX_RTC_CTRL_CLR 0x8
31 33 #define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
32 34 #define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002
33 35 #define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004
... ... @@ -42,6 +44,8 @@
42 44 #define STMP3XXX_RTC_ALARM 0x40
43 45  
44 46 #define STMP3XXX_RTC_PERSISTENT0 0x60
  47 +#define STMP3XXX_RTC_PERSISTENT0_SET 0x64
  48 +#define STMP3XXX_RTC_PERSISTENT0_CLR 0x68
45 49 #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN 0x00000002
46 50 #define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004
47 51 #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080
... ... @@ -60,7 +64,7 @@
60 64 * NEW_REGS/STALE_REGS bitfields go. In fact it's 0x1=P0,
61 65 * 0x2=P1, .., 0x20=P5, 0x40=ALARM, 0x80=SECONDS
62 66 */
63   - while (__raw_readl(rtc_data->io + STMP3XXX_RTC_STAT) &
  67 + while (readl(rtc_data->io + STMP3XXX_RTC_STAT) &
64 68 (0x80 << STMP3XXX_RTC_STAT_STALE_SHIFT))
65 69 cpu_relax();
66 70 }
... ... @@ -71,8 +75,7 @@
71 75 struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
72 76  
73 77 stmp3xxx_wait_time(rtc_data);
74   - rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_SECONDS),
75   - rtc_tm);
  78 + rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_SECONDS), rtc_tm);
76 79 return 0;
77 80 }
78 81  
... ... @@ -80,7 +83,7 @@
80 83 {
81 84 struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
82 85  
83   - __raw_writel(t, rtc_data->io + STMP3XXX_RTC_SECONDS);
  86 + writel(t, rtc_data->io + STMP3XXX_RTC_SECONDS);
84 87 stmp3xxx_wait_time(rtc_data);
85 88 return 0;
86 89 }
87 90  
88 91  
... ... @@ -92,19 +95,19 @@
92 95 u32 status;
93 96 u32 events = 0;
94 97  
95   - status = __raw_readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
  98 + status = readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
96 99 (STMP3XXX_RTC_CTRL_ALARM_IRQ |
97 100 STMP3XXX_RTC_CTRL_ONEMSEC_IRQ);
98 101  
99 102 if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) {
100   - __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ,
101   - rtc_data->io + STMP3XXX_RTC_CTRL);
  103 + writel(STMP3XXX_RTC_CTRL_ALARM_IRQ,
  104 + rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
102 105 events |= RTC_AF | RTC_IRQF;
103 106 }
104 107  
105 108 if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) {
106   - __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
107   - rtc_data->io + STMP3XXX_RTC_CTRL);
  109 + writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
  110 + rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
108 111 if (++rtc_data->irq_count % 1000 == 0) {
109 112 events |= RTC_UF | RTC_IRQF;
110 113 rtc_data->irq_count = 0;
111 114  
112 115  
... ... @@ -120,17 +123,19 @@
120 123 static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled)
121 124 {
122 125 struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
123   - void __iomem *p = rtc_data->io + STMP3XXX_RTC_PERSISTENT0,
124   - *ctl = rtc_data->io + STMP3XXX_RTC_CTRL;
125 126  
126 127 if (enabled) {
127   - __mxs_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
128   - STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
129   - __mxs_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
  128 + writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
  129 + STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN,
  130 + rtc_data->io + STMP3XXX_RTC_PERSISTENT0_SET);
  131 + writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
  132 + rtc_data->io + STMP3XXX_RTC_CTRL_SET);
130 133 } else {
131   - __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
132   - STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
133   - __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
  134 + writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
  135 + STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN,
  136 + rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
  137 + writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
  138 + rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
134 139 }
135 140 return 0;
136 141 }
... ... @@ -139,8 +144,7 @@
139 144 {
140 145 struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
141 146  
142   - rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_ALARM),
143   - &alm->time);
  147 + rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_ALARM), &alm->time);
144 148 return 0;
145 149 }
146 150  
... ... @@ -150,7 +154,7 @@
150 154 struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
151 155  
152 156 rtc_tm_to_time(&alm->time, &t);
153   - __raw_writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
  157 + writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
154 158 return 0;
155 159 }
156 160  
157 161  
... ... @@ -170,9 +174,9 @@
170 174 if (!rtc_data)
171 175 return 0;
172 176  
173   - __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN |
  177 + writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN |
174 178 STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
175   - rtc_data->io + STMP3XXX_RTC_CTRL);
  179 + rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
176 180 free_irq(rtc_data->irq_alarm, &pdev->dev);
177 181 free_irq(rtc_data->irq_1msec, &pdev->dev);
178 182 rtc_device_unregister(rtc_data->rtc);
... ... @@ -210,7 +214,7 @@
210 214 rtc_data->irq_alarm = platform_get_irq(pdev, 0);
211 215 rtc_data->irq_1msec = platform_get_irq(pdev, 1);
212 216  
213   - if (!(__raw_readl(STMP3XXX_RTC_STAT + rtc_data->io) &
  217 + if (!(readl(STMP3XXX_RTC_STAT + rtc_data->io) &
214 218 STMP3XXX_RTC_STAT_RTC_PRESENT)) {
215 219 dev_err(&pdev->dev, "no device onboard\n");
216 220 err = -ENODEV;
217 221  
... ... @@ -220,10 +224,10 @@
220 224 platform_set_drvdata(pdev, rtc_data);
221 225  
222 226 mxs_reset_block(rtc_data->io);
223   - __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
  227 + writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
224 228 STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
225 229 STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
226   - rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
  230 + rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
227 231  
228 232 rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
229 233 &stmp3xxx_rtc_ops, THIS_MODULE);
230 234  
... ... @@ -253,9 +257,9 @@
253 257 out_irq1:
254 258 free_irq(rtc_data->irq_alarm, &pdev->dev);
255 259 out_irq_alarm:
256   - __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN |
  260 + writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN |
257 261 STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
258   - rtc_data->io + STMP3XXX_RTC_CTRL);
  262 + rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
259 263 rtc_device_unregister(rtc_data->rtc);
260 264 out_remap:
261 265 platform_set_drvdata(pdev, NULL);
262 266  
... ... @@ -276,10 +280,10 @@
276 280 struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev);
277 281  
278 282 mxs_reset_block(rtc_data->io);
279   - __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
  283 + writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
280 284 STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
281 285 STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
282   - rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
  286 + rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
283 287 return 0;
284 288 }
285 289 #else