|
|
@@ -113,6 +113,8 @@ static void mtk_eint_mask(struct irq_data *d)
|
|
|
void __iomem *reg = mtk_eint_get_offset(eint, d->hwirq,
|
|
|
eint->regs->mask_set);
|
|
|
|
|
|
+ eint->cur_mask[d->hwirq >> 5] &= ~mask;
|
|
|
+
|
|
|
writel(mask, reg);
|
|
|
}
|
|
|
|
|
|
@@ -123,6 +125,8 @@ static void mtk_eint_unmask(struct irq_data *d)
|
|
|
void __iomem *reg = mtk_eint_get_offset(eint, d->hwirq,
|
|
|
eint->regs->mask_clr);
|
|
|
|
|
|
+ eint->cur_mask[d->hwirq >> 5] |= mask;
|
|
|
+
|
|
|
writel(mask, reg);
|
|
|
|
|
|
if (eint->dual_edge[d->hwirq])
|
|
|
@@ -217,19 +221,6 @@ static void mtk_eint_chip_write_mask(const struct mtk_eint *eint,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void mtk_eint_chip_read_mask(const struct mtk_eint *eint,
|
|
|
- void __iomem *base, u32 *buf)
|
|
|
-{
|
|
|
- int port;
|
|
|
- void __iomem *reg;
|
|
|
-
|
|
|
- for (port = 0; port < eint->hw->ports; port++) {
|
|
|
- reg = base + eint->regs->mask + (port << 2);
|
|
|
- buf[port] = ~readl_relaxed(reg);
|
|
|
- /* Mask is 0 when irq is enabled, and 1 when disabled. */
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static int mtk_eint_irq_request_resources(struct irq_data *d)
|
|
|
{
|
|
|
struct mtk_eint *eint = irq_data_get_irq_chip_data(d);
|
|
|
@@ -384,7 +375,6 @@ static void mtk_eint_irq_handler(struct irq_desc *desc)
|
|
|
|
|
|
int mtk_eint_do_suspend(struct mtk_eint *eint)
|
|
|
{
|
|
|
- mtk_eint_chip_read_mask(eint, eint->base, eint->cur_mask);
|
|
|
mtk_eint_chip_write_mask(eint, eint->base, eint->wake_mask);
|
|
|
|
|
|
return 0;
|