From 7af5442d3b031a3f81ea5c25c88f99692fb16822 Mon Sep 17 00:00:00 2001 From: mischief Date: Wed, 10 Oct 2018 13:56:28 -0700 Subject: nusb/joy: send magic packet to enable playstation controller events --- sys/src/cmd/nusb/joy/joy.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sys/src/cmd/nusb/joy/joy.c b/sys/src/cmd/nusb/joy/joy.c index c1f7cca71..147c46d87 100644 --- a/sys/src/cmd/nusb/joy/joy.c +++ b/sys/src/cmd/nusb/joy/joy.c @@ -359,6 +359,21 @@ joywork(void *a) } } +/* apply quirks for special devices */ +static void +quirks(Dev *d) +{ + int ret; + uchar buf[17]; + + /* sony dualshock 3 (ps3) controller requires special enable command */ + if(d->usb->vid == 0x054c && d->usb->did == 0x0268){ + ret = usbcmd(d, Rd2h|Rclass|Riface, Getreport, (0x3<<8) | 0xF2, 0, buf, sizeof(buf)); + if(ret < 0) + sysfatal("failed to enable ps3 controller: %r"); + } +} + static void kbstart(Dev *d, Ep *ep, void (*f)(void*)) { @@ -380,6 +395,7 @@ kbstart(Dev *d, Ep *ep, void (*f)(void*)) fprint(2, "%s: %s: opendevdata: %r\n", argv0, kd->ep->dir); goto Err; } + quirks(kd->dev); f(kd); return; Err: -- cgit v1.2.3