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