if (!res)
                return -ENXIO;
 
-       if (!request_mem_region(res->start, res->end - res->start + 1, DRIVER_NAME))
+       if (!request_mem_region(res->start, resource_size(res), DRIVER_NAME))
                return -EBUSY;
 
        mmc = mmc_alloc_host(sizeof(struct at91mci_host), &pdev->dev);
        /*
         * Map I/O region
         */
-       host->baseaddr = ioremap(res->start, res->end - res->start + 1);
+       host->baseaddr = ioremap(res->start, resource_size(res));
        if (!host->baseaddr) {
                ret = -ENOMEM;
                goto fail1;
 fail5:
        mmc_free_host(mmc);
 fail6:
-       release_mem_region(res->start, res->end - res->start + 1);
+       release_mem_region(res->start, resource_size(res));
        dev_err(&pdev->dev, "probe failed, err %d\n", ret);
        return ret;
 }
 
        iounmap(host->baseaddr);
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, res->end - res->start + 1);
+       release_mem_region(res->start, resource_size(res));
 
        mmc_free_host(mmc);
        platform_set_drvdata(pdev, NULL);