From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Fabio Estevam <fabio.estevam@freescale.com>
Cc: linux-can@vger.kernel.org, festevam@gmail.com
Subject: Re: [PATCH 1/2] flexcan: Use devm_ioremap_resource()
Date: Mon, 22 Jul 2013 16:53:48 +0200 [thread overview]
Message-ID: <51ED477C.5090102@pengutronix.de> (raw)
In-Reply-To: <1374502981-16282-1-git-send-email-fabio.estevam@freescale.com>
[-- Attachment #1: Type: text/plain, Size: 3673 bytes --]
On 07/22/2013 04:23 PM, Fabio Estevam wrote:
> Using devm_ioremap_resource() can make the code simpler and smaller.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> drivers/net/can/flexcan.c | 46 +++++++++-------------------------------------
> 1 file changed, 9 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 7b0be09..1b07d75 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1001,7 +1001,6 @@ static int flexcan_probe(struct platform_device *pdev)
> struct resource *mem;
> struct clk *clk_ipg = NULL, *clk_per = NULL;
> void __iomem *base;
> - resource_size_t mem_size;
> int err, irq;
> u32 clock_freq = 0;
>
> @@ -1013,42 +1012,29 @@ static int flexcan_probe(struct platform_device *pdev)
> clk_ipg = devm_clk_get(&pdev->dev, "ipg");
> if (IS_ERR(clk_ipg)) {
> dev_err(&pdev->dev, "no ipg clock defined\n");
> - err = PTR_ERR(clk_ipg);
> - goto failed_clock;
> + return PTR_ERR(clk_ipg);
> }
> clock_freq = clk_get_rate(clk_ipg);
>
> clk_per = devm_clk_get(&pdev->dev, "per");
> if (IS_ERR(clk_per)) {
> dev_err(&pdev->dev, "no per clock defined\n");
> - err = PTR_ERR(clk_per);
> - goto failed_clock;
> + return PTR_ERR(clk_per);
> }
> }
>
> mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> irq = platform_get_irq(pdev, 0);
> - if (!mem || irq <= 0) {
> - err = -ENODEV;
> - goto failed_get;
> - }
> + if (irq <= 0)
> + return -ENODEV;
>
> - mem_size = resource_size(mem);
> - if (!request_mem_region(mem->start, mem_size, pdev->name)) {
> - err = -EBUSY;
> - goto failed_get;
> - }
> -
> - base = ioremap(mem->start, mem_size);
> - if (!base) {
> - err = -ENOMEM;
> - goto failed_map;
> - }
> + base = devm_ioremap_resource(&pdev->dev, mem);
> + if (IS_ERR(base))
> + return PTR_ERR(base);
>
> dev = alloc_candev(sizeof(struct flexcan_priv), 1);
> if (!dev) {
> - err = -ENOMEM;
> - goto failed_alloc;
> + return -ENOMEM;
> }
>
> of_id = of_match_device(flexcan_of_match, &pdev->dev);
> @@ -1058,8 +1044,7 @@ static int flexcan_probe(struct platform_device *pdev)
> devtype_data = (struct flexcan_devtype_data *)
> pdev->id_entry->driver_data;
> } else {
> - err = -ENODEV;
> - goto failed_devtype;
> + return -ENODEV;
You're missing "free_candev(dev);". If you move the alloc_candev after
the devtype, the code should be cleaner.
> }
>
> dev->netdev_ops = &flexcan_netdev_ops;
> @@ -1104,28 +1089,15 @@ static int flexcan_probe(struct platform_device *pdev)
> return 0;
>
> failed_register:
> - failed_devtype:
> free_candev(dev);
> - failed_alloc:
> - iounmap(base);
> - failed_map:
> - release_mem_region(mem->start, mem_size);
> - failed_get:
> - failed_clock:
> return err;
> }
>
> static int flexcan_remove(struct platform_device *pdev)
> {
> struct net_device *dev = platform_get_drvdata(pdev);
> - struct flexcan_priv *priv = netdev_priv(dev);
> - struct resource *mem;
>
> unregister_flexcandev(dev);
> - iounmap(priv->base);
> -
> - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - release_mem_region(mem->start, resource_size(mem));
>
> free_candev(dev);
>
>
Otherwise, looks good.
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]
prev parent reply other threads:[~2013-07-22 14:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-22 14:23 [PATCH 1/2] flexcan: Use devm_ioremap_resource() Fabio Estevam
2013-07-22 14:23 ` [PATCH 2/2] flexcan: Add MODULE_ALIAS Fabio Estevam
2013-07-22 14:55 ` Marc Kleine-Budde
2013-07-22 14:53 ` Marc Kleine-Budde [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51ED477C.5090102@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=fabio.estevam@freescale.com \
--cc=festevam@gmail.com \
--cc=linux-can@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.