struct rtc_plat_data {
        struct rtc_device *rtc;
        void __iomem *ioaddr;           /* virtual base address */
-       int size;                               /* amount of memory mapped */
        int irq;
        unsigned int irqen;
        int alrm_sec;
        struct rtc_plat_data *pdata;
        int ret = 0;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
-       pdata->size = resource_size(res);
-       if (!devm_request_mem_region(&pdev->dev, res->start, pdata->size,
-                       pdev->name))
-               return -EBUSY;
-       ds1511_base = devm_ioremap(&pdev->dev, res->start, pdata->size);
-       if (!ds1511_base)
-               return -ENOMEM;
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       ds1511_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ds1511_base))
+               return PTR_ERR(ds1511_base);
        pdata->ioaddr = ds1511_base;
        pdata->irq = platform_get_irq(pdev, 0);
 
 
        void __iomem *ioaddr;
        int ret = 0;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
-       if (!devm_request_mem_region(&pdev->dev, res->start, RTC_REG_SIZE,
-                       pdev->name))
-               return -EBUSY;
 
-       ioaddr = devm_ioremap(&pdev->dev, res->start, RTC_REG_SIZE);
-       if (!ioaddr)
-               return -ENOMEM;
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ioaddr))
+               return PTR_ERR(ioaddr);
        pdata->ioaddr = ioaddr;
        pdata->irq = platform_get_irq(pdev, 0);
 
 
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENXIO;
-
-       if (!devm_request_mem_region(&pdev->dev, res->start,
-                                    resource_size(res), pdev->name))
-               return -EBUSY;
-
-       ep93xx_rtc->mmio_base = devm_ioremap(&pdev->dev, res->start,
-                                            resource_size(res));
-       if (!ep93xx_rtc->mmio_base)
-               return -ENXIO;
+       ep93xx_rtc->mmio_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ep93xx_rtc->mmio_base))
+               return PTR_ERR(ep93xx_rtc->mmio_base);
 
        pdev->dev.platform_data = ep93xx_rtc;
        platform_set_drvdata(pdev, ep93xx_rtc);
 
        struct imxdi_dev *imxdi;
        int rc;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
        imxdi = devm_kzalloc(&pdev->dev, sizeof(*imxdi), GFP_KERNEL);
        if (!imxdi)
                return -ENOMEM;
 
        imxdi->pdev = pdev;
 
-       if (!devm_request_mem_region(&pdev->dev, res->start, resource_size(res),
-                               pdev->name))
-               return -EBUSY;
-
-       imxdi->ioaddr = devm_ioremap(&pdev->dev, res->start,
-                       resource_size(res));
-       if (imxdi->ioaddr == NULL)
-               return -ENOMEM;
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       imxdi->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(imxdi->ioaddr))
+               return PTR_ERR(imxdi->ioaddr);
 
        spin_lock_init(&imxdi->irq_lock);
 
 
 {
        struct resource *res;
        struct lpc32xx_rtc *rtc;
-       resource_size_t size;
        int rtcirq;
        u32 tmp;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(&pdev->dev, "Can't get memory resource\n");
-               return -ENOENT;
-       }
-
        rtcirq = platform_get_irq(pdev, 0);
        if (rtcirq < 0 || rtcirq >= NR_IRQS) {
                dev_warn(&pdev->dev, "Can't get interrupt resource\n");
        }
        rtc->irq = rtcirq;
 
-       size = resource_size(res);
-
-       if (!devm_request_mem_region(&pdev->dev, res->start, size,
-                                    pdev->name)) {
-               dev_err(&pdev->dev, "RTC registers are not free\n");
-               return -EBUSY;
-       }
-
-       rtc->rtc_base = devm_ioremap(&pdev->dev, res->start, size);
-       if (!rtc->rtc_base) {
-               dev_err(&pdev->dev, "Can't map memory\n");
-               return -ENOMEM;
-       }
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       rtc->rtc_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(rtc->rtc_base))
+               return PTR_ERR(rtc->rtc_base);
 
        spin_lock_init(&rtc->lock);
 
 
 {
        struct resource *res;
        struct rtc_plat_data *pdata;
-       resource_size_t size;
        u32 rtc_time;
        int ret = 0;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
 
-       size = resource_size(res);
-       if (!devm_request_mem_region(&pdev->dev, res->start, size,
-                                    pdev->name))
-               return -EBUSY;
-
-       pdata->ioaddr = devm_ioremap(&pdev->dev, res->start, size);
-       if (!pdata->ioaddr)
-               return -ENOMEM;
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       pdata->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(pdata->ioaddr))
+               return PTR_ERR(pdata->ioaddr);
 
        pdata->clk = devm_clk_get(&pdev->dev, NULL);
        /* Not all SoCs require a clock.*/
 
        unsigned long rate;
        int ret;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
 
        pdata->devtype = pdev->id_entry->driver_data;
 
-       if (!devm_request_mem_region(&pdev->dev, res->start,
-                                    resource_size(res), pdev->name))
-               return -EBUSY;
-
-       pdata->ioaddr = devm_ioremap(&pdev->dev, res->start,
-                                    resource_size(res));
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       pdata->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(pdata->ioaddr))
+               return PTR_ERR(pdata->ioaddr);
 
        pdata->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(pdata->clk)) {
 
        void __iomem *ioaddr;
        int ret = 0;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
-       if (!devm_request_mem_region(&pdev->dev, res->start, RTC_REG_SIZE,
-                       pdev->name))
-               return -EBUSY;
-       ioaddr = devm_ioremap(&pdev->dev, res->start, RTC_REG_SIZE);
-       if (!ioaddr)
-               return -ENOMEM;
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ioaddr))
+               return PTR_ERR(ioaddr);
        pdata->ioaddr = ioaddr;
        pdata->irq = platform_get_irq(pdev, 0);
 
 
        struct resource *res;
        int irq, ret;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
        irq = platform_get_irq(pdev, 0);
        if (irq < 0)
                return -ENODEV;
                return -ENOMEM;
        platform_set_drvdata(pdev, pdata);
 
-       if (!devm_request_mem_region(&pdev->dev, res->start,
-                                    resource_size(res), pdev->name))
-               return -EBUSY;
-       pdata->rtcreg = devm_ioremap(&pdev->dev, res->start,
-                                    resource_size(res));
-       if (!pdata->rtcreg)
-               return -EBUSY;
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       pdata->rtcreg = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(pdata->rtcreg))
+               return PTR_ERR(pdata->rtcreg);
 
        spin_lock_init(&pdata->lock);
        tx4939_rtc_cmd(pdata->rtcreg, TX4939_RTCCTL_COMMAND_NOP);