diff options
Diffstat (limited to 'drivers/pinctrl/pinctrl-msm.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-msm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c index 38d579b47f31..e43fbce56598 100644 --- a/drivers/pinctrl/pinctrl-msm.c +++ b/drivers/pinctrl/pinctrl-msm.c | |||
@@ -665,7 +665,10 @@ static void msm_gpio_irq_ack(struct irq_data *d) | |||
665 | spin_lock_irqsave(&pctrl->lock, flags); | 665 | spin_lock_irqsave(&pctrl->lock, flags); |
666 | 666 | ||
667 | val = readl(pctrl->regs + g->intr_status_reg); | 667 | val = readl(pctrl->regs + g->intr_status_reg); |
668 | val &= ~BIT(g->intr_status_bit); | 668 | if (g->intr_ack_high) |
669 | val |= BIT(g->intr_status_bit); | ||
670 | else | ||
671 | val &= ~BIT(g->intr_status_bit); | ||
669 | writel(val, pctrl->regs + g->intr_status_reg); | 672 | writel(val, pctrl->regs + g->intr_status_reg); |
670 | 673 | ||
671 | if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) | 674 | if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) |
@@ -744,6 +747,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type) | |||
744 | break; | 747 | break; |
745 | case IRQ_TYPE_EDGE_BOTH: | 748 | case IRQ_TYPE_EDGE_BOTH: |
746 | val |= BIT(g->intr_detection_bit); | 749 | val |= BIT(g->intr_detection_bit); |
750 | val |= BIT(g->intr_polarity_bit); | ||
747 | break; | 751 | break; |
748 | case IRQ_TYPE_LEVEL_LOW: | 752 | case IRQ_TYPE_LEVEL_LOW: |
749 | break; | 753 | break; |