All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: linux-mmc@vger.kernel.org, linux-sh@vger.kernel.org,
	Chris Ball <cjb@laptop.org>, Magnus Damm <magnus.damm@gmail.com>
Subject: Re: [PATCH 3/4] mmc: sdhi: Make use of per-source irq handlers
Date: Tue, 16 Aug 2011 11:51:42 +0000	[thread overview]
Message-ID: <20110816115141.GE3110@verge.net.au> (raw)
In-Reply-To: <Pine.LNX.4.64.1108161232520.13913@axis700.grange>

On Tue, Aug 16, 2011 at 01:11:42PM +0200, Guennadi Liakhovetski wrote:
> On Tue, 16 Aug 2011, Simon Horman wrote:
> 
> > Make use of per-source irq handles if the
> > platform (data) has multiple irq sources.
> > 
> > Also, as suggested by Guennadi Liakhovetski,
> > add and use defines the index or irqs in platform data.
> > 
> > Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > Cc: Magnus Damm <magnus.damm@gmail.com>
> > Signed-off-by: Simon Horman <horms@verge.net.au>
> > 
> > ---
> > 
> > v3
> > * Update for changes to "mmc: tmio: Provide separate interrupt handlers"
> > * As suggested by Guennadi Liakhovetski:
> >   - Merge in patch "mmc: sdhi: Add defines for platform irq indexes"
> >   - Use an enum instead of defines for irq indexes
> > 
> > v2
> > * Update for changes to "mmc: tmio: Provide separate interrupt handlers"
> > * Make use of defines provided by
> >   "mmc: sdhi: Add defines for platform irq indexes"
> > * As suggested by Guennadi Liakhovetski:
> >   - Don't use a loop to initialise irq handlers, the unrolled version
> >     is easier on the eyes (and exactly the same number of lines of code!)
> > ---
> >  drivers/mmc/host/sh_mobile_sdhi.c  |   60 ++++++++++++++++++++++-------------
> >  include/linux/mmc/sh_mobile_sdhi.h |    7 ++++
> >  2 files changed, 45 insertions(+), 22 deletions(-)
> > 
> > diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c
> > index 774f643..d792705 100644
> > --- a/drivers/mmc/host/sh_mobile_sdhi.c
> > +++ b/drivers/mmc/host/sh_mobile_sdhi.c
> > @@ -96,7 +96,9 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev)
> >  	struct sh_mobile_sdhi_info *p = pdev->dev.platform_data;
> >  	struct tmio_mmc_host *host;
> >  	char clk_name[8];
> > -	int i, irq, ret;
> > +	int irq, ret;
> > +	irqreturn_t (*f)(int irq, void *devid);
> > +	bool multi_irq = false;
> >  
> >  	priv = kzalloc(sizeof(struct sh_mobile_sdhi), GFP_KERNEL);
> >  	if (priv = NULL) {
> > @@ -153,27 +155,33 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev)
> >  	if (ret < 0)
> >  		goto eprobe;
> >  
> > -	for (i = 0; i < 3; i++) {
> > -		irq = platform_get_irq(pdev, i);
> > -		if (irq < 0) {
> > -			if (i) {
> > -				continue;
> > -			} else {
> > -				ret = irq;
> > -				goto eirq;
> > -			}
> > -		}
> > -		ret = request_irq(irq, tmio_mmc_irq, 0,
> > +	irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_SDIO);
> > +	if (irq >= 0) {
> > +		multi_irq = true;
> > +		ret = request_irq(irq, tmio_mmc_sdio_irq, 0,
> >  				  dev_name(&pdev->dev), host);
> > -		if (ret) {
> > -			while (i--) {
> > -				irq = platform_get_irq(pdev, i);
> > -				if (irq >= 0)
> > -					free_irq(irq, host);
> > -			}
> > -			goto eirq;
> > -		}
> > +		if (ret)
> > +			goto eirq_sdio;
> >  	}
> > +
> > +	ret = irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_CARD_DETECT);
> > +	if (irq >= 0) {
> > +		multi_irq = true;
> > +		ret = request_irq(irq, tmio_mmc_sdcard_irq, 0,
> > +				  dev_name(&pdev->dev), host);
> 
> Sorry, I still don't understand why you check "CARD_DETECT" and request 
> "sdcard_irq." Am I missing something or was my comment not clear enough in 
> the previous review?
> 
> > +		if (ret)
> > +			goto eirq_card_detect;
> > +	} else if (multi_irq)
> > +		goto eirq_card_detect;
> 
> ? Sorry, have you maybe missed my review?
> 
> > +
> > +	ret = irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_SDCARD);
> > +	if (irq < 0)
> > +		goto eirq_sdcard;
> > +	f = multi_irq ? tmio_mmc_card_detect_irq : tmio_mmc_irq;
> 
> Same here

