introduce ujoy(4), a restricted subset of uhid(4) for gamecontrollers.
authorthfr <thfr@openbsd.org>
Sat, 23 Jan 2021 05:08:33 +0000 (05:08 +0000)
committerthfr <thfr@openbsd.org>
Sat, 23 Jan 2021 05:08:33 +0000 (05:08 +0000)
This includes ujoy_hid_is_collection() to work around limitations of
hid_is_collection() until this can be combined without fallout.

input, testing with 8bitdo controller, and ok brynet@
PS4 controller testing, fix for hid_is_collection, and ok mglocker@

51 files changed:
etc/MAKEDEV.common
etc/etc.alpha/MAKEDEV.md
etc/etc.amd64/MAKEDEV.md
etc/etc.arm64/MAKEDEV.md
etc/etc.armv7/MAKEDEV.md
etc/etc.hppa/MAKEDEV.md
etc/etc.i386/MAKEDEV.md
etc/etc.landisk/MAKEDEV.md
etc/etc.loongson/MAKEDEV.md
etc/etc.macppc/MAKEDEV.md
etc/etc.octeon/MAKEDEV.md
etc/etc.powerpc64/MAKEDEV.md
etc/etc.sgi/MAKEDEV.md
etc/etc.sparc64/MAKEDEV.md
share/man/man4/Makefile
share/man/man4/uhidev.4
share/man/man4/ujoy.4 [new file with mode: 0644]
share/man/man4/usb.4
sys/arch/alpha/alpha/conf.c
sys/arch/alpha/conf/GENERIC
sys/arch/amd64/amd64/conf.c
sys/arch/amd64/conf/GENERIC
sys/arch/arm/arm/conf.c
sys/arch/arm64/arm64/conf.c
sys/arch/arm64/conf/GENERIC
sys/arch/armv7/conf/GENERIC
sys/arch/hppa/conf/GENERIC
sys/arch/hppa/hppa/conf.c
sys/arch/i386/conf/GENERIC
sys/arch/i386/i386/conf.c
sys/arch/landisk/conf/GENERIC
sys/arch/landisk/landisk/conf.c
sys/arch/loongson/conf/GENERIC
sys/arch/loongson/loongson/conf.c
sys/arch/macppc/conf/GENERIC
sys/arch/macppc/macppc/conf.c
sys/arch/octeon/conf/GENERIC
sys/arch/octeon/octeon/conf.c
sys/arch/powerpc64/conf/GENERIC
sys/arch/powerpc64/powerpc64/conf.c
sys/arch/sgi/conf/GENERIC-IP27
sys/arch/sgi/conf/GENERIC-IP30
sys/arch/sgi/conf/GENERIC-IP32
sys/arch/sgi/sgi/conf.c
sys/arch/sparc64/conf/GENERIC
sys/arch/sparc64/sparc64/conf.c
sys/dev/usb/files.usb
sys/dev/usb/uhid.c
sys/dev/usb/uhid.h
sys/dev/usb/ujoy.c [new file with mode: 0644]
sys/sys/conf.h

index 6399379..b5ead87 100644 (file)
@@ -1,4 +1,4 @@
-vers(a, {-$OpenBSD: MAKEDEV.common,v 1.111 2020/07/06 06:11:26 dlg Exp $-})dnl
+vers(a, {-$OpenBSD: MAKEDEV.common,v 1.112 2021/01/23 05:08:33 thfr Exp $-})dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
 dnl
@@ -181,6 +181,7 @@ dnl
 target(usb, usb, 0, 1, 2, 3, 4, 5, 6, 7)dnl
 target(usb, uhid, 0, 1, 2, 3, 4, 5, 6, 7)dnl
 twrget(usb, fido, fido)dnl
+twrget(usb, ujoy, ujoy)dnl
 target(usb, ulpt, 0, 1)dnl
 target(usb, ugen, 0, 1, 2, 3, 4, 5, 6, 7)dnl
 target(usb, ttyU, 0, 1, 2, 3)dnl
