Re: [PATCH] USB: qcserial/option: make AT URCs work for Sierra Wireless MC73xx

2015-01-07 Thread Johan Hovold
On Tue, Jan 06, 2015 at 10:06:38PM +0100, Reinhard Speyerer wrote:
> As has been discussed in the thread starting with
> https://lkml.kernel.org/g/549748e9.d+sijzqu50f1r4lsal043...@arcor.de
> Sierra Wireless MC73xx devices with USB VID/PID 0x1199:0x68c0 require the
> option_send_setup() code to be used on the USB interface for the AT port
> to make unsolicited response codes work correctly. Move these devices from
> the qcserial driver where they have been added by commit
> 70a3615fc07c2330ed7c1e922f3c44f4a67c0762 ("usb: qcserial: add Sierra Wireless
> MC73xx") to the option driver and add a MC73xx-specific blacklist
> to ensure that
> 1. the sendsetup code is not used for the DIAG/DM and NMEA interfaces
> 2. the option driver does not attach to the QMI/network interfaces
> 
> Signed-off-by: Reinhard Speyerer 

Applied, thanks.

Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] USB: qcserial/option: make AT URCs work for Sierra Wireless MC73xx

2015-01-06 Thread Reinhard Speyerer
As has been discussed in the thread starting with
https://lkml.kernel.org/g/549748e9.d+sijzqu50f1r4lsal043...@arcor.de
Sierra Wireless MC73xx devices with USB VID/PID 0x1199:0x68c0 require the
option_send_setup() code to be used on the USB interface for the AT port
to make unsolicited response codes work correctly. Move these devices from
the qcserial driver where they have been added by commit
70a3615fc07c2330ed7c1e922f3c44f4a67c0762 ("usb: qcserial: add Sierra Wireless
MC73xx") to the option driver and add a MC73xx-specific blacklist
to ensure that
1. the sendsetup code is not used for the DIAG/DM and NMEA interfaces
2. the option driver does not attach to the QMI/network interfaces

Signed-off-by: Reinhard Speyerer 
---
diff -uprN linux-3.19-rc3/drivers/usb/serial/option.c 
linux-3.19-rc3-mc73xx-at-urcs/drivers/usb/serial/option.c
--- linux-3.19-rc3/drivers/usb/serial/option.c  2015-01-06 02:05:20.0 
+0100
+++ linux-3.19-rc3-mc73xx-at-urcs/drivers/usb/serial/option.c   2015-01-06 
20:17:31.875929978 +0100
@@ -234,6 +234,8 @@ static void option_instat_callback(struc
 
 #define QUALCOMM_VENDOR_ID 0x05C6
 
+#define SIERRA_VENDOR_ID   0x1199
+
 #define CMOTECH_VENDOR_ID  0x16d8
 #define CMOTECH_PRODUCT_6001   0x6001
 #define CMOTECH_PRODUCT_CMU_3000x6002
@@ -512,7 +514,7 @@ enum option_blacklist_reason {
OPTION_BLACKLIST_RESERVED_IF = 2
 };
 
-#define MAX_BL_NUM  8
+#define MAX_BL_NUM  11
 struct option_blacklist_info {
/* bitfield of interface numbers for OPTION_BLACKLIST_SENDSETUP */
const unsigned long sendsetup;
@@ -601,6 +603,11 @@ static const struct option_blacklist_inf
.reserved = BIT(1) | BIT(5),
 };
 
+static const struct option_blacklist_info sierra_mc73xx_blacklist = {
+   .sendsetup = BIT(0) | BIT(2),
+   .reserved = BIT(8) | BIT(10) | BIT(11),
+};
+
 static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -1098,6 +1105,8 @@ static const struct usb_device_id option
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */
+   { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x68c0, 0xff),
+ .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx 
*/
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),
diff -uprN linux-3.19-rc3/drivers/usb/serial/qcserial.c 
linux-3.19-rc3-mc73xx-at-urcs/drivers/usb/serial/qcserial.c
--- linux-3.19-rc3/drivers/usb/serial/qcserial.c2015-01-06 
02:05:20.0 +0100
+++ linux-3.19-rc3-mc73xx-at-urcs/drivers/usb/serial/qcserial.c 2015-01-06 
20:20:52.563922911 +0100
@@ -142,7 +142,6 @@ static const struct usb_device_id id_tab
{DEVICE_SWI(0x0f3d, 0x68a2)},   /* Sierra Wireless MC7700 */
{DEVICE_SWI(0x114f, 0x68a2)},   /* Sierra Wireless MC7750 */
{DEVICE_SWI(0x1199, 0x68a2)},   /* Sierra Wireless MC7710 */
-   {DEVICE_SWI(0x1199, 0x68c0)},   /* Sierra Wireless MC73xx */
{DEVICE_SWI(0x1199, 0x901c)},   /* Sierra Wireless EM7700 */
{DEVICE_SWI(0x1199, 0x901f)},   /* Sierra Wireless EM7355 */
{DEVICE_SWI(0x1199, 0x9040)},   /* Sierra Wireless Modem */
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html