diff mbox series

USB: serial: option: add support for Quectel RM500Q in QDL mode

Message ID 20200114132923.GA18330@arcor.de (mailing list archive)
State Mainlined
Commit f3eaabbfd093c93d791eb930cc68d9b15246a65e
Headers show
Series USB: serial: option: add support for Quectel RM500Q in QDL mode | expand

Commit Message

Reinhard Speyerer Jan. 14, 2020, 1:29 p.m. UTC
Add support for Quectel RM500Q in QDL mode.

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2c7c ProdID=0800 Rev= 0.00
S:  Manufacturer=Qualcomm CDMA Technologies MSM
S:  Product=QUSB_BULK_SN:xxxxxxxx
S:  SerialNumber=xxxxxxxx
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

It is assumed that the ZLP flag required for other Qualcomm-based
5G devices also applies to Quectel RM500Q.

Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
---

Comments

Johan Hovold Jan. 16, 2020, 3:56 p.m. UTC | #1
On Tue, Jan 14, 2020 at 02:29:23PM +0100, Reinhard Speyerer wrote:
> Add support for Quectel RM500Q in QDL mode.
> 
> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
> D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=2c7c ProdID=0800 Rev= 0.00
> S:  Manufacturer=Qualcomm CDMA Technologies MSM
> S:  Product=QUSB_BULK_SN:xxxxxxxx
> S:  SerialNumber=xxxxxxxx
> C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> 
> It is assumed that the ZLP flag required for other Qualcomm-based
> 5G devices also applies to Quectel RM500Q.
> 
> Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>

Applied, thanks.

Johan
Johan Hovold Jan. 16, 2020, 4 p.m. UTC | #2
On Tue, Jan 14, 2020 at 02:29:23PM +0100, Reinhard Speyerer wrote:
> Add support for Quectel RM500Q in QDL mode.
> 
> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
> D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=2c7c ProdID=0800 Rev= 0.00
> S:  Manufacturer=Qualcomm CDMA Technologies MSM
> S:  Product=QUSB_BULK_SN:xxxxxxxx
> S:  SerialNumber=xxxxxxxx
> C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> 
> It is assumed that the ZLP flag required for other Qualcomm-based
> 5G devices also applies to Quectel RM500Q.
> 
> Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
> ---
> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> index 62bad1b2c18e..084cc2fff3ae 100644
> --- a/drivers/usb/serial/option.c
> +++ b/drivers/usb/serial/option.c
> @@ -1107,6 +1107,8 @@ static const struct usb_device_id option_ids[] = {
>  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
>  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
>  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
> +	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
> +	  .driver_info = ZLP },

By the way, don't you want NCTRL(0) here too (cf. Telit SBL FN980).

>  	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
>  	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },

Johan
Reinhard Speyerer Jan. 16, 2020, 10:35 p.m. UTC | #3
On Thu, Jan 16, 2020 at 05:00:16PM +0100, Johan Hovold wrote:
> On Tue, Jan 14, 2020 at 02:29:23PM +0100, Reinhard Speyerer wrote:
> > Add support for Quectel RM500Q in QDL mode.
> > 
> > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
> > D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> > P:  Vendor=2c7c ProdID=0800 Rev= 0.00
> > S:  Manufacturer=Qualcomm CDMA Technologies MSM
> > S:  Product=QUSB_BULK_SN:xxxxxxxx
> > S:  SerialNumber=xxxxxxxx
> > C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
> > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
> > E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > 
> > It is assumed that the ZLP flag required for other Qualcomm-based
> > 5G devices also applies to Quectel RM500Q.
> > 
> > Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
> > ---
> > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> > index 62bad1b2c18e..084cc2fff3ae 100644
> > --- a/drivers/usb/serial/option.c
> > +++ b/drivers/usb/serial/option.c
> > @@ -1107,6 +1107,8 @@ static const struct usb_device_id option_ids[] = {
> >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
> >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
> >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
> > +	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
> > +	  .driver_info = ZLP },
> 
> By the way, don't you want NCTRL(0) here too (cf. Telit SBL FN980).

Hi Johan,

NCTRL(0) is also used for the diag port of the Telit FN980 while it
is not used for the diag port of the RM500Q in Kristian's patch.

So far I have not observed any problems when using the diag and the QDL
ports of the RM500Q without NCTRL(0).

Unless you or Kristian would prefer to have this changed I would suggest
to keep it as is now.

Regards,
Reinhard
Johan Hovold Jan. 17, 2020, 10:19 a.m. UTC | #4
On Thu, Jan 16, 2020 at 11:35:42PM +0100, Reinhard Speyerer wrote:
> On Thu, Jan 16, 2020 at 05:00:16PM +0100, Johan Hovold wrote:
> > On Tue, Jan 14, 2020 at 02:29:23PM +0100, Reinhard Speyerer wrote:
> > > Add support for Quectel RM500Q in QDL mode.
> > > 
> > > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
> > > D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> > > P:  Vendor=2c7c ProdID=0800 Rev= 0.00
> > > S:  Manufacturer=Qualcomm CDMA Technologies MSM
> > > S:  Product=QUSB_BULK_SN:xxxxxxxx
> > > S:  SerialNumber=xxxxxxxx
> > > C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
> > > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
> > > E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > > E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > > 
> > > It is assumed that the ZLP flag required for other Qualcomm-based
> > > 5G devices also applies to Quectel RM500Q.
> > > 
> > > Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
> > > ---
> > > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> > > index 62bad1b2c18e..084cc2fff3ae 100644
> > > --- a/drivers/usb/serial/option.c
> > > +++ b/drivers/usb/serial/option.c
> > > @@ -1107,6 +1107,8 @@ static const struct usb_device_id option_ids[] = {
> > >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
> > >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
> > >  	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
> > > +	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
> > > +	  .driver_info = ZLP },
> > 
> > By the way, don't you want NCTRL(0) here too (cf. Telit SBL FN980).
> 
> Hi Johan,
> 
> NCTRL(0) is also used for the diag port of the Telit FN980 while it
> is not used for the diag port of the RM500Q in Kristian's patch.

But that's not necessarily the same firmware implementation running for
diag and QDL, right?
 
> So far I have not observed any problems when using the diag and the QDL
> ports of the RM500Q without NCTRL(0).
> 
> Unless you or Kristian would prefer to have this changed I would suggest
> to keep it as is now.

Fair enough. We can always add that later if someone confirms it isn't
needed or even incorrect (we should probably at least add a debug
statement for the return value of that control request).

Johan
diff mbox series

Patch

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 62bad1b2c18e..084cc2fff3ae 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1107,6 +1107,8 @@  static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
+	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
+	  .driver_info = ZLP },
 
 	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
 	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },