PATCH: adding usbdevice + umodem handling

Ulf Lilleengen lulf at kerneled.org
Mon Jul 5 09:14:52 PDT 2004


These patches comes from http://people.freebsd.org/~hmp/dragonfly/freebsd-mfc/ 
Nr. 2284 and 2285. This adds support for kyocera in the umodem driver and adds it to the usbdevice list ( I'm not sure if i should update usbdevs.h and usbdevs_data.h but I'm attaching them nonetheless)

- Ulf Lilleengen
--- umodem.c.orig	2004-07-03 10:50:01.000000000 +0000
+++ umodem.c	2004-07-03 12:07:12.000000000 +0000
@@ -117,6 +117,16 @@
 #endif
 #define DPRINTF(x) DPRINTFN(0, x)
 
+static const struct umodem_product {
+	u_int16_t		vendor;
+	u_int16_t		product;
+	u_int8_t			interface;
+} umodem_products[] = {
+	/* Kyocera AH-K3001V */
+	{ USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_AHK3001V, 0 },
+	{ 0, 0, 0},
+};
+
 /*
  * These are the maximum number of bytes transferred per frame.
  * If some really high speed devices should use this driver they
@@ -215,25 +225,42 @@
 {
 	USB_MATCH_START(umodem, uaa);
 	usb_interface_descriptor_t *id;
-	int cm, acm;
+	usb_device_descriptor_t		*dd;
+	int cm, acm, i, ret;
 
 	if (uaa->iface == NULL)
 		return (UMATCH_NONE);
 
 	id = usbd_get_interface_descriptor(uaa->iface);
-	if (id == NULL ||
-	    id->bInterfaceClass != UICLASS_CDC ||
-	    id->bInterfaceSubClass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
-	    id->bInterfaceProtocol != UIPROTO_CDC_AT)
+	dd = usbd_get_device_descriptor(uaa->device);
+	if( id == NULL || dd == NULL )
 		return (UMATCH_NONE);
 
+	ret = UMATCH_NONE;
+	for( i = 0; umodem_products[i].vendor != 0; i++ ) {
+		if(	umodem_products[i].vendor == UGETW(dd->idVendor) &&
+				umodem_products[i].product == UGETW(dd->idProduct) &&
+				umodem_products[i].interface == id->bInterfaceNumber) {
+					ret = UMATCH_VENDOR_PRODUCT;
+					break;
+		}
+	}
+
+	if( ret == UMATCH_NONE &&
+			id->bInterfaceClass == UICLASS_CDC &&
+			id->bInterfaceSubClass == UISUBCLASS_ABSTRACT_CONTROL_MODEL &&
+			id->bInterfaceProtocol == UIPROTO_CDC_AT)
+				ret = UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO;
+	if( ret == UMATCH_NONE )
+		return (ret);
+
 	umodem_get_caps(uaa->device, &cm, &acm);
 	if (!(cm & USB_CDC_CM_DOES_CM) ||
 	    !(cm & USB_CDC_CM_OVER_DATA) ||
 	    !(acm & USB_CDC_ACM_HAS_LINE))
 		return (UMATCH_NONE);
 
-	return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
+	return ret;
 }
 
 USB_ATTACH(umodem)
--- usbdevs.orig	2004-07-03 11:03:15.000000000 +0000
+++ usbdevs	2004-07-03 11:05:16.000000000 +0000
@@ -113,6 +113,7 @@
 vendor CONNECTIX	0x0478	Connectix
 vendor KENSINGTON	0x047d	Kensington
 vendor LUCENT		0x047e	Lucent
+vendor KYOCERA		0x0482	Kyocera Corp.
 vendor STMICRO		0x0483	STMicroelectronics
 vendor YAMAHA		0x0499	YAMAHA
 vendor COMPAQ		0x049f	Compaq Computers
@@ -815,6 +816,9 @@
 product KYE FLIGHT2000		0x1004	Flight 2000 joystick
 product KYE VIVIDPRO		0x2001	ColorPage Vivid-Pro scanner
 
+/* Kyocera products */
+product KYOCERA AHK3001V	0x203		AH-K3001V
+
 /* LaCie products */
 product LACIE HD		0xa601	Hard Disk
 product LACIE CDRW		0xa602	CD R/W
