diff mbox series

[1/3] USB: serial: option: Add generic MDM9207 configurations

Message ID 20221225205224.270787-2-mjg59@srcf.ucam.org (mailing list archive)
State Superseded
Headers show
Series [1/3] USB: serial: option: Add generic MDM9207 configurations | expand

Commit Message

Matthew Garrett Dec. 25, 2022, 8:52 p.m. UTC
The Orbic Speed RC400L presents as a generic MDM9207 device that supports
multiple configurations. Add support for the two that expose a set of serial
ports.

Signed-off-by: Matthew Garrett <mgarrett@aurora.tech>
---
 drivers/usb/serial/option.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Lars Melin Dec. 26, 2022, 1:23 a.m. UTC | #1
On 12/26/2022 03:52, Matthew Garrett wrote:
> +	/* Qualcomm MDM9207 - 0: DIAG, 2: AT, 3: NMEA */
> +	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf601),
> +	  .driver_info = RSVD(1) | RSVD(4) | RSVD(5) },
> +	/* Qualcomm MDM9207 - 2: DIAG, 4: AT, 5: NMEA */
> +	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf622),
> +	  .driver_info = RSVD(0) | RSVD(1) | RSVD(3) | RSVD(6) },

Please tell what the reserved interfaces are used for and why they 
should be blacklisted.
The generic Qualcomm driver for 05c6:f601 (which is used by at least one 
other brand/reseller) specifies that interface#1 is for USB Modem (ppp 
dial-up).
I assume that you posses this dongle since you add support for it so you 
can easily verify that function which I assume has not been disabled in 
your version.

thanks
Lars
Matthew Garrett Dec. 26, 2022, 2:08 a.m. UTC | #2
On Mon, Dec 26, 2022 at 08:23:34AM +0700, Lars Melin wrote:
> On 12/26/2022 03:52, Matthew Garrett wrote:
> > +	/* Qualcomm MDM9207 - 0: DIAG, 2: AT, 3: NMEA */
> > +	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf601),
> > +	  .driver_info = RSVD(1) | RSVD(4) | RSVD(5) },
> > +	/* Qualcomm MDM9207 - 2: DIAG, 4: AT, 5: NMEA */
> > +	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf622),
> > +	  .driver_info = RSVD(0) | RSVD(1) | RSVD(3) | RSVD(6) },
> 
> Please tell what the reserved interfaces are used for and why they should be
> blacklisted.

Based on the shipped Windows Qualcomm drivers I have here, for F601 
interface 1 is bound by the qcmdm driver, interface 5 is bound by a QMI 
rmnet, and interfaces 0, 2 and 3 are bound by qcser. That leaves 
interface 4 for adb. For F622, 0 and 1 are RNDIS, 3 is the qcmdm 
interface, 2, 4 and 5 are serial, and 6 is adb. I'm not sure what qcmdm 
does. What format would you like this info in?

> The generic Qualcomm driver for 05c6:f601 (which is used by at least one
> other brand/reseller) specifies that interface#1 is for USB Modem (ppp
> dial-up).

Do you have a pointer to that driver? That seems consistent with the 
Windows drivers, but I have no experience with that.

> I assume that you posses this dongle since you add support for it so you can
> easily verify that function which I assume has not been disabled in your
> version.

Yup, I can check that once I know what it's supposed to be speaking :)
Matthew Garrett Dec. 26, 2022, 2:43 a.m. UTC | #3
On Mon, Dec 26, 2022 at 02:08:23AM +0000, Matthew Garrett wrote:

> Do you have a pointer to that driver? That seems consistent with the 
> Windows drivers, but I have no experience with that.

Ah, it looks like the qcmdm driver is actually just an alias for the 
serial interface, so including that here seems reasonable. I've only 
included devices I can verify, but if you like I can just turn the whole 
.inf data into IDs here?
Lars Melin Dec. 26, 2022, 5:38 a.m. UTC | #4
On 12/26/2022 09:43, Matthew Garrett wrote:
> On Mon, Dec 26, 2022 at 02:08:23AM +0000, Matthew Garrett wrote:
> 
> Ah, it looks like the qcmdm driver is actually just an alias for the
> serial interface, so including that here seems reasonable. I've only
> included devices I can verify, but if you like I can just turn the whole
> .inf data into IDs here?

Yes the WIN qcmdm driver is a serial driver but with dial-up support, in 
linux we use the option driver and ModemManager will handle the dial-up.
So for your v2 of the patch you only need to remove the blacklisting of 
interfaces #1 and #3 respectively and all should be good.
diff mbox series

Patch

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index dee79c7d82d5..edbb6054de91 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1119,6 +1119,12 @@  static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
 	  .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
+	/* Qualcomm MDM9207 - 0: DIAG, 2: AT, 3: NMEA */
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf601),
+	  .driver_info = RSVD(1) | RSVD(4) | RSVD(5) },
+	/* Qualcomm MDM9207 - 2: DIAG, 4: AT, 5: NMEA */
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0xf622),
+	  .driver_info = RSVD(0) | RSVD(1) | RSVD(3) | RSVD(6) },
 	/* Quectel products using Qualcomm vendor ID */
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),