Просмотр исходного кода

qcacmn: Populate supported FFT sizes for Beryllium Spectral

Beryllium chipsets support FFT sizes as follows for different sscan widths.
    20MHz:-   Min FFT size: 5, Max FFT size: 9
    40MHz:-   Min FFT size: 5, Max FFT size: 10
    > 40MHz:- Min FFT size: 5, Max FFT size: 11
Populate these FFT sizes for Beryllium targets.

CRs-Fixed: 3042443
Change-Id: Id7052e3513b29789e96c351aa4cdede499ef2578
Shiva Krishna Pittala 3 лет назад
Родитель
Сommit
e5255c7253
2 измененных файлов с 73 добавлено и 3 удалено
  1. 68 3
      target_if/spectral/target_if_spectral.c
  2. 5 0
      target_if/spectral/target_if_spectral.h

+ 68 - 3
target_if/spectral/target_if_spectral.c

@@ -2007,11 +2007,65 @@ target_if_spectral_get_macaddr(void *arg, char *addr)
 	return 0;
 }
 
+/**
+ * target_if_init_spectral_param_min_max_be() - Initialize Spectral parameter
+ * min and max values for beryllium chipsets
+ *
+ * @spectral: Spectral LMAC object
+ *
+ * Return: QDF_STATUS of operation
+ */
+static QDF_STATUS
+target_if_init_spectral_param_min_max_be(struct target_if_spectral *spectral)
+{
+	struct spectral_param_min_max *param_min_max;
+	enum phy_ch_width op_bw;
+	QDF_STATUS status;
+
+	param_min_max = &spectral->param_min_max;
+	param_min_max->fft_size_min = SPECTRAL_PARAM_FFT_SIZE_MIN_GEN3_BE;
+
+	for (op_bw = CH_WIDTH_20MHZ; op_bw < CH_WIDTH_MAX; op_bw++) {
+		bool is_supported;
+
+		status = wlan_reg_is_chwidth_supported(spectral->pdev_obj,
+						       op_bw, &is_supported);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			spectral_err("Unable to check if ch_width(%d) is supported",
+				     op_bw);
+			return QDF_STATUS_E_FAILURE;
+		}
+
+		if (!is_supported) {
+			param_min_max->fft_size_max[op_bw] = INVALID_FFT_SIZE;
+			continue;
+		}
+
+		switch (op_bw) {
+		case CH_WIDTH_20MHZ:
+			param_min_max->fft_size_max[op_bw] =
+				SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE_20MHZ;
+			break;
+
+		case CH_WIDTH_40MHZ:
+			param_min_max->fft_size_max[op_bw] =
+				SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE_40MHZ;
+			break;
+
+		default:
+			param_min_max->fft_size_max[op_bw] =
+				SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE;
+		}
+	}
+
+	return QDF_STATUS_SUCCESS;
+}
+
 /**
  * target_if_init_spectral_param_min_max() - Initialize Spectral parameter
  * min and max values
  *
- * @param_min_max: Pointer to Spectral parameter min and max structure
+ * @spectral: Spectral LMAC object
  * @gen: Spectral HW generation
  * @target_type: Target type
  *
@@ -2021,9 +2075,20 @@ target_if_spectral_get_macaddr(void *arg, char *addr)
  */
 static QDF_STATUS
 target_if_init_spectral_param_min_max(
-				struct spectral_param_min_max *param_min_max,
+				struct target_if_spectral *spectral,
 				enum spectral_gen gen, uint32_t target_type)
 {
+	struct spectral_param_min_max *param_min_max;
+
+	if (!spectral) {
+		spectral_err("Spectral LMAC object is null");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+
+	if (is_spectral_arch_beryllium(target_type))
+		return target_if_init_spectral_param_min_max_be(spectral);
+
+	param_min_max = &spectral->param_min_max;
 	switch (gen) {
 	case SPECTRAL_GEN3:
 		param_min_max->fft_size_min = SPECTRAL_PARAM_FFT_SIZE_MIN_GEN3;
@@ -3510,7 +3575,7 @@ target_if_pdev_spectral_init(struct wlan_objmgr_pdev *pdev)
 	}
 
 	status = target_if_init_spectral_param_min_max(
-					&spectral->param_min_max,
+					spectral,
 					spectral->spectral_gen, target_type);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		spectral_err("Failed to initialize parameter min max values");

+ 5 - 0
target_if/spectral/target_if_spectral.h

@@ -91,6 +91,11 @@
 #define SPECTRAL_PARAM_FFT_SIZE_MIN_GEN3          (5)
 #define SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_DEFAULT  (9)
 #define SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_QCN9000  (10)
+#define SPECTRAL_PARAM_FFT_SIZE_MIN_GEN3_BE       (5)
+#define SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE       (11)
+#define SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE_20MHZ (9)
+#define SPECTRAL_PARAM_FFT_SIZE_MAX_GEN3_BE_40MHZ (10)
+#define INVALID_FFT_SIZE                          (0xFFFF)
 #define SPECTRAL_PARAM_RPT_MODE_MIN               (0)
 #define SPECTRAL_PARAM_RPT_MODE_MAX               (3)
 #define MAX_FFTBIN_VALUE                          (255)