Forráskód Böngészése

qcacmn: Correct registers when populate CFR elements from tlv

This is requirement change about correcting the registers when
populate CFR elements from tlv.

Change-Id: I424a0d3ae569dae3378137b84067a30b0fa28413
CRs-Fixed: 3218220
Wu Gao 3 éve
szülő
commit
e46707f810
1 módosított fájl, 52 hozzáadás és 39 törlés
  1. 52 39
      hal/wifi3.0/kiwi/hal_kiwi_rx.h

+ 52 - 39
hal/wifi3.0/kiwi/hal_kiwi_rx.h

@@ -109,6 +109,18 @@ RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET))
 
 #if defined(QCA_WIFI_KIWI) && defined(WLAN_CFR_ENABLE) && \
 	defined(WLAN_ENH_CFR_ENABLE)
+
+#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_BMASK 0x00000006
+#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_LSB 1
+#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_MSB 2
+
+#define HAL_GET_RX_LOCATION_INFO_CHAN_CAPTURE_STATUS(rx_tlv) \
+	((HAL_RX_GET_64((rx_tlv), \
+		     PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, \
+		     RTT_CFR_STATUS) & \
+	  PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_BMASK) >> \
+	 PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_LSB)
+
 static inline
 void hal_rx_get_bb_info_kiwi(void *rx_tlv,
 			     void *ppdu_info_hdl)
@@ -132,64 +144,65 @@ void hal_rx_get_rtt_info_kiwi(void *rx_tlv,
 	struct hal_rx_ppdu_info *ppdu_info  = ppdu_info_hdl;
 
 	ppdu_info->cfr_info.rx_location_info_valid =
-		HAL_RX_GET(rx_tlv, PHYRX_LOCATION,
-			   RX_LOCATION_INFO_DETAILS_RX_LOCATION_INFO_VALID);
+	HAL_RX_GET_64(rx_tlv, PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RX_LOCATION_INFO_VALID);
 
 	ppdu_info->cfr_info.rtt_che_buffer_pointer_low32 =
-	HAL_RX_GET(rx_tlv,
-		   RX_LOCATION_INFO,
-		   RTT_CHE_BUFFER_POINTER_LOW32);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RTT_CHE_BUFFER_POINTER_LOW32);
 
 	ppdu_info->cfr_info.rtt_che_buffer_pointer_high8 =
-	HAL_RX_GET(rx_tlv,
-		   RX_LOCATION_INFO,
-		   RTT_CHE_BUFFER_POINTER_HIGH8);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RTT_CHE_BUFFER_POINTER_HIGH8);
 
-	// TODO Beryllium - Changed reserved8 to reserved3 to avoid
-	// compilation failure for kiwi
 	ppdu_info->cfr_info.chan_capture_status =
-	HAL_RX_GET(rx_tlv,
-		   RX_LOCATION_INFO,
-		   RESERVED_3);
+	HAL_GET_RX_LOCATION_INFO_CHAN_CAPTURE_STATUS(rx_tlv);
+
 	ppdu_info->cfr_info.rx_start_ts =
-	HAL_RX_GET(rx_tlv,
-		   RX_LOCATION_INFO,
-		   RX_START_TS);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RX_START_TS);
 
 	ppdu_info->cfr_info.rtt_cfo_measurement = (int16_t)
-	HAL_RX_GET(rx_tlv,
-		   RX_LOCATION_INFO,
-		   RTT_CFO_MEASUREMENT);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RTT_CFO_MEASUREMENT);
 
 	ppdu_info->cfr_info.agc_gain_info0 =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_PKT_END_RX_PKT_END_DETAILS,
-		   PHY_TIMESTAMP_1_LOWER_32);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      GAIN_CHAIN0);
+
+	ppdu_info->cfr_info.agc_gain_info0 |=
+	(((uint32_t)HAL_RX_GET_64(rx_tlv,
+		    PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		    GAIN_CHAIN1)) << 16);
 
 	ppdu_info->cfr_info.agc_gain_info1 =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_PKT_END_RX_PKT_END_DETAILS,
-		   PHY_TIMESTAMP_1_UPPER_32);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      GAIN_CHAIN2);
+
+	ppdu_info->cfr_info.agc_gain_info1 |=
+	(((uint32_t)HAL_RX_GET_64(rx_tlv,
+		    PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		    GAIN_CHAIN3)) << 16);
 
-	ppdu_info->cfr_info.agc_gain_info2 =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_PKT_END_RX_PKT_END_DETAILS,
-		   PHY_TIMESTAMP_2_LOWER_32);
+	ppdu_info->cfr_info.agc_gain_info2 = 0;
 
-	ppdu_info->cfr_info.agc_gain_info3 =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_PKT_END_RX_PKT_END_DETAILS,
-		   PHY_TIMESTAMP_2_UPPER_32);
+	ppdu_info->cfr_info.agc_gain_info3 = 0;
 
 	ppdu_info->cfr_info.mcs_rate =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
-		   RTT_MCS_RATE);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RTT_MCS_RATE);
 
 	ppdu_info->cfr_info.gi_type =
-	HAL_RX_GET(rx_tlv,
-		   PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
-		   RTT_GI_TYPE);
+	HAL_RX_GET_64(rx_tlv,
+		      PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
+		      RTT_GI_TYPE);
 }
 #endif
 #endif