From: Tomasz Pakuła Date: Tue, 25 Feb 2025 22:30:02 +0000 (+0100) Subject: HID: pidff: Compute INFINITE value instead of using hardcoded 0xffff X-Git-Tag: v6.15-rc1~171^2~5^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1a575044d516972a1d036d54c0180b9085e21dc6;p=thirdparty%2Fkernel%2Flinux.git HID: pidff: Compute INFINITE value instead of using hardcoded 0xffff As per USB PID standard: INFINITE - Referrers to the maximum value of a range. i.e. if in an 8 bit unsigned field the value of 255 would indicate INFINITE. Detecting 0xffff (U16_MAX) is still important as we MIGHT get this value as infinite from some native software as 0 was never actually defined in Linux' FF api as the infinite value. I'm working on it though. Signed-off-by: Tomasz Pakuła Signed-off-by: Jiri Kosina --- diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c index 74b033a4ac1b8..a614438e43bd8 100644 --- a/drivers/hid/usbhid/hid-pidff.c +++ b/drivers/hid/usbhid/hid-pidff.c @@ -283,8 +283,9 @@ static void pidff_set_duration(struct pidff_usage *usage, u16 duration) if (duration == FF_INFINITE) duration = PID_INFINITE; + /* PID defines INFINITE as the max possible value for duration field */ if (duration == PID_INFINITE) { - usage->value[0] = PID_INFINITE; + usage->value[0] = (1U << usage->field->report_size) - 1; return; }