diff options
Diffstat (limited to 'sound/core/pcm_lib.c')
| -rw-r--r-- | sound/core/pcm_lib.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index a144a3f68e9e..4f4b4739f987 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -106,6 +106,7 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram  		frames -= transfer;  		ofs = 0;  	} +	snd_pcm_dma_buffer_sync(substream, SNDRV_DMA_SYNC_DEVICE);  }  #ifdef CONFIG_SND_DEBUG @@ -2256,8 +2257,12 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream,  			goto _end_unlock;  		}  		snd_pcm_stream_unlock_irq(substream); +		if (!is_playback) +			snd_pcm_dma_buffer_sync(substream, SNDRV_DMA_SYNC_CPU);  		err = writer(substream, appl_ofs, data, offset, frames,  			     transfer); +		if (is_playback) +			snd_pcm_dma_buffer_sync(substream, SNDRV_DMA_SYNC_DEVICE);  		snd_pcm_stream_lock_irq(substream);  		if (err < 0)  			goto _end_unlock; |