In revision 1.91 of uhidev.c, jcs@ made sure to only detach devices
authoranton <anton@openbsd.org>
Thu, 18 Mar 2021 09:21:53 +0000 (09:21 +0000)
committeranton <anton@openbsd.org>
Thu, 18 Mar 2021 09:21:53 +0000 (09:21 +0000)
claiming multiple report ids once. This allows uhidpp to piggy back on
the same functionality making uhidev_unset_report_dev() redundant.

sys/dev/usb/uhidev.c
sys/dev/usb/uhidev.h
sys/dev/usb/uhidpp.c

index b3f5f4d..cbd0b83 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhidev.c,v 1.91 2021/03/17 19:44:16 jcs Exp $ */
+/*     $OpenBSD: uhidev.c,v 1.92 2021/03/18 09:21:53 anton Exp $       */
 /*     $NetBSD: uhidev.c,v 1.14 2003/03/11 16:44:00 augustss Exp $     */
 
 /*
@@ -995,13 +995,3 @@ uhidev_set_report_dev(struct uhidev_softc *sc, struct uhidev *dev, int repid)
        sc->sc_subdevs[repid] = dev;
        return 0;
 }
-
-int
-uhidev_unset_report_dev(struct uhidev_softc *sc, int repid)
-{
-       if (repid >= sc->sc_nrepid)
-               return EINVAL;
-
-       sc->sc_subdevs[repid] = NULL;
-       return 0;
-}
index cb83045..ad66873 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhidev.h,v 1.28 2021/03/08 14:35:57 jcs Exp $ */
+/*     $OpenBSD: uhidev.h,v 1.29 2021/03/18 09:21:53 anton Exp $       */
 /*     $NetBSD: uhidev.h,v 1.3 2002/10/08 09:56:17 dan Exp $   */
 
 /*
@@ -98,4 +98,3 @@ int uhidev_get_report_async(struct uhidev_softc *, int, int, void *, int,
     void *, void (*)(void *, int, void *, int));
 usbd_status uhidev_write(struct uhidev_softc *, void *, int);
 int uhidev_set_report_dev(struct uhidev_softc *, struct uhidev *, int);
-int uhidev_unset_report_dev(struct uhidev_softc *, int);
index b24fa47..07a64ed 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhidpp.c,v 1.12 2021/02/16 18:36:43 anton Exp $       */
+/*     $OpenBSD: uhidpp.c,v 1.13 2021/03/18 09:21:53 anton Exp $       */
 
 /*
  * Copyright (c) 2021 Anton Lindqvist <anton@openbsd.org>
@@ -434,14 +434,6 @@ uhidpp_detach(struct device *self, int flags)
                        sensor_detach(&sc->sc_sensdev, &dev->d_battery.b_sens[j]);
        }
 
-       /*
-        * Since this driver has multiple device handlers attached, remove all
-        * of them preventing the uhidev parent from calling this detach routine
-        * more than once.
-        */
-       uhidev_unset_report_dev(sc->sc_hdev.sc_parent, HIDPP_REPORT_ID_SHORT);
-       uhidev_unset_report_dev(sc->sc_hdev.sc_parent, HIDPP_REPORT_ID_LONG);
-
        uhidev_close(&sc->sc_hdev);
 
        return 0;