diff options
Diffstat (limited to 'sound/soc/intel/avs/probes.c')
| -rw-r--r-- | sound/soc/intel/avs/probes.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/sound/soc/intel/avs/probes.c b/sound/soc/intel/avs/probes.c index 693ecfe68fd0..74096236984a 100644 --- a/sound/soc/intel/avs/probes.c +++ b/sound/soc/intel/avs/probes.c @@ -14,8 +14,8 @@  #include "debug.h"  #include "messages.h" -static int avs_dsp_init_probe(struct avs_dev *adev, union avs_connector_node_id node_id, -			      size_t buffer_size) +static int avs_dsp_init_probe(struct avs_dev *adev, struct snd_compr_params *params, int bps, +			      union avs_connector_node_id node_id, size_t buffer_size)  {  	struct avs_probe_cfg cfg = {{0}};  	struct avs_module_entry mentry; @@ -27,12 +27,16 @@ static int avs_dsp_init_probe(struct avs_dev *adev, union avs_connector_node_id  		return ret;  	/* -	 * Probe module uses no cycles, audio data format and input and output -	 * frame sizes are unused. It is also not owned by any pipeline. +	 * Probe module uses no cycles, input and output frame sizes are unused. +	 * It is also not owned by any pipeline.  	 */  	cfg.base.ibs = 1;  	/* BSS module descriptor is always segment of index=2. */  	cfg.base.is_pages = mentry.segments[2].flags.length; +	cfg.base.audio_fmt.sampling_freq = params->codec.sample_rate; +	cfg.base.audio_fmt.bit_depth = bps; +	cfg.base.audio_fmt.num_channels = params->codec.ch_out; +	cfg.base.audio_fmt.valid_bit_depth = bps;  	cfg.gtw_cfg.node_id = node_id;  	cfg.gtw_cfg.dma_buffer_size = buffer_size; @@ -128,8 +132,6 @@ static int avs_probe_compr_set_params(struct snd_compr_stream *cstream,  	struct hdac_ext_stream *host_stream = avs_compr_get_host_stream(cstream);  	struct snd_compr_runtime *rtd = cstream->runtime;  	struct avs_dev *adev = to_avs_dev(dai->dev); -	/* compr params do not store bit depth, default to S32_LE. */ -	snd_pcm_format_t format = SNDRV_PCM_FORMAT_S32_LE;  	unsigned int format_val;  	int bps, ret; @@ -142,7 +144,7 @@ static int avs_probe_compr_set_params(struct snd_compr_stream *cstream,  	ret = snd_compr_malloc_pages(cstream, rtd->buffer_size);  	if (ret < 0)  		return ret; -	bps = snd_pcm_format_physical_width(format); +	bps = snd_pcm_format_physical_width(params->codec.format);  	if (bps < 0)  		return bps;  	format_val = snd_hdac_stream_format(params->codec.ch_out, bps, params->codec.sample_rate); @@ -166,7 +168,7 @@ static int avs_probe_compr_set_params(struct snd_compr_stream *cstream,  		node_id.vindex = hdac_stream(host_stream)->stream_tag - 1;  		node_id.dma_type = AVS_DMA_HDA_HOST_INPUT; -		ret = avs_dsp_init_probe(adev, node_id, rtd->dma_bytes); +		ret = avs_dsp_init_probe(adev, params, bps, node_id, rtd->dma_bytes);  		if (ret < 0) {  			dev_err(dai->dev, "probe init failed: %d\n", ret);  			avs_dsp_enable_d0ix(adev);  | 
