98b5433d063e1de7bd4a5ae65ff0f62b2957e6be
[openwrt/staging/stintel.git] / target / linux / generic / hack-6.1 / 780-usb-net-MeigLink_modem_support.patch
1 From f81700b6bb2eda3756247bce472d8eaf6f466f61 Mon Sep 17 00:00:00 2001
2 From: OpenWrt community <openwrt-devel@lists.openwrt.org>
3 Date: Wed, 13 Jul 2022 13:49:26 +0200
4 Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
5
6 ---
7 drivers/net/usb/qmi_wwan.c | 1 +
8 drivers/usb/serial/option.c | 7 +++++++
9 2 files changed, 8 insertions(+)
10
11 --- a/drivers/net/usb/qmi_wwan.c
12 +++ b/drivers/net/usb/qmi_wwan.c
13 @@ -1082,12 +1082,18 @@ static const struct usb_device_id produc
14 USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
15 .driver_info = (unsigned long)&qmi_wwan_info,
16 },
17 + { /* Meiglink SGM828 */
18 + USB_DEVICE_AND_INTERFACE_INFO(0x2dee, 0x4d49, USB_CLASS_VENDOR_SPEC, 0x10, 0x05),
19 + .driver_info = (unsigned long)&qmi_wwan_info,
20 + },
21 +
22 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */
23 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */
24 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
25 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
26 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
27 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
28 + {QMI_MATCH_FF_FF_FF(0x05c6, 0xf601)}, /* MeigLink SLM750 */
29
30 /* 3. Combined interface devices matching on interface number */
31 {QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
32 --- a/drivers/usb/serial/option.c
33 +++ b/drivers/usb/serial/option.c
34 @@ -247,6 +247,11 @@ static void option_instat_callback(struc
35 #define UBLOX_PRODUCT_R410M 0x90b2
36 /* These Yuga products use Qualcomm's vendor ID */
37 #define YUGA_PRODUCT_CLM920_NC5 0x9625
38 +/* These MeigLink products use Qualcomm's vendor ID */
39 +#define MEIGLINK_PRODUCT_SLM750 0xf601
40 +
41 +#define MEIGLINK_VENDOR_ID 0x2dee
42 +#define MEIGLINK_PRODUCT_SLM828 0x4d49
43
44 #define QUECTEL_VENDOR_ID 0x2c7c
45 /* These Quectel products use Quectel's vendor ID */
46 @@ -1144,6 +1149,11 @@ static const struct usb_device_id option
47 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
48 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
49 .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
50 + /* MeiG */
51 + { USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x01) },
52 + { USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x02) },
53 + { USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x03) },
54 + { USB_DEVICE_AND_INTERFACE_INFO(MEIGLINK_VENDOR_ID, MEIGLINK_PRODUCT_SLM828, USB_CLASS_VENDOR_SPEC, 0x10, 0x04) },
55 /* Quectel products using Qualcomm vendor ID */
56 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
57 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
58 @@ -1185,6 +1195,11 @@ static const struct usb_device_id option
59 .driver_info = ZLP },
60 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
61 .driver_info = RSVD(4) },
62 + /* Meiglink products using Qualcomm vendor ID */
63 + // Works OK. In case of some issues check macros that are used by Quectel Products
64 + { USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0xff, 0xff),
65 + .driver_info = NUMEP2 },
66 + { USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0, 0) },
67 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
68 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
69 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },