i2c: cht-wc: Use generic_handle_irq_safe().
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 11 Feb 2022 18:14:56 +0000 (19:14 +0100)
committerWolfram Sang <wsa@kernel.org>
Tue, 1 Mar 2022 14:58:57 +0000 (15:58 +0100)
Instead of manually disabling interrupts before invoking use
generic_handle_irq_safe() which can be invoked with enabled and disabled
interrupts.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-cht-wc.c

index 1cf68f85b2e112f4fd7902faa6aa8b5320d2bc75..8ccf0c928bb448bf70894cae79646ec55ad034ed 100644 (file)
@@ -99,15 +99,8 @@ static irqreturn_t cht_wc_i2c_adap_thread_handler(int id, void *data)
         * interrupt handler as well, so running the client irq handler from
         * this thread will cause things to lock up.
         */
-       if (reg & CHT_WC_EXTCHGRIRQ_CLIENT_IRQ) {
-               /*
-                * generic_handle_irq expects local IRQs to be disabled
-                * as normally it is called from interrupt context.
-                */
-               local_irq_disable();
-               generic_handle_irq(adap->client_irq);
-               local_irq_enable();
-       }
+       if (reg & CHT_WC_EXTCHGRIRQ_CLIENT_IRQ)
+               generic_handle_irq_safe(adap->client_irq);
 
        return IRQ_HANDLED;
 }