diff options
author | Felipe Balbi <balbi@ti.com> | 2014-04-23 10:58:33 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-04-24 19:19:02 -0400 |
commit | d044d2356f8dd18c755e13f34318bc03ef9c6887 (patch) | |
tree | 16d90ad7c32bdd3a8fb324c02d4242a43e8d27cc /drivers/tty/serial/omap-serial.c | |
parent | 54af692c9fcd736977bc94293c73997e94f17378 (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.c | 32 |
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) | |||
1786 | err_add_port: | 1773 | err_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); |
1789 | err_ioremap: | ||
1790 | err_rs485: | 1776 | err_rs485: |
1791 | err_port_line: | 1777 | err_port_line: |
1792 | dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n", | 1778 | dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n", |