提交 6b07aaed 编写于 作者: R Rabin Vincent 提交者: Russell King

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: NAlessandro Rubini <rubini@unipv.it>
Acked-by: NLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: NRabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 591d8dd7
......@@ -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);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册