Skip to contentSkip to conversation

USB: option: add support for Telit LE920

PATCH In review Daniele Palmas 4 participants 8 messages Jan 28, 2013 – Jan 30, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 USB: option: add support for Telit LE920

From: danielepa <danielepa@L2011.(none)>

Add PID and special handling for Telit LE920

---
 drivers/usb/serial/option.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
drivers/usb/serial/option.c +8 -0
index 0d9dac9..384bb92 100644
@@ -242,6 +242,7 @@ static void option_instat_callback(struct urb *urb);
 #define TELIT_PRODUCT_CC864_DUAL		0x1005
 #define TELIT_PRODUCT_CC864_SINGLE		0x1006
 #define TELIT_PRODUCT_DE910_DUAL		0x1010
+#define TELIT_PRODUCT_LE920			0x1200
 
 /* ZTE PRODUCTS */
 #define ZTE_VENDOR_ID				0x19d2
@@ -534,6 +535,11 @@ static const struct option_blacklist_info zte_1255_blacklist = {
 	.reserved = BIT(3) | BIT(4),
 };
 
+static const struct option_blacklist_info telit_le920_blacklist = {
+	.sendsetup = BIT(0),
+	.reserved = BIT(1) | BIT(5),
+};
+
 static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -784,6 +790,8 @@ static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
+	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
+		.driver_info = (kernel_ulong_t)&telit_le920_blacklist },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
 		.driver_info = (kernel_ulong_t)&net_intf1_blacklist },
Signature · 1 line
1.7.4.1
#1 lore raw

Hello.

Quoted 1 line · Daniele Palmas

From: danielepa <danielepa@L2011.(none)>

Name/email should preferrably be the same as the one in your signoff.
Besides, the email address is not valid here.

Quoted 3 lines

Add PID and special handling for Telit LE920

WBR, Sergei

#2 lore raw
In reply to Daniele Palmas
Quoted 3 lines · Daniele Palmas

From: danielepa <danielepa@L2011.(none)>

Add PID and special handling for Telit LE920

Any idea what interfaces 1 and 5 are? Is one perhaps a pseudo-ethernet interface that could be used instead of PPP? What's the lsusb -v output for the device?

Dan

Quoted 38 lines
---
 drivers/usb/serial/option.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
drivers/usb/serial/option.c +8 -0
index 0d9dac9..384bb92 100644
@@ -242,6 +242,7 @@ static void option_instat_callback(struct urb *urb);
 #define TELIT_PRODUCT_CC864_DUAL		0x1005
 #define TELIT_PRODUCT_CC864_SINGLE		0x1006
 #define TELIT_PRODUCT_DE910_DUAL		0x1010
+#define TELIT_PRODUCT_LE920			0x1200
 
 /* ZTE PRODUCTS */
 #define ZTE_VENDOR_ID				0x19d2
@@ -534,6 +535,11 @@ static const struct option_blacklist_info zte_1255_blacklist = {
 	.reserved = BIT(3) | BIT(4),
 };
 
+static const struct option_blacklist_info telit_le920_blacklist = {
+	.sendsetup = BIT(0),
+	.reserved = BIT(1) | BIT(5),
+};
+
 static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -784,6 +790,8 @@ static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
+	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
+		.driver_info = (kernel_ulong_t)&telit_le920_blacklist },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
 		.driver_info = (kernel_ulong_t)&net_intf1_blacklist },
#3 lore raw
Quoted 8 lines · Dan Williams
Quoted 3 lines · Daniele Palmas

From: danielepa <danielepa@L2011.(none)>

Add PID and special handling for Telit LE920

Any idea what interfaces 1 and 5 are? Is one perhaps a pseudo-ethernet interface that could be used instead of PPP? What's the lsusb -v output for the device?

Nevermind, I see the QMI patch for the device now on netdev.

Dan

Quoted 46 lines

Dan

Quoted 30 lines
---
 drivers/usb/serial/option.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
drivers/usb/serial/option.c +6 -0
index 0d9dac9..384bb92 100644
@@ -242,6 +242,7 @@ static void option_instat_callback(struct urb *urb);
 #define TELIT_PRODUCT_CC864_DUAL		0x1005
 #define TELIT_PRODUCT_CC864_SINGLE		0x1006
 #define TELIT_PRODUCT_DE910_DUAL		0x1010
