]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i2c: pnx: Fix timeout in wait functions
authorVladimir Riabchun <ferr.lambarginio@gmail.com>
Fri, 6 Dec 2024 23:19:34 +0000 (00:19 +0100)
committerAndi Shyti <andi.shyti@kernel.org>
Tue, 10 Dec 2024 14:50:50 +0000 (15:50 +0100)
Since commit f63b94be6942 ("i2c: pnx: Fix potential deadlock warning
from del_timer_sync() call in isr") jiffies are stored in
i2c_pnx_algo_data.timeout, but wait_timeout and wait_reset are still
using it as milliseconds. Convert jiffies back to milliseconds to wait
for the expected amount of time.

Fixes: f63b94be6942 ("i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr")
Signed-off-by: Vladimir Riabchun <ferr.lambarginio@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
drivers/i2c/busses/i2c-pnx.c

index d4d139b975131b3f4feb493f4baed1f2c51f1b91..9a1af5bbd604cdd073c8df0b4d8e303d6e07bf05 100644 (file)
@@ -95,7 +95,7 @@ enum {
 
 static inline int wait_timeout(struct i2c_pnx_algo_data *data)
 {
-       long timeout = data->timeout;
+       long timeout = jiffies_to_msecs(data->timeout);
        while (timeout > 0 &&
                        (ioread32(I2C_REG_STS(data)) & mstatus_active)) {
                mdelay(1);
@@ -106,7 +106,7 @@ static inline int wait_timeout(struct i2c_pnx_algo_data *data)
 
 static inline int wait_reset(struct i2c_pnx_algo_data *data)
 {
-       long timeout = data->timeout;
+       long timeout = jiffies_to_msecs(data->timeout);
        while (timeout > 0 &&
                        (ioread32(I2C_REG_CTL(data)) & mcntrl_reset)) {
                mdelay(1);