]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - sound/core/pcm_dmaengine.c
Merge tag 'dma-mapping-5.7' of git://git.infradead.org/users/hch/dma-mapping
[mirror_ubuntu-hirsute-kernel.git] / sound / core / pcm_dmaengine.c
index 5749a8a4978481c1575f76a376fa9c859367adc6..4d059ff2b2e4facaae4d7191665bbf6e7795db8c 100644 (file)
@@ -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);
 
                        /*