+#define TELIT_PRODUCT_LE920			0x1200
 
 /* ZTE PRODUCTS */
 #define ZTE_VENDOR_ID				0x19d2
@@ -534,6 +535,11 @@ static const struct option_blacklist_info zte_1255_blacklist = {
 	.reserved = BIT(3) | BIT(4),
 };
 
+static const struct option_blacklist_info telit_le920_blacklist = {
+	.sendsetup = BIT(0),
+	.reserved = BIT(1) | BIT(5),
+};
+
 static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
 	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },

drivers/usb/serial/option.c static const struct usb_device_id option_ids[] = { · line 797

Quoted 8 lines
drivers/usb/serial/option.c +2 -0
@@ -784,6 +790,8 @@ static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
 	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
+	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
+		.driver_info = (kernel_ulong_t)&telit_le920_blacklist },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
 		.driver_info = (kernel_ulong_t)&net_intf1_blacklist },

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw
In reply to Dan Williams
Quoted 8 lines · Dan Williams
Quoted 3 lines · Daniele Palmas

From: danielepa <danielepa@L2011.(none)>

Add PID and special handling for Telit LE920

Any idea what interfaces 1 and 5 are? Is one perhaps a pseudo-ethernet interface that could be used instead of PPP? What's the lsusb -v output for the device?

Daniele has already posted a patch adding intf #5 to qmi_wwan, so I assume that is verified to be a QMI/rmnet interface.

But I was wondering about #1 too, if that indeed is a vendor specific interface providing a non-serial, non-rmnet function. What could that be?

Bjørn

#5 lore raw

Hello,

2013/1/29 Bjørn Mork <[email protected]>:

Quoted 13 lines
Quoted 8 lines · Dan Williams
Quoted 3 lines · Daniele Palmas

From: danielepa <danielepa@L2011.(none)>

Add PID and special handling for Telit LE920

Any idea what interfaces 1 and 5 are? Is one perhaps a pseudo-ethernet interface that could be used instead of PPP? What's the lsusb -v output for the device?

Daniele has already posted a patch adding intf #5 to qmi_wwan, so I assume that is verified to be a QMI/rmnet interface.

Quoted 6 lines

But I was wondering about #1 too, if that indeed is a vendor specific interface providing a non-serial, non-rmnet function. What could that be?

Bjørn

The output of lsusb for interface #1 is the following:

Interface Descriptor:

      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2

bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 0

It should be an adb device, so probably it is not needed to blacklist it. Should I resend a new patch with only interface #5 reserved?

Thanks,
Daniele

#6 lore raw
Quoted 8 lines · Daniele Palmas

The output of lsusb for interface #1 is the following:

Interface Descriptor:

      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
Quoted 7 lines

bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 0

It should be an adb device, so probably it is not needed to blacklist it. Should I resend a new patch with only interface #5 reserved?

You could have used USB_DEVICE_AND_INTERFACE_INFO() matching on all ff/ff/ff to avoid blacklisting the adb interface, but IMHO the patch is fine as it is.

This being an Android device raises another question though: Are these interface numbers static? I assume you can e.g. disable adb? What happens to the descriptors then? Does the device change pid, or are the interfaces renumbered?

Bjørn

#7 lore raw

2013/1/30 Bjørn Mork <[email protected]>:

Quoted 15 lines
Quoted 13 lines · Daniele Palmas

The output of lsusb for interface #1 is the following:

Interface Descriptor:

      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2

bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 0

Quoted 7 lines
Quoted 2 lines

It should be an adb device, so probably it is not needed to blacklist it. Should I resend a new patch with only interface #5 reserved?

You could have used USB_DEVICE_AND_INTERFACE_INFO() matching on all ff/ff/ff to avoid blacklisting the adb interface, but IMHO the patch is fine as it is.

Thanks, next time I'll follow that way.

Quoted 5 lines

This being an Android device raises another question though: Are these interface numbers static? I assume you can e.g. disable adb? What happens to the descriptors then? Does the device change pid, or are the interfaces renumbered?

This is the device:

http://www.telit.com/en/products/lte.php?p_id=421&p_ac=show&p=130

It is not an Android device, but an AT command based modem. I don't really know why there is an adb interface, but I am quite sure that you cannot disable it and the interface numbers should be static.

However, if I find that this is not true, I will take care of sending a new set of patches for addressing the issue.

Regards,
Daniele