Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

gpio/omap: replace MOD_REG_BIT macro with static inline

This macro is ugly and confusing, especially since it passes in most
arguments, but uses an implied 'base' from the caller.

Replace it with an equivalent static inline.

Signed-off-by: Kevin Hilman <khilman@ti.com>

+29 -25
+29 -25
drivers/gpio/gpio-omap.c
··· 148 148 return (__raw_readl(reg) & GPIO_BIT(bank, gpio)) != 0; 149 149 } 150 150 151 - #define MOD_REG_BIT(reg, bit_mask, set) \ 152 - do { \ 153 - int l = __raw_readl(base + reg); \ 154 - if (set) l |= bit_mask; \ 155 - else l &= ~bit_mask; \ 156 - __raw_writel(l, base + reg); \ 157 - } while(0) 151 + static inline void _gpio_rmw(void __iomem *base, u32 reg, u32 mask, bool set) 152 + { 153 + int l = __raw_readl(base + reg); 154 + 155 + if (set) 156 + l |= mask; 157 + else 158 + l &= ~mask; 159 + 160 + __raw_writel(l, base + reg); 161 + } 158 162 159 163 /** 160 164 * _set_gpio_debounce - low level gpio debounce time ··· 214 210 u32 gpio_bit = 1 << gpio; 215 211 216 212 if (cpu_is_omap44xx()) { 217 - MOD_REG_BIT(OMAP4_GPIO_LEVELDETECT0, gpio_bit, 218 - trigger & IRQ_TYPE_LEVEL_LOW); 219 - MOD_REG_BIT(OMAP4_GPIO_LEVELDETECT1, gpio_bit, 220 - trigger & IRQ_TYPE_LEVEL_HIGH); 221 - MOD_REG_BIT(OMAP4_GPIO_RISINGDETECT, gpio_bit, 222 - trigger & IRQ_TYPE_EDGE_RISING); 223 - MOD_REG_BIT(OMAP4_GPIO_FALLINGDETECT, gpio_bit, 224 - trigger & IRQ_TYPE_EDGE_FALLING); 213 + _gpio_rmw(base, OMAP4_GPIO_LEVELDETECT0, gpio_bit, 214 + trigger & IRQ_TYPE_LEVEL_LOW); 215 + _gpio_rmw(base, OMAP4_GPIO_LEVELDETECT1, gpio_bit, 216 + trigger & IRQ_TYPE_LEVEL_HIGH); 217 + _gpio_rmw(base, OMAP4_GPIO_RISINGDETECT, gpio_bit, 218 + trigger & IRQ_TYPE_EDGE_RISING); 219 + _gpio_rmw(base, OMAP4_GPIO_FALLINGDETECT, gpio_bit, 220 + trigger & IRQ_TYPE_EDGE_FALLING); 225 221 } else { 226 - MOD_REG_BIT(OMAP24XX_GPIO_LEVELDETECT0, gpio_bit, 227 - trigger & IRQ_TYPE_LEVEL_LOW); 228 - MOD_REG_BIT(OMAP24XX_GPIO_LEVELDETECT1, gpio_bit, 229 - trigger & IRQ_TYPE_LEVEL_HIGH); 230 - MOD_REG_BIT(OMAP24XX_GPIO_RISINGDETECT, gpio_bit, 231 - trigger & IRQ_TYPE_EDGE_RISING); 232 - MOD_REG_BIT(OMAP24XX_GPIO_FALLINGDETECT, gpio_bit, 233 - trigger & IRQ_TYPE_EDGE_FALLING); 222 + _gpio_rmw(base, OMAP24XX_GPIO_LEVELDETECT0, gpio_bit, 223 + trigger & IRQ_TYPE_LEVEL_LOW); 224 + _gpio_rmw(base, OMAP24XX_GPIO_LEVELDETECT1, gpio_bit, 225 + trigger & IRQ_TYPE_LEVEL_HIGH); 226 + _gpio_rmw(base, OMAP24XX_GPIO_RISINGDETECT, gpio_bit, 227 + trigger & IRQ_TYPE_EDGE_RISING); 228 + _gpio_rmw(base, OMAP24XX_GPIO_FALLINGDETECT, gpio_bit, 229 + trigger & IRQ_TYPE_EDGE_FALLING); 234 230 } 235 231 if (likely(!(bank->non_wakeup_gpios & gpio_bit))) { 236 232 if (cpu_is_omap44xx()) { 237 - MOD_REG_BIT(OMAP4_GPIO_IRQWAKEN0, gpio_bit, 238 - trigger != 0); 233 + _gpio_rmw(base, OMAP4_GPIO_IRQWAKEN0, gpio_bit, 234 + trigger != 0); 239 235 } else { 240 236 /* 241 237 * GPIO wakeup request can only be generated on edge