summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2014-07-13 09:34:59 +0000
committerhselasky <hselasky@FreeBSD.org>2014-07-13 09:34:59 +0000
commit24f0c19bb2716971d99433cda2410ee5815c3f15 (patch)
tree2ef3f7d791e445e9ddf9fc557a1e07c36225b73e
parente0f0705e75b505d47d786c0ba2c6ecfdc0673d19 (diff)
downloadFreeBSD-src-24f0c19bb2716971d99433cda2410ee5815c3f15.zip
FreeBSD-src-24f0c19bb2716971d99433cda2410ee5815c3f15.tar.gz
Turn off blinking device leds at attach.
MFC after: 3 days PR: 183735
-rw-r--r--sys/dev/usb/input/uhid.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/dev/usb/input/uhid.c b/sys/dev/usb/input/uhid.c
index 48d9c4f..1b284d2 100644
--- a/sys/dev/usb/input/uhid.c
+++ b/sys/dev/usb/input/uhid.c
@@ -759,9 +759,20 @@ uhid_attach(device_t dev)
sc->sc_flags |= UHID_FLAG_STATIC_DESC;
}
} else if ((uaa->info.bInterfaceClass == UICLASS_VENDOR) &&
- (uaa->info.bInterfaceSubClass == UISUBCLASS_XBOX360_CONTROLLER) &&
+ (uaa->info.bInterfaceSubClass == UISUBCLASS_XBOX360_CONTROLLER) &&
(uaa->info.bInterfaceProtocol == UIPROTO_XBOX360_GAMEPAD)) {
-
+ static const uint8_t reportbuf[3] = {1, 3, 0};
+ /*
+ * Turn off the four LEDs on the gamepad which
+ * are blinking by default:
+ */
+ error = usbd_req_set_report(uaa->device, NULL,
+ __DECONST(void *, reportbuf), sizeof(reportbuf),
+ uaa->info.bIfaceIndex, UHID_OUTPUT_REPORT, 0);
+ if (error) {
+ DPRINTF("set output report failed, error=%s (ignored)\n",
+ usbd_errstr(error));
+ }
/* the Xbox 360 gamepad has no report descriptor */
sc->sc_repdesc_size = sizeof(uhid_xb360gp_report_descr);
sc->sc_repdesc_ptr = (void *)&uhid_xb360gp_report_descr;
OpenPOWER on IntegriCloud