Message ID | 0041DFA5200EFB1B+20240803074619.563116-1-yt@radxa.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | USB: serial: option: add MeiG Smart SRM825L | expand |
On 2024-08-03 14:46, ZHANG Yuntian wrote: > Add support for MeiG Smart SRM825L which is based on Qualcomm 315 chip. > > T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 > D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 > P: Vendor=2dee ProdID=4d22 Rev= 4.14 > S: Manufacturer=MEIG > S: Product=LTE-A Module > S: SerialNumber=6f345e48 > C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option > E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option > E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option > E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option > E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) > E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan > E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms > E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > That ProdID is already used by MeiG SR815 which has the same composition but different Protocol values. Is MeiG really that short of ProductID's that they have to cannibalize on an already used one? lsusb for SR815: T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 P: Vendor=2dee ProdID=4d22 Rev= 4.14 S: Manufacturer=MEIG S: Product=LTE-A Module S: SerialNumber=123456 C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none) E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms thanks Lars
Hi Lars, On 2024/8/3 19:49, Lars Melin wrote: > On 2024-08-03 14:46, ZHANG Yuntian wrote: >> Add support for MeiG Smart SRM825L which is based on Qualcomm 315 chip. >> >> T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 >> D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 >> P: Vendor=2dee ProdID=4d22 Rev= 4.14 >> S: Manufacturer=MEIG >> S: Product=LTE-A Module >> S: SerialNumber=6f345e48 >> C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA >> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option >> E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option >> E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms >> E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option >> E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms >> E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option >> E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms >> E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) >> E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan >> E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms >> E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms >> > > That ProdID is already used by MeiG SR815 which has the same composition > but different Protocol values. > Is MeiG really that short of ProductID's that they have to cannibalize > on an already used one? Unfortunately I think this is the case. In fact, my initial research is actually based on this SRM815 discussion thread: https://whrl.pl/Rgk1Lv I'm currently using this exact command sequence (supposedly for SRM815) on my OpenWrt router to get the card working. The patch is separately tested on a ROCK 4SE since it is easier for me to build Debian kernel than OpenWrt kernel. Here is the ATI output from my card, which confirms that it is indeed a different model: Manufacturer: MEIG INCORPORATED Model: SRM825L Revision: SRM825L_6.0.5_EQ100 IMEI: [REDACTED] +GCAP: +CGSM I did not add SRM815 support (despite the Protocol values are also available on that thread) because I don't have the device to test, and I don't know if there are more such devices. > > lsusb for SR815: > > T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 > D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 > P: Vendor=2dee ProdID=4d22 Rev= 4.14 > S: Manufacturer=MEIG > S: Product=LTE-A Module > S: SerialNumber=123456 > C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none) > E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) > E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) > E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) > E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) > E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) > E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms > E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > > > thanks > Lars > > >
This was my first submitted patch so I forgot to run get_maintainer.pl and collect the CC list, so I'm sending this out as a reminder. qmi_wwan part was accepted a while ago: https://git.kernel.org/netdev/net/c/1ca645a2f74a On 2024/8/3 15:46, ZHANG Yuntian wrote: > Add support for MeiG Smart SRM825L which is based on Qualcomm 315 chip. > > T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 > D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 > P: Vendor=2dee ProdID=4d22 Rev= 4.14 > S: Manufacturer=MEIG > S: Product=LTE-A Module > S: SerialNumber=6f345e48 > C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option > E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option > E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option > E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option > E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms > E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) > E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan > E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms > E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms > E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms > > Signed-off-by: ZHANG Yuntian <yt@radxa.com> > --- > drivers/usb/serial/option.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c > index 311040f9b9352..6811dbd2f4c08 100644 > --- a/drivers/usb/serial/option.c > +++ b/drivers/usb/serial/option.c > @@ -621,6 +621,8 @@ static void option_instat_callback(struct urb *urb); > #define MEIGSMART_VENDOR_ID 0x2dee > /* MeiG Smart SLM320 based on UNISOC UIS8910 */ > #define MEIGSMART_PRODUCT_SLM320 0x4d41 > +/* MeiG Smart SRM825L based on Qualcomm 315 */ > +#define MEIGSMART_PRODUCT_SRM825L 0x4d22 > > /* Device flags */ > > @@ -2366,6 +2368,9 @@ static const struct usb_device_id option_ids[] = { > { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, > { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) }, > { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) }, > + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x30) }, > + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x40) }, > + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x60) }, > { } /* Terminating entry */ > }; > MODULE_DEVICE_TABLE(usb, option_ids);
On Sat, Aug 17, 2024 at 04:58:24PM +0800, ZHANG Yuntian wrote: > This was my first submitted patch so I forgot to run get_maintainer.pl and > collect the CC list, so I'm sending this out as a reminder. > > qmi_wwan part was accepted a while ago: > > https://git.kernel.org/netdev/net/c/1ca645a2f74a It is vacation time in Europe for many of us, please give us a few weeks to get back and catch up with things like this. thanks, greg k-h
On Sat, Aug 03, 2024 at 03:46:07PM +0800, ZHANG Yuntian wrote: > Add support for MeiG Smart SRM825L which is based on Qualcomm 315 chip. > Signed-off-by: ZHANG Yuntian <yt@radxa.com> Now applied, thanks. Johan
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 311040f9b9352..6811dbd2f4c08 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -621,6 +621,8 @@ static void option_instat_callback(struct urb *urb); #define MEIGSMART_VENDOR_ID 0x2dee /* MeiG Smart SLM320 based on UNISOC UIS8910 */ #define MEIGSMART_PRODUCT_SLM320 0x4d41 +/* MeiG Smart SRM825L based on Qualcomm 315 */ +#define MEIGSMART_PRODUCT_SRM825L 0x4d22 /* Device flags */ @@ -2366,6 +2368,9 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x60) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids);
Add support for MeiG Smart SRM825L which is based on Qualcomm 315 chip. T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 P: Vendor=2dee ProdID=4d22 Rev= 4.14 S: Manufacturer=MEIG S: Product=LTE-A Module S: SerialNumber=6f345e48 C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=896mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms Signed-off-by: ZHANG Yuntian <yt@radxa.com> --- drivers/usb/serial/option.c | 5 +++++ 1 file changed, 5 insertions(+)