From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05E40C00319 for ; Sat, 2 Mar 2019 12:32:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C811920863 for ; Sat, 2 Mar 2019 12:32:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="geCodx/n" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726430AbfCBMce (ORCPT ); Sat, 2 Mar 2019 07:32:34 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:32853 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726380AbfCBMcd (ORCPT ); Sat, 2 Mar 2019 07:32:33 -0500 Received: by mail-wr1-f65.google.com with SMTP id i12so644732wrw.0 for ; Sat, 02 Mar 2019 04:32:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bpQ6rOQ1K3tPapbkEB5LlO1uGMgHohiIQ843zMXqwR8=; b=geCodx/nqGOKzGMe1CbKl69WuHt0dsJZCmW1fPyGCpfiVujCBCqV/e7YP4IaBnVO9w OMbOGu+SHaySu5R7A5YgEZumpT77fbj8RBR+X7rt8o+ArNF4HMIFMJyM5/U82sptmG3X PMmQEbH/+JBF1y0ucRinirJu9vjImvGAQfUQi6DdIYfDA29kTp04nprEE13ZnYhhJSIV y1IXAdrQ8xOigI/gbeFLkJ3lwORC52XvPq/ipCvmKQa+5E7/2lplYJAl2gzUJRmj7Pxq swwun2iXh7seTJIjWfY32eqFhnZLHxSwWKh+YRrlos01croTpD17u+vWaPjyw2hJpMrD JhXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bpQ6rOQ1K3tPapbkEB5LlO1uGMgHohiIQ843zMXqwR8=; b=AXH7iFzeE441TjiEIIihn1nEAkVo7y7y0tqNdr2rYHoNHwk41ITNNWsfMzQ+XqZV0q az70XXJFfvFv85WNtQl8aDi08NEXtZoDQh+OuLQt2yEjKppgbHn9SdNcxlCVN7Tg8K7Z QZ/mmEstoqsmPnpT1S4J6sfetZ7/vrOAxdS9cdrCzEdytCfc0PmiP8lm5YBxvqudPd1w l7npXJLUHpkVFBJOFyGV/4+Lxpr5/+HKDgag/NxKfIIxCvLPJM8YG0xaFXEpGz6TIEeX tK0C+BD4aYE6j1WpeUkVyBgEd/VzQcNnyrCJx50ExtWWzREuHfsGTBDYax0dcXV1L3ex w4ZA== X-Gm-Message-State: APjAAAUBdGrXFle+PCG1b1g8Ee/oCf3GYLnPhg/9O0iImdZKZK7zUNdX cRKoV5sg/Wx2GpBpH7KaBt3KLuMv X-Google-Smtp-Source: APXvYqw78cZEXVUnmtvRLrfmwkPTg1HDcqh0kZjpELPcIUtdhPPlBD/DExyteUbUVAptWRsCueGNow== X-Received: by 2002:adf:ee82:: with SMTP id b2mr7282211wro.185.1551529951480; Sat, 02 Mar 2019 04:32:31 -0800 (PST) Received: from kristrev-XPS-15-9570.lan ([193.213.155.210]) by smtp.gmail.com with ESMTPSA id o12sm3599289wre.0.2019.03.02.04.32.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 02 Mar 2019 04:32:30 -0800 (PST) From: Kristian Evensen To: netdev@vger.kernel.org, davem@davemloft.net, bjorn@mork.no Cc: Kristian Evensen Subject: [PATCH net] qmi_wwan: Add support for Quectel EG12/EM12 Date: Sat, 2 Mar 2019 13:32:26 +0100 Message-Id: <20190302123226.14589-1-kristian.evensen@gmail.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Quectel EG12 (module)/EM12 (M.2 card) is a Cat. 12 LTE modem. The modem behaves in the same way as the EP06, so the "set DTR"-quirk must be applied and the diagnostic-interface check performed. Since the diagnostic-check now applies to more modems, I have renamed the function from quectel_ep06_diag_detected() to quectel_diag_detected(). Signed-off-by: Kristian Evensen --- drivers/net/usb/qmi_wwan.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 18af2f8eee96..74bebbdb4b15 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -976,6 +976,13 @@ static const struct usb_device_id products[] = { 0xff), .driver_info = (unsigned long)&qmi_wwan_info_quirk_dtr, }, + { /* Quectel EG12/EM12 */ + USB_DEVICE_AND_INTERFACE_INFO(0x2c7c, 0x0512, + USB_CLASS_VENDOR_SPEC, + USB_SUBCLASS_VENDOR_SPEC, + 0xff), + .driver_info = (unsigned long)&qmi_wwan_info_quirk_dtr, + }, /* 3. Combined interface devices matching on interface number */ {QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */ @@ -1343,17 +1350,20 @@ static bool quectel_ec20_detected(struct usb_interface *intf) return false; } -static bool quectel_ep06_diag_detected(struct usb_interface *intf) +static bool quectel_diag_detected(struct usb_interface *intf) { struct usb_device *dev = interface_to_usbdev(intf); struct usb_interface_descriptor intf_desc = intf->cur_altsetting->desc; + u16 id_vendor = le16_to_cpu(dev->descriptor.idVendor); + u16 id_product = le16_to_cpu(dev->descriptor.idProduct); - if (le16_to_cpu(dev->descriptor.idVendor) == 0x2c7c && - le16_to_cpu(dev->descriptor.idProduct) == 0x0306 && - intf_desc.bNumEndpoints == 2) - return true; + if (id_vendor != 0x2c7c || intf_desc.bNumEndpoints != 2) + return false; - return false; + if (id_product == 0x0306 || id_product == 0x0512) + return true; + else + return false; } static int qmi_wwan_probe(struct usb_interface *intf, @@ -1390,13 +1400,13 @@ static int qmi_wwan_probe(struct usb_interface *intf, return -ENODEV; } - /* Quectel EP06/EM06/EG06 supports dynamic interface configuration, so + /* Several Quectel modems supports dynamic interface configuration, so * we need to match on class/subclass/protocol. These values are * identical for the diagnostic- and QMI-interface, but bNumEndpoints is * different. Ignore the current interface if the number of endpoints * the number for the diag interface (two). */ - if (quectel_ep06_diag_detected(intf)) + if (quectel_diag_detected(intf)) return -ENODEV; return usbnet_probe(intf, id); -- 2.19.1