From patchwork Thu May 19 02:34:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Q2FybCBZaW4o5q635byg5oiQKQ==?= X-Patchwork-Id: 12854466 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42236C433EF for ; Thu, 19 May 2022 02:34:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232917AbiESCeu (ORCPT ); Wed, 18 May 2022 22:34:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229437AbiESCes (ORCPT ); Wed, 18 May 2022 22:34:48 -0400 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2053.outbound.protection.outlook.com [40.107.215.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5EA3D6819; Wed, 18 May 2022 19:34:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FRVU0tRtJeVps9rnGHJHFMzWYKzgvw0cmJa5+ST5SEHZAuPTOQeugj7NUEmrXRy4kydcoH11+c+w5W8clJHmPZjnS5r0+PLJVZr/2MdpvOvLzI3eDXRL61zCM8hyaTbSrKey6ohX3ILqkRehekHMg5jJ6WUQM5omQINVVvOGXDuhYk2dDALreof3/R0VUOG1NB+Sr22Tij68x0JJ6nBUG+yCM6lsHbmeQVv05sb4zczyeIMaeY/CQFBJ+xK2HLaAYwgdYrlCmDXJ7Lw6ncI5371rRzA8RBlpEeH0k6xd+hRCrtOhZzv5HRKSYMH0lcleysJSxpdeZCMOccutnaKyTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3S6EdgBHw6Pthj0lWA0AAuFNVuorqRrhp4WwurFcj2g=; b=WtDDL/ncdu4uDyP0w3zCI2ttpFugTEL9Gfdlun94hN40AzH40SMJD2KmWbcALd8H5Dnly+LWPapiPOdytTSCMd//loM7r7p7b3pwOV3WDOwNwpFf+RwQrbldKGEd9YpyIq35ZVzLlptAydPkrlRMW+6j+Q8C4FrcX1kqNERNUJ40oFO2rAIFOvDDBk+AiSAXtYbhdNPJUxHiRD0tIyL9dgLyALE6ta/xKNkADWE6/sZv070OFGbLebkXINvoV2WFIHt1hLPeziP1tQub2WxCvagHnxF420YIsqy9ivGL7rUp6/eDA38Kz/NnTCuoNXaXYBh0Ay/jXQbEyUgde7PvDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=quectel.com; dmarc=pass action=none header.from=quectel.com; dkim=pass header.d=quectel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quectel.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3S6EdgBHw6Pthj0lWA0AAuFNVuorqRrhp4WwurFcj2g=; b=jLrZuak02rRqS1eI0nmDYgaafJelE75vGJuI0eDxxMFSjYxqRhmm0MWcquPBoVAekAYXgqWTaT2cLnAOPncK5HB7v53rr8V8parwq+fHbiA4P11tQi1S9ufzWfAHpeAAfz1wVtz8jizhX/XKtk5ltLprdLskWCRXXRdnmCBh1no= Received: from TYZPR06MB4270.apcprd06.prod.outlook.com (2603:1096:400:88::6) by KL1PR0601MB4515.apcprd06.prod.outlook.com (2603:1096:820:73::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Thu, 19 May 2022 02:34:44 +0000 Received: from TYZPR06MB4270.apcprd06.prod.outlook.com ([fe80::c0e6:3fb5:f84f:244c]) by TYZPR06MB4270.apcprd06.prod.outlook.com ([fe80::c0e6:3fb5:f84f:244c%3]) with mapi id 15.20.5273.016; Thu, 19 May 2022 02:34:43 +0000 From: =?eucgb2312_cn?b?Q2FybCBZaW4o0vPVxbPJKQ==?= To: "johan@kernel.org" , "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: "rspmn@arcor.de" , "Torres Liu" Subject: [PATCH v3] USB: serial: option: add Quectel BG95 modem Thread-Topic: [PATCH v3] USB: serial: option: add Quectel BG95 modem Thread-Index: AdhrKP7LqMSdK286SxiUVhDbg0sMbw== Date: Thu, 19 May 2022 02:34:43 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=quectel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 07afe1a8-c3a0-44d1-0069-08da3940221d x-ms-traffictypediagnostic: KL1PR0601MB4515:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4TFgc0YfTlxqHEUYNgK6jPqYmZEeIoamKo0+babgYsyss1TSuEPtcClWOli2Qt1ksHFOsrNrfWndNu5RXyKZoceKIvX6hrTiA2pItIGTquUg5eMCf7wnQhVpBATL1YWPoRlmq6O5Y5xyyhkcNJglXX9PEgk4196bkqXZVgBVetUOMiNl4DhpO6JnK3fP3dU6E597HcR63gTcKIB1Ft8vsXsBsWM/MsfdATOndxrFea/gtZs32g8UB/wTgupMPoalhTCzQ94A7Q93cytKOtqWpwMFQ2mMSL+62rDDiuyajHRjNUX5BWQ2W+zov3LemDKRlr1hmJigYOQlW/zub3r796TyLCGbQ346U+h2jjbOT4R6ktYOa//xQgN3YMxJMPZABmvqJVvTp7inssPB3xDa93+1GbN+CSWavD6M6DNkzChHH1P3WEF9vKt7WJ/6+5bTv9oyBTrt60q/odqUdotvpq/x52ULDHDVY89DImbkeEUX3gYHxfsrP5kMqXZWPVSz2VKhS0wFnWLTWA8tnUCQ7IzVaVosrpulGhLvuTfnNGY//sMCF8NX8UQNklmhZCn0AivNLljuj8AKUo0ws1TcWBBzLflgLpQ4hzhgRwICmPggtSEymDC0eqMpR+oSo/dYamYAKx5lbXy2ad5BYG/34Z80rp7M8EZcH2FSEfCETNVTwApkzv2RsMTRy/7EV3tkBLJwCzSi0HZvPKaPCMGk1g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR06MB4270.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(6506007)(9686003)(26005)(7696005)(76116006)(66446008)(83380400001)(86362001)(107886003)(186003)(64756008)(52536014)(5660300002)(71200400001)(8936002)(66556008)(66476007)(66946007)(8676002)(4326008)(85182001)(38100700002)(122000001)(55016003)(38070700005)(33656002)(2906002)(110136005)(316002)(54906003)(508600001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?eucgb2312_cn?b?V3dmR01VMFNSQzNmMnRTaXVj?= =?eucgb2312_cn?b?WXRuenpHZytrc000b0czUnVRZFA1TDZZVEFMdDBRTERWZUFrdFI1ZnRrbithalc2?= =?eucgb2312_cn?b?Wnprd1ZCREFNWmo1bUlON0JreE9LQXU5QWxRWlBEaDZEb2NyQlhXeFFvQVNsOWJ5?= =?eucgb2312_cn?b?MkpDS2E0dnlyVlVpVzFELzBHK1ppVGErK3RZRzNXOXZFa0ZSeWZiSFBJR0h5Mm14?= =?eucgb2312_cn?b?a1pSc0ZMTVkzWnRNMkRqamlpa05iRnJtRlJlYk1LVHpwQXI1b05mVUh3YWhsWEVY?= =?eucgb2312_cn?b?NEF2L3FDYWFEMFJGeFJDNUd5NWZpaWlSL29qQkhzMWtEYkwrYTFBcndQanhMZ2Fs?= =?eucgb2312_cn?b?aHhhS3F6aW9rbnFuUlBvcWJnWG1CRlFIRW1BZ2ZFK1FMUUxQVnBZekQydXJpN3li?= =?eucgb2312_cn?b?NU1OYWErTlpqa1JzMHZvQ2k5SDhvdXhnVzUzN0w1Zk90L0VNZTh5U1Q0RXE5VHJX?= =?eucgb2312_cn?b?VTM3aS90czZvSVQxelFGejZ2QmpJYlBMNEVtUDhoWnUwMmw3ZkMyU1RobGpmbHNa?= =?eucgb2312_cn?b?RGVpTmtsRWw0WTZhazZqL0NVVUxqWUpDZlA4OGw5OGhJQWpnMG5jMUU5Z21zRDc2?= =?eucgb2312_cn?b?WTVncGJxdmZac3hSRVNQNUxzQmRyNURFSEd3aWRPZ3BIVGh0QXFxM1MwWkZKTk54?= =?eucgb2312_cn?b?QTUwZHcrbkdkTlc3VDIveFRkRWpLTzVtcGRkVkE0ZHdxbXBsbzFsVGJtUjJMWjRs?= =?eucgb2312_cn?b?TVlocndOME5VVmQ5MnhCT0M4WTdUT0oySUVhb2FSbGcwaGdibGlQQTV4aDdWOTJO?= =?eucgb2312_cn?b?TlppU1RlNDVhb3J1Vzh1S2ZhWW5OcjVPdXJvQzBaWTBZR3V4UWpFR21zWVBveXow?= =?eucgb2312_cn?b?eFNXeDg3UjUwa29Kcmt0MC9Ddm13Wmxjalc5VHpqOThxN0I0MWVCK2oxNHF2RGJK?= =?eucgb2312_cn?b?S0k0bXFaM04ra2Y2OHdhVDFjRE9KQTYvcHJISndnVTRCamxlb3FGNzZvOTdmWkJY?= =?eucgb2312_cn?b?eW5NdXR5cUZqQlpsZS9wNXdvNWJXZ082RDF4dmc2ZEdKU24ydFY1dlZ2WldpclB1?= =?eucgb2312_cn?b?QTBsenBXajh3YnQ0bXdxa29CRGlEemVwdjkzVENwUVRBLzZXUkhReHlnc2Vka003?= =?eucgb2312_cn?b?cFAwYXpZUEg0SXFmTUR0MVBuY0ZJVE5BcmZsTnlxdnRaK3dEQS9VRXVWZE9QVkhs?= =?eucgb2312_cn?b?NGozbHJSUnhFYXJxeGIrU2JkdjFuWWZXS3F6L0JsVmxzZERpUjg2TkVxMmNWUC8r?= =?eucgb2312_cn?b?a1k3TkpOMjhpZ21KZjRtSGN6TXlhaHpXbkl0RmFPa3MzRS8rK0taNk1oOUJjWUg3?= =?eucgb2312_cn?b?NHRuY0lnV3JReVljZHZ5dlY2b3VKZ1loaU54a3pNTjYzUTE5M0hpVjdMTGVGc0J4?= =?eucgb2312_cn?b?Rm84OTdBd28zRDkralMxei81bXljblFpK0EybzFiU3FPYmFMdzNIVHFZWDBLSExl?= =?eucgb2312_cn?b?bDIyQ3doS0VISEYvWjhKcnlQRTR4Z3ByTDlDbWdZMHl3K3l6NFhJbm42OFcxSU9v?= =?eucgb2312_cn?b?MjNYNUliQ3hzYjBWUlhIdU1TMG9QVnAvZU96YWcrQS9yaThFL0tUbDc2QS8vbUlT?= =?eucgb2312_cn?b?OW5EU0I3NXZvclpjbUVYZlhtTEVrOStxT1ptQkdPbEZUS2xBOCtQc29BTHpwU0RV?= =?eucgb2312_cn?b?cFBxVDhVa25DekN1UjJZcGQxaXQwSHJjT2VpUEhNZHc5U1J4NjcraWhpY1NKdUM0?= =?eucgb2312_cn?b?Rlo2NHBrK3VTbEptZ3A4NUw3Y21mMWRWN1hGTWh6aERJdFMyRmFHS01yeGFLU0dw?= =?eucgb2312_cn?b?ejhmUFdVc0YzdGhqcDNFMUIycmN4NnoyRVdsUGdPR1I2bTdlS0NDaEVQVlE2Z1Z2?= =?eucgb2312_cn?b?ajNicGxrdnIyb1JoNFVHNGoyQkFFTEJIZTYvV3JISXlmVnd1Y1FHRTJvbXY1U2xt?= =?eucgb2312_cn?b?TE4vOStnbGpQMmRja0dXQXFrbU1FalVSKzZESGVhSVU0UVo0bmNva2dhdTZWcFVB?= =?eucgb2312_cn?b?RDdjZ2ZGc1QzeWNyNUpUVWxWSlZLOVVRU0xBU2xJeXNaR0lmdHpuRTFRZzlNeUN6?= =?eucgb2312_cn?b?aFd5VmVHclZpQUtKWTQ2MnFkTzNIU3AzbUlaL3V6eXQ2dS85MGlXWnR6eVltTmI4?= =?eucgb2312_cn?b?RlNoODBKMC8rMHMzSUI0MkN4WUJEUXdmeUEvT1UxKzlWOUNVRlI1MW1SYy96SmlS?= =?eucgb2312_cn?b?QVJwYmFiMWJyWE1mREFLVEZEOEFSWkprSENJTG5tUTN6dHZ2VllFN25BVjVhVkdj?= =?eucgb2312_cn?b?NXJYRHhwQ0FnMHIwU1dhelBFSGRDSnIwTklJMmN2YWx5TFFaaXdaanBDSHJBNjRl?= =?eucgb2312_cn?b?TlVKOEt1RGhnejFtS0dFYjg3NkQwWkJGMWkyOHA2RFBIeCs5MXJSZjBnY0FMSlRq?= =?eucgb2312_cn?b?UFZZZz09?= MIME-Version: 1.0 X-OriginatorOrg: quectel.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB4270.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 07afe1a8-c3a0-44d1-0069-08da3940221d X-MS-Exchange-CrossTenant-originalarrivaltime: 19 May 2022 02:34:43.8737 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7730d043-e129-480c-b1ba-e5b6a9f476aa X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: xKb/AjEIX2u5CMOWvv83rdC8o03Zgsxkrybi3KMB7WowzaNJHJH9dfM+6X84bysIjm/ZjQYAd+g5dk4xB0gwpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB4515 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org The BG95 modem has 3 USB configurations that are configurable via the AT command AT+QCFGEXT="usbnet",["ecm"|"modem"|"rmnet"] which make the modem enumerate with the following interfaces, respectively: "modem": Diag + GNSS + Modem + Modem "ecm" : Diag + GNSS + Modem + ECM "rmnet": Diag + GNSS + Modem + QMI Don't support Full QMI messages (e.g WDS_START_NETWORK_INTERFACE) A detailed description of the USB configuration for each mode follows: +QCFGEXT: "usbnet","modem" -------------------------- T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=2c7c ProdID=0700 Rev= 0.00 S: Manufacturer=Quectel, Incorporated S: Product=Quectel LPWA Module S: SerialNumber=884328a2 C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +QCFGEXT: "usbnet","ecm" ------------------------ T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=2c7c ProdID=0700 Rev= 0.00 S: Manufacturer=Quectel, Incorporated S: Product=Quectel LPWA Module S: SerialNumber=884328a2 C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA A: FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00 I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms I: If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +QCFGEXT: "usbnet","rmnet" -------------------------- T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=2c7c ProdID=0700 Rev= 0.00 S: Manufacturer=Quectel, Incorporated S: Product=Quectel LPWA Module S: SerialNumber=884328a2 C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms Signed-off-by: Carl Yin --- v3: 1. use USB_DEVICE_INTERFACE_CLASS instead of USB_DEVICE_AND_INTERFACE_INFO 2. introduce limitations of QMI in commit message v2: add at+qcfgext="usbnet","rmnet" and RSVD(3) --- drivers/usb/serial/option.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 152ad8826..e60425bbf 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -1137,6 +1137,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, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0, 0) }, + { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0700, 0xff), /* BG95 */ + .driver_info = RSVD(3) | ZLP }, { 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),