LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 2.6.20-rc3 01/01] usb: Sierra Wireless auto set D0
@ 2007-01-16  1:33 Kevin Lloyd
  2007-01-17 21:56 ` Greg KH
  0 siblings, 1 reply; 3+ messages in thread
From: Kevin Lloyd @ 2007-01-16  1:33 UTC (permalink / raw)
  To: gregkh; +Cc: linux-usb-devel, linux-usb-users, linux-kernel, torvalds, klloyd

from: Kevin Lloyd <linux@sierrawireless.com>

This patch ensures that the device is turned on when inserted into the 
system (which mostly affects the EM5725 and MC5720. It also adds more 
VID/PIDs and matches the N_OUT_URB with the airprime driver.

Signed-off-by: Kevin Lloyd <linux@sierrawireless.com>

---

--- linux-2.6.20-rc5/drivers/usb/serial/sierra.c.orig	2007-01-15 15:17:15.000000000 -0800
+++ linux-2.6.20-rc5/drivers/usb/serial/sierra.c	2007-01-15 15:41:56.000000000 -0800
@@ -14,9 +14,31 @@
   Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org>
 
   History:
+v.1.0.6:
+ klloyd
+ Added more devices and added Vendor Specific USB message to make sure
+ that devices are in D0 state when they start. This is very important for
+ MC5720 and EM5625 modules that go between Windows and Non-Windows 
+ machines.
+v.1.0.5:
+ Greg KH
+ This saves over 30 lines and fixes a warning from sparse and allows
+ debugging to work dynamically like all other usb-serial drivers.
+ klloyd
+ Changed versioning to v.x.y.z
+v.1.04:
+ klloyd
+ Adds significant throughput increase to the Sierra driver (uses multiple
+ urgs for download link). This patch also updates the current sierra.c 
+ driver so that it supports both 3-port Sierra devices and 1-port legacy
+ devices and removes Sierra's references in other related files (Kconfig
+ and airprime.c).
+v.1.03
+ klloyd
+ Adds DTR line control support and impliments urb control.
 */
 
-#define DRIVER_VERSION "v.1.0.5"
+#define DRIVER_VERSION "v.1.0.6"
 #define DRIVER_AUTHOR "Kevin Lloyd <linux@sierrawireless.com>"
 #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
 
@@ -31,14 +53,14 @@
 
 
 static struct usb_device_id id_table [] = {
+	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0018) },	/* Sierra Wireless MC5720 */
 	{ USB_DEVICE(0x1199, 0x0020) },	/* Sierra Wireless MC5725 */
-	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0019) },	/* Sierra Wireless AirCard 595 */
-	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0021) },	/* Sierra Wireless AirCard 597E */
 	{ USB_DEVICE(0x1199, 0x6802) },	/* Sierra Wireless MC8755 */
+	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 */
 	{ USB_DEVICE(0x1199, 0x6803) },	/* Sierra Wireless MC8765 */
-	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 for Europe */
 	{ USB_DEVICE(0x1199, 0x6812) },	/* Sierra Wireless MC8775 */
 	{ USB_DEVICE(0x1199, 0x6820) },	/* Sierra Wireless AirCard 875 */
 
@@ -55,14 +77,14 @@ static struct usb_device_id id_table_1po
 };
 
 static struct usb_device_id id_table_3port [] = {
+	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0018) },	/* Sierra Wireless MC5720 */
 	{ USB_DEVICE(0x1199, 0x0020) },	/* Sierra Wireless MC5725 */
-	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0019) },	/* Sierra Wireless AirCard 595 */
-	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0021) },	/* Sierra Wireless AirCard 597E */
 	{ USB_DEVICE(0x1199, 0x6802) },	/* Sierra Wireless MC8755 */
+	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 */
 	{ USB_DEVICE(0x1199, 0x6803) },	/* Sierra Wireless MC8765 */
-	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 for Europe */
 	{ USB_DEVICE(0x1199, 0x6812) },	/* Sierra Wireless MC8775 */
 	{ USB_DEVICE(0x1199, 0x6820) },	/* Sierra Wireless AirCard 875 */
 	{ }
@@ -81,7 +103,7 @@ static int debug;
 
 /* per port private data */
 #define N_IN_URB	4
-#define N_OUT_URB	1
+#define N_OUT_URB	4
 #define IN_BUFLEN	4096
 #define OUT_BUFLEN	128
 
@@ -123,6 +145,7 @@ static int sierra_send_setup(struct usb_
 		return usb_control_msg(serial->dev,
 				usb_rcvctrlpipe(serial->dev, 0),
 				0x22,0x21,val,0,NULL,0,USB_CTRL_SET_TIMEOUT);
+
 	}
 
 	return 0;
@@ -396,6 +419,8 @@ static int sierra_open(struct usb_serial
 	struct usb_serial *serial = port->serial;
 	int i, err;
 	struct urb *urb;
+	int result;
+	__u16 set_mode_dzero = 0x0000; //Set mode to D0
 
 	portdata = usb_get_serial_port_data(port);
 
@@ -442,6 +467,11 @@ static int sierra_open(struct usb_serial
 
 	port->tty->low_latency = 1;
 
+	//set mode to D0
+	result = usb_control_msg(serial->dev,
+			usb_rcvctrlpipe(serial->dev, 0),
+			0x00,0x40,set_mode_dzero,0,NULL,0,USB_CTRL_SET_TIMEOUT);
+
 	sierra_send_setup(port);
 
 	return (0);




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 2.6.20-rc3 01/01] usb: Sierra Wireless auto set D0
  2007-01-16  1:33 [PATCH 2.6.20-rc3 01/01] usb: Sierra Wireless auto set D0 Kevin Lloyd
@ 2007-01-17 21:56 ` Greg KH
  2007-01-18  0:04   ` [PATCH 2.6.20-rc5 " Kevin Lloyd
  0 siblings, 1 reply; 3+ messages in thread
From: Greg KH @ 2007-01-17 21:56 UTC (permalink / raw)
  To: Kevin Lloyd
  Cc: gregkh, linux-usb-devel, linux-usb-users, linux-kernel, torvalds,
	Peter Kucmeroski, Jason Ganovsky

On Mon, Jan 15, 2007 at 05:33:28PM -0800, Kevin Lloyd wrote:
> from: Kevin Lloyd <linux@sierrawireless.com>
> 
> This patch ensures that the device is turned on when inserted into the 
> system (which mostly affects the EM5725 and MC5720. It also adds more 
> VID/PIDs and matches the N_OUT_URB with the airprime driver.
> 
> Signed-off-by: Kevin Lloyd <linux@sierrawireless.com>
> 
> ---
> 
> --- linux-2.6.20-rc5/drivers/usb/serial/sierra.c.orig	2007-01-15 
> 15:17:15.000000000 -0800
> +++ linux-2.6.20-rc5/drivers/usb/serial/sierra.c	2007-01-15 
> 15:41:56.000000000 -0800
> @@ -14,9 +14,31 @@
>   Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org>
> 
>   History:
> +v.1.0.6:
> + klloyd
> + Added more devices and added Vendor Specific USB message to make sure
> + that devices are in D0 state when they start. This is very important for
> + MC5720 and EM5625 modules that go between Windows and Non-Windows 
> + machines.
> +v.1.0.5:
> + Greg KH
> + This saves over 30 lines and fixes a warning from sparse and allows
> + debugging to work dynamically like all other usb-serial drivers.
> + klloyd
> + Changed versioning to v.x.y.z
> +v.1.04:
> + klloyd
> + Adds significant throughput increase to the Sierra driver (uses multiple
> + urgs for download link). This patch also updates the current sierra.c 
> + driver so that it supports both 3-port Sierra devices and 1-port legacy
> + devices and removes Sierra's references in other related files (Kconfig
> + and airprime.c).
> +v.1.03
> + klloyd
> + Adds DTR line control support and impliments urb control.

This is not needed, nor recommended.  The changelog information in the
kernel provides this information.

> 
> -#define DRIVER_VERSION "v.1.0.5"
> +#define DRIVER_VERSION "v.1.0.6"
> #define DRIVER_AUTHOR "Kevin Lloyd <linux@sierrawireless.com>"
> #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
> 
> @@ -31,14 +53,14 @@
> 
> 
> static struct usb_device_id id_table [] = {
> +	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
> 	{ USB_DEVICE(0x1199, 0x0018) },	/* Sierra Wireless MC5720 */
> 	{ USB_DEVICE(0x1199, 0x0020) },	/* Sierra Wireless MC5725 */
> -	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
> 	{ USB_DEVICE(0x1199, 0x0019) },	/* Sierra Wireless AirCard 595 */
> -	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */

You are dropping support for this device id.  Is that correct?  Are you
sure?

It was reported to me by Peter Kucmeroski and Jason Ganovsky, and you
were CCed when the patch went into the kernel that added this id.

> @@ -123,6 +145,7 @@ static int sierra_send_setup(struct usb_
> 		return usb_control_msg(serial->dev,
> 				usb_rcvctrlpipe(serial->dev, 0),
> 				0x22,0x21,val,0,NULL,0,USB_CTRL_SET_TIMEOUT);
> +
> 	}
> 
> 	return 0;

Is this change really needed?  :)


> @@ -396,6 +419,8 @@ static int sierra_open(struct usb_serial
> 	struct usb_serial *serial = port->serial;
> 	int i, err;
> 	struct urb *urb;
> +	int result;
> +	__u16 set_mode_dzero = 0x0000; //Set mode to D0

// comments are not recommended in the kernel, especially for something
as trivial as a variable name.

> 	portdata = usb_get_serial_port_data(port);
> 
> @@ -442,6 +467,11 @@ static int sierra_open(struct usb_serial
> 
> 	port->tty->low_latency = 1;
> 
> +	//set mode to D0

Use /* */ please.

Care to resubmit this?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2.6.20-rc5 01/01] usb: Sierra Wireless auto set D0
  2007-01-17 21:56 ` Greg KH
