From patchwork Mon Apr 1 09:19:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Govind Singh X-Patchwork-Id: 10879479 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9935E922 for ; Mon, 1 Apr 2019 09:21:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7EB7828814 for ; Mon, 1 Apr 2019 09:21:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 72FFE2882D; Mon, 1 Apr 2019 09:21:06 +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=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.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 2BB7128814 for ; Mon, 1 Apr 2019 09:21:06 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version: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=Tdf7aacIfd9JVV6xyRr55tcLMALjbHzHRJLHK9E3o5Y=; b=t1irWrmY3x4SKt RwoF/gdjK9UJ4agbyBSp2uql0LhgCxy0flE37OI5xwX+cRi/xnp31qPM6le5giHTnT5YHpBiNo5nf yV6IqcpdH99Llrgrir9FWpBMzG314q9dIW/8fIwkLKEc1kLl8WrchZKsBlFihI0+ZyDQUFDAkqxbW hygizflO3mTekQ7uwJF2/678kuuCZ66DcVOfYV6EHu+0OigHCzEllvckeXLN2yh1hWlAEZm+NVxF7 o4+Z3lz/S3XEgnyJnSw3HruLRpoSkyE7dAFEPi68vO4niVytOk9I6w3dGzFLH/OrR7doXCc1AjGx9 XWAsJzwlyWCFUxvPdqAw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hAt7o-0003wH-24; Mon, 01 Apr 2019 09:21:04 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hAt7i-0003u8-GB for ath10k@lists.infradead.org; Mon, 01 Apr 2019 09:21:02 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 02D9161E64; Mon, 1 Apr 2019 09:20:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1554110458; bh=JscZrE9atJ/rviyZJ/57zrpJH9qxa0w4VCUEeI/weUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TS04If/jQl+pbOm34twfKBdwyXzFVpzvxilgtJpKmBgHv9Y8a6sjKqM1adKpk63Ks j+NhSNOD9aPMneMi4xodv9uKpw4L0ZySiY1oSvJcQYbEGgdbP+TFI5nknn1Vq7zHjz JHNf1iqpowDoeJVl5JY7Xt3SckYugov24RhfQNF0= Received: from govinds-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: govinds@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id D3ACC61E64; Mon, 1 Apr 2019 09:20:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1554110456; bh=JscZrE9atJ/rviyZJ/57zrpJH9qxa0w4VCUEeI/weUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nWXdgawC9/fXKdoIp4bGqO9cpchUYVjsVHoxzLdnKXnFXfRDu0LdJC+mvnrzi4kkl imh95UOFCJDv4PQwn0kOX+h07VTxLe8HvZI3XQmovkhMDrP8CqUMgNY4BNrNBaUTX/ RNiFT1zF56iITCVDiiVoD6o5rs/dPjxTxVGtFLTI= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org D3ACC61E64 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=govinds@codeaurora.org From: Govind Singh To: ath10k@lists.infradead.org, robh@kernel.org Subject: [PATCH v3 1/2] dt: bindings: add dt entry for XO calibration support Date: Mon, 1 Apr 2019 14:49:25 +0530 Message-Id: <20190401091926.19119-2-govinds@codeaurora.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401091926.19119-1-govinds@codeaurora.org> References: <20190401091926.19119-1-govinds@codeaurora.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190401_022058_564589_80AB06BF X-CRM114-Status: GOOD ( 10.41 ) 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: devicetree@vger.kernel.org, Govind Singh , linux-wireless@vger.kernel.org Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add dt binding to get xo calibration data support for wifi rf clock. Signed-off-by: Govind Singh Reviewed-by: Rob Herring --- Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt index ae661e65354e..81859507db67 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt @@ -81,6 +81,7 @@ Optional properties: Definition: Name of external front end module used. Some valid FEM names for example: "microsemi-lx5586", "sky85703-11" and "sky85803" etc. +- qcom,xo-cal-data: xo cal offset to be configured in xo trim register. Example (to supply PCI based wifi block details): From patchwork Mon Apr 1 09:19:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Govind Singh X-Patchwork-Id: 10879481 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52BE31669 for ; Mon, 1 Apr 2019 09:21:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 386892880F for ; Mon, 1 Apr 2019 09:21:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2CA9A28820; Mon, 1 Apr 2019 09:21:07 +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=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.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 033022880F for ; Mon, 1 Apr 2019 09:21:06 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version: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=8tjK5MjyIa1HfUt1paplDwHFlTiDNvwLESBrkGrNmdM=; b=J9JIcPt5KoMJsu juZHByyl8BND9neqqwomakfpNtaQf3HqOBBXihmSecPGHJB4pTePjh/kyGjH55BzX74F/JgxPh3e2 6xYsD6u0iZwWR60ECMkf7RwjpIDbJXQ8NwawCE/xlyKZgOWQP9wku3MMC9nPsCXwbyQHpUjoXW54F EjgpSWuf5Evx4hMmjDww0JHouQIC5gpcWbJi6YQ+Mx7BZN4WrlpYjBeVc2pJRKHA4lU6qvcVn5sNH TUP5CDT9w8VlbN2IJ9IeyiFvH1M4iZDacjXGXBwr5v7B/NYyB5ZRaebjUtEDd4znI4xZDioXCL3uM 7UMxZ84UP5oRfCjsgN/g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hAt7p-0003xV-Ap; Mon, 01 Apr 2019 09:21:05 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hAt7k-0003vV-LA for ath10k@lists.infradead.org; Mon, 01 Apr 2019 09:21:02 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 31FAE61F5A; Mon, 1 Apr 2019 09:21:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1554110460; bh=qUPu6XBJvIgo98+m3rbdKAKKv7ZDCo1J8L8qcFZPZB4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YJxHPn1As8kgKkORd6tLWWnBIm0RGR24rfPrlmd7Hey+QDu02Auarxvswpe5PgdHv YcniTfAzm4+w8+gpPqisJZyj2HSoS+HRP01TIfRBY7UfdYufABdnbe5hAWG3BnhGjy G1Uw5EImd6axJUh4i5tVC+nz8VimsvGoV9phqVAI= Received: from govinds-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: govinds@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 6A96161F3D; Mon, 1 Apr 2019 09:20:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1554110459; bh=qUPu6XBJvIgo98+m3rbdKAKKv7ZDCo1J8L8qcFZPZB4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H1esYJOSoSImo1k6AYIoJ1+/Gkh04Pxf4NrepQLWmJ3LWUJjSnrjt+qFa13eim8Ne eMRBdXXOU8MLC5OP9VnGR/Zp1GhISNB3+6G5LeHXQN78flrCEilssFVzo9lr2BSkny wckiGl5kpNJ8jdMmFd3/PEMXVIrI40dUSDdnIZ1s= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 6A96161F3D Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=govinds@codeaurora.org From: Govind Singh To: ath10k@lists.infradead.org, robh@kernel.org Subject: [PATCH v3 2/2] ath10k: Add xo calibration support for wifi rf clock Date: Mon, 1 Apr 2019 14:49:26 +0530 Message-Id: <20190401091926.19119-3-govinds@codeaurora.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401091926.19119-1-govinds@codeaurora.org> References: <20190401091926.19119-1-govinds@codeaurora.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190401_022100_728858_E2727E08 X-CRM114-Status: GOOD ( 14.78 ) 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: devicetree@vger.kernel.org, Govind Singh , linux-wireless@vger.kernel.org Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP PMIC XO is the clock source for wifi rf clock in integrated wifi chipset ex: WCN3990. Due to board layout errors XO frequency drifts can cause wifi rf clock inaccuracy. XO calibration test tree in Factory Test Mode is used to find the best frequency offset(for example +/-2KHz )by programming XO trim register. This ensure system clock stays within required 20 ppm WLAN rf clock. Retrieve the xo trim offset via system firmware (e.g., device tree), especially in the case where the device doesn't have a useful EEPROM on which to store the calibrated XO offset (e.g., for integrated Wifi). Calibrated XO offset is sent to fw, which compensate the clock drift by programing the XO trim register. Signed-off-by: Govind Singh --- drivers/net/wireless/ath/ath10k/qmi.c | 12 ++++++++++++ drivers/net/wireless/ath/ath10k/snoc.c | 11 +++++++++++ drivers/net/wireless/ath/ath10k/snoc.h | 2 ++ 3 files changed, 25 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/ath/ath10k/qmi.c index 37b3bd629f48..99c140a6628d 100644 --- a/drivers/net/wireless/ath/ath10k/qmi.c +++ b/drivers/net/wireless/ath/ath10k/qmi.c @@ -302,10 +302,16 @@ static int ath10k_qmi_send_cal_report_req(struct ath10k_qmi *qmi) struct wlfw_cal_report_resp_msg_v01 resp = {}; struct wlfw_cal_report_req_msg_v01 req = {}; struct ath10k *ar = qmi->ar; + struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar); struct qmi_txn txn; int i, j = 0; int ret; + if (ar_snoc->xo_cal_supported) { + req.xo_cal_data_valid = 1; + req.xo_cal_data = ar_snoc->xo_cal_data; + } + ret = qmi_txn_init(&qmi->qmi_hdl, &txn, wlfw_cal_report_resp_msg_v01_ei, &resp); if (ret < 0) @@ -636,6 +642,7 @@ ath10k_qmi_ind_register_send_sync_msg(struct ath10k_qmi *qmi) struct wlfw_ind_register_resp_msg_v01 resp = {}; struct wlfw_ind_register_req_msg_v01 req = {}; struct ath10k *ar = qmi->ar; + struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar); struct qmi_txn txn; int ret; @@ -646,6 +653,11 @@ ath10k_qmi_ind_register_send_sync_msg(struct ath10k_qmi *qmi) req.msa_ready_enable_valid = 1; req.msa_ready_enable = 1; + if (ar_snoc->xo_cal_supported) { + req.xo_cal_enable_valid = 1; + req.xo_cal_enable = 1; + } + ret = qmi_txn_init(&qmi->qmi_hdl, &txn, wlfw_ind_register_resp_msg_v01_ei, &resp); if (ret < 0) diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index 54efe6be8f1d..a7f837f4dc53 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "ce.h" @@ -1189,6 +1190,16 @@ static int ath10k_snoc_resource_init(struct ath10k *ar) ar_snoc->ce_irqs[i].irq_line = res->start; } + ret = device_property_read_u32(&pdev->dev, "qcom,xo-cal-data", + &ar_snoc->xo_cal_data); + ath10k_dbg(ar, ATH10K_DBG_SNOC, "snoc xo-cal-data return %d\n", ret); + if (ret == 0) { + ar_snoc->xo_cal_supported = true; + ath10k_dbg(ar, ATH10K_DBG_SNOC, "xo cal data %x\n", + ar_snoc->xo_cal_data); + } + ret = 0; + out: return ret; } diff --git a/drivers/net/wireless/ath/ath10k/snoc.h b/drivers/net/wireless/ath/ath10k/snoc.h index 2b2f23cf7c5d..25383de8f17d 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.h +++ b/drivers/net/wireless/ath/ath10k/snoc.h @@ -91,6 +91,8 @@ struct ath10k_snoc { struct ath10k_clk_info *clk; struct ath10k_qmi *qmi; unsigned long int flags; + bool xo_cal_supported; + u32 xo_cal_data; }; static inline struct ath10k_snoc *ath10k_snoc_priv(struct ath10k *ar)