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