diff mbox series

USB: serial: option: the patch is meant to support LARA-R6 Cat 1 and LARA-L6 CAT 4 module family.

Message ID 20220930152344.7877-1-davide.tronchin.94@gmail.com (mailing list archive)
State Superseded
Headers show
Series USB: serial: option: the patch is meant to support LARA-R6 Cat 1 and LARA-L6 CAT 4 module family. | expand

Commit Message

Davide Tronchin Sept. 30, 2022, 3:23 p.m. UTC
The LARA-R6 module has the following USB identifiers:
Vendor  ID: 0x05c6
Product ID: 0x908b

The USB composition exposes the following interfaces:
If 0: Diagnostic
If 1: AT parser
If 2: AT parser
If 3: AT parser/alternative functions

The LARA-L6 module can be configured in three different USB modes: 
* Default mode (Vendor  ID: 0x1546 Product ID: 0x1341) with 4 serial 
interfaces
* RmNet mode (Vendor  ID: 0x1546 Product ID: 0x1342) with 4 serial 
interfaces and 1 RmNet virtual network interface
* CDC-ECM mode (Vendor  ID: 0x1546 Product ID: 0x1343) with 4 serial 
interface and 1 CDC-ECM virtual network interface


In default mode LARA-L6 exposes the following interfaces:
If 0: Diagnostic
If 1: AT parser
If 2: AT parser
If 3: AT parser/alternative functions

In RmNet mode LARA-L6 exposes the following interfaces:
If 0: Diagnostic
If 1: AT parser
If 2: AT parser
If 3: AT parset/alternative functions
If 4: RMNET interface

In CDC-ECM mode LARA-L6 exposes the following interfaces:
If 0: Diagnostic
If 1: AT parser
If 2: AT parser
If 3: AT parset/alternative functions
If 4: CDC-ECM interface

Signed-off-by: Davide Tronchin  <davide.tronchin.94@gmail.com>
---
 drivers/usb/serial/option.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

Comments

Greg Kroah-Hartman Sept. 30, 2022, 3:29 p.m. UTC | #1
On Fri, Sep 30, 2022 at 05:23:44PM +0200, Davide Tronchin wrote:
> The LARA-R6 module has the following USB identifiers:
> Vendor  ID: 0x05c6
> Product ID: 0x908b
> 
> The USB composition exposes the following interfaces:
> If 0: Diagnostic
> If 1: AT parser
> If 2: AT parser
> If 3: AT parser/alternative functions
> 
> The LARA-L6 module can be configured in three different USB modes: 
> * Default mode (Vendor  ID: 0x1546 Product ID: 0x1341) with 4 serial 
> interfaces
> * RmNet mode (Vendor  ID: 0x1546 Product ID: 0x1342) with 4 serial 
> interfaces and 1 RmNet virtual network interface
> * CDC-ECM mode (Vendor  ID: 0x1546 Product ID: 0x1343) with 4 serial 
> interface and 1 CDC-ECM virtual network interface
> 
> 
> In default mode LARA-L6 exposes the following interfaces:
> If 0: Diagnostic
> If 1: AT parser
> If 2: AT parser
> If 3: AT parser/alternative functions
> 
> In RmNet mode LARA-L6 exposes the following interfaces:
> If 0: Diagnostic
> If 1: AT parser
> If 2: AT parser
> If 3: AT parset/alternative functions
> If 4: RMNET interface
> 
> In CDC-ECM mode LARA-L6 exposes the following interfaces:
> If 0: Diagnostic
> If 1: AT parser
> If 2: AT parser
> If 3: AT parset/alternative functions
> If 4: CDC-ECM interface
> 
> Signed-off-by: Davide Tronchin  <davide.tronchin.94@gmail.com>
> ---
>  drivers/usb/serial/option.c | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> index 697683e3f..fc0403891 100644
> --- a/drivers/usb/serial/option.c
> +++ b/drivers/usb/serial/option.c
> @@ -240,7 +240,7 @@ static void option_instat_callback(struct urb *urb);
>  #define QUECTEL_PRODUCT_UC15			0x9090
>  /* These u-blox products use Qualcomm's vendor ID */
>  #define UBLOX_PRODUCT_R410M			0x90b2
> -#define UBLOX_PRODUCT_R6XX			0x90fa
> +#define UBLOX_PRODUCT_LARA_R6		0x908b

