Skip to content

Commit 7bcf9eb

Browse files
jwrdegoedeJiri Kosina
authored andcommitted
HID: i2c-hid: Turn missing reset ack into a warning
On all i2c-hid devices seen sofar the reset-ack either works, or the hw is somehow buggy and does not (always) ack the reset properly, yet it still works fine. Lower the very long reset timeout to 1 second which should be plenty and change the reset not getting acked from an error into a warning. This results in a bit cleaner code and avoids the need to add more I2C_HID_QUIRK_NO_IRQ_AFTER_RESET quirks in the future. Reviewed-by: Douglas Anderson <[email protected]> Signed-off-by: Hans de Goede <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent af93a16 commit 7bcf9eb

File tree

1 file changed

+3
-8
lines changed

1 file changed

+3
-8
lines changed

drivers/hid/i2c-hid/i2c-hid-core.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -479,9 +479,9 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid)
479479
clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
480480
} else if (!wait_event_timeout(ihid->wait,
481481
!test_bit(I2C_HID_RESET_PENDING, &ihid->flags),
482-
msecs_to_jiffies(5000))) {
483-
ret = -ENODATA;
484-
goto err_clear_reset;
482+
msecs_to_jiffies(1000))) {
483+
dev_warn(&ihid->client->dev, "device did not ack reset within 1000 ms\n");
484+
clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
485485
}
486486
i2c_hid_dbg(ihid, "%s: finished.\n", __func__);
487487

@@ -490,11 +490,6 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid)
490490
ret = i2c_hid_set_power(ihid, I2C_HID_PWR_ON);
491491

492492
return ret;
493-
494-
err_clear_reset:
495-
clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
496-
i2c_hid_set_power(ihid, I2C_HID_PWR_SLEEP);
497-
return ret;
498493
}
499494

500495
static void i2c_hid_get_input(struct i2c_hid *ihid)

0 commit comments

Comments
 (0)