Message ID | 20221007182945.1654046-1-acz@semihalf.com |
---|---|
Headers | show |
Series | *** Implement simple haptic HID support *** | expand |
Hi Jiri, any chance you will have some time to provide your feedback on this series of patches? Regards, Angela On Thu, Oct 13, 2022 at 3:18 PM Angela Czubak <acz@semihalf.com> wrote: > > Hi Jiri, > > any chance you will have some time to provide your feedback on this series of patches? > > Regards, > Angela > > On Fri, Oct 7, 2022 at 8:30 PM Angela Czubak <acz@semihalf.com> wrote: >> >> This patch series introduces changes necessary to support devices >> using simple haptic HID pages. >> Implementation attempts to follow the discussion below: >> https://www.spinics.net/lists/linux-input/msg61091.html >> >> Introduce new haptic defines as specified in HID Usage Tables. >> >> Add new force feedback effect type in order to facilitate using >> simple haptic force feedback. >> >> Add INPUT_PROP_HAPTIC_TOUCHPAD to mark touchpad exposing simple haptic >> support. >> >> Add new struct hid_haptic_device so as to gather simple haptic related >> configuration and current state of the device. >> >> Add new functions to be triggered during HID input mapping and >> configuration in order to detect simple haptic devices. >> >> Modify HID input so that haptic output reports are parsed. >> >> Initialize a haptic device. >> >> Modify FF core so that effect IDs can be shared between multiple open file >> handles. >> >> Add shared release and press effects for a simple haptic device. >> >> Calculate pressure resolution if units are grams or newtons. >> >> Add support for kernel-driven mode of simple haptic device. >> >> Toggle ABS_PRESSURE generation by input-mt on request. >> >> Implement functions allowing switching between kernel-managed mode >> and autonomous mode. >> >> Add simple haptic support for hid-multitouch driver. >> >> Implement EVIOCFF(TAKE|RELEASE)CONTROL ioctls so that userspace can take >> and release control of shared release and press effects. >> >> v2: >> - Describe INPUT_PROP_HAPTIC_TOUCHPAD in >> Documentation/input/event-codes.rst >> - Do not extract mt_get_feature(), use hid_hw_wait() instead >> - Define HID_UNIT_GRAM and HID_UNIT_NEWTON >> - Calculate pressure sum in input-mt if INPUT_MT_TOTAL_FORCE flags set >> - Use u* instead of __u* in struct hid_haptic_device >> - Solve problems with report IDS >= 0xF as Dmitry suggests >> >> v3: >> - Get rid of INPUT_PROP_HAPTIC_TOUCHPAD property as haptic device does not >> gave to be a touchpad >> - Introduce notion of haptic forcepads; generate haptic feedback in kernel >> mode only for forcepads >> - Generate clicks based on maximum pressure across slots instead of the sum >> - Fix off-by-one bug in hid_haptic_upload_effect() >> - Fix resume/suspend: issue hid_haptic_resume() in mt_resume() and >> hid_haptic_suspend() in mt_suspend() >> - Add reset callback for HID i2c devices >> - Implement reset callback for HID multitouch haptic devices >> - Implement lid handler triggering touchpad recalibration for Redrix >> >> v4: >> - Fix mt_reset callback to end earlier if no input devices have been >> configured yet to avoid iterating over uninitialized hid->inputs list >> >> Angela Czubak (17): >> HID: add haptics page defines >> Input: add FF_HID effect type >> HID: haptic: introduce hid_haptic_device >> HID: input: allow mapping of haptic output >> HID: haptic: initialize haptic device >> Input: add shared effects >> HID: haptic: implement release and press effects >> HID: input: calculate resolution for pressure >> HID: haptic: add functions handling events >> Input: MT - add INPUT_MT_MAX_FORCE flags >> HID: haptic: add hid_haptic_switch_mode >> HID: multitouch: add haptic multitouch support >> Input: introduce EVIOCFF(TAKE|RELEASE)CONTROL >> HID: haptic: add hid_haptic_change_control >> HID: add HID device reset callback >> HID: haptic: implement HID haptic reset callback >> HID: multitouch: Add lid handler for touchpad on Redrix chromebook >> >> drivers/hid/Kconfig | 14 + >> drivers/hid/Makefile | 1 + >> drivers/hid/hid-haptic.c | 753 +++++++++++++++++++++++++++++ >> drivers/hid/hid-haptic.h | 152 ++++++ >> drivers/hid/hid-input.c | 18 +- >> drivers/hid/hid-multitouch.c | 313 +++++++++++- >> drivers/hid/i2c-hid/i2c-hid-core.c | 21 + >> drivers/input/evdev.c | 6 + >> drivers/input/ff-core.c | 129 ++++- >> drivers/input/input-mt.c | 16 +- >> include/linux/hid.h | 31 ++ >> include/linux/input.h | 5 + >> include/linux/input/mt.h | 1 + >> include/uapi/linux/input.h | 26 +- >> 14 files changed, 1469 insertions(+), 17 deletions(-) >> create mode 100644 drivers/hid/hid-haptic.c >> create mode 100644 drivers/hid/hid-haptic.h >> >> -- >> 2.36.0.550.gb090851708-goog >>