]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: add FF_HAPTIC effect type
authorAngela Czubak <aczubak@google.com>
Mon, 18 Aug 2025 23:08:43 +0000 (23:08 +0000)
committerBenjamin Tissoires <bentiss@kernel.org>
Mon, 15 Sep 2025 12:32:54 +0000 (14:32 +0200)
FF_HAPTIC effect type can be used to trigger haptic feedback with HID
simple haptic usages.

Signed-off-by: Angela Czubak <aczubak@google.com>
Co-developed-by: Jonathan Denose <jdenose@google.com>
Signed-off-by: Jonathan Denose <jdenose@google.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
include/uapi/linux/input.h

index 127119c287cffd04e6f30902bf4db721818679d5..6aa703fcfcfb740aa25a6240b02d2ecab7956108 100644 (file)
@@ -429,6 +429,24 @@ struct ff_rumble_effect {
        __u16 weak_magnitude;
 };
 
+/**
+ * struct ff_haptic_effect
+ * @hid_usage: hid_usage according to Haptics page (WAVEFORM_CLICK, etc.)
+ * @vendor_id: the waveform vendor ID if hid_usage is in the vendor-defined range
+ * @vendor_waveform_page: the vendor waveform page if hid_usage is in the vendor-defined range
+ * @intensity: strength of the effect as percentage
+ * @repeat_count: number of times to retrigger effect
+ * @retrigger_period: time before effect is retriggered (in ms)
+ */
+struct ff_haptic_effect {
+       __u16 hid_usage;
+       __u16 vendor_id;
+       __u8  vendor_waveform_page;
+       __u16 intensity;
+       __u16 repeat_count;
+       __u16 retrigger_period;
+};
+
 /**
  * struct ff_effect - defines force feedback effect
  * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
@@ -465,6 +483,7 @@ struct ff_effect {
                struct ff_periodic_effect periodic;
                struct ff_condition_effect condition[2]; /* One for each axis */
                struct ff_rumble_effect rumble;
+               struct ff_haptic_effect haptic;
        } u;
 };
 
@@ -472,6 +491,7 @@ struct ff_effect {
  * Force feedback effect types
  */
 
+#define FF_HAPTIC              0x4f
 #define FF_RUMBLE      0x50
 #define FF_PERIODIC    0x51
 #define FF_CONSTANT    0x52
@@ -481,7 +501,7 @@ struct ff_effect {
 #define FF_INERTIA     0x56
 #define FF_RAMP                0x57
 
-#define FF_EFFECT_MIN  FF_RUMBLE
+#define FF_EFFECT_MIN  FF_HAPTIC
 #define FF_EFFECT_MAX  FF_RAMP
 
 /*