Commit 42d34191 authored by Sachin Kamat's avatar Sachin Kamat Committed by Greg Kroah-Hartman

serial: imx: Use devm_* APIs

devm_* APIs are device managed and make cleanup and exit code simpler
and easier.

Cc: Shawn Guo <shawn.guo@linaro.org>
Acked-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 50bbdba3
...@@ -1461,7 +1461,7 @@ static int serial_imx_probe(struct platform_device *pdev) ...@@ -1461,7 +1461,7 @@ static int serial_imx_probe(struct platform_device *pdev)
struct resource *res; struct resource *res;
struct pinctrl *pinctrl; struct pinctrl *pinctrl;
sport = kzalloc(sizeof(*sport), GFP_KERNEL); sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL);
if (!sport) if (!sport)
return -ENOMEM; return -ENOMEM;
...@@ -1469,19 +1469,15 @@ static int serial_imx_probe(struct platform_device *pdev) ...@@ -1469,19 +1469,15 @@ static int serial_imx_probe(struct platform_device *pdev)
if (ret > 0) if (ret > 0)
serial_imx_probe_pdata(sport, pdev); serial_imx_probe_pdata(sport, pdev);
else if (ret < 0) else if (ret < 0)
goto free; return ret;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) { if (!res)
ret = -ENODEV; return -ENODEV;
goto free;
}
base = ioremap(res->start, PAGE_SIZE); base = devm_ioremap(&pdev->dev, res->start, PAGE_SIZE);
if (!base) { if (!base)
ret = -ENOMEM; return -ENOMEM;
goto free;
}
sport->port.dev = &pdev->dev; sport->port.dev = &pdev->dev;
sport->port.mapbase = res->start; sport->port.mapbase = res->start;
...@@ -1503,21 +1499,21 @@ static int serial_imx_probe(struct platform_device *pdev) ...@@ -1503,21 +1499,21 @@ static int serial_imx_probe(struct platform_device *pdev)
if (IS_ERR(pinctrl)) { if (IS_ERR(pinctrl)) {
ret = PTR_ERR(pinctrl); ret = PTR_ERR(pinctrl);
dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", ret); dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", ret);
goto unmap; return ret;
} }
sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg"); sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
if (IS_ERR(sport->clk_ipg)) { if (IS_ERR(sport->clk_ipg)) {
ret = PTR_ERR(sport->clk_ipg); ret = PTR_ERR(sport->clk_ipg);
dev_err(&pdev->dev, "failed to get ipg clk: %d\n", ret); dev_err(&pdev->dev, "failed to get ipg clk: %d\n", ret);
goto unmap; return ret;
} }
sport->clk_per = devm_clk_get(&pdev->dev, "per"); sport->clk_per = devm_clk_get(&pdev->dev, "per");
if (IS_ERR(sport->clk_per)) { if (IS_ERR(sport->clk_per)) {
ret = PTR_ERR(sport->clk_per); ret = PTR_ERR(sport->clk_per);
dev_err(&pdev->dev, "failed to get per clk: %d\n", ret); dev_err(&pdev->dev, "failed to get per clk: %d\n", ret);
goto unmap; return ret;
} }
clk_prepare_enable(sport->clk_per); clk_prepare_enable(sport->clk_per);
...@@ -1546,11 +1542,6 @@ static int serial_imx_probe(struct platform_device *pdev) ...@@ -1546,11 +1542,6 @@ static int serial_imx_probe(struct platform_device *pdev)
clkput: clkput:
clk_disable_unprepare(sport->clk_per); clk_disable_unprepare(sport->clk_per);
clk_disable_unprepare(sport->clk_ipg); clk_disable_unprepare(sport->clk_ipg);
unmap:
iounmap(sport->port.membase);
free:
kfree(sport);
return ret; return ret;
} }
...@@ -1571,9 +1562,6 @@ static int serial_imx_remove(struct platform_device *pdev) ...@@ -1571,9 +1562,6 @@ static int serial_imx_remove(struct platform_device *pdev)
if (pdata && pdata->exit) if (pdata && pdata->exit)
pdata->exit(pdev); pdata->exit(pdev);
iounmap(sport->port.membase);
kfree(sport);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment