From: Paul Fulghum <paulkf@microgate.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] synclink_gt add gpio feature
Date: Fri, 24 Mar 2006 16:52:02 -0600 [thread overview]
Message-ID: <44247812.1040301@microgate.com> (raw)
In-Reply-To: <20060324141929.1fff0c15.akpm@osdl.org>
Andrew Morton wrote:
> Adding new generic-looking infrastructure into a driver is a worry. Either
> we're missing some facility, or the driver is doing something unnecessary
> or the driver's requirements are unique.
>
> Tell use more about conditional waits?
I needed a way to wake only processes waiting for specific
GPIO transitions out of 32 signals, with 2 possible transitions
per signal (up/down). I also need to return the state of all signals
to each waiter as exists at the time the specific transition occurs.
This has to be done in the ISR as that state is lost when
the interrupt is cleared. So I implemented a wrapper around
the existing wait code that allows waking only processes waiting
for specific transitions and passing the associated state back
to each woken process.
I could use the existing wait infrastructure and wake
all threads waiting on any GPIO transition. That could
cause a lot of unnecessary waking/sleeping. I would also still
need to implement some way to relay the associated state for
each individual transition to the correct waiter.
I could implement a separate normal wait queue for each
transition type (64 queues), but that seems excessive.
The wrapper seems to be the minimal and most efficient
way of implementing this. Maybe I missed some existing
infrastructure that implements the same features?
>>+ /* disable all GPIO interrupts if no waiting processes */
>>+ if (info->gpio_wait_q == NULL)
>>+ wr_reg32(info, IOER, 0);
>
>
> Should we be dong that write if rc!=0? I guess so..
Yes, if for what ever reason (error or otherwise) there are no waiters
there is no point in leaving the GPIO interrupts enabled.
Interrupts will be reenabled as necessary on reentry.
--
Paul
next prev parent reply other threads:[~2006-03-24 22:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-24 16:04 [PATCH] synclink_gt add gpio feature Paul Fulghum
2006-03-24 22:19 ` Andrew Morton
2006-03-24 22:52 ` Paul Fulghum [this message]
2006-03-24 23:12 ` Andrew Morton
2006-03-25 0:02 ` Paul Fulghum
2006-03-25 0:13 ` Andrew Morton
2006-03-25 1:52 ` Paul Fulghum
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=44247812.1040301@microgate.com \
--to=paulkf@microgate.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.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