Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b07aaed authored by Rabin Vincent's avatar Rabin Vincent Committed by Russell King
Browse files

ARM: 6099/1: nomadik-gpio: fix mask/unmask



Mask/unmask should modify the interrupt mask register (RIMSC
and FIMSC) not the wakeup mask registers (RWIMSC and FWIMSC).

Acked-by: default avatarAlessandro Rubini <rubini@unipv.it>
Acked-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: default avatarRabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 591d8dd7
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -123,14 +123,14 @@ static void nmk_gpio_irq_mask(unsigned int irq)
	/* we must individually clear the two edges */
	spin_lock_irqsave(&nmk_chip->lock, flags);
	if (nmk_chip->edge_rising & bitmask) {
		reg = readl(nmk_chip->addr + NMK_GPIO_RWIMSC);
		reg = readl(nmk_chip->addr + NMK_GPIO_RIMSC);
		reg &= ~bitmask;
		writel(reg, nmk_chip->addr + NMK_GPIO_RWIMSC);
		writel(reg, nmk_chip->addr + NMK_GPIO_RIMSC);
	}
	if (nmk_chip->edge_falling & bitmask) {
		reg = readl(nmk_chip->addr + NMK_GPIO_FWIMSC);
		reg = readl(nmk_chip->addr + NMK_GPIO_FIMSC);
		reg &= ~bitmask;
		writel(reg, nmk_chip->addr + NMK_GPIO_FWIMSC);
		writel(reg, nmk_chip->addr + NMK_GPIO_FIMSC);
	}
	spin_unlock_irqrestore(&nmk_chip->lock, flags);
};
@@ -151,14 +151,14 @@ static void nmk_gpio_irq_unmask(unsigned int irq)
	/* we must individually set the two edges */
	spin_lock_irqsave(&nmk_chip->lock, flags);
	if (nmk_chip->edge_rising & bitmask) {
		reg = readl(nmk_chip->addr + NMK_GPIO_RWIMSC);
		reg = readl(nmk_chip->addr + NMK_GPIO_RIMSC);
		reg |= bitmask;
		writel(reg, nmk_chip->addr + NMK_GPIO_RWIMSC);
		writel(reg, nmk_chip->addr + NMK_GPIO_RIMSC);
	}
	if (nmk_chip->edge_falling & bitmask) {
		reg = readl(nmk_chip->addr + NMK_GPIO_FWIMSC);
		reg = readl(nmk_chip->addr + NMK_GPIO_FIMSC);
		reg |= bitmask;
		writel(reg, nmk_chip->addr + NMK_GPIO_FWIMSC);
		writel(reg, nmk_chip->addr + NMK_GPIO_FIMSC);
	}
	spin_unlock_irqrestore(&nmk_chip->lock, flags);
}