Discussion:
[PATCH] usb-serial: Sierra driver - add devices and update dtr
Kevin Lloyd
2008-01-10 19:11:04 UTC
Permalink
From: Kevin Lloyd <***@sierrawireless.com>

This patch is targeted for the 2.6.24-rc7 kernel.

The following improvements were made:
- Added new product support: MC5725, AC 880 U, MP 3G (UMTS & CDMA)
- Fixed control line issue where asserting DTR on ep5 would close ep2
- Added support for calc_num_ports (will help support future composite devices)

This also covers the devices added by ***@twu.net and ***@wirelessbeehive.com since their patches were not committed to the 2.6.23-rc7 kernel.

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

--- /home/shared/kernels/linux-2.6.24-rc7-final/drivers/usb/serial/sierra.c.orig 2008-01-09 17:37:40.000000000 -0800
+++ /home/shared/kernels/linux-2.6.24-rc7-final/drivers/usb/serial/sierra.c 2008-01-10 11:08:57.000000000 -0800
@@ -1,7 +1,7 @@
/*
USB Driver for Sierra Wireless

- Copyright (C) 2006, 2007 Kevin Lloyd <***@sierrawireless.com>
+ Copyright (C) 2008 Kevin Lloyd <***@sierrawireless.com>

IMPORTANT DISCLAIMER: This driver is not commercially supported by
Sierra Wireless. Use at your own risk.
@@ -14,7 +14,7 @@
Whom based his on the Keyspan driver by Hugh Blemings <***@blemings.org>
*/

-#define DRIVER_VERSION "v.1.2.5b"
+#define DRIVER_VERSION "v.1.2.7"
#define DRIVER_AUTHOR "Kevin Lloyd <***@sierrawireless.com>"
#define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"

@@ -26,10 +26,12 @@
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/usb/serial.h>
+#include <linux/usb/ch9.h>

+#define SWIMS_USB_REQUEST_SetPower 0x00
+#define SWIMS_USB_REQUEST_SetNmea 0x07
#define SWIMS_USB_REQUEST_SetMode 0x0B
-#define SWIMS_USB_REQUEST_TYPE_SetMode 0x40
-#define SWIMS_USB_INDEX_SetMode 0x0000
+#define SWIMS_USB_REQUEST_TYPE_VSC_SET 0x40
#define SWIMS_SET_MODE_Modem 0x0001

/* per port private data */
@@ -38,6 +40,8 @@
#define IN_BUFLEN 4096

static int debug;
+static int nmea = 0;
+static int truinstall = 1;

enum devicetype {
DEVICE_3_PORT = 0,
@@ -50,48 +54,90 @@ static int sierra_set_power_state(struct
int result;
dev_dbg(&udev->dev, "%s", "SET POWER STATE");
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
- 0x00, /* __u8 request */
- 0x40, /* __u8 request type */
- swiState, /* __u16 value */
- 0, /* __u16 index */
- NULL, /* void *data */
- 0, /* __u16 size */
- USB_CTRL_SET_TIMEOUT); /* int timeout */
+ SWIMS_USB_REQUEST_SetPower, /* __u8 request */
+ SWIMS_USB_REQUEST_TYPE_VSC_SET, /* __u8 request type */
+ swiState, /* __u16 value */
+ 0, /* __u16 index */
+ NULL, /* void *data */
+ 0, /* __u16 size */
+ USB_CTRL_SET_TIMEOUT); /* int timeout */
return result;
}

-static int sierra_set_ms_mode(struct usb_device *udev, __u16 eSocMode)
+static int sierra_set_ms_mode(struct usb_device *udev, __u16 eSWocMode)
{
int result;
dev_dbg(&udev->dev, "%s", "DEVICE MODE SWITCH");
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
SWIMS_USB_REQUEST_SetMode, /* __u8 request */
- SWIMS_USB_REQUEST_TYPE_SetMode, /* __u8 request type */
- eSocMode, /* __u16 value */
- SWIMS_USB_INDEX_SetMode, /* __u16 index */
+ SWIMS_USB_REQUEST_TYPE_VSC_SET, /* __u8 request type */
+ eSWocMode, /* __u16 value */
+ 0x0000, /* __u16 index */
NULL, /* void *data */
0, /* __u16 size */
USB_CTRL_SET_TIMEOUT); /* int timeout */
return result;
}

