@@ -73,6 +73,8 @@ struct snd_pcm_ops {
snd_pcm_uframes_t (*pointer)(struct snd_pcm_substream *substream);
int (*wall_clock)(struct snd_pcm_substream *substream,
struct timespec *audio_ts);
+ int (*start_at)(struct snd_pcm_substream *substream, int audio_tstamp_type, const struct timespec *ts);
+ int (*start_at_cancel)(struct snd_pcm_substream *substream);
int (*copy)(struct snd_pcm_substream *substream, int channel,
snd_pcm_uframes_t pos,
void __user *buf, snd_pcm_uframes_t count);
@@ -364,6 +366,10 @@ struct snd_pcm_runtime {
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
struct snd_pcm_hwptr_log *hwptr_log;
#endif
+
+ int start_at_timer_running; /* 0 if no timer is running, 1 if running */
+ int start_at_timer_tstamp_class; /* tstamp class of current timer */
+ void* start_at_timer_data; /* data associated with current timer */
};
struct snd_pcm_group { /* keep linked substreams */
Provide members for starting and cancelling the timer. Add state to snd_pcm_runtime that tracks current timer: This allows us to cancel on state-change, or subsequent start_at call. Signed-off-by: Tim Cussins <timcussins@eml.cc>