Lines Matching +full:dai +full:- +full:link
1 // SPDX-License-Identifier: GPL-2.0
9 #include <sound/soc-dai.h>
11 #include "meson-codec-glue.h"
20 if (!p->connect) in meson_codec_glue_get_input()
24 if (snd_soc_dapm_to_component(w->dapm) != in meson_codec_glue_get_input()
25 snd_soc_dapm_to_component(p->source->dapm)) in meson_codec_glue_get_input()
28 if (p->source->id == snd_soc_dapm_dai_in) in meson_codec_glue_get_input()
29 return p->source; in meson_codec_glue_get_input()
31 in = meson_codec_glue_get_input(p->source); in meson_codec_glue_get_input()
39 static void meson_codec_glue_input_set_data(struct snd_soc_dai *dai, in meson_codec_glue_input_set_data() argument
42 dai->playback_dma_data = data; in meson_codec_glue_input_set_data()
46 meson_codec_glue_input_get_data(struct snd_soc_dai *dai) in meson_codec_glue_input_get_data() argument
48 return dai->playback_dma_data; in meson_codec_glue_input_get_data()
57 struct snd_soc_dai *dai; in meson_codec_glue_output_get_input_data() local
62 dai = in->priv; in meson_codec_glue_output_get_input_data()
64 return meson_codec_glue_input_get_data(dai); in meson_codec_glue_output_get_input_data()
69 struct snd_soc_dai *dai) in meson_codec_glue_input_hw_params() argument
72 meson_codec_glue_input_get_data(dai); in meson_codec_glue_input_hw_params()
74 data->params.rates = snd_pcm_rate_to_rate_bit(params_rate(params)); in meson_codec_glue_input_hw_params()
75 data->params.rate_min = params_rate(params); in meson_codec_glue_input_hw_params()
76 data->params.rate_max = params_rate(params); in meson_codec_glue_input_hw_params()
77 data->params.formats = 1ULL << (__force int) params_format(params); in meson_codec_glue_input_hw_params()
78 data->params.channels_min = params_channels(params); in meson_codec_glue_input_hw_params()
79 data->params.channels_max = params_channels(params); in meson_codec_glue_input_hw_params()
80 data->params.sig_bits = dai->driver->playback.sig_bits; in meson_codec_glue_input_hw_params()
86 int meson_codec_glue_input_set_fmt(struct snd_soc_dai *dai, in meson_codec_glue_input_set_fmt() argument
90 meson_codec_glue_input_get_data(dai); in meson_codec_glue_input_set_fmt()
92 /* Save the source stream format for the downstream link */ in meson_codec_glue_input_set_fmt()
93 data->fmt = fmt; in meson_codec_glue_input_set_fmt()
99 struct snd_soc_dai *dai) in meson_codec_glue_output_startup() argument
103 meson_codec_glue_output_get_input_data(dai->capture_widget); in meson_codec_glue_output_startup()
106 return -ENODEV; in meson_codec_glue_output_startup()
108 if (WARN_ON(!rtd->dai_link->params)) { in meson_codec_glue_output_startup()
109 dev_warn(dai->dev, "codec2codec link expected\n"); in meson_codec_glue_output_startup()
110 return -EINVAL; in meson_codec_glue_output_startup()
113 /* Replace link params with the input params */ in meson_codec_glue_output_startup()
114 rtd->dai_link->params = &in_data->params; in meson_codec_glue_output_startup()
116 if (!in_data->fmt) in meson_codec_glue_output_startup()
119 return snd_soc_runtime_set_dai_fmt(rtd, in_data->fmt); in meson_codec_glue_output_startup()
123 int meson_codec_glue_input_dai_probe(struct snd_soc_dai *dai) in meson_codec_glue_input_dai_probe() argument
129 return -ENOMEM; in meson_codec_glue_input_dai_probe()
131 meson_codec_glue_input_set_data(dai, data); in meson_codec_glue_input_dai_probe()
136 int meson_codec_glue_input_dai_remove(struct snd_soc_dai *dai) in meson_codec_glue_input_dai_remove() argument
139 meson_codec_glue_input_get_data(dai); in meson_codec_glue_input_dai_remove()