diff options
Diffstat (limited to 'sound/core/pcm_dmaengine.c')
| -rw-r--r-- | sound/core/pcm_dmaengine.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/core/pcm_dmaengine.c b/sound/core/pcm_dmaengine.c index 5749a8a49784..4d059ff2b2e4 100644 --- a/sound/core/pcm_dmaengine.c +++ b/sound/core/pcm_dmaengine.c @@ -240,6 +240,7 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_pointer_no_residue);  snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream)  {  	struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream); +	struct snd_pcm_runtime *runtime = substream->runtime;  	struct dma_tx_state state;  	enum dma_status status;  	unsigned int buf_size; @@ -250,9 +251,12 @@ snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream)  		buf_size = snd_pcm_lib_buffer_bytes(substream);  		if (state.residue > 0 && state.residue <= buf_size)  			pos = buf_size - state.residue; + +		runtime->delay = bytes_to_frames(runtime, +						 state.in_flight_bytes);  	} -	return bytes_to_frames(substream->runtime, pos); +	return bytes_to_frames(runtime, pos);  }  EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_pointer); @@ -426,7 +430,7 @@ int snd_dmaengine_pcm_refine_runtime_hwparams(  		 * default assumption is that it supports 1, 2 and 4 bytes  		 * widths.  		 */ -		for (i = SNDRV_PCM_FORMAT_FIRST; i <= SNDRV_PCM_FORMAT_LAST; i++) { +		pcm_for_each_format(i) {  			int bits = snd_pcm_format_physical_width(i);  			/*  |