@ 2007-01-18  0:04   ` Kevin Lloyd
  0 siblings, 0 replies; 3+ messages in thread
From: Kevin Lloyd @ 2007-01-18  0:04 UTC (permalink / raw)
  To: Greg KH
  Cc: gregkh, linux-usb-devel, linux-usb-users, linux-kernel, torvalds,
	Peter Kucmeroski, Jason Ganovsky

from: Kevin Lloyd <linux@sierrawireless.com>

This patch ensures that the device is turned on when inserted into the system.
It also adds more VID/PIDs and matches the N_OUT_URB with the airprime driver.

Signed-off-by: Kevin Lloyd <linux@sierrawireless.com>

--- 

--- linux-2.6.20-rc5/drivers/usb/serial/sierra.c.orig	2007-01-15 15:17:15.000000000 -0800
+++ linux-2.6.20-rc5/drivers/usb/serial/sierra.c	2007-01-17 15:41:59.000000000 -0800
@@ -13,10 +13,9 @@
   Portions based on the option driver by Matthias Urlichs <smurf@smurf.noris.de>
   Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org>
 
-  History:
 */
 
-#define DRIVER_VERSION "v.1.0.5"
+#define DRIVER_VERSION "v.1.0.6"
 #define DRIVER_AUTHOR "Kevin Lloyd <linux@sierrawireless.com>"
 #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
 
@@ -31,14 +30,15 @@
 
 
 static struct usb_device_id id_table [] = {
+	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0018) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
 	{ USB_DEVICE(0x1199, 0x0020) },	/* Sierra Wireless MC5725 */
-	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0019) },	/* Sierra Wireless AirCard 595 */
-	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0021) },	/* Sierra Wireless AirCard 597E */
 	{ USB_DEVICE(0x1199, 0x6802) },	/* Sierra Wireless MC8755 */
+	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 */
 	{ USB_DEVICE(0x1199, 0x6803) },	/* Sierra Wireless MC8765 */
-	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 for Europe */
 	{ USB_DEVICE(0x1199, 0x6812) },	/* Sierra Wireless MC8775 */
 	{ USB_DEVICE(0x1199, 0x6820) },	/* Sierra Wireless AirCard 875 */
 
@@ -55,14 +55,15 @@ static struct usb_device_id id_table_1po
 };
 
 static struct usb_device_id id_table_3port [] = {
+	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0018) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
 	{ USB_DEVICE(0x1199, 0x0020) },	/* Sierra Wireless MC5725 */
-	{ USB_DEVICE(0x1199, 0x0017) },	/* Sierra Wireless EM5625 */
 	{ USB_DEVICE(0x1199, 0x0019) },	/* Sierra Wireless AirCard 595 */
-	{ USB_DEVICE(0x1199, 0x0218) },	/* Sierra Wireless MC5720 */
+	{ USB_DEVICE(0x1199, 0x0021) },	/* Sierra Wireless AirCard 597E */
 	{ USB_DEVICE(0x1199, 0x6802) },	/* Sierra Wireless MC8755 */
+	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 */
 	{ USB_DEVICE(0x1199, 0x6803) },	/* Sierra Wireless MC8765 */
-	{ USB_DEVICE(0x1199, 0x6804) },	/* Sierra Wireless MC8755 for Europe */
 	{ USB_DEVICE(0x1199, 0x6812) },	/* Sierra Wireless MC8775 */
 	{ USB_DEVICE(0x1199, 0x6820) },	/* Sierra Wireless AirCard 875 */
 	{ }
@@ -81,7 +82,7 @@ static int debug;
 
 /* per port private data */
 #define N_IN_URB	4
-#define N_OUT_URB	1
+#define N_OUT_URB	4
 #define IN_BUFLEN	4096
 #define OUT_BUFLEN	128
 
@@ -396,6 +397,8 @@ static int sierra_open(struct usb_serial
 	struct usb_serial *serial = port->serial;
 	int i, err;
 	struct urb *urb;
+	int result;
+	__u16 set_mode_dzero = 0x0000;
 
 	portdata = usb_get_serial_port_data(port);
 
@@ -442,6 +445,11 @@ static int sierra_open(struct usb_serial
 
 	port->tty->low_latency = 1;
 
+	/*set mode to D0 */
+	result = usb_control_msg(serial->dev,
+			usb_rcvctrlpipe(serial->dev, 0),
+			0x00,0x40,set_mode_dzero,0,NULL,0,USB_CTRL_SET_TIMEOUT);
+
 	sierra_send_setup(port);
 
 	return (0);



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-01-18  0:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-01-16  1:33 [PATCH 2.6.20-rc3 01/01] usb: Sierra Wireless auto set D0 Kevin Lloyd
2007-01-17 21:56 ` Greg KH
2007-01-18  0:04   ` [PATCH 2.6.20-rc5 " Kevin Lloyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).