Sorry, that is a bug.

As the code seems to work on my board I think it should be fixed by
inverting the values of SH_MOBILE_SDHI_IRQ_SDCARD and
SH_MOBILE_SDHI_IRQ_CARD_DETECT.

I will check that and repost.


WARNING: multiple messages have this Message-ID (diff)
From: Simon Horman <horms@verge.net.au>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: linux-mmc@vger.kernel.org, linux-sh@vger.kernel.org,
	Chris Ball <cjb@laptop.org>, Magnus Damm <magnus.damm@gmail.com>
Subject: Re: [PATCH 3/4] mmc: sdhi: Make use of per-source irq handlers
Date: Tue, 16 Aug 2011 20:51:42 +0900	[thread overview]
Message-ID: <20110816115141.GE3110@verge.net.au> (raw)
In-Reply-To: <Pine.LNX.4.64.1108161232520.13913@axis700.grange>

On Tue, Aug 16, 2011 at 01:11:42PM +0200, Guennadi Liakhovetski wrote:
> On Tue, 16 Aug 2011, Simon Horman wrote:
> 
> > Make use of per-source irq handles if the
> > platform (data) has multiple irq sources.
> > 
> > Also, as suggested by Guennadi Liakhovetski,
> > add and use defines the index or irqs in platform data.
> > 
> > Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > Cc: Magnus Damm <magnus.damm@gmail.com>
> > Signed-off-by: Simon Horman <horms@verge.net.au>
> > 
> > ---
> > 
> > v3
> > * Update for changes to "mmc: tmio: Provide separate interrupt handlers"
> > * As suggested by Guennadi Liakhovetski:
> >   - Merge in patch "mmc: sdhi: Add defines for platform irq indexes"
> >   - Use an enum instead of defines for irq indexes
> > 
> > v2
> > * Update for changes to "mmc: tmio: Provide separate interrupt handlers"
> > * Make use of defines provided by
> >   "mmc: sdhi: Add defines for platform irq indexes"
> > * As suggested by Guennadi Liakhovetski:
> >   - Don't use a loop to initialise irq handlers, the unrolled version
> >     is easier on the eyes (and exactly the same number of lines of code!)
> > ---
> >  drivers/mmc/host/sh_mobile_sdhi.c  |   60 ++++++++++++++++++++++-------------
> >  include/linux/mmc/sh_mobile_sdhi.h |    7 ++++
> >  2 files changed, 45 insertions(+), 22 deletions(-)
> > 
> > diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c
> > index 774f643..d792705 100644
> > --- a/drivers/mmc/host/sh_mobile_sdhi.c
> > +++ b/drivers/mmc/host/sh_mobile_sdhi.c
> > @@ -96,7 +96,9 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev)
> >  	struct sh_mobile_sdhi_info *p = pdev->dev.platform_data;
> >  	struct tmio_mmc_host *host;
> >  	char clk_name[8];
> > -	int i, irq, ret;
> > +	int irq, ret;
> > +	irqreturn_t (*f)(int irq, void *devid);
> > +	bool multi_irq = false;
> >  
> >  	priv = kzalloc(sizeof(struct sh_mobile_sdhi), GFP_KERNEL);
> >  	if (priv == NULL) {
> > @@ -153,27 +155,33 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev)
> >  	if (ret < 0)
> >  		goto eprobe;
> >  
> > -	for (i = 0; i < 3; i++) {
> > -		irq = platform_get_irq(pdev, i);
> > -		if (irq < 0) {
> > -			if (i) {
> > -				continue;
> > -			} else {
> > -				ret = irq;
> > -				goto eirq;
> > -			}
> > -		}
> > -		ret = request_irq(irq, tmio_mmc_irq, 0,
> > +	irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_SDIO);
> > +	if (irq >= 0) {
> > +		multi_irq = true;
> > +		ret = request_irq(irq, tmio_mmc_sdio_irq, 0,
> >  				  dev_name(&pdev->dev), host);
> > -		if (ret) {
> > -			while (i--) {
> > -				irq = platform_get_irq(pdev, i);
> > -				if (irq >= 0)
> > -					free_irq(irq, host);
> > -			}
> > -			goto eirq;
> > -		}
> > +		if (ret)
> > +			goto eirq_sdio;
> >  	}
> > +
> > +	ret = irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_CARD_DETECT);
> > +	if (irq >= 0) {
> > +		multi_irq = true;
> > +		ret = request_irq(irq, tmio_mmc_sdcard_irq, 0,
> > +				  dev_name(&pdev->dev), host);
> 
> Sorry, I still don't understand why you check "CARD_DETECT" and request 
> "sdcard_irq." Am I missing something or was my comment not clear enough in 
> the previous review?
> 
> > +		if (ret)
> > +			goto eirq_card_detect;
> > +	} else if (multi_irq)
> > +		goto eirq_card_detect;
> 
> ? Sorry, have you maybe missed my review?
> 
> > +
> > +	ret = irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_SDCARD);
> > +	if (irq < 0)
> > +		goto eirq_sdcard;
> > +	f = multi_irq ? tmio_mmc_card_detect_irq : tmio_mmc_irq;
> 
> Same here

