diff --git a/hid-pidff-wrapper.c b/hid-pidff-wrapper.c index ab53744..1131e61 100644 --- a/hid-pidff-wrapper.c +++ b/hid-pidff-wrapper.c @@ -23,6 +23,12 @@ static const struct hid_device_id pidff_wheel_devices[] = { .driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION | PIDFF_QUIRK_FIX_PERIODIC_ENVELOPE }, { HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R16_R21), .driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION | PIDFF_QUIRK_FIX_PERIODIC_ENVELOPE }, + { HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R16_R21), + .driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION | PIDFF_QUIRK_FIX_PERIODIC_ENVELOPE }, + { HID_USB_DEVICE(USB_VENDOR_ID_VRS, USB_DEVICE_ID_VRS_DFP), + .driver_data = PIDFF_QUIRK_NO_DELAY_EFFECT + | PIDFF_QUIRK_NO_STRICT_PID_CONTROL + | PIDFF_QUIRK_NO_PID_PARAM_BLOCK_OFFSET }, { } }; MODULE_DEVICE_TABLE(hid, pidff_wheel_devices); diff --git a/hid-pidff.h b/hid-pidff.h index 586ee96..9894eac 100644 --- a/hid-pidff.h +++ b/hid-pidff.h @@ -19,6 +19,18 @@ */ #define PIDFF_QUIRK_NO_DELAY_EFFECT BIT(2) +/* + * Ignore PARAM_BLOCK_OFFSET (Axis number). + * Most of the wheelbases have only one Axis +*/ +#define PIDFF_QUIRK_NO_PID_PARAM_BLOCK_OFFSET BIT(3) + +/* + * Some wheelbases don't have some PID_CONTROL fields. + * PID standard does not define fields that MUST exist, but + * that driver was strict about them. This quirk disables it. +*/ +#define PIDFF_QUIRK_NO_STRICT_PID_CONTROL BIT(4) int hid_pidff_init(struct hid_device *hid); int hid_pidff_init_with_quirks(struct hid_device *hid, const struct hid_device_id *id);