From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Zubair Lutfullah : <zubair.lutfullah@gmail.com>
Cc: jic23@cam.ac.uk, lee.jones@linaro.org, linux-iio@vger.kernel.org,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
gregkh@linuxfoundation.org
Subject: Re: [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support
Date: Thu, 29 Aug 2013 09:49:54 +0200 [thread overview]
Message-ID: <521EFD22.8010005@linutronix.de> (raw)
In-Reply-To: <20130828184320.GB3777@gmail.com>
On 08/28/2013 08:43 PM, Zubair Lutfullah : wrote:
> On Wed, Aug 28, 2013 at 03:01:24PM +0200, Sebastian Andrzej Siewior wrote:
>> * Zubair Lutfullah | 2013-08-25 23:45:24 [+0100]:
>>
>> I am mostly happy with it. There are just two things I pointed out.
>> Besides that, it looks good from my side.
> Sign-off?
Acked-by if anything. For that you should fix the things I pointed out.
>>> +static irqreturn_t tiadc_irq(int irq, void *private)
>>> +{
> ...
>>> + /* If any IRQ flags left, return none. So TSC can handle its IRQs */
>>> + status = tiadc_readl(adc_dev, REG_IRQSTATUS);
>>> + if (status == false)
>>> + return IRQ_HANDLED;
>>> + else
>>> + return IRQ_NONE;
>>
>> As I said in 1/2 of this series, you shouldn't do this. Both handlers of a
>> shared line are invoked once an interrupt is detected.
>>
>> …
> I somehow missed sending these patches to Dmitry..
> I'll do it next series.
>
> He originally suggested this way.
> An alternative was to handle irqs in mfd core which would
> seriously complicate code and patches..
>
> Whenever I change the handlers to the way you suggest.
> i.e. Handle what each irq handler does and return IRQ_HANDLED
> if the irq handler handled nothing then return IRQ_NONE.
>
> The driver hangs when I'm brutal while touching the TSC and
> continuously sampling the ADC. Not always. But happens.
>
> When I check /proc/interrupts the hardware irqs seem to be firing.
> But for some reason the whole thing messes up..
In that case it is likely that the irqs are not acked properly and
therefore fired again. So you should check that.
If you look at handle_irq_event_percpu() in kernel/irq/handle.c. That
is the function that invokes your handler. It looks the following in
short:
do {
res = action->handler(irq, action->dev_id);
retval |= res;
action = action->next;
} while (action);
note_interrupt(irq, desc, retval);
As you see all registered handlers are invoked no matter of the return
code. The common return code is pass over to note_interrupt() which will
disable the irq line if IRQ_NONE is returned too many times.
It is possible that the read of REG_IRQSTATUS will ACK those and
therefore it does not fire anymore. I don't have the manual next to me
right now, so please check how the interrupt is acked by reading the
status register or by writing a bit to the status register etc.
_If_ the status bit is auto-cleared on read but the interrupt is not
acked and remains acktive then you won't see it in the "other" handler,
do nothing but the source will remain active.
This might match your description. In that case I suggest to register
that interrupt in the MFD part let TSC & ADC register via the mfd part.
The MFD part would read the status register and pass it to the two
handlers so it not lost.
In any case: please check what is really going on. This workaround you
have now does not look good.
> Thanks
> ZubairLK
Sebastian
next prev parent reply other threads:[~2013-08-29 7:49 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-25 22:45 [PATCH V6 0/2] iio: input: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-08-25 22:45 ` [PATCH 1/2] input: ti_am335x_tsc: Enable shared IRQ for TSC Zubair Lutfullah
2013-08-28 10:42 ` Sebastian Andrzej Siewior
2013-08-28 18:49 ` Zubair Lutfullah :
2013-08-25 22:45 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-08-27 8:42 ` Lee Jones
2013-08-28 10:31 ` [PATCH] iio: am335x-iio-adc: select triggered buffer Sebastian Andrzej Siewior
2013-08-28 18:32 ` Zubair Lutfullah :
2013-08-28 13:01 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Sebastian Andrzej Siewior
2013-08-28 18:43 ` Zubair Lutfullah :
2013-08-29 7:49 ` Sebastian Andrzej Siewior [this message]
2013-08-28 14:18 ` Sebastian Andrzej Siewior
2013-08-28 18:22 ` Zubair Lutfullah :
2013-08-28 18:38 ` Sebastian Andrzej Siewior
2013-08-28 18:55 ` Zubair Lutfullah :
2013-08-28 16:43 ` Sebastian Andrzej Siewior
2013-08-28 18:19 ` Zubair Lutfullah :
2013-08-28 18:35 ` Sebastian Andrzej Siewior
2013-08-28 18:59 ` Zubair Lutfullah :
2013-08-29 7:56 ` Sebastian Andrzej Siewior
-- strict thread matches above, loose matches on Subject: below --
2013-09-01 11:07 [PATCH V7 0/2] iio: input: ti_am335x_tscadc: Add continuous sampling support to adc Zubair Lutfullah
2013-09-01 11:07 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-09-01 11:17 [PATCH V8 0/2] iio: input: ti_am335x_tscadc: Add continuous sampling support to adc Zubair Lutfullah
2013-09-01 11:17 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-09-08 13:42 ` Jonathan Cameron
2013-09-11 16:02 ` Zubair Lutfullah :
2013-09-17 4:44 [PATCH V9 0/2] iio: input: " Zubair Lutfullah
2013-09-17 4:44 ` [PATCH 2/2] iio: " Zubair Lutfullah
2013-09-18 4:27 ` Dmitry Torokhov
2013-09-18 6:54 ` Zubair Lutfullah :
2013-09-18 9:39 ` Jonathan Cameron
2013-09-18 11:25 ` Zubair Lutfullah :
2013-09-18 14:15 ` Dmitry Torokhov
2013-09-18 16:12 ` Jonathan Cameron
2013-09-18 16:24 ` Dmitry Torokhov
2013-09-18 17:05 ` Jonathan Cameron
2013-09-19 5:16 ` Zubair Lutfullah :
2013-09-19 5:33 ` Jonathan Cameron
2013-09-18 11:23 [PATCH V10 0/2] iio: input: " Zubair Lutfullah
2013-09-18 11:23 ` [PATCH 2/2] iio: " Zubair Lutfullah
2013-09-18 13:58 ` Jonathan Cameron
2013-09-19 5:24 ` Zubair Lutfullah :
2013-09-19 5:41 ` Jonathan Cameron
2013-09-19 5:55 ` Zubair Lutfullah :
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=521EFD22.8010005@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@cam.ac.uk \
--cc=lee.jones@linaro.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=zubair.lutfullah@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 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).