Module Name:    src
Committed By:   martin
Date:           Wed Oct 15 08:43:08 UTC 2014

Modified Files:
        src/sys/dev/usb [netbsd-7]: u3g.c usbdevs

Log Message:
Pull up following revision(s) (requested by christos in ticket #142):
        sys/dev/usb/u3g.c: revision 1.31
        sys/dev/usb/usbdevs: revision 1.681
        sys/dev/usb/usbdevs: revision 1.682
PR/49233: Ben Gergely: Add huawei e353 to u3g
(factor out some common code in the process)


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.30.4.1 src/sys/dev/usb/u3g.c
cvs rdiff -u -r1.680 -r1.680.2.1 src/sys/dev/usb/usbdevs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/u3g.c
diff -u src/sys/dev/usb/u3g.c:1.30 src/sys/dev/usb/u3g.c:1.30.4.1
--- src/sys/dev/usb/u3g.c:1.30	Mon Sep  2 07:39:03 2013
+++ src/sys/dev/usb/u3g.c	Wed Oct 15 08:43:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: u3g.c,v 1.30 2013/09/02 07:39:03 christos Exp $	*/
+/*	$NetBSD: u3g.c,v 1.30.4.1 2014/10/15 08:43:08 martin Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: u3g.c,v 1.30 2013/09/02 07:39:03 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: u3g.c,v 1.30.4.1 2014/10/15 08:43:08 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -192,6 +192,7 @@ static const struct usb_devno u3g_devs[]
 	{ USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_K3765 },
 	{ USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_MOBILE },
 	{ USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E171 },
+	{ USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E353 },
 	/* OEM: Merlin */
 	{ USB_VENDOR_MERLIN, USB_PRODUCT_MERLIN_V620 },
 	/* OEM: Novatel */
@@ -334,6 +335,16 @@ send_bulkmsg(usbd_device_handle dev, voi
 	return (err == USBD_NORMAL_COMPLETION ? UMATCH_HIGHEST : UMATCH_NONE);
 }
 
+/* Byte 0..3: Command Block Wrapper (CBW) signature */
+static void
+set_cbw(unsigned char *cmd)
+{
+	cmd[0] = 0x55; 
+	cmd[1] = 0x53;
+	cmd[2] = 0x42;
+	cmd[3] = 0x43;
+}
+
 static int
 u3g_bulk_scsi_eject(usbd_device_handle dev)
 {
@@ -341,10 +352,7 @@ u3g_bulk_scsi_eject(usbd_device_handle d
 
 	memset(cmd, 0, sizeof(cmd));
 	/* Byte 0..3: Command Block Wrapper (CBW) signature */
-	cmd[0] = 0x55; 
-	cmd[1] = 0x53;
-	cmd[2] = 0x42;
-	cmd[3] = 0x43;
+	set_cbw(cmd);
 	/* 4..7: CBW Tag, has to unique, but only a single transfer used. */
 	cmd[4] = 0x01;
 	/* 8..11: CBW Transfer Length, no data here */
@@ -372,10 +380,7 @@ u3g_bulk_ata_eject(usbd_device_handle de
 
 	memset(cmd, 0, sizeof(cmd));
 	/* Byte 0..3: Command Block Wrapper (CBW) signature */
-	cmd[0] = 0x55; 
-	cmd[1] = 0x53;
-	cmd[2] = 0x42;
-	cmd[3] = 0x43;
+	set_cbw(cmd);
 	/* 4..7: CBW Tag, has to unique, but only a single transfer used. */
 	cmd[4] = 0x01;
 	/* 8..11: CBW Transfer Length, no data here */
@@ -455,16 +460,14 @@ u3g_huawei_k3765_reinit(usbd_device_hand
 
 	/* magic string adapted from some webpage */
 	memset(cmd, 0, sizeof(cmd));
-	cmd[0] = 0x55; 
-	cmd[1] = 0x53;
-	cmd[2] = 0x42;
-	cmd[3] = 0x43;
+	/* Byte 0..3: Command Block Wrapper (CBW) signature */
+	set_cbw(cmd);
+
 	cmd[15]= 0x11;
 	cmd[16]= 0x06;
 
 	return send_bulkmsg(dev, cmd, sizeof(cmd));
 }
-
 static int
 u3g_huawei_e171_reinit(usbd_device_handle dev)
 {
@@ -472,10 +475,9 @@ u3g_huawei_e171_reinit(usbd_device_handl
 
 	/* magic string adapted from some webpage */
 	memset(cmd, 0, sizeof(cmd));
-	cmd[0] = 0x55; 
-	cmd[1] = 0x53;
-	cmd[2] = 0x42;
-	cmd[3] = 0x43;
+	/* Byte 0..3: Command Block Wrapper (CBW) signature */
+	set_cbw(cmd);
+
 	cmd[15]= 0x11;
 	cmd[16]= 0x06;
 	cmd[17]= 0x20;
@@ -485,6 +487,28 @@ u3g_huawei_e171_reinit(usbd_device_handl
 }
 
 static int
+u3g_huawei_e353_reinit(usbd_device_handle dev)
+{
+	unsigned char cmd[31];
+
+	/* magic string adapted from some webpage */
+	memset(cmd, 0, sizeof(cmd));
+	/* Byte 0..3: Command Block Wrapper (CBW) signature */
+	set_cbw(cmd);
+
+	cmd[4] = 0x7f;
+	cmd[9] = 0x02;
+	cmd[12] = 0x80;
+	cmd[14] = 0x0a;
+	cmd[15] = 0x11;
+	cmd[16] = 0x06;
+	cmd[17] = 0x20;
+	cmd[23] = 0x01;
+
+	return send_bulkmsg(dev, cmd, sizeof(cmd));
+}
+
+static int
 u3g_sierra_reinit(usbd_device_handle dev)
 {
 	/* Some Sierra devices presents themselves as a umass device with
@@ -508,12 +532,25 @@ static int
 u3g_4gsystems_reinit(usbd_device_handle dev)
 {
 	/* magic string adapted from usb_modeswitch database */
-	static unsigned char cmd[31] = {
-		0x55, 0x53, 0x42, 0x43, 0x12, 0x34, 0x56, 0x78, 0x80, 0x00,
-		0x00, 0x00, 0x80, 0x00, 0x06, 0x06, 0xf5, 0x04, 0x02, 0x52,
-		0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-		0x00
-	};
+	unsigned char cmd[31];
+
+	memset(cmd, 0, sizeof(cmd));
+	/* Byte 0..3: Command Block Wrapper (CBW) signature */
+	set_cbw(cmd);
+
+	cmd[4] = 0x12;
+	cmd[5] = 0x34;
+	cmd[6] = 0x56;
+	cmd[7] = 0x78;
+	cmd[8] = 0x80;
+	cmd[12] = 0x80;
+	cmd[14] = 0x06;
+	cmd[15] = 0x06;
+	cmd[16] = 0xf5;
+	cmd[17] = 0x04;
+	cmd[18] = 0x02;
+	cmd[19] = 0x52;
+	cmd[20] = 0x70;
 
 	return send_bulkmsg(dev, cmd, sizeof(cmd));
 }
@@ -545,6 +582,9 @@ u3ginit_match(device_t parent, cfdata_t 
 		case USB_PRODUCT_HUAWEI_E171INIT:
 			return u3g_huawei_e171_reinit(uaa->device);
 			break;
+		case USB_PRODUCT_HUAWEI_E353INIT:
+			return u3g_huawei_e353_reinit(uaa->device);
+			break;
 		default:
 			return u3g_huawei_reinit(uaa->device);
 			break;

Index: src/sys/dev/usb/usbdevs
diff -u src/sys/dev/usb/usbdevs:1.680 src/sys/dev/usb/usbdevs:1.680.2.1
--- src/sys/dev/usb/usbdevs:1.680	Mon Aug  4 19:59:37 2014
+++ src/sys/dev/usb/usbdevs	Wed Oct 15 08:43:08 2014
@@ -1,4 +1,4 @@
-$NetBSD: usbdevs,v 1.680 2014/08/04 19:59:37 jdc Exp $
+$NetBSD: usbdevs,v 1.680.2.1 2014/10/15 08:43:08 martin Exp $
 
 /*
  * Copyright (c) 1998-2004 The NetBSD Foundation, Inc.
@@ -1725,15 +1725,17 @@ product HTC ANDROID		0x0ffe	Android
 
 /* Huawei Technologies products */
 product HUAWEI MOBILE		0x1001	Huawei Mobile
-product HUAWEI E220  		0x1003	Huawei E220
-product HUAWEI EM770W	  	0x1404	Huawei EM770W
-product HUAWEI E1750	  	0x140c	Huawei E1750
-product HUAWEI E1750INIT  	0x1446	Huawei E1750 USB CD
-product HUAWEI K3765  		0x1465	Huawei K3765
-product HUAWEI E1820  		0x14ac	Huawei E1820
-product HUAWEI E171INIT 	0x14fe	Huawei E171 USB CD
-product HUAWEI E171 		0x1506	Huawei E171
-product HUAWEI K3765INIT 	0x1520	Huawei K3765 USB CD
+product HUAWEI E220		0x1003	Huawei E220
+product HUAWEI EM770W		0x1404	Huawei EM770W
+product HUAWEI E1750		0x140c	Huawei E1750
+product HUAWEI E1750INIT	0x1446	Huawei E1750 USB CD
+product HUAWEI K3765		0x1465	Huawei K3765
+product HUAWEI E1820		0x14ac	Huawei E1820
+product HUAWEI E171INIT		0x14fe	Huawei E171 USB CD
+product HUAWEI E171		0x1506	Huawei E171
+product HUAWEI E353		0x1507	Huawei E353
+product HUAWEI K3765INIT	0x1520	Huawei K3765 USB CD
+product HUAWEI E353INIT		0x1f01	Huawei E353 USB CD
 
 /* Huawei-3Com products */
 product HUAWEI3COM RT2573	0x0009	RT2573

Reply via email to