summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorpooka <pooka@NetBSD.org>2009-12-23 01:04:45 +0000
committerpooka <pooka@NetBSD.org>2009-12-23 01:04:45 +0000
commitbb27c3b9ac576822d8d643b82548d8928fb10fb6 (patch)
tree9de011ae6d97c5e593bc040e80090883b7c188b9 /sys/dev
parent666c22984b78eb6471a4119e0a5d47c4d9bf2aa4 (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.usb3
-rw-r--r--sys/dev/usb/ugen.c61
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);