xref: /linux/drivers/hid/usbhid/hid-pidff.h (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
1*0d24d4b1STomasz Pakuła /* SPDX-License-Identifier: GPL-2.0-or-later */
2*0d24d4b1STomasz Pakuła #ifndef __HID_PIDFF_H
3*0d24d4b1STomasz Pakuła #define __HID_PIDFF_H
4*0d24d4b1STomasz Pakuła 
5*0d24d4b1STomasz Pakuła #include <linux/hid.h>
6*0d24d4b1STomasz Pakuła 
7*0d24d4b1STomasz Pakuła /* HID PIDFF quirks */
8*0d24d4b1STomasz Pakuła 
9*0d24d4b1STomasz Pakuła /* Delay field (0xA7) missing. Skip it during set effect report upload */
10*0d24d4b1STomasz Pakuła #define HID_PIDFF_QUIRK_MISSING_DELAY		BIT(0)
11*0d24d4b1STomasz Pakuła 
12*0d24d4b1STomasz Pakuła /* Missing Paramter block offset (0x23). Skip it during SET_CONDITION
13*0d24d4b1STomasz Pakuła    report upload */
14*0d24d4b1STomasz Pakuła #define HID_PIDFF_QUIRK_MISSING_PBO		BIT(1)
15*0d24d4b1STomasz Pakuła 
16*0d24d4b1STomasz Pakuła /* Initialise device control field even if logical_minimum != 1 */
17*0d24d4b1STomasz Pakuła #define HID_PIDFF_QUIRK_PERMISSIVE_CONTROL	BIT(2)
18*0d24d4b1STomasz Pakuła 
19*0d24d4b1STomasz Pakuła /* Use fixed 0x4000 direction during SET_EFFECT report upload */
20*0d24d4b1STomasz Pakuła #define HID_PIDFF_QUIRK_FIX_WHEEL_DIRECTION	BIT(3)
21*0d24d4b1STomasz Pakuła 
22*0d24d4b1STomasz Pakuła /* Force all periodic effects to be uploaded as SINE */
23*0d24d4b1STomasz Pakuła #define HID_PIDFF_QUIRK_PERIODIC_SINE_ONLY	BIT(4)
24*0d24d4b1STomasz Pakuła 
25*0d24d4b1STomasz Pakuła #ifdef CONFIG_HID_PID
26*0d24d4b1STomasz Pakuła int hid_pidff_init(struct hid_device *hid);
27*0d24d4b1STomasz Pakuła int hid_pidff_init_with_quirks(struct hid_device *hid, u32 initial_quirks);
28*0d24d4b1STomasz Pakuła #else
29*0d24d4b1STomasz Pakuła #define hid_pidff_init NULL
30*0d24d4b1STomasz Pakuła #define hid_pidff_init_with_quirks NULL
31*0d24d4b1STomasz Pakuła #endif
32*0d24d4b1STomasz Pakuła 
33*0d24d4b1STomasz Pakuła #endif
34