Message ID | 1303513327-14532-14-git-send-email-khilman@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Apr 23, 2011 at 04:32, Kevin Hilman <khilman@ti.com> wrote: > Make _set_gpio_wakeup() generic by removing ifdefs. Code for the > various SoCs/bank-methods was already the same, except for the > non-wakeup GPIO checking. But that flag is set on a per-SoC basis, so > can be used for all SoCs. > > While here, use pr_err() and remove GPIO bank calculation assumption > based on subtracting bank pointers. > > Signed-off-by: Kevin Hilman <khilman@ti.com> > --- > arch/arm/plat-omap/gpio.c | 49 +++++++++++++------------------------------- > 1 files changed, 15 insertions(+), 34 deletions(-) > > diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c > index a025b7a..82afed8 100644 > --- a/arch/arm/plat-omap/gpio.c > +++ b/arch/arm/plat-omap/gpio.c > @@ -535,42 +535,23 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena > */ > static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) > { > - unsigned long uninitialized_var(flags); > + u32 gpio_bit = GPIO_BIT(bank, gpio); > + unsigned long flags; > > - switch (bank->method) { > -#ifdef CONFIG_ARCH_OMAP16XX > - case METHOD_MPUIO: > - case METHOD_GPIO_1610: > - spin_lock_irqsave(&bank->lock, flags); > - if (enable) > - bank->suspend_wakeup |= (1 << gpio); > - else > - bank->suspend_wakeup &= ~(1 << gpio); > - spin_unlock_irqrestore(&bank->lock, flags); > - return 0; > -#endif > -#ifdef CONFIG_ARCH_OMAP2PLUS > - case METHOD_GPIO_24XX: > - case METHOD_GPIO_44XX: > - if (bank->non_wakeup_gpios & (1 << gpio)) { > - printk(KERN_ERR "Unable to modify wakeup on " > - "non-wakeup GPIO%d\n", > - (bank - gpio_bank) * bank->width + gpio); > - return -EINVAL; > - } > - spin_lock_irqsave(&bank->lock, flags); > - if (enable) > - bank->suspend_wakeup |= (1 << gpio); > - else > - bank->suspend_wakeup &= ~(1 << gpio); > - spin_unlock_irqrestore(&bank->lock, flags); > - return 0; > -#endif > - default: > - printk(KERN_ERR "Can't enable GPIO wakeup for method %i\n", > - bank->method); > + if (bank->non_wakeup_gpios & gpio_bit) { > + pr_err("Unable to modify wakeup on non-wakeup GPIO%d\n", gpio); use dev_err instead. -V Charulatha <<snip>> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
"Varadarajan, Charulatha" <charu@ti.com> writes: > On Sat, Apr 23, 2011 at 04:32, Kevin Hilman <khilman@ti.com> wrote: >> Make _set_gpio_wakeup() generic by removing ifdefs. Code for the >> various SoCs/bank-methods was already the same, except for the >> non-wakeup GPIO checking. But that flag is set on a per-SoC basis, so >> can be used for all SoCs. >> >> While here, use pr_err() and remove GPIO bank calculation assumption >> based on subtracting bank pointers. >> >> Signed-off-by: Kevin Hilman <khilman@ti.com> [...] >> -#endif >> - default: >> - printk(KERN_ERR "Can't enable GPIO wakeup for method %i\n", >> - bank->method); >> + if (bank->non_wakeup_gpios & gpio_bit) { >> + pr_err("Unable to modify wakeup on non-wakeup GPIO%d\n", gpio); > > use dev_err instead. Agreed, thanks. Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index a025b7a..82afed8 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -535,42 +535,23 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena */ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) { - unsigned long uninitialized_var(flags); + u32 gpio_bit = GPIO_BIT(bank, gpio); + unsigned long flags; - switch (bank->method) { -#ifdef CONFIG_ARCH_OMAP16XX - case METHOD_MPUIO: - case METHOD_GPIO_1610: - spin_lock_irqsave(&bank->lock, flags); - if (enable) - bank->suspend_wakeup |= (1 << gpio); - else - bank->suspend_wakeup &= ~(1 << gpio); - spin_unlock_irqrestore(&bank->lock, flags); - return 0; -#endif -#ifdef CONFIG_ARCH_OMAP2PLUS - case METHOD_GPIO_24XX: - case METHOD_GPIO_44XX: - if (bank->non_wakeup_gpios & (1 << gpio)) { - printk(KERN_ERR "Unable to modify wakeup on " - "non-wakeup GPIO%d\n", - (bank - gpio_bank) * bank->width + gpio); - return -EINVAL; - } - spin_lock_irqsave(&bank->lock, flags); - if (enable) - bank->suspend_wakeup |= (1 << gpio); - else - bank->suspend_wakeup &= ~(1 << gpio); - spin_unlock_irqrestore(&bank->lock, flags); - return 0; -#endif - default: - printk(KERN_ERR "Can't enable GPIO wakeup for method %i\n", - bank->method); + if (bank->non_wakeup_gpios & gpio_bit) { + pr_err("Unable to modify wakeup on non-wakeup GPIO%d\n", gpio); return -EINVAL; } + + spin_lock_irqsave(&bank->lock, flags); + if (enable) + bank->suspend_wakeup |= gpio_bit; + else + bank->suspend_wakeup &= ~gpio_bit; + + spin_unlock_irqrestore(&bank->lock, flags); + + return 0; } static void _reset_gpio(struct gpio_bank *bank, int gpio) @@ -589,7 +570,7 @@ static int gpio_wake_enable(struct irq_data *d, unsigned int enable) int retval; bank = irq_data_get_irq_chip_data(d); - retval = _set_gpio_wakeup(bank, GPIO_INDEX(bank, gpio), enable); + retval = _set_gpio_wakeup(bank, gpio, enable); return retval; }
Make _set_gpio_wakeup() generic by removing ifdefs. Code for the various SoCs/bank-methods was already the same, except for the non-wakeup GPIO checking. But that flag is set on a per-SoC basis, so can be used for all SoCs. While here, use pr_err() and remove GPIO bank calculation assumption based on subtracting bank pointers. Signed-off-by: Kevin Hilman <khilman@ti.com> --- arch/arm/plat-omap/gpio.c | 49 +++++++++++++------------------------------- 1 files changed, 15 insertions(+), 34 deletions(-)