|
@@ -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",
|