linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 23/29] arm: at91: Cleanup irq chip
Date: Tue, 29 Mar 2011 10:00:19 +0200	[thread overview]
Message-ID: <4D919193.2070601@atmel.com> (raw)
In-Reply-To: <20110328170652.972256153@linutronix.de>

Le 28/03/2011 19:12, Thomas Gleixner :
> Avoid the whole lazy disable dance in the demux handler by providing a
> irq_disable() callback.
> 
> Use the proper accessor functions and tidy up gpio_irq_handler()
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

Seems ok.

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

> ---
>  arch/arm/mach-at91/gpio.c |   31 +++++++++----------------------
>  1 file changed, 9 insertions(+), 22 deletions(-)
> 
> Index: linux-2.6-tip/arch/arm/mach-at91/gpio.c
> ===================================================================
> --- linux-2.6-tip.orig/arch/arm/mach-at91/gpio.c
> +++ linux-2.6-tip/arch/arm/mach-at91/gpio.c
> @@ -375,6 +375,7 @@ static int gpio_irq_type(struct irq_data
>  
>  static struct irq_chip gpio_irqchip = {
>  	.name		= "GPIO",
> +	.irq_disable	= gpio_irq_mask,
>  	.irq_mask	= gpio_irq_mask,
>  	.irq_unmask	= gpio_irq_unmask,
>  	.irq_set_type	= gpio_irq_type,
> @@ -384,16 +385,14 @@ static struct irq_chip gpio_irqchip = {
>  static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
>  	unsigned	pin;
> -	struct irq_desc	*gpio;
> -	struct at91_gpio_chip *at91_gpio;
> -	void __iomem	*pio;
> +	struct irq_data *idata = irq_desc_get_irq_data(desc);
> +	struct irq_chip *chip = irq_data_get_irq_chip(idata);
> +	struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(idata);
> +	void __iomem	*pio = at91_gpio->regbase;
>  	u32		isr;
>  
> -	at91_gpio = get_irq_chip_data(irq);
> -	pio = at91_gpio->regbase;
> -
>  	/* temporarily mask (level sensitive) parent IRQ */
> -	desc->irq_data.chip->irq_ack(&desc->irq_data);
> +	chip->irq_ack(idata);
>  	for (;;) {
>  		/* Reading ISR acks pending (edge triggered) GPIO interrupts.
>  		 * When there none are pending, we're finished unless we need
> @@ -409,27 +408,15 @@ static void gpio_irq_handler(unsigned ir
>  		}
>  
>  		pin = at91_gpio->chip.base;
> -		gpio = &irq_desc[pin];
>  
>  		while (isr) {
> -			if (isr & 1) {
> -				if (unlikely(gpio->depth)) {
> -					/*
> -					 * The core ARM interrupt handler lazily disables IRQs so
> -					 * another IRQ must be generated before it actually gets
> -					 * here to be disabled on the GPIO controller.
> -					 */
> -					gpio_irq_mask(irq_get_irq_data(pin));
> -				}
> -				else
> -					generic_handle_irq(pin);
> -			}
> +			if (isr & 1)
> +				generic_handle_irq(pin);
>  			pin++;
> -			gpio++;
>  			isr >>= 1;
>  		}
>  	}
> -	desc->irq_data.chip->irq_unmask(&desc->irq_data);
> +	chip->irq_unmask(idata);
>  	/* now it may re-trigger */
>  }
>  
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 


-- 
Nicolas Ferre

  reply	other threads:[~2011-03-29  8:00 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-28 17:12 [patch 00/29] arm: bug fixes and irq cleanup (v2) for .39 Thomas Gleixner
2011-03-28 17:12 ` [patch 01/29] arm: bios32: Remove non exisiting machine code Thomas Gleixner
2011-03-28 17:12 ` [patch 03/29] arm: at91: at572d940hf: Fix SDRAMC define Thomas Gleixner
2011-03-29  7:46   ` Nicolas Ferre
2011-03-28 17:12 ` [patch 02/29] arm: footbridge: Make cksrc_dc21285_disable() void Thomas Gleixner
2011-03-28 17:12 ` [patch 05/29] arm: ns9xxx: Remove non exisiting machine checks Thomas Gleixner
2011-03-28 17:12 ` [patch 04/29] arm: dove: Use correct GPIO_BASE and remove orion_gpio_init() leftover Thomas Gleixner
2011-03-28 17:12 ` [patch 06/29] arm: nomadik: Remove non existing cpu id check Thomas Gleixner
2011-03-29  5:35   ` Srinidhi Kasagar
2011-03-28 17:12 ` [patch 07/29] arm: h720x: Fix irq conversion fallout Thomas Gleixner
2011-03-28 17:12 ` [patch 08/29] arm: tegra: Remove unused bogus irq enable/disable magic Thomas Gleixner
2011-03-28 19:00   ` Colin Cross
2011-03-28 19:13     ` Thomas Gleixner
2011-03-28 17:12 ` [patch 09/29] arm: Use genirq lockdep helper to set lock class Thomas Gleixner
2011-03-28 17:12 ` [patch 10/29] arm: Use irq flag setter function Thomas Gleixner
2011-03-28 17:12 ` [patch 11/29] arm: msm: Convert to new irq chip functions Thomas Gleixner
2011-03-28 17:12 ` [patch 12/29] arm: Cleanup irq_desc access Thomas Gleixner
2011-03-28 17:12 ` [patch 13/29] arm: plat-samsung: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 14/29] arm: stmp3xxx: Use generic_handle_irq() Thomas Gleixner
2011-03-28 17:12 ` [patch 15/29] arm: nomadik: Use local irq state Thomas Gleixner
2011-03-28 17:12 ` [patch 16/29] arm: plat-omap: Cleanup irq_desc access Thomas Gleixner
2011-03-28 17:12 ` [patch 17/29] arm: msm: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 19/29] arm: mxc: Use generic_handle_irq() Thomas Gleixner
2011-03-28 17:12 ` [patch 18/29] arm: vt8500: Use proper irq accessors Thomas Gleixner
2011-03-28 17:12 ` [patch 21/29] arm: ep93xx: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 20/29] arm: gemini: " Thomas Gleixner
2011-03-28 17:12 ` [patch 22/29] arm: davinci: Cleanup irq chip code Thomas Gleixner
2011-03-28 17:12 ` [patch 23/29] arm: at91: Cleanup irq chip Thomas Gleixner
2011-03-29  8:00   ` Nicolas Ferre [this message]
2011-03-28 17:12 ` [patch 24/29] arm: gic: Use proper accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 26/29] arm: Use generic show_interrupts() Thomas Gleixner
2011-03-28 17:12 ` [patch 25/29] arm: dove: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 28/29] arm: Reorder irq_set_ function calls Thomas Gleixner
2011-03-28 17:12 ` [patch 29/29] arm: Fold irq_set_chip/irq_set_handler Thomas Gleixner
2011-03-29  7:49   ` Nicolas Ferre
2011-03-28 17:13 ` [patch 27/29] arm: Cleanup the irq namespace Thomas Gleixner
2011-04-18 17:37   ` H Hartley Sweeten
2011-04-19  9:49   ` Uwe Kleine-König

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=4D919193.2070601@atmel.com \
    --to=nicolas.ferre@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.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).