Althought the function passed as a "handler" during GPIO chip
instantiation is not going to ever be called, specifying handle_edge_irq
there makes for a rather confusing read, both because no "ack" callback
in specified for irqchip and because there's no acking action is
necessary.

Specify handle_bad_irq instead a make a note of the situation. This
commit should be a no-op behaviour wise.

Tested-by: Neil Armstrong <narmstr...@baylibre.com>
Acked-by: Neil Armstrong <narmstr...@baylibre.com>
Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
---
 drivers/pinctrl/pinctrl-sx150x.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/pinctrl-sx150x.c b/drivers/pinctrl/pinctrl-sx150x.c
index 78e15c9..798a8bb 100644
--- a/drivers/pinctrl/pinctrl-sx150x.c
+++ b/drivers/pinctrl/pinctrl-sx150x.c
@@ -1077,9 +1077,20 @@ static int sx150x_probe(struct i2c_client *client,
                pctl->irq.masked = ~0;
                pctl->irq.sense = 0;
 
+               /*
+                * Because sx150x_irq_threaded_fn invokes all of the
+                * nested interrrupt handlers via handle_nested_irq,
+                * any "handler" passed to gpiochip_irqchip_add()
+                * below is going to be ignored, so the choice of the
+                * function does not matter that much.
+                *
+                * We set it to handle_bad_irq to avoid confusion,
+                * plus it will be instantly noticeable if it is ever
+                * called (should not happen)
+                */
                ret = gpiochip_irqchip_add(&pctl->gpio,
                                           &pctl->irq_chip, 0,
-                                          handle_edge_irq, IRQ_TYPE_NONE);
+                                          handle_bad_irq, IRQ_TYPE_NONE);
                if (ret) {
                        dev_err(dev, "could not connect irqchip to gpiochip\n");
                        return ret;
-- 
2.5.5

Reply via email to