From: Masahiro Yamada <yamada.masahiro@socionext.com> To: linux-gpio@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org> Cc: Masami Hiramatsu <mhiramat@kernel.org>, Jassi Brar <jaswinder.singh@linaro.org>, Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>, Masahiro Yamada <yamada.masahiro@socionext.com>, linux-arm-kernel <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Marc Zyngier <marc.zyngier@arm.com> Subject: Re: [PATCH] gpio: uniphier: set legitimate irq trigger type in .to_irq hook Date: Thu, 14 Jun 2018 14:39:37 +0900 [thread overview] Message-ID: <CAK7LNASh4j2nTbemsPmQXOnCrqJ4BQ0-PnWHQsUe-qa4KzpDLA@mail.gmail.com> (raw) In-Reply-To: <1528954065-25563-1-git-send-email-yamada.masahiro@socionext.com> 2018-06-14 14:27 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>: > If a GPIO chip is a part of a hierarchy IRQ domain, there is no > way to specify the trigger type when gpio(d)_to_irq() allocates an > interrupt on-the-fly. > > Currently, uniphier_gpio_to_irq() sets IRQ_TYPE_NONE, but it causes > an error in the .alloc() hook of the parent domain. > (drivers/irq/irq-uniphier-aidet.c) > > Even if we change irq-uniphier-aidet.c to accept the NONE type, > GIC complains about it since commit 83a86fbb5b56 ("irqchip/gic: > Loudly complain about the use of IRQ_TYPE_NONE"). > > Instead, use IRQ_TYPE_LEVEL_HIGH as a temporary value when an irq > is allocated. irq_set_irq_type() will override it when the irq is > really requested. > > Fixes: dbe776c2ca54 ("gpio: uniphier: add UniPhier GPIO controller driver") > Reported-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com> > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > Tested-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com> > --- BTW, gpio-xgene-sb.c is also suspicious. https://github.com/torvalds/linux/blob/v4.17/drivers/gpio/gpio-xgene-sb.c#L136 I do not have that hardware, but GIC will complain about NONE type if gpio(d)_to_irq() is used. Commit 83a86fbb5b56 ("irqchip/gic: Loudly complain about the use of IRQ_TYPE_NONE") only mentions DT cases. It is unclear how to take care of GPIO-originated IRQs. > drivers/gpio/gpio-uniphier.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-uniphier.c b/drivers/gpio/gpio-uniphier.c > index d3cf950..58faeb1 100644 > --- a/drivers/gpio/gpio-uniphier.c > +++ b/drivers/gpio/gpio-uniphier.c > @@ -181,7 +181,11 @@ static int uniphier_gpio_to_irq(struct gpio_chip *chip, unsigned int offset) > fwspec.fwnode = of_node_to_fwnode(chip->parent->of_node); > fwspec.param_count = 2; > fwspec.param[0] = offset - UNIPHIER_GPIO_IRQ_OFFSET; > - fwspec.param[1] = IRQ_TYPE_NONE; > + /* > + * IRQ_TYPE_NONE is rejected by the parent irq domain. Set LEVEL_HIGH > + * temporarily. Anyway, ->irq_set_type() will override it later. > + */ > + fwspec.param[1] = IRQ_TYPE_LEVEL_HIGH; > > return irq_create_fwspec_mapping(&fwspec); > } > -- > 2.7.4 > -- Best Regards Masahiro Yamada
WARNING: multiple messages have this Message-ID (diff)
From: yamada.masahiro@socionext.com (Masahiro Yamada) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] gpio: uniphier: set legitimate irq trigger type in .to_irq hook Date: Thu, 14 Jun 2018 14:39:37 +0900 [thread overview] Message-ID: <CAK7LNASh4j2nTbemsPmQXOnCrqJ4BQ0-PnWHQsUe-qa4KzpDLA@mail.gmail.com> (raw) In-Reply-To: <1528954065-25563-1-git-send-email-yamada.masahiro@socionext.com> 2018-06-14 14:27 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>: > If a GPIO chip is a part of a hierarchy IRQ domain, there is no > way to specify the trigger type when gpio(d)_to_irq() allocates an > interrupt on-the-fly. > > Currently, uniphier_gpio_to_irq() sets IRQ_TYPE_NONE, but it causes > an error in the .alloc() hook of the parent domain. > (drivers/irq/irq-uniphier-aidet.c) > > Even if we change irq-uniphier-aidet.c to accept the NONE type, > GIC complains about it since commit 83a86fbb5b56 ("irqchip/gic: > Loudly complain about the use of IRQ_TYPE_NONE"). > > Instead, use IRQ_TYPE_LEVEL_HIGH as a temporary value when an irq > is allocated. irq_set_irq_type() will override it when the irq is > really requested. > > Fixes: dbe776c2ca54 ("gpio: uniphier: add UniPhier GPIO controller driver") > Reported-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com> > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > Tested-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com> > --- BTW, gpio-xgene-sb.c is also suspicious. https://github.com/torvalds/linux/blob/v4.17/drivers/gpio/gpio-xgene-sb.c#L136 I do not have that hardware, but GIC will complain about NONE type if gpio(d)_to_irq() is used. Commit 83a86fbb5b56 ("irqchip/gic: Loudly complain about the use of IRQ_TYPE_NONE") only mentions DT cases. It is unclear how to take care of GPIO-originated IRQs. > drivers/gpio/gpio-uniphier.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-uniphier.c b/drivers/gpio/gpio-uniphier.c > index d3cf950..58faeb1 100644 > --- a/drivers/gpio/gpio-uniphier.c > +++ b/drivers/gpio/gpio-uniphier.c > @@ -181,7 +181,11 @@ static int uniphier_gpio_to_irq(struct gpio_chip *chip, unsigned int offset) > fwspec.fwnode = of_node_to_fwnode(chip->parent->of_node); > fwspec.param_count = 2; > fwspec.param[0] = offset - UNIPHIER_GPIO_IRQ_OFFSET; > - fwspec.param[1] = IRQ_TYPE_NONE; > + /* > + * IRQ_TYPE_NONE is rejected by the parent irq domain. Set LEVEL_HIGH > + * temporarily. Anyway, ->irq_set_type() will override it later. > + */ > + fwspec.param[1] = IRQ_TYPE_LEVEL_HIGH; > > return irq_create_fwspec_mapping(&fwspec); > } > -- > 2.7.4 > -- Best Regards Masahiro Yamada
next prev parent reply other threads:[~2018-06-14 5:39 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-06-14 5:27 [PATCH] gpio: uniphier: set legitimate irq trigger type in .to_irq hook Masahiro Yamada 2018-06-14 5:27 ` Masahiro Yamada 2018-06-14 5:27 ` Masahiro Yamada 2018-06-14 5:39 ` Masahiro Yamada [this message] 2018-06-14 5:39 ` Masahiro Yamada 2018-06-14 14:20 ` Linus Walleij 2018-06-14 14:20 ` Linus Walleij
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=CAK7LNASh4j2nTbemsPmQXOnCrqJ4BQ0-PnWHQsUe-qa4KzpDLA@mail.gmail.com \ --to=yamada.masahiro@socionext.com \ --cc=jaswinder.singh@linaro.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marc.zyngier@arm.com \ --cc=mhiramat@kernel.org \ --cc=suzuki.katsuhiro@socionext.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: linkBe 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.