[3.16.y-ckt stable] Patch "HID: pidff: Fix initialisation forMicrosoft Sidewinder FF Pro 2" has been added to staging queue
luis.henriques at canonical.com
Tue Mar 24 15:35:14 UTC 2015
This is a note to let you know that I have just added a patch titled
HID: pidff: Fix initialisation forMicrosoft Sidewinder FF Pro 2
to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree
which can be found at:
This patch is scheduled to be released in version 3.16.7-ckt9.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.16.y-ckt tree, see
>From 5ec97889558caaf87e251e0ff6147e449f775b61 Mon Sep 17 00:00:00 2001
From: Jim Keir <jimkeir at oracledbadirect.com>
Date: Fri, 23 Jan 2015 17:21:12 +0000
Subject: HID: pidff: Fix initialisation forMicrosoft Sidewinder FF Pro 2
commit afd700d933963d07391e3e3dfbfbc05e905960ef upstream.
The FF2 driver (usbhid/hid-pidff.c) sends commands to the stick during ff_init.
However, this is called inside a block where driver_input_lock is locked, so
the results of these initial commands are discarded. This behavior is the
"killer", without this nothing else works.
ff_init issues commands using "hid_hw_request". This eventually goes to
hid_input_report, which returns -EBUSY because driver_input_lock is locked. The
change is to delay the ff_init call in hid-core.c until after this lock has
Calling hid_device_io_start() releases the lock so the device can be
configured. We also need to call hid_device_io_stop() on exit for the lock to
remain locked while ending the init of the drivers.
[ benjamin.tissoires at redhat.com: imrpoved the changelog a lot ]
Signed-off-by: Jim Keir <jimkeir at oracledbadirect.com>
Reviewed-by: Benjamin.tissoires <benjamin.tissoires at redhat.com>
Signed-off-by: Jiri Kosina <jkosina at suse.cz>
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
drivers/hid/usbhid/hid-pidff.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c
index 10b616702780..0b531c6a76a5 100644
@@ -1252,6 +1252,8 @@ int hid_pidff_init(struct hid_device *hid)
pidff->hid = hid;
pidff_find_reports(hid, HID_OUTPUT_REPORT, pidff);
pidff_find_reports(hid, HID_FEATURE_REPORT, pidff);
@@ -1315,9 +1317,13 @@ int hid_pidff_init(struct hid_device *hid)
hid_info(dev, "Force feedback for USB HID PID devices by Anssi Hannula <anssi.hannula at gmail.com>\n");
More information about the kernel-team