Skip to contentSkip to conversation

USB: serial: option: add Fibocom NL668 series

PATCH Jörgen Storvist 1 participant 1 message Dec 11, 2018

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

Added USB serial option driver support for Fibocom NL668 series cellular modules. Reserved USB endpoints 4, 5 and 6 for network + ADB interface.

---

Thanks for feedback!
Changes:
Removed name declarations for VID/PID
Added reserved endpoint for ADB interface

usb-devices

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1508 ProdID=1001 Rev=03.18
S:  Manufacturer=Nodecom NL668 Modem
S:  Product=Nodecom NL668-CN Modem
S:  SerialNumber=5ced6a52
C:  #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#= 4 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
I:  If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
 drivers/usb/serial/option.c | 2 ++
 1 file changed, 2 insertions(+)

Den Mon, 10 Dec 2018 09:34:06 +0100
skrev Re: [PATCH] USB: serial: option: add Fibocom NL668 series (fixed line break issue):

Quoted 49 lines · Lars Melin
Quoted 24 lines · Jörgen Storvist
Quoted 23 lines

Added USB serial option driver support for Fibocom NL668 series cellular module. Reserved USB endpoints 4 and 5 for network interfaces.

drivers/usb/serial/option.c | 5 +++++

  1 file changed, 5 insertions(+)
drivers/usb/serial/option.c +3 -0
index e24ff16..f2cc85c 100644
@@ -552,6 +552,9 @@ static void option_instat_callback(struct urb *urb);
  #define WETELECOM_PRODUCT_6802			0x6802
  #define WETELECOM_PRODUCT_WMD300		0x6803
 
+/* Fibocom products */
+#define FIBOCOM_VENDOR_ID   			0x1508
+#define FIBOCOM_PRODUCT_NL668   		0x1001
 
  /* Device flags */
 
Quoted 16 lines

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

Quoted 9 lines
drivers/usb/serial/option.c +2 -0
@@ -1941,6 +1944,8 @@ static const struct usb_device_id option_ids[] = {
  	{ USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_6802, 0xff, 0xff, 0xff) },
  	{ USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD300, 0xff, 0xff, 0xff) },
  	{ USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x421d, 0xff, 0xff, 0xff) }, /* HP lt2523 (Novatel E371) */
+	{ USB_DEVICE(FIBOCOM_VENDOR_ID, FIBOCOM_PRODUCT_NL668), /* Fibocom NL668 series */
+	  .driver_info = RSVD(4) | RSVD(5) },
  	{ } /* Terminating entry */
  };
  MODULE_DEVICE_TABLE(usb, option_ids);  

Listed owner of the 0x1508 VID is "MAATEL" which probably is a customer or subsidiary of FIBOCOM (which has the VID 0x2cb7).
Please don't do this value-to-name conversion, it is completely useless and in this case most likely wrong as well.
Just skip the declaration part and use the VID and PID values directly in the device structure list.

Checkpatch also detects some white space issues, but that should be taken care of by the above.

Please also move your changelog comment to after a so called cut-off line (---, underneath your sign-off); it doesn't belong in the commit summary (Subject).

Quoted 5 lines

And please provide the output of usb-devices (or lsusb -v) for reference.

Thanks,
Johan

drivers/usb/serial/option.c +2 -0
index e24ff16..ca3e398 100644
@@ -1941,6 +1941,8 @@ static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_6802, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD300, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x421d, 0xff, 0xff, 0xff) }, /* HP lt2523 (Novatel E371) */
+	{ USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 series */
+	  .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
 	{ } /* Terminating entry */
 };
 MODULE_DEVICE_TABLE(usb, option_ids);