• Hans de Goede's avatar
    Input: hideep - optionally reset controller work mode to native HiDeep protocol · 007e50eb
    Hans de Goede authored
    The HiDeep IST940E touchscreen controller used on the Lenovo Yoga Book X90F
    convertible comes up in HID mode by default.
    
    This works well on the X91F Windows model where the touchscreen is
    correctly described in ACPI and ACPI takes care of controlling
    the reset GPIO and regulators.
    
    But the X90F ships with Android and the ACPI tables on this model don't
    describe the touchscreen. Instead this is hardcoded in the vendor kernel.
    
    The vendor kernel uses the touchscreen in native HiDeep 20 (2.0?) protocol
    mode and switches the controller to this mode by writing 0 to reg 0x081e.
    
    Adjusting the i2c-hid code to deal with the reset-gpio and regulators on
    this non devicetree (but rather broken ACPI) convertible is somewhat tricky
    and the native protocol reports ABS_MT_PRESSURE and ABS_MT_TOUCH_MAJOR
    which are not reported in HID mode, so it is preferable to use the native
    mode.
    
    Add support to the hideep driver to reset the work-mode to the native
    HiDeep protocol to allow using it on the Lenovo Yoga Book X90F.
    This is guarded behind a new "hideep,force-native-protocol" boolean
    property, to avoid changing behavior on other devices.
    
    For the record: I did test using the i2c-hid driver with some quick hacks
    and it does work. The I2C-HID descriptor is available from address 0x0020,
    just like on the X91F Windows model.
    
    So far the new "hideep,force-native-protocol" property is only used on
    x86/ACPI (non devicetree) devs. IOW it is not used in actual devicetree
    files. The devicetree-bindings maintainers have requested properties like
    these to not be added to the devicetree-bindings, so the new property is
    deliberately not added to the existing devicetree-bindings.
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230311114726.182789-3-hdegoede@redhat.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    007e50eb
hideep.c 26.1 KB