On Sat, Mar 11, 2023 at 12:47:26PM +0100, Hans de Goede wrote: > 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: Hans de Goede <hdegoede@xxxxxxxxxx> Applied, thank you. -- Dmitry