@@ -365,6 +366,10 @@ __devitem(fido, fido, fido/* nodes, fido)dnl
 _mkdev(fido, fido, {-RMlist[${#RMlist[*]}]=";mkdir -p fido;rm -f" n=0
        while [ $n -lt 4 ];do M fido/$n c major_fido_c $n 666;n=Add($n, 1);done
        MKlist[${#MKlist[*]}]=";chmod 555 fido"-})dnl
+__devitem(ujoy, ujoy, ujoy/* nodes, ujoy)dnl
+_mkdev(ujoy, ujoy, {-RMlist[${#RMlist[*]}]=";mkdir -p ujoy;rm -f" n=0
+       while [ $n -lt 4 ];do M ujoy/$n c major_ujoy_c $n 444;n=Add($n, 1);done
+       MKlist[${#MKlist[*]}]=";chmod 555 ujoy"-})dnl
 __devitem(ulpt, ulpt*, Printer devices)dnl
 _mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 600)dnl
 __devitem(ttyU, ttyU*, USB serial ports,ucom)dnl
index 77fe522..e525618 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,alpha)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.76 2020/07/06 06:11:26 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.77 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -56,6 +56,7 @@ _DEV(uall)
 _DEV(ugen, 48)
 _DEV(uhid, 46)
 _DEV(fido, 70)
+_DEV(ujoy, 72)
 _DEV(ulpt, 47)
 _DEV(usb, 45)
 _TITLE(spec)
index a544fae..3de86d5 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,amd64)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.76 2020/07/06 06:11:26 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.77 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -60,6 +60,7 @@ _DEV(uall)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 98)
+_DEV(ujoy, 100)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index 44f79ee..bf71fb8 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,arm64)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.10 2020/07/06 06:11:26 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.11 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -52,6 +52,7 @@ _DEV(uall)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 98)
+_DEV(ujoy, 100)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index 4cde2c0..e458428 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,armv7)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.18 2020/07/06 06:11:26 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.19 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2004 Todd T. Fries <todd@OpenBSD.org>
@@ -61,6 +61,7 @@ _DEV(uall)
 _DEV(ugen, 70)
 _DEV(uhid, 65)
 _DEV(fido, 106)
+_DEV(ujoy, 108)
 _DEV(ulpt, 66)
 _DEV(usb, 64)
 _TITLE(spec)
index 6bf1ace..f0b0a96 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,hppa)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.65 2020/07/06 06:11:26 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.66 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -54,6 +54,7 @@ _DEV(uall)
 _DEV(usb, 40)
 _DEV(uhid, 41)
 _DEV(fido, 61)
+_DEV(ujoy, 63)
 _DEV(ugen, 42)
 _DEV(ulpt, 43)
 _DEV(ttyU, 45)
index 864aa69..2189d83 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,i386)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.91 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.92 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -61,6 +61,7 @@ _DEV(uall)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 98)
+_DEV(ujoy, 100)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index 169f795..8c6b074 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,landisk)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.48 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.49 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2004 Todd T. Fries <todd@OpenBSD.org>
@@ -65,6 +65,7 @@ _DEV(uall)
 _DEV(ugen, 70)
 _DEV(uhid, 65)
 _DEV(fido, 106)
+_DEV(ujoy, 108)
 _DEV(ulpt, 66)
 _DEV(usb, 64)
 _TITLE(spec)
index fb3996c..7d72161 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,loongson)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.32 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.33 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -60,6 +60,7 @@ _DEV(uall)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 88)
+_DEV(ujoy, 90)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index 91ea647..7948c70 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,macppc)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.75 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.76 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -70,6 +70,7 @@ _DEV(ttyU, 66)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 90)
+_DEV(ujoy, 92)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index a7b641a..ab0f7ff 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,octeon)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.19 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.20 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -67,6 +67,7 @@ _DEV(uall)
 _DEV(usb, 61)
 _DEV(uhid, 62)
 _DEV(fido, 76)
+_DEV(ujoy, 78)
 _TITLE(spec)
 _DEV(au, 44)
 _DEV(bio, 49)
index 73d415e..12dbee3 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,powerpc64)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.6 2020/10/24 21:10:41 kettenis Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.7 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -52,6 +52,7 @@ _DEV(uall)
 _DEV(ugen, 49)
 _DEV(uhid, 50)
 _DEV(fido, 51)
+_DEV(ujoy, 94)
 _DEV(ulpt, 65)
 _DEV(usb, 48)
 _TITLE(spec)
index e6ccb80..8ab6504 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,sgi)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.54 2020/07/06 06:11:27 dlg Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.55 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -69,6 +69,7 @@ _DEV(uall)
 _DEV(ugen, 63)
 _DEV(uhid, 62)
 _DEV(fido, 76)
+_DEV(ujoy, 78)
 _DEV(ulpt, 64)
 _DEV(usb, 61)
 _TITLE(spec)
index dc0d56b..930f717 100644 (file)
@@ -1,6 +1,6 @@
 define(MACHINE,sparc64)dnl
 vers(__file__,
-       {-$OpenBSD: MAKEDEV.md,v 1.95 2020/07/22 14:04:37 deraadt Exp $-},
+       {-$OpenBSD: MAKEDEV.md,v 1.96 2021/01/23 05:08:33 thfr Exp $-},
 etc.MACHINE)dnl
 dnl
 dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
@@ -104,6 +104,7 @@ _DEV(uall)
 _DEV(ugen, 92)
 _DEV(uhid, 91)
 _DEV(fido, 137)
+_DEV(ujoy, 139)
 _DEV(ulpt, 93)
 _DEV(usb, 90)
 _TITLE(spec)
index 02af7a4..70e6213 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Makefile,v 1.790 2020/12/06 20:48:12 kettenis Exp $
+#      $OpenBSD: Makefile,v 1.791 2021/01/23 05:08:34 thfr Exp $
 
 MAN=   aac.4 abcrtc.4 abl.4 ac97.4 acphy.4 acrtc.4 \
        acpi.4 acpiac.4 acpials.4 acpiasus.4 acpibat.4 \
@@ -84,7 +84,7 @@ MAN=  aac.4 abcrtc.4 abl.4 ac97.4 acphy.4 acrtc.4 \
        ubsec.4 ucom.4 uchcom.4 ucrcom.4 ucycom.4 ukspan.4 uslhcom.4 \
        udav.4 udcf.4 udl.4 udp.4 udsbr.4 \
        uftdi.4 ugen.4 ugl.4 ugold.4 uguru.4 uhci.4 uhid.4 uhidev.4 uipaq.4 \
-       uk.4 ukbd.4 \
+       ujoy.4 uk.4 ukbd.4 \
        ukphy.4 ulpt.4 umass.4 umb.4 umbg.4 umcs.4 umct.4 umidi.4 umodem.4 \
        ums.4 umsm.4 umstc.4 umt.4 unix.4 uonerng.4 uow.4 uoaklux.4 uoakrh.4 \
        uoakv.4 upd.4 upgt.4 upl.4 uplcom.4 ural.4 ure.4 url.4 urlphy.4 \
index f0a6776..06911dd 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: uhidev.4,v 1.12 2020/08/21 19:02:46 mglocker Exp $
+.\" $OpenBSD: uhidev.4,v 1.13 2021/01/23 05:08:34 thfr Exp $
 .\" $NetBSD: uhidev.4,v 1.2 2001/12/29 03:06:41 augustss Exp $
 .\"
 .\" Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: August 21 2020 $
+.Dd $Mdocdate: January 23 2021 $
 .Dt UHIDEV 4
 .Os
 .Sh NAME
@@ -40,6 +40,7 @@
 .Cd "ucycom*  at uhidev?"
 .Cd "ugold*   at uhidev?"
 .Cd "uhid*    at uhidev?"
+.Cd "ujoy*    at uhidev?"
 .Cd "ukbd*    at uhidev?"
 .Cd "ums*     at uhidev?"
 .Cd "umstc*   at uhidev?"
@@ -73,6 +74,7 @@ only dispatches data to them based on the report id.
 .Xr ucycom 4 ,
 .Xr ugold 4 ,
 .Xr uhid 4 ,
+.Xr ujoy 4 ,
 .Xr ukbd 4 ,
 .Xr ums 4 ,
 .Xr umstc 4 ,
diff --git a/share/man/man4/ujoy.4 b/share/man/man4/ujoy.4
new file mode 100644 (file)
index 0000000..f75c7d5
--- /dev/null
@@ -0,0 +1,53 @@
+.\"    $OpenBSD: ujoy.4,v 1.1 2021/01/23 05:08:34 thfr Exp $
+.\"
+.\" Copyright (c) 2020 Thomas Frohwein <thfr@openbsd.org>
+.\" Copyright (c) 2020 Bryan Steele    <brynet@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd $Mdocdate: January 23 2021 $
+.Dt UJOY 4
+.Os
+.Sh NAME
+.Nm ujoy
+.Nd USB joystick/gamecontroller
+.Sh SYNOPSIS
+.Cd "ujoy* at uhidev?"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB joysticks and other gamecontrollers.
+They are Human Interface Devices (HID) which can be accessed via the
+.Pa /dev/ujoy/N
+interface.
+.Pp
+The driver is compatible with the
+.Xr read 2 ,
+and a subset of
+.Xr ioctl 2
+operations of the generic
+.Xr uhid 4
+device.
+.Sh FILES
+.Bl -tag -width /dev/ujoy/* -compact
+.It Pa /dev/ujoy/*
+.El
+.Sh SEE ALSO
+.Xr uhid 4 ,
+.Xr uhidev 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 6.9 .
index 520f462..8b9e3ff 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: usb.4,v 1.203 2020/08/21 20:38:56 mglocker Exp $
+.\"    $OpenBSD: usb.4,v 1.204 2021/01/23 05:08:34 thfr Exp $
 .\"    $NetBSD: usb.4,v 1.15 1999/07/29 14:20:32 augustss Exp $
 .\"
 .\" Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: August 21 2020 $
+.Dd $Mdocdate: January 23 2021 $
 .Dt USB 4
 .Os
 .Sh NAME
@@ -255,6 +255,8 @@ TEMPer gold HID thermometer and hygrometer
 Generic driver for Human Interface Devices
 .It Xr uhidev 4
 Base driver for all Human Interface Devices
+.It Xr ujoy 4
+USB joysticks/gamecontrollers
 .It Xr ukbd 4
 USB keyboards that follow the boot protocol
 .It Xr ums 4
index ff6a835..d3f2667 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.88 2020/07/06 04:32:25 dlg Exp $   */
+/*     $OpenBSD: conf.c,v 1.89 2021/01/23 05:08:34 thfr Exp $  */
 /*     $NetBSD: conf.c,v 1.16 1996/10/18 21:26:57 cgd Exp $    */
 
 /*-
@@ -113,6 +113,7 @@ cdev_decl(cy);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -207,6 +208,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 69: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 70: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 71: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 72: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index 48648e9..05953f8 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.266 2020/05/23 06:28:29 jsg Exp $
+#      $OpenBSD: GENERIC,v 1.267 2021/01/23 05:08:34 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -107,6 +107,7 @@ uslhcom* at uhidev?                 # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?                      # USB generic HID support
 fido*  at uhidev?                      # FIDO/U2F security key support
+ujoy*  at uhidev?                      # USB joystick/gamecontroller support
 upd*   at uhidev?                      # USB Power Devices sensors
 aue*   at uhub?                        # ADMtek AN986 Pegasus Ethernet
 #atu*  at uhub?                        # Atmel AT76c50x based 802.11b
index b8f9fa9..3005c0b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.72 2020/10/07 13:37:33 jan Exp $   */
+/*     $OpenBSD: conf.c,v 1.73 2021/01/23 05:08:34 thfr Exp $  */
 
 /*
  * Copyright (c) 1994, 1995 Charles M. Hannum.  All rights reserved.
@@ -139,6 +139,7 @@ cdev_decl(cy);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -288,6 +289,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 97: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 98: FIDO/U2F security keys */
        cdev_pppx_init(NPPPX,pppac),    /* 99: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 100: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index 45b3a9b..ffa1b4a 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.495 2020/11/15 16:47:12 kettenis Exp $
+#      $OpenBSD: GENERIC,v 1.496 2021/01/23 05:08:34 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -286,6 +286,7 @@ uslhcom* at uhidev?         # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 umstc* at uhidev?              # Microsoft Surface Type Cover
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
index 3821d52..747c42a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.55 2020/07/06 04:32:25 dlg Exp $   */
+/*     $OpenBSD: conf.c,v 1.56 2021/01/23 05:08:34 thfr Exp $  */
 /*     $NetBSD: conf.c,v 1.10 2002/04/19 01:04:38 wiz Exp $    */
 
 /*
@@ -126,6 +126,7 @@ cdev_decl(pci);
 #include "ugen.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ulpt.h"
 
 /*
@@ -383,6 +384,7 @@ struct cdevsw cdevsw[] = {
        cdev_switch_init(NSWITCH,switch),       /* 105: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),             /* 106: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),            /* 107: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),             /* 108: USB joystick/gamecontroller */
 };
 
 int nblkdev = nitems(bdevsw);
