From patchwork Thu Jan 25 07:41:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schramm X-Patchwork-Id: 10183733 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 965B060233 for ; Thu, 25 Jan 2018 07:42:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8859B28A24 for ; Thu, 25 Jan 2018 07:42:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7D11728A2C; Thu, 25 Jan 2018 07:42:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1A58228A24 for ; Thu, 25 Jan 2018 07:42:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751258AbeAYHmK (ORCPT ); Thu, 25 Jan 2018 02:42:10 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:43548 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751081AbeAYHmH (ORCPT ); Thu, 25 Jan 2018 02:42:07 -0500 Received: by mail-wm0-f65.google.com with SMTP id g1so12781990wmg.2; Wed, 24 Jan 2018 23:42:06 -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:in-reply-to:references; bh=4FIcyC9ke9bTskh3DKqqJaYbPs3wJBj05p2O04hUJ9s=; b=jbB4jYWBf9LS9nZ2dkjQZipnzsB13E9lQW65GqP3ips92Mdhm1nv5CR+h+2OPcwA5W kaUwxNmlBjqyUl3zkJ/XnMydBrEdkUpsgXEAYrSiCjXXoCHXUr5xloE0btnYnhiwkUXM g1wj/JHomY5e/pWleMqM8P8cxduX/MUfujl7irrbSayVcNd8EbX1F/pXosRa4EJAUByE 6Hn4KPAmZHUGewARCnEEef8IEFgJK+qhC+vdTzWlO24EY2MqbZfWCxHHa5go2mloUWQz 5CYSun9Gwv6GXK8yniAdJdlCEXh0VzaJviC9qSzQBiL4YFE2BTarUjwJBsXDSwgD8Vuk liog== 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:in-reply-to :references; bh=4FIcyC9ke9bTskh3DKqqJaYbPs3wJBj05p2O04hUJ9s=; b=Q2eCKpEfV/kPzv9OmAEFDri8TnoIi71NSoHV+6kNCDTPk0rfmVxEyDiBR9pWcGabxX Pk6tfuwcxEWrl+/1sY2+RA4+kbV0lnqtIzbr/s2tJ+06Yg4RWB1TKFJLp8BUBbkjLQuy QC+hkgjgO6pfTpnYaPIX8wi6OE0DdtOtKjCPM4ek6XXvNM8lvGv71h+fDkVQa04q1aSJ IUtcUgaY2LqUesN0lnmZN9yWrxzx2cxwUi+aEefGdqtIzFqVOw7TGxywzMDEXlkAeFvf 8ZgI9flRqRgtKw+QPINB8gAQCaNnEVMwl4qKk1ywfbzLilkntVUWYSSm5jvGAENq9EVd DbGw== X-Gm-Message-State: AKwxytcvpm2itmHyWQqpm+rNGABIP0CGm2WmjT16RX/2Bj7fZGohX3kj mJsRbMQSK7zQlwozr4VNK8k= X-Google-Smtp-Source: AH8x226EcprfoG1156D6jYAmm3GsPidlBR2SKu8M4+xbw1xnKodd9JKUW6wx1jVyNL4vZyzTrAscTw== X-Received: by 10.28.92.70 with SMTP id q67mr6832156wmb.43.1516866125914; Wed, 24 Jan 2018 23:42:05 -0800 (PST) Received: from sunsetshimmer.lan ([2a02:8108:17c0:1500:2bd4:ef21:bc80:a853]) by smtp.gmail.com with ESMTPSA id g15sm3927767wrb.66.2018.01.24.23.42.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jan 2018 23:42:05 -0800 (PST) From: Tobias Schramm To: kvalo@qca.qualcomm.com, ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org Cc: Tobias Schramm Subject: [PATCH v2 2/2] ath10k: Add support for Uiquiti rebranded QCA988X v2 Date: Thu, 25 Jan 2018 08:41:31 +0100 Message-Id: <20180125074131.30622-3-tobleminer@gmail.com> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180125074131.30622-1-tobleminer@gmail.com> References: <20180125074131.30622-1-tobleminer@gmail.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some modern Ubiquiti devices contain a rebranded QCA988X rev2 with a custom Ubiquiti vendor and device id. This patch adds support for those devices, treating them as a QCA988X v2. Signed-off-by: Tobias Schramm --- drivers/net/wireless/ath/ath10k/core.c | 24 ++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/hw.h | 1 + drivers/net/wireless/ath/ath10k/pci.c | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index b29fdbd21ead..9fb38f2c1d6e 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -52,6 +52,30 @@ MODULE_PARM_DESC(cryptmode, "Crypto mode: 0-hardware, 1-software"); MODULE_PARM_DESC(rawmode, "Use raw 802.11 frame datapath"); static const struct ath10k_hw_params ath10k_hw_params_list[] = { + { + .id = QCA988X_HW_2_0_VERSION, + .dev_id = QCA988X_2_0_DEVICE_ID_UBNT, + .name = "qca988x hw2.0", + .patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR, + .uart_pin = 7, + .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL, + .otp_exe_param = 0, + .channel_counters_freq_hz = 88000, + .max_probe_resp_desc_thres = 0, + .cal_data_len = 2116, + .fw = { + .dir = QCA988X_HW_2_0_FW_DIR, + .board = QCA988X_HW_2_0_BOARD_DATA_FILE, + .board_size = QCA988X_BOARD_DATA_SZ, + .board_ext_size = QCA988X_BOARD_EXT_DATA_SZ, + }, + .hw_ops = &qca988x_ops, + .decap_align_bytes = 4, + .spectral_bin_discard = 0, + .vht160_mcs_rx_highest = 0, + .vht160_mcs_tx_highest = 0, + .n_cipher_suites = 8, + }, { .id = QCA988X_HW_2_0_VERSION, .dev_id = QCA988X_2_0_DEVICE_ID, diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h index 05f26e5858ad..5ae3b56acc19 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h @@ -22,6 +22,7 @@ #define ATH10K_FW_DIR "ath10k" +#define QCA988X_2_0_DEVICE_ID_UBNT (0x11ac) #define QCA988X_2_0_DEVICE_ID (0x003c) #define QCA6164_2_1_DEVICE_ID (0x0041) #define QCA6174_2_1_DEVICE_ID (0x003e) diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c index ffea348b2190..ccac6740795d 100644 --- a/drivers/net/wireless/ath/ath10k/pci.c +++ b/drivers/net/wireless/ath/ath10k/pci.c @@ -52,6 +52,7 @@ MODULE_PARM_DESC(reset_mode, "0: auto, 1: warm only (default: 0)"); #define ATH10K_PCI_NUM_WARM_RESET_ATTEMPTS 3 static const struct pci_device_id ath10k_pci_id_table[] = { + { PCI_VDEVICE(UBNT, QCA988X_2_0_DEVICE_ID_UBNT) }, /* PCI-E QCA988X V2 (Ubiquiti branded) */ { PCI_VDEVICE(ATHEROS, QCA988X_2_0_DEVICE_ID) }, /* PCI-E QCA988X V2 */ { PCI_VDEVICE(ATHEROS, QCA6164_2_1_DEVICE_ID) }, /* PCI-E QCA6164 V2.1 */ { PCI_VDEVICE(ATHEROS, QCA6174_2_1_DEVICE_ID) }, /* PCI-E QCA6174 V2.1 */ @@ -68,6 +69,7 @@ static const struct ath10k_pci_supp_chip ath10k_pci_supp_chips[] = { * hacks. ath10k doesn't have them and these devices crash horribly * because of that. */ + { QCA988X_2_0_DEVICE_ID_UBNT, QCA988X_HW_2_0_CHIP_ID_REV }, { QCA988X_2_0_DEVICE_ID, QCA988X_HW_2_0_CHIP_ID_REV }, { QCA6164_2_1_DEVICE_ID, QCA6174_HW_2_1_CHIP_ID_REV }, @@ -1977,6 +1979,7 @@ static int ath10k_pci_get_num_banks(struct ath10k *ar) struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); switch (ar_pci->pdev->device) { + case QCA988X_2_0_DEVICE_ID_UBNT: case QCA988X_2_0_DEVICE_ID: case QCA99X0_2_0_DEVICE_ID: case QCA9888_2_0_DEVICE_ID: @@ -3208,6 +3211,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev, u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr); switch (pci_dev->device) { + case QCA988X_2_0_DEVICE_ID_UBNT: case QCA988X_2_0_DEVICE_ID: hw_rev = ATH10K_HW_QCA988X; pci_ps = false;