Browse Source

dsp: adm: add check for mfc channel count

Add check for mfc channel count before issuing mfc
media format command.

Change-Id: I0541d6651ecfcc90562ec0d9a632d039e34658cf
Signed-off-by: Dhananjay Kumar <[email protected]>
Dhananjay Kumar 6 years ago
parent
commit
3d61b368d7
2 changed files with 9 additions and 1 deletions
  1. 5 0
      dsp/q6adm.c
  2. 4 1
      include/dsp/apr_audio-v2.h

+ 5 - 0
dsp/q6adm.c

@@ -2797,6 +2797,11 @@ static int adm_copp_set_ec_ref_mfc_cfg(int port_id, int copp_idx,
 			__func__, port_id, copp_idx, sample_rate,
 			bps, in_channels, out_channels);
 
+	if (out_channels <= 0 || out_channels > AUDPROC_MFC_OUT_CHANNELS_MAX) {
+		pr_err("%s: unsupported out channels=%d\n", __func__, out_channels);
+		return -EINVAL;
+	}
+
 	/* 1. Update Media Format */
 	param_hdr.param_id = AUDPROC_PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT;
 	param_hdr.param_size = sizeof(mfc_cfg);

+ 4 - 1
include/dsp/apr_audio-v2.h

@@ -874,11 +874,14 @@ struct adm_cmd_set_pp_params_v5 {
 	 */
 } __packed;
 
+/* Maximum number of channels supported by MFC media fmt params */
+#define AUDPROC_MFC_OUT_CHANNELS_MAX 8
+
 struct audproc_mfc_param_media_fmt {
 	uint32_t sampling_rate;
 	uint16_t bits_per_sample;
 	uint16_t num_channels;
-	uint16_t channel_type[8];
+	uint16_t channel_type[AUDPROC_MFC_OUT_CHANNELS_MAX];
 } __packed;
 
 struct audproc_volume_ctrl_master_gain {