]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Input: synaptics-rmi4 - re-enable IRQs in f34v7_do_reflash
authorLucas Stach <l.stach@pengutronix.de>
Mon, 2 Dec 2019 17:37:00 +0000 (09:37 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Dec 2019 07:52:39 +0000 (08:52 +0100)
commit 86bcd3a12999447faad60ec59c2d64d18d8e61ac upstream.

F34 is a bit special as it reinitializes the device and related driver
structs during the firmware update. This clears the fn_irq_mask which
will then prevent F34 from receiving further interrupts, leading to
timeouts during the firmware update. Make sure to reinitialize the
IRQ enables at the appropriate times.

The issue is in F34 code, but the commit in the fixes tag exposed the
issue, as before this commit things would work by accident.

Fixes: 363c53875aef (Input: synaptics-rmi4 - avoid processing unknown IRQs)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20191129133514.23224-1-l.stach@pengutronix.de
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/input/rmi4/rmi_f34v7.c

index 3991d2943660c56d189fba623efbe014ee0d586b..099dde68e332dc2a1448232543bdecd6de1b38e2 100644 (file)
@@ -1192,6 +1192,9 @@ int rmi_f34v7_do_reflash(struct f34_data *f34, const struct firmware *fw)
 {
        int ret;
 
+       f34->fn->rmi_dev->driver->set_irq_bits(f34->fn->rmi_dev,
+                                              f34->fn->irq_mask);
+
        rmi_f34v7_read_queries_bl_version(f34);
 
        f34->v7.image = fw->data;