From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grygorii.Strashko@linaro.org" Subject: Re: [PATCH] gpio: omap: Fix regression for MPUIO interrupts Date: Fri, 24 Apr 2015 17:58:29 +0300 Message-ID: <553A5A15.1030605@linaro.org> References: <1429833257-28188-1-git-send-email-tony@atomide.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mail-la0-f42.google.com ([209.85.215.42]:33396 "EHLO mail-la0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753780AbbDXO6f (ORCPT ); Fri, 24 Apr 2015 10:58:35 -0400 Received: by layy10 with SMTP id y10so37302533lay.0 for ; Fri, 24 Apr 2015 07:58:34 -0700 (PDT) In-Reply-To: <1429833257-28188-1-git-send-email-tony@atomide.com> Sender: linux-gpio-owner@vger.kernel.org List-Id: linux-gpio@vger.kernel.org To: Tony Lindgren , Linus Walleij , Alexandre Courbot Cc: linux-gpio@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Aaro Koskinen , Felipe Balbi , Javier Martinez Canillas , Kevin Hilman , Nishanth Menon , Santosh Shilimkar On 04/24/2015 02:54 AM, Tony Lindgren wrote: > At some point with all the GPIO clean-up we've broken the > MPUIO interrupts. Those are just a little bit different from > the GPIO interrupts, so we can fix it up just by setting > different irqchip functions for it. And then we can just > remove all old code trying to do the same. Reviewed-by: Grygorii Strashko > > Cc: Aaro Koskinen > Cc: Felipe Balbi > Cc: Javier Martinez Canillas > Cc: Grygorii Strashko > Cc: Kevin Hilman > Cc: Nishanth Menon > Cc: Santosh Shilimkar > Signed-off-by: Tony Lindgren > --- > drivers/gpio/gpio-omap.c | 48 +++++++++--------------------------------------- > 1 file changed, 9 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c > index 6553361..b59c3ca 100644 > --- a/drivers/gpio/gpio-omap.c > +++ b/drivers/gpio/gpio-omap.c > @@ -1023,38 +1023,8 @@ static void omap_gpio_mod_init(struct gpio_bank *bank) > dev_err(bank->dev, "Could not get gpio dbck\n"); > } > > -static void > -omap_mpuio_alloc_gc(struct gpio_bank *bank, unsigned int irq_start, > - unsigned int num) > -{ > - struct irq_chip_generic *gc; > - struct irq_chip_type *ct; > - > - gc = irq_alloc_generic_chip("MPUIO", 1, irq_start, bank->base, > - handle_simple_irq); > - if (!gc) { > - dev_err(bank->dev, "Memory alloc failed for gc\n"); > - return; > - } > - > - ct = gc->chip_types; > - > - /* NOTE: No ack required, reading IRQ status clears it. */ > - ct->chip.irq_mask = irq_gc_mask_set_bit; > - ct->chip.irq_unmask = irq_gc_mask_clr_bit; > - ct->chip.irq_set_type = omap_gpio_irq_type; > - > - if (bank->regs->wkup_en) > - ct->chip.irq_set_wake = omap_gpio_wake_enable; > - > - ct->regs.mask = OMAP_MPUIO_GPIO_INT / bank->stride; > - irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, > - IRQ_NOREQUEST | IRQ_NOPROBE, 0); > -} > - > static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) > { > - int j; > static int gpio; > int irq_base = 0; > int ret; > @@ -1101,6 +1071,15 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) > } > #endif > > + /* MPUIO is a bit different, reading IRQ status clears it */ > + if (bank->is_mpuio) { > + irqc->irq_ack = dummy_irq_chip.irq_ack; > + irqc->irq_mask = irq_gc_mask_set_bit; > + irqc->irq_unmask = irq_gc_mask_clr_bit; > + if (!bank->regs->wkup_en) > + irqc->irq_set_wake = NULL; > + } > + > ret = gpiochip_irqchip_add(&bank->chip, irqc, > irq_base, omap_gpio_irq_handler, > IRQ_TYPE_NONE); > @@ -1114,15 +1093,6 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) > gpiochip_set_chained_irqchip(&bank->chip, irqc, > bank->irq, omap_gpio_irq_handler); > > - for (j = 0; j < bank->width; j++) { > - int irq = irq_find_mapping(bank->chip.irqdomain, j); > - if (bank->is_mpuio) { > - omap_mpuio_alloc_gc(bank, irq, bank->width); > - irq_set_chip_and_handler(irq, NULL, NULL); > - set_irq_flags(irq, 0); > - } > - } > - > return 0; > } > > -- regards, -grygorii