diff mbox series

[1/2] wifi: ath12k: add qmi_cnss_feature_bitmap field to hardware parameters

Message ID 20230404032057.3236122-2-quic_cjhuang@quicinc.com (mailing list archive)
State Accepted
Commit 9981a3ac5887efaff8d2a9e3fb0d48612d8cf733
Delegated to: Kalle Valo
Headers show
Series wifi: ath12k: Not pull PCIe PERST pin for WCN7850 | expand

Commit Message

Carl Huang April 4, 2023, 3:20 a.m. UTC
Currently CNSS(Connectivity Subsystem) feature is assigned to
qmi_wlanfw_host_cap_req_msg_v01 request directly, this prevents
chip-specific CNSS features from being added easily.

Fix it by adding a new field qmi_cnss_feature_bitmap to hw_params
so chip-specific CNSS features can be assigned to this field and
later assigned to qmi_wlanfw_host_cap_req_msg_v01 request.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
---
 drivers/net/wireless/ath/ath12k/hw.c  | 5 +++++
 drivers/net/wireless/ath/ath12k/hw.h  | 2 ++
 drivers/net/wireless/ath/ath12k/qmi.c | 6 ++++--
 3 files changed, 11 insertions(+), 2 deletions(-)

Comments

Kalle Valo April 26, 2023, 2:30 p.m. UTC | #1
Carl Huang <quic_cjhuang@quicinc.com> wrote:

> Currently the CNSS (Connectivity Subsystem) QMI feature is assigned to
> qmi_wlanfw_host_cap_req_msg_v01 request directly, this prevents chip-specific
> CNSS features from being added easily.
> 
> Solve this by adding a new field qmi_cnss_feature_bitmap to hw_params so
> chip-specific CNSS features can be assigned to this field and later assigned to
> qmi_wlanfw_host_cap_req_msg_v01 request.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

2 patches applied to ath-next branch of ath.git, thanks.

9981a3ac5887 wifi: ath12k: add qmi_cnss_feature_bitmap field to hardware parameters
34c5625a459a wifi: ath12k: set PERST pin no pull request for WCN7850
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
index 1ffac7e3deaa..cc47cbf93f6b 100644
--- a/drivers/net/wireless/ath/ath12k/hw.c
+++ b/drivers/net/wireless/ath/ath12k/hw.c
@@ -906,6 +906,7 @@  static const struct ath12k_hw_params ath12k_hw_params[] = {
 
 		.hal_ops = &hal_qcn9274_ops,
 
+		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
 	},
 	{
 		.name = "wcn7850 hw2.0",
@@ -960,6 +961,8 @@  static const struct ath12k_hw_params ath12k_hw_params[] = {
 		.wmi_init = ath12k_wmi_init_wcn7850,
 
 		.hal_ops = &hal_wcn7850_ops,
+
+		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
 	},
 	{
 		.name = "qcn9274 hw2.0",
@@ -1013,6 +1016,8 @@  static const struct ath12k_hw_params ath12k_hw_params[] = {
 		.wmi_init = ath12k_wmi_init_qcn9274,
 
 		.hal_ops = &hal_qcn9274_ops,
+
+		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
 	},
 };
 
diff --git a/drivers/net/wireless/ath/ath12k/hw.h b/drivers/net/wireless/ath/ath12k/hw.h
index e3461004188b..e6c4223c283c 100644
--- a/drivers/net/wireless/ath/ath12k/hw.h
+++ b/drivers/net/wireless/ath/ath12k/hw.h
@@ -184,6 +184,8 @@  struct ath12k_hw_params {
 			 struct ath12k_wmi_resource_config_arg *config);
 
 	const struct hal_ops *hal_ops;
+
+	u64 qmi_cnss_feature_bitmap;
 };
 
 struct ath12k_hw_ops {
diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index 03ba245fbee9..4afba76b90fe 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -1942,8 +1942,10 @@  static int ath12k_qmi_host_cap_send(struct ath12k_base *ab)
 	req.cal_done_valid = 1;
 	req.cal_done = ab->qmi.cal_done;
 
-	req.feature_list_valid = 1;
-	req.feature_list = BIT(CNSS_QDSS_CFG_MISS_V01);
+	if (ab->hw_params->qmi_cnss_feature_bitmap) {
+		req.feature_list_valid = 1;
+		req.feature_list = ab->hw_params->qmi_cnss_feature_bitmap;
+	}
 
 	/* BRINGUP: here we are piggybacking a lot of stuff using
 	 * internal_sleep_clock, should it be split?