diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c index 3284ee9c1eca..c2685fbd7366 100644 --- a/sound/firewire/amdtp.c +++ b/sound/firewire/amdtp.c @@ -531,6 +531,20 @@ int amdtp_out_stream_start(struct amdtp_out_stream *s, int channel, int speed) } EXPORT_SYMBOL(amdtp_out_stream_start); +/** + * amdtp_out_stream_pcm_pointer - get the PCM buffer position + * @s: the AMDTP output stream that transports the PCM data + * + * Returns the current buffer position, in frames. + */ +unsigned long amdtp_out_stream_pcm_pointer(struct amdtp_out_stream *s) +{ + fw_iso_context_flush_completions(s->context); + + return ACCESS_ONCE(s->pcm_buffer_pointer); +} +EXPORT_SYMBOL(amdtp_out_stream_pcm_pointer); + /** * amdtp_out_stream_update - update the stream after a bus reset * @s: the AMDTP output stream diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h index 4987f826f9f3..3f13ff63c5d2 100644 --- a/sound/firewire/amdtp.h +++ b/sound/firewire/amdtp.h @@ -84,6 +84,7 @@ void amdtp_out_stream_stop(struct amdtp_out_stream *s); void amdtp_out_stream_set_pcm_format(struct amdtp_out_stream *s, snd_pcm_format_t format); void amdtp_out_stream_pcm_prepare(struct amdtp_out_stream *s); +unsigned long amdtp_out_stream_pcm_pointer(struct amdtp_out_stream *s); void amdtp_out_stream_pcm_abort(struct amdtp_out_stream *s); /** @@ -140,18 +141,6 @@ static inline void amdtp_out_stream_pcm_trigger(struct amdtp_out_stream *s, ACCESS_ONCE(s->pcm) = pcm; } -/** - * amdtp_out_stream_pcm_pointer - get the PCM buffer position - * @s: the AMDTP output stream that transports the PCM data - * - * Returns the current buffer position, in frames. - */ -static inline unsigned long -amdtp_out_stream_pcm_pointer(struct amdtp_out_stream *s) -{ - return ACCESS_ONCE(s->pcm_buffer_pointer); -} - static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc) { return sfc & 1;