tty: serial: omap: switch over to devm_ioremap_resource
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>
This commit is contained in:
parent
54af692c9f
commit
d044d2356f
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue