summaryrefslogtreecommitdiff
path: root/hw/usb
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-03-24 11:54:01 +0100
committerPeter Wu <peter@lekensteyn.nl>2014-03-24 11:54:01 +0100
commit614a271a24d7809f56b83817d1e926a8f4897a7c (patch)
treed88702e4bd120d7e0fe94239e12a98b4847ea127 /hw/usb
parenta4a17543cee0f422b6348020d170d887f05e97fc (diff)
downloadqemu-614a271a24d7809f56b83817d1e926a8f4897a7c.tar.gz
unifying: fix report ID for HID++ 2.0 responses
The input report ID can be 0x10 or 0x11, the responses are always 0x11. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'hw/usb')
-rw-r--r--hw/usb/hid-logitech-dj.c8
-rw-r--r--hw/usb/hid-logitech-dj.h8
-rw-r--r--hw/usb/hid-logitech-hidpp20.c1
3 files changed, 9 insertions, 8 deletions
diff --git a/hw/usb/hid-logitech-dj.c b/hw/usb/hid-logitech-dj.c
index 51be0e2410..196b430c43 100644
--- a/hw/usb/hid-logitech-dj.c
+++ b/hw/usb/hid-logitech-dj.c
@@ -30,14 +30,6 @@
#define COMPILE_ASSERT(cond) typedef char _compile_assert[1 - 2 * !(cond)]
-/* Report IDs */
-enum {
- HIDPP_SHORT = 0x10, /* 7 bytes */
- HIDPP_LONG = 0x11, /* 20 bytes */
- DJ_SHORT = 0x20, /* 15 bytes */
- DJ_LONG = 0x21, /* 32 bytes */
-};
-
/* helpers to handle the HID++ register queries */
#define SET_REG(reg) (0x108000 | (reg))
#define GET_REG(reg) (0x108100 | (reg))
diff --git a/hw/usb/hid-logitech-dj.h b/hw/usb/hid-logitech-dj.h
index 83cb33b8aa..3e7fab9fa1 100644
--- a/hw/usb/hid-logitech-dj.h
+++ b/hw/usb/hid-logitech-dj.h
@@ -44,6 +44,14 @@ enum {
#define MAX_DEVICES 6
+/* Report IDs */
+enum {
+ HIDPP_SHORT = 0x10, /* 7 bytes */
+ HIDPP_LONG = 0x11, /* 20 bytes */
+ DJ_SHORT = 0x20, /* 15 bytes */
+ DJ_LONG = 0x21, /* 32 bytes */
+};
+
/* report formats */
typedef struct {
uint8_t report_id;
diff --git a/hw/usb/hid-logitech-hidpp20.c b/hw/usb/hid-logitech-hidpp20.c
index 95393050a5..9248f31bd1 100644
--- a/hw/usb/hid-logitech-hidpp20.c
+++ b/hw/usb/hid-logitech-hidpp20.c
@@ -130,6 +130,7 @@ int hidpp20_feature_call(LHidDevice *hd, Hidpp20Msg *func)
feat = &hd->info.features[func->feat_index - 1];
r = feat->callback(hd, func, fn, func->params);
}
+ func->report_id = HIDPP_LONG;
if (r > 0) {
// r are the parameters that must be kept, the others are cleared.
assert(r <= sizeof(func->params));