From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@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-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-wireless
<linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-sunxi <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: Sat, 31 May 2014 11:13:05 +0200 [thread overview]
Message-ID: <53899D21.3000008@redhat.com> (raw)
In-Reply-To: <20140528103351.GQ4730@lukather>
Hi,
On 05/28/2014 12:33 PM, Maxime Ripard wrote:
> On Wed, May 28, 2014 at 11:51:52AM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 05/28/2014 11:36 AM, Maxime Ripard wrote:
>>> On Tue, May 27, 2014 at 04:18:29PM +0200, Linus Walleij wrote:
>>>> On Mon, May 26, 2014 at 9:47 AM, Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 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.
>>>>>
>>>>> Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>>>>
>>>> Yes move it out of mask/unmask but no, not into set_type().
>>>>
>>>> Can you not use the irqchip startup()/shutdown() callbacks
>>>> instead?
>>>
>>> I think we can use irq_request_resources then
>>> https://lkml.org/lkml/2014/3/12/307
>>
>> Sounds good, I'll modify the patch to move it here before posting a v2 of
>> this series. Note v2 likely won't happen till this weekend, -ENOTIME.
>>
>>> We could even merge the gpio_to_irq code into it.
>>
>> Erm, no we need that as a separate function for the gpio_chip's to_irq
>> callback.
>
> Linus sent a patch stating otherwise a few weeks ago, and was
> suggesting moving it to irq_startup.
>
> https://lkml.org/lkml/2014/5/9/50
That is not going to work, that patch uses gpiochip_irqchip_add,
which in turn uses gpiochip_to_irq as to_irq handler, which
assumes that gpio offset == irq offset, which is not true for
sunxi-pinctrl.
Specifically gpio_chio_to_irq does:
static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
{
return irq_find_mapping(chip->irqdomain, offset);
}
Where as the sunxi code does (simplified):
static int sunxi_pinctrl_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
{
struct sunxi_desc_function *desc = sunxi_pinctrl_desc_find_function_by_pin(pctl, offset, "irq");
return irq_find_mapping(pctl->domain, desc->irqnum);\
}
Note the extra level of indirection.
Regards,
Hans
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede@redhat.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
Chris Ball <chris@printf.net>,
Ulf Hansson <ulf.hansson@linaro.org>,
Arend van Spriel <arend@broadcom.com>,
"John W. Linville" <linville@tuxdriver.com>,
Chen-Yu Tsai <wens@csie.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
linux-wireless <linux-wireless@vger.kernel.org>,
devicetree <devicetree@vger.kernel.org>,
linux-sunxi <linux-sunxi@googlegroups.com>
Subject: Re: [PATCH 03/11] pinctrl: sunxi: Move setting of mux to irq type from unmask to set_type
Date: Sat, 31 May 2014 11:13:05 +0200 [thread overview]
Message-ID: <53899D21.3000008@redhat.com> (raw)
In-Reply-To: <20140528103351.GQ4730@lukather>
Hi,
On 05/28/2014 12:33 PM, Maxime Ripard wrote:
> On Wed, May 28, 2014 at 11:51:52AM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 05/28/2014 11:36 AM, Maxime Ripard wrote:
>>> On Tue, May 27, 2014 at 04:18:29PM +0200, Linus Walleij wrote:
>>>> On Mon, May 26, 2014 at 9:47 AM, Hans de Goede <hdegoede@redhat.com> 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.
>>>>>
>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>
>>>> Yes move it out of mask/unmask but no, not into set_type().
>>>>
>>>> Can you not use the irqchip startup()/shutdown() callbacks
>>>> instead?
>>>
>>> I think we can use irq_request_resources then
>>> https://lkml.org/lkml/2014/3/12/307
>>
>> Sounds good, I'll modify the patch to move it here before posting a v2 of
>> this series. Note v2 likely won't happen till this weekend, -ENOTIME.
>>
>>> We could even merge the gpio_to_irq code into it.
>>
>> Erm, no we need that as a separate function for the gpio_chip's to_irq
>> callback.
>
> Linus sent a patch stating otherwise a few weeks ago, and was
> suggesting moving it to irq_startup.
>
> https://lkml.org/lkml/2014/5/9/50
That is not going to work, that patch uses gpiochip_irqchip_add,
which in turn uses gpiochip_to_irq as to_irq handler, which
assumes that gpio offset == irq offset, which is not true for
sunxi-pinctrl.
Specifically gpio_chio_to_irq does:
static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
{
return irq_find_mapping(chip->irqdomain, offset);
}
Where as the sunxi code does (simplified):
static int sunxi_pinctrl_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
{
struct sunxi_desc_function *desc = sunxi_pinctrl_desc_find_function_by_pin(pctl, offset, "irq");
return irq_find_mapping(pctl->domain, desc->irqnum);\
}
Note the extra level of indirection.
Regards,
Hans
WARNING: multiple messages have this Message-ID (diff)
From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 03/11] pinctrl: sunxi: Move setting of mux to irq type from unmask to set_type
Date: Sat, 31 May 2014 11:13:05 +0200 [thread overview]
Message-ID: <53899D21.3000008@redhat.com> (raw)
In-Reply-To: <20140528103351.GQ4730@lukather>
Hi,
On 05/28/2014 12:33 PM, Maxime Ripard wrote:
> On Wed, May 28, 2014 at 11:51:52AM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 05/28/2014 11:36 AM, Maxime Ripard wrote:
>>> On Tue, May 27, 2014 at 04:18:29PM +0200, Linus Walleij wrote:
>>>> On Mon, May 26, 2014 at 9:47 AM, Hans de Goede <hdegoede@redhat.com> 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.
>>>>>
>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>
>>>> Yes move it out of mask/unmask but no, not into set_type().
>>>>
>>>> Can you not use the irqchip startup()/shutdown() callbacks
>>>> instead?
>>>
>>> I think we can use irq_request_resources then
>>> https://lkml.org/lkml/2014/3/12/307
>>
>> Sounds good, I'll modify the patch to move it here before posting a v2 of
>> this series. Note v2 likely won't happen till this weekend, -ENOTIME.
>>
>>> We could even merge the gpio_to_irq code into it.
>>
>> Erm, no we need that as a separate function for the gpio_chip's to_irq
>> callback.
>
> Linus sent a patch stating otherwise a few weeks ago, and was
> suggesting moving it to irq_startup.
>
> https://lkml.org/lkml/2014/5/9/50
That is not going to work, that patch uses gpiochip_irqchip_add,
which in turn uses gpiochip_to_irq as to_irq handler, which
assumes that gpio offset == irq offset, which is not true for
sunxi-pinctrl.
Specifically gpio_chio_to_irq does:
static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
{
return irq_find_mapping(chip->irqdomain, offset);
}
Where as the sunxi code does (simplified):
static int sunxi_pinctrl_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
{
struct sunxi_desc_function *desc = sunxi_pinctrl_desc_find_function_by_pin(pctl, offset, "irq");
return irq_find_mapping(pctl->domain, desc->irqnum);\
}
Note the extra level of indirection.
Regards,
Hans
next prev parent reply other threads:[~2014-05-31 9:13 UTC|newest]
Thread overview: 117+ 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
2014-05-26 7:47 ` Hans de Goede
2014-05-26 7:47 ` 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
2014-05-26 7:47 ` Hans de Goede
2014-05-26 7:47 ` 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:02 ` Maxime Ripard
2014-05-27 8:02 ` Maxime Ripard
2014-05-27 8:35 ` Chen-Yu Tsai
2014-05-27 8:35 ` [linux-sunxi] " Chen-Yu Tsai
2014-05-27 8:35 ` Chen-Yu Tsai
2014-05-27 14:11 ` Linus Walleij
2014-05-27 14:11 ` Linus Walleij
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
2014-05-27 14:21 ` [linux-sunxi] " Chen-Yu Tsai
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-28 8:53 ` [linux-sunxi] " Linus Walleij
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
2014-05-26 7:47 ` Hans de Goede
2014-05-26 7:47 ` 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 8:07 ` Maxime Ripard
2014-05-27 8:07 ` Maxime Ripard
2014-05-27 9:09 ` Hans de Goede
2014-05-27 9:09 ` Hans de Goede
2014-05-27 9:09 ` Hans de Goede
2014-05-27 9:52 ` Chen-Yu Tsai
2014-05-27 9:52 ` Chen-Yu Tsai
2014-05-27 16:14 ` Tomasz Figa
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:29 ` Maxime Ripard
2014-05-28 10:29 ` Maxime Ripard
2014-05-28 10:51 ` Tomasz Figa
2014-05-28 10:51 ` Tomasz Figa
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
2014-05-26 7:47 ` Hans de Goede
2014-05-26 7:47 ` 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 8:09 ` Maxime Ripard
2014-05-27 8:09 ` Maxime Ripard
2014-05-27 9:01 ` Hans de Goede
2014-05-27 9:01 ` Hans de Goede
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
2014-05-28 9:39 ` Maxime Ripard
2014-05-28 9:39 ` Maxime Ripard
2014-05-27 14:18 ` Linus Walleij
2014-05-27 14:18 ` Linus Walleij
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:36 ` Maxime Ripard
2014-05-28 9:36 ` Maxime Ripard
2014-05-28 9:51 ` Hans de Goede
2014-05-28 9:51 ` Hans de Goede
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-28 10:33 ` Maxime Ripard
2014-05-28 10:33 ` Maxime Ripard
2014-05-31 9:13 ` Hans de Goede [this message]
2014-05-31 9:13 ` Hans de Goede
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-06-02 10:33 ` Maxime Ripard
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
2014-05-26 7:47 ` Hans de Goede
2014-05-26 7:47 ` 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
2014-06-11 9:00 ` Linus Walleij
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-06-11 9:13 ` Hans de Goede
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 ` Hans de Goede
2014-05-26 7:48 ` 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 ` Hans de Goede
2014-05-26 7:48 ` 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 ` Hans de Goede
2014-05-26 7:48 ` 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 ` Hans de Goede
2014-05-26 7:48 ` Hans de Goede
2014-05-26 7:48 ` [PATCH 09/11] brcmfmac: Fix OOB interrupt not working for BCM43362 Hans de Goede
2014-05-26 7:48 ` Hans de Goede
2014-05-26 7:48 ` 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-26 9:20 ` Arend van Spriel
2014-05-26 9:20 ` Arend van Spriel
2014-05-27 17:03 ` Arend van Spriel
2014-05-27 17:03 ` 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
2014-05-27 21:28 ` Hans de Goede
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-28 9:07 ` Arend van Spriel
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 ` Hans de Goede
2014-05-26 7:48 ` 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-26 7:48 ` Hans de Goede
2014-05-26 7:48 ` Hans de Goede
2014-05-27 15:26 ` [PATCH 00/11] sdio wifi oob irq support for sunxi John W. Linville
2014-05-27 15:26 ` John W. Linville
[not found] ` <20140527152614.GB5694-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-05-27 16:50 ` Arend van Spriel
2014-05-27 16:50 ` Arend van Spriel
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=53899D21.3000008@redhat.com \
--to=hdegoede-h+wxahxf7alqt0dzr+alfa@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=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=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.