* [PATCH 0/2] Add xo calibration support for wifi rf clock
@ 2019-03-02 5:06 Govind Singh
2019-03-02 5:06 ` [PATCH 1/2] dt: bindings: add dt entry for XO calibration support Govind Singh
2019-03-02 5:06 ` [PATCH 2/2] ath10k: Add xo calibration support for wifi rf clock Govind Singh
0 siblings, 2 replies; 7+ messages in thread
From: Govind Singh @ 2019-03-02 5:06 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless, devicetree, Govind Singh
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.
Testing:
Tested on QCS404 platform(WCN3990 HW)
Tested FW: WLAN.HL.3.1-00959-QCAHLSWMTPLZ-1
Govind Singh (2):
dt: bindings: add dt entry for XO calibration support
ath10k: Add xo calibration support for wifi rf clock
.../devicetree/bindings/net/wireless/qcom,ath10k.txt | 1 +
drivers/net/wireless/ath/ath10k/qmi.c | 12 ++++++++++++
drivers/net/wireless/ath/ath10k/snoc.c | 10 ++++++++++
drivers/net/wireless/ath/ath10k/snoc.h | 2 ++
4 files changed, 25 insertions(+)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] dt: bindings: add dt entry for XO calibration support 2019-03-02 5:06 [PATCH 0/2] Add xo calibration support for wifi rf clock Govind Singh @ 2019-03-02 5:06 ` Govind Singh 2019-03-27 19:36 ` Rob Herring 2019-03-02 5:06 ` [PATCH 2/2] ath10k: Add xo calibration support for wifi rf clock Govind Singh 1 sibling, 1 reply; 7+ messages in thread From: Govind Singh @ 2019-03-02 5:06 UTC (permalink / raw) To: ath10k; +Cc: linux-wireless, devicetree, Govind Singh Add dt binding to get xo calibration data support for wifi rf clock. Signed-off-by: Govind Singh <govinds@codeaurora.org> --- 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..ab8042866e83 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. +- xo-cal-data: xo cal offset to be configured in xo trim register. Example (to supply PCI based wifi block details): -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt: bindings: add dt entry for XO calibration support 2019-03-02 5:06 ` [PATCH 1/2] dt: bindings: add dt entry for XO calibration support Govind Singh @ 2019-03-27 19:36 ` Rob Herring 0 siblings, 0 replies; 7+ messages in thread From: Rob Herring @ 2019-03-27 19:36 UTC (permalink / raw) To: Govind Singh; +Cc: ath10k, linux-wireless, devicetree On Sat, Mar 02, 2019 at 10:36:34AM +0530, Govind Singh wrote: > Add dt binding to get xo calibration data support for wifi rf clock. > > Signed-off-by: Govind Singh <govinds@codeaurora.org> > --- > 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..ab8042866e83 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. > +- xo-cal-data: xo cal offset to be configured in xo trim register. Should have a vendor prefix. Rob ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] ath10k: Add xo calibration support for wifi rf clock 2019-03-02 5:06 [PATCH 0/2] Add xo calibration support for wifi rf clock Govind Singh 2019-03-02 5:06 ` [PATCH 1/2] dt: bindings: add dt entry for XO calibration support Govind Singh @ 2019-03-02 5:06 ` Govind Singh 1 sibling, 0 replies; 7+ messages in thread From: Govind Singh @ 2019-03-02 5:06 UTC (permalink / raw) To: ath10k; +Cc: linux-wireless, devicetree, Govind Singh 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 <govinds@codeaurora.org> --- drivers/net/wireless/ath/ath10k/qmi.c | 12 ++++++++++++ drivers/net/wireless/ath/ath10k/snoc.c | 10 ++++++++++ drivers/net/wireless/ath/ath10k/snoc.h | 2 ++ 3 files changed, 24 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..7fa0f5c1d070 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -20,6 +20,7 @@ #include <linux/of.h> #include <linux/of_device.h> #include <linux/platform_device.h> +#include <linux/property.h> #include <linux/regulator/consumer.h> #include "ce.h" @@ -1189,6 +1190,15 @@ 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, "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); + } + 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) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 0/2] dt: bindings: add dt entry for XO calibration support @ 2022-12-14 12:18 Youghandhar Chintala 2022-12-14 12:18 ` [PATCH 1/2] " Youghandhar Chintala 0 siblings, 1 reply; 7+ messages in thread From: Youghandhar Chintala @ 2022-12-14 12:18 UTC (permalink / raw) To: ath11k; +Cc: linux-wireless, linux-kernel, Youghandhar Chintala Add dt binding to get XO calibration data support for Wi-Fi RF clock. Signed-off-by: Youghandhar Chintala <quic_youghand@quicinc.com> Youghandhar Chintala (2): dt: bindings: add dt entry for XO calibration support wifi: ath11k: PMIC XO cal data support .../bindings/net/wireless/qcom,ath11k.yaml | 4 ++++ drivers/net/wireless/ath/ath11k/ahb.c | 8 +++++++ drivers/net/wireless/ath/ath11k/core.h | 3 +++ drivers/net/wireless/ath/ath11k/qmi.c | 24 +++++++++++++++++++ drivers/net/wireless/ath/ath11k/qmi.h | 4 +++- 5 files changed, 42 insertions(+), 1 deletion(-) -- 2.38.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] dt: bindings: add dt entry for XO calibration support 2022-12-14 12:18 [PATCH 0/2] dt: bindings: add dt entry for XO calibration support Youghandhar Chintala @ 2022-12-14 12:18 ` Youghandhar Chintala 2022-12-19 10:49 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Youghandhar Chintala @ 2022-12-14 12:18 UTC (permalink / raw) To: ath11k; +Cc: linux-wireless, linux-kernel, Youghandhar Chintala Add dt binding to get XO calibration data support for Wi-Fi RF clock. Signed-off-by: Youghandhar Chintala <quic_youghand@quicinc.com> --- .../devicetree/bindings/net/wireless/qcom,ath11k.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml index f7cf135aa37f..205ee949daba 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml @@ -41,6 +41,10 @@ properties: * reg * reg-names + xo-cal-data: + description: + XO cal offset to be configured in XO trim register + qcom,ath11k-calibration-variant: $ref: /schemas/types.yaml#/definitions/string description: -- 2.38.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt: bindings: add dt entry for XO calibration support 2022-12-14 12:18 ` [PATCH 1/2] " Youghandhar Chintala @ 2022-12-19 10:49 ` Krzysztof Kozlowski 2022-12-19 13:45 ` Youghandhar Chintala (Temp) 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2022-12-19 10:49 UTC (permalink / raw) To: Youghandhar Chintala, ath11k; +Cc: linux-wireless, linux-kernel On 14/12/2022 13:18, Youghandhar Chintala wrote: > Add dt binding to get XO calibration data support for Wi-Fi RF clock. > > Signed-off-by: Youghandhar Chintala <quic_youghand@quicinc.com> Please use scripts/get_maintainers.pl to get a list of necessary people and lists to CC. It might happen, that command when run on an older kernel, gives you outdated entries. Therefore please be sure you base your patches on recent Linux kernel. You skipped all of them, so this has to be fixed. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt: bindings: add dt entry for XO calibration support 2022-12-19 10:49 ` Krzysztof Kozlowski @ 2022-12-19 13:45 ` Youghandhar Chintala (Temp) 0 siblings, 0 replies; 7+ messages in thread From: Youghandhar Chintala (Temp) @ 2022-12-19 13:45 UTC (permalink / raw) To: Krzysztof Kozlowski, ath11k, kvalo@kernel.org >> Kalle Valo, edumazet, kuba, pabeni, robh+dt Cc: linux-wireless, linux-kernel, netdev, devicetree On 12/19/2022 4:19 PM, Krzysztof Kozlowski wrote: > On 14/12/2022 13:18, Youghandhar Chintala wrote: >> Add dt binding to get XO calibration data support for Wi-Fi RF clock. >> >> Signed-off-by: Youghandhar Chintala <quic_youghand@quicinc.com> > Please use scripts/get_maintainers.pl to get a list of necessary people > and lists to CC. It might happen, that command when run on an older > kernel, gives you outdated entries. Therefore please be sure you base > your patches on recent Linux kernel. > > You skipped all of them, so this has to be fixed. > > Best regards, > Krzysztof Thank you Krzysztof. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-12-19 13:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-03-02 5:06 [PATCH 0/2] Add xo calibration support for wifi rf clock Govind Singh 2019-03-02 5:06 ` [PATCH 1/2] dt: bindings: add dt entry for XO calibration support Govind Singh 2019-03-27 19:36 ` Rob Herring 2019-03-02 5:06 ` [PATCH 2/2] ath10k: Add xo calibration support for wifi rf clock Govind Singh -- strict thread matches above, loose matches on Subject: below -- 2022-12-14 12:18 [PATCH 0/2] dt: bindings: add dt entry for XO calibration support Youghandhar Chintala 2022-12-14 12:18 ` [PATCH 1/2] " Youghandhar Chintala 2022-12-19 10:49 ` Krzysztof Kozlowski 2022-12-19 13:45 ` Youghandhar Chintala (Temp)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).