On Thu Mar 12 16:35:27 2026 -0500, Bradford Love wrote:
> On many embedded platforms i2c responses through USB are not returned
> as quickly, plus constantly banging on the i2c master receive essentially
> deadlocks the driver. Inserting a 3ms delay between i2c receive calls
> and extending the timeout fixes all tested platforms.
>
> Signed-off-by: Bradford Love <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>
Patch committed.
Thanks,
Hans Verkuil
drivers/media/dvb-frontends/si2168.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
---
diff --git a/drivers/media/dvb-frontends/si2168.c
b/drivers/media/dvb-frontends/si2168.c
index c4bbcd127cac..b973d61c3720 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -40,7 +40,7 @@ static int si2168_cmd_execute(struct i2c_client *client,
struct si2168_cmd *cmd)
if (cmd->rlen) {
/* wait cmd execution terminate */
- #define TIMEOUT 70
+ #define TIMEOUT 140
timeout = jiffies + msecs_to_jiffies(TIMEOUT);
while (!time_after(jiffies, timeout)) {
ret = i2c_master_recv(client, cmd->args, cmd->rlen);
@@ -54,6 +54,8 @@ static int si2168_cmd_execute(struct i2c_client *client,
struct si2168_cmd *cmd)
/* firmware ready? */
if ((cmd->args[0] >> 7) & 0x01)
break;
+
+ usleep_range(2500, 3500);
}
dev_dbg(&client->dev, "cmd execution took %d ms\n",
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]