Sorry, that is a bug.

As the code seems to work on my board I think it should be fixed by
inverting the values of SH_MOBILE_SDHI_IRQ_SDCARD and
SH_MOBILE_SDHI_IRQ_CARD_DETECT.

I will check that and repost.


  reply	other threads:[~2011-08-16 11:51 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-16 10:11 [PATCH 0/4 v3] mmc: tmio, sdhi: provide multiple irq handlers Simon Horman
2011-08-16 10:11 ` Simon Horman
2011-08-16 10:11 ` [PATCH 1/4] mmc: tmio: Cache interrupt masks Simon Horman
2011-08-16 10:11   ` Simon Horman
2011-08-16 10:11 ` [PATCH 2/4] mmc: tmio: Provide separate interrupt handlers Simon Horman
2011-08-16 10:11   ` Simon Horman
2011-08-16 11:14   ` Guennadi Liakhovetski
2011-08-16 11:14     ` Guennadi Liakhovetski
2011-08-16 11:35     ` Simon Horman
2011-08-16 11:35       ` Simon Horman
2011-08-16 10:11 ` [PATCH 3/4] mmc: sdhi: Make use of per-source irq handlers Simon Horman
2011-08-16 10:11   ` Simon Horman
2011-08-16 11:11   ` Guennadi Liakhovetski
2011-08-16 11:11     ` Guennadi Liakhovetski
2011-08-16 11:51     ` Simon Horman [this message]
2011-08-16 11:51       ` Simon Horman
2011-08-16 12:40       ` Guennadi Liakhovetski
2011-08-16 12:40         ` Guennadi Liakhovetski
2011-08-16 13:45         ` Simon Horman
2011-08-16 13:45           ` Simon Horman
2011-08-16 10:11 ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index enum Simon Horman
2011-08-16 10:11   ` Simon Horman
2011-08-16 11:13   ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index Ben Dooks
2011-08-16 11:13     ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index enum Ben Dooks
2011-08-16 11:36     ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index Simon Horman
2011-08-16 11:36       ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index enum Simon Horman
2011-08-16 12:23       ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index Simon Horman
2011-08-16 12:23         ` [PATCH 4/4] ARM: shmobile: ag5evm, ap4: Make use of irq index enum Simon Horman
2011-08-17  0:50 [PATCH 0/4 v4] mmc: tmio, sdhi: provide multiple irq handlers Simon Horman
2011-08-17  0:50 ` [PATCH 3/4] mmc: sdhi: Make use of per-source " Simon Horman
2011-08-17  0:50   ` Simon Horman
2011-08-17  8:20   ` Guennadi Liakhovetski
2011-08-17  8:20     ` Guennadi Liakhovetski
2011-08-17  9:49     ` Simon Horman
2011-08-17  9:49       ` Simon Horman
2011-08-17 10:06       ` Guennadi Liakhovetski
2011-08-17 10:06         ` Guennadi Liakhovetski
2011-08-17 10:46         ` Simon Horman
2011-08-17 10:46           ` Simon Horman
2011-08-17 10:59 [PATCH 0/4 v5] mmc: tmio, sdhi: provide multiple " Simon Horman
2011-08-17 10:59 ` [PATCH 3/4] mmc: sdhi: Make use of per-source " Simon Horman
2011-08-17 10:59   ` Simon Horman
2011-08-17 11:24   ` Guennadi Liakhovetski
2011-08-17 11:24     ` Guennadi Liakhovetski
2011-08-17 11:41     ` Simon Horman
2011-08-17 11:41       ` Simon Horman
2011-08-17 11:54       ` Guennadi Liakhovetski
2011-08-17 11:54         ` Guennadi Liakhovetski
2011-08-17 12:07       ` Simon Horman
2011-08-17 12:07         ` Simon Horman
2011-08-17 12:22         ` Guennadi Liakhovetski
2011-08-17 12:22           ` Guennadi Liakhovetski
2011-08-17 12:57           ` Simon Horman
2011-08-17 12:57             ` Simon Horman
2011-08-19  1:10 [PATCH 0/4 v6] mmc: tmio, sdhi: provide multiple " Simon Horman
2011-08-19  1:10 ` [PATCH 3/4] mmc: sdhi: Make use of per-source " Simon Horman
2011-08-19  1:10   ` Simon Horman

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=20110816115141.GE3110@verge.net.au \
    --to=horms@verge.net.au \
    --cc=cjb@laptop.org \
    --cc=g.liakhovetski@gmx.de \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    /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.