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
next prev parent 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).