Lines Matching refs:substream
57 struct hdac_ext_stream *get_hdac_ext_stream(struct snd_pcm_substream *substream) in get_hdac_ext_stream() argument
59 return substream->runtime->private_data; in get_hdac_ext_stream()
62 static struct hdac_ext_bus *get_bus_ctx(struct snd_pcm_substream *substream) in get_bus_ctx() argument
64 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in get_bus_ctx()
72 struct snd_pcm_substream *substream, in skl_substream_alloc_pages() argument
75 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in skl_substream_alloc_pages()
81 return snd_pcm_lib_malloc_pages(substream, size); in skl_substream_alloc_pages()
85 struct snd_pcm_substream *substream) in skl_substream_free_pages() argument
87 return snd_pcm_lib_free_pages(substream); in skl_substream_free_pages()
108 static int skl_pcm_open(struct snd_pcm_substream *substream, in skl_pcm_open() argument
113 struct snd_pcm_runtime *runtime = substream->runtime; in skl_pcm_open()
122 stream = snd_hdac_ext_stream_assign(ebus, substream, in skl_pcm_open()
133 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { in skl_pcm_open()
145 snd_soc_dai_set_dma_data(dai, substream, dma_params); in skl_pcm_open()
149 snd_pcm_set_sync(substream); in skl_pcm_open()
154 static int skl_get_format(struct snd_pcm_substream *substream, in skl_get_format() argument
157 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_get_format()
163 struct snd_pcm_runtime *runtime = substream->runtime; in skl_get_format()
172 dma_params = snd_soc_dai_get_dma_data(codec_dai, substream); in skl_get_format()
180 static int skl_pcm_prepare(struct snd_pcm_substream *substream, in skl_pcm_prepare() argument
183 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in skl_pcm_prepare()
193 format_val = skl_get_format(substream, dai); in skl_pcm_prepare()
211 static int skl_pcm_hw_params(struct snd_pcm_substream *substream, in skl_pcm_hw_params() argument
216 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in skl_pcm_hw_params()
217 struct snd_pcm_runtime *runtime = substream->runtime; in skl_pcm_hw_params()
223 ret = skl_substream_alloc_pages(ebus, substream, in skl_pcm_hw_params()
238 p_params.stream = substream->stream; in skl_pcm_hw_params()
247 static void skl_pcm_close(struct snd_pcm_substream *substream, in skl_pcm_close() argument
250 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in skl_pcm_close()
258 dma_params = snd_soc_dai_get_dma_data(dai, substream); in skl_pcm_close()
263 snd_soc_dai_set_dma_data(dai, substream, NULL); in skl_pcm_close()
270 static int skl_pcm_hw_free(struct snd_pcm_substream *substream, in skl_pcm_hw_free() argument
274 struct hdac_ext_stream *stream = get_hdac_ext_stream(substream); in skl_pcm_hw_free()
281 return skl_substream_free_pages(ebus_to_hbus(ebus), substream); in skl_pcm_hw_free()
284 static int skl_be_hw_params(struct snd_pcm_substream *substream, in skl_be_hw_params() argument
293 p_params.stream = substream->stream; in skl_be_hw_params()
299 static int skl_pcm_trigger(struct snd_pcm_substream *substream, int cmd, in skl_pcm_trigger() argument
306 mconfig = skl_tplg_fe_get_cpr_module(dai, substream->stream); in skl_pcm_trigger()
324 static int skl_link_hw_params(struct snd_pcm_substream *substream, in skl_link_hw_params() argument
330 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_link_hw_params()
335 link_dev = snd_hdac_ext_stream_assign(ebus, substream, in skl_link_hw_params()
340 snd_soc_dai_set_dma_data(dai, substream, (void *)link_dev); in skl_link_hw_params()
344 snd_soc_dai_get_dma_data(codec_dai, substream); in skl_link_hw_params()
347 snd_soc_dai_set_dma_data(codec_dai, substream, (void *)dma_params); in skl_link_hw_params()
352 p_params.stream = substream->stream; in skl_link_hw_params()
360 static int skl_link_pcm_prepare(struct snd_pcm_substream *substream, in skl_link_pcm_prepare() argument
363 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_link_pcm_prepare()
366 snd_soc_dai_get_dma_data(dai, substream); in skl_link_pcm_prepare()
378 snd_soc_dai_get_dma_data(codec_dai, substream); in skl_link_pcm_prepare()
398 static int skl_link_pcm_trigger(struct snd_pcm_substream *substream, in skl_link_pcm_trigger() argument
402 snd_soc_dai_get_dma_data(dai, substream); in skl_link_pcm_trigger()
424 static int skl_link_hw_free(struct snd_pcm_substream *substream, in skl_link_hw_free() argument
428 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_link_hw_free()
430 snd_soc_dai_get_dma_data(dai, substream); in skl_link_hw_free()
446 static int skl_be_startup(struct snd_pcm_substream *substream, in skl_be_startup() argument
452 static void skl_be_shutdown(struct snd_pcm_substream *substream, in skl_be_shutdown() argument
602 static int skl_platform_open(struct snd_pcm_substream *substream) in skl_platform_open() argument
605 struct snd_soc_pcm_runtime *rtd = substream->private_data; in skl_platform_open()
611 runtime = substream->runtime; in skl_platform_open()
612 snd_soc_set_runtime_hwparams(substream, &azx_pcm_hw); in skl_platform_open()
617 static int skl_coupled_trigger(struct snd_pcm_substream *substream, in skl_coupled_trigger() argument
620 struct hdac_ext_bus *ebus = get_bus_ctx(substream); in skl_coupled_trigger()
629 stream = get_hdac_ext_stream(substream); in skl_coupled_trigger()
654 snd_pcm_group_for_each_entry(s, substream) { in skl_coupled_trigger()
655 if (s->pcm->card != substream->pcm->card) in skl_coupled_trigger()
659 snd_pcm_trigger_done(s, substream); in skl_coupled_trigger()
667 snd_pcm_group_for_each_entry(s, substream) { in skl_coupled_trigger()
668 if (s->pcm->card != substream->pcm->card) in skl_coupled_trigger()
691 static int skl_decoupled_trigger(struct snd_pcm_substream *substream, in skl_decoupled_trigger() argument
694 struct hdac_ext_bus *ebus = get_bus_ctx(substream); in skl_decoupled_trigger()
696 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_decoupled_trigger()
705 stream = get_hdac_ext_stream(substream); in skl_decoupled_trigger()
742 static int skl_platform_pcm_trigger(struct snd_pcm_substream *substream, in skl_platform_pcm_trigger() argument
745 struct hdac_ext_bus *ebus = get_bus_ctx(substream); in skl_platform_pcm_trigger()
748 return skl_decoupled_trigger(substream, cmd); in skl_platform_pcm_trigger()
750 return skl_coupled_trigger(substream, cmd); in skl_platform_pcm_trigger()
760 struct snd_pcm_substream *substream = hstream->substream; in skl_get_delay_from_lpib() local
761 int stream = substream->stream; in skl_get_delay_from_lpib()
784 return bytes_to_frames(substream->runtime, delay); in skl_get_delay_from_lpib()
791 struct snd_pcm_substream *substream = hstr->substream; in skl_get_position() local
792 struct hdac_ext_bus *ebus = get_bus_ctx(substream); in skl_get_position()
802 if (substream->runtime) { in skl_get_position()
805 substream->runtime->delay += delay; in skl_get_position()
812 (struct snd_pcm_substream *substream) in skl_platform_pcm_pointer() argument
814 struct hdac_ext_stream *hstream = get_hdac_ext_stream(substream); in skl_platform_pcm_pointer()
816 return bytes_to_frames(substream->runtime, in skl_platform_pcm_pointer()
820 static u64 skl_adjust_codec_delay(struct snd_pcm_substream *substream, in skl_adjust_codec_delay() argument
823 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream); in skl_adjust_codec_delay()
830 codec_frames = codec_dai->driver->ops->delay(substream, codec_dai); in skl_adjust_codec_delay()
832 substream->runtime->rate); in skl_adjust_codec_delay()
834 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) in skl_adjust_codec_delay()
840 static int skl_get_time_info(struct snd_pcm_substream *substream, in skl_get_time_info() argument
845 struct hdac_ext_stream *sstream = get_hdac_ext_stream(substream); in skl_get_time_info()
849 if ((substream->runtime->hw.info & SNDRV_PCM_INFO_HAS_LINK_ATIME) && in skl_get_time_info()
852 snd_pcm_gettime(substream->runtime, system_ts); in skl_get_time_info()
857 nsec = skl_adjust_codec_delay(substream, nsec); in skl_get_time_info()