K400r 使用 Logitech Unifying 接收器 (USB 介面). USB 裝置為了省電必須支援自動休眠 (autosuspend), 在裝置閒置 (idle) 一段時間後進入休眠模式. K400r 進入休眠的間隔很短, 裝置喚醒的時間較長, 造成使用上的不便. 開啟核心配置 CONFIG_USB_DEBUG 可觀察 K400r 自動休眠行為.

logitech_k400r.jpg  

 << 實作 HID_QUIRK_SLOW_WAKE, 停用 Logitech K400r Unifying USB 接收器自動休眠功能 >>

diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 006267f..2807811 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1190,6 +1190,8 @@ static int usbhid_start(struct hid_device *hid)
                                        USB_INTERFACE_PROTOCOL_MOUSE)
              usb_disable_autosuspend(dev);
#endif
+ else if (hid->quirks & HID_QUIRK_SLOW_WAKE)
+     usb_disable_autosuspend(dev);
return 0;

    fail:
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index 0db9a67..31a2dbd 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -115,6 +115,7 @@ static const struct hid_blacklist {
               { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1, HID_QUIRK_NO_INIT_REPORTS },
               { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2, HID_QUIRK_NO_INIT_REPORTS },
               { USB_VENDOR_ID_SIS, USB_DEVICE_ID_SIS_TS, HID_QUIRK_NO_INIT_REPORTS },
+            { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER, HID_QUIRK_SLOW_WAKE },

               { 0, 0 }
  };
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 40e9c9d..f97d198 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -283,6 +283,7 @@ struct hid_item {
 #define HID_QUIRK_MULTI_INPUT 0x00000040
 #define HID_QUIRK_HIDINPUT_FORCE 0x00000080
 #define HID_QUIRK_NO_EMPTY_INPUT 0x00000100
+#define HID_QUIRK_SLOW_WAKE 0x00000800
 #define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000
 #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000
 #define HID_QUIRK_NO_INIT_REPORTS 0x20000000

(GitHub commit 在這裡)

 

* Linux 3.12 HID 驅動程式實作 "always-poll" QUIRK, 尚未在 Jetson TK1 R21.1 核心 3.10 測試是否對 Logitech K400r 有效.

 

 

文章標籤
創作者介紹
創作者 版大 的頭像
版大

嵌入式系統

版大 發表在 痞客邦 留言(0) 人氣()