Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+10 −22
Original line number Original line Diff line number Diff line
@@ -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)
	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)
	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 @@ deinit:
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)
	if (pdata && pdata->exit)
	if (pdata && pdata->exit)
		pdata->exit(pdev);
		pdata->exit(pdev);


	iounmap(sport->port.membase);
	kfree(sport);

	return 0;
	return 0;
}
}