From: "Juha Yrjölä" <juha.yrjola@solidboot.com>
To: Jani Nikula <ext-jani.1.nikula@nokia.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH] ARM: OMAP: Add support for dynamic GPIO switch update
Date: Mon, 15 Dec 2008 17:29:20 +0200 [thread overview]
Message-ID: <20081215152920.GA11007@mail.solidboot.com> (raw)
In-Reply-To: <1229352752.5895.325.camel@jani-desktop>
On Mon, Dec 15, 2008 at 04:52:32PM +0200, Jani Nikula wrote:
> > Why do they need to be changed? GPIO switches related to the board schematics,
> > which do not hopefully change dynamically.
>
> The switches themselves don't change (nor does this patch support
> changing them), but different kinds of external devices may be connected
> to the GPIO swiches. It would be useful to be able to change the
> notification callbacks and debounce timeouts according to the device.
Could you give an example use-case? If the gpio-switch framework starts
getting extended and used more, it might be sensible to convert it to
the general GPIO API, as Trilok suggested.
> Umm, I suppose I was more worried that the write might not be an atomic
> operation, messing up the read as well. But I'll take your word for it
> if you say the write is okay. :)
Integer reads/writes are atomic, unless the system has some serious cache
coherency issues. And in that case, spinlocks won't save you either -- only
the HW engineers can. =)
> > What if omap_update_gpio_switch() is called just before the check for
> > notify != NULL from another (hypothetical =)) CPU? Then you end up with the
> > function completing, but still having the old notify callback called with
> > old notify_data.
>
> I was, of course, making sure a NULL pointer is not called and there's
> no mismatch between old/new notify/notify_data. Your scenario might
> theoretically actually occur on a single processor system as well, don't
> you think?
Ah, yes. I was under the impression that gpio_sw_handler() was called from
IRQ context, but since it's a work handler, the function certainly can be
preempted.
> But is it actually a problem or not? And if yes, do you have any
> suggestions as to handling the case? If there's no need to lock for
> reading the debounce timeouts in gpio_sw_irq_handler() as you say above,
> do you think I could switch to a mutex and call notify callback holding
> that?
Especially in the case of frameworks, it's good to make things as correct
as possible. A mutex is safe.
Cheers,
Juha
next prev parent reply other threads:[~2008-12-15 15:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-15 12:08 [PATCH] ARM: OMAP: Add support for dynamic GPIO switch update Jani Nikula
2008-12-15 12:14 ` Trilok Soni
2008-12-15 13:31 ` Felipe Balbi
2008-12-15 13:22 ` Felipe Balbi
2008-12-15 13:44 ` Jani Nikula
2008-12-15 13:56 ` Felipe Balbi
2008-12-15 13:40 ` Juha Yrjölä
2008-12-15 14:52 ` Jani Nikula
2008-12-15 15:29 ` Juha Yrjölä [this message]
2008-12-15 15:58 ` Jani Nikula
2008-12-16 6:05 ` Trilok Soni
2008-12-18 11:42 ` GPIO switch framework (was: Re: [PATCH] ARM: OMAP: Add support for dynamic GPIO switch update) Jani Nikula
2008-12-18 13:00 ` Trilok Soni
2008-12-18 13:40 ` Jani Nikula
2008-12-19 8:47 ` Trilok Soni
2008-12-19 8:51 ` Brian Swetland
2008-12-21 20:26 ` David Brownell
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=20081215152920.GA11007@mail.solidboot.com \
--to=juha.yrjola@solidboot.com \
--cc=ext-jani.1.nikula@nokia.com \
--cc=linux-omap@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