From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: admin@kryma.net
Cc: Linux-input@vger.kernel.org,
Benjamin Tissoires <benjamin.tissoires@redhat.com>,
Jiri Kosina <jikos@kernel.org>
Subject: Re: [PATCH] Add an I2C HID quirk for incorrect input length.
Date: Sat, 30 Nov 2019 19:12:57 -0800 [thread overview]
Message-ID: <20191201031257.GN248138@dtor-ws> (raw)
In-Reply-To: <20191127032329.8406-1-admin@kryma.net>
On Wed, Nov 27, 2019 at 03:23:29AM +0000, admin@kryma.net wrote:
> From: Pavel Balan <admin@kryma.net>
>
> Apply it to the Lenovo Y720 gaming laptop I2C peripheral then.
>
> This fixes dmesg being flooded with errors visible on un-suspend
> in Linux Mint 19 Cinnamon.
>
> Example of error log:
>
> <...>
> [ 4.326588] i2c_hid i2c-ITE33D1:00: i2c_hid_get_input: incomplete report (2/4)
> [ 4.326845] i2c_hid i2c-ITE33D1:00: i2c_hid_get_input: incomplete report (2/4)
> [ 4.327095] i2c_hid i2c-ITE33D1:00: i2c_hid_get_input: incomplete report (2/4)
> [ 4.327341] i2c_hid i2c-ITE33D1:00: i2c_hid_get_input: incomplete report (2/4)
> [ 4.327609] i2c_hid i2c-ITE33D1:00: i2c_hid_get_input: incomplete report (2/4)
> <...>
>
> Example of fixed log (debug on)
>
> <...>
> [ 3731.333183] i2c_hid i2c-ITE33D1:00: input: 02 00
> [ 3731.333581] i2c_hid i2c-ITE33D1:00: input: 02 00
> [ 3731.333842] i2c_hid i2c-ITE33D1:00: input: 02 00
> [ 3731.334107] i2c_hid i2c-ITE33D1:00: input: 02 00
> [ 3731.334367] i2c_hid i2c-ITE33D1:00: input: 02 00
> <...>
This should go to Jiri/Benjamin (CCed).
>
> Signed-off-by: Pavel Balan <admin@kryma.net>
> ---
> drivers/hid/hid-ids.h | 1 +
> drivers/hid/i2c-hid/i2c-hid-core.c | 15 ++++++++++++---
> 2 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 76969a22b0f2..ea518daf7435 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -628,6 +628,7 @@
> #define USB_VENDOR_ID_ITE 0x048d
> #define USB_DEVICE_ID_ITE_LENOVO_YOGA 0x8386
> #define USB_DEVICE_ID_ITE_LENOVO_YOGA2 0x8350
> +#define I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720 0x837a
> #define USB_DEVICE_ID_ITE_LENOVO_YOGA900 0x8396
> #define USB_DEVICE_ID_ITE8595 0x8595
>
> diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
> index 2a7c6e33bb1c..14d964700a7c 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-core.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-core.c
> @@ -51,6 +51,7 @@
> #define I2C_HID_QUIRK_NO_RUNTIME_PM BIT(2)
> #define I2C_HID_QUIRK_DELAY_AFTER_SLEEP BIT(3)
> #define I2C_HID_QUIRK_BOGUS_IRQ BIT(4)
> +#define I2C_HID_QUIRK_BAD_INPUT_SIZE BIT(5)
>
> /* flags */
> #define I2C_HID_STARTED 0
> @@ -182,6 +183,8 @@ static const struct i2c_hid_quirks {
> I2C_HID_QUIRK_NO_RUNTIME_PM },
> { USB_VENDOR_ID_ELAN, HID_ANY_ID,
> I2C_HID_QUIRK_BOGUS_IRQ },
> + { USB_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720,
> + I2C_HID_QUIRK_BAD_INPUT_SIZE },
> { 0, 0 }
> };
>
> @@ -513,9 +516,15 @@ static void i2c_hid_get_input(struct i2c_hid *ihid)
> }
>
> if ((ret_size > size) || (ret_size < 2)) {
> - dev_err(&ihid->client->dev, "%s: incomplete report (%d/%d)\n",
> - __func__, size, ret_size);
> - return;
> + if (ihid->quirks & I2C_HID_QUIRK_BAD_INPUT_SIZE) {
> + ihid->inbuf[0] = size & 0xff;
> + ihid->inbuf[1] = size >> 8;
> + ret_size = size;
> + } else {
> + dev_err(&ihid->client->dev, "%s: incomplete report (%d/%d)\n",
> + __func__, size, ret_size);
> + return;
> + }
> }
>
> i2c_hid_dbg(ihid, "input: %*ph\n", ret_size, ihid->inbuf);
> --
> 2.17.1
>
--
Dmitry
next prev parent reply other threads:[~2019-12-01 3:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-27 3:23 [PATCH] Add an I2C HID quirk for incorrect input length admin
2019-12-01 3:12 ` Dmitry Torokhov [this message]
2019-12-13 20:42 ` Jiri Kosina
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191201031257.GN248138@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=Linux-input@vger.kernel.org \
--cc=admin@kryma.net \
--cc=benjamin.tissoires@redhat.com \
--cc=jikos@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.