diff mbox

HID: hid-lg4ff: Fix "undefined reference" build issue with CONFIG_USB disabled.

Message ID 1424296173-22718-1-git-send-email-madcatxster@devoid-pointer.net (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Michal Malý Feb. 18, 2015, 9:49 p.m. UTC
Fix "undefined reference" build issue with CONFIG_USB disabled.

Signed-off-by: Michal Malý <madcatxster@devoid-pointer.net>
---
 drivers/hid/hid-lg4ff.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

Comments

simon@mungewell.org Feb. 18, 2015, 10:47 p.m. UTC | #1
> Fix "undefined reference" build issue with CONFIG_USB disabled.

Just a newbie question... for a family of devices (the wheels) which can
only be attached via USB, wouldn't the better approach be to fix the
dependancy?

Are there any other devices provided for by 'hid-logitech' which use any
other transport (HID over Bluetooth or the like)?

Simon.

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jiri Kosina Feb. 18, 2015, 10:50 p.m. UTC | #2
On Wed, 18 Feb 2015, Michal Malý wrote:

> Fix "undefined reference" build issue with CONFIG_USB disabled.
> 
> Signed-off-by: Michal Malý <madcatxster@devoid-pointer.net>

Applied, thanks.
Jiri Kosina Feb. 18, 2015, 10:52 p.m. UTC | #3
On Wed, 18 Feb 2015, simon@mungewell.org wrote:

> > Fix "undefined reference" build issue with CONFIG_USB disabled.
> 
> Just a newbie question... for a family of devices (the wheels) which can
> only be attached via USB, wouldn't the better approach be to fix the
> dependancy?
> 
> Are there any other devices provided for by 'hid-logitech' which use any
> other transport (HID over Bluetooth or the like)?

Using only HID API (and let it call to the transport driver) is much 
cleaner way and helps a lot with avoiding code duplication, etc.
diff mbox

Patch

diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index 854982b..1232210 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -569,19 +569,20 @@  static const struct lg4ff_compat_mode_switch *lg4ff_get_mode_switch_command(cons
 
 static int lg4ff_switch_compatibility_mode(struct hid_device *hid, const struct lg4ff_compat_mode_switch *s)
 {
-	struct usb_device *usbdev = hid_to_usb_dev(hid);
-	struct usbhid_device *usbhid = hid->driver_data;
+	struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list;
+	struct hid_report *report = list_entry(report_list->next, struct hid_report, list);
+	__s32 *value = report->field[0]->value;
 	u8 i;
 
 	for (i = 0; i < s->cmd_count; i++) {
-		int xferd, ret;
-		u8 data[7];
+		u8 j;
 
-		memcpy(data, s->cmd + (7*i), 7);
-		ret = usb_interrupt_msg(usbdev, usbhid->urbout->pipe, data, 7, &xferd, USB_CTRL_SET_TIMEOUT);
-		if (ret)
-			return ret;
+		for (j = 0; j < 7; j++)
+			value[j] = s->cmd[j + (7*i)];
+
+		hid_hw_request(hid, report, HID_REQ_SET_REPORT);
 	}
+	hid_hw_wait(hid);
 	return 0;
 }