index d6bf29b..2f3504b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.16 2020/10/07 13:37:32 jan Exp $   */
+/*     $OpenBSD: conf.c,v 1.17 2021/01/23 05:08:34 thfr Exp $  */
 
 /*
  * Copyright (c) 1994, 1995 Charles M. Hannum.  All rights reserved.
@@ -110,6 +110,7 @@ cdev_decl(spkr);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -248,6 +249,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 97: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 98: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 99: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 100: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index f6f45a2..adefc8f 100644 (file)
@@ -1,4 +1,4 @@
-# $OpenBSD: GENERIC,v 1.183 2021/01/19 19:14:39 kettenis Exp $
+# $OpenBSD: GENERIC,v 1.184 2021/01/23 05:08:34 thfr Exp $
 #
 # GENERIC machine description file
 #
@@ -369,6 +369,7 @@ uslhcom*    at uhidev?              # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?              # USB generic HID support
 fido*          at uhidev?              # FIDO/U2F security key support
+ujoy*          at uhidev?              # USB joystick/gamecontroller support
 upd*           at uhidev?              # USB Power Devices sensors
 aue*           at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*           at uhub?                # Atmel AT76c50x based 802.11b
index d440ffd..1312441 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.132 2020/06/23 13:57:05 fcambus Exp $
+#      $OpenBSD: GENERIC,v 1.133 2021/01/23 05:08:34 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -321,6 +321,7 @@ uslhcom* at uhidev?         # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*   at uhub?                # Atmel AT76c50x based 802.11b
index d1fb312..d95e5a8 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.180 2019/12/17 13:08:55 reyk Exp $
+#      $OpenBSD: GENERIC,v 1.181 2021/01/23 05:08:34 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -111,6 +111,7 @@ ukbd*       at uhidev?              # USB keyboard
 wskbd* at ukbd? mux 1
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 url*   at uhub?                # Realtek RTL8150L based adapters
index ddf7229..4d7a12b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.70 2020/07/06 04:32:25 dlg Exp $   */
+/*     $OpenBSD: conf.c,v 1.71 2021/01/23 05:08:35 thfr Exp $  */
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
@@ -114,6 +114,7 @@ cdev_decl(pci);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -191,6 +192,7 @@ struct cdevsw   cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 60: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 61: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 62: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 63: USB joystick/gamecontroller */
 };
 int nchrdev = nitems(cdevsw);
 
