• Hans de Goede's avatar
    platform/x86: thinkpad_acpi: Do not report SW_TABLET_MODE on Yoga 11e · f2eae188
    Hans de Goede authored
    The Yoga 11e series has 2 accelerometers described by a BOSC0200 ACPI node.
    This setup relies on a Windows service which reads both accelerometers and
    then calculates the angle between the 2 halves to determine laptop / tent /
    tablet mode and then reports the calculated mode back to the EC by calling
    special ACPI methods on the BOSC0200 node.
    
    The bmc150 iio driver does not support this (it involves double
    calculations requiring sqrt and arccos so this really needs to be done
    in userspace), as a result of this on the Yoga 11e the thinkpad_acpi
    code always reports SW_TABLET_MODE=0, starting with GNOME 3.38 reporting
    SW_TABLET_MODE=0 causes GNOME to:
    
    1. Not show the onscreen keyboard when a text-input field is focussed
       with the touchscreen.
    2. Disable accelerometer based auto display-rotation.
    
    This makes sense when in laptop-mode but not when in tablet-mode. But
    since for the Yoga 11e the thinkpad_acpi code always reports
    SW_TABLET_MODE=0, GNOME does not know when the device is in tablet-mode.
    
    Stop reporting the broken (always 0) SW_TABLET_MODE on Yoga 11e models
    to fix this.
    
    Note there are plans for userspace to support 360 degree hinges style
    2-in-1s with 2 accelerometers and figure out the mode by itself, see:
    https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/216Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20201106140130.46820-1-hdegoede@redhat.com
    f2eae188
thinkpad_acpi.c 270 KB