From patchwork Wed Jan 24 19:42:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schramm X-Patchwork-Id: 10183049 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 28F6260353 for ; Wed, 24 Jan 2018 19:43:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3079D28906 for ; Wed, 24 Jan 2018 19:43:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2553128924; Wed, 24 Jan 2018 19:43:37 +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=-4.2 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id BE15328906 for ; Wed, 24 Jan 2018 19:43:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=kiLcMqUisuNocS5D3atS5utu6FE9OFs5YkriFRNYGjE=; b=Y2sSm99NtjUM8R/ewu39aXjUOc +ds8f9ddzdry+LUUv/pQ+6coN0BriWG0v8mi4u/j3uXgZi83EagKtCQ9qBjaDKffFdrP9F5T/jsDp hmmX+2KXKzKiGSoj/Qfk00/IsRJa2z2HOOpvdwB736wqJZI2ONDmZn9iqLFzyxFNnP+rV1txVD/lT onL+V6faH4EGpaVj+C7I37MifTjCSfOTTgu5JLbrtetoewsYoOfVMAMfAb3nfNnd1GdMcj+hAXmIR 7NDX1ol/9OHFU+dJTvvdOOqCUvaqvauvaKygguilxgEJ1xXtl01xIHW2IbYRiU/oDcl28X4HQvk1b 5JFFoj5Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1eeQxI-00060Q-0g; Wed, 24 Jan 2018 19:43:32 +0000 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1eeQxD-0005tU-Ae for ath10k@lists.infradead.org; Wed, 24 Jan 2018 19:43:29 +0000 Received: by mail-wm0-x242.google.com with SMTP id 143so10519510wma.5 for ; Wed, 24 Jan 2018 11:43:16 -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=NVFwEWZyu7q6nj2OqBG7nCRCvvMpjiw9Zy7GxxkMovAoD/dJ01LgZgg/8Tl2lTnx4G KZgbvEG2JzwcMy2XZt7zErKue7wIXBFV5gtc5KQmOjmNNc7mm6UMKkXKC6yOuIzudjHx L/eXxRtmsECcsXDItRg6twDlTmadysnN0bBOXI6EUg9+XdyBtlzW7aZf/QPWdtk/iaD5 fQW6/AULQPKxtRuZ0zEgTRZPohRng0C+LsNySeMks7q3LlBByVSvR2H9cduxTxvdKrP0 R8OvXv+/r7Z5fV7JaQU1EFuGMOWjGRD1qt39QcoA6dG9QYAIEl1DfyvyJ2dHbiAvq+mT 3EDg== 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=syK51A6Rphb+m+JARa3NwpI9AUFnuLtYOJqy8MhaKIQWF2+bD78wFezcNz3r94tGQH t9py8aneRGW2yJ7g2B0jlADamM7Jp2LQtLSqO+pofgefdjS+P/7PwCjMWexnkiqsF/eF zDNoS6k1/eY0gBx21Lmm9IoDX7QT1wlUn4ssqdHZWfXczhAt1GdRU6EQ6X+ThAklQbwm nMsq8W1RCee0+pbpTrV2aPRyrK2iXMiiHochPCWF962gWbKdVKllMgaiBlKD0XELsQYJ gm8dgTaRqEju660QkDHx9NZxWdphBfL9C3b+oWlV7n3Xf3vqfbbMxeqVapTItJFnBeG8 upWg== X-Gm-Message-State: AKwxytc1AGPYKjF9LULWtWYa082SJQqvg/TSyX+UQMWRtrkZP08wVANk jwH/GFnAn6E6WGNPUaBahngB22Lt X-Google-Smtp-Source: AH8x226fM2s4TSUSstOe7wwtQ/wLO9FyqU0pPM4brrUqSZnUjulx3Gimwt2li6UJhRFPKfKvfVY3GQ== X-Received: by 10.28.32.15 with SMTP id g15mr5164139wmg.22.1516822995195; Wed, 24 Jan 2018 11:43:15 -0800 (PST) Received: from sunsetshimmer.lan ([2a02:8108:17c0:1500:f666:aee7:edff:2dfc]) by smtp.gmail.com with ESMTPSA id p32sm4394259wrc.9.2018.01.24.11.43.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jan 2018 11:43:14 -0800 (PST) From: Tobias Schramm To: ath10k@lists.infradead.org, kvalo@qca.qualcomm.com Subject: [PATCH 2/2] ath10k: Add support for Uiquiti rebranded QCA988X v2 Date: Wed, 24 Jan 2018 20:42:18 +0100 Message-Id: <20180124194218.11408-3-tobleminer@gmail.com> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180124194218.11408-1-tobleminer@gmail.com> References: <20180124194218.11408-1-tobleminer@gmail.com> X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tobias Schramm MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.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;