index 8b54e5d..c167a2f 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.853 2020/09/12 15:01:05 mglocker Exp $
+#      $OpenBSD: GENERIC,v 1.854 2021/01/23 05:08:35 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -284,6 +284,7 @@ uticom* at uhub?            # TI serial
 ucom*  at uticom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*   at uhub?                # Atmel AT76c50x based 802.11b
index 6912d9c..788792c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.170 2020/07/06 04:32:25 dlg Exp $  */
+/*     $OpenBSD: conf.c,v 1.171 2021/01/23 05:08:35 thfr Exp $ */
 /*     $NetBSD: conf.c,v 1.75 1996/05/03 19:40:20 christos Exp $       */
 
 /*
@@ -140,6 +140,7 @@ cdev_decl(cy);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -288,6 +289,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 97: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 98: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 99: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 100: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index 0c59680..120aa0a 100644 (file)
@@ -1,4 +1,4 @@
-# $OpenBSD: GENERIC,v 1.55 2019/12/17 13:08:55 reyk Exp $
+# $OpenBSD: GENERIC,v 1.56 2021/01/23 05:08:35 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -137,6 +137,7 @@ uslhcom* at uhidev?         # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*   at uhub?                # Atmel AT76c50x based 802.11b
index b23ef6f..45cfbd3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.42 2020/07/06 04:32:25 dlg Exp $   */
+/*     $OpenBSD: conf.c,v 1.43 2021/01/23 05:08:35 thfr Exp $  */
 
 /*
  * Copyright (c) 1994-1998 Mark Brinicombe.
@@ -116,6 +116,7 @@ cdev_decl(pci);
 #include "ugen.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ulpt.h"
 
 /*
@@ -357,6 +358,7 @@ struct cdevsw cdevsw[] = {
        cdev_switch_init(NSWITCH,switch),       /* 105: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),             /* 106: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),            /* 107: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),             /* 108: USB joystick/gamecontroller */
 };
 
 int nblkdev = nitems(bdevsw);
