OSDN Git Service

rtc: rtc-vt8500: use devm_ioremap_resource()
authorJingoo Han <jg1.han@samsung.com>
Thu, 3 Apr 2014 21:49:49 +0000 (14:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Apr 2014 23:21:19 +0000 (16:21 -0700)
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>
drivers/rtc/rtc-vt8500.c

index df2ef3e..051da96 100644 (file)
@@ -79,7 +79,6 @@
 
 struct vt8500_rtc {
        void __iomem            *regbase;
-       struct resource         *res;
        int                     irq_alarm;
        struct rtc_device       *rtc;
        spinlock_t              lock;           /* Protects this structure */
@@ -209,6 +208,7 @@ static const struct rtc_class_ops vt8500_rtc_ops = {
 static int vt8500_rtc_probe(struct platform_device *pdev)
 {
        struct vt8500_rtc *vt8500_rtc;
+       struct resource *res;
        int ret;
 
        vt8500_rtc = devm_kzalloc(&pdev->dev,
@@ -219,34 +219,16 @@ static int vt8500_rtc_probe(struct platform_device *pdev)
        spin_lock_init(&vt8500_rtc->lock);
        platform_set_drvdata(pdev, vt8500_rtc);
 
-       vt8500_rtc->res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!vt8500_rtc->res) {
-               dev_err(&pdev->dev, "No I/O memory resource defined\n");
-               return -ENXIO;
-       }
-
        vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0);
        if (vt8500_rtc->irq_alarm < 0) {
                dev_err(&pdev->dev, "No alarm IRQ resource defined\n");
                return vt8500_rtc->irq_alarm;
        }
 
-       vt8500_rtc->res = devm_request_mem_region(&pdev->dev,
-                                       vt8500_rtc->res->start,
-                                       resource_size(vt8500_rtc->res),
-                                       "vt8500-rtc");
-       if (vt8500_rtc->res == NULL) {
-               dev_err(&pdev->dev, "failed to request I/O memory\n");
-               return -EBUSY;
-       }
-
-       vt8500_rtc->regbase = devm_ioremap(&pdev->dev, vt8500_rtc->res->start,
-                                     resource_size(vt8500_rtc->res));
-       if (!vt8500_rtc->regbase) {
-               dev_err(&pdev->dev, "Unable to map RTC I/O memory\n");
-               ret = -EBUSY;
-               goto err_return;
-       }
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       vt8500_rtc->regbase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(vt8500_rtc->regbase))
+               return PTR_ERR(vt8500_rtc->regbase);
 
        /* Enable RTC and set it to 24-hour mode */
        writel(VT8500_RTC_CR_ENABLE,