From: Charulatha V <charu@ti.com> To: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: tony@atomide.com, khilman@ti.com, paul@pwsan.com, Charulatha V <charu@ti.com> Subject: [RFC PATCH 09/18] OMAP: GPIO: cleanup gpio_irq_handler Date: Fri, 22 Apr 2011 16:38:23 +0530 [thread overview] Message-ID: <1303470512-19671-10-git-send-email-charu@ti.com> (raw) In-Reply-To: <1303470512-19671-1-git-send-email-charu@ti.com> Remove CONFIG_ARCH_OMAP* checks from gpio_irq_handler. Also correct the multi-line comment style in the gpio_irq_handler. Signed-off-by: Charulatha V <charu@ti.com> --- arch/arm/plat-omap/gpio.c | 70 +++++++++++++++++--------------------------- 1 files changed, 27 insertions(+), 43 deletions(-) diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 28f58c6..5fe6dbf 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -761,7 +761,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset) */ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) { - void __iomem *isr_reg = NULL; + u32 isr_val; u32 isr; unsigned int gpio_irq, gpio_index; struct gpio_bank *bank; @@ -771,58 +771,41 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) desc->irq_data.chip->irq_ack(&desc->irq_data); bank = irq_get_handler_data(irq); -#ifdef CONFIG_ARCH_OMAP1 - if (bank->method == METHOD_MPUIO) - isr_reg = bank->base + - OMAP_MPUIO_GPIO_INT / bank->stride; -#endif -#ifdef CONFIG_ARCH_OMAP15XX - if (bank->method == METHOD_GPIO_1510) - isr_reg = bank->base + OMAP1510_GPIO_INT_STATUS; -#endif -#if defined(CONFIG_ARCH_OMAP16XX) - if (bank->method == METHOD_GPIO_1610) - isr_reg = bank->base + OMAP1610_GPIO_IRQSTATUS1; -#endif -#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) - if (bank->method == METHOD_GPIO_7XX) - isr_reg = bank->base + OMAP7XX_GPIO_INT_STATUS; -#endif -#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) - if (bank->method == METHOD_GPIO_24XX) - isr_reg = bank->base + OMAP24XX_GPIO_IRQSTATUS1; -#endif -#if defined(CONFIG_ARCH_OMAP4) - if (bank->method == METHOD_GPIO_44XX) - isr_reg = bank->base + OMAP4_GPIO_IRQSTATUS0; -#endif - - if (WARN_ON(!isr_reg)) - goto exit; while(1) { u32 isr_saved, level_mask = 0; u32 enabled; + if (bank->method == METHOD_MPUIO) + isr_val = gpio_mpuio_read(bank->base, + OMAP_MPUIO_GPIO_INT / bank->stride); + else + isr_val = gpio_fn.gpio_read(bank->base, IRQSTATUS_REG0); + enabled = _get_gpio_irqbank_mask(bank); - isr_saved = isr = __raw_readl(isr_reg) & enabled; + isr = isr_val & enabled; + isr_saved = isr; - if (cpu_is_omap15xx() && (bank->method == METHOD_MPUIO)) + /* Common for all MPUIO banks */ + if (bank->method == METHOD_MPUIO) isr &= 0x0000ffff; - if (cpu_class_is_omap2()) { + if (bank->method >= METHOD_GPIO_24XX) level_mask = bank->level_mask & enabled; - } - /* clear edge sensitive interrupts before handler(s) are - called so that we don't miss any interrupt occurred while - executing them */ + /* + * clear edge sensitive interrupts before handler(s) are + * called so that we don't miss any interrupt occurred + * while executing them + */ _enable_gpio_irqbank(bank, isr_saved & ~level_mask, 0); _clear_gpio_irqbank(bank, isr_saved & ~level_mask); _enable_gpio_irqbank(bank, isr_saved & ~level_mask, 1); - /* if there is only edge sensitive GPIO pin interrupts - configured, we could unmask GPIO bank interrupt immediately */ + /* + * if there is only edge sensitive GPIO pin interrupts + * configured, we could unmask GPIO bank interrupt immediately + */ if (!level_mask && !unmasked) { unmasked = 1; desc->irq_data.chip->irq_unmask(&desc->irq_data); @@ -853,11 +836,12 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) generic_handle_irq(gpio_irq); } } - /* if bank has any level sensitive GPIO pin interrupt - configured, we must unmask the bank interrupt only after - handler(s) are executed in order to avoid spurious bank - interrupt */ -exit: + /* + * if bank has any level sensitive GPIO pin interrupt + * configured, we must unmask the bank interrupt only after + * handler(s) are executed in order to avoid spurious bank + * interrupt + */ if (!unmasked) desc->irq_data.chip->irq_unmask(&desc->irq_data); } -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: charu@ti.com (Charulatha V) To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 09/18] OMAP: GPIO: cleanup gpio_irq_handler Date: Fri, 22 Apr 2011 16:38:23 +0530 [thread overview] Message-ID: <1303470512-19671-10-git-send-email-charu@ti.com> (raw) In-Reply-To: <1303470512-19671-1-git-send-email-charu@ti.com> Remove CONFIG_ARCH_OMAP* checks from gpio_irq_handler. Also correct the multi-line comment style in the gpio_irq_handler. Signed-off-by: Charulatha V <charu@ti.com> --- arch/arm/plat-omap/gpio.c | 70 +++++++++++++++++--------------------------- 1 files changed, 27 insertions(+), 43 deletions(-) diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 28f58c6..5fe6dbf 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -761,7 +761,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset) */ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) { - void __iomem *isr_reg = NULL; + u32 isr_val; u32 isr; unsigned int gpio_irq, gpio_index; struct gpio_bank *bank; @@ -771,58 +771,41 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) desc->irq_data.chip->irq_ack(&desc->irq_data); bank = irq_get_handler_data(irq); -#ifdef CONFIG_ARCH_OMAP1 - if (bank->method == METHOD_MPUIO) - isr_reg = bank->base + - OMAP_MPUIO_GPIO_INT / bank->stride; -#endif -#ifdef CONFIG_ARCH_OMAP15XX - if (bank->method == METHOD_GPIO_1510) - isr_reg = bank->base + OMAP1510_GPIO_INT_STATUS; -#endif -#if defined(CONFIG_ARCH_OMAP16XX) - if (bank->method == METHOD_GPIO_1610) - isr_reg = bank->base + OMAP1610_GPIO_IRQSTATUS1; -#endif -#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) - if (bank->method == METHOD_GPIO_7XX) - isr_reg = bank->base + OMAP7XX_GPIO_INT_STATUS; -#endif -#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) - if (bank->method == METHOD_GPIO_24XX) - isr_reg = bank->base + OMAP24XX_GPIO_IRQSTATUS1; -#endif -#if defined(CONFIG_ARCH_OMAP4) - if (bank->method == METHOD_GPIO_44XX) - isr_reg = bank->base + OMAP4_GPIO_IRQSTATUS0; -#endif - - if (WARN_ON(!isr_reg)) - goto exit; while(1) { u32 isr_saved, level_mask = 0; u32 enabled; + if (bank->method == METHOD_MPUIO) + isr_val = gpio_mpuio_read(bank->base, + OMAP_MPUIO_GPIO_INT / bank->stride); + else + isr_val = gpio_fn.gpio_read(bank->base, IRQSTATUS_REG0); + enabled = _get_gpio_irqbank_mask(bank); - isr_saved = isr = __raw_readl(isr_reg) & enabled; + isr = isr_val & enabled; + isr_saved = isr; - if (cpu_is_omap15xx() && (bank->method == METHOD_MPUIO)) + /* Common for all MPUIO banks */ + if (bank->method == METHOD_MPUIO) isr &= 0x0000ffff; - if (cpu_class_is_omap2()) { + if (bank->method >= METHOD_GPIO_24XX) level_mask = bank->level_mask & enabled; - } - /* clear edge sensitive interrupts before handler(s) are - called so that we don't miss any interrupt occurred while - executing them */ + /* + * clear edge sensitive interrupts before handler(s) are + * called so that we don't miss any interrupt occurred + * while executing them + */ _enable_gpio_irqbank(bank, isr_saved & ~level_mask, 0); _clear_gpio_irqbank(bank, isr_saved & ~level_mask); _enable_gpio_irqbank(bank, isr_saved & ~level_mask, 1); - /* if there is only edge sensitive GPIO pin interrupts - configured, we could unmask GPIO bank interrupt immediately */ + /* + * if there is only edge sensitive GPIO pin interrupts + * configured, we could unmask GPIO bank interrupt immediately + */ if (!level_mask && !unmasked) { unmasked = 1; desc->irq_data.chip->irq_unmask(&desc->irq_data); @@ -853,11 +836,12 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) generic_handle_irq(gpio_irq); } } - /* if bank has any level sensitive GPIO pin interrupt - configured, we must unmask the bank interrupt only after - handler(s) are executed in order to avoid spurious bank - interrupt */ -exit: + /* + * if bank has any level sensitive GPIO pin interrupt + * configured, we must unmask the bank interrupt only after + * handler(s) are executed in order to avoid spurious bank + * interrupt + */ if (!unmasked) desc->irq_data.chip->irq_unmask(&desc->irq_data); } -- 1.7.1
next prev parent reply other threads:[~2011-04-22 11:05 UTC|newest] Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-04-22 11:08 [RFC PATCH 00/18] OMAP: GPIO: cleanup GPIO driver Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 01/18] OMAP1: GPIO: Fix mpuio_init() call Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 02/18] OMAP: GPIO: remove get_gpio_bank() Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 03/18] OMAP: GPIO: Move gpio_get_index() to mach-omap Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 14:59 ` Kevin Hilman 2011-04-22 14:59 ` Kevin Hilman 2011-04-22 11:08 ` [RFC PATCH 04/18] OMAP: GPIO: Move gpio_valid() to SoC specific files Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 15:15 ` Kevin Hilman 2011-04-22 15:15 ` Kevin Hilman 2011-04-22 11:08 ` [RFC PATCH 05/18] OMAP: GPIO: cleanup datain,dataout,set dir funcs Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 15:22 ` Kevin Hilman 2011-04-22 15:22 ` [RFC PATCH 05/18] OMAP: GPIO: cleanup datain, dataout, set " Kevin Hilman 2011-04-22 11:08 ` [RFC PATCH 06/18] OMAP: GPIO: cleanup set trigger func Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 07/18] OMAP: GPIO: cleanup set/get IRQ, clr irqstatus funcs Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 08/18] OMAP: GPIO: req/free: Remove reg offset macros usage Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` Charulatha V [this message] 2011-04-22 11:08 ` [RFC PATCH 09/18] OMAP: GPIO: cleanup gpio_irq_handler Charulatha V 2011-04-22 11:08 ` [RFC PATCH 10/18] OMAP: GPIO: cleanup set wakeup/suspend/resume funcs Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 11/18] OMAP: GPIO: Remove dependency on gpio_bank_count Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 16:04 ` Kevin Hilman 2011-04-22 16:04 ` Kevin Hilman 2011-04-22 11:08 ` [RFC PATCH 12/18] OMAP: GPIO: cleanup set_debounce, idle/resume_after_idle Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 13/18] OMAP: GPIO: cleanup save/restore context Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 14/18] OMAP: GPIO: Remove CONFIG_ARCH_OMAP16XX/OMAP2+ defines Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 15/18] OMAP: GPIO: cleanup gpio_show_rev Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 16/18] OMAP: GPIO: move omap_gpio_mod_init to mach-omap Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 17/18] OMAP: GPIO: use dev_err* instead of printk Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 11:08 ` [RFC PATCH 18/18] OMAP: GPIO: Remove usage of bank method Charulatha V 2011-04-22 11:08 ` Charulatha V 2011-04-22 14:02 ` [RFC PATCH 00/18] OMAP: GPIO: cleanup GPIO driver Sascha Hauer 2011-04-22 14:02 ` Sascha Hauer 2011-04-22 22:34 ` Kevin Hilman 2011-04-22 22:34 ` Kevin Hilman 2011-04-25 14:03 ` Varadarajan, Charulatha 2011-04-25 14:03 ` Varadarajan, Charulatha
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=1303470512-19671-10-git-send-email-charu@ti.com \ --to=charu@ti.com \ --cc=khilman@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=paul@pwsan.com \ --cc=tony@atomide.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.