提交 05a90cc7 编写于 作者: A Andrey Smirnov 提交者: Linus Walleij

pinctrl-sx150x: Simplify interrupt handler

Make use of for_each_set_bit macro and reduce boilerplate code.
Tested-by: NNeil Armstrong <narmstrong@baylibre.com>
Acked-by: NNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: NAndrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
上级 ab5bd035
......@@ -465,11 +465,9 @@ static int sx150x_irq_set_type(struct irq_data *d, unsigned int flow_type)
static irqreturn_t sx150x_irq_thread_fn(int irq, void *dev_id)
{
struct sx150x_pinctrl *pctl = (struct sx150x_pinctrl *)dev_id;
unsigned int nhandled = 0;
unsigned int sub_irq;
unsigned int n;
s32 err;
unsigned long n, status;
unsigned int val;
int err;
err = regmap_read(pctl->regmap, pctl->data->reg_irq_src, &val);
if (err < 0)
......@@ -479,15 +477,11 @@ static irqreturn_t sx150x_irq_thread_fn(int irq, void *dev_id)
if (err < 0)
return IRQ_NONE;
for (n = 0; n < pctl->data->ngpios; ++n) {
if (val & BIT(n)) {
sub_irq = irq_find_mapping(pctl->gpio.irqdomain, n);
handle_nested_irq(sub_irq);
++nhandled;
}
}
status = val;
for_each_set_bit(n, &status, pctl->data->ngpios)
handle_nested_irq(irq_find_mapping(pctl->gpio.irqdomain, n));
return (nhandled > 0 ? IRQ_HANDLED : IRQ_NONE);
return IRQ_HANDLED;
}
static void sx150x_irq_bus_lock(struct irq_data *d)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册