linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Hannu Heikkinen <hannuxx-X3B1VOXEql0@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Cc: hsweeten-3FF4nKcrg1dE2c76skzGb0EOCMrvLtNR@public.gmane.org,
	mika.westerberg-X3B1VOXEql0@public.gmane.org
Subject: Re: [PATCH v3 RESEND] spi/ep93xx: clean probe/remove routines
Date: Wed, 09 May 2012 18:38:20 -0600	[thread overview]
Message-ID: <20120510003820.72A573E08F4@localhost> (raw)
In-Reply-To: <1336573586-9504-1-git-send-email-hannuxx-X3B1VOXEql0@public.gmane.org>

On Wed,  9 May 2012 17:26:26 +0300, Hannu Heikkinen <hannuxx-X3B1VOXEql0@public.gmane.org> wrote:
> Use devm_* functions for managing devres resources.
> 
> Also use local variable irq and remove irq variable from
> struct ep93xx_spi, as it is needed only in probe routine.
> 
> Acked-by: Mika Westerberg <mika.westerberg-X3B1VOXEql0@public.gmane.org>
> Acked-by: H Hartley Sweeten <hsweeten-3FF4nKcrg1dE2c76skzGb0EOCMrvLtNR@public.gmane.org>
> Signed-off-by: Hannu Heikkinen <hannuxx-X3B1VOXEql0@public.gmane.org>

Applied, thanks

g.

> ---
>  drivers/spi/spi-ep93xx.c |   37 ++++++++++---------------------------
>  1 file changed, 10 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c
> index e805507..f97f1d2 100644
> --- a/drivers/spi/spi-ep93xx.c
> +++ b/drivers/spi/spi-ep93xx.c
> @@ -76,7 +76,6 @@
>   * @clk: clock for the controller
>   * @regs_base: pointer to ioremap()'d registers
>   * @sspdr_phys: physical address of the SSPDR register
> - * @irq: IRQ number used by the driver
>   * @min_rate: minimum clock rate (in Hz) supported by the controller
>   * @max_rate: maximum clock rate (in Hz) supported by the controller
>   * @running: is the queue running
> @@ -114,7 +113,6 @@ struct ep93xx_spi {
>  	struct clk			*clk;
>  	void __iomem			*regs_base;
>  	unsigned long			sspdr_phys;
> -	int				irq;
>  	unsigned long			min_rate;
>  	unsigned long			max_rate;
>  	bool				running;
> @@ -1031,6 +1029,7 @@ static int __devinit ep93xx_spi_probe(struct platform_device *pdev)
>  	struct ep93xx_spi_info *info;
>  	struct ep93xx_spi *espi;
>  	struct resource *res;
> +	int irq;
>  	int error;
>  
>  	info = pdev->dev.platform_data;
> @@ -1070,8 +1069,8 @@ static int __devinit ep93xx_spi_probe(struct platform_device *pdev)
>  	espi->min_rate = clk_get_rate(espi->clk) / (254 * 256);
>  	espi->pdev = pdev;
>  
> -	espi->irq = platform_get_irq(pdev, 0);
> -	if (espi->irq < 0) {
> +	irq = platform_get_irq(pdev, 0);
> +	if (irq < 0) {
>  		error = -EBUSY;
>  		dev_err(&pdev->dev, "failed to get irq resources\n");
>  		goto fail_put_clock;
> @@ -1084,26 +1083,20 @@ static int __devinit ep93xx_spi_probe(struct platform_device *pdev)
>  		goto fail_put_clock;
>  	}
>  
> -	res = request_mem_region(res->start, resource_size(res), pdev->name);
> -	if (!res) {
> -		dev_err(&pdev->dev, "unable to request iomem resources\n");
> -		error = -EBUSY;
> -		goto fail_put_clock;
> -	}
> -
>  	espi->sspdr_phys = res->start + SSPDR;
> -	espi->regs_base = ioremap(res->start, resource_size(res));
> +
> +	espi->regs_base = devm_request_and_ioremap(&pdev->dev, res);
>  	if (!espi->regs_base) {
>  		dev_err(&pdev->dev, "failed to map resources\n");
>  		error = -ENODEV;
> -		goto fail_free_mem;
> +		goto fail_put_clock;
>  	}
>  
> -	error = request_irq(espi->irq, ep93xx_spi_interrupt, 0,
> -			    "ep93xx-spi", espi);
> +	error = devm_request_irq(&pdev->dev, irq, ep93xx_spi_interrupt,
> +				0, "ep93xx-spi", espi);
>  	if (error) {
>  		dev_err(&pdev->dev, "failed to request irq\n");
> -		goto fail_unmap_regs;
> +		goto fail_put_clock;
>  	}
>  
>  	if (info->use_dma && ep93xx_spi_setup_dma(espi))
> @@ -1128,7 +1121,7 @@ static int __devinit ep93xx_spi_probe(struct platform_device *pdev)
>  	}
>  
>  	dev_info(&pdev->dev, "EP93xx SPI Controller at 0x%08lx irq %d\n",
> -		 (unsigned long)res->start, espi->irq);
> +		 (unsigned long)res->start, irq);
>  
>  	return 0;
>  
> @@ -1136,11 +1129,6 @@ fail_free_queue:
>  	destroy_workqueue(espi->wq);
>  fail_free_dma:
>  	ep93xx_spi_release_dma(espi);
> -	free_irq(espi->irq, espi);
> -fail_unmap_regs:
> -	iounmap(espi->regs_base);
> -fail_free_mem:
> -	release_mem_region(res->start, resource_size(res));
>  fail_put_clock:
>  	clk_put(espi->clk);
>  fail_release_master:
> @@ -1154,7 +1142,6 @@ static int __devexit ep93xx_spi_remove(struct platform_device *pdev)
>  {
>  	struct spi_master *master = platform_get_drvdata(pdev);
>  	struct ep93xx_spi *espi = spi_master_get_devdata(master);
> -	struct resource *res;
>  
>  	spin_lock_irq(&espi->lock);
>  	espi->running = false;
> @@ -1180,10 +1167,6 @@ static int __devexit ep93xx_spi_remove(struct platform_device *pdev)
>  	spin_unlock_irq(&espi->lock);
>  
>  	ep93xx_spi_release_dma(espi);
> -	free_irq(espi->irq, espi);
> -	iounmap(espi->regs_base);
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	release_mem_region(res->start, resource_size(res));
>  	clk_put(espi->clk);
>  	platform_set_drvdata(pdev, NULL);
>  
> -- 
> 1.7.10
> 
> 
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and 
> threat landscape has changed and how IT managers can respond. Discussions 
> will include endpoint security, mobile security and the latest in malware 
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> spi-devel-general mailing list
> spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/spi-devel-general

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/

      parent reply	other threads:[~2012-05-10  0:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-09 14:26 [PATCH v3 RESEND] spi/ep93xx: clean probe/remove routines Hannu Heikkinen
     [not found] ` <1336573586-9504-1-git-send-email-hannuxx-X3B1VOXEql0@public.gmane.org>
2012-05-10  0:38   ` Grant Likely [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=20120510003820.72A573E08F4@localhost \
    --to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
    --cc=hannuxx-X3B1VOXEql0@public.gmane.org \
    --cc=hsweeten-3FF4nKcrg1dE2c76skzGb0EOCMrvLtNR@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mika.westerberg-X3B1VOXEql0@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).