Thread (3 messages) 3 messages, 2 authors, 2012-08-09

Re: [patch v2 1/1] HID:hid-multitouch: Add ELAN prouction request when resume

From: 劉嘉駿 <hidden>
Date: 2012-08-09 14:20:44
Also in: lkml

Hi Benjamin:
	Revision will be update later. 



Benjamin Tissoires [off-list ref] 於 2012/8/9 下午7:27 寫道:
Hi Scott,

we are getting closer. Just a few nitpicks:

On Thu, Aug 9, 2012 at 11:22 AM, Scott Liu [off-list ref] wrote:
quoted
Some of ELAN's production need to with set_idle commmand when reusme.
reusme -> resume
quoted
Signed-off-by: Scott Liu <redacted>
---
drivers/hid/hid-ids.h        |    3 +++
drivers/hid/hid-multitouch.c |   20 ++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 41c34f2..a4d810c 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -829,4 +829,7 @@
#define USB_VENDOR_ID_PRIMAX   0x0461
#define USB_DEVICE_ID_PRIMAX_KEYBOARD  0x4e05

+#define USB_VENDOR_ID_ELAN  0x04f3
+#define USB_DEVICE_ID_ELAN_MOCCA    0x000a
+
We try to keep the list alphabetically sorted. So it should go just
before USB_VENDOR_ID_ELECOM.

Also, the device you sent to me has the PID 0x0732 and is behaving the
same way (need to call the mt_reset command).
Is 0x000a a mistake or do all of your product behave like this?
If it's the latter, then we may purely remove the PID test.

Jiri, any ideas?

No, not all ELAN production needs set_idle command after resume, only for previous chipset. 


Thanks.
Scott
quoted
#endif
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 59c8b5c..b06b7d3 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -767,6 +767,25 @@ static int mt_reset_resume(struct hid_device *hdev)
       mt_set_input_mode(hdev);
       return 0;
}
+
+static int mt_resume(struct hid_device *hdev)
+{
+       if (hdev->vendor == USB_VENDOR_ID_ELAN &&
+               hdev->product == USB_DEVICE_ID_ELAN_MOCCA) {
+
+               struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+               struct usb_host_interface *interface = intf->cur_altsetting;
+               struct usb_device *dev = hid_to_usb_dev(hdev);
+
+               usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+                                               HID_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE,
As we are on it, this line is more than 80 characters. Tabs are 8
characters length.
quoted
+                                               0, interface->desc.bInterfaceNumber,
+                                               NULL, 0, USB_CTRL_SET_TIMEOUT);
+    }
spaces instead of tabs.
quoted
+
+    return 0;
idem, spaces instead of tabs.

Anyway, I really appreciate your efforts Scott.

Cheers,
Benjamin

quoted
+}
+
#endif

static void mt_remove(struct hid_device *hdev)
@@ -1092,6 +1111,7 @@ static struct hid_driver mt_driver = {
       .event = mt_event,
#ifdef CONFIG_PM
       .reset_resume = mt_reset_resume,
+       .resume = mt_resume,
#endif
};

--
1.7.9.5
i
--
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help