-static int sierra_probe(struct usb_interface *iface,
- const struct usb_device_id *id)
+int sierra_vsc_set_nmea(struct usb_device *udev, __u16 enable)
{
int result;
+ dev_dbg(&udev->dev, "%s", "NMEA Enable sent");
+ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
+ SWIMS_USB_REQUEST_SetNmea, /* __u8 request */
+ SWIMS_USB_REQUEST_TYPE_VSC_SET, /* __u8 request type */
+ enable, /* __u16 value */
+ 0x0000, /* __u16 index */
+ NULL, /* void *data */
+ 0, /* __u16 size */
+ USB_CTRL_SET_TIMEOUT); /* int timeout */
+ return result;
+}
+
+static int sierra_calc_num_ports(struct usb_serial *serial)
+{
+ int result;
+ int *num_ports = usb_get_serial_data(serial);
+
+ result = *num_ports;
+
+ if (result) {
+ kfree(num_ports);
+ usb_set_serial_data(serial, NULL);
+ }
+
+ return result;
+}
+
+static int sierra_probe(struct usb_serial *serial,
+ const struct usb_device_id *id)
+{
+ int result = 0;
struct usb_device *udev;
+ int *num_ports;
+ num_ports = kmalloc(sizeof(*num_ports), GFP_KERNEL);

- udev = usb_get_dev(interface_to_usbdev(iface));
+ udev = serial->dev;

/* Check if in installer mode */
- if (id->driver_info == DEVICE_INSTALLER) {
- dev_dbg(&udev->dev, "%s", "FOUND DEVICE(SW)\n");
+ if (truinstall && id->driver_info == DEVICE_INSTALLER) {
+ dev_dbg(&udev->dev, "%s", "FOUND TRU-INSTALL DEVICE(SW)\n");
result = sierra_set_ms_mode(udev, SWIMS_SET_MODE_Modem);
/*We do not want to bind to the device when in installer mode*/
return -EIO;
- }
+ } else if (id->driver_info == DEVICE_1_PORT)
+ *num_ports = 1;
+ else if (serial->interface->cur_altsetting->desc.bInterfaceNumber == 0x99)
+ *num_ports = 0;
+ else
+ *num_ports = 3;
+ /*
+ * save off our num_ports info so that we can use it in the
+ * calc_num_ports callback
+ */
+ usb_set_serial_data(serial, (void *)num_ports);

- return usb_serial_probe(iface, id);
+ return result;
}

