summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-03-24 18:59:29 +0100
committerPeter Wu <peter@lekensteyn.nl>2014-03-24 18:59:29 +0100
commitf0a5825c53db1f659f897eec62506f7763ee6280 (patch)
tree7b56e8d6751802080b32ec86f0832f2b0ca40191 /hw
parentbed6803378b4e1eb258f3e5a25eb1be82e7117e5 (diff)
downloadqemu-f0a5825c53db1f659f897eec62506f7763ee6280.tar.gz
unifying: prevent sending HID++ reports if not enabled
Interrupts were enabled for EP3, but the WinXP driver did not support the reports sent through it. Prevent generating HID++ reports for devices that are not in DJ mode (i.e. in standard HID mode). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'hw')
-rw-r--r--hw/usb/dev-unifying.c1
-rw-r--r--hw/usb/hid-logitech-dj.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/hw/usb/dev-unifying.c b/hw/usb/dev-unifying.c
index 926e2f7e56..0eb0ebe5af 100644
--- a/hw/usb/dev-unifying.c
+++ b/hw/usb/dev-unifying.c
@@ -358,6 +358,7 @@ static void usb_ltunify_hid_event(HIDState *hs)
if (s->devices[ifnum].mode == LTUNIFY_MODE_HID) {
usb_wakeup(s->intr[ifnum], 0);
} else {
+ assert(s->devices[ifnum].mode == LTUNIFY_MODE_DJ);
usb_wakeup(s->intr[IFACE_HIDPP], 0);
}
}
diff --git a/hw/usb/hid-logitech-dj.c b/hw/usb/hid-logitech-dj.c
index f01a4f312f..5f1bc80f56 100644
--- a/hw/usb/hid-logitech-dj.c
+++ b/hw/usb/hid-logitech-dj.c
@@ -487,8 +487,8 @@ static void hidpp_handle_hid(USBDevice *dev, USBPacket *p)
for (i = 0; i < MAX_DEVICES; i++) {
LHidDevice *hd = &s->devices[i];
- /* ignore empty slots and unreachable devices */
- if (!hd->info.device_type || !hd->powered_on) {
+ /* ignore empty slots and unreachable/HID mode devices */
+ if (!hd->info.device_type || !hd->powered_on || hd->mode != LTUNIFY_MODE_DJ) {
continue;
}