index d8a84c5..4e8d826 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.62 2020/09/30 22:23:41 patrick Exp $
+#      $OpenBSD: GENERIC,v 1.63 2021/01/23 05:08:35 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -164,6 +164,7 @@ uslhcom*    at uhidev?      # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?      # USB generic HID support
 fido*          at uhidev?      # FIDO/U2F security key support
+ujoy*          at uhidev?      # USB joystick/gamecontroller support
 upd*           at uhidev?      # USB Power Devices sensors
 atu*           at uhub?        # Atmel AT76c50x based 802.11b
 aue*           at uhub?        # ADMtek AN986 Pegasus Ethernet  
index 7ea9243..0520e67 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.29 2020/07/06 04:32:25 dlg Exp $ */
+/*     $OpenBSD: conf.c,v 1.30 2021/01/23 05:08:35 thfr Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -123,6 +123,7 @@ cdev_decl(pci);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -228,6 +229,7 @@ struct cdevsw       cdevsw[] =
        cdev_drm_init(NDRM,drm),        /* 87: drm */
        cdev_fido_init(NFIDO,fido),     /* 88: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 89: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 90: USB joystick/gamecontroller */
 };
 
 int    nchrdev = nitems(cdevsw);
index 7f33c75..46cd739 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.271 2020/01/24 04:44:14 krw Exp $g
+#      $OpenBSD: GENERIC,v 1.272 2021/01/23 05:08:35 thfr Exp $g
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -260,6 +260,7 @@ uslhcom* at uhidev?         # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*   at uhub?                # Atmel AT76c50x based 802.11b
index a7c0ef7..6a67a39 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.72 2020/07/06 04:32:25 dlg Exp $ */
+/*     $OpenBSD: conf.c,v 1.73 2021/01/23 05:08:35 thfr Exp $ */
 
 /*
  * Copyright (c) 1997 Per Fogelstrom
@@ -98,6 +98,7 @@ cdev_decl(com);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -231,6 +232,7 @@ struct cdevsw cdevsw[] = {
        cdev_switch_init(NSWITCH,switch), /* 89: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 90: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 91: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 92: USB joystick/gamecontroller */
 };
 int nchrdev = nitems(cdevsw);
 
index 63142e6..e5f407d 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.56 2020/10/25 10:33:31 visa Exp $
+#      $OpenBSD: GENERIC,v 1.57 2021/01/23 05:08:36 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -156,6 +156,7 @@ uslhcom*    at uhidev?      # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?      # USB generic HID support
 fido*          at uhidev?      # FIDO/U2F security key support
+ujoy*          at uhidev?      # USB joystick/gamecontroller support
 upd*           at uhidev?      # USB Power Devices sensors
 aue*           at uhub?        # ADMtek AN986 Pegasus Ethernet
 atu*           at uhub?        # Atmel AT76c50x based 802.11b