static struct usb_device_id id_table [] = {
@@ -100,9 +146,11 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */
{ USB_DEVICE(0x0f30, 0x1b1d) }, /* Sierra Wireless MC5720 */
{ USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */
+ { USB_DEVICE(0x1199, 0x0220) }, /* Sierra Wireless MC5725 */
{ USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */
{ USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */
{ USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U */
+ { USB_DEVICE(0x1199, 0x0023) }, /* Sierra Wireless AirCard */

{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
@@ -115,6 +163,11 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881 */
{ USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880 E */
{ USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881 E */
+ { USB_DEVICE(0x1199, 0x6855) }, /* Sierra Wireless AirCard 880 U */
+ { USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U */
+
+ { USB_DEVICE(0x1199, 0x6468) }, /* Sierra Wireless MP3G - EVDO */
+ { USB_DEVICE(0x1199, 0x6469) }, /* Sierra Wireless MP3G - UMTS/HSPA */

{ USB_DEVICE(0x1199, 0x0112), .driver_info = DEVICE_1_PORT }, /* Sierra Wireless AirCard 580 */
{ USB_DEVICE(0x0F3D, 0x0112), .driver_info = DEVICE_1_PORT }, /* Airprime/Sierra PC 5220 */
@@ -124,45 +177,14 @@ static struct usb_device_id id_table []
};
MODULE_DEVICE_TABLE(usb, id_table);

-static struct usb_device_id id_table_1port [] = {
- { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */
- { USB_DEVICE(0x0F3D, 0x0112) }, /* AirPrime/Sierra PC 5220 */
- { }
-};
-
-static struct usb_device_id id_table_3port [] = {
- { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */
- { USB_DEVICE(0x1199, 0x0018) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x0f30, 0x1b1d) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */
- { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */
- { USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */
- { USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U*/
-
- { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
- { USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
- { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */
- { USB_DEVICE(0x1199, 0x6812) }, /* Sierra Wireless MC8775 & AC 875U */
- { USB_DEVICE(0x1199, 0x6820) }, /* Sierra Wireless AirCard 875 */
- { USB_DEVICE(0x1199, 0x6832) }, /* Sierra Wireless MC8780*/
- { USB_DEVICE(0x1199, 0x6833) }, /* Sierra Wireless MC8781*/
- { USB_DEVICE(0x1199, 0x6850) }, /* Sierra Wireless AirCard 880 */
- { USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881 */
- { USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880E */
- { USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881E */
- { }
-};
-
static struct usb_driver sierra_driver = {
.name = "sierra",
- .probe = sierra_probe,
+ .probe = usb_serial_probe,
.disconnect = usb_serial_disconnect,
.id_table = id_table,
.no_dynamic_id = 1,
};

-
struct sierra_port_private {
spinlock_t lock; /* lock the structure */
int outstanding_urbs; /* number of out urbs in flight */
@@ -184,6 +206,7 @@ static int sierra_send_setup(struct usb_
{
struct usb_serial *serial = port->serial;
struct sierra_port_private *portdata;
+ __u16 interface = 0;

dbg("%s", __FUNCTION__);

@@ -196,9 +219,18 @@ static int sierra_send_setup(struct usb_
if (portdata->rts_state)
val |= 0x02;

+ /* Determine which port is targeted */
+ if (port->bulk_out_endpointAddress == 2)
+ interface = 0;
+ else if (port->bulk_out_endpointAddress == 4)
+ interface = 1;
+ else if (port->bulk_out_endpointAddress == 5)
+ interface = 2;
+
return usb_control_msg(serial->dev,
usb_rcvctrlpipe(serial->dev, 0),
- 0x22,0x21,val,0,NULL,0,USB_CTRL_SET_TIMEOUT);
+ 0x22, 0x21, val, interface,
+ NULL, 0, USB_CTRL_SET_TIMEOUT);
}

return 0;
@@ -582,6 +614,10 @@ static int sierra_startup(struct usb_ser
/*Set Device mode to D0 */
sierra_set_power_state(serial->dev, 0x0000);

+ /*Check NMEA and set */
+ if (nmea)
+ sierra_vsc_set_nmea(serial->dev, 1);
+
/* Now setup per port private data */
for (i = 0; i < serial->num_ports; i++) {
port = serial->port[i];
@@ -642,47 +678,19 @@ static void sierra_shutdown(struct usb_s
}
}

-static struct usb_serial_driver sierra_1port_device = {
+static struct usb_serial_driver sierra_device = {
.driver = {
.owner = THIS_MODULE,
.name = "sierra1",
},
- .description = "Sierra USB modem (1 port)",
- .id_table = id_table_1port,
+ .description = "Sierra USB modem",
+ .id_table = id_table,
.usb_driver = &sierra_driver,
.num_interrupt_in = NUM_DONT_CARE,
- .num_bulk_in = 1,
- .num_bulk_out = 1,
- .num_ports = 1,
- .open = sierra_open,
- .close = sierra_close,
- .write = sierra_write,
- .write_room = sierra_write_room,
- .chars_in_buffer = sierra_chars_in_buffer,
- .throttle = sierra_rx_throttle,
- .unthrottle = sierra_rx_unthrottle,
- .ioctl = sierra_ioctl,
- .set_termios = sierra_set_termios,
- .break_ctl = sierra_break_ctl,
- .tiocmget = sierra_tiocmget,
- .tiocmset = sierra_tiocmset,
- .attach = sierra_startup,
- .shutdown = sierra_shutdown,
- .read_int_callback = sierra_instat_callback,
-};
-
-static struct usb_serial_driver sierra_3port_device = {
- .driver = {
- .owner = THIS_MODULE,
- .name = "sierra3",
- },
- .description = "Sierra USB modem (3 port)",
- .id_table = id_table_3port,
- .usb_driver = &sierra_driver,
- .num_interrupt_in = NUM_DONT_CARE,
- .num_bulk_in = 3,
- .num_bulk_out = 3,
- .num_ports = 3,
+ .num_bulk_in = NUM_DONT_CARE,
+ .num_bulk_out = NUM_DONT_CARE,
+ .calc_num_ports = sierra_calc_num_ports,
+ .probe = sierra_probe,
.open = sierra_open,
.close = sierra_close,
.write = sierra_write,
@@ -704,12 +712,9 @@ static struct usb_serial_driver sierra_3
static int __init sierra_init(void)
{
int retval;
- retval = usb_serial_register(&sierra_1port_device);
- if (retval)
- goto failed_1port_device_register;
- retval = usb_serial_register(&sierra_3port_device);
+ retval = usb_serial_register(&sierra_device);
if (retval)
- goto failed_3port_device_register;
+ goto failed_device_register;


retval = usb_register(&sierra_driver);
@@ -721,18 +726,15 @@ static int __init sierra_init(void)
return 0;

failed_driver_register:
- usb_serial_deregister(&sierra_3port_device);
-failed_3port_device_register:
- usb_serial_deregister(&sierra_1port_device);
-failed_1port_device_register:
+ usb_serial_deregister(&sierra_device);
+failed_device_register:
return retval;
}

static void __exit sierra_exit(void)
{
usb_deregister (&sierra_driver);
- usb_serial_deregister(&sierra_1port_device);
- usb_serial_deregister(&sierra_3port_device);
+ usb_serial_deregister(&sierra_device);
}

module_init(sierra_init);
@@ -743,6 +745,12 @@ MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_VERSION(DRIVER_VERSION);
MODULE_LICENSE("GPL");

+module_param(truinstall, bool, 0);
+MODULE_PARM_DESC(truinstall, "TRU-Install support");
+
+module_param(nmea, bool, 0);
+MODULE_PARM_DESC(nmea, "NMEA streaming");
+
#ifdef CONFIG_USB_DEBUG
module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug messages");

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
linux-usb-***@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Greg KH
2008-01-10 19:54:03 UTC
Permalink
Post by Kevin Lloyd
This patch is targeted for the 2.6.24-rc7 kernel.
- Added new product support: MC5725, AC 880 U, MP 3G (UMTS & CDMA)
- Fixed control line issue where asserting DTR on ep5 would close ep2
- Added support for calc_num_ports (will help support future composite devices)
the 2.6.23-rc7 kernel.
Those device ids are already in my tree, as it was my understanding that
you would not be sending me patches for them :)

I'll split this patch up into something that updates the device ids and
then does all of the other changes. The device ids can go into 2.6.24
(and -stable if I miss the merge window), but the other changes should
wait until 2.6.25.

Any objection to this?

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Kevin Lloyd
2008-01-11 17:24:36 UTC
Permalink
Post by Greg KH
Those device ids are already in my tree, as it was my understanding that
you would not be sending me patches for them :)
You're right, I normally wouldn't, but since someone else already had, I
figured it would be alright.
Post by Greg KH
I'll split this patch up into something that updates the device ids and
then does all of the other changes. The device ids can go into 2.6.24
(and -stable if I miss the merge window), but the other changes should
wait until 2.6.25.
Any objection to this?
Actually some of the added functionality (calc_num_ports) is required
for
device 0x0023 and will be necessary for future devices (should someone
want to add the VID/PID of a new device it will likely require the added

support).

So my preference would be to please include the other changes in the
2.6.24 release.

Thanks,
-Kevin
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Greg KH
2008-01-11 21:02:34 UTC
Permalink
Post by Kevin Lloyd
Post by Greg KH
Those device ids are already in my tree, as it was my understanding
that
Post by Greg KH
you would not be sending me patches for them :)
You're right, I normally wouldn't, but since someone else already had, I
figured it would be alright.
Post by Greg KH
I'll split this patch up into something that updates the device ids
and
Post by Greg KH
then does all of the other changes. The device ids can go into 2.6.24
(and -stable if I miss the merge window), but the other changes should
wait until 2.6.25.
Any objection to this?
Actually some of the added functionality (calc_num_ports) is required
for
device 0x0023 and will be necessary for future devices (should someone
want to add the VID/PID of a new device it will likely require the added
support).
So my preference would be to please include the other changes in the
2.6.24 release.
Hm, no, the intrusion into the driver is just too much this late in the
release cycle to allow this.

Now I will be glad to only add the new device ids for the devices that
do not rely on the new changes right now, but that's it.

So, right now I have a separate patch split out of your original one
that is below. Should I modify it and not include some of these device
ids right now? You mention 0023, is that the only one I should remove
from this patch?

thanks,

greg k-h

-------------

From: Kevin Lloyd <klloyd-***@public.gmane.org>
Subject: USB: sierra driver - add devices

From: Kevin Lloyd <linux-***@public.gmane.org>

The following improvements were made:
- Added new product support: MC5725, AC 880 U, MP 3G (UMTS & CDMA)

Signed-off-by: Kevin Lloyd <linux-***@public.gmane.org>
Signed-off-by: Greg Kroah-Hartman <gregkh-***@public.gmane.org>

---
drivers/usb/serial/sierra.c | 9 +++++++++
1 file changed, 9 insertions(+)

--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -104,6 +104,7 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */
{ USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */
{ USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U */
+ { USB_DEVICE(0x1199, 0x0023) }, /* Sierra Wireless AirCard */

{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
@@ -117,8 +118,12 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881 */
{ USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880 E */
{ USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881 E */
+ { USB_DEVICE(0x1199, 0x6855) }, /* Sierra Wireless AirCard 880 U */
{ USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U */

+ { USB_DEVICE(0x1199, 0x6468) }, /* Sierra Wireless MP3G - EVDO */
+ { USB_DEVICE(0x1199, 0x6469) }, /* Sierra Wireless MP3G - UMTS/HSPA */
+
{ USB_DEVICE(0x1199, 0x0112), .driver_info = DEVICE_1_PORT }, /* Sierra Wireless AirCard 580 */
{ USB_DEVICE(0x0F3D, 0x0112), .driver_info = DEVICE_1_PORT }, /* Airprime/Sierra PC 5220 */

@@ -143,6 +148,7 @@ static struct usb_device_id id_table_3po
{ USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */
{ USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */
{ USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U*/
+ { USB_DEVICE(0x1199, 0x0023) }, /* Sierra Wireless AirCard */

{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
@@ -156,7 +162,10 @@ static struct usb_device_id id_table_3po
{ USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881 */
{ USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880E */
{ USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881E */
+ { USB_DEVICE(0x1199, 0x6855) }, /* Sierra Wireless AirCard 880 U */
{ USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881U */
+ { USB_DEVICE(0x1199, 0x6468) }, /* Sierra Wireless MP3G - EVDO */
+ { USB_DEVICE(0x1199, 0x6469) }, /* Sierra Wireless MP3G - UMTS/HSPA */
{ }
};

-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Kevin Lloyd
2008-01-14 17:21:32 UTC
Permalink
Post by Greg KH
Hm, no, the intrusion into the driver is just too much this late in the
release cycle to allow this.
Now I will be glad to only add the new device ids for the devices that
do not rely on the new changes right now, but that's it.
So, right now I have a separate patch split out of your original one
that is below. Should I modify it and not include some of these device
ids right now? You mention 0023, is that the only one I should remove
from this patch?
Correct, the 0x0023 is the only newly added device that requires the new
features.
When do you expect the other changes will be propagated to the kernel?
Would it be in a 2.6.24.x point release or will they have to wait until
2.6.25?

Thanks,
-Kevin

-------------

From: Kevin Lloyd <***@sierrawireless.com>
Subject: USB: sierra driver - add devices

From: Kevin Lloyd <***@sierrawireless.com>

The following improvements were made:
- Added new product support: MC5725, AC 880 U, MP 3G (UMTS & CDMA)

Signed-off-by: Kevin Lloyd <***@sierrawireless.com>
Signed-off-by: Greg Kroah-Hartman <***@suse.de>

---
drivers/usb/serial/sierra.c | 9 +++++++++
1 file changed, 9 insertions(+)

--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -104,6 +104,7 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595
*/
{ USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E
*/
{ USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle
595U */
+ { USB_DEVICE(0x1199, 0x0023) }, /* Sierra Wireless AirCard */

{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
@@ -117,8 +118,12 @@ static struct usb_device_id id_table []
{ USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881
*/
{ USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880 E
*/
{ USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881 E
*/
+ { USB_DEVICE(0x1199, 0x6855) }, /* Sierra Wireless AirCard 880 U
*/
{ USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U
*/

+ { USB_DEVICE(0x1199, 0x6468) }, /* Sierra Wireless MP3G - EVDO
*/
+ { USB_DEVICE(0x1199, 0x6469) }, /* Sierra Wireless MP3G -
UMTS/HSPA */
+
{ USB_DEVICE(0x1199, 0x0112), .driver_info = DEVICE_1_PORT }, /*
Sierra Wireless AirCard 580 */
{ USB_DEVICE(0x0F3D, 0x0112), .driver_info = DEVICE_1_PORT }, /*
Airprime/Sierra PC 5220 */

@@ -143,6 +148,7 @@ static struct usb_device_id id_table_3po
{ USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595
*/
{ USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E
*/
{ USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle
595U*/
+ { USB_DEVICE(0x1199, 0x0023) }, /* Sierra Wireless AirCard */

{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
@@ -156,7 +162,10 @@ static struct usb_device_id id_table_3po
{ USB_DEVICE(0x1199, 0x6851) }, /* Sierra Wireless AirCard 881
*/
{ USB_DEVICE(0x1199, 0x6852) }, /* Sierra Wireless AirCard 880E
*/
{ USB_DEVICE(0x1199, 0x6853) }, /* Sierra Wireless AirCard 881E
*/
+ { USB_DEVICE(0x1199, 0x6855) }, /* Sierra Wireless AirCard 880 U
*/
{ USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881U
*/
+ { USB_DEVICE(0x1199, 0x6468) }, /* Sierra Wireless MP3G - EVDO
*/
+ { USB_DEVICE(0x1199, 0x6469) }, /* Sierra Wireless MP3G -
UMTS/HSPA */
{ }
};



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
linux-usb-***@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Greg KH
2008-01-17 18:04:53 UTC
Permalink
Post by Kevin Lloyd
Post by Greg KH
Hm, no, the intrusion into the driver is just too much this late in
the
Post by Greg KH
release cycle to allow this.
Now I will be glad to only add the new device ids for the devices that
do not rely on the new changes right now, but that's it.
So, right now I have a separate patch split out of your original one
that is below. Should I modify it and not include some of these
device
Post by Greg KH
ids right now? You mention 0023, is that the only one I should remove
from this patch?
Correct, the 0x0023 is the only newly added device that requires the new
features.
Does that mean things will not work for this device if it is added to
the device table, without the code updates?

And is this device even public yet?
Post by Kevin Lloyd
When do you expect the other changes will be propagated to the kernel?
Would it be in a 2.6.24.x point release or will they have to wait until
2.6.25?
They will have to wait until 2.6.25, they are too big to go into 2.6.24
(we are in severe bug-fix mode only right now for .24).

thanks,

greg k-h
Kevin Lloyd
2008-01-17 23:15:23 UTC
Permalink
Post by Greg KH
Post by Kevin Lloyd
Correct, the 0x0023 is the only newly added device that requires the new
features.
Does that mean things will not work for this device if it is added to
the device table, without the code updates?
Adding the device will not break the driver (assuming you remove the
tag).
Post by Greg KH
And is this device even public yet?
No, but we are trying to add native support for devices into kernels
well
before they are released in an effort give better native support to
end-users.
Post by Greg KH
Post by Kevin Lloyd
When do you expect the other changes will be propagated to the kernel?
Would it be in a 2.6.24.x point release or will they have to wait until
2.6.25?
They will have to wait until 2.6.25, they are too big to go into 2.6.24
(we are in severe bug-fix mode only right now for .24).
Darn.

Thanks,
-Kevin
Greg KH
2008-01-19 00:35:21 UTC
Permalink
Post by Kevin Lloyd
Post by Greg KH
Post by Kevin Lloyd
Correct, the 0x0023 is the only newly added device that requires the
new
Post by Greg KH
Post by Kevin Lloyd
features.
Does that mean things will not work for this device if it is added to
the device table, without the code updates?
Adding the device will not break the driver (assuming you remove the
tag).
Which "tag"? The device id?
Post by Kevin Lloyd
Post by Greg KH
And is this device even public yet?
No, but we are trying to add native support for devices into kernels
well before they are released in an effort give better native support
to end-users.
Ok, that's great to do, and is what needs to be done, just can't add new
features during the "bug-fix-only" cycle of development :)

thanks,

greg k-h

Loading...