diff options
| author | Chris Adams <cmadams@hiwaay.net> | 2009-01-11 14:49:00 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-12 19:37:01 -0500 |
| commit | cb7a7c6a2cae5696b8aa636e86e9befd3dd00318 (patch) | |
| tree | 94b75f0bc969e688fc527882a50fe40580fbe6ef | |
| parent | 05a3d9050ad7bb791b9ba306165ea98e6d9e9da2 (diff) | |
ti_usb_3410_5052: add Multi-Tech modem support
Add Multi-Tech cellular modem support to the ti_usb_3410_5052 driver.
Signed-off-by: Chris Adams <cmadams@hiwaay.net>
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.c | 36 | ||||
| -rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.h | 8 |
2 files changed, 39 insertions, 5 deletions
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index 1cdb1515253d..dbae9941baa9 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
| @@ -176,9 +176,14 @@ static unsigned int product_5052_count; | |||
| 176 | /* the array dimension is the number of default entries plus */ | 176 | /* the array dimension is the number of default entries plus */ |
| 177 | /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */ | 177 | /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */ |
| 178 | /* null entry */ | 178 | /* null entry */ |
| 179 | static struct usb_device_id ti_id_table_3410[2+TI_EXTRA_VID_PID_COUNT+1] = { | 179 | static struct usb_device_id ti_id_table_3410[7+TI_EXTRA_VID_PID_COUNT+1] = { |
| 180 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, | 180 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, |
| 181 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, | 181 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, |
| 182 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) }, | ||
| 183 | { USB_DEVICE(MTS_VENDOR_ID, MTS_CDMA_NO_FW_PRODUCT_ID) }, | ||
| 184 | { USB_DEVICE(MTS_VENDOR_ID, MTS_CDMA_PRODUCT_ID) }, | ||
| 185 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_PRODUCT_ID) }, | ||
| 186 | { USB_DEVICE(MTS_VENDOR_ID, MTS_EDGE_PRODUCT_ID) }, | ||
| 182 | }; | 187 | }; |
| 183 | 188 | ||
| 184 | static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = { | 189 | static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = { |
| @@ -191,6 +196,11 @@ static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = { | |||
| 191 | static struct usb_device_id ti_id_table_combined[6+2*TI_EXTRA_VID_PID_COUNT+1] = { | 196 | static struct usb_device_id ti_id_table_combined[6+2*TI_EXTRA_VID_PID_COUNT+1] = { |
| 192 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, | 197 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, |
| 193 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, | 198 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, |
| 199 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) }, | ||
| 200 | { USB_DEVICE(MTS_VENDOR_ID, MTS_CDMA_NO_FW_PRODUCT_ID) }, | ||
| 201 | { USB_DEVICE(MTS_VENDOR_ID, MTS_CDMA_PRODUCT_ID) }, | ||
| 202 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_PRODUCT_ID) }, | ||
| 203 | { USB_DEVICE(MTS_VENDOR_ID, MTS_EDGE_PRODUCT_ID) }, | ||
| 194 | { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) }, | 204 | { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) }, |
| 195 | { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) }, | 205 | { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) }, |
| 196 | { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, | 206 | { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, |
| @@ -1689,10 +1699,26 @@ static int ti_download_firmware(struct ti_device *tdev) | |||
| 1689 | sprintf(buf, "ti_usb-v%04x-p%04x.fw", dev->descriptor.idVendor, | 1699 | sprintf(buf, "ti_usb-v%04x-p%04x.fw", dev->descriptor.idVendor, |
| 1690 | dev->descriptor.idProduct); | 1700 | dev->descriptor.idProduct); |
| 1691 | if ((status = request_firmware(&fw_p, buf, &dev->dev)) != 0) { | 1701 | if ((status = request_firmware(&fw_p, buf, &dev->dev)) != 0) { |
| 1692 | if (tdev->td_is_3410) | 1702 | buf[0] = '\0'; |
| 1693 | strcpy(buf, "ti_3410.fw"); | 1703 | if (dev->descriptor.idVendor == MTS_VENDOR_ID) { |
| 1694 | else | 1704 | switch (dev->descriptor.idProduct) { |
| 1695 | strcpy(buf, "ti_5052.fw"); | 1705 | case MTS_CDMA_PRODUCT_ID: |
| 1706 | strcpy(buf, "mts_cdma.fw"); | ||
| 1707 | break; | ||
| 1708 | case MTS_GSM_PRODUCT_ID: | ||
| 1709 | strcpy(buf, "mts_gsm.fw"); | ||
| 1710 | break; | ||
| 1711 | case MTS_EDGE_PRODUCT_ID: | ||
| 1712 | strcpy(buf, "mts_edge.fw"); | ||
| 1713 | break; | ||
| 1714 | } | ||
| 1715 | } | ||
| 1716 | if (buf[0] == '\0') { | ||
| 1717 | if (tdev->td_is_3410) | ||
| 1718 | strcpy(buf, "ti_3410.fw"); | ||
| 1719 | else | ||
| 1720 | strcpy(buf, "ti_5052.fw"); | ||
| 1721 | } | ||
| 1696 | status = request_firmware(&fw_p, buf, &dev->dev); | 1722 | status = request_firmware(&fw_p, buf, &dev->dev); |
| 1697 | } | 1723 | } |
| 1698 | if (status) { | 1724 | if (status) { |
diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h index b5541bf991ba..7e4752fbf232 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.h +++ b/drivers/usb/serial/ti_usb_3410_5052.h | |||
| @@ -34,6 +34,14 @@ | |||
| 34 | #define TI_5052_EEPROM_PRODUCT_ID 0x505A /* EEPROM, no firmware */ | 34 | #define TI_5052_EEPROM_PRODUCT_ID 0x505A /* EEPROM, no firmware */ |
| 35 | #define TI_5052_FIRMWARE_PRODUCT_ID 0x505F /* firmware is running */ | 35 | #define TI_5052_FIRMWARE_PRODUCT_ID 0x505F /* firmware is running */ |
| 36 | 36 | ||
| 37 | /* Multi-Tech vendor and product ids */ | ||
| 38 | #define MTS_VENDOR_ID 0x06E0 | ||
| 39 | #define MTS_GSM_NO_FW_PRODUCT_ID 0xF108 | ||
| 40 | #define MTS_CDMA_NO_FW_PRODUCT_ID 0xF109 | ||
| 41 | #define MTS_CDMA_PRODUCT_ID 0xF110 | ||
| 42 | #define MTS_GSM_PRODUCT_ID 0xF111 | ||
| 43 | #define MTS_EDGE_PRODUCT_ID 0xF112 | ||
| 44 | |||
| 37 | /* Commands */ | 45 | /* Commands */ |
| 38 | #define TI_GET_VERSION 0x01 | 46 | #define TI_GET_VERSION 0x01 |
| 39 | #define TI_GET_PORT_STATUS 0x02 | 47 | #define TI_GET_PORT_STATUS 0x02 |
