[alsa-devel] [PATCH v2 2/7] ALSA: hda - add generic functions to set hdac stream params
Takashi Iwai
tiwai at suse.de
Fri Apr 17 11:39:37 CEST 2015
At Fri, 17 Apr 2015 14:43:15 +0530,
Vinod Koul wrote:
>
> From: Jeeja KP <jeeja.kp at intel.com>
>
> This will be used by hda controller driver to
> setup stream params in prepare. This function will
> setup the bdl and periods.
OK, it's fine to add this function if soc-hda driver needs it too.
But please put the kerneldoc comment to the function, too. Then I can
apply this patch even before other patches.
thanks,
Takashi
>
> Signed-off-by: Jeeja KP <jeeja.kp at intel.com>
> Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty at intel.com>
> Signed-off-by: Vinod Koul <vinod.koul at intel.com>
> ---
> include/sound/hdaudio.h | 2 ++
> sound/hda/hdac_stream.c | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
> index b871f00bb185..227e71956c35 100644
> --- a/include/sound/hdaudio.h
> +++ b/include/sound/hdaudio.h
> @@ -417,6 +417,8 @@ void snd_hdac_stream_release(struct hdac_stream *azx_dev);
> int snd_hdac_stream_setup(struct hdac_stream *azx_dev);
> void snd_hdac_stream_cleanup(struct hdac_stream *azx_dev);
> int snd_hdac_stream_setup_periods(struct hdac_stream *azx_dev);
> +int snd_hdac_stream_set_params(struct hdac_stream *azx_dev,
> + unsigned int format_val);
> void snd_hdac_stream_start(struct hdac_stream *azx_dev, bool fresh_start);
> void snd_hdac_stream_clear(struct hdac_stream *azx_dev);
> void snd_hdac_stream_stop(struct hdac_stream *azx_dev);
> diff --git a/sound/hda/hdac_stream.c b/sound/hda/hdac_stream.c
> index 8bd67a824b5e..618e742f527f 100644
> --- a/sound/hda/hdac_stream.c
> +++ b/sound/hda/hdac_stream.c
> @@ -393,6 +393,37 @@ int snd_hdac_stream_setup_periods(struct hdac_stream *azx_dev)
> }
> EXPORT_SYMBOL_GPL(snd_hdac_stream_setup_periods);
>
> +int snd_hdac_stream_set_params(struct hdac_stream *azx_dev,
> + unsigned int format_val)
> +{
> +
> + unsigned int bufsize, period_bytes;
> + struct snd_pcm_substream *substream = azx_dev->substream;
> + struct snd_pcm_runtime *runtime;
> + int err;
> +
> + if (!substream)
> + return -EINVAL;
> + runtime = substream->runtime;
> + bufsize = snd_pcm_lib_buffer_bytes(substream);
> + period_bytes = snd_pcm_lib_period_bytes(substream);
> +
> + if (bufsize != azx_dev->bufsize ||
> + period_bytes != azx_dev->period_bytes ||
> + format_val != azx_dev->format_val ||
> + runtime->no_period_wakeup != azx_dev->no_period_wakeup) {
> + azx_dev->bufsize = bufsize;
> + azx_dev->period_bytes = period_bytes;
> + azx_dev->format_val = format_val;
> + azx_dev->no_period_wakeup = runtime->no_period_wakeup;
> + err = snd_hdac_stream_setup_periods(azx_dev);
> + if (err < 0)
> + return err;
> + }
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(snd_hdac_stream_set_params);
> +
> static cycle_t azx_cc_read(const struct cyclecounter *cc)
> {
> struct hdac_stream *azx_dev = container_of(cc, struct hdac_stream, cc);
> --
> 1.7.9.5
>
More information about the Alsa-devel
mailing list