static void txx9_gpio_set(struct gpio_chip *chip, unsigned int offset, int value) { unsigned long flags; spin_lock_irqsave(&txx9_gpio_lock, flags); txx9_gpio_set_raw(offset, value); mmiowb(); spin_unlock_irqrestore(&txx9_gpio_lock, flags); }
static int txx9_gpio_dir_out(struct gpio_chip *chip, unsigned int offset, int value) { spin_lock_irq(&txx9_gpio_lock); txx9_gpio_set_raw(offset, value); __raw_writel(__raw_readl(&txx9_pioptr->dir) | (1 << offset), &txx9_pioptr->dir); mmiowb(); spin_unlock_irq(&txx9_gpio_lock); return 0; }