On Thu, Nov 25, 2010 at 2:28 PM, Mark Kettenis <mark.kette...@xs4all.nl> wrote:
> > Just nuke it. It'll be sitting in the attick if anybody wants it back. > Ok, here is a proposed diff that can also be found at: http://www.brimbelle.org/mattieu/stuff/uscanner.diff Compile tested on amd64. Index: sys/dev/usb/uscanner.c =================================================================== RCS file: sys/dev/usb/uscanner.c diff -N sys/dev/usb/uscanner.c --- sys/dev/usb/uscanner.c 24 Sep 2010 08:33:59 -0000 1.43 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,687 +0,0 @@ -/* $OpenBSD: uscanner.c,v 1.43 2010/09/24 08:33:59 yuo Exp $ */ -/* $NetBSD: uscanner.c,v 1.40 2003/01/27 00:32:44 wiz Exp $ */ - -/* - * Copyright (c) 2000 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Lennart Augustsson (lenn...@augustsson.net) at - * Carlstedt Research & Technology - * and Nick Hibma (n_hi...@qubesoft.com). - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/device.h> -#include <sys/tty.h> -#include <sys/file.h> -#include <sys/selinfo.h> -#include <sys/proc.h> -#include <sys/vnode.h> -#include <sys/poll.h> -#include <sys/conf.h> - -#include <dev/usb/usb.h> -#include <dev/usb/usbdi.h> -#include <dev/usb/usbdi_util.h> - -#include <dev/usb/usbdevs.h> - -#ifdef USCANNER_DEBUG -#define DPRINTF(x) do { if (uscannerdebug) printf x; } while (0) -#define DPRINTFN(n,x) do { if (uscannerdebug>(n)) printf x; } while (0) -int uscannerdebug = 0; -#else -#define DPRINTF(x) -#define DPRINTFN(n,x) -#endif - -struct uscan_info { - struct usb_devno devno; - u_int flags; -#define USC_KEEP_OPEN 1 -}; - -/* Table of scanners that may work with this driver. */ -static const struct uscan_info uscanner_devs[] = { - /* Acer Peripherals */ - {{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_320U }, 0 }, - {{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640U }, 0 }, - {{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_620U }, 0 }, - {{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_C310U }, 0 }, - - /* AGFA */ - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1236U }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U2 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANTOUCH }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE40 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE50 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE20 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE25 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE26 }, 0 }, - {{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE52 }, 0 }, - - /* Avision */ - {{ USB_VENDOR_AVISION, USB_PRODUCT_AVISION_1200U }, 0 }, - - /* Canon */ - {{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N656U }, 0 }, - {{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N670U }, 0 }, - {{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N1220U }, 0 }, - {{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N1240U }, 0 }, - - /* Kye */ - {{ USB_VENDOR_KYE, USB_PRODUCT_KYE_VIVIDPRO }, 0 }, - - /* HP */ - {{ USB_VENDOR_HP, USB_PRODUCT_HP_2200C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_3300C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_3400CSE }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_4100C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_4200C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_4300C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_S20 }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_5200C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_6200C }, 0 }, - {{ USB_VENDOR_HP, USB_PRODUCT_HP_6300C }, 0 }, - - /* Mustek */ - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CU }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_BEARPAW1200F }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600USB }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600CU }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USB }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200UB }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USBPLUS }, 0 }, - {{ USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CUPLUS }, 0 }, - - /* National */ - {{ USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW1200 }, 0 }, - {{ USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW2400 }, 0 }, - - /* Primax */ - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2X300 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E300 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2300 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E3002 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_9600 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_600U }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_6200 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_19200 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_1200U }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G600 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_636I }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2600 }, 0 }, - {{ USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E600 }, 0 }, - - /* Epson */ - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_636 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_610 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1200 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1240 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1260 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1600 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1640 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1660 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_640U }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1650 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_2400 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX3800 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX4000 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX5000 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX6000 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_CX5400 }, 0 }, - {{ USB_VENDOR_EPSON, USB_PRODUCT_EPSON_GT9700F }, USC_KEEP_OPEN }, - - /* UMAX */ - {{ USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1220U }, 0 }, - {{ USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1236U }, 0 }, - {{ USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2000U }, 0 }, - {{ USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2200U }, 0 }, - {{ USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA3400 }, 0 }, - - /* Visioneer */ - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_3000 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_5300 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_7600 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6100 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6200 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8100 }, 0 }, - {{ USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8600 }, 0 }, - - /* Ultima */ - {{ USB_VENDOR_ULTIMA, USB_PRODUCT_ULTIMA_1200UBPLUS }, 0 }, - -}; -#define uscanner_lookup(v, p) ((const struct uscan_info *)usb_lookup(uscanner_devs, v, p)) - -#define USCANNER_BUFFERSIZE 1024 - -struct uscanner_softc { - struct device sc_dev; /* base device */ - usbd_device_handle sc_udev; - usbd_interface_handle sc_iface; - - u_int sc_dev_flags; - - usbd_pipe_handle sc_bulkin_pipe; - int sc_bulkin; - usbd_xfer_handle sc_bulkin_xfer; - void *sc_bulkin_buffer; - int sc_bulkin_bufferlen; - int sc_bulkin_datalen; - - usbd_pipe_handle sc_bulkout_pipe; - int sc_bulkout; - usbd_xfer_handle sc_bulkout_xfer; - void *sc_bulkout_buffer; - int sc_bulkout_bufferlen; - int sc_bulkout_datalen; - - struct selinfo sc_selq; - - u_char sc_state; -#define USCANNER_OPEN 0x01 /* opened */ - - int sc_refcnt; - u_char sc_dying; -}; - -int uscanner_do_read(struct uscanner_softc *, struct uio *, int); -int uscanner_do_write(struct uscanner_softc *, struct uio *, int); -void uscanner_do_close(struct uscanner_softc *); - -#define USCANNERUNIT(n) (minor(n)) - -int uscanner_match(struct device *, void *, void *); -void uscanner_attach(struct device *, struct device *, void *); -int uscanner_detach(struct device *, int); -int uscanner_activate(struct device *, int); - -struct cfdriver uscanner_cd = { - NULL, "uscanner", DV_DULL -}; - -const struct cfattach uscanner_ca = { - sizeof(struct uscanner_softc), - uscanner_match, - uscanner_attach, - uscanner_detach, - uscanner_activate, -}; - -int -uscanner_match(struct device *parent, void *match, void *aux) -{ - struct usb_attach_arg *uaa = aux; - usb_interface_descriptor_t *id; - - if (uaa->iface == NULL) - return UMATCH_NONE; /* do not grab the entire device */ - - if (uscanner_lookup(uaa->vendor, uaa->product) == NULL) - return UMATCH_NONE; /* not in the list of known devices */ - id = usbd_get_interface_descriptor(uaa->iface); - if (id == NULL) - return UMATCH_NONE; - - /* - * There isn't a specific UICLASS for scanners, many vendors use - * UICLASS_VENDOR, so detecting the right interface is not so easy. - * But certainly we can exclude PRINTER and MASS - which some - * multifunction devices implement. - */ - if (id->bInterfaceClass == UICLASS_PRINTER || - id->bInterfaceClass == UICLASS_MASS) - return UMATCH_NONE; - - return UMATCH_VENDOR_PRODUCT; -} - -void -uscanner_attach(struct device *parent, struct device *self, void *aux) -{ - struct uscanner_softc *sc = (struct uscanner_softc *)self; - struct usb_attach_arg *uaa = aux; - usb_interface_descriptor_t *id = 0; - usb_endpoint_descriptor_t *ed, *ed_bulkin = NULL, *ed_bulkout = NULL; - int i; - usbd_status err; - int ifnum; - - sc->sc_dev_flags = uscanner_lookup(uaa->vendor, uaa->product)->flags; - - sc->sc_udev = uaa->device; - - id = usbd_get_interface_descriptor(uaa->iface); - ifnum = id->bInterfaceNumber; - - err = usbd_device2interface_handle(sc->sc_udev, ifnum, &sc->sc_iface); - if (!err && sc->sc_iface) - id = usbd_get_interface_descriptor(sc->sc_iface); - if (err || id == 0) { - printf("%s: could not get interface descriptor, err=%d,id=%p\n", - sc->sc_dev.dv_xname, err, id); - return; - } - - /* Find the two first bulk endpoints */ - for (i = 0 ; i < id->bNumEndpoints; i++) { - ed = usbd_interface2endpoint_descriptor(sc->sc_iface, i); - if (ed == 0) { - printf("%s: could not read endpoint descriptor\n", - sc->sc_dev.dv_xname); - return; - } - - if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_IN - && (ed->bmAttributes & UE_XFERTYPE) == UE_BULK) { - ed_bulkin = ed; - } else if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_OUT - && (ed->bmAttributes & UE_XFERTYPE) == UE_BULK) { - ed_bulkout = ed; - } - - if (ed_bulkin && ed_bulkout) /* found all we need */ - break; - } - - /* Verify that we goething sensible */ - if (ed_bulkin == NULL || ed_bulkout == NULL) { - printf("%s: bulk-in and/or bulk-out endpoint not found\n", - sc->sc_dev.dv_xname); - return; - } - - sc->sc_bulkin = ed_bulkin->bEndpointAddress; - sc->sc_bulkout = ed_bulkout->bEndpointAddress; - - usbd_add_drv_event(USB_EVENT_DRIVER_ATTACH, sc->sc_udev, - &sc->sc_dev); -} - -int -uscanneropen(dev_t dev, int flag, int mode, struct proc *p) -{ - struct uscanner_softc *sc; - int unit = USCANNERUNIT(dev); - usbd_status err; - - if (unit >= uscanner_cd.cd_ndevs) - return (ENXIO); - sc = uscanner_cd.cd_devs[unit]; - if (sc == NULL) - return (ENXIO); - - DPRINTFN(5, ("uscanneropen: flag=%d, mode=%d, unit=%d\n", - flag, mode, unit)); - - if (sc->sc_dying) - return (ENXIO); - - if (sc->sc_state & USCANNER_OPEN) - return (EBUSY); - - sc->sc_state |= USCANNER_OPEN; - - sc->sc_bulkin_buffer = malloc(USCANNER_BUFFERSIZE, M_USBDEV, M_WAITOK); - sc->sc_bulkout_buffer = malloc(USCANNER_BUFFERSIZE, M_USBDEV, M_WAITOK); - /* No need to check buffers for NULL since we have WAITOK */ - - sc->sc_bulkin_bufferlen = USCANNER_BUFFERSIZE; - sc->sc_bulkout_bufferlen = USCANNER_BUFFERSIZE; - - /* We have decided on which endpoints to use, now open the pipes */ - if (sc->sc_bulkin_pipe == NULL) { - err = usbd_open_pipe(sc->sc_iface, sc->sc_bulkin, - USBD_EXCLUSIVE_USE, &sc->sc_bulkin_pipe); - if (err) { - printf("%s: cannot open bulk-in pipe (addr %d)\n", - sc->sc_dev.dv_xname, sc->sc_bulkin); - uscanner_do_close(sc); - return (EIO); - } - } - if (sc->sc_bulkout_pipe == NULL) { - err = usbd_open_pipe(sc->sc_iface, sc->sc_bulkout, - USBD_EXCLUSIVE_USE, &sc->sc_bulkout_pipe); - if (err) { - printf("%s: cannot open bulk-out pipe (addr %d)\n", - sc->sc_dev.dv_xname, sc->sc_bulkout); - uscanner_do_close(sc); - return (EIO); - } - } - - sc->sc_bulkin_xfer = usbd_alloc_xfer(sc->sc_udev); - if (sc->sc_bulkin_xfer == NULL) { - uscanner_do_close(sc); - return (ENOMEM); - } - sc->sc_bulkout_xfer = usbd_alloc_xfer(sc->sc_udev); - if (sc->sc_bulkout_xfer == NULL) { - uscanner_do_close(sc); - return (ENOMEM); - } - - return (0); /* success */ -} - -int -uscannerclose(dev_t dev, int flag, int mode, struct proc *p) -{ - struct uscanner_softc *sc; - - sc = uscanner_cd.cd_devs[USCANNERUNIT(dev)]; - - DPRINTFN(5, ("uscannerclose: flag=%d, mode=%d, unit=%d\n", - flag, mode, USCANNERUNIT(dev))); - -#ifdef DIAGNOSTIC - if (!(sc->sc_state & USCANNER_OPEN)) { - printf("uscannerclose: not open\n"); - return (EINVAL); - } -#endif - - uscanner_do_close(sc); - - return (0); -} - -void -uscanner_do_close(struct uscanner_softc *sc) -{ - if (sc->sc_bulkin_xfer) { - usbd_free_xfer(sc->sc_bulkin_xfer); - sc->sc_bulkin_xfer = NULL; - } - if (sc->sc_bulkout_xfer) { - usbd_free_xfer(sc->sc_bulkout_xfer); - sc->sc_bulkout_xfer = NULL; - } - - if (!(sc->sc_dev_flags & USC_KEEP_OPEN)) { - if (sc->sc_bulkin_pipe != NULL) { - usbd_abort_pipe(sc->sc_bulkin_pipe); - usbd_close_pipe(sc->sc_bulkin_pipe); - sc->sc_bulkin_pipe = NULL; - } - if (sc->sc_bulkout_pipe != NULL) { - usbd_abort_pipe(sc->sc_bulkout_pipe); - usbd_close_pipe(sc->sc_bulkout_pipe); - sc->sc_bulkout_pipe = NULL; - } - } - - if (sc->sc_bulkin_buffer) { - free(sc->sc_bulkin_buffer, M_USBDEV); - sc->sc_bulkin_buffer = NULL; - } - if (sc->sc_bulkout_buffer) { - free(sc->sc_bulkout_buffer, M_USBDEV); - sc->sc_bulkout_buffer = NULL; - } - - sc->sc_state &= ~USCANNER_OPEN; -} - -int -uscanner_do_read(struct uscanner_softc *sc, struct uio *uio, int flag) -{ - u_int32_t n, tn; - usbd_status err; - int error = 0; - - DPRINTFN(5, ("%s: uscannerread\n", sc->sc_dev.dv_xname)); - - if (sc->sc_dying) - return (EIO); - - while ((n = min(sc->sc_bulkin_bufferlen, uio->uio_resid)) != 0) { - DPRINTFN(1, ("uscannerread: start transfer %d bytes\n",n)); - tn = n; - - err = usbd_bulk_transfer( - sc->sc_bulkin_xfer, sc->sc_bulkin_pipe, - USBD_SHORT_XFER_OK, USBD_NO_TIMEOUT, - sc->sc_bulkin_buffer, &tn, - "uscnrb"); - if (err) { - if (err == USBD_INTERRUPTED) - error = EINTR; - else if (err == USBD_TIMEOUT) - error = ETIMEDOUT; - else - error = EIO; - break; - } - DPRINTFN(1, ("uscannerread: got %d bytes\n", tn)); - error = uiomove(sc->sc_bulkin_buffer, tn, uio); - if (error || tn < n) - break; - } - - return (error); -} - -int -uscannerread(dev_t dev, struct uio *uio, int flag) -{ - struct uscanner_softc *sc; - int error; - - sc = uscanner_cd.cd_devs[USCANNERUNIT(dev)]; - - sc->sc_refcnt++; - error = uscanner_do_read(sc, uio, flag); - if (--sc->sc_refcnt < 0) - usb_detach_wakeup(&sc->sc_dev); - - return (error); -} - -int -uscanner_do_write(struct uscanner_softc *sc, struct uio *uio, int flag) -{ - u_int32_t n; - int error = 0; - usbd_status err; - - DPRINTFN(5, ("%s: uscanner_do_write\n", sc->sc_dev.dv_xname)); - - if (sc->sc_dying) - return (EIO); - - while ((n = min(sc->sc_bulkout_bufferlen, uio->uio_resid)) != 0) { - error = uiomove(sc->sc_bulkout_buffer, n, uio); - if (error) - break; - DPRINTFN(1, ("uscanner_do_write: transfer %d bytes\n", n)); - err = usbd_bulk_transfer( - sc->sc_bulkout_xfer, sc->sc_bulkout_pipe, - 0, USBD_NO_TIMEOUT, - sc->sc_bulkout_buffer, &n, - "uscnwb"); - if (err) { - if (err == USBD_INTERRUPTED) - error = EINTR; - else - error = EIO; - break; - } - } - - return (error); -} - -int -uscannerwrite(dev_t dev, struct uio *uio, int flag) -{ - struct uscanner_softc *sc; - int error; - - sc = uscanner_cd.cd_devs[USCANNERUNIT(dev)]; - - sc->sc_refcnt++; - error = uscanner_do_write(sc, uio, flag); - if (--sc->sc_refcnt < 0) - usb_detach_wakeup(&sc->sc_dev); - return (error); -} - -int -uscanner_activate(struct device *self, int act) -{ - struct uscanner_softc *sc = (struct uscanner_softc *)self; - - switch (act) { - case DVACT_ACTIVATE: - break; - - case DVACT_DEACTIVATE: - sc->sc_dying = 1; - break; - } - return (0); -} - -int -uscanner_detach(struct device *self, int flags) -{ - struct uscanner_softc *sc = (struct uscanner_softc *)self; - int s; - int maj, mn; - - DPRINTF(("uscanner_detach: sc=%p flags=%d\n", sc, flags)); - - sc->sc_dev_flags = 0; /* make close really close device */ - - /* Abort all pipes. Causes processes waiting for transfer to wake. */ - if (sc->sc_bulkin_pipe != NULL) - usbd_abort_pipe(sc->sc_bulkin_pipe); - if (sc->sc_bulkout_pipe != NULL) - usbd_abort_pipe(sc->sc_bulkout_pipe); - - s = splusb(); - if (--sc->sc_refcnt >= 0) { - /* Wait for processes to go away. */ - usb_detach_wait(&sc->sc_dev); - } - splx(s); - - /* locate the major number */ - for (maj = 0; maj < nchrdev; maj++) - if (cdevsw[maj].d_open == uscanneropen) - break; - - /* 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); - usbd_add_drv_event(USB_EVENT_DRIVER_DETACH, sc->sc_udev, - &sc->sc_dev); - - return (0); -} - -int -uscannerpoll(dev_t dev, int events, struct proc *p) -{ - struct uscanner_softc *sc; - int revents = 0; - - sc = uscanner_cd.cd_devs[USCANNERUNIT(dev)]; - - if (sc->sc_dying) - return (POLLERR); - - /* - * We have no easy way of determining if a read will - * yield any data or a write will happen. - * Pretend they will. - */ - revents |= events & - (POLLIN | POLLRDNORM | POLLOUT | POLLWRNORM); - - return (revents); -} - -int -uscannerioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p) -{ - return (EINVAL); -} - -void filt_uscannerdetach(struct knote *); -int uscannerkqfilter(dev_t, struct knote *); - -void -filt_uscannerdetach(struct knote *kn) -{ - struct uscanner_softc *sc = (void *)kn->kn_hook; - - SLIST_REMOVE(&sc->sc_selq.si_note, kn, knote, kn_selnext); -} - -struct filterops uscanner_seltrue_filtops = - { 1, NULL, filt_uscannerdetach, filt_seltrue }; - -int -uscannerkqfilter(dev_t dev, struct knote *kn) -{ - struct uscanner_softc *sc; - struct klist *klist; - - sc = uscanner_cd.cd_devs[USCANNERUNIT(dev)]; - - if (sc->sc_dying) - return (1); - - switch (kn->kn_filter) { - case EVFILT_READ: - case EVFILT_WRITE: - /* - * We have no easy way of determining if a read will - * yield any data or a write will happen. - * Pretend they will. - */ - klist = &sc->sc_selq.si_note; - kn->kn_fop = &uscanner_seltrue_filtops; - break; - - default: - return (1); - } - - kn->kn_hook = (void *)sc; - - SLIST_INSERT_HEAD(klist, kn, kn_selnext); - - return (0); -} Index: sys/dev/usb/files.usb =================================================================== RCS file: /cvs/src/sys/dev/usb/files.usb,v retrieving revision 1.94 diff -u -p -r1.94 files.usb --- sys/dev/usb/files.usb 5 Nov 2010 16:58:12 -0000 1.94 +++ sys/dev/usb/files.usb 25 Nov 2010 15:22:23 -0000 @@ -288,12 +288,6 @@ device uticom: ucombus attach uticom at uhub file dev/usb/uticom.c uticom -# Scanners -# Generic scanner support -device uscanner -attach uscanner at uhub -file dev/usb/uscanner.c uscanner needs-flag - # Prism3 WI @ USB attach wi at uhub with wi_usb file dev/usb/if_wi_usb.c wi_usb Index: sys/arch/alpha/alpha/conf.c =================================================================== RCS file: /cvs/src/sys/arch/alpha/alpha/conf.c,v retrieving revision 1.65 diff -u -p -r1.65 conf.c --- sys/arch/alpha/alpha/conf.c 19 Nov 2010 20:55:48 -0000 1.65 +++ sys/arch/alpha/alpha/conf.c 25 Nov 2010 15:22:23 -0000 @@ -126,7 +126,6 @@ cdev_decl(nnpfs_dev); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "pf.h" #ifdef USER_PCICONF #include "pci.h" @@ -215,7 +214,7 @@ struct cdevsw cdevsw[] = cdev_disk_init(1,diskmap), /* 63: disk mapper */ cdev_pppx_init(NPPPX,pppx), /* 64: pppx */ cdev_urio_init(NURIO,urio), /* 65: USB Diamond Rio 500 */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 66: USB scanners */ + cdev_notdef(), /* 66: */ }; int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); Index: sys/arch/alpha/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/alpha/conf/GENERIC,v retrieving revision 1.217 diff -u -p -r1.217 GENERIC --- sys/arch/alpha/conf/GENERIC 26 Sep 2010 20:39:08 -0000 1.217 +++ sys/arch/alpha/conf/GENERIC 25 Nov 2010 15:22:23 -0000 @@ -113,7 +113,6 @@ upl* at uhub? # Prolific PL2301/PL2302 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/amd64/amd64/conf.c =================================================================== RCS file: /cvs/src/sys/arch/amd64/amd64/conf.c,v retrieving revision 1.31 diff -u -p -r1.31 conf.c --- sys/arch/amd64/amd64/conf.c 22 Nov 2010 21:10:42 -0000 1.31 +++ sys/arch/amd64/amd64/conf.c 25 Nov 2010 15:22:23 -0000 @@ -165,7 +165,6 @@ cdev_decl(nnpfs_dev); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "cz.h" cdev_decl(cztty); #include "radio.h" @@ -291,7 +290,7 @@ struct cdevsw cdevsw[] = cdev_notdef(), /* 74: ALTQ (deprecated) */ cdev_iop_init(NIOP,iop), /* 75: I2O IOP control interface */ cdev_radio_init(NRADIO, radio), /* 76: generic radio I/O */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 77: USB scanners */ + cdev_notdef(), /* 77: */ cdev_systrace_init(NSYSTRACE,systrace), /* 78: system call tracing */ cdev_bio_init(NBIO,bio), /* 79: ioctl tunnel */ cdev_notdef(), /* 80: gpr? XXX */ Index: sys/arch/amd64/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v retrieving revision 1.307 diff -u -p -r1.307 GENERIC --- sys/arch/amd64/conf/GENERIC 5 Nov 2010 16:58:12 -0000 1.307 +++ sys/arch/amd64/conf/GENERIC 25 Nov 2010 15:22:23 -0000 @@ -224,7 +224,6 @@ mos* at uhub? # MOSCHIP MCS7730/7830 10 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/amd64/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/amd64/conf/RAMDISK,v retrieving revision 1.50 diff -u -p -r1.50 RAMDISK --- sys/arch/amd64/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.50 +++ sys/arch/amd64/conf/RAMDISK 25 Nov 2010 15:22:23 -0000 @@ -106,7 +106,6 @@ wskbd* at ukbd? mux 1 #kue* at uhub? # Kawasaki KL5KUSB101B based Ethernet #upl* at uhub? # Prolific PL2301/PL2302 host-to-host `network' #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver Index: sys/arch/amd64/conf/RAMDISK_CD =================================================================== RCS file: /cvs/src/sys/arch/amd64/conf/RAMDISK_CD,v retrieving revision 1.115 diff -u -p -r1.115 RAMDISK_CD --- sys/arch/amd64/conf/RAMDISK_CD 4 Aug 2010 21:44:41 -0000 1.115 +++ sys/arch/amd64/conf/RAMDISK_CD 25 Nov 2010 15:22:24 -0000 @@ -117,7 +117,6 @@ url* at uhub? # Realtek RTL8150L based wi* at uhub? # WaveLAN IEEE 802.11DS upl* at uhub? # Prolific PL2301/PL2302 host-to-host `network' #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver ural* at uhub? # Ralink RT2500 Index: sys/arch/arm/arm/conf.c =================================================================== RCS file: /cvs/src/sys/arch/arm/arm/conf.c,v retrieving revision 1.27 diff -u -p -r1.27 conf.c --- sys/arch/arm/arm/conf.c 23 Sep 2010 05:02:14 -0000 1.27 +++ sys/arch/arm/arm/conf.c 25 Nov 2010 15:22:24 -0000 @@ -137,7 +137,6 @@ cdev_decl(pci); #include "uhid.h" #include "ulpt.h" #include "urio.h" -#include "uscanner.h" /* * Bluetooth devices @@ -373,7 +372,7 @@ struct cdevsw cdevsw[] = { cdev_lpt_init(NULPT,ulpt), /* 66: USB printer */ cdev_urio_init(NURIO,urio), /* 67: Diamond Rio 500 */ cdev_tty_init(NUCOM,ucom), /* 68: USB tty */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 69: USB scanner */ + cdev_notdef(), /* 69: */ cdev_usbdev_init(NUGEN,ugen), /* 70: USB generic driver */ cdev_disk_init(NRAID,raid), /* 71: RAIDframe disk driver */ cdev_lkm_dummy(), /* 72: reserved */ Index: sys/arch/armish/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/armish/conf/GENERIC,v retrieving revision 1.35 diff -u -p -r1.35 GENERIC --- sys/arch/armish/conf/GENERIC 15 Nov 2010 19:07:34 -0000 1.35 +++ sys/arch/armish/conf/GENERIC 25 Nov 2010 15:22:24 -0000 @@ -144,7 +144,6 @@ udav* at uhub? # Davicom DM9601 based E url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/armish/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/armish/conf/RAMDISK,v retrieving revision 1.16 diff -u -p -r1.16 RAMDISK --- sys/arch/armish/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.16 +++ sys/arch/armish/conf/RAMDISK 25 Nov 2010 15:22:24 -0000 @@ -135,7 +135,6 @@ udav* at uhub? # Davicom DM9601 based E url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #udsbr* at uhub? # D-Link DSB-R100 radio #radio* at udsbr? # USB radio Index: sys/arch/beagle/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/beagle/conf/RAMDISK,v retrieving revision 1.8 diff -u -p -r1.8 RAMDISK --- sys/arch/beagle/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.8 +++ sys/arch/beagle/conf/RAMDISK 25 Nov 2010 15:22:24 -0000 @@ -145,7 +145,6 @@ ommmc0 at ahb? addr 0x4809c000 intr 83 # url* at uhub? # Realtek RTL8150L based adapters # wi* at uhub? # WaveLAN IEEE 802.11DS # urio* at uhub? # Diamond Multimedia Rio 500 -# uscanner* at uhub? # USB Scanners # #uyap* at uhub? # y...@p firmware loader # udsbr* at uhub? # D-Link DSB-R100 radio # radio* at udsbr? # USB radio Index: sys/arch/beagle/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/beagle/conf/GENERIC,v retrieving revision 1.3 diff -u -p -r1.3 GENERIC --- sys/arch/beagle/conf/GENERIC 3 Jul 2010 03:59:16 -0000 1.3 +++ sys/arch/beagle/conf/GENERIC 25 Nov 2010 15:22:24 -0000 @@ -140,7 +140,6 @@ udav* at uhub? # Davicom DM9601 based url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/gumstix/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/gumstix/conf/GENERIC,v retrieving revision 1.9 diff -u -p -r1.9 GENERIC --- sys/arch/gumstix/conf/GENERIC 23 Sep 2010 16:21:46 -0000 1.9 +++ sys/arch/gumstix/conf/GENERIC 25 Nov 2010 15:22:24 -0000 @@ -126,7 +126,6 @@ run* at uhub? # Ralink RT2700U/RT2800U url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/gumstix/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/gumstix/conf/RAMDISK,v retrieving revision 1.3 diff -u -p -r1.3 RAMDISK --- sys/arch/gumstix/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.3 +++ sys/arch/gumstix/conf/RAMDISK 25 Nov 2010 15:22:24 -0000 @@ -88,7 +88,6 @@ pxaost0 at pxaip? addr 0x40a00000 size #url* at uhub? # Realtek RTL8150L based adapters #wi* at uhub? # WaveLAN IEEE 802.11DS #upl* at uhub? # Prolific PL2301/PL2302 host-to-host -#uscanner* at uhub? # USB Scanner driver #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver #umass* at uhub? # USB Mass Storage devices Index: sys/arch/hppa/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/hppa/conf/GENERIC,v retrieving revision 1.139 diff -u -p -r1.139 GENERIC --- sys/arch/hppa/conf/GENERIC 23 Sep 2010 16:21:46 -0000 1.139 +++ sys/arch/hppa/conf/GENERIC 25 Nov 2010 15:22:24 -0000 @@ -153,7 +153,6 @@ udav* at uhub? # Davicom DM9601 based E upl* at uhub? # Prolific PL2301/PL2302 host-to-host `network' wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/hppa/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/hppa/conf/RAMDISK,v retrieving revision 1.90 diff -u -p -r1.90 RAMDISK --- sys/arch/hppa/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.90 +++ sys/arch/hppa/conf/RAMDISK 25 Nov 2010 15:22:24 -0000 @@ -153,7 +153,6 @@ udav* at uhub? # Davicom DM9601 based E upl* at uhub? # Prolific PL2301/PL2302 host-to-host `network' wi* at uhub? # WaveLAN IEEE 802.11DS #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #udsbr* at uhub? # D-Link DSB-R100 radio #radio* at udsbr? # USB radio Index: sys/arch/hppa/hppa/conf.c =================================================================== RCS file: /cvs/src/sys/arch/hppa/hppa/conf.c,v retrieving revision 1.52 diff -u -p -r1.52 conf.c --- sys/arch/hppa/hppa/conf.c 23 Sep 2010 05:02:14 -0000 1.52 +++ sys/arch/hppa/hppa/conf.c 25 Nov 2010 15:22:24 -0000 @@ -122,7 +122,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" @@ -183,7 +182,7 @@ struct cdevsw cdevsw[] = cdev_ulpt_init(NULPT,ulpt), /* 43: USB printers */ cdev_urio_init(NURIO,urio), /* 44: USB Diamond Rio 500 */ cdev_tty_init(NUCOM,ucom), /* 45: USB tty */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 46: USB scanners */ + cdev_notdef(), /* 46: */ cdev_hotplug_init(NHOTPLUG,hotplug), /* 47: devices hot plugging */ cdev_lkm_dummy(), /* 48: */ cdev_lkm_dummy(), /* 49: */ Index: sys/arch/hppa64/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/hppa64/conf/GENERIC,v retrieving revision 1.22 diff -u -p -r1.22 GENERIC --- sys/arch/hppa64/conf/GENERIC 30 Aug 2010 18:56:18 -0000 1.22 +++ sys/arch/hppa64/conf/GENERIC 25 Nov 2010 15:22:24 -0000 @@ -106,7 +106,6 @@ pci* at ppb? #url* at uhub? # Realtek RTL8150L based adapters #wi* at uhub? # WaveLAN IEEE 802.11DS #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #udsbr* at uhub? # D-Link DSB-R100 radio #radio* at udsbr? # USB radio Index: sys/arch/hppa64/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/hppa64/conf/RAMDISK,v retrieving revision 1.10 diff -u -p -r1.10 RAMDISK --- sys/arch/hppa64/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.10 +++ sys/arch/hppa64/conf/RAMDISK 25 Nov 2010 15:22:24 -0000 @@ -106,7 +106,6 @@ pcmcia* at cardslot? #url* at uhub? # Realtek RTL8150L based adapters #wi* at uhub? # WaveLAN IEEE 802.11DS #urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #udsbr* at uhub? # D-Link DSB-R100 radio #radio* at udsbr? # USB radio Index: sys/arch/hppa64/hppa64/conf.c =================================================================== RCS file: /cvs/src/sys/arch/hppa64/hppa64/conf.c,v retrieving revision 1.17 diff -u -p -r1.17 conf.c --- sys/arch/hppa64/hppa64/conf.c 19 Nov 2010 20:55:48 -0000 1.17 +++ sys/arch/hppa64/hppa64/conf.c 25 Nov 2010 15:22:24 -0000 @@ -123,7 +123,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" @@ -185,7 +184,7 @@ struct cdevsw cdevsw[] = cdev_ulpt_init(NULPT,ulpt), /* 43: USB printers */ cdev_urio_init(NURIO,urio), /* 44: USB Diamond Rio 500 */ cdev_tty_init(NUCOM,ucom), /* 45: USB tty */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 46: USB scanners */ + cdev_notdef(), /* 46: */ cdev_hotplug_init(NHOTPLUG,hotplug), /* 47: devices hot plugging */ cdev_lkm_dummy(), /* 48: */ cdev_lkm_dummy(), /* 49: */ Index: sys/arch/i386/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/i386/conf/GENERIC,v retrieving revision 1.701 diff -u -p -r1.701 GENERIC --- sys/arch/i386/conf/GENERIC 5 Nov 2010 16:58:12 -0000 1.701 +++ sys/arch/i386/conf/GENERIC 25 Nov 2010 15:22:25 -0000 @@ -282,7 +282,6 @@ mos* at uhub? # MOSCHIP MCS7730/7830 10 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/i386/conf/RAMDISK_CD =================================================================== RCS file: /cvs/src/sys/arch/i386/conf/RAMDISK_CD,v retrieving revision 1.181 diff -u -p -r1.181 RAMDISK_CD --- sys/arch/i386/conf/RAMDISK_CD 19 Oct 2010 20:23:53 -0000 1.181 +++ sys/arch/i386/conf/RAMDISK_CD 25 Nov 2010 15:22:25 -0000 @@ -139,7 +139,6 @@ udav* at uhub? # Davicom DM9601 based E mos* at uhub? # MOSCHIP MCS7730/7830 10/100 Ethernet url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver ural* at uhub? # Ralink RT2500 Index: sys/arch/i386/i386/conf.c =================================================================== RCS file: /cvs/src/sys/arch/i386/i386/conf.c,v retrieving revision 1.135 diff -u -p -r1.135 conf.c --- sys/arch/i386/i386/conf.c 22 Sep 2010 13:03:47 -0000 1.135 +++ sys/arch/i386/i386/conf.c 25 Nov 2010 15:22:25 -0000 @@ -166,7 +166,6 @@ cdev_decl(nnpfs_dev); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "cz.h" cdev_decl(cztty); #include "radio.h" @@ -294,7 +293,7 @@ struct cdevsw cdevsw[] = cdev_notdef(), /* 74: ALTQ (deprecated) */ cdev_iop_init(NIOP,iop), /* 75: I2O IOP control interface */ cdev_radio_init(NRADIO, radio), /* 76: generic radio I/O */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 77: USB scanners */ + cdev_notdef(), /* 77 */ cdev_systrace_init(NSYSTRACE,systrace), /* 78: system call tracing */ cdev_bio_init(NBIO,bio), /* 79: ioctl tunnel */ cdev_ch_init(NGPR,gpr), /* 80: GPR400 SmartCard reader */ Index: sys/arch/landisk/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/landisk/conf/GENERIC,v retrieving revision 1.29 diff -u -p -r1.29 GENERIC --- sys/arch/landisk/conf/GENERIC 19 Nov 2010 20:52:41 -0000 1.29 +++ sys/arch/landisk/conf/GENERIC 25 Nov 2010 15:22:25 -0000 @@ -142,7 +142,6 @@ udav* at uhub? # Davicom DM9601 based E url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -#uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/landisk/landisk/conf.c =================================================================== RCS file: /cvs/src/sys/arch/landisk/landisk/conf.c,v retrieving revision 1.18 diff -u -p -r1.18 conf.c --- sys/arch/landisk/landisk/conf.c 19 Nov 2010 20:55:48 -0000 1.18 +++ sys/arch/landisk/landisk/conf.c 25 Nov 2010 15:22:25 -0000 @@ -120,7 +120,6 @@ cdev_decl(pci); #include "uhid.h" #include "ulpt.h" #include "urio.h" -#include "uscanner.h" /* * Bluetooth devices @@ -337,7 +336,7 @@ struct cdevsw cdevsw[] = { cdev_lpt_init(NULPT,ulpt), /* 66: USB printer */ cdev_urio_init(NURIO,urio), /* 67: Diamond Rio 500 */ cdev_tty_init(NUCOM,ucom), /* 68: USB tty */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 69: USB scanner */ + cdev_notdef(), /* 69: */ cdev_usbdev_init(NUGEN,ugen), /* 70: USB generic driver */ cdev_disk_init(NRAID,raid), /* 71: RAIDframe disk driver */ cdev_lkm_dummy(), /* 72: reserved */ Index: sys/arch/loongson/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/loongson/conf/GENERIC,v retrieving revision 1.28 diff -u -p -r1.28 GENERIC --- sys/arch/loongson/conf/GENERIC 19 Nov 2010 20:53:44 -0000 1.28 +++ sys/arch/loongson/conf/GENERIC 25 Nov 2010 15:22:25 -0000 @@ -126,7 +126,6 @@ atapiscsi* at umass? scsibus* at atapiscsi? scsibus* at umass? urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners uhidev* at uhub? # Human Interface Devices ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 Index: sys/arch/loongson/loongson/conf.c =================================================================== RCS file: /cvs/src/sys/arch/loongson/loongson/conf.c,v retrieving revision 1.11 diff -u -p -r1.11 conf.c --- sys/arch/loongson/loongson/conf.c 22 Nov 2010 21:10:45 -0000 1.11 +++ sys/arch/loongson/loongson/conf.c 25 Nov 2010 15:22:25 -0000 @@ -130,7 +130,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" #include "vscsi.h" @@ -218,7 +217,7 @@ struct cdevsw cdevsw[] = cdev_vscsi_init(NVSCSI,vscsi), /* 69: vscsi */ cdev_disk_init(1,diskmap), /* 70: disk mapper */ cdev_pppx_init(NPPPX,pppx), /* 71: pppx */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 72: USB scanners */ + cdev_notdef, /* 72: */ }; int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); Index: sys/arch/macppc/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/macppc/conf/GENERIC,v retrieving revision 1.202 diff -u -p -r1.202 GENERIC --- sys/arch/macppc/conf/GENERIC 15 Nov 2010 19:07:34 -0000 1.202 +++ sys/arch/macppc/conf/GENERIC 25 Nov 2010 15:22:25 -0000 @@ -283,7 +283,6 @@ mos* at uhub? # MOSCHIP MCS7730/7830 10 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/macppc/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/macppc/conf/RAMDISK,v retrieving revision 1.90 diff -u -p -r1.90 RAMDISK --- sys/arch/macppc/conf/RAMDISK 3 Jul 2010 03:59:16 -0000 1.90 +++ sys/arch/macppc/conf/RAMDISK 25 Nov 2010 15:22:26 -0000 @@ -198,7 +198,6 @@ rum* at uhub? # Ralink RT2501USB/RT260 zyd* at uhub? # Zydas ZD1211 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS -#uscanner* at uhub? # USB Scanner driver #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver umass* at uhub? # USB Mass Storage devices Index: sys/arch/macppc/macppc/conf.c =================================================================== RCS file: /cvs/src/sys/arch/macppc/macppc/conf.c,v retrieving revision 1.43 diff -u -p -r1.43 conf.c --- sys/arch/macppc/macppc/conf.c 23 Sep 2010 05:02:14 -0000 1.43 +++ sys/arch/macppc/macppc/conf.c 25 Nov 2010 15:22:26 -0000 @@ -115,7 +115,6 @@ cdev_decl(nnpfs_dev); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "inet.h" @@ -231,7 +230,7 @@ struct cdevsw cdevsw[] = { #endif cdev_notdef(), /* 72: ALTQ (deprecated) */ cdev_iop_init(NIOP,iop), /* 73: I2O IOP control interface */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 74: usb scanner */ + cdev_notdef(), /* 74 */ cdev_bktr_init(NBKTR,bktr), /* 75: Bt848 video capture device */ cdev_radio_init(NRADIO, radio), /* 76: generic radio I/O */ cdev_ptm_init(NPTY,ptm), /* 77: pseudo-tty ptm device */ Index: sys/arch/octeon/octeon/conf.c =================================================================== RCS file: /cvs/src/sys/arch/octeon/octeon/conf.c,v retrieving revision 1.5 diff -u -p -r1.5 conf.c --- sys/arch/octeon/octeon/conf.c 22 Nov 2010 21:10:45 -0000 1.5 +++ sys/arch/octeon/octeon/conf.c 25 Nov 2010 15:22:26 -0000 @@ -137,7 +137,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" #include "vscsi.h" @@ -229,7 +228,7 @@ struct cdevsw cdevsw[] = cdev_vscsi_init(NVSCSI,vscsi), /* 69: vscsi */ cdev_disk_init(1,diskmap), /* 70: disk mapper */ cdev_pppx_init(NPPPX,pppx), /* 71: pppx */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 72: USB scanners */ + cdev_notdef(), /* 72: */ }; int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); Index: sys/arch/palm/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/palm/conf/GENERIC,v retrieving revision 1.8 diff -u -p -r1.8 GENERIC --- sys/arch/palm/conf/GENERIC 23 Sep 2010 16:21:46 -0000 1.8 +++ sys/arch/palm/conf/GENERIC 25 Nov 2010 15:22:26 -0000 @@ -114,7 +114,6 @@ zyd* at uhub? # Zydas ZD1211 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/palm/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/palm/conf/RAMDISK,v retrieving revision 1.7 diff -u -p -r1.7 RAMDISK --- sys/arch/palm/conf/RAMDISK 3 Jul 2010 03:59:17 -0000 1.7 +++ sys/arch/palm/conf/RAMDISK 25 Nov 2010 15:22:26 -0000 @@ -79,7 +79,6 @@ ural* at uhub? # Ralink RT2500 #url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS upl* at uhub? # Prolific PL2301/PL2302 host-to-host -#uscanner* at uhub? # USB Scanner driver #uyap* at uhub? # y...@p firmware loader ugen* at uhub? # USB Generic driver umass* at uhub? # USB Mass Storage devices Index: sys/arch/sgi/conf/GENERIC-IP30 =================================================================== RCS file: /cvs/src/sys/arch/sgi/conf/GENERIC-IP30,v retrieving revision 1.32 diff -u -p -r1.32 GENERIC-IP30 --- sys/arch/sgi/conf/GENERIC-IP30 19 Nov 2010 20:54:12 -0000 1.32 +++ sys/arch/sgi/conf/GENERIC-IP30 25 Nov 2010 15:22:26 -0000 @@ -107,7 +107,6 @@ atapiscsi* at umass? scsibus* at atapiscsi? scsibus* at umass? urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners uhidev* at uhub? # Human Interface Devices ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 Index: sys/arch/sgi/conf/GENERIC-IP27 =================================================================== RCS file: /cvs/src/sys/arch/sgi/conf/GENERIC-IP27,v retrieving revision 1.38 diff -u -p -r1.38 GENERIC-IP27 --- sys/arch/sgi/conf/GENERIC-IP27 19 Nov 2010 20:54:12 -0000 1.38 +++ sys/arch/sgi/conf/GENERIC-IP27 25 Nov 2010 15:22:26 -0000 @@ -115,7 +115,6 @@ atapiscsi* at umass? scsibus* at atapiscsi? scsibus* at umass? urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners uhidev* at uhub? # Human Interface Devices ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 Index: sys/arch/sgi/conf/GENERIC-IP32 =================================================================== RCS file: /cvs/src/sys/arch/sgi/conf/GENERIC-IP32,v retrieving revision 1.23 diff -u -p -r1.23 GENERIC-IP32 --- sys/arch/sgi/conf/GENERIC-IP32 19 Nov 2010 20:54:12 -0000 1.23 +++ sys/arch/sgi/conf/GENERIC-IP32 25 Nov 2010 15:22:26 -0000 @@ -99,7 +99,6 @@ atapiscsi* at umass? scsibus* at atapiscsi? scsibus* at umass? urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners uhidev* at uhub? # Human Interface Devices ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 Index: sys/arch/sgi/sgi/conf.c =================================================================== RCS file: /cvs/src/sys/arch/sgi/sgi/conf.c,v retrieving revision 1.27 diff -u -p -r1.27 conf.c --- sys/arch/sgi/sgi/conf.c 22 Nov 2010 21:10:45 -0000 1.27 +++ sys/arch/sgi/sgi/conf.c 25 Nov 2010 15:22:26 -0000 @@ -129,7 +129,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "vscsi.h" #include "pppx.h" @@ -216,7 +215,7 @@ struct cdevsw cdevsw[] = cdev_disk_init(1,diskmap), /* 69: disk mapper */ cdev_pppx_init(NPPPX,pppx), /* 70: pppx */ cdev_notdef(), /* 71: */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 72: USB scanners */ + cdev_notdef(), /* 72: */ }; int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); Index: sys/arch/socppc/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/socppc/conf/GENERIC,v retrieving revision 1.17 diff -u -p -r1.17 GENERIC --- sys/arch/socppc/conf/GENERIC 19 Nov 2010 20:54:52 -0000 1.17 +++ sys/arch/socppc/conf/GENERIC 25 Nov 2010 15:22:26 -0000 @@ -79,7 +79,6 @@ run* at uhub? # Ralink RT2700U/RT2800U/ urtwn* at uhub? # Realtek RTL8188CU/RTL8192CU zyd* at uhub? # Zydas ZD1211 urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners ugen* at uhub? # USB Generic driver uthum* at uhidev? # TEMPerHUM sensor utwitch* at uhidev? # YUREX BBU sensor Index: sys/arch/socppc/socppc/conf.c =================================================================== RCS file: /cvs/src/sys/arch/socppc/socppc/conf.c,v retrieving revision 1.12 diff -u -p -r1.12 conf.c --- sys/arch/socppc/socppc/conf.c 19 Nov 2010 20:55:48 -0000 1.12 +++ sys/arch/socppc/socppc/conf.c 25 Nov 2010 15:22:26 -0000 @@ -113,7 +113,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" #include "vscsi.h" @@ -201,7 +200,7 @@ struct cdevsw cdevsw[] = { #endif cdev_notdef(), /* 72 */ cdev_notdef(), /* 73 */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 74: usb scanner */ + cdev_notdef(), /* 74 */ cdev_notdef(), /* 75 */ cdev_notdef(), /* 76 */ cdev_ptm_init(NPTY,ptm), /* 77: pseudo-tty ptm device */ Index: sys/arch/sparc64/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/sparc64/conf/GENERIC,v retrieving revision 1.259 diff -u -p -r1.259 GENERIC --- sys/arch/sparc64/conf/GENERIC 6 Nov 2010 12:24:28 -0000 1.259 +++ sys/arch/sparc64/conf/GENERIC 25 Nov 2010 15:22:26 -0000 @@ -233,7 +233,6 @@ zyd* at uhub? # Zydas ZD1211 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/sparc64/sparc64/conf.c =================================================================== RCS file: /cvs/src/sys/arch/sparc64/sparc64/conf.c,v retrieving revision 1.58 diff -u -p -r1.58 conf.c --- sys/arch/sparc64/sparc64/conf.c 8 Oct 2010 18:21:34 -0000 1.58 +++ sys/arch/sparc64/sparc64/conf.c 25 Nov 2010 15:22:27 -0000 @@ -104,7 +104,6 @@ cdev_decl(pci); #include "ulpt.h" #include "urio.h" #include "ucom.h" -#include "uscanner.h" #include "bthub.h" @@ -261,7 +260,7 @@ struct cdevsw cdevsw[] = cdev_ulpt_init(NULPT,ulpt), /* 93: USB printers */ cdev_urio_init(NURIO,urio), /* 94: USB Diamond Rio 500 */ cdev_tty_init(NUCOM,ucom), /* 95: USB tty */ - cdev_usbdev_init(NUSCANNER,uscanner), /* 96: USB scanners */ + cdev_notdef(), /* 96 */ cdev_notdef(), /* 97 */ cdev_notdef(), /* 98 */ cdev_notdef(), /* 99 */ Index: sys/arch/zaurus/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/zaurus/conf/GENERIC,v retrieving revision 1.80 diff -u -p -r1.80 GENERIC --- sys/arch/zaurus/conf/GENERIC 24 Sep 2010 18:26:49 -0000 1.80 +++ sys/arch/zaurus/conf/GENERIC 25 Nov 2010 15:22:27 -0000 @@ -127,7 +127,6 @@ zyd* at uhub? # Zydas ZD1211 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS urio* at uhub? # Diamond Multimedia Rio 500 -uscanner* at uhub? # USB Scanners #uyap* at uhub? # y...@p firmware loader udsbr* at uhub? # D-Link DSB-R100 radio radio* at udsbr? # USB radio Index: sys/arch/zaurus/conf/RAMDISK =================================================================== RCS file: /cvs/src/sys/arch/zaurus/conf/RAMDISK,v retrieving revision 1.41 diff -u -p -r1.41 RAMDISK --- sys/arch/zaurus/conf/RAMDISK 3 Jul 2010 03:59:17 -0000 1.41 +++ sys/arch/zaurus/conf/RAMDISK 25 Nov 2010 15:22:27 -0000 @@ -89,7 +89,6 @@ ural* at uhub? # Ralink RT2500 url* at uhub? # Realtek RTL8150L based adapters wi* at uhub? # WaveLAN IEEE 802.11DS upl* at uhub? # Prolific PL2301/PL2302 host-to-host -#uscanner* at uhub? # USB Scanner driver #uyap* at uhub? # y...@p firmware loader #ugen* at uhub? # USB Generic driver umass* at uhub? # USB Mass Storage devices Index: share/man/man4/uscanner.4 =================================================================== RCS file: share/man/man4/uscanner.4 diff -N share/man/man4/uscanner.4 --- share/man/man4/uscanner.4 26 Jun 2008 05:42:07 -0000 1.12 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,132 +0,0 @@ -.\" $OpenBSD: uscanner.4,v 1.12 2008/06/26 05:42:07 ray Exp $ -.\" $NetBSD: uscanner.4,v 1.4 2000/10/13 21:05:18 augustss Exp $ -.\" -.\" Copyright (c) 2000 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" This code is derived from software contributed to The NetBSD Foundation -.\" by Lennart Augustsson. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS -.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS -.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -.\" POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd $Mdocdate: June 26 2008 $ -.Dt USCANNER 4 -.Os -.Sh NAME -.Nm uscanner -.Nd USB scanner support -.Sh SYNOPSIS -.Cd "uscanner* at uhub?" -.Sh DESCRIPTION -The -.Nm -driver provides minimal support for USB scanners. -The driver recognizes a number of USB scanners, but to -actually scan anything there needs to be software that knows -about the particular scanner. -The SANE package provides support for some scanners. -.Pp -For multifunction USB devices -such as scanner/printer/card readers, -this driver only attaches to the USB interface that controls the scanner. -For the other USB interfaces -separate drivers are needed, -such as -.Xr ulpt 4 -and -.Xr umass 4 . -.Sh HARDWARE -The -.Nm -driver works with the following scanners: -.Pp -.Bl -bullet -compact -offset indent -.It -Acer: Acerscan 320U, 620U, 640U, C310U -.It -Agfa: SnapScan 1212U, 1236U, e20, e25, e26, e40, e50, e52, Touch -.It -Avision: 1200U -.It -Canon: CanoScan N656U, N670U, N1220U, N1240U -.It -Epson: GT-7000, GT-9700F -.It -Epson: Perfection 610U, 636U, 640U, 12xxU, 12xxU Photo, 16xxU, -16xxU Photo, 1650, 2400 -.It -Epson: Stylus DX38xx DX40xx DX50xx DX60xx (multifunction) -.It -HP: Photosmart S20 -.It -HP: ScanJet 2200C, 3300C, 3400cse, 4100C, 4200C, 4300C, 5200C, 5300C, -6200C, 6300C -.It -Kye: ColorPage Vivid-Pro -.It -Microtek: ScanMaker X6USB -.It -Mustek: 600, 600 CU, 1200, 1200 CU, 1200 UB, 1200 Plus, 1200 CU Plus, -BearPaw 1200F -.It -National: BearPaw 1200, 2400 -.It -Primax: Colorado 600u, 9600, 19200, 1200u -.It -Primax: G2-200, G2-300, G2-600, G2E-300, G2E-600 -.It -Primax: ReadyScan 636i -.It -Primax: Visioneer 6200 -.It -Ultima: 1200 UB Plus -.It -Umax: Astra 1220U, 1236U, 2000U, 2200U, 3400 -.It -Visioneer: OneTouch 5300, 6100, 6200, 7600, 8100, 8600, 3000 -.El -.Pp -Many other scanners are recognized, but there is no software support -for them yet. -.Sh SEE ALSO -.Xr intro 4 , -.Xr uhub 4 , -.Xr usb 4 -.Pp -.Pa http://www.buzzard.org.uk/jonathan/scanners-usb.html -.Sh HISTORY -The -.Nm -driver appeared in -.Nx 1.6 . -.Ox -support was first added in -.Ox 2.9 . -.Sh BUGS -This driver should not really exist. -The scanners it recognizes can be accessed through the -.Xr ugen 4 -driver instead. -A proper scanner driver would provide a uniform interface to scanners -instead of exposing the innards of the scanner. -The reason the driver exists is to have something that is compatible -with the Linux driver. Index: share/man/man4/usb.4 =================================================================== RCS file: /cvs/src/share/man/man4/usb.4,v retrieving revision 1.123 diff -u -p -r1.123 usb.4 --- share/man/man4/usb.4 5 Nov 2010 17:01:59 -0000 1.123 +++ share/man/man4/usb.4 25 Nov 2010 15:22:27 -0000 @@ -264,8 +264,6 @@ USB generic device support Maxim/Dallas DS2490 USB 1-Wire adapter .It Xr upl 4 Prolific based host-to-host adapters -.It Xr uscanner 4 -USB scanner support .It Xr uts 4 USB touchscreen support .It Xr uyap 4 -- Mattieu Baptiste "/earth is 102% full ... please delete anyone you can."