summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>2015-02-06 22:55:52 +0100
committerTakashi Iwai <tiwai@suse.de>2015-02-09 16:02:11 +0100
commited610af86a717152be5aa5e29410c5183992b4f2 (patch)
tree7b0e4c8d3076d841acd28d4a450e85bcbc386286 /sound
parentALSA: pcm: allow for trigger_tstamp snapshot in .trigger (diff)
downloadlinux-ed610af86a717152be5aa5e29410c5183992b4f2.tar.xz
linux-ed610af86a717152be5aa5e29410c5183992b4f2.zip
ALSA: hda: read trigger_timestamp immediately after starting DMA
Make sure wallclock counter and trigger timestamp are read very close to each other for better alignment. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_controller.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
index 27dcb142f596..dfcb5e929f9f 100644
--- a/sound/pci/hda/hda_controller.c
+++ b/sound/pci/hda/hda_controller.c
@@ -657,6 +657,9 @@ static int azx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
azx_writel(chip, SSYNC, azx_readl(chip, SSYNC) & ~sbits);
if (start) {
azx_timecounter_init(substream, 0, 0);
+ snd_pcm_gettime(substream->runtime, &substream->runtime->trigger_tstamp);
+ substream->runtime->trigger_tstamp_latched = true;
+
if (nsync > 1) {
cycle_t cycle_last;