summaryrefslogtreecommitdiff
path: root/sys/dev/usb/uwacom.c
diff options
context:
space:
mode:
authorMarcus Glocker <mglocker@cvs.openbsd.org>2020-08-23 11:08:03 +0000
committerMarcus Glocker <mglocker@cvs.openbsd.org>2020-08-23 11:08:03 +0000
commit6bdc185ab58e3a7b39c26e37787a75f530be5de8 (patch)
treef813c202c37a1856bcf01c39e08fb95d8efe16f2 /sys/dev/usb/uwacom.c
parent622b3da52f0200d76d1e9763321b06003159a726 (diff)
uhidev(4) does apply the SET_IDLE request to all its child drivers
today. This doesn't seem to be right, since SET_IDLE limits the reporting frequency for interrupt IN endpoints, normally only required on keyboard and mouse-like input devices. We noticed recently that other device types, like e.g. the Cyrus soundKey uaudio(4), will stall after the SET_IDLE request has been issued. Therefore we move the SET_IDLE request only to the uhidev(4) child drivers which seem to require this request. Those we have identified to be; ukbd(4), ums(4), umstc(4), umt(4), utpms(4), and uwacom(4). Suggested and ok mpi@
Diffstat (limited to 'sys/dev/usb/uwacom.c')
-rw-r--r--sys/dev/usb/uwacom.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/usb/uwacom.c b/sys/dev/usb/uwacom.c
index f93f18f220a..30e087ae1eb 100644
--- a/sys/dev/usb/uwacom.c
+++ b/sys/dev/usb/uwacom.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uwacom.c,v 1.1 2016/09/12 08:12:06 mpi Exp $ */
+/* $OpenBSD: uwacom.c,v 1.2 2020/08/23 11:08:02 mglocker Exp $ */
/*
* Copyright (c) 2016 Frank Groeneveld <frank@frankgroeneveld.nl>
@@ -26,6 +26,7 @@
#include <dev/usb/usbhid.h>
#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbdevs.h>
#include <dev/usb/uhidev.h>
@@ -102,6 +103,8 @@ uwacom_attach(struct device *parent, struct device *self, void *aux)
sc->sc_hdev.sc_udev = uaa->device;
sc->sc_hdev.sc_report_id = uha->reportid;
+ usbd_set_idle(uha->parent->sc_udev, uha->parent->sc_ifaceno, 0, 0);
+
uhidev_get_report_desc(uha->parent, &desc, &size);
repid = uha->reportid;
sc->sc_hdev.sc_isize = hid_report_size(desc, size, hid_input, repid);