mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
gpio: omap: simplify omap_toggle_gpio_edge_triggering()
This function open-codes an exclusive-or bitwise operation using an if() statement and explicitly setting or clearing the bit. Instead, use an exclusive-or operation instead, and simplify the function. We can combine the preprocessor conditional using IS_ENABLED() and gain some additional compilation coverage. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> Tested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
8ee1de65a9
commit
a47b91587f
@ -326,32 +326,18 @@ static inline void omap_set_gpio_trigger(struct gpio_bank *bank, int gpio,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP1
|
||||
/*
|
||||
* This only applies to chips that can't do both rising and falling edge
|
||||
* detection at once. For all other chips, this function is a noop.
|
||||
*/
|
||||
static void omap_toggle_gpio_edge_triggering(struct gpio_bank *bank, int gpio)
|
||||
{
|
||||
void __iomem *reg = bank->base;
|
||||
u32 l = 0;
|
||||
if (IS_ENABLED(CONFIG_ARCH_OMAP1) && bank->regs->irqctrl) {
|
||||
void __iomem *reg = bank->base + bank->regs->irqctrl;
|
||||
|
||||
if (!bank->regs->irqctrl)
|
||||
return;
|
||||
|
||||
reg += bank->regs->irqctrl;
|
||||
|
||||
l = readl_relaxed(reg);
|
||||
if ((l >> gpio) & 1)
|
||||
l &= ~(BIT(gpio));
|
||||
else
|
||||
l |= BIT(gpio);
|
||||
|
||||
writel_relaxed(l, reg);
|
||||
writel_relaxed(readl_relaxed(reg) ^ BIT(gpio), reg);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void omap_toggle_gpio_edge_triggering(struct gpio_bank *bank, int gpio) {}
|
||||
#endif
|
||||
|
||||
static int omap_set_gpio_triggering(struct gpio_bank *bank, int gpio,
|
||||
unsigned trigger)
|
||||
|
Loading…
Reference in New Issue
Block a user