index 51608cb..b8a40b0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.25 2020/07/06 04:32:25 dlg Exp $ */
+/*     $OpenBSD: conf.c,v 1.26 2021/01/23 05:08:36 thfr Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -136,6 +136,7 @@ cdev_decl(pci);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -235,6 +236,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 75: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 76: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 77: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 78: USB joystick/gamecontroller */
 };
 
 int    nchrdev = nitems(cdevsw);
index d874b1e..75e2626 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.22 2020/11/16 19:04:57 kettenis Exp $
+#      $OpenBSD: GENERIC,v 1.23 2021/01/23 05:08:36 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -126,6 +126,7 @@ uslhcom* at uhidev?         # Silicon Labs CP2110 USB HID UART
 ucom*  at uslhcom?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 umstc* at uhidev?              # Microsoft Surface Type Cover
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
index 060e750..4f6b805 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.10 2020/10/24 21:06:56 kettenis Exp $      */
+/*     $OpenBSD: conf.c,v 1.11 2021/01/23 05:08:36 thfr Exp $  */
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
@@ -64,6 +64,7 @@ cdev_decl(com);
 #include "drm.h"
 #include "dt.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "fuse.h"
 #include "hotplug.h"
 #include "ipmi.h"
@@ -203,6 +204,7 @@ struct cdevsw cdevsw[] =
 #else
        cdev_notdef(),                  /* 93 */
 #endif
+       cdev_ujoy_init(NUJOY,ujoy),     /* 94: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index af6d1b4..889a921 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC-IP27,v 1.66 2019/12/17 13:08:56 reyk Exp $
+#      $OpenBSD: GENERIC-IP27,v 1.67 2021/01/23 05:08:36 thfr Exp $
 #
 # THIS KERNEL IS FOR Origin, Onyx, Fuel, Tezro (IP27, IP35) SYSTEMS ONLY.
 #
@@ -128,6 +128,7 @@ uslhcom*    at uhidev?      # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?      # USB generic HID support
 fido*          at uhidev?      # FIDO/U2F security key support
+ujoy*          at uhidev?      # USB joystick/gamecontroller support
 atu*           at uhub?        # Atmel AT76c50x based 802.11b
 aue*           at uhub?        # ADMtek AN986 Pegasus Ethernet  
 axe*           at uhub?        # ASIX Electronics AX88172 USB Ethernet
index 071d7ba..bd90d34 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC-IP30,v 1.59 2019/12/17 13:08:56 reyk Exp $
+#      $OpenBSD: GENERIC-IP30,v 1.60 2021/01/23 05:08:36 thfr Exp $
 #
 # THIS KERNEL IS FOR Octane and Octane 2 (IP30) SYSTEMS ONLY.
 #
@@ -119,6 +119,7 @@ uslhcom*    at uhidev?      # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?      # USB generic HID support
 fido*          at uhidev?      # FIDO/U2F security key support
+ujoy*          at uhidev?      # USB joystick/gamecontroller support
 atu*           at uhub?        # Atmel AT76c50x based 802.11b
 aue*           at uhub?        # ADMtek AN986 Pegasus Ethernet  
 axe*           at uhub?        # ASIX Electronics AX88172 USB Ethernet
index 4595a4e..d4c0d64 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC-IP32,v 1.50 2019/12/17 13:08:56 reyk Exp $
+#      $OpenBSD: GENERIC-IP32,v 1.51 2021/01/23 05:08:36 thfr Exp $
 #
 # THIS KERNEL IS FOR O2 (IP32) SYSTEMS ONLY.
 #
@@ -111,6 +111,7 @@ uslhcom*    at uhidev?      # Silicon Labs CP2110 USB HID UART
 ucom*          at uslhcom?
 uhid*          at uhidev?      # USB generic HID support
 fido*          at uhidev?      # FIDO/U2F security key support
+ujoy*          at uhidev?      # USB joystick/gamecontroller support
 atu*           at uhub?        # Atmel AT76c50x based 802.11b
 aue*           at uhub?        # ADMtek AN986 Pegasus Ethernet  
 axe*           at uhub?        # ASIX Electronics AX88172 USB Ethernet
index bb9d2ef..b6ee44c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.43 2020/07/06 04:32:25 dlg Exp $ */
+/*     $OpenBSD: conf.c,v 1.44 2021/01/23 05:08:36 thfr Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -122,6 +122,7 @@ cdev_decl(pci);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -215,6 +216,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 75: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 76: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 77: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 78: USB joystick/gamecontroller */
 };
 
 int    nchrdev = nitems(cdevsw);
index 92c2157..e29faa8 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.314 2019/12/17 13:08:56 reyk Exp $
+#      $OpenBSD: GENERIC,v 1.315 2021/01/23 05:08:36 thfr Exp $
 #
 # For further information on compiling OpenBSD kernels, see the config(8)
 # man page.
