Re: [PATCH] platform/x86: intel-hid: Do not create SW_TABLET_MODE input-dev when a KIOX010A ACPI dev is present

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 7, 2020 at 6:51 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> Some 360 degree hinges (yoga) style 2-in-1 devices use 2 accelerometers

Yoga

> to allow the OS to determine the angle between the display and the base
> of the device. On Windows these are read by a special HingeAngleService
> process which calls an ACPI DSM (Device Specific Method) on the

_DSM

> ACPI KIOX010A device node for the sensor in the display, to let the
> firmware know if the 2-in-1 is in tablet- or laptop-mode so that it can
> disable the kbd and touchpad to avoid spurious input in tablet-mode.

keyboard

> The linux kxcjk1013 driver calls the DSM for this once at probe time

Perhaps similar way as above: On Linux the ...

(Note 'Linux' with capital letter)

_DSM

> to ensure that the builtin kbd and touchpad work. On some devices this

keyboard

> causes a "spurious" 0xcd event on the intel-hid ACPI dev. In this case

device

> there is not a functional tablet-mode switch, so we should not register
> the tablet-mode switch device.

Same comments for below text (IIUC that one is identical).

Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>

> Cc: Elia Devito <eliadevito@xxxxxxxxx>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/platform/x86/intel-hid.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c
> index 66ccdc17a64d..4a396ef54d2e 100644
> --- a/drivers/platform/x86/intel-hid.c
> +++ b/drivers/platform/x86/intel-hid.c
> @@ -441,8 +441,23 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
>          * Some convertible have unreliable VGBS return which could cause incorrect
>          * SW_TABLET_MODE report, in these cases we enable support when receiving
>          * the first event instead of during driver setup.
> +        *
> +        * Some 360 degree hinges (yoga) style 2-in-1 devices use 2 accelerometers
> +        * to allow the OS to determine the angle between the display and the base
> +        * of the device. On Windows these are read by a special HingeAngleService
> +        * process which calls an ACPI DSM (Device Specific Method) on the
> +        * ACPI KIOX010A device node for the sensor in the display, to let the
> +        * firmware know if the 2-in-1 is in tablet- or laptop-mode so that it can
> +        * disable the kbd and touchpad to avoid spurious input in tablet-mode.
> +        *
> +        * The linux kxcjk1013 driver calls the DSM for this once at probe time
> +        * to ensure that the builtin kbd and touchpad work. On some devices this
> +        * causes a "spurious" 0xcd event on the intel-hid ACPI dev. In this case
> +        * there is not a functional tablet-mode switch, so we should not register
> +        * the tablet-mode switch device.
>          */
> -       if (!priv->switches && (event == 0xcc || event == 0xcd)) {
> +       if (!priv->switches && (event == 0xcc || event == 0xcd) &&
> +           !acpi_dev_present("KIOX010A", NULL, -1)) {
>                 dev_info(&device->dev, "switch event received, enable switches supports\n");
>                 err = intel_hid_switches_setup(device);
>                 if (err)
> --
> 2.28.0
>


-- 
With Best Regards,
Andy Shevchenko



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux