diff options
author | Nick Hibma <n_hibma@FreeBSD.org> | 1999-11-30 01:48:12 +0000 |
---|---|---|
committer | Nick Hibma <n_hibma@FreeBSD.org> | 1999-11-30 01:48:12 +0000 |
commit | f8a96f1018523f808dc5f53aae9477cc900d0e6f (patch) | |
tree | 4730d43d3164d2687de738a50cd487074251aae5 /sys/dev/usb/ugen.c | |
parent | 5700c63bc7ad68fb7e80456f8cc51e1b308d8519 (diff) | |
download | src-f8a96f1018523f808dc5f53aae9477cc900d0e6f.tar.gz src-f8a96f1018523f808dc5f53aae9477cc900d0e6f.zip |
Commit for r1.29 of ugen.c was wrong. All the ugenX* device
entries were like the entries for ugen0* device.
Notes
Notes:
svn path=/head/; revision=53907
Diffstat (limited to 'sys/dev/usb/ugen.c')
-rw-r--r-- | sys/dev/usb/ugen.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index a74a718a1575..2342a027ca3d 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -69,7 +69,7 @@ #ifdef UGEN_DEBUG #define DPRINTF(x) if (ugendebug) logprintf x #define DPRINTFN(n,x) if (ugendebug>(n)) logprintf x -int ugendebug = 0; +int ugendebug = 10; #else #define DPRINTF(x) #define DPRINTFN(n,x) @@ -151,7 +151,7 @@ static int ugen_get_alt_index __P((struct ugen_softc *sc, int ifaceidx)); #define UGENUNIT(n) ((minor(n) >> 4) & 0xf) #define UGENENDPOINT(n) (minor(n) & 0xf) -#define UGENDEV(u, e) (makedev(UGEN_CDEV_MAJOR, ((u) << 4) | (e))) +#define UGENMINOR(u, e) (((u) << 4) | (e)) USB_DECLARE_DRIVER(ugen); @@ -243,7 +243,11 @@ ugen_set_config(sc, configno) #if defined(__FreeBSD__) - for (endptno = 0; endptno < USB_MAX_ENDPOINTS; endptno++) { + /* the main device, ctrl endpoint */ + make_dev(&ugen_cdevsw, UGENMINOR(USBDEVUNIT(sc->sc_dev), 0), + UID_ROOT, GID_OPERATOR, 0644, "%s", USBDEVNAME(sc->sc_dev)); + + for (endptno = 1; endptno < USB_MAX_ENDPOINTS; endptno++) { if (sc->sc_endpoints[endptno][IN].sc != NULL || sc->sc_endpoints[endptno][OUT].sc != NULL ) { /* endpt can be 0x81 and 0x01, representing @@ -254,10 +258,11 @@ ugen_set_config(sc, configno) * In the if clause above we check whether one * of the structs is populated. */ - make_dev(&ugen_cdevsw, endptno, + make_dev(&ugen_cdevsw, + UGENMINOR(USBDEVUNIT(sc->sc_dev), endptno), UID_ROOT, GID_OPERATOR, 0644, - "ugen%d.%d", - USBDEVUNIT(sc->sc_dev), endptno); + "%s.%d", + USBDEVNAME(sc->sc_dev), endptno); } } #endif @@ -683,7 +688,9 @@ USB_DETACH(ugen) mn = self->dv_unit * USB_MAX_ENDPOINTS; vdevgone(maj, mn, mn + USB_MAX_ENDPOINTS - 1, VCHR); #elif defined(__FreeBSD__) - for (endptno = 0; endptno < USB_MAX_ENDPOINTS; endptno++) { + dev = makedev(UGEN_CDEV_MAJOR, UGENMINOR(USBDEVUNIT(sc->sc_dev), 0)); + destroy_dev(dev); + for (endptno = 1; endptno < USB_MAX_ENDPOINTS; endptno++) { if (sc->sc_endpoints[endptno][IN].sc != NULL || sc->sc_endpoints[endptno][OUT].sc != NULL ) { /* endpt can be 0x81 and 0x01, representing @@ -694,7 +701,8 @@ USB_DETACH(ugen) * In the if clause above we check whether one * of the structs is populated. */ - dev = UGENDEV(USBDEVUNIT(sc->sc_dev), endptno); + dev = makedev(UGEN_CDEV_MAJOR, + UGENMINOR(USBDEVUNIT(sc->sc_dev), endptno)); vp = SLIST_FIRST(&dev->si_hlist); if (vp) VOP_REVOKE(vp, REVOKEALL); |