--- usbdevs.h.orig	2004-07-03 11:09:38.000000000 +0000
+++ usbdevs.h	2004-07-03 11:13:12.000000000 +0000
@@ -1,4 +1,6 @@
 /*
+ *	$DragonFly$
+ *
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
  *
  */
@@ -38,9 +40,9 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/usb/usbdevs.h,v 1.157 2003/12/19 12:21:11 sanpei Exp $
- * $DragonFly: src/sys/bus/usb/usbdevs.h,v 1.5 2003/12/30 01:01:44 dillon Exp $
- */
+ * $FreeBSD: src/sys/dev/usb/usbdevs,v 1.11.2.50 2003/12/22 07:52:56 sanpei Exp $
+ * $DragonFly: src/sys/bus/usb/usbdevs,v 1.5 2003/12/30 01:01:44 dillon Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.149 2003/12/19 12:19:12 sanpei Exp $
 
 /*
  * List of known USB vendors
@@ -117,6 +119,7 @@
 #define	USB_VENDOR_CONNECTIX	0x0478		/* Connectix */
 #define	USB_VENDOR_KENSINGTON	0x047d		/* Kensington */
 #define	USB_VENDOR_LUCENT	0x047e		/* Lucent */
+#define	USB_VENDOR_KYOCERA	0x0482		/* Kyocera Corp. */
 #define	USB_VENDOR_STMICRO	0x0483		/* STMicroelectronics */
 #define	USB_VENDOR_YAMAHA	0x0499		/* YAMAHA */
 #define	USB_VENDOR_COMPAQ	0x049f		/* Compaq Computers */
@@ -819,6 +822,9 @@
 #define	USB_PRODUCT_KYE_FLIGHT2000	0x1004		/* Flight 2000 joystick */
 #define	USB_PRODUCT_KYE_VIVIDPRO	0x2001		/* ColorPage Vivid-Pro scanner */
 
+/* Kyocera products */
+#define	USB_PRODUCT_KYOCERA_AHK3001V	0x203		/* AH-K3001V */
+
 /* LaCie products */
 #define	USB_PRODUCT_LACIE_HD	0xa601		/* Hard Disk */
 #define	USB_PRODUCT_LACIE_CDRW	0xa602		/* CD R/W */
--- usbdevs_data.h.orig	2004-07-03 11:10:30.000000000 +0000
+++ usbdevs_data.h	2004-07-03 11:13:12.000000000 +0000
@@ -1,4 +1,6 @@
 /*
+ *	$DragonFly$
+ *
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
  *
  */
@@ -38,9 +40,9 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/usb/usbdevs,v 1.149 2003/12/19 12:19:12 sanpei Exp $
- * $DragonFly: src/sys/bus/usb/usbdevs_data.h,v 1.5 2003/12/30 01:01:44 dillon Exp $
- */
+ * $FreeBSD: src/sys/dev/usb/usbdevs,v 1.11.2.50 2003/12/22 07:52:56 sanpei Exp $
+ * $DragonFly: src/sys/bus/usb/usbdevs,v 1.5 2003/12/30 01:01:44 dillon Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.149 2003/12/19 12:19:12 sanpei Exp $
 
 /*
  * List of known USB vendors
@@ -1634,6 +1636,12 @@
 	    "ColorPage Vivid-Pro scanner",
 	},
 	{
+	    USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_AHK3001V,
+	    0,
+	    "Kyocera Corp.",
+	    "AH-K3001V",
+	},
+	{
 	    USB_VENDOR_LACIE, USB_PRODUCT_LACIE_HD,
 	    0,
 	    "LaCie",
@@ -3470,6 +3478,12 @@
 	    NULL,
 	},
 	{
+	    USB_VENDOR_KYOCERA, 0,
+	    USB_KNOWNDEV_NOPROD,
+	    "Kyocera Corp.",
+	    NULL,
+	},
+	{
 	    USB_VENDOR_STMICRO, 0,
 	    USB_KNOWNDEV_NOPROD,
 	    "STMicroelectronics",




More information about the Submit mailing list