summaryrefslogtreecommitdiff
path: root/sys/dev/usb/ugen.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/ugen.c')
-rw-r--r--sys/dev/usb/ugen.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c
index c88c56705e5..bf301035167 100644
--- a/sys/dev/usb/ugen.c
+++ b/sys/dev/usb/ugen.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: ugen.c,v 1.25 2002/07/25 04:07:32 nate Exp $ */
-/* $NetBSD: ugen.c,v 1.59 2002/07/11 21:14:28 augustss Exp $ */
+/* $OpenBSD: ugen.c,v 1.26 2002/11/11 02:32:32 nate Exp $ */
+/* $NetBSD: ugen.c,v 1.62 2002/10/23 09:13:59 jdolecek Exp $ */
/* $FreeBSD: src/sys/dev/usb/ugen.c,v 1.26 1999/11/17 22:33:41 n_hibma Exp $ */
/*
@@ -121,7 +121,18 @@ struct ugen_softc {
};
#if defined(__NetBSD__)
-cdev_decl(ugen);
+dev_type_open(ugenopen);
+dev_type_close(ugenclose);
+dev_type_read(ugenread);
+dev_type_write(ugenwrite);
+dev_type_ioctl(ugenioctl);
+dev_type_poll(ugenpoll);
+dev_type_kqfilter(ugenkqfilter);
+
+const struct cdevsw ugen_cdevsw = {
+ ugenopen, ugenclose, ugenread, ugenwrite, ugenioctl,
+ nostop, notty, ugenpoll, nommap, ugenkqfilter,
+};
#elif defined(__FreeBSD__)
d_open_t ugenopen;
d_close_t ugenclose;
@@ -735,7 +746,6 @@ ugen_activate(device_ptr_t self, enum devact act)
switch (act) {
case DVACT_ACTIVATE:
return (EOPNOTSUPP);
- break;
case DVACT_DEACTIVATE:
sc->sc_dying = 1;
@@ -779,18 +789,18 @@ USB_DETACH(ugen)
}
splx(s);
-#if defined(__NetBSD__) || defined(__OpenBSD__)
/* locate the major number */
+#if defined(__NetBSD__)
+ maj = cdevsw_lookup_major(&ugen_cdevsw);
+#elif defined(__OpenBSD__)
for (maj = 0; maj < nchrdev; maj++)
if (cdevsw[maj].d_open == ugenopen)
break;
+#endif
/* Nuke the vnodes for any open instances (calls close). */
mn = self->dv_unit * USB_MAX_ENDPOINTS;
vdevgone(maj, mn, mn + USB_MAX_ENDPOINTS - 1, VCHR);
-#elif defined(__FreeBSD__)
- /* XXX not implemented yet */
-#endif
usbd_add_drv_event(USB_EVENT_DRIVER_DETACH, sc->sc_udev,
USBDEV(sc->sc_dev));