@@ -224,6 +224,7 @@ umsm*       at uhub?                # Qualcomm MSM EVDO
 ucom*  at umsm?
 uhid*  at uhidev?              # USB generic HID support
 fido*  at uhidev?              # FIDO/U2F security key support
+ujoy*  at uhidev?              # USB joystick/gamecontroller support
 upd*   at uhidev?              # USB Power Devices sensors
 aue*   at uhub?                # ADMtek AN986 Pegasus Ethernet
 atu*   at uhub?                # Atmel AT76c50x based 802.11b
index 49c31ac..6e7df92 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.84 2020/07/06 04:32:25 dlg Exp $   */
+/*     $OpenBSD: conf.c,v 1.85 2021/01/23 05:08:36 thfr Exp $  */
 /*     $NetBSD: conf.c,v 1.17 2001/03/26 12:33:26 lukem Exp $ */
 
 /*
@@ -104,6 +104,7 @@ cdev_decl(pci);
 #include "usb.h"
 #include "uhid.h"
 #include "fido.h"
+#include "ujoy.h"
 #include "ugen.h"
 #include "ulpt.h"
 #include "ucom.h"
@@ -297,6 +298,7 @@ struct cdevsw       cdevsw[] =
        cdev_switch_init(NSWITCH,switch), /* 136: switch(4) control interface */
        cdev_fido_init(NFIDO,fido),     /* 137: FIDO/U2F security key */
        cdev_pppx_init(NPPPX,pppac),    /* 138: PPP Access Concentrator */
+       cdev_ujoy_init(NUJOY,ujoy),     /* 139: USB joystick/gamecontroller */
 };
 int    nchrdev = nitems(cdevsw);
 
index 1d673cf..ff94bf8 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: files.usb,v 1.143 2020/05/31 18:15:37 jcs Exp $
+#      $OpenBSD: files.usb,v 1.144 2021/01/23 05:08:36 thfr Exp $
 #      $NetBSD: files.usb,v 1.16 2000/02/14 20:29:54 augustss Exp $
 #
 # Config file and device description for machine-independent USB code.
@@ -74,13 +74,18 @@ file        dev/usb/uhidev.c                uhidev
 # Generic HID devices
 device uhid: hid
 attach uhid at uhidbus
-file   dev/usb/uhid.c                  uhid | fido             needs-flag
+file   dev/usb/uhid.c                  uhid | fido | ujoy      needs-flag
 
 # FIDO/U2F security keys
 device  fido: hid
 attach fido at uhidbus
 file   dev/usb/fido.c                  fido                    needs-flag
 
+# USB Joysticks/Gamecontrollers
+device ujoy: hid
+attach ujoy at uhidbus
+file   dev/usb/ujoy.c                  ujoy                    needs-flag
+
 # Keyboards
 file   dev/usb/ukbdmap.c               hidkbd
 device ukbd: hid, hidkbd, wskbddev
index f43eaa1..bf3cd16 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhid.c,v 1.81 2020/12/25 12:59:52 visa Exp $ */
+/*     $OpenBSD: uhid.c,v 1.82 2021/01/23 05:08:36 thfr Exp $ */
 /*     $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $       */
 
 /*
@@ -36,6 +36,7 @@
  */
 
 #include "fido.h"
+#include "ujoy.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -96,6 +97,10 @@ uhid_lookup(dev_t dev)
 #if NFIDO > 0
        else if (cdev->d_open == fidoopen)
                cd = &fido_cd;
+#endif
+#if NUJOY > 0
+       else if (cdev->d_open == ujoyopen)
+               cd = &ujoy_cd;
 #endif
        else
                return (NULL);
index 9b46dfc..e544546 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhid.h,v 1.1 2019/12/17 13:08:54 reyk Exp $ */
+/*     $OpenBSD: uhid.h,v 1.2 2021/01/23 05:08:36 thfr Exp $ */
 /*     $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $       */
 
 /*
@@ -48,6 +48,7 @@ struct uhid_softc {
 
 extern struct cfdriver uhid_cd;
 extern struct cfdriver fido_cd;
+extern struct cfdriver ujoy_cd;
 
 #define        UHIDUNIT(dev)   (minor(dev))
 #define        UHID_CHUNK      128     /* chunk size for read */
