From: Thomas Gleixner <tglx@linutronix.de>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Trilok Soni <soni.trilok@gmail.com>, Pavel Machek <pavel@ucw.cz>,
Arve Hj?nnev?g <arve@android.com>,
kernel list <linux-kernel@vger.kernel.org>,
Brian Swetland <swetland@google.com>,
linux-input@vger.kernel.org, Andrew Morton <akpm@osdl.org>,
linux-i2c@vger.kernel.org,
Joonyoung Shim <jy0922.shim@samsung.com>,
m.szyprowski@samsung.com, t.fujak@samsung.com,
kyungmin.park@samsung.com, David Brownell <david-b@pacbell.net>,
Peter Zijlstra <peterz@infradead.org>,
Daniel Ribeiro <drwyrm@gmail.com>
Subject: Re: Threaded interrupts for synaptic touchscreen in HTC dream
Date: Wed, 22 Jul 2009 14:58:24 +0200 (CEST) [thread overview]
Message-ID: <alpine.LFD.2.00.0907221427380.2813@localhost.localdomain> (raw)
In-Reply-To: <20090722121800.GD21171@rakim.wolfsonmicro.main>
Mark,
On Wed, 22 Jul 2009, Mark Brown wrote:
> On Wed, Jul 22, 2009 at 12:44:01PM +0200, Thomas Gleixner wrote:
> > On Tue, 21 Jul 2009, Mark Brown wrote:
>
> > > I'll need to have a more detailed look at that but it's not immediately
> > > clear to me how a driver (or even machine) should use that code - it
> > > looks more like it's intended to be called from within the IRQ
> > > infrastructure than from random driver code.
>
> > All it needs is to set handle_level_oneshot_irq for the interrupt line
> > of your I2C or whatever devices.
>
> > set_irq_handler(irq, handle_level_oneshot_irq);
>
> Yeah, I know - the issue I was having was that the use of set_irq_handler()
> seemed rather rude for driver code. Grepping around I see that there
> are actually a small number of drivers using it already but at first
> glance most of them appear to be implementing interrupt controllers. It
> was setting off alarm bells about abstraction layer violation like
> set_irq_type() does.
I don't think it belongs into the driver code. It belongs into the
platform code which sets up the system and knows what's on which
interrupt line.
> > > Nothing if the above works, though I guess more documentation wouldn't
> > > hurt (and possibly a more friendly wrapper). From the name and
>
> > Wrapper for what ?
>
> Something to package up the set_irq_handler() and request_threaded_irq()
> (possibly a flag for request_threaded_irq()). This is such a common
> thing and request_threaded_irq() looks so much like it should Just Work
> that I'd expect it'll help usability a lot to have a single function
> which says "this is the idiomatic way to implement this".
Yeah, we might do with a flag, but I'd prefer that the platform code
aka arch/xxx/yourmachine/setup.c does this. That's the canonical place.
> > After that bus_sync_unlock() is called outside the atomic context. Now
> > the chip implementation issues the bus commands, waits for completion
> > and unlocks the interrupt controller bus.
>
> I'll try to find time to implement some use of it and give it a spin -
> it looks good at first glance but I'll need to convert one of my drivers
> to genirq in order to test. Someone working on a chip that already uses
> genirq might get there first.
That'd be great to get some feedback. Both patches need some more
thought, but I think they are a good start to do some testing. One
thing which I definitely want to change is the thread_eoi function. We
probably want to have it customizable for the following reason:
main interrupt
hardirq handler wakes main thread handler
main thread handler
bus magic
subdevice1 "hardirq" handler wakes subdevice1 irq thread
subdevice2 "hardirq" handler wakes subdevice2 irq thread
main thread handler waits for subdevice1/2 handlers to complete
subdevice1 thread handler
bus magic
....
thread_fn returns
signal main thread handler via completion
subdevice2 thread handler
bus magic
....
thread_fn returns
signal main thread handler via completion
main thread handler resumes
bus magic
main thread handler returns from thread_fn
unmask main interrupt
So the thread_eoi function is useful for both the main and the
subdevice handlers. The main handler probably just issues the unmask
while the subdevice handlers probably want to call a completion to
notify the main thread handler that they are done. That would be a
fairly proper design I think and would encourage driver writers to
follow the common scheme instead of doing their own black magic.
Thinking further we should even provide some infrastructure for that
in the common code which would handle the completion and attach it to
the interrupts in question, so the driver authors would not have to
deal with that at all. They just would return from thread_fn and let
the generic code deal with the notification. The notification has to
be set up by the interrupt controller code. That way you can use the
same device driver code w/o knowledge of the interrupt controller
implementation it is attached to.
Thoughts ?
Thanks,
tglx
next prev parent reply other threads:[~2009-07-22 12:58 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20090714100634.GA4054@elf.ucw.cz>
2009-07-14 10:20 ` Support for synaptic touchscreen in HTC dream Trilok Soni
[not found] ` <5d5443650907140320w334864f4uc1ee13ed32fdb874-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-15 13:36 ` Pavel Machek
[not found] ` <20090715133627.GA2538-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2009-07-15 17:33 ` Trilok Soni
[not found] ` <5d5443650907151033w36008b71pe4b32bcea9489b75-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-21 10:21 ` Pavel Machek
2009-07-21 10:34 ` Trilok Soni
[not found] ` <5d5443650907210334k3f562cebsc665511a161c8639-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-08-08 13:40 ` Synaptics touchscreen for HTC Dream: check that smbus is available Pavel Machek
[not found] ` <20090808134049.GA13083-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2009-08-17 23:47 ` Andrew Morton
[not found] ` <20090817164759.43c39f2d.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-08-21 14:23 ` Pavel Machek
2009-07-21 10:59 ` Threaded interrupts for synaptic touchscreen in HTC dream Pavel Machek
[not found] ` <20090721105924.GK4133-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2009-07-21 11:36 ` Mark Brown
[not found] ` <20090721113642.GC13286-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2009-07-21 12:18 ` Trilok Soni
2009-07-21 12:30 ` Trilok Soni
2009-07-21 12:49 ` Mark Brown
[not found] ` <20090721124933.GA5668-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org>
2009-07-21 16:04 ` Dmitry Torokhov
[not found] ` <20090721160436.GD4352-wUGeVx6es1+Q2O5dskk9LyLysJ1jNyTM@public.gmane.org>
2009-07-21 20:30 ` Thomas Gleixner
2009-07-21 20:58 ` Dmitry Torokhov
2009-07-21 21:48 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907212225030.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-21 22:25 ` Mark Brown
[not found] ` <20090721222547.GA1948-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2009-07-22 10:44 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907221022190.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 12:18 ` Mark Brown
2009-07-22 12:58 ` Thomas Gleixner [this message]
[not found] ` <alpine.LFD.2.00.0907221427380.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 13:30 ` Peter Zijlstra
2009-07-22 14:18 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907221615480.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 14:32 ` Mark Brown
[not found] ` <20090722143211.GB29404-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org>
2009-07-22 14:52 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907221645240.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 14:56 ` Mark Brown
2009-07-22 15:15 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907221715260.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 15:56 ` Mark Brown
2009-07-22 16:57 ` David Brownell
[not found] ` <200907220957.16499.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2009-07-22 21:04 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.0907222226270.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 21:57 ` Arve Hjønnevåg
[not found] ` <d6200be20907221457r4e2f6d29g57146586fd13776a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-22 22:15 ` David Brownell
2009-07-22 23:30 ` Arve Hjønnevåg
2009-07-22 22:09 ` David Brownell
2009-07-23 4:43 ` Dmitry Torokhov
2009-07-22 13:31 ` Mark Brown
2009-07-22 17:04 ` David Brownell
2009-07-22 17:08 ` Mark Brown
2009-07-22 16:04 ` Dmitry Torokhov
[not found] ` <20090722155811.GA2775-wUGeVx6es1+Q2O5dskk9LyLysJ1jNyTM@public.gmane.org>
2009-07-22 16:40 ` Thomas Gleixner
2009-07-22 16:57 ` Mark Brown
[not found] ` <alpine.LFD.2.00.0907221830410.2813-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-22 17:08 ` Dmitry Torokhov
2009-07-22 17:13 ` David Brownell
2009-07-22 16:51 ` David Brownell
2009-07-22 16:39 ` David Brownell
[not found] ` <200907220939.33399.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2009-07-22 16:43 ` Thomas Gleixner
2009-07-22 17:34 ` David Brownell
2009-07-22 16:50 ` Mark Brown
2009-07-22 17:41 ` David Brownell
2009-07-21 20:43 ` Daniel Ribeiro
2009-07-21 12:30 ` Mark Brown
2009-07-23 14:55 ` Pavel Machek
2009-07-15 21:33 ` Support " Arve Hjønnevåg
2009-07-21 10:40 ` Pavel Machek
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=alpine.LFD.2.00.0907221427380.2813@localhost.localdomain \
--to=tglx@linutronix.de \
--cc=akpm@osdl.org \
--cc=arve@android.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=david-b@pacbell.net \
--cc=dmitry.torokhov@gmail.com \
--cc=drwyrm@gmail.com \
--cc=jy0922.shim@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=pavel@ucw.cz \
--cc=peterz@infradead.org \
--cc=soni.trilok@gmail.com \
--cc=swetland@google.com \
--cc=t.fujak@samsung.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).