Lines Matching +full:dai +full:- +full:sample +full:- +full:format
1 // SPDX-License-Identifier: GPL-2.0-only
3 // uda1334.c -- UDA1334 ALSA SoC Audio driver
47 int deemph = ucontrol->value.integer.value[0]; in uda1334_put_deemph()
50 return -EINVAL; in uda1334_put_deemph()
52 gpiod_set_value_cansleep(uda1334->deemph, deemph); in uda1334_put_deemph()
64 ret = gpiod_get_value_cansleep(uda1334->deemph); in uda1334_get_deemph()
66 return -EINVAL; in uda1334_get_deemph()
68 ucontrol->value.integer.value[0] = ret; in uda1334_get_deemph()
91 struct snd_soc_dai *dai) in uda1334_startup() argument
93 struct snd_soc_component *component = dai->component; in uda1334_startup()
97 * The set of sample rates that can be supported depends on the in uda1334_startup()
98 * MCLK supplied to the CODEC - enforce this. in uda1334_startup()
100 if (!uda1334->sysclk) { in uda1334_startup()
101 dev_err(component->dev, in uda1334_startup()
103 return -EINVAL; in uda1334_startup()
106 snd_pcm_hw_constraint_list(substream->runtime, 0, in uda1334_startup()
108 &uda1334->rate_constraint); in uda1334_startup()
110 gpiod_set_value_cansleep(uda1334->mute, 1); in uda1334_startup()
116 struct snd_soc_dai *dai) in uda1334_shutdown() argument
118 struct snd_soc_component *component = dai->component; in uda1334_shutdown()
121 gpiod_set_value_cansleep(uda1334->mute, 0); in uda1334_shutdown()
127 struct snd_soc_component *component = codec_dai->component; in uda1334_set_dai_sysclk()
132 uda1334->sysclk = freq; in uda1334_set_dai_sysclk()
134 uda1334->rate_constraint.count = 0; in uda1334_set_dai_sysclk()
151 dev_dbg(component->dev, "Supported sample rate: %dHz\n", in uda1334_set_dai_sysclk()
153 uda1334->rate_constraint_list[j++] = val; in uda1334_set_dai_sysclk()
154 uda1334->rate_constraint.count++; in uda1334_set_dai_sysclk()
157 dev_dbg(component->dev, "Skipping sample rate: %dHz\n", in uda1334_set_dai_sysclk()
163 if (uda1334->rate_constraint.count == 0) in uda1334_set_dai_sysclk()
164 return -EINVAL; in uda1334_set_dai_sysclk()
176 dev_err(codec_dai->dev, "Invalid DAI format\n"); in uda1334_set_fmt()
177 return -EINVAL; in uda1334_set_fmt()
183 static int uda1334_mute_stream(struct snd_soc_dai *dai, int mute, int stream) in uda1334_mute_stream() argument
185 struct uda1334_priv *uda1334 = snd_soc_component_get_drvdata(dai->component); in uda1334_mute_stream()
187 if (uda1334->mute) in uda1334_mute_stream()
188 gpiod_set_value_cansleep(uda1334->mute, mute); in uda1334_mute_stream()
206 .name = "uda1334-hifi",
221 uda1334->rate_constraint.list = &uda1334->rate_constraint_list[0]; in uda1334_probe()
222 uda1334->rate_constraint.count = in uda1334_probe()
223 ARRAY_SIZE(uda1334->rate_constraint_list); in uda1334_probe()
252 uda1334 = devm_kzalloc(&pdev->dev, sizeof(struct uda1334_priv), in uda1334_codec_probe()
255 return -ENOMEM; in uda1334_codec_probe()
259 uda1334->mute = devm_gpiod_get(&pdev->dev, "nxp,mute", GPIOD_OUT_LOW); in uda1334_codec_probe()
260 if (IS_ERR(uda1334->mute)) { in uda1334_codec_probe()
261 ret = PTR_ERR(uda1334->mute); in uda1334_codec_probe()
262 dev_err(&pdev->dev, "Failed to get mute line: %d\n", ret); in uda1334_codec_probe()
266 uda1334->deemph = devm_gpiod_get(&pdev->dev, "nxp,deemph", GPIOD_OUT_LOW); in uda1334_codec_probe()
267 if (IS_ERR(uda1334->deemph)) { in uda1334_codec_probe()
268 ret = PTR_ERR(uda1334->deemph); in uda1334_codec_probe()
269 dev_err(&pdev->dev, "Failed to get deemph line: %d\n", ret); in uda1334_codec_probe()
273 ret = devm_snd_soc_register_component(&pdev->dev, in uda1334_codec_probe()
277 dev_err(&pdev->dev, "Failed to register component: %d\n", ret); in uda1334_codec_probe()
285 .name = "uda1334-codec",
293 MODULE_ALIAS("platform:uda1334-codec");