Fill the new proto field introduced to sw_params with the current PCM protocol version. This makes tstamp_type evaluated properly in the kernel.
Signed-off-by: Takashi Iwai tiwai@suse.de --- include/sound/asound.h | 4 ++-- src/pcm/pcm.c | 1 + src/pcm/pcm_params.c | 1 + 3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/sound/asound.h b/include/sound/asound.h index 552f41bd1ca9..98708c60c320 100644 --- a/include/sound/asound.h +++ b/include/sound/asound.h @@ -386,8 +386,8 @@ struct snd_pcm_sw_params { snd_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */ snd_pcm_uframes_t silence_size; /* silence block size */ snd_pcm_uframes_t boundary; /* pointers wrap point */ - unsigned int tstamp_type; /* timestamp type */ - int pads; /* alignment, reserved */ + unsigned int tstamp_type; /* timestamp type (req. proto >= 2.0.12) */ + unsigned int proto; /* protocol version */ unsigned char reserved[56]; /* reserved for future */ };
diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 89844430bf35..1399a5b2e671 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -5610,6 +5610,7 @@ int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) SNDMSG("PCM not set up"); return -EIO; } + params->proto = SNDRV_PCM_VERSION; params->tstamp_mode = pcm->tstamp_mode; params->tstamp_type = pcm->tstamp_type; params->period_step = pcm->period_step; diff --git a/src/pcm/pcm_params.c b/src/pcm/pcm_params.c index 4adbefae0530..6e57904e445b 100644 --- a/src/pcm/pcm_params.c +++ b/src/pcm/pcm_params.c @@ -2257,6 +2257,7 @@ static int snd_pcm_sw_params_default(snd_pcm_t *pcm, snd_pcm_sw_params_t *params { assert(pcm && params); assert(pcm->setup); + params->proto = SNDRV_PCM_VERSION; params->tstamp_mode = SND_PCM_TSTAMP_NONE; params->tstamp_type = pcm->tstamp_type; params->period_step = 1;