That is not in sorted order :(

>  /* These Yuga products use Qualcomm's vendor ID */
>  #define YUGA_PRODUCT_CLM920_NC5			0x9625
>  
> @@ -581,6 +581,11 @@ static void option_instat_callback(struct urb *urb);
>  #define OPPO_VENDOR_ID				0x22d9
>  #define OPPO_PRODUCT_R11			0x276c
>  
> +/* These u-blox products use u-blox's vendor ID */
> +#define UBLOX_VENDOR_ID				0x1546
> +#define UBLOX_PRODUCT_LARA_L6			0x1341
> +#define UBLOX_PRODUCT_LARA_L6_RMNET		0x1342
> +#define UBLOX_PRODUCT_LARA_L6_ECM		0x1343
>  
>  /* Device flags */
>  
> @@ -1124,8 +1129,14 @@ static const struct usb_device_id option_ids[] = {
>  	/* u-blox products using Qualcomm vendor ID */
>  	{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
>  	  .driver_info = RSVD(1) | RSVD(3) },
> -	{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX),
> -	  .driver_info = RSVD(3) },

Why did you delete this device from the driver and not mention it at all
in the changelog text?

thanks,

greg k-h
Lars Melin Oct. 1, 2022, 7:40 a.m. UTC | #2
On 9/30/2022 22:23, Davide Tronchin wrote:
> The LARA-R6 module has the following USB identifiers:
> Vendor  ID: 0x05c6
> Product ID: 0x908b
> 
> The USB composition exposes the following interfaces:
> If 0: Diagnostic
> If 1: AT parser
> If 2: AT parser
> If 3: AT parser/alternative functions

The USB Id 05c6:908b belongs to Qualcomm and is not reserved for Ublox - 
it is used by other companies, Simtech is one of them.
The generic Windows driver from Qualcomm and the same driver from 
Simtech defines the interfaces as:

MI_00 Qualcomm HS-USB MSM Diagnostics 908B
MI_01 Qualcomm HS-USB NMEA 908B
MI_02 Qualcomm HS-USB Modem 908B-2
MI_03 Qualcomm HS-USB Modem 908B-3
MI_04 Qualcomm HS-USB WWAN Adapter 908B

MI_00 Simtech Wireless HS-USB MSM Diagnostics 908B
MI_01 Simtech Wireless HS-USB NMEA 908B
MI_02 Simtech Wireless HS-USB Modem 908B-2
MI_03 Simtech Wireless HS-USB Modem 908B-3
MI_04 Simtech Wireless HS-USB WWAN Adapter 908B

The net interface in both cases is a QMI interface
which has to be blacklisted in the option driver.
Please provide a v2 of your patch reflecting this.

thanks
Lars
diff mbox series

Patch

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 697683e3f..fc0403891 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -240,7 +240,7 @@  static void option_instat_callback(struct urb *urb);
 #define QUECTEL_PRODUCT_UC15			0x9090
 /* These u-blox products use Qualcomm's vendor ID */
 #define UBLOX_PRODUCT_R410M			0x90b2
-#define UBLOX_PRODUCT_R6XX			0x90fa
+#define UBLOX_PRODUCT_LARA_R6		0x908b
 /* These Yuga products use Qualcomm's vendor ID */
 #define YUGA_PRODUCT_CLM920_NC5			0x9625
 
@@ -581,6 +581,11 @@  static void option_instat_callback(struct urb *urb);
 #define OPPO_VENDOR_ID				0x22d9
 #define OPPO_PRODUCT_R11			0x276c
 
+/* These u-blox products use u-blox's vendor ID */
+#define UBLOX_VENDOR_ID				0x1546
+#define UBLOX_PRODUCT_LARA_L6			0x1341
+#define UBLOX_PRODUCT_LARA_L6_RMNET		0x1342
+#define UBLOX_PRODUCT_LARA_L6_ECM		0x1343
 
 /* Device flags */
 
@@ -1124,8 +1129,14 @@  static const struct usb_device_id option_ids[] = {
 	/* u-blox products using Qualcomm vendor ID */
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
 	  .driver_info = RSVD(1) | RSVD(3) },
-	{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX),
-	  .driver_info = RSVD(3) },
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_LARA_R6) },
+	/* u-blox products using u-blox vendor ID */
+	{ USB_DEVICE(UBLOX_VENDOR_ID, UBLOX_PRODUCT_LARA_L6),
+	  .driver_info = RSVD(4) },
+	{ USB_DEVICE(UBLOX_VENDOR_ID, UBLOX_PRODUCT_LARA_L6_RMNET),
+	  .driver_info = RSVD(4) },
+	{ USB_DEVICE(UBLOX_VENDOR_ID, UBLOX_PRODUCT_LARA_L6_ECM),
+	  .driver_info = RSVD(4) },
 	/* Quectel products using Quectel vendor ID */
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
 	  .driver_info = NUMEP2 },