All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Stephane Grosjean <s.grosjean@peak-system.com>
Cc: Wolfgang Grandegger <wg@grandegger.com>,
	Marc Kleine-Budde <mkl@pengutronix.de>,
	linux-can Mailing List <linux-can@vger.kernel.org>
Subject: Re: [PATCH v3] can/sja1000: add support for PEAK-System PCMCIA card
Date: Tue, 14 Feb 2012 17:41:47 +0100	[thread overview]
Message-ID: <4F3A8ECB.7090803@hartkopp.net> (raw)
In-Reply-To: <4F3A3493.8010900@peak-system.com>

On 14.02.2012 11:16, Stephane Grosjean wrote:

> 
> Le 14/02/2012 10:59, Oliver Hartkopp a écrit :
> 
>> @@ -492,6 +492,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
>>       while ((isrc = priv->read_reg(priv, REG_IR))&&  (n<  SJA1000_MAX_IRQ)) {
>>           n++;
>>           status = priv->read_reg(priv, REG_SR);
>> +        /* check for absent controller due to hw unplug */
>> +        if (status == 0xFF&&  !sja1000_probe_chip(dev))
>> +            break;
>>
>>           if (isrc&  IRQ_WUI)
>>               netdev_warn(dev, "wakeup interrupt\n");
>> @@ -508,6 +511,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
>>               while (status&  SR_RBS) {
>>                   sja1000_rx(dev);
>>                   status = priv->read_reg(priv, REG_SR);
>> +                /* check for absent controller */
>> +                if (status == 0xFF&&  !sja1000_probe_chip(dev))
>> +                    break;
>>               }
>>           }
>>           if (isrc&  (IRQ_DOI | IRQ_EI | IRQ_BEI | IRQ_EPI | IRQ_ALI)) {
>>
>> The big advantage is, that we do not need another expensive register read nor
>> another loop counter variable in the case everything is working fine.
>>
>> Only when the _already_ read status variable becomes 0xFF we check in the
>> mode register if the device is still present.
>>
>> And finally there's a very little chance left to create rubbish data.
> 
> 
> Quite perfect, except that we will push a "rubbish" error frame before
> exiting, and we will return IRQ_HANDLED while I would prefer IRQ_NONE...
> But does it matter?


An alternative would be to replace the 'break' statements above with

	return IRQ_NONE;

like

		/* check for absent controller due to hw unplug */
		if (status == 0xFF && !sja1000_probe_chip(dev))
			return IRQ_NONE;

Don't know if this is 'good style' - but the while statement allows it ;-)

> 
> Moreover, regarding to this patch, should the peak_pcmcia custom isr always
> test for the card presence? I mean, this costs at least 2xtwo ioread8 for each
> hw irq!


I think the earlier we know the better.

But indeed both drivers (PEAK/EMS PCMCIA) do no need priv->pre_irq ...

So if we add the 'return IRQ_NONE' to the above patch the private check for
present hardware becomes obsolete as the private ISRs terminate properly when
they get an IRQ_NONE.

Right?

Regards,
Oliver

  reply	other threads:[~2012-02-14 16:41 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-06 15:56 [PATCH v3] can/sja1000: add support for PEAK-System PCMCIA card Stephane Grosjean
2012-02-13  9:14 ` Marc Kleine-Budde
2012-02-13 10:01   ` Stephane Grosjean
2012-02-13 10:14     ` Wolfgang Grandegger
2012-02-13 10:41       ` Oliver Hartkopp
2012-02-13 11:02         ` Wolfgang Grandegger
2012-02-13 11:06           ` Marc Kleine-Budde
2012-02-13 11:08             ` Wolfgang Grandegger
2012-02-13 19:55               ` Oliver Hartkopp
2012-02-13 20:23                 ` Wolfgang Grandegger
2012-02-14  9:14                   ` Stephane Grosjean
2012-02-14  9:30                     ` Wolfgang Grandegger
2012-02-14  9:59                   ` Oliver Hartkopp
2012-02-14 10:16                     ` Stephane Grosjean
2012-02-14 16:41                       ` Oliver Hartkopp [this message]
2012-02-15  7:03                         ` Wolfgang Grandegger
2012-02-15  8:05                           ` Oliver Hartkopp
2012-02-15  8:37                             ` Wolfgang Grandegger
2012-02-15 19:32                               ` Oliver Hartkopp
2012-02-15 11:52                           ` Stephane Grosjean
2012-02-15 15:06                             ` Wolfgang Grandegger
2012-02-15 16:00                               ` Stephane Grosjean
2012-02-15 19:46                               ` Oliver Hartkopp
2012-02-13 10:46       ` Stephane Grosjean
2012-02-13 10:56         ` Wolfgang Grandegger

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=4F3A8ECB.7090803@hartkopp.net \
    --to=socketcan@hartkopp.net \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=s.grosjean@peak-system.com \
    --cc=wg@grandegger.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.