提交 c9b3a7d2 编写于 作者: R Roger Quadros 提交者: Tony Lindgren

pinctrl: single: call pcs_soc->rearm() whenever IRQ mask is changed

On OMAPs the IO ring must be rearmed each time the pad wakeup
configuration is changed. So call pcs_soc->rearm() from
pcs_irq_set().

As pinctrl-single is now an interrupt controller in some cases,
we should follow the standards and keep the interrupts enabled
constantly, and not just for wake-up events. The tracking of
runtime vs wake-up interrupts can be handled separately for
the automated runtime PM solution when we have it in the
future.
Signed-off-by: NRoger Quadros <rogerq@ti.com>
Acked-by: NLinus Walleij <linus.walleij@linaro.org>
[tony@atomide.com: removed wrong comment, updated description]
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 30e3488c
...@@ -1604,6 +1604,9 @@ static inline void pcs_irq_set(struct pcs_soc_data *pcs_soc, ...@@ -1604,6 +1604,9 @@ static inline void pcs_irq_set(struct pcs_soc_data *pcs_soc,
pcs->write(mask, pcswi->reg); pcs->write(mask, pcswi->reg);
raw_spin_unlock(&pcs->lock); raw_spin_unlock(&pcs->lock);
} }
if (pcs_soc->rearm)
pcs_soc->rearm();
} }
/** /**
...@@ -1626,8 +1629,6 @@ static void pcs_irq_unmask(struct irq_data *d) ...@@ -1626,8 +1629,6 @@ static void pcs_irq_unmask(struct irq_data *d)
struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d); struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d);
pcs_irq_set(pcs_soc, d->irq, true); pcs_irq_set(pcs_soc, d->irq, true);
if (pcs_soc->rearm)
pcs_soc->rearm();
} }
/** /**
...@@ -1678,11 +1679,6 @@ static int pcs_irq_handle(struct pcs_soc_data *pcs_soc) ...@@ -1678,11 +1679,6 @@ static int pcs_irq_handle(struct pcs_soc_data *pcs_soc)
} }
} }
/*
* For debugging on omaps, you may want to call pcs_soc->rearm()
* here to see wake-up interrupts during runtime also.
*/
return count; return count;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册