mbox series

[v2,0/2] HID: i2c-hid: re-power-on quirk for QTEC kbrd

Message ID 20241031073419.9189-1-alex.vinarskis@gmail.com
Headers show
Series HID: i2c-hid: re-power-on quirk for QTEC kbrd | expand

Message

Aleksandrs Vinarskis Oct. 31, 2024, 7:31 a.m. UTC
Resolve keyboard not working out of the box for Dell XPS 9345 13"
codenamed 'tributo'. X1E80100-based laptop's initial support is currently
being upstreamed [1].

In present state, keyboard is succesfully initialized, however attempt to type
anything throws 'incomplete report' errors. When utilizing
I2C_HID_QUIRK_BAD_INPUT_SIZE quirk the error is gone, however raw data coming
from the keyboard is always the same, no matter the key pressed. Issue
'resolves' itself when suspending and resuming the device.

It appears that calling power on command one more time after device
initialization before finishing off the probing fixes this weird behavior, and
keyboard works right away.

Introduce a new quirk for such behaviour, and enable it for particular keyboard.
Vendor is shown as 'QTEC', however device id is reported as 0000. Given that
vendor was not present before, using HID_ANY_ID to match the device should be
okay in this case.

In v1 it was suggested to make a dedicated i2c-of-qtec driver, but I was not
sure how to proceed at the time. I have now drafted a dedicated driver, and it
really is just probe method being extended to call powerup command again. Given
that a similarly 'ugly' quirk was just merged to i2c-hid-core.c for a Goodix
device [2], and that (IMO) creating a dedicated driver for such a small change
without any plan on extending it will be just polluting, I am asking you to
consider this change again. Alternatively, if it is yet still strongly
preferred to have a dedicated driver to include this quirk, please let me know
so I can proceed accordingly.

[1] https://lore.kernel.org/all/20241003211139.9296-1-alex.vinarskis@gmail.com/
[2] https://lore.kernel.org/all/20241007222629.172047-1-marynczakbartlomiej@gmail.com/

--------

Changes to V1:
* Rebase on top of latest linux-next
* Update coverletter's reasoning and links
* link: https://lore.kernel.org/all/20240925100303.9112-1-alex.vinarskis@gmail.com/

Aleksandrs Vinarskis (2):
  HID: i2c-hid: introduce re-power-on quirk
  HID: i2c-hid: introduce qtec vendor, enable re-power-on quirk

 drivers/hid/hid-ids.h              |  2 ++
 drivers/hid/i2c-hid/i2c-hid-core.c | 12 +++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

Comments

Tudor, Laurentiu Oct. 31, 2024, 4:26 p.m. UTC | #1
Internal Use - Confidential
> -----Original Message-----
> From: Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
> Sent: Thursday, October 31, 2024 9:32 AM
>
> Resolve keyboard not working out of the box for Dell XPS 9345 13"
> codenamed 'tributo'. X1E80100-based laptop's initial support is currently being
> upstreamed [1].
>
> In present state, keyboard is succesfully initialized, however attempt to type
> anything throws 'incomplete report' errors. When utilizing
> I2C_HID_QUIRK_BAD_INPUT_SIZE quirk the error is gone, however raw data
> coming from the keyboard is always the same, no matter the key pressed. Issue
> 'resolves' itself when suspending and resuming the device.
>
> It appears that calling power on command one more time after device
> initialization before finishing off the probing fixes this weird behavior, and
> keyboard works right away.
>
> Introduce a new quirk for such behaviour, and enable it for particular
> keyboard.
> Vendor is shown as 'QTEC', however device id is reported as 0000. Given that
> vendor was not present before, using HID_ANY_ID to match the device should
> be okay in this case.
>
> In v1 it was suggested to make a dedicated i2c-of-qtec driver, but I was not sure
> how to proceed at the time. I have now drafted a dedicated driver, and it really
> is just probe method being extended to call powerup command again. Given
> that a similarly 'ugly' quirk was just merged to i2c-hid-core.c for a Goodix
> device [2], and that (IMO) creating a dedicated driver for such a small change
> without any plan on extending it will be just polluting, I am asking you to
> consider this change again. Alternatively, if it is yet still strongly preferred to
> have a dedicated driver to include this quirk, please let me know so I can
> proceed accordingly.
>
> --------

For the series:

Reviewed-by: Laurentiu Tudor <Laurentiu.Tudor1@dell.com>
Tested-by: Laurentiu Tudor <Laurentiu.Tudor1@dell.com>

---
Thanks & Best Regards, Laurentiu

> Changes to V1:
> * Rebase on top of latest linux-next
> * Update coverletter's reasoning and links
> * link:
> https://urldefense.com/v3/__https://lore.kernel.org/all/20240925100303.911
> 2-1-
> alex.vinarskis@gmail.com/__;!!LpKI!hTYUmNdAbx06nnU3DlrMQn9PGzi4y9Ne
> SOTjPf2SPO67ore1XymZjywoQN19RvKaVHbNs5VLc9_77mwvQAT8em7dODeJ
> $ [lore[.]kernel[.]org]
>
> Aleksandrs Vinarskis (2):
>   HID: i2c-hid: introduce re-power-on quirk
>   HID: i2c-hid: introduce qtec vendor, enable re-power-on quirk
>
>  drivers/hid/hid-ids.h              |  2 ++
>  drivers/hid/i2c-hid/i2c-hid-core.c | 12 +++++++++++-
>  2 files changed, 13 insertions(+), 1 deletion(-)
>
> --
> 2.45.2