From c787af2beed23b38f80deb87e9d8b9ea37b326b0 Mon Sep 17 00:00:00 2001 From: Simon Wood Date: Mon, 29 Aug 2016 22:10:53 -0600 Subject: [PATCH 2/2] HID: hid-logitech backported from v4.7 to v3.10.102 Fix build after grabbing HEAD from v4.7. MD5Sums of 'imported' files: -- 047a99a2273916fc997b1e35cee4201b drivers/hid/hid-lg4ff.h 8095fd840a2716a4cbc97b5015e28c66 drivers/hid/hid-lg.c 7d84dd914a0c7dabf714eb6c668ca974 drivers/hid/hid-lgff.c 3349257e93faac304de8202844f14972 drivers/hid/hid-lg.h -- --- drivers/hid/hid-core.c | 2 ++ drivers/hid/hid-ids.h | 2 ++ drivers/hid/hid-lg.c | 11 +++++++++++ drivers/hid/hid-lg4ff.c | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index c1a8cf2..78f4481 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1705,10 +1705,12 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_EXTREME_3D) }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DUAL_ACTION) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G29_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG ) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) }, diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 45c593d..ac4a081 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -537,8 +537,10 @@ #define USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD 0xc20a #define USB_DEVICE_ID_LOGITECH_RUMBLEPAD 0xc211 #define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215 +#define USB_DEVICE_ID_LOGITECH_DUAL_ACTION 0xc216 #define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2 0xc218 #define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2 0xc219 +#define USB_DEVICE_ID_LOGITECH_G29_WHEEL 0xc24f #define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283 #define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286 #define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287 diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c index feb2be7..9c4bbd4 100644 --- a/drivers/hid/hid-lg.c +++ b/drivers/hid/hid-lg.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "usbhid/usbhid.h" #include "hid-ids.h" @@ -703,8 +704,13 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id) if (hdev->product == USB_DEVICE_ID_LOGITECH_WII_WHEEL) { unsigned char buf[] = { 0x00, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +/* backport from v4.7 - locally revert b0dd72aafd785785bedbb6db932955807e454a65 */ +#if LINUX_VERSION_CODE <= KERNEL_VERSION(3,14,0) + ret = hdev->hid_output_raw_report(hdev, buf, sizeof(buf), HID_FEATURE_REPORT); +#else ret = hid_hw_raw_request(hdev, buf[0], buf, sizeof(buf), HID_FEATURE_REPORT, HID_REQ_SET_REPORT); +#endif if (ret >= 0) { /* insert a little delay of 10 jiffies ~ 40ms */ @@ -717,8 +723,13 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id) buf[1] = 0xB2; get_random_bytes(&buf[2], 2); +/* backport from v4.7 - locally revert b0dd72aafd785785bedbb6db932955807e454a65 */ +#if LINUX_VERSION_CODE <= KERNEL_VERSION(3,14,0) + ret = hdev->hid_output_raw_report(hdev, buf, sizeof(buf), HID_FEATURE_REPORT); +#else ret = hid_hw_raw_request(hdev, buf[0], buf, sizeof(buf), HID_FEATURE_REPORT, HID_REQ_SET_REPORT); +#endif } } diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c index af3a8ec..4122646 100644 --- a/drivers/hid/hid-lg4ff.c +++ b/drivers/hid/hid-lg4ff.c @@ -33,6 +33,12 @@ #include "hid-lg4ff.h" #include "hid-ids.h" +/* Backport from v4.7 - locally revert d8ce9bf5551bfea431893bdd0a943f24a5170828 */ +#include +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,4,0) +#define to_hid_device(pdev) container_of(pdev, struct hid_device, dev) +#endif + #define LG4FF_MMODE_IS_MULTIMODE 0 #define LG4FF_MMODE_SWITCHED 1 #define LG4FF_MMODE_NOT_MULTIMODE 2 -- 2.7.4