ar71xx: improve support for the My Net Wi-Fi Range Extender device
[openwrt/openwrt.git] / target / linux / ar71xx / patches-3.10 / 103-tty-ar933x_uart-convert-to-use-devm_-functions.patch
1 From f157945cd134e2cfa47ed9bb1f599632d112d94e Mon Sep 17 00:00:00 2001
2 From: Gabor Juhos <juhosg@openwrt.org>
3 Date: Mon, 29 Jul 2013 19:39:20 +0200
4 Subject: [PATCH] tty: ar933x_uart: convert to use devm_* functions
5
6 Use devm_* functions in order to simplify cleanup
7 paths.
8
9 Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
10 ---
11 drivers/tty/serial/ar933x_uart.c | 26 ++++++++------------------
12 1 file changed, 8 insertions(+), 18 deletions(-)
13
14 --- a/drivers/tty/serial/ar933x_uart.c
15 +++ b/drivers/tty/serial/ar933x_uart.c
16 @@ -652,19 +652,18 @@ static int ar933x_uart_probe(struct plat
17 return -EINVAL;
18 }
19
20 - up = kzalloc(sizeof(struct ar933x_uart_port), GFP_KERNEL);
21 + up = devm_kzalloc(&pdev->dev, sizeof(struct ar933x_uart_port),
22 + GFP_KERNEL);
23 if (!up)
24 return -ENOMEM;
25
26 port = &up->port;
27 - port->mapbase = mem_res->start;
28
29 - port->membase = ioremap(mem_res->start, AR933X_UART_REGS_SIZE);
30 - if (!port->membase) {
31 - ret = -ENOMEM;
32 - goto err_free_up;
33 - }
34 + port->membase = devm_ioremap_resource(&pdev->dev, mem_res);
35 + if (IS_ERR(port->membase))
36 + return PTR_ERR(port->membase);
37
38 + port->mapbase = mem_res->start;
39 port->line = id;
40 port->irq = irq_res->start;
41 port->dev = &pdev->dev;
42 @@ -686,16 +685,10 @@ static int ar933x_uart_probe(struct plat
43
44 ret = uart_add_one_port(&ar933x_uart_driver, &up->port);
45 if (ret)
46 - goto err_unmap;
47 + return ret;
48
49 platform_set_drvdata(pdev, up);
50 return 0;
51 -
52 -err_unmap:
53 - iounmap(up->port.membase);
54 -err_free_up:
55 - kfree(up);
56 - return ret;
57 }
58
59 static int ar933x_uart_remove(struct platform_device *pdev)
60 @@ -705,11 +698,8 @@ static int ar933x_uart_remove(struct pla
61 up = platform_get_drvdata(pdev);
62 platform_set_drvdata(pdev, NULL);
63
64 - if (up) {
65 + if (up)
66 uart_remove_one_port(&ar933x_uart_driver, &up->port);
67 - iounmap(up->port.membase);
68 - kfree(up);
69 - }
70
71 return 0;
72 }