diff options
-rw-r--r-- | sound/firewire/amdtp.c | 14 | ||||
-rw-r--r-- | sound/firewire/amdtp.h | 13 |
2 files changed, 15 insertions, 12 deletions
diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c index 3284ee9c1ec..c2685fbd736 100644 --- a/sound/firewire/amdtp.c +++ b/sound/firewire/amdtp.c @@ -532,6 +532,20 @@ err_unlock: 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 4987f826f9f..3f13ff63c5d 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; |