summaryrefslogtreecommitdiff
path: root/target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch')
-rw-r--r--target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch b/target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch
new file mode 100644
index 0000000000..fab6f23416
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.10/103-tty-ar933x_uart-convert-to-use-devm_-functions.patch
@@ -0,0 +1,72 @@
+From f157945cd134e2cfa47ed9bb1f599632d112d94e Mon Sep 17 00:00:00 2001
+From: Gabor Juhos <juhosg@openwrt.org>
+Date: Mon, 29 Jul 2013 19:39:20 +0200
+Subject: [PATCH] tty: ar933x_uart: convert to use devm_* functions
+
+Use devm_* functions in order to simplify cleanup
+paths.
+
+Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+---
+ drivers/tty/serial/ar933x_uart.c | 26 ++++++++------------------
+ 1 file changed, 8 insertions(+), 18 deletions(-)
+
+--- a/drivers/tty/serial/ar933x_uart.c
++++ b/drivers/tty/serial/ar933x_uart.c
+@@ -652,19 +652,18 @@ static int ar933x_uart_probe(struct plat
+ return -EINVAL;
+ }
+
+- up = kzalloc(sizeof(struct ar933x_uart_port), GFP_KERNEL);
++ up = devm_kzalloc(&pdev->dev, sizeof(struct ar933x_uart_port),
++ GFP_KERNEL);
+ if (!up)
+ return -ENOMEM;
+
+ port = &up->port;
+- port->mapbase = mem_res->start;
+
+- port->membase = ioremap(mem_res->start, AR933X_UART_REGS_SIZE);
+- if (!port->membase) {
+- ret = -ENOMEM;
+- goto err_free_up;
+- }
++ port->membase = devm_ioremap_resource(&pdev->dev, mem_res);
++ if (IS_ERR(port->membase))
++ return PTR_ERR(port->membase);
+
++ port->mapbase = mem_res->start;
+ port->line = id;
+ port->irq = irq_res->start;
+ port->dev = &pdev->dev;
+@@ -686,16 +685,10 @@ static int ar933x_uart_probe(struct plat
+
+ ret = uart_add_one_port(&ar933x_uart_driver, &up->port);
+ if (ret)
+- goto err_unmap;
++ return ret;
+
+ platform_set_drvdata(pdev, up);
+ return 0;
+-
+-err_unmap:
+- iounmap(up->port.membase);
+-err_free_up:
+- kfree(up);
+- return ret;
+ }
+
+ static int ar933x_uart_remove(struct platform_device *pdev)
+@@ -705,11 +698,8 @@ static int ar933x_uart_remove(struct pla
+ up = platform_get_drvdata(pdev);
+ platform_set_drvdata(pdev, NULL);
+
+- if (up) {
++ if (up)
+ uart_remove_one_port(&ar933x_uart_driver, &up->port);
+- iounmap(up->port.membase);
+- kfree(up);
+- }
+
+ return 0;
+ }