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 | |
| 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>
| -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); |
