• Home
  • Raw
  • Download

Lines Matching +full:spk +full:- +full:shutdown

1 // SPDX-License-Identifier: GPL-2.0
15 #include <uapi/linux/input-event-codes.h>
64 struct sdm845_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card); in sdm845_slim_snd_hw_params()
72 substream->stream); in sdm845_slim_snd_hw_params()
73 if (sruntime != ERR_PTR(-ENOTSUPP)) in sdm845_slim_snd_hw_params()
74 pdata->sruntime[cpu_dai->id] = sruntime; in sdm845_slim_snd_hw_params()
79 if (ret != 0 && ret != -ENOTSUPP) { in sdm845_slim_snd_hw_params()
82 } else if (ret == -ENOTSUPP) { in sdm845_slim_snd_hw_params()
87 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in sdm845_slim_snd_hw_params()
93 if (ret != 0 && ret != -ENOTSUPP) { in sdm845_slim_snd_hw_params()
94 dev_err(rtd->dev, "failed to set cpu chan map, err:%d\n", ret); in sdm845_slim_snd_hw_params()
116 dev_err(rtd->dev, "%s: invalid param format 0x%x\n", in sdm845_tdm_snd_hw_params()
118 return -EINVAL; in sdm845_tdm_snd_hw_params()
122 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in sdm845_tdm_snd_hw_params()
126 dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n", in sdm845_tdm_snd_hw_params()
134 dev_err(rtd->dev, "%s: failed to set channel map, err:%d\n", in sdm845_tdm_snd_hw_params()
142 dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n", in sdm845_tdm_snd_hw_params()
150 dev_err(rtd->dev, "%s: failed to set channel map, err:%d\n", in sdm845_tdm_snd_hw_params()
158 if (!strcmp(codec_dai->component->name_prefix, "Left")) { in sdm845_tdm_snd_hw_params()
164 dev_err(rtd->dev, in sdm845_tdm_snd_hw_params()
170 if (!strcmp(codec_dai->component->name_prefix, "Right")) { in sdm845_tdm_snd_hw_params()
176 dev_err(rtd->dev, in sdm845_tdm_snd_hw_params()
195 switch (cpu_dai->id) { in sdm845_snd_hw_params()
203 codec_dai->component, in sdm845_snd_hw_params()
210 dev_err(rtd->dev, in sdm845_snd_hw_params()
223 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_hw_params()
231 struct snd_soc_component *component = jack->private_data; in sdm845_jack_free()
239 struct snd_soc_card *card = rtd->card; in sdm845_dai_init()
243 struct snd_soc_dai_link *link = rtd->dai_link; in sdm845_dai_init()
259 if (!pdata->jack_setup) { in sdm845_dai_init()
265 &pdata->jack, in sdm845_dai_init()
270 dev_err(card->dev, "Unable to add Headphone Jack\n"); in sdm845_dai_init()
274 jack = pdata->jack.jack; in sdm845_dai_init()
280 pdata->jack_setup = true; in sdm845_dai_init()
283 switch (cpu_dai->id) { in sdm845_dai_init()
285 jack = pdata->jack.jack; in sdm845_dai_init()
286 component = codec_dai->component; in sdm845_dai_init()
288 jack->private_data = component; in sdm845_dai_init()
289 jack->private_free = sdm845_jack_free; in sdm845_dai_init()
291 &pdata->jack, NULL); in sdm845_dai_init()
292 if (rval != 0 && rval != -ENOTSUPP) { in sdm845_dai_init()
293 dev_warn(card->dev, "Failed to set jack: %d\n", rval); in sdm845_dai_init()
299 if (pdata->slim_port_setup || !link->no_pcm) in sdm845_dai_init()
308 if (rval != 0 && rval != -ENOTSUPP) in sdm845_dai_init()
315 rval = snd_soc_component_set_jack(codec_dai->component, in sdm845_dai_init()
316 &pdata->jack, NULL); in sdm845_dai_init()
317 if (rval != 0 && rval != -ENOTSUPP) { in sdm845_dai_init()
318 dev_warn(card->dev, "Failed to set jack: %d\n", rval); in sdm845_dai_init()
323 pdata->slim_port_setup = true; in sdm845_dai_init()
339 struct snd_soc_card *card = rtd->card; in sdm845_snd_startup()
346 switch (cpu_dai->id) { in sdm845_snd_startup()
350 if (++(data->pri_mi2s_clk_count) == 1) { in sdm845_snd_startup()
364 if (++(data->sec_mi2s_clk_count) == 1) { in sdm845_snd_startup()
383 if (++(data->quat_tdm_clk_count) == 1) { in sdm845_snd_startup()
393 if (!strcmp(codec_dai->component->name_prefix, in sdm845_snd_startup()
398 dev_err(rtd->dev, in sdm845_snd_startup()
404 if (!strcmp(codec_dai->component->name_prefix, in sdm845_snd_startup()
409 dev_err(rtd->dev, in sdm845_snd_startup()
420 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_startup()
429 struct snd_soc_card *card = rtd->card; in sdm845_snd_shutdown()
433 switch (cpu_dai->id) { in sdm845_snd_shutdown()
436 if (--(data->pri_mi2s_clk_count) == 0) { in sdm845_snd_shutdown()
447 if (--(data->sec_mi2s_clk_count) == 0) { in sdm845_snd_shutdown()
456 if (--(data->quat_tdm_clk_count) == 0) { in sdm845_snd_shutdown()
467 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_shutdown()
475 struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card); in sdm845_snd_prepare()
477 struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id]; in sdm845_snd_prepare()
483 if (data->stream_prepared[cpu_dai->id]) { in sdm845_snd_prepare()
486 data->stream_prepared[cpu_dai->id] = false; in sdm845_snd_prepare()
506 data->stream_prepared[cpu_dai->id] = true; in sdm845_snd_prepare()
514 struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card); in sdm845_snd_hw_free()
516 struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id]; in sdm845_snd_hw_free()
518 if (sruntime && data->stream_prepared[cpu_dai->id]) { in sdm845_snd_hw_free()
521 data->stream_prepared[cpu_dai->id] = false; in sdm845_snd_hw_free()
532 .shutdown = sdm845_snd_shutdown,
544 rate->min = rate->max = DEFAULT_SAMPLE_RATE_48K; in sdm845_be_hw_params_fixup()
545 channels->min = channels->max = 2; in sdm845_be_hw_params_fixup()
554 SND_SOC_DAPM_SPK("Left Spk", NULL),
555 SND_SOC_DAPM_SPK("Right Spk", NULL),
570 if (link->no_pcm == 1) { in sdm845_add_ops()
571 link->ops = &sdm845_be_ops; in sdm845_add_ops()
572 link->be_hw_params_fixup = sdm845_be_hw_params_fixup; in sdm845_add_ops()
574 link->init = sdm845_dai_init; in sdm845_add_ops()
582 struct device *dev = &pdev->dev; in sdm845_snd_platform_probe()
587 return -ENOMEM; in sdm845_snd_platform_probe()
592 return -ENOMEM; in sdm845_snd_platform_probe()
594 card->driver_name = DRIVER_NAME; in sdm845_snd_platform_probe()
595 card->dapm_widgets = sdm845_snd_widgets; in sdm845_snd_platform_probe()
596 card->num_dapm_widgets = ARRAY_SIZE(sdm845_snd_widgets); in sdm845_snd_platform_probe()
597 card->controls = sdm845_snd_controls; in sdm845_snd_platform_probe()
598 card->num_controls = ARRAY_SIZE(sdm845_snd_controls); in sdm845_snd_platform_probe()
599 card->dev = dev; in sdm845_snd_platform_probe()
600 card->owner = THIS_MODULE; in sdm845_snd_platform_probe()
606 data->card = card; in sdm845_snd_platform_probe()
614 { .compatible = "qcom,sdm845-sndcard" },
616 { .compatible = "qcom,db845c-sndcard" },
617 { .compatible = "lenovo,yoga-c630-sndcard" },
625 .name = "msm-snd-sdm845",