• Hans de Goede's avatar
    platform/x86: Add and use a dual_accel_detect() helper · 153cca9c
    Hans de Goede authored
    Various 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 undocumented ACPI methods, to let the firmware know if the 2-in-1 is
    in tablet- or laptop-mode. The firmware may use this to disable the kbd and
    touchpad to avoid spurious input in tablet-mode as well as to report
    SW_TABLET_MODE info to the OS.
    
    Since Linux does not call these undocumented methods, the SW_TABLET_MODE
    info reported by various pdx86 drivers is incorrect on these devices.
    
    Before this commit the intel-hid and thinkpad_acpi code already had 2
    hardcoded checks for ACPI hardware-ids of dual-accel sensors to avoid
    reporting broken info.
    
    And now we also have a bug-report about the same problem in the intel-vbtn
    code. Since there are at least 3 different ACPI hardware-ids in play, add
    a new dual_accel_detect() helper which checks for all 3, rather then
    adding different hardware-ids to the drivers as bug-reports trickle in.
    Having shared code which checks all known hardware-ids is esp. important
    for the intel-hid and intel-vbtn drivers as these are generic drivers
    which are used on a lot of devices.
    
    The BOSC0200 hardware-id requires special handling, because often it is
    used for a single-accelerometer setup. Only in a few cases it refers to
    a dual-accel setup, in which case there will be 2 I2cSerialBus resources
    in the device's resource-list, so the helper checks for this.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=209011Reported-and-tested-by: default avatarJulius Lehmann <julius@devpi.de>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20210729082134.6683-1-hdegoede@redhat.com
    153cca9c
Kconfig 42.4 KB