summaryrefslogtreecommitdiff
path: root/hw/usb/dev-unifying.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/usb/dev-unifying.c')
-rw-r--r--hw/usb/dev-unifying.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/hw/usb/dev-unifying.c b/hw/usb/dev-unifying.c
index e60a472ba7..e7e2bd600b 100644
--- a/hw/usb/dev-unifying.c
+++ b/hw/usb/dev-unifying.c
@@ -355,16 +355,21 @@ static void usb_ltunify_hid_event(HIDState *hs)
}
s = container_of(hs, USBLtunifyState, hid[ifnum]);
- usb_wakeup(s->intr[ifnum], 0);
+ /* TODO: devices can get unpaired. Move HIDState to LHidDevice! */
+ if (s->devices[ifnum].mode == LTUNIFY_MODE_HID) {
+ usb_wakeup(s->intr[ifnum], 0);
+ } else {
+ usb_wakeup(s->intr[IFACE_HIDPP], 0);
+ }
}
static void usb_ltunify_handle_reset(USBDevice *dev)
{
USBLtunifyState *s = (USBLtunifyState *) dev;
- s->mode = LTUNIFY_MODE_HID;
hid_reset(&s->hid[IFACE_KBD]);
hid_reset(&s->hid[IFACE_MSE]);
+ hidpp_reset(s);
}
static void usb_ltunify_handle_control_hid(USBDevice *dev, USBPacket *p,
@@ -569,6 +574,8 @@ static int usb_ltunify_initfn(USBDevice *dev)
hid_init(&s->hid[IFACE_KBD], HID_KEYBOARD, usb_ltunify_hid_event);
hid_init(&s->hid[IFACE_MSE], HID_MOUSE, usb_ltunify_hid_event);
+ hidpp_init(s);
+
// TODO: API sucks...
s->usb_dump_state = usb_dump_init_alloc("/tmp/usbdump.pcap");
return 0;