diff options
| author | pooka <pooka@NetBSD.org> | 2009-12-23 01:04:45 +0000 |
|---|---|---|
| committer | pooka <pooka@NetBSD.org> | 2009-12-23 01:04:45 +0000 |
| commit | bb27c3b9ac576822d8d643b82548d8928fb10fb6 (patch) | |
| tree | 9de011ae6d97c5e593bc040e80090883b7c188b9 /sys/dev | |
| parent | 666c22984b78eb6471a4119e0a5d47c4d9bf2aa4 (diff) | |
unifdef -D UGEN_BULK_RA_WB
Default behaviour unchanged, the feature must still be explicitly
enabled for a ugen fd.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/usb/files.usb | 3 | ||||
| -rw-r--r-- | sys/dev/usb/ugen.c | 61 |
2 files changed, 3 insertions, 61 deletions
diff --git a/sys/dev/usb/files.usb b/sys/dev/usb/files.usb index 894307ed4b2..02e06c8f909 100644 --- a/sys/dev/usb/files.usb +++ b/sys/dev/usb/files.usb @@ -1,4 +1,4 @@ -# $NetBSD: files.usb,v 1.92 2009/11/30 16:18:34 tsutsui Exp $ +# $NetBSD: files.usb,v 1.93 2009/12/23 01:04:45 pooka Exp $ # # Config file and device description for machine-independent USB code. # Included by ports that need it. Ports that use it must provide @@ -54,7 +54,6 @@ file dev/usb/ucom.c ucom | ucombus needs-flag # Generic devices -defflag UGEN_BULK_RA_WB device ugen attach ugen at usbdevif file dev/usb/ugen.c ugen needs-flag diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index f601ee3922e..ce346a094f5 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.106 2009/12/06 21:40:31 dyoung Exp $ */ +/* $NetBSD: ugen.c,v 1.107 2009/12/23 01:04:45 pooka Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.106 2009/12/06 21:40:31 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.107 2009/12/23 01:04:45 pooka Exp $"); #include "opt_ugen_bulk_ra_wb.h" #include "opt_compat_netbsd.h" @@ -107,13 +107,11 @@ struct ugen_endpoint { u_char *limit; /* end of circular buffer (isoc) */ u_char *cur; /* current read location (isoc) */ u_int32_t timeout; -#ifdef UGEN_BULK_RA_WB u_int32_t ra_wb_bufsize; /* requested size for RA/WB buffer */ u_int32_t ra_wb_reqsize; /* requested xfer length for RA/WB */ u_int32_t ra_wb_used; /* how much is in buffer */ u_int32_t ra_wb_xferlen; /* current xfer length for RA/WB */ usbd_xfer_handle ra_wb_xfer; -#endif struct isoreq { struct ugen_endpoint *sce; usbd_xfer_handle xfer; @@ -183,12 +181,10 @@ Static void ugenintr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status); Static void ugen_isoc_rintr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status); -#ifdef UGEN_BULK_RA_WB Static void ugen_bulkra_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status); Static void ugen_bulkwb_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status); -#endif Static int ugen_do_read(struct ugen_softc *, int, struct uio *, int); Static int ugen_do_write(struct ugen_softc *, int, struct uio *, int); Static int ugen_do_ioctl(struct ugen_softc *, int, u_long, @@ -441,14 +437,12 @@ ugenopen(dev_t dev, int flag, int mode, struct lwp *l) edesc->bEndpointAddress, 0, &sce->pipeh); if (err) return (EIO); -#ifdef UGEN_BULK_RA_WB sce->ra_wb_bufsize = UGEN_BULK_RA_WB_BUFSIZE; /* * Use request size for non-RA/WB transfers * as the default. */ sce->ra_wb_reqsize = UGEN_BBSIZE; -#endif break; case UE_ISOCHRONOUS: if (dir == OUT) @@ -554,13 +548,11 @@ ugenclose(dev_t dev, int flag, int mode, struct lwp *l) for (i = 0; i < UGEN_NISOREQS; ++i) usbd_free_xfer(sce->isoreqs[i].xfer); break; -#ifdef UGEN_BULK_RA_WB case UE_BULK: if (sce->state & (UGEN_BULK_RA | UGEN_BULK_WB)) /* ibuf freed below */ usbd_free_xfer(sce->ra_wb_xfer); break; -#endif default: break; } @@ -644,7 +636,6 @@ ugen_do_read(struct ugen_softc *sc, int endpt, struct uio *uio, int flag) } break; case UE_BULK: -#ifdef UGEN_BULK_RA_WB if (sce->state & UGEN_BULK_RA) { DPRINTFN(5, ("ugenread: BULK_RA req: %zd used: %d\n", uio->uio_resid, sce->ra_wb_used)); @@ -717,7 +708,6 @@ ugen_do_read(struct ugen_softc *sc, int endpt, struct uio *uio, int flag) splx(s); break; } -#endif xfer = usbd_alloc_xfer(sc->sc_udev); if (xfer == 0) return (ENOMEM); @@ -813,11 +803,9 @@ ugen_do_write(struct ugen_softc *sc, int endpt, struct uio *uio, struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][OUT]; u_int32_t n; int error = 0; -#ifdef UGEN_BULK_RA_WB int s; u_int32_t tn; char *dbuf; -#endif usbd_xfer_handle xfer; usbd_status err; @@ -842,7 +830,6 @@ ugen_do_write(struct ugen_softc *sc, int endpt, struct uio *uio, switch (sce->edesc->bmAttributes & UE_XFERTYPE) { case UE_BULK: -#ifdef UGEN_BULK_RA_WB if (sce->state & UGEN_BULK_WB) { DPRINTFN(5, ("ugenwrite: BULK_WB req: %zd used: %d\n", uio->uio_resid, sce->ra_wb_used)); @@ -924,7 +911,6 @@ ugen_do_write(struct ugen_softc *sc, int endpt, struct uio *uio, splx(s); break; } -#endif xfer = usbd_alloc_xfer(sc->sc_udev); if (xfer == 0) return (EIO); @@ -1169,7 +1155,6 @@ ugen_isoc_rintr(usbd_xfer_handle xfer, usbd_private_handle addr, selnotify(&sce->rsel, 0, 0); } -#ifdef UGEN_BULK_RA_WB Static void ugen_bulkra_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status) @@ -1301,7 +1286,6 @@ ugen_bulkwb_intr(usbd_xfer_handle xfer, usbd_private_handle addr, } selnotify(&sce->rsel, 0, 0); } -#endif Static usbd_status ugen_set_interface(struct ugen_softc *sc, int ifaceidx, int altno) @@ -1453,7 +1437,6 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd, sce->timeout = *(int *)addr; return (0); case USB_SET_BULK_RA: -#ifdef UGEN_BULK_RA_WB if (endpt == USB_CONTROL_ENDPOINT) return (EINVAL); sce = &sc->sc_endpoints[endpt][IN]; @@ -1522,11 +1505,7 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd, sce->ibuf = NULL; } return (0); -#else - return (EOPNOTSUPP); -#endif case USB_SET_BULK_WB: -#ifdef UGEN_BULK_RA_WB if (endpt == USB_CONTROL_ENDPOINT) return (EINVAL); sce = &sc->sc_endpoints[endpt][OUT]; @@ -1580,12 +1559,8 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd, sce->ibuf = NULL; } return (0); -#else - return (EOPNOTSUPP); -#endif case USB_SET_BULK_RA_OPT: case USB_SET_BULK_WB_OPT: -#ifdef UGEN_BULK_RA_WB { struct usb_bulk_ra_wb_opt *opt; @@ -1612,9 +1587,6 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd, sce->ra_wb_reqsize = opt->ra_wb_request_size; return (0); } -#else - return (EOPNOTSUPP); -#endif default: break; } @@ -1905,7 +1877,6 @@ ugenpoll(dev_t dev, int events, struct lwp *l) selrecord(l, &sce_in->rsel); break; case UE_BULK: -#ifdef UGEN_BULK_RA_WB if (sce_in->state & UGEN_BULK_RA) { if (sce_in->ra_wb_used > 0) revents |= events & @@ -1914,7 +1885,6 @@ ugenpoll(dev_t dev, int events, struct lwp *l) selrecord(l, &sce_in->rsel); break; } -#endif /* * We have no easy way of determining if a read will * yield any data or a write will happen. @@ -1932,7 +1902,6 @@ ugenpoll(dev_t dev, int events, struct lwp *l) /* XXX unimplemented */ break; case UE_BULK: -#ifdef UGEN_BULK_RA_WB if (sce_out->state & UGEN_BULK_WB) { if (sce_out->ra_wb_used < sce_out->limit - sce_out->ibuf) @@ -1942,7 +1911,6 @@ ugenpoll(dev_t dev, int events, struct lwp *l) selrecord(l, &sce_out->rsel); break; } -#endif /* * We have no easy way of determining if a read will * yield any data or a write will happen. @@ -1996,7 +1964,6 @@ filt_ugenread_isoc(struct knote *kn, long hint) return (1); } -#ifdef UGEN_BULK_RA_WB static int filt_ugenread_bulk(struct knote *kn, long hint) { @@ -2038,7 +2005,6 @@ filt_ugenwrite_bulk(struct knote *kn, long hint) return (1); } -#endif static const struct filterops ugenread_intr_filtops = { 1, NULL, filt_ugenrdetach, filt_ugenread_intr }; @@ -2046,16 +2012,11 @@ static const struct filterops ugenread_intr_filtops = static const struct filterops ugenread_isoc_filtops = { 1, NULL, filt_ugenrdetach, filt_ugenread_isoc }; -#ifdef UGEN_BULK_RA_WB static const struct filterops ugenread_bulk_filtops = { 1, NULL, filt_ugenrdetach, filt_ugenread_bulk }; static const struct filterops ugenwrite_bulk_filtops = { 1, NULL, filt_ugenrdetach, filt_ugenwrite_bulk }; -#else -static const struct filterops ugen_seltrue_filtops = - { 1, NULL, filt_ugenrdetach, filt_seltrue }; -#endif int ugenkqfilter(dev_t dev, struct knote *kn) @@ -2085,17 +2046,8 @@ ugenkqfilter(dev_t dev, struct knote *kn) kn->kn_fop = &ugenread_isoc_filtops; break; case UE_BULK: -#ifdef UGEN_BULK_RA_WB kn->kn_fop = &ugenread_bulk_filtops; break; -#else - /* - * We have no easy way of determining if a read will - * yield any data or a write will happen. - * So, emulate "seltrue". - */ - kn->kn_fop = &ugen_seltrue_filtops; -#endif break; default: return (EINVAL); @@ -2115,16 +2067,7 @@ ugenkqfilter(dev_t dev, struct knote *kn) return (EINVAL); case UE_BULK: -#ifdef UGEN_BULK_RA_WB kn->kn_fop = &ugenwrite_bulk_filtops; -#else - /* - * We have no easy way of determining if a read will - * yield any data or a write will happen. - * So, emulate "seltrue". - */ - kn->kn_fop = &ugen_seltrue_filtops; -#endif break; default: return (EINVAL); |
