Input: edt-ft54x6: Clean up timer and workqueue on remove
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Wed, 8 Sep 2021 13:46:17 +0000 (14:46 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:04:22 +0000 (16:04 +0000)
If no interrupt is defined then a timer and workqueue are used
to poll the controller.
On remove these were not being cleaned up correctly.

Fixes: ca61fdaba79f "Input: edt-ft5x06: Poll the device if no interrupt is
configured."

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/input/touchscreen/edt-ft5x06.c

index 339eae4..aabd124 100644 (file)
@@ -1301,6 +1301,10 @@ static int edt_ft5x06_ts_remove(struct i2c_client *client)
 {
        struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
 
+       if (!client->irq) {
+               del_timer(&tsdata->timer);
+               cancel_work_sync(&tsdata->work_i2c_poll);
+       }
        edt_ft5x06_ts_teardown_debugfs(tsdata);
 
        return 0;