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

Commit 56eca3e7 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "pinctrl: qcom: Clear status bit on irq_unmask"

parents 4d705047 d36f7453
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -629,6 +629,7 @@ static void msm_gpio_irq_enable(struct irq_data *d)
static void msm_gpio_irq_unmask(struct irq_data *d)
{
	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
	uint32_t irqtype = irqd_get_trigger_type(d);
	struct msm_pinctrl *pctrl = gpiochip_get_data(gc);
	const struct msm_pingroup *g;
	unsigned long flags;
@@ -638,6 +639,12 @@ static void msm_gpio_irq_unmask(struct irq_data *d)

	spin_lock_irqsave(&pctrl->lock, flags);

	if (irqtype & (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW)) {
		val = readl_relaxed(pctrl->regs + g->intr_status_reg);
		val &= ~BIT(g->intr_status_bit);
		writel_relaxed(val, pctrl->regs + g->intr_status_reg);
	}

	val = readl(pctrl->regs + g->intr_cfg_reg);
	val |= BIT(g->intr_enable_bit);
	writel(val, pctrl->regs + g->intr_cfg_reg);