struct omap_uart_port_info *omap_up_info = dev_get_platdata(&pdev->dev);
        struct uart_omap_port *up;
        struct resource *mem;
+       void __iomem *base;
        int uartirq = 0;
        int wakeirq = 0;
        int ret;
                        return -EPROBE_DEFER;
        }
 
-       mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mem) {
-               dev_err(&pdev->dev, "no mem resource?\n");
-               return -ENODEV;
-       }
+       up = devm_kzalloc(&pdev->dev, sizeof(*up), GFP_KERNEL);
+       if (!up)
+               return -ENOMEM;
 
-       if (!devm_request_mem_region(&pdev->dev, mem->start, resource_size(mem),
-                               pdev->dev.driver->name)) {
-               dev_err(&pdev->dev, "memory region already claimed\n");
-               return -EBUSY;
-       }
+       mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        if (gpio_is_valid(omap_up_info->DTR_gpio) &&
            omap_up_info->DTR_present) {
                        return ret;
        }
 
-       up = devm_kzalloc(&pdev->dev, sizeof(*up), GFP_KERNEL);
-       if (!up)
-               return -ENOMEM;
-
        if (gpio_is_valid(omap_up_info->DTR_gpio) &&
            omap_up_info->DTR_present) {
                up->DTR_gpio = omap_up_info->DTR_gpio;
 
        sprintf(up->name, "OMAP UART%d", up->port.line);
        up->port.mapbase = mem->start;
-       up->port.membase = devm_ioremap(&pdev->dev, mem->start,
-                                               resource_size(mem));
-       if (!up->port.membase) {
-               dev_err(&pdev->dev, "can't ioremap UART\n");
-               ret = -ENOMEM;
-               goto err_ioremap;
-       }
-
+       up->port.membase = base;
        up->port.flags = omap_up_info->flags;
        up->port.uartclk = omap_up_info->uartclk;
        if (!up->port.uartclk) {
 err_add_port:
        pm_runtime_put(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
-err_ioremap:
 err_rs485:
 err_port_line:
        dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n",