xref: /linux/drivers/hid/usbhid/hid-pidff.h (revision b80a75cf6999fb79971b41eaec7af2bb4b514714)
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 upload */
13 #define HID_PIDFF_QUIRK_MISSING_PBO		BIT(1)
14 
15 /* Initialise device control field even if logical_minimum != 1 */
16 #define HID_PIDFF_QUIRK_PERMISSIVE_CONTROL	BIT(2)
17 
18 /* Use fixed 0x4000 direction during SET_EFFECT report upload */
19 #define HID_PIDFF_QUIRK_FIX_WHEEL_DIRECTION	BIT(3)
20 
21 /* Force all periodic effects to be uploaded as SINE */
22 #define HID_PIDFF_QUIRK_PERIODIC_SINE_ONLY	BIT(4)
23 
24 #ifdef CONFIG_HID_PID
25 int hid_pidff_init(struct hid_device *hid);
26 int hid_pidff_init_with_quirks(struct hid_device *hid, u32 initial_quirks);
27 #else
28 #define hid_pidff_init NULL
29 #define hid_pidff_init_with_quirks NULL
30 #endif
31 
32 #endif
33