diff --git a/sys/dev/usb/ujoy.c b/sys/dev/usb/ujoy.c
new file mode 100644 (file)
index 0000000..18a35d7
--- /dev/null
@@ -0,0 +1,149 @@
+/*     $OpenBSD: ujoy.c,v 1.1 2021/01/23 05:08:36 thfr Exp $ */
+
+/*
+ * Copyright (c) 2021 Thomas Frohwein  <thfr@openbsd.org>
+ * Copyright (c) 2021 Bryan Steele     <brynet@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+#include <sys/signalvar.h>
+#include <sys/device.h>
+#include <sys/ioctl.h>
+#include <sys/conf.h>
+#include <sys/tty.h>
+#include <sys/selinfo.h>
+#include <sys/proc.h>
+#include <sys/vnode.h>
+#include <sys/poll.h>
+#include <sys/fcntl.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbhid.h>
+
+#include <dev/usb/usbdevs.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdi_util.h>
+
+#include <dev/usb/uhidev.h>
+#include <dev/usb/uhid.h>
+
+int ujoy_match(struct device *, void *, void *);
+
+struct cfdriver ujoy_cd = {
+       NULL, "ujoy", DV_DULL
+};
+
+const struct cfattach ujoy_ca = {
+       sizeof(struct uhid_softc),
+       ujoy_match,
+       uhid_attach,
+       uhid_detach,
+};
+
+/*
+ * XXX workaround:
+ *
+ * This is a copy of sys/dev/hid/hid.c:hid_is_collection(), synced up to the
+ * NetBSD version.  Our current hid_is_collection() is not playing nice with
+ * all HID devices like the PS4 controller.  But applying this version
+ * globally breaks other HID devices like ims(4) and imt(4).  Until our global
+ * hid_is_collection() can't be fixed to play nice with all HID devices, we
+ * go for this dedicated ujoy(4) version.
+ */
+int
+ujoy_hid_is_collection(const void *desc, int size, uint8_t id, int32_t usage)
+{
+       struct hid_data *hd;
+       struct hid_item hi;
+       uint32_t coll_usage = ~0;
+
+       hd = hid_start_parse(desc, size, hid_input);
+       if (hd == NULL)
+               return (0);
+
+       while (hid_get_item(hd, &hi)) {
+               if (hi.kind == hid_collection &&
+                   hi.collection == HCOLL_APPLICATION)
+                       coll_usage = hi.usage;
+
+               if (hi.kind == hid_endcollection)
+                       coll_usage = ~0;
+
+               if (hi.kind == hid_input &&
+                   coll_usage == usage &&
+                   hi.report_ID == id) {
+                       hid_end_parse(hd);
+                       return (1);
+               }
+       }
+       hid_end_parse(hd);
+
+       return (0);
+}
+
+int
+ujoy_match(struct device *parent, void *match, void *aux)
+{
+       struct uhidev_attach_arg *uha = (struct uhidev_attach_arg *)aux;
+       int                       size;
+       void                     *desc;
+       int                       ret = UMATCH_NONE;
+
+       if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
+               return (ret);
+
+       /* Find the general usage page and gamecontroller collections */
+       uhidev_get_report_desc(uha->parent, &desc, &size);
+
+       if (ujoy_hid_is_collection(desc, size, uha->reportid,
+           HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_JOYSTICK)))
+               ret = UMATCH_IFACECLASS;
+
+       if (ujoy_hid_is_collection(desc, size, uha->reportid,
+           HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_GAME_PAD)))
+               ret = UMATCH_IFACECLASS;
+
+       return (ret);
+}
+
+int
+ujoyopen(dev_t dev, int flag, int mode, struct proc *p)
+{
+       /* Restrict ujoy devices to read operations */
+       if ((flag & FWRITE))
+               return (EPERM);
+       return (uhid_do_open(dev, flag, mode, p));
+}
+
+int
+ujoyioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
+{
+       switch (cmd) {
+       case FIONBIO:
+       case FIOASYNC:
+       case USB_GET_DEVICEINFO:
+       case USB_GET_REPORT:
+       case USB_GET_REPORT_DESC:
+       case USB_GET_REPORT_ID:
+               break;
+       default:
+               return (EPERM);
+       }
+
+       return (uhidioctl(dev, cmd, addr, flag, p));
+}
index 7478aa7..5783e52 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.h,v 1.155 2020/07/06 04:11:26 dlg Exp $  */
+/*     $OpenBSD: conf.h,v 1.156 2021/01/23 05:08:36 thfr Exp $ */
 /*     $NetBSD: conf.h,v 1.33 1996/05/03 20:03:32 christos Exp $       */
 
 /*-
@@ -383,6 +383,13 @@ extern struct cdevsw cdevsw[];
        (dev_type_stop((*))) enodev, 0, dev_init(c,uhid,poll), \
        (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,uhid,kqfilter) }
 
+/* open, close, read, write, ioctl, poll, kqfilter */
+#define        cdev_ujoy_init(c,n) { \
+       dev_init(c,n,open), dev_init(c,uhid,close), dev_init(c,uhid,read), \
+       dev_init(c,uhid,write), dev_init(c,ujoy,ioctl), \
+       (dev_type_stop((*))) enodev, 0, dev_init(c,uhid,poll), \
+       (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,uhid,kqfilter) }
+
 /* open, close, init */
 #define cdev_pci_init(c,n) { \
        dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
@@ -624,6 +631,7 @@ cdev_decl(usb);
 cdev_decl(ugen);
 cdev_decl(uhid);
 cdev_decl(fido);
+cdev_decl(ujoy);
 cdev_decl(ucom);
 cdev_decl(ulpt);
 cdev_decl(urio);