Thread (32 messages) 32 messages, 4 authors, 2013-07-29

[PATCH 3/4] pinctrl: single: omap: Add SoC specific module for wake-up events

From: Linus Walleij <hidden>
Date: 2013-07-22 22:03:01
Also in: linux-devicetree, linux-omap

On Fri, Jun 7, 2013 at 10:50 PM, Tony Lindgren [off-list ref] wrote:
+static irqreturn_t pcs_omap_handle_irq(int irq, void *data)
+{
+       struct pcs_omap *pcso = data;
+       struct list_head *pos;
+       unsigned int wakeirq;
+
+       list_for_each(pos, &pcso->wakeirqs) {
+               struct pcs_reg *pcsoi;
+               u16 val;
+
+               pcsoi = list_entry(pos, struct pcs_reg, node);
+               wakeirq = pcsoi->irq;
+               val = pcsoi->read(pcsoi->reg);
+               if ((val & OMAP_WAKEUP_EVENT_MASK) == OMAP_WAKEUP_EVENT_MASK)
+                       generic_handle_irq(wakeirq);
+       }
+
+       if (pcso->reconfigure_io_chain)
+               pcso->reconfigure_io_chain();
+
+       return IRQ_HANDLED;
+}
I fail to see why this is OMAP-specific.

I would prefer that this gets handled directly in the pinctrl core or
atleast in pinctrl-single in a generic way - latent IRQs is a generic
problem.

And I would also like it to work the other way around: when
irq_set_wake() is called from the irqchip it percolates down
to the pinctrl core and sets up a cross reference like this, for the pin,
so when an IRQ like this occurs, it will be routed up if and only
if it has been flagged as a wakeup from the irqchip layer.

The cross reference can be stored in struct pin_desc.

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help