mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From f81700b6bb2eda3756247bce472d8eaf6f466f61 Mon Sep 17 00:00:00 2001
 | 
						|
From: OpenWrt community <openwrt-devel@lists.openwrt.org>
 | 
						|
Date: Wed, 13 Jul 2022 13:49:26 +0200
 | 
						|
Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
 | 
						|
 | 
						|
---
 | 
						|
 drivers/net/usb/qmi_wwan.c  | 1 +
 | 
						|
 drivers/usb/serial/option.c | 7 +++++++
 | 
						|
 2 files changed, 8 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/net/usb/qmi_wwan.c
 | 
						|
+++ b/drivers/net/usb/qmi_wwan.c
 | 
						|
@@ -1076,6 +1076,11 @@ static const struct usb_device_id produc
 | 
						|
 		USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
 | 
						|
 		.driver_info = (unsigned long)&qmi_wwan_info,
 | 
						|
 	},
 | 
						|
+	{	/* Meiglink SGM828 */
 | 
						|
+		USB_DEVICE_AND_INTERFACE_INFO(0x2dee, 0x4d49, USB_CLASS_VENDOR_SPEC, 0x10, 0x05),
 | 
						|
+		.driver_info = (unsigned long)&qmi_wwan_info,
 | 
						|
+	},
 | 
						|
+
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)},	/* Quectel RG650V */
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)},	/* Quectel EC25, EC20 R2.0  Mini PCIe */
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)},	/* Quectel EP06/EG06/EM06 */
 | 
						|
@@ -1083,6 +1088,7 @@ static const struct usb_device_id produc
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)},	/* Quectel EM160R-GL */
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)},	/* Quectel RM500Q-GL */
 | 
						|
 	{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)},	/* Quectel RM520N */
 | 
						|
+	{QMI_MATCH_FF_FF_FF(0x05c6, 0xf601)},	/* MeigLink SLM750 */
 | 
						|
 
 | 
						|
 	/* 3. Combined interface devices matching on interface number */
 | 
						|
 	{QMI_FIXED_INTF(0x0408, 0xea42, 4)},	/* Yota / Megafon M100-1 */
 | 
						|
--- a/drivers/usb/serial/option.c
 | 
						|
+++ b/drivers/usb/serial/option.c
 | 
						|
@@ -247,6 +247,11 @@ static void option_instat_callback(struc
 | 
						|
 #define UBLOX_PRODUCT_R410M			0x90b2
 | 
						|
 /* These Yuga products use Qualcomm's vendor ID */
 | 
						|
 #define YUGA_PRODUCT_CLM920_NC5			0x9625
 | 
						|
+/* These MeigLink products use Qualcomm's vendor ID */
 | 
						|
+#define MEIGLINK_PRODUCT_SLM750			0xf601
 | 
						|
+
 | 
						|
+#define MEIGLINK_VENDOR_ID			0x2dee
 | 
						|
+#define MEIGLINK_PRODUCT_SLM828			0x4d49
 | 
						|
 
 | 
						|
 #define QUECTEL_VENDOR_ID			0x2c7c
 | 
						|
 /* These Quectel products use Quectel's vendor ID */
 | 
						|
@@ -1160,6 +1165,11 @@ static const struct usb_device_id option
 | 
						|
 	{ 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) },
 | 
						|
+	/* MeiG */
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x01) },
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x02) },
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x03) },
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x04) },
 | 
						|
 	/* Quectel products using Qualcomm vendor ID */
 | 
						|
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
 | 
						|
 	{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
 | 
						|
@@ -1201,6 +1211,11 @@ static const struct usb_device_id option
 | 
						|
 	  .driver_info = ZLP },
 | 
						|
 	{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
 | 
						|
 	  .driver_info = RSVD(4) },
 | 
						|
+	/* Meiglink products using Qualcomm vendor ID */
 | 
						|
+	// Works OK. In case of some issues check macros that are used by Quectel Products
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0xff, 0xff),
 | 
						|
+	  .driver_info = NUMEP2 },
 | 
						|
+	{ USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0, 0) },
 | 
						|
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
 | 
						|
 	  .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
 | 
						|
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
 |