From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Linus Walleij
<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Chris Ball <chris-OsFVWbfNK3isTnJN9+BGXg@public.gmane.org>,
Ulf Hansson <ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Arend van Spriel <arend-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"John W. Linville"
<linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH 03/11] pinctrl: sunxi: Move setting of mux to irq type from unmask to set_type
Date: Wed, 28 May 2014 11:39:06 +0200 [thread overview]
Message-ID: <20140528093906.GO4730@lukather> (raw)
In-Reply-To: <5384544F.6000806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1934 bytes --]
On Tue, May 27, 2014 at 11:01:03AM +0200, Hans de Goede wrote:
> Hi,
>
> On 05/27/2014 10:09 AM, Maxime Ripard wrote:
> > On Mon, May 26, 2014 at 09:47:58AM +0200, Hans de Goede wrote:
> >> With level triggered interrupt mask / unmask will get called for each
> >> interrupt, doing the somewhat expensive mux setting on each unmask thus is
> >> not a good idea. Instead move it to the set_type callback, which is typically
> >> done only once for each irq.
> >
> > *This* is the bad idea. Nothing prevents you from calling
> > gpio_get_value whenever you just got your interrupt, that will change
> > the muxing, and never change it back, effectively breaking the
> > interrupts.
>
> Hmm, interesting point, but your assuming 2 things which are both not true:
>
> 1) That calling gpiod_get_value changes the muxing, which is not true, all
> gpiod_get_value variants end up in drivers/gpio/gpiolib.c _gpiod_get_raw_value()
> which does no such thing
Somehow I was convinced it was the case, but yeah, it doesn't really
make much sense, especially since you can get the value of an output,
without wanting to change it to input.
>
> 2) That unmask will always get called after the gpio_get_value to restore the mux
> setting for us, which is not guaranteed at all. Before this patch set pinctrl-sunxi.c
> was using handle_simple_irq which does not mask / unmask at all.
>
> And even with an irq-handler which masks / unmasks, what if the irq wakes up
> a thread and that thread then does the gpio_get_value ?
>
> Note this is *exactly* what e.g. the mmc gpio card-detect code does, it uses
> a thread to read the gpio for debouncing.
>
> Luckily 2. is not a problem, since 1. means that the mux won't get changed at all
> so we don't need to change it back.
Ok.
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2014-05-28 9:39 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-26 7:47 [PATCH 00/11] sdio wifi oob irq support for sunxi Hans de Goede
[not found] ` <1401090486-4414-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-26 7:47 ` [PATCH 01/11] pinctrl: sunxi: create irq/pin mapping during init Hans de Goede
[not found] ` <1401090486-4414-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-27 8:02 ` Maxime Ripard
2014-05-27 8:35 ` Chen-Yu Tsai
2014-05-27 14:11 ` Linus Walleij
[not found] ` <CACRpkdZpy2aT_kFp01bnrviVB3SOggiNUJB46wbWAY_bqW8=gg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-27 14:21 ` Chen-Yu Tsai
[not found] ` <CAGb2v65NW61+BV2hR3wn_xRvCyPo+AhcMU7hmFjQxKWj49G=Bw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-28 8:53 ` Linus Walleij
2014-05-26 7:47 ` [PATCH 02/11] pinctrl: sunxi: add IRQCHIP_SKIP_SET_WAKE flag for pinctrl irq chip Hans de Goede
[not found] ` <1401090486-4414-3-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-27 8:07 ` Maxime Ripard
2014-05-27 9:09 ` Hans de Goede
2014-05-27 9:52 ` Chen-Yu Tsai
2014-05-27 16:14 ` Tomasz Figa
[not found] ` <5384B9E7.1070405-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-05-28 10:29 ` Maxime Ripard
2014-05-28 10:51 ` Tomasz Figa
2014-05-26 7:47 ` [PATCH 03/11] pinctrl: sunxi: Move setting of mux to irq type from unmask to set_type Hans de Goede
[not found] ` <1401090486-4414-4-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-27 8:09 ` Maxime Ripard
2014-05-27 9:01 ` Hans de Goede
[not found] ` <5384544F.6000806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-28 9:39 ` Maxime Ripard [this message]
2014-05-27 14:18 ` Linus Walleij
[not found] ` <CACRpkdZcGJTXfcxN_sogm+hYHM56d_VxtuZqth0t-c2mgAJ0vA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-28 9:36 ` Maxime Ripard
2014-05-28 9:51 ` Hans de Goede
[not found] ` <5385B1B8.8070803-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-28 10:33 ` Maxime Ripard
2014-05-31 9:13 ` Hans de Goede
[not found] ` <53899D21.3000008-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-06-02 10:33 ` Maxime Ripard
2014-05-26 7:47 ` [PATCH 04/11] pinctrl: sunxi: Properly handle level triggered gpio interrupts Hans de Goede
[not found] ` <1401090486-4414-5-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-06-11 9:00 ` Linus Walleij
[not found] ` <CACRpkdZ5_21aFBSJBXDzgorcEKeR9Pv5fVgmeVrBw1zDawVptA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-11 9:13 ` Hans de Goede
2014-05-26 7:48 ` [PATCH 05/11] pinctrl: sunxi: Define enable / disable irq callbacks for level triggered irqs Hans de Goede
2014-05-26 7:48 ` [PATCH 06/11] mmc: Add SDIO function devicetree subnode parsing Hans de Goede
2014-05-26 7:48 ` [PATCH 07/11] dt: bindings: add bindings for Broadcom bcm43xx sdio devices Hans de Goede
2014-05-26 7:48 ` [PATCH 08/11] brcmfmac: add device tree support for SDIO devices Hans de Goede
2014-05-26 7:48 ` [PATCH 09/11] brcmfmac: Fix OOB interrupt not working for BCM43362 Hans de Goede
[not found] ` <1401090486-4414-10-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-26 9:20 ` Arend van Spriel
2014-05-27 17:03 ` Arend van Spriel
[not found] ` <5384C544.9000903-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-05-27 21:28 ` Hans de Goede
[not found] ` <53850399.9000708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-28 9:07 ` Arend van Spriel
2014-05-26 7:48 ` [PATCH 10/11] ARM: dts: sun7i: Add #interrupt-cells to pinctrl node Hans de Goede
2014-05-26 7:48 ` [PATCH 11/11] ARM: dts: sun7i: Add OOB irq support to boards with broadcom sdio wifi Hans de Goede
2014-05-27 15:26 ` [PATCH 00/11] sdio wifi oob irq support for sunxi John W. Linville
[not found] ` <20140527152614.GB5694-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-05-27 16:50 ` Arend van Spriel
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=20140528093906.GO4730@lukather \
--to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
--cc=arend-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \
--cc=chris-OsFVWbfNK3isTnJN9+BGXg@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org \
--cc=ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.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;
as well as URLs for NNTP newsgroup(s).