Commit 7bcf9ebb authored by Hans de Goede's avatar Hans de Goede Committed by Jiri Kosina

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: default avatarDouglas Anderson <dianders@chromium.org>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
parent af93a167
...@@ -479,9 +479,9 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid) ...@@ -479,9 +479,9 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid)
clear_bit(I2C_HID_RESET_PENDING, &ihid->flags); clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
} else if (!wait_event_timeout(ihid->wait, } else if (!wait_event_timeout(ihid->wait,
!test_bit(I2C_HID_RESET_PENDING, &ihid->flags), !test_bit(I2C_HID_RESET_PENDING, &ihid->flags),
msecs_to_jiffies(5000))) { msecs_to_jiffies(1000))) {
ret = -ENODATA; dev_warn(&ihid->client->dev, "device did not ack reset within 1000 ms\n");
goto err_clear_reset; clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
} }
i2c_hid_dbg(ihid, "%s: finished.\n", __func__); i2c_hid_dbg(ihid, "%s: finished.\n", __func__);
...@@ -490,11 +490,6 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid) ...@@ -490,11 +490,6 @@ static int i2c_hid_finish_hwreset(struct i2c_hid *ihid)
ret = i2c_hid_set_power(ihid, I2C_HID_PWR_ON); ret = i2c_hid_set_power(ihid, I2C_HID_PWR_ON);
return ret; return ret;
err_clear_reset:
clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
i2c_hid_set_power(ihid, I2C_HID_PWR_SLEEP);
return ret;
} }
static void i2c_hid_get_input(struct i2c_hid *ihid) static void i2c_hid_get_input(struct i2c_hid *ihid)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment