mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 6.1 1/9] HID: pidff: Convert infinite length from Linux API to PID standard
@ 2025-03-31 14:56 Sasha Levin
  2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 2/9] HID: pidff: Do not send effect envelope if it's empty Sasha Levin
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: Sasha Levin @ 2025-03-31 14:56 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Tomasz Pakuła, Makarenko Oleg, Michał Kopeć,
	Paul Dino Jones, Cristóferson Bueno, Pablo Cisneros,
	Jiri Kosina, Sasha Levin, jikos, bentiss, linux-usb, linux-input

From: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>

[ Upstream commit 37e0591fe44dce39d1ebc7a82d5b6e4dba1582eb ]

Software uses 0 as de-facto infinite lenght on Linux FF apis (SDL),
Linux doesn't actually define anythi as of now, while USB PID defines
NULL (0xffff). Most PID devices do not expect a 0-length effect and
can't interpret it as infinite. This change fixes Force Feedback for
most PID compliant devices.

As most games depend on updating the values of already playing infinite
effects, this is crucial to ensure they will actually work.

Previously, users had to rely on third-party software to do this conversion
and make their PID devices usable.

Co-developed-by: Makarenko Oleg <oleg@makarenk.ooo>
Signed-off-by: Makarenko Oleg <oleg@makarenk.ooo>
Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Reviewed-by: Michał Kopeć <michal@nozomi.space>
Reviewed-by: Paul Dino Jones <paul@spacefreak18.xyz>
Tested-by: Paul Dino Jones <paul@spacefreak18.xyz>
Tested-by: Cristóferson Bueno <cbueno81@gmail.com>
Tested-by: Pablo Cisneros <patchkez@protonmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hid/usbhid/hid-pidff.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c
index 3b4ee21cd8111..5fe4422bb5bad 100644
--- a/drivers/hid/usbhid/hid-pidff.c
+++ b/drivers/hid/usbhid/hid-pidff.c
@@ -21,6 +21,7 @@
 #include "usbhid.h"
 
 #define	PID_EFFECTS_MAX		64
+#define	PID_INFINITE		0xffff
 
 /* Report usage table used to put reports into an array */
 
@@ -301,7 +302,12 @@ static void pidff_set_effect_report(struct pidff_device *pidff,
 		pidff->block_load[PID_EFFECT_BLOCK_INDEX].value[0];
 	pidff->set_effect_type->value[0] =
 		pidff->create_new_effect_type->value[0];
-	pidff->set_effect[PID_DURATION].value[0] = effect->replay.length;
+
+	/* Convert infinite length from Linux API (0)
+	   to PID standard (NULL) if needed */
+	pidff->set_effect[PID_DURATION].value[0] =
+		effect->replay.length == 0 ? PID_INFINITE : effect->replay.length;
+
 	pidff->set_effect[PID_TRIGGER_BUTTON].value[0] = effect->trigger.button;
 	pidff->set_effect[PID_TRIGGER_REPEAT_INT].value[0] =
 		effect->trigger.interval;
-- 
2.39.5


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-04-18 16:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-31 14:56 [PATCH AUTOSEL 6.1 1/9] HID: pidff: Convert infinite length from Linux API to PID standard Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 2/9] HID: pidff: Do not send effect envelope if it's empty Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 3/9] HID: pidff: Fix null pointer dereference in pidff_find_fields Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 4/9] ALSA: hda: intel: Fix Optimus when GPU has no sound Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 5/9] ALSA: hda: intel: Add Lenovo IdeaPad Z570 to probe denylist Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 6/9] ASoC: fsl_audmix: register card device depends on 'dais' property Sasha Levin
2025-04-18 16:59   ` Pavel Machek
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 7/9] mmc: dw_mmc: add a quirk for accessing 64-bit FIFOs in two halves Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 8/9] ALSA: usb-audio: Fix CME quirk for UF series keyboards Sasha Levin
2025-03-31 14:56 ` [PATCH AUTOSEL 6.1 9/9] ASoC: amd: Add DMI quirk for ACP6X mic support Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®