Handle vendor/product lookup with a common routine.

This commit is contained in:
augustss 2001-12-03 01:47:12 +00:00
parent 078a8c0cc3
commit 02aa2a59bc
9 changed files with 93 additions and 140 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_aue.c,v 1.70 2001/11/30 13:41:00 augustss Exp $ */
/* $NetBSD: if_aue.c,v 1.71 2001/12/03 01:47:12 augustss Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_aue.c,v 1.70 2001/11/30 13:41:00 augustss Exp $");
__KERNEL_RCSID(0, "$NetBSD: if_aue.c,v 1.71 2001/12/03 01:47:12 augustss Exp $");
#if defined(__NetBSD__)
#include "opt_inet.h"
@ -161,8 +161,7 @@ int auedebug = 0;
* Various supported device vendors/products.
*/
struct aue_type {
u_int16_t aue_vid;
u_int16_t aue_did;
struct usb_devno aue_dev;
u_int16_t aue_flags;
#define LSYS 0x0001 /* use Linksys reset */
#define PNA 0x0002 /* has Home PNA */
@ -170,60 +169,59 @@ struct aue_type {
};
Static const struct aue_type aue_devs[] = {
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX1, PNA|PII },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX2, PII },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX3, 0 },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX4, PNA },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX5, PNA },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX6, PII },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX7, PII },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX8, PII },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX9, PNA },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX10, 0 },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_DSB650TX_PNA, 0 },
{ USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_USB320_EC, 0 },
{ USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUS, PNA },
{ USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII, PII },
{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USB100, 0 },
{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBLP100, PNA },
{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBEL100, 0 },
{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBE100, PII },
{ USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TX, 0 },
{ USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXS,PII },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX4, LSYS|PII },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX1, LSYS },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX, LSYS },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX_PNA, PNA },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX3, LSYS|PII },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX2, LSYS|PII },
{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650, 0 },
{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX0, 0 },
{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX1, 0 },
{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX2, 0 },
{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX3, PII },
{ USB_VENDOR_ELSA, USB_PRODUCT_ELSA_USB2ETHERNET, 0 },
{ USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTX, 0 },
{ USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTXS, PII },
{ USB_VENDOR_KINGSTON, USB_PRODUCT_KINGSTON_KNU101TX, 0 },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX1, LSYS|PII },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10T, LSYS },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100TX, LSYS },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100H1, LSYS|PNA },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TA, LSYS },
{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX2, LSYS|PII },
{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX1, 0 },
{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX5, 0 },
{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUA2TX5, PII },
{ USB_VENDOR_SMARTBRIDGES, USB_PRODUCT_SMARTBRIDGES_SMARTNIC,PII },
{ USB_VENDOR_SMC, USB_PRODUCT_SMC_2202USB, 0 },
{ USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB100, 0 },
{ 0, 0, 0 }
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX1}, PNA|PII },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX2}, PII },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX3}, 0 },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX4}, PNA },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX5}, PNA },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX6}, PII },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX7}, PII },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX8}, PII },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX9}, PNA },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX10}, 0 },
{{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_DSB650TX_PNA}, 0 },
{{ USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_USB320_EC}, 0 },
{{ USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUS}, PNA },
{{ USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII}, PII },
{{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USB100}, 0 },
{{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBLP100}, PNA },
{{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBEL100}, 0 },
{{ USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBE100}, PII },
{{ USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TX}, 0 },
{{ USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXS},PII },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX4}, LSYS|PII },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX1}, LSYS },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX}, LSYS },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX_PNA}, PNA },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX3}, LSYS|PII },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX2}, LSYS|PII },
{{ USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650}, 0 },
{{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX0}, 0 },
{{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX1}, 0 },
{{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX2}, 0 },
{{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX3}, PII },
{{ USB_VENDOR_ELSA, USB_PRODUCT_ELSA_USB2ETHERNET}, 0 },
{{ USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTX}, 0 },
{{ USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTXS}, PII },
{{ USB_VENDOR_KINGSTON, USB_PRODUCT_KINGSTON_KNU101TX}, 0 },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX1}, LSYS|PII },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10T}, LSYS },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100TX}, LSYS },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100H1}, LSYS|PNA },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TA}, LSYS },
{{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX2}, LSYS|PII },
{{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX1}, 0 },
{{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX5}, 0 },
{{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUA2TX5}, PII },
{{ USB_VENDOR_SMARTBRIDGES, USB_PRODUCT_SMARTBRIDGES_SMARTNIC},PII },
{{ USB_VENDOR_SMC, USB_PRODUCT_SMC_2202USB}, 0 },
{{ USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB100}, 0 },
};
#define aue_lookup(v, p) ((struct aue_type *)usb_lookup(aue_devs, v, p))
USB_DECLARE_DRIVER(aue);
Static void aue_reset_pegasus_II(struct aue_softc *sc);
Static const struct aue_type *aue_lookup(u_int16_t vendor, u_int16_t product);
Static int aue_tx_list_init(struct aue_softc *);
Static int aue_rx_list_init(struct aue_softc *);
Static int aue_newbuf(struct aue_softc *, struct aue_chain *, struct mbuf *);
@ -692,17 +690,6 @@ aue_reset(struct aue_softc *sc)
delay(10000); /* XXX */
}
Static const struct aue_type *
aue_lookup(u_int16_t vendor, u_int16_t product)
{
const struct aue_type *t;
for (t = aue_devs; t->aue_vid != 0; t++)
if (vendor == t->aue_vid && product == t->aue_did)
return (t);
return (NULL);
}
/*
* Probe for a Pegasus chip.
*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_cue.c,v 1.36 2001/11/13 06:24:53 lukem Exp $ */
/* $NetBSD: if_cue.c,v 1.37 2001/12/03 01:47:12 augustss Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_cue.c,v 1.36 2001/11/13 06:24:53 lukem Exp $");
__KERNEL_RCSID(0, "$NetBSD: if_cue.c,v 1.37 2001/12/03 01:47:12 augustss Exp $");
#if defined(__NetBSD__)
#include "opt_inet.h"
@ -137,13 +137,13 @@ int cuedebug = 0;
/*
* Various supported device vendors/products.
*/
Static struct cue_type cue_devs[] = {
Static struct usb_devno cue_devs[] = {
{ USB_VENDOR_CATC, USB_PRODUCT_CATC_NETMATE },
{ USB_VENDOR_CATC, USB_PRODUCT_CATC_NETMATE2 },
{ USB_VENDOR_SMARTBRIDGES, USB_PRODUCT_SMARTBRIDGES_SMARTLINK },
/* Belkin F5U111 adapter covered by NETMATE entry */
{ 0, 0 }
};
#define cue_lookup(v, p) ((struct cue_type *)usb_lookup(cue_devs, v, p))
USB_DECLARE_DRIVER(cue);
@ -469,16 +469,12 @@ cue_reset(struct cue_softc *sc)
USB_MATCH(cue)
{
USB_MATCH_START(cue, uaa);
struct cue_type *t;
if (uaa->iface != NULL)
return (UMATCH_NONE);
for (t = cue_devs; t->cue_vid != 0; t++)
if (uaa->vendor == t->cue_vid && uaa->product == t->cue_did)
return (UMATCH_VENDOR_PRODUCT);
return (UMATCH_NONE);
return (cue_lookup(uaa->vendor, uaa->product) != NULL ?
UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_kue.c,v 1.44 2001/11/13 06:24:54 lukem Exp $ */
/* $NetBSD: if_kue.c,v 1.45 2001/12/03 01:47:12 augustss Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_kue.c,v 1.44 2001/11/13 06:24:54 lukem Exp $");
__KERNEL_RCSID(0, "$NetBSD: if_kue.c,v 1.45 2001/12/03 01:47:12 augustss Exp $");
#if defined(__NetBSD__)
#include "opt_inet.h"
@ -148,7 +148,7 @@ int kuedebug = 0;
/*
* Various supported device vendors/products.
*/
Static const struct kue_type kue_devs[] = {
Static const struct usb_devno kue_devs[] = {
{ USB_VENDOR_3COM, USB_PRODUCT_3COM_3C19250 },
{ USB_VENDOR_3COM, USB_PRODUCT_3COM_3C460 },
{ USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_URE450 },
@ -180,8 +180,8 @@ Static const struct kue_type kue_devs[] = {
{ USB_VENDOR_PORTSMITH, USB_PRODUCT_PORTSMITH_EEA },
{ USB_VENDOR_SHARK, USB_PRODUCT_SHARK_PA },
{ USB_VENDOR_SMC, USB_PRODUCT_SMC_2102USB },
{ 0, 0 }
};
#define kue_lookup(v, p) ((struct kue_type *)usb_lookup(kue_devs, v, p))
USB_DECLARE_DRIVER(kue);
@ -403,18 +403,14 @@ kue_reset(struct kue_softc *sc)
USB_MATCH(kue)
{
USB_MATCH_START(kue, uaa);
const struct kue_type *t;
DPRINTFN(25,("kue_match: enter\n"));
if (uaa->iface != NULL)
return (UMATCH_NONE);
for (t = kue_devs; t->kue_vid != 0; t++)
if (uaa->vendor == t->kue_vid && uaa->product == t->kue_did)
return (UMATCH_VENDOR_PRODUCT);
return (UMATCH_NONE);
return (kue_lookup(uaa->vendor, uaa->product) != NULL ?
UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: umct.c,v 1.3 2001/11/13 06:24:56 lukem Exp $ */
/* $NetBSD: umct.c,v 1.4 2001/12/03 01:47:12 augustss Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
* All rights reserved.
@ -43,7 +43,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: umct.c,v 1.3 2001/11/13 06:24:56 lukem Exp $");
__KERNEL_RCSID(0, "$NetBSD: umct.c,v 1.4 2001/12/03 01:47:12 augustss Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -142,37 +142,27 @@ struct ucom_methods umct_methods = {
NULL,
};
static const struct umct_product {
uint16_t vendor;
uint16_t product;
} umct_products [] = {
static const struct usb_devno umct_devs[] = {
/* MCT USB-232 Interface Products */
{ USB_VENDOR_MCT, USB_PRODUCT_MCT_USB232 },
/* Sitecom USB-232 Products */
{ USB_VENDOR_MCT, USB_PRODUCT_MCT_SITECOM_USB232 },
/* D-Link DU-H3SP USB BAY Hub Products */
{ USB_VENDOR_MCT, USB_PRODUCT_MCT_DU_H3SP_USB232 },
{ 0, 0 }
};
#define umct_lookup(v, p) usb_lookup(umct_devs, v, p)
USB_DECLARE_DRIVER(umct);
USB_MATCH(umct)
{
USB_MATCH_START(umct, uaa);
int i;
if (uaa->iface != NULL)
return (UMATCH_NONE);
for (i = 0; umct_products[i].vendor != 0; i++) {
if (umct_products[i].vendor == uaa->vendor &&
umct_products[i].product == uaa->product) {
return (UMATCH_VENDOR_PRODUCT);
}
}
return (UMATCH_NONE);
return (umct_lookup(uaa->vendor, uaa->product) != NULL ?
UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
}
USB_ATTACH(umct)

View File

@ -1,4 +1,4 @@
/* $NetBSD: uplcom.c,v 1.22 2001/11/30 13:41:00 augustss Exp $ */
/* $NetBSD: uplcom.c,v 1.23 2001/12/03 01:47:12 augustss Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
* All rights reserved.
@ -44,7 +44,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: uplcom.c,v 1.22 2001/11/30 13:41:00 augustss Exp $");
__KERNEL_RCSID(0, "$NetBSD: uplcom.c,v 1.23 2001/12/03 01:47:12 augustss Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -150,10 +150,7 @@ struct ucom_methods uplcom_methods = {
NULL,
};
static const struct uplcom_product {
uint16_t vendor;
uint16_t product;
} uplcom_products [] = {
static const struct usb_devno uplcom_devs[] = {
/* I/O DATA USB-RSAQ2 */
{ USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_RSAQ2 },
/* I/O DATA USB-RSAQ */
@ -164,26 +161,20 @@ static const struct uplcom_product {
{ USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2303 },
/* ELECOM UC-SGT */
{ USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_UCSGT },
{ 0, 0 }
};
#define uplcom_lookup(v, p) usb_lookup(uplcom_devs, v, p)
USB_DECLARE_DRIVER(uplcom);
USB_MATCH(uplcom)
{
USB_MATCH_START(uplcom, uaa);
int i;
if (uaa->iface != NULL)
return (UMATCH_NONE);
for (i = 0; uplcom_products[i].vendor != 0; i++) {
if (uplcom_products[i].vendor == uaa->vendor &&
uplcom_products[i].product == uaa->product) {
return (UMATCH_VENDOR_PRODUCT);
}
}
return (UMATCH_NONE);
return (uplcom_lookup(uaa->vendor, uaa->product) != NULL ?
UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
}
USB_ATTACH(uplcom)

View File

@ -1,4 +1,4 @@
/* $NetBSD: usbdi.c,v 1.89 2001/12/02 23:25:25 augustss Exp $ */
/* $NetBSD: usbdi.c,v 1.90 2001/12/03 01:47:12 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdi.c,v 1.28 1999/11/17 22:33:49 n_hibma Exp $ */
/*
@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.89 2001/12/02 23:25:25 augustss Exp $");
__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.90 2001/12/03 01:47:12 augustss Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -1104,8 +1104,8 @@ usbd_ratecheck(struct timeval *last)
* Search for a vendor/product pair in an array. The item size is
* given as an argument.
*/
struct usb_devno *
usb_match_device(struct usb_devno *tbl, u_int nentries, u_int sz,
const struct usb_devno *
usb_match_device(const struct usb_devno *tbl, u_int nentries, u_int sz,
u_int16_t vendor, u_int16_t product)
{
while (nentries-- > 0) {

View File

@ -1,4 +1,4 @@
/* $NetBSD: usbdi.h,v 1.55 2001/12/02 23:25:25 augustss Exp $ */
/* $NetBSD: usbdi.h,v 1.56 2001/12/03 01:47:12 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdi.h,v 1.18 1999/11/17 22:33:49 n_hibma Exp $ */
/*
@ -196,8 +196,10 @@ struct usb_devno {
u_int16_t ud_vendor;
u_int16_t ud_product;
};
struct usb_devno *usb_match_device(struct usb_devno *tbl, u_int nentries,
u_int sz, u_int16_t vendor, u_int16_t product);
const struct usb_devno *usb_match_device(const struct usb_devno *tbl,
u_int nentries, u_int sz, u_int16_t vendor, u_int16_t product);
#define usb_lookup(tbl, vendor, product) \
usb_match_device((const struct usb_devno *)(tbl), sizeof (tbl) / sizeof ((tbl)[0]), sizeof ((tbl)[0]), (vendor), (product))
/* NetBSD attachment information */

View File

@ -1,4 +1,4 @@
/* $NetBSD: usbdi_util.h,v 1.23 2001/10/26 17:58:22 augustss Exp $ */
/* $NetBSD: usbdi_util.h,v 1.24 2001/12/03 01:47:12 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdi_util.h,v 1.9 1999/11/17 22:33:50 n_hibma Exp $ */
/*
@ -82,4 +82,3 @@ usbd_status usbd_bulk_transfer(usbd_xfer_handle xfer, usbd_pipe_handle pipe,
void usb_detach_wait(device_ptr_t);
void usb_detach_wakeup(device_ptr_t);

View File

@ -1,4 +1,4 @@
/* $NetBSD: uscanner.c,v 1.21 2001/12/01 09:42:39 enami Exp $ */
/* $NetBSD: uscanner.c,v 1.22 2001/12/03 01:47:13 augustss Exp $ */
/* $FreeBSD$ */
/*
@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: uscanner.c,v 1.21 2001/12/01 09:42:39 enami Exp $");
__KERNEL_RCSID(0, "$NetBSD: uscanner.c,v 1.22 2001/12/03 01:47:13 augustss Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -79,10 +79,7 @@ int uscannerdebug = 0;
#endif
/* Table of scanners that may work with this driver. */
static const struct scanner_id {
uint16_t vendor;
uint16_t product;
} scanner_ids [] = {
static const struct usb_devno uscanner_devs[] = {
/* Acer Peripherals */
{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_320U },
{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640U },
@ -105,6 +102,7 @@ static const struct scanner_id {
{ USB_VENDOR_HP, USB_PRODUCT_HP_S20 },
{ USB_VENDOR_HP, USB_PRODUCT_HP_5200C },
#if 0
/* Handled by usscanner */
{ USB_VENDOR_HP, USB_PRODUCT_HP_5300C },
#endif
{ USB_VENDOR_HP, USB_PRODUCT_HP_6200C },
@ -114,6 +112,7 @@ static const struct scanner_id {
{ USB_VENDOR_AVISION, USB_PRODUCT_AVISION_1200U },
#if 0
/* XXX Should be handled by usscanner */
/* Microtek */
{ USB_VENDOR_SCANLOGIC, USB_PRODUCT_SCANLOGIC_336CX },
{ USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_X6U },
@ -175,8 +174,8 @@ static const struct scanner_id {
/* Canon */
{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N656U },
{ 0, 0 }
};
#define uscanner_lookup(v, p) usb_lookup(uscanner_devs, v, p)
#define USCANNER_BUFFERSIZE 1024
@ -246,19 +245,12 @@ USB_DECLARE_DRIVER(uscanner);
USB_MATCH(uscanner)
{
USB_MATCH_START(uscanner, uaa);
int i;
if (uaa->iface != NULL)
return UMATCH_NONE;
for (i = 0; scanner_ids[i].vendor != 0; i++) {
if (scanner_ids[i].vendor == uaa->vendor &&
scanner_ids[i].product == uaa->product) {
return (UMATCH_VENDOR_PRODUCT);
}
}
return (UMATCH_NONE);
return (uscanner_lookup(uaa->vendor, uaa->product) != NULL ?
UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
}
USB_ATTACH(uscanner)