]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: ilitek_ts_i2c - fix warning with gpio controllers that sleep
authorJosua Mayer <josua@solid-run.com>
Fri, 19 Dec 2025 05:38:55 +0000 (21:38 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 19 Dec 2025 05:46:55 +0000 (21:46 -0800)
The ilitek touchscreen driver uses the non-sleeping gpiod_set_value
function for reset.

Switch to using gpiod_set_value_cansleep() when controlling reset_gpio to
support GPIO providers that may sleep, such as I2C GPIO expanders.

Further switch the mdelay calls on the reset path to fsleep (preferred
in non-atomic contexts).

This fixes noisy complaints in kernel log for gpio providers that do
sleep.

Signed-off-by: Josua Mayer <josua@solid-run.com>
Link: https://patch.msgid.link/20251201-imx8mp-hb-iiot-v4-2-53a4cd6c21bf@solid-run.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/ilitek_ts_i2c.c

index 0dd632724a003f75eacce758bf84946a727c5861..10e5530d6a5d02670398e7e4614905d4a9b19600 100644 (file)
@@ -396,10 +396,10 @@ static const struct ilitek_protocol_map ptl_func_map[] = {
 static void ilitek_reset(struct ilitek_ts_data *ts, int delay)
 {
        if (ts->reset_gpio) {
-               gpiod_set_value(ts->reset_gpio, 1);
-               mdelay(10);
-               gpiod_set_value(ts->reset_gpio, 0);
-               mdelay(delay);
+               gpiod_set_value_cansleep(ts->reset_gpio, 1);
+               fsleep(10000);
+               gpiod_set_value_cansleep(ts->reset_gpio, 0);
+               fsleep(delay * 1000);
        }
 }