tty: serial: omap: switch over to devm_ioremap_resource
authorFelipe Balbi <balbi@ti.com>
Wed, 23 Apr 2014 14:58:33 +0000 (09:58 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 24 Apr 2014 23:19:02 +0000 (16:19 -0700)
just using helper function to remove some duplicated
code a bit. While at that, also move allocation of
struct uart_omap_port higher in the code so that
we return much earlier in case of no memory.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/omap-serial.c

index cb45e8810b357169df552d05e43a3255a62ad672..b46aaf33f35e144903ca7281cc2801c4a23a85dd 100644 (file)
@@ -1644,6 +1644,7 @@ static int serial_omap_probe(struct platform_device *pdev)
        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;
@@ -1662,17 +1663,14 @@ static int serial_omap_probe(struct platform_device *pdev)
                        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) {
@@ -1686,10 +1684,6 @@ static int serial_omap_probe(struct platform_device *pdev)
                        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;
@@ -1732,14 +1726,7 @@ static int serial_omap_probe(struct platform_device *pdev)
 
        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) {
@@ -1786,7 +1773,6 @@ static int serial_omap_probe(struct platform_device *pdev)
 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",