Explorar o código

qcacmn: add CFR changes for QCN9100

Add CFR related changes for target type
QCN9100

Change-Id: I44f7a521fb38f883b6e1a6a71e39805a1da69687
Pavankumar Nandeshwar %!s(int64=4) %!d(string=hai) anos
pai
achega
37a9d7cf5c

+ 17 - 0
target_if/cfr/inc/target_if_cfr_enh.h

@@ -93,6 +93,23 @@
 
 #define STREAMFS_NUM_SUBBUF_PINE 255
 
+/* Max 4 users in MU case for Spruce */
+#define SPRUCE_CFR_MU_USERS 4
+
+#define SPRUCE_MAX_HEADER_LENGTH_WORDS 16
+
+#define SPRUCE_MAX_DATA_LENGTH_BYTES 16384
+
+/* Max size :
+ * sizeof(csi_cfr_header) + 200 bytes(cfr header) + 16384 bytes(cfr payload)
+ */
+#define STREAMFS_MAX_SUBBUF_SPRUCE \
+	(sizeof(struct csi_cfr_header) + \
+	 (SPRUCE_MAX_HEADER_LENGTH_WORDS * 4) + \
+	 SPRUCE_MAX_DATA_LENGTH_BYTES)
+
+#define STREAMFS_NUM_SUBBUF_SPRUCE 255
+
 /* enum macrx_freeze_tlv_version: Reported by uCode in enh_dma_header
  * MACRX_FREEZE_TLV_VERSION_1: Single MU UL user info reported by MAC
  * MACRX_FREEZE_TLV_VERSION_2: Upto 4 MU UL user info reported by MAC

+ 14 - 0
target_if/cfr/src/target_if_cfr_enh.c

@@ -533,6 +533,11 @@ static QDF_STATUS check_dma_length(struct look_up_table *lut,
 		    lut->payload_length <= PINE_MAX_DATA_LENGTH_BYTES) {
 			return QDF_STATUS_SUCCESS;
 		}
+	} else if (target_type == TARGET_TYPE_QCN9100) {
+		if (lut->header_length <= SPRUCE_MAX_HEADER_LENGTH_WORDS &&
+		    lut->payload_length <= SPRUCE_MAX_DATA_LENGTH_BYTES) {
+			return QDF_STATUS_SUCCESS;
+		}
 	} else {
 		if (lut->header_length <= CYP_MAX_HEADER_LENGTH_WORDS &&
 		    lut->payload_length <= CYP_MAX_DATA_LENGTH_BYTES) {
@@ -1160,6 +1165,8 @@ static void enh_prepare_cfr_header_txstatus(wmi_cfr_peer_tx_event_param
 		header->chip_type      = CFR_CAPTURE_RADIO_PINE;
 	else if (target_type == TARGET_TYPE_QCA5018)
 		header->chip_type      = CFR_CAPTURE_RADIO_MAPLE;
+	else if (target_type == TARGET_TYPE_QCN9100)
+		header->chip_type      = CFR_CAPTURE_RADIO_SPRUCE;
 	else
 		header->chip_type      = CFR_CAPTURE_RADIO_CYP;
 
@@ -1358,6 +1365,8 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 		header->chip_type      = CFR_CAPTURE_RADIO_PINE;
 	else if (target_type == TARGET_TYPE_QCA5018)
 		header->chip_type      = CFR_CAPTURE_RADIO_MAPLE;
+	else if (target_type == TARGET_TYPE_QCN9100)
+		header->chip_type      = CFR_CAPTURE_RADIO_SPRUCE;
 	else
 		header->chip_type      = CFR_CAPTURE_RADIO_CYP;
 
@@ -1746,6 +1755,11 @@ QDF_STATUS cfr_enh_init_pdev(struct wlan_objmgr_psoc *psoc,
 		pcfr->num_subbufs = STREAMFS_NUM_SUBBUF_MAPLE;
 		pcfr->chip_type = CFR_CAPTURE_RADIO_MAPLE;
 		pcfr->max_mu_users = MAPLE_CFR_MU_USERS;
+	} else if (target_type == TARGET_TYPE_QCN9100) {
+		pcfr->subbuf_size = STREAMFS_MAX_SUBBUF_SPRUCE;
+		pcfr->num_subbufs = STREAMFS_NUM_SUBBUF_SPRUCE;
+		pcfr->chip_type = CFR_CAPTURE_RADIO_SPRUCE;
+		pcfr->max_mu_users = SPRUCE_CFR_MU_USERS;
 	} else {
 		pcfr->subbuf_size = STREAMFS_MAX_SUBBUF_CYP;
 		pcfr->num_subbufs = STREAMFS_NUM_SUBBUF_CYP;

+ 1 - 0
umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h

@@ -99,6 +99,7 @@ enum cfrradiotype {
 	CFR_CAPTURE_RADIO_ADRASTEA,
 	CFR_CAPTURE_RADIO_MAPLE,
 	CFR_CAPTURE_RADIO_MOSELLE,
+	CFR_CAPTURE_RADIO_SPRUCE,
 	CFR_CAPTURE_RADIO_MAX = 0xFF,
 };