All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Linus Walleij <linus.walleij@linaro.org>, linux-gpio@vger.kernel.org
Cc: Alexandre Courbot <acourbot@nvidia.com>
Subject: Re: [PATCH] gpio: set parent irq on chained handlers
Date: Fri, 26 Sep 2014 15:20:23 +0300	[thread overview]
Message-ID: <54255A07.9060708@ti.com> (raw)
In-Reply-To: <1411732349-19178-1-git-send-email-linus.walleij@linaro.org>

On 09/26/2014 02:52 PM, Linus Walleij wrote:
> If the IRQ from the parent is nested the IRQ may need to be
> resent under certain conditions. Currently the chained IRQ
> handler in gpiolib does not handle connecting nested IRQs

Seems there is still some misunderstanding ( - chained vs nested IRQs

> but it is conceptually correct to indicate the actual parent
> IRQ.
> 
> Reported-by: Grygorii Strashko <grygorii.strashko@ti.com>

+ Reported-by: Lothar Waßmann <LW@karo-electronics.de>

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
>   drivers/gpio/gpiolib.c | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 550e575c6ffb..9362b5b817af 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -398,17 +398,30 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip,
>   				  int parent_irq,
>   				  irq_flow_handler_t parent_handler)
>   {
> +	unsigned int offset;
> +
>   	if (gpiochip->can_sleep) {
>   		chip_err(gpiochip, "you cannot have chained interrupts on a chip that may sleep\n");
>   		return;
>   	}


This function can't be called by gpio-pca953x.c driver  (

> +	if (!gpiochip->irqdomain) {
> +		chip_err(gpiochip, "called %s before setting up irqchip\n",
> +			 __func__);
> +		return;
> +	}
>   
>   	irq_set_chained_handler(parent_irq, parent_handler);
> +
>   	/*
>   	 * The parent irqchip is already using the chip_data for this
>   	 * irqchip, so our callbacks simply use the handler_data.
>   	 */
>   	irq_set_handler_data(parent_irq, gpiochip);
> +
> +	/* Set the parent IRQ for all affected IRQs */
> +	for (offset = 0; offset < gpiochip->ngpio; offset++)
> +		irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset),
> +			       parent_irq);
>   }
>   EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip);
>   
> 

May be some simple helper can be added instead:
 void gpiochip_set_nested_irqchip(struct gpio_chip *gpiochip,
   				  int parent_irq)
  {
 	unsigned int offset;
 
   	if (!gpiochip->can_sleep && !chip->irq_not_threaded) {
   		chip_err(gpiochip, "you cannot have nested interrupts on a chip that can't sleep\n");
   		return;
   	}

	if (!gpiochip->irqdomain) {
		chip_err(gpiochip, "called %s before setting up irqchip\n",
			 __func__);
		return;
	}
 

	/* Set the parent IRQ for all affected IRQs */
	for (offset = 0; offset < gpiochip->ngpio; offset++)
		irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset),
			       parent_irq);
 }
 EXPORT_SYMBOL_GPL(gpiochip_set_nested_irqchip);
 
regards,
-grygorii
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2014-09-26 12:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-26 11:52 [PATCH] gpio: set parent irq on chained handlers Linus Walleij
2014-09-26 12:20 ` Grygorii Strashko [this message]
2014-09-26 12:37   ` 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=54255A07.9060708@ti.com \
    --to=grygorii.strashko@ti.com \
    --cc=acourbot@nvidia.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@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 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.