aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-msm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pinctrl/pinctrl-msm.c')
-rw-r--r--drivers/pinctrl/pinctrl-msm.c6
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;