aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/omap-serial.c
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2014-04-23 10:58:33 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-24 19:19:02 -0400
commitd044d2356f8dd18c755e13f34318bc03ef9c6887 (patch)
tree16d90ad7c32bdd3a8fb324c02d4242a43e8d27cc /drivers/tty/serial/omap-serial.c
parent54af692c9fcd736977bc94293c73997e94f17378 (diff)
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>
Diffstat (limited to 'drivers/tty/serial/omap-serial.c')
-rw-r--r--drivers/tty/serial/omap-serial.c32
1 files changed, 9 insertions, 23 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index cb45e8810b35..b46aaf33f35e 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1644,6 +1644,7 @@ static int serial_omap_probe(struct platform_device *pdev)
1644 struct omap_uart_port_info *omap_up_info = dev_get_platdata(&pdev->dev); 1644 struct omap_uart_port_info *omap_up_info = dev_get_platdata(&pdev->dev);
1645 struct uart_omap_port *up; 1645 struct uart_omap_port *up;
1646 struct resource *mem; 1646 struct resource *mem;
1647 void __iomem *base;
1647 int uartirq = 0; 1648 int uartirq = 0;
1648 int wakeirq = 0; 1649 int wakeirq = 0;
1649 int ret; 1650 int ret;
@@ -1662,17 +1663,14 @@ static int serial_omap_probe(struct platform_device *pdev)
1662 return -EPROBE_DEFER; 1663 return -EPROBE_DEFER;
1663 } 1664 }
1664 1665
1665 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1666 up = devm_kzalloc(&pdev->dev, sizeof(*up), GFP_KERNEL);
1666 if (!mem) { 1667 if (!up)
1667 dev_err(&pdev->dev, "no mem resource?\n"); 1668 return -ENOMEM;
1668 return -ENODEV;
1669 }
1670 1669
1671 if (!devm_request_mem_region(&pdev->dev, mem->start, resource_size(mem), 1670 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1672 pdev->dev.driver->name)) { 1671 base = devm_ioremap_resource(&pdev->dev, mem);
1673 dev_err(&pdev->dev, "memory region already claimed\n"); 1672 if (IS_ERR(base))
1674 return -EBUSY; 1673 return PTR_ERR(base);
1675 }
1676 1674
1677 if (gpio_is_valid(omap_up_info->DTR_gpio) && 1675 if (gpio_is_valid(omap_up_info->DTR_gpio) &&
1678 omap_up_info->DTR_present) { 1676 omap_up_info->DTR_present) {
@@ -1686,10 +1684,6 @@ static int serial_omap_probe(struct platform_device *pdev)
1686 return ret; 1684 return ret;
1687 } 1685 }
1688 1686
1689 up = devm_kzalloc(&pdev->dev, sizeof(*up), GFP_KERNEL);
1690 if (!up)
1691 return -ENOMEM;
1692
1693 if (gpio_is_valid(omap_up_info->DTR_gpio) && 1687 if (gpio_is_valid(omap_up_info->DTR_gpio) &&
1694 omap_up_info->DTR_present) { 1688 omap_up_info->DTR_present) {
1695 up->DTR_gpio = omap_up_info->DTR_gpio; 1689 up->DTR_gpio = omap_up_info->DTR_gpio;
@@ -1732,14 +1726,7 @@ static int serial_omap_probe(struct platform_device *pdev)
1732 1726
1733 sprintf(up->name, "OMAP UART%d", up->port.line); 1727 sprintf(up->name, "OMAP UART%d", up->port.line);
1734 up->port.mapbase = mem->start; 1728 up->port.mapbase = mem->start;
1735 up->port.membase = devm_ioremap(&pdev->dev, mem->start, 1729 up->port.membase = base;
1736 resource_size(mem));
1737 if (!up->port.membase) {
1738 dev_err(&pdev->dev, "can't ioremap UART\n");
1739 ret = -ENOMEM;
1740 goto err_ioremap;
1741 }
1742
1743 up->port.flags = omap_up_info->flags; 1730 up->port.flags = omap_up_info->flags;
1744 up->port.uartclk = omap_up_info->uartclk; 1731 up->port.uartclk = omap_up_info->uartclk;
1745 if (!up->port.uartclk) { 1732 if (!up->port.uartclk) {
@@ -1786,7 +1773,6 @@ static int serial_omap_probe(struct platform_device *pdev)
1786err_add_port: 1773err_add_port:
1787 pm_runtime_put(&pdev->dev); 1774 pm_runtime_put(&pdev->dev);
1788 pm_runtime_disable(&pdev->dev); 1775 pm_runtime_disable(&pdev->dev);
1789err_ioremap:
1790err_rs485: 1776err_rs485:
1791err_port_line: 1777err_port_line:
1792 dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n", 1778 dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n",