diff options
author | Kevin Lloyd <klloyd@sierrawireless.com> | 2008-07-10 17:14:54 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-08-13 20:32:51 -0400 |
commit | 0585e4dfe5670d3ccb77bf86551a657699e9e52e (patch) | |
tree | a3ed57be69162623af3c58e3d1f9a2546860ad59 /drivers/usb/serial | |
parent | e3173b22eb7b50a23af60e12bab7a29d4b24f284 (diff) |
USB Serial Sierra: TRU-Install feature update
Moves responsbility of TRU-Install (i.e. ZeroCD) to the usb-storage
driver. See patch 04/04 of this set.
Signed-off-by: Kevin Lloyd <klloyd@sierrawireless.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r-- | drivers/usb/serial/Kconfig | 7 | ||||
-rw-r--r-- | drivers/usb/serial/sierra.c | 35 |
2 files changed, 7 insertions, 35 deletions
diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig index 8878c1767fc8..70338f4ec918 100644 --- a/drivers/usb/serial/Kconfig +++ b/drivers/usb/serial/Kconfig | |||
@@ -499,9 +499,10 @@ config USB_SERIAL_SAFE_PADDED | |||
499 | config USB_SERIAL_SIERRAWIRELESS | 499 | config USB_SERIAL_SIERRAWIRELESS |
500 | tristate "USB Sierra Wireless Driver" | 500 | tristate "USB Sierra Wireless Driver" |
501 | help | 501 | help |
502 | Say M here if you want to use a Sierra Wireless device (if | 502 | Say M here if you want to use Sierra Wireless devices. |
503 | using an PC 5220 or AC580 please use the Airprime driver | 503 | |
504 | instead). | 504 | Many deviecs have a feature known as TRU-Install, for those devices |
505 | to work properly the USB Storage Sierra feature must be enabled. | ||
505 | 506 | ||
506 | To compile this driver as a module, choose M here: the | 507 | To compile this driver as a module, choose M here: the |
507 | module will be called sierra. | 508 | module will be called sierra. |
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c index e2a7463346fc..6b7ed333386a 100644 --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c | |||
@@ -14,7 +14,7 @@ | |||
14 | Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org> | 14 | Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org> |
15 | */ | 15 | */ |
16 | 16 | ||
17 | #define DRIVER_VERSION "v.1.2.9c" | 17 | #define DRIVER_VERSION "v.1.2.13a" |
18 | #define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>" | 18 | #define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>" |
19 | #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" | 19 | #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" |
20 | 20 | ||
@@ -31,6 +31,7 @@ | |||
31 | #define SWIMS_USB_REQUEST_SetPower 0x00 | 31 | #define SWIMS_USB_REQUEST_SetPower 0x00 |
32 | #define SWIMS_USB_REQUEST_SetNmea 0x07 | 32 | #define SWIMS_USB_REQUEST_SetNmea 0x07 |
33 | #define SWIMS_USB_REQUEST_SetMode 0x0B | 33 | #define SWIMS_USB_REQUEST_SetMode 0x0B |
34 | #define SWIMS_USB_REQUEST_GetSwocInfo 0x0A | ||
34 | #define SWIMS_SET_MODE_Modem 0x0001 | 35 | #define SWIMS_SET_MODE_Modem 0x0001 |
35 | 36 | ||
36 | /* per port private data */ | 37 | /* per port private data */ |
@@ -40,13 +41,6 @@ | |||
40 | 41 | ||
41 | static int debug; | 42 | static int debug; |
42 | static int nmea; | 43 | static int nmea; |
43 | static int truinstall = 1; | ||
44 | |||
45 | enum devicetype { | ||
46 | DEVICE_3_PORT = 0, | ||
47 | DEVICE_1_PORT = 1, | ||
48 | DEVICE_INSTALLER = 2, | ||
49 | }; | ||
50 | 44 | ||
51 | static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) | 45 | static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) |
52 | { | 46 | { |
@@ -63,21 +57,6 @@ static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) | |||
63 | return result; | 57 | return result; |
64 | } | 58 | } |
65 | 59 | ||
66 | static int sierra_set_ms_mode(struct usb_device *udev, __u16 eSWocMode) | ||
67 | { | ||
68 | int result; | ||
69 | dev_dbg(&udev->dev, "%s", __func__); | ||
70 | result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), | ||
71 | SWIMS_USB_REQUEST_SetMode, /* __u8 request */ | ||
72 | USB_TYPE_VENDOR, /* __u8 request type */ | ||
73 | eSWocMode, /* __u16 value */ | ||
74 | 0x0000, /* __u16 index */ | ||
75 | NULL, /* void *data */ | ||
76 | 0, /* __u16 size */ | ||
77 | USB_CTRL_SET_TIMEOUT); /* int timeout */ | ||
78 | return result; | ||
79 | } | ||
80 | |||
81 | static int sierra_vsc_set_nmea(struct usb_device *udev, __u16 enable) | 60 | static int sierra_vsc_set_nmea(struct usb_device *udev, __u16 enable) |
82 | { | 61 | { |
83 | int result; | 62 | int result; |
@@ -163,15 +142,8 @@ static int sierra_probe(struct usb_serial *serial, | |||
163 | usb_set_interface(udev, ifnum, 1); | 142 | usb_set_interface(udev, ifnum, 1); |
164 | } | 143 | } |
165 | 144 | ||
166 | /* Check if in installer mode */ | ||
167 | if (truinstall && id->driver_info == DEVICE_INSTALLER) { | ||
168 | dev_dbg(&udev->dev, "%s", "FOUND TRU-INSTALL DEVICE(SW)\n"); | ||
169 | result = sierra_set_ms_mode(udev, SWIMS_SET_MODE_Modem); | ||
170 | /* Don't bind to the device when in installer mode */ | ||
171 | kfree(num_ports); | ||
172 | return -EIO; | ||
173 | /* Dummy interface present on some SKUs should be ignored */ | 145 | /* Dummy interface present on some SKUs should be ignored */ |
174 | } else if (ifnum == 0x99) | 146 | if (ifnum == 0x99) |
175 | *num_ports = 0; | 147 | *num_ports = 0; |
176 | else if (numendpoints <= 3) | 148 | else if (numendpoints <= 3) |
177 | *num_ports = 1; | 149 | *num_ports = 1; |
@@ -237,7 +209,6 @@ static struct usb_device_id id_table [] = { | |||
237 | { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */ | 209 | { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */ |
238 | { USB_DEVICE(0x0F3D, 0x0112) }, /* Airprime/Sierra PC 5220 */ | 210 | { USB_DEVICE(0x0F3D, 0x0112) }, /* Airprime/Sierra PC 5220 */ |
239 | 211 | ||
240 | { USB_DEVICE(0x1199, 0x0FFF), .driver_info = DEVICE_INSTALLER}, | ||
241 | { } | 212 | { } |
242 | }; | 213 | }; |
243 | MODULE_DEVICE_TABLE(usb, id_table); | 214 | MODULE_DEVICE_TABLE(usb, id_table); |