diff options
| author | Wolfram Sang <w.sang@pengutronix.de> | 2011-05-25 06:56:52 -0400 |
|---|---|---|
| committer | John Stultz <john.stultz@linaro.org> | 2011-07-01 21:09:56 -0400 |
| commit | b5167159d4341d408ef6b941975f2fe8973b2a94 (patch) | |
| tree | e5424d893af19f51bdd6dbb8167c68c7eab36e04 /drivers | |
| parent | a91d2bab355f3a5caa767d7316f80422bfcd2ad6 (diff) | |
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>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/rtc/rtc-stmp3xxx.c | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c index 90f05fe60620..ad1851796940 100644 --- a/drivers/rtc/rtc-stmp3xxx.c +++ b/drivers/rtc/rtc-stmp3xxx.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | */ | 18 | */ |
| 19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
| 20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| 21 | #include <linux/io.h> | ||
| 21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
| 22 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
| 23 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| @@ -25,9 +26,10 @@ | |||
| 25 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
| 26 | 27 | ||
| 27 | #include <mach/common.h> | 28 | #include <mach/common.h> |
| 28 | #include <mach/mxs.h> | ||
| 29 | 29 | ||
| 30 | #define STMP3XXX_RTC_CTRL 0x0 | 30 | #define STMP3XXX_RTC_CTRL 0x0 |
| 31 | #define STMP3XXX_RTC_CTRL_SET 0x4 | ||
| 32 | #define STMP3XXX_RTC_CTRL_CLR 0x8 | ||
| 31 | #define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001 | 33 | #define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001 |
| 32 | #define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002 | 34 | #define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002 |
| 33 | #define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004 | 35 | #define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004 |
| @@ -42,6 +44,8 @@ | |||
| 42 | #define STMP3XXX_RTC_ALARM 0x40 | 44 | #define STMP3XXX_RTC_ALARM 0x40 |
| 43 | 45 | ||
| 44 | #define STMP3XXX_RTC_PERSISTENT0 0x60 | 46 | #define STMP3XXX_RTC_PERSISTENT0 0x60 |
| 47 | #define STMP3XXX_RTC_PERSISTENT0_SET 0x64 | ||
| 48 | #define STMP3XXX_RTC_PERSISTENT0_CLR 0x68 | ||
| 45 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN 0x00000002 | 49 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN 0x00000002 |
| 46 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004 | 50 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004 |
| 47 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080 | 51 | #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080 |
| @@ -60,7 +64,7 @@ static void stmp3xxx_wait_time(struct stmp3xxx_rtc_data *rtc_data) | |||
| 60 | * NEW_REGS/STALE_REGS bitfields go. In fact it's 0x1=P0, | 64 | * NEW_REGS/STALE_REGS bitfields go. In fact it's 0x1=P0, |
| 61 | * 0x2=P1, .., 0x20=P5, 0x40=ALARM, 0x80=SECONDS | 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 | (0x80 << STMP3XXX_RTC_STAT_STALE_SHIFT)) | 68 | (0x80 << STMP3XXX_RTC_STAT_STALE_SHIFT)) |
| 65 | cpu_relax(); | 69 | cpu_relax(); |
| 66 | } | 70 | } |
| @@ -71,8 +75,7 @@ static int stmp3xxx_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm) | |||
| 71 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); | 75 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); |
| 72 | 76 | ||
| 73 | stmp3xxx_wait_time(rtc_data); | 77 | stmp3xxx_wait_time(rtc_data); |
| 74 | rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_SECONDS), | 78 | rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_SECONDS), rtc_tm); |
| 75 | rtc_tm); | ||
| 76 | return 0; | 79 | return 0; |
| 77 | } | 80 | } |
| 78 | 81 | ||
| @@ -80,7 +83,7 @@ static int stmp3xxx_rtc_set_mmss(struct device *dev, unsigned long t) | |||
| 80 | { | 83 | { |
| 81 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); | 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 | stmp3xxx_wait_time(rtc_data); | 87 | stmp3xxx_wait_time(rtc_data); |
| 85 | return 0; | 88 | return 0; |
| 86 | } | 89 | } |
| @@ -92,19 +95,19 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id) | |||
| 92 | u32 status; | 95 | u32 status; |
| 93 | u32 events = 0; | 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 | (STMP3XXX_RTC_CTRL_ALARM_IRQ | | 99 | (STMP3XXX_RTC_CTRL_ALARM_IRQ | |
| 97 | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ); | 100 | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ); |
| 98 | 101 | ||
| 99 | if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) { | 102 | if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) { |
| 100 | __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ, | 103 | writel(STMP3XXX_RTC_CTRL_ALARM_IRQ, |
| 101 | rtc_data->io + STMP3XXX_RTC_CTRL); | 104 | rtc_data->io + STMP3XXX_RTC_CTRL_CLR); |
| 102 | events |= RTC_AF | RTC_IRQF; | 105 | events |= RTC_AF | RTC_IRQF; |
| 103 | } | 106 | } |
| 104 | 107 | ||
| 105 | if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) { | 108 | if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) { |
| 106 | __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ, | 109 | writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ, |
| 107 | rtc_data->io + STMP3XXX_RTC_CTRL); | 110 | rtc_data->io + STMP3XXX_RTC_CTRL_CLR); |
| 108 | if (++rtc_data->irq_count % 1000 == 0) { | 111 | if (++rtc_data->irq_count % 1000 == 0) { |
| 109 | events |= RTC_UF | RTC_IRQF; | 112 | events |= RTC_UF | RTC_IRQF; |
| 110 | rtc_data->irq_count = 0; | 113 | rtc_data->irq_count = 0; |
| @@ -120,17 +123,19 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id) | |||
| 120 | static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled) | 123 | static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled) |
| 121 | { | 124 | { |
| 122 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); | 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 | if (enabled) { | 127 | if (enabled) { |
| 127 | __mxs_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | | 128 | writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | |
| 128 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p); | 129 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, |
| 129 | __mxs_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl); | 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 | } else { | 133 | } else { |
| 131 | __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | | 134 | writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | |
| 132 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p); | 135 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, |
| 133 | __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl); | 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 | return 0; | 140 | return 0; |
| 136 | } | 141 | } |
| @@ -139,8 +144,7 @@ static int stmp3xxx_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm) | |||
| 139 | { | 144 | { |
| 140 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); | 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), | 147 | rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_ALARM), &alm->time); |
| 143 | &alm->time); | ||
| 144 | return 0; | 148 | return 0; |
| 145 | } | 149 | } |
| 146 | 150 | ||
| @@ -150,7 +154,7 @@ static int stmp3xxx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm) | |||
| 150 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); | 154 | struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev); |
| 151 | 155 | ||
| 152 | rtc_tm_to_time(&alm->time, &t); | 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 | return 0; | 158 | return 0; |
| 155 | } | 159 | } |
| 156 | 160 | ||
| @@ -170,9 +174,9 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev) | |||
| 170 | if (!rtc_data) | 174 | if (!rtc_data) |
| 171 | return 0; | 175 | return 0; |
| 172 | 176 | ||
| 173 | __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | | 177 | writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | |
| 174 | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, | 178 | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, |
| 175 | rtc_data->io + STMP3XXX_RTC_CTRL); | 179 | rtc_data->io + STMP3XXX_RTC_CTRL_CLR); |
| 176 | free_irq(rtc_data->irq_alarm, &pdev->dev); | 180 | free_irq(rtc_data->irq_alarm, &pdev->dev); |
| 177 | free_irq(rtc_data->irq_1msec, &pdev->dev); | 181 | free_irq(rtc_data->irq_1msec, &pdev->dev); |
| 178 | rtc_device_unregister(rtc_data->rtc); | 182 | rtc_device_unregister(rtc_data->rtc); |
| @@ -210,7 +214,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev) | |||
| 210 | rtc_data->irq_alarm = platform_get_irq(pdev, 0); | 214 | rtc_data->irq_alarm = platform_get_irq(pdev, 0); |
| 211 | rtc_data->irq_1msec = platform_get_irq(pdev, 1); | 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 | STMP3XXX_RTC_STAT_RTC_PRESENT)) { | 218 | STMP3XXX_RTC_STAT_RTC_PRESENT)) { |
| 215 | dev_err(&pdev->dev, "no device onboard\n"); | 219 | dev_err(&pdev->dev, "no device onboard\n"); |
| 216 | err = -ENODEV; | 220 | err = -ENODEV; |
| @@ -220,10 +224,10 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev) | |||
| 220 | platform_set_drvdata(pdev, rtc_data); | 224 | platform_set_drvdata(pdev, rtc_data); |
| 221 | 225 | ||
| 222 | mxs_reset_block(rtc_data->io); | 226 | mxs_reset_block(rtc_data->io); |
| 223 | __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | | 227 | writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | |
| 224 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN | | 228 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN | |
| 225 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE, | 229 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE, |
| 226 | rtc_data->io + STMP3XXX_RTC_PERSISTENT0); | 230 | rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR); |
| 227 | 231 | ||
| 228 | rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev, | 232 | rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev, |
| 229 | &stmp3xxx_rtc_ops, THIS_MODULE); | 233 | &stmp3xxx_rtc_ops, THIS_MODULE); |
| @@ -253,9 +257,9 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev) | |||
| 253 | out_irq1: | 257 | out_irq1: |
| 254 | free_irq(rtc_data->irq_alarm, &pdev->dev); | 258 | free_irq(rtc_data->irq_alarm, &pdev->dev); |
| 255 | out_irq_alarm: | 259 | out_irq_alarm: |
| 256 | __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | | 260 | writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | |
| 257 | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, | 261 | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, |
| 258 | rtc_data->io + STMP3XXX_RTC_CTRL); | 262 | rtc_data->io + STMP3XXX_RTC_CTRL_CLR); |
| 259 | rtc_device_unregister(rtc_data->rtc); | 263 | rtc_device_unregister(rtc_data->rtc); |
| 260 | out_remap: | 264 | out_remap: |
| 261 | platform_set_drvdata(pdev, NULL); | 265 | platform_set_drvdata(pdev, NULL); |
| @@ -276,10 +280,10 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev) | |||
| 276 | struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev); | 280 | struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev); |
| 277 | 281 | ||
| 278 | mxs_reset_block(rtc_data->io); | 282 | mxs_reset_block(rtc_data->io); |
| 279 | __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | | 283 | writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN | |
| 280 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN | | 284 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN | |
| 281 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE, | 285 | STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE, |
| 282 | rtc_data->io + STMP3XXX_RTC_PERSISTENT0); | 286 | rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR); |
| 283 | return 0; | 287 | return 0; |
| 284 | } | 288 | } |
| 285 | #else | 289 | #else |
