aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-vt8500.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2014-04-03 17:49:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-03 19:21:19 -0400
commitcaa3af259d5439e28c6ed1fc0efbed994146e403 (patch)
tree4f3733ce0800fa339d4bd28b8f166223a9c39503 /drivers/rtc/rtc-vt8500.c
parent1e6789f6e2e2b1645527d08832bfb95982da17ff (diff)
rtc: rtc-vt8500: use devm_ioremap_resource()
Use devm_ioremap_resource() in order to make the code simpler, and move 'struct resource *res' from 'struct vt8500_rtc' to vt8500_rtc_probe() because the 'res' variable is used only in vt8500_rtc_probe(). Signed-off-by: Jingoo Han <jg1.han@samsung.com> Cc: Tony Prisk <linux@prisktech.co.nz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/rtc/rtc-vt8500.c')
-rw-r--r--drivers/rtc/rtc-vt8500.c28
1 files changed, 5 insertions, 23 deletions
diff --git a/drivers/rtc/rtc-vt8500.c b/drivers/rtc/rtc-vt8500.c
index df2ef3eba7cd..051da968da6d 100644
--- a/drivers/rtc/rtc-vt8500.c
+++ b/drivers/rtc/rtc-vt8500.c
@@ -79,7 +79,6 @@
79 79
80struct vt8500_rtc { 80struct vt8500_rtc {
81 void __iomem *regbase; 81 void __iomem *regbase;
82 struct resource *res;
83 int irq_alarm; 82 int irq_alarm;
84 struct rtc_device *rtc; 83 struct rtc_device *rtc;
85 spinlock_t lock; /* Protects this structure */ 84 spinlock_t lock; /* Protects this structure */
@@ -209,6 +208,7 @@ static const struct rtc_class_ops vt8500_rtc_ops = {
209static int vt8500_rtc_probe(struct platform_device *pdev) 208static int vt8500_rtc_probe(struct platform_device *pdev)
210{ 209{
211 struct vt8500_rtc *vt8500_rtc; 210 struct vt8500_rtc *vt8500_rtc;
211 struct resource *res;
212 int ret; 212 int ret;
213 213
214 vt8500_rtc = devm_kzalloc(&pdev->dev, 214 vt8500_rtc = devm_kzalloc(&pdev->dev,
@@ -219,34 +219,16 @@ static int vt8500_rtc_probe(struct platform_device *pdev)
219 spin_lock_init(&vt8500_rtc->lock); 219 spin_lock_init(&vt8500_rtc->lock);
220 platform_set_drvdata(pdev, vt8500_rtc); 220 platform_set_drvdata(pdev, vt8500_rtc);
221 221
222 vt8500_rtc->res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
223 if (!vt8500_rtc->res) {
224 dev_err(&pdev->dev, "No I/O memory resource defined\n");
225 return -ENXIO;
226 }
227
228 vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0); 222 vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0);
229 if (vt8500_rtc->irq_alarm < 0) { 223 if (vt8500_rtc->irq_alarm < 0) {
230 dev_err(&pdev->dev, "No alarm IRQ resource defined\n"); 224 dev_err(&pdev->dev, "No alarm IRQ resource defined\n");
231 return vt8500_rtc->irq_alarm; 225 return vt8500_rtc->irq_alarm;
232 } 226 }
233 227
234 vt8500_rtc->res = devm_request_mem_region(&pdev->dev, 228 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
235 vt8500_rtc->res->start, 229 vt8500_rtc->regbase = devm_ioremap_resource(&pdev->dev, res);
236 resource_size(vt8500_rtc->res), 230 if (IS_ERR(vt8500_rtc->regbase))
237 "vt8500-rtc"); 231 return PTR_ERR(vt8500_rtc->regbase);
238 if (vt8500_rtc->res == NULL) {
239 dev_err(&pdev->dev, "failed to request I/O memory\n");
240 return -EBUSY;
241 }
242
243 vt8500_rtc->regbase = devm_ioremap(&pdev->dev, vt8500_rtc->res->start,
244 resource_size(vt8500_rtc->res));
245 if (!vt8500_rtc->regbase) {
246 dev_err(&pdev->dev, "Unable to map RTC I/O memory\n");
247 ret = -EBUSY;
248 goto err_return;
249 }
250 232
251 /* Enable RTC and set it to 24-hour mode */ 233 /* Enable RTC and set it to 24-hour mode */
252 writel(VT8500_RTC_CR_ENABLE, 234 writel(VT8500_RTC_CR_ENABLE,