• 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>
52 struct sdm845_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card); in sdm845_slim_snd_hw_params()
60 substream->stream); in sdm845_slim_snd_hw_params()
61 if (sruntime != ERR_PTR(-ENOTSUPP)) in sdm845_slim_snd_hw_params()
62 pdata->sruntime[cpu_dai->id] = sruntime; in sdm845_slim_snd_hw_params()
67 if (ret != 0 && ret != -ENOTSUPP) { in sdm845_slim_snd_hw_params()
70 } else if (ret == -ENOTSUPP) { in sdm845_slim_snd_hw_params()
75 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in sdm845_slim_snd_hw_params()
100 dev_err(rtd->dev, "%s: invalid param format 0x%x\n", in sdm845_tdm_snd_hw_params()
102 return -EINVAL; in sdm845_tdm_snd_hw_params()
106 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in sdm845_tdm_snd_hw_params()
110 dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n", in sdm845_tdm_snd_hw_params()
118 dev_err(rtd->dev, "%s: failed to set channel map, err:%d\n", 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 if (!strcmp(codec_dai->component->name_prefix, "Left")) { in sdm845_tdm_snd_hw_params()
148 dev_err(rtd->dev, in sdm845_tdm_snd_hw_params()
154 if (!strcmp(codec_dai->component->name_prefix, "Right")) { in sdm845_tdm_snd_hw_params()
160 dev_err(rtd->dev, in sdm845_tdm_snd_hw_params()
179 switch (cpu_dai->id) { in sdm845_snd_hw_params()
187 codec_dai->component, in sdm845_snd_hw_params()
194 dev_err(rtd->dev, in sdm845_snd_hw_params()
207 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_hw_params()
215 struct snd_soc_component *component = jack->private_data; in sdm845_jack_free()
223 struct snd_soc_card *card = rtd->card; in sdm845_dai_init()
242 if (!pdata->jack_setup) { in sdm845_dai_init()
248 &pdata->jack, NULL, 0); in sdm845_dai_init()
251 dev_err(card->dev, "Unable to add Headphone Jack\n"); in sdm845_dai_init()
255 jack = pdata->jack.jack; in sdm845_dai_init()
261 pdata->jack_setup = true; in sdm845_dai_init()
264 switch (cpu_dai->id) { in sdm845_dai_init()
266 jack = pdata->jack.jack; in sdm845_dai_init()
267 component = codec_dai->component; in sdm845_dai_init()
269 jack->private_data = component; in sdm845_dai_init()
270 jack->private_free = sdm845_jack_free; in sdm845_dai_init()
272 &pdata->jack, NULL); in sdm845_dai_init()
273 if (rval != 0 && rval != -ENOTSUPP) { in sdm845_dai_init()
274 dev_warn(card->dev, "Failed to set jack: %d\n", rval); in sdm845_dai_init()
285 if (rval != 0 && rval != -ENOTSUPP) in sdm845_dai_init()
306 struct snd_soc_card *card = rtd->card; in sdm845_snd_startup()
313 switch (cpu_dai->id) { in sdm845_snd_startup()
317 if (++(data->pri_mi2s_clk_count) == 1) { in sdm845_snd_startup()
331 if (++(data->sec_mi2s_clk_count) == 1) { in sdm845_snd_startup()
350 if (++(data->quat_tdm_clk_count) == 1) { in sdm845_snd_startup()
360 if (!strcmp(codec_dai->component->name_prefix, in sdm845_snd_startup()
365 dev_err(rtd->dev, in sdm845_snd_startup()
371 if (!strcmp(codec_dai->component->name_prefix, in sdm845_snd_startup()
376 dev_err(rtd->dev, in sdm845_snd_startup()
387 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_startup()
396 struct snd_soc_card *card = rtd->card; in sdm845_snd_shutdown()
400 switch (cpu_dai->id) { in sdm845_snd_shutdown()
403 if (--(data->pri_mi2s_clk_count) == 0) { in sdm845_snd_shutdown()
414 if (--(data->sec_mi2s_clk_count) == 0) { in sdm845_snd_shutdown()
423 if (--(data->quat_tdm_clk_count) == 0) { in sdm845_snd_shutdown()
434 pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); in sdm845_snd_shutdown()
442 struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card); in sdm845_snd_prepare()
444 struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id]; in sdm845_snd_prepare()
450 if (data->stream_prepared[cpu_dai->id]) { in sdm845_snd_prepare()
453 data->stream_prepared[cpu_dai->id] = false; in sdm845_snd_prepare()
473 data->stream_prepared[cpu_dai->id] = true; in sdm845_snd_prepare()
481 struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card); in sdm845_snd_hw_free()
483 struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id]; in sdm845_snd_hw_free()
485 if (sruntime && data->stream_prepared[cpu_dai->id]) { in sdm845_snd_hw_free()
488 data->stream_prepared[cpu_dai->id] = false; in sdm845_snd_hw_free()
499 .shutdown = sdm845_snd_shutdown,
511 rate->min = rate->max = DEFAULT_SAMPLE_RATE_48K; in sdm845_be_hw_params_fixup()
512 channels->min = channels->max = 2; in sdm845_be_hw_params_fixup()
521 SND_SOC_DAPM_SPK("Left Spk", NULL),
522 SND_SOC_DAPM_SPK("Right Spk", NULL),
532 if (link->no_pcm == 1) { in sdm845_add_ops()
533 link->ops = &sdm845_be_ops; in sdm845_add_ops()
534 link->be_hw_params_fixup = sdm845_be_hw_params_fixup; in sdm845_add_ops()
536 link->init = sdm845_dai_init; in sdm845_add_ops()
544 struct device *dev = &pdev->dev; in sdm845_snd_platform_probe()
549 return -ENOMEM; in sdm845_snd_platform_probe()
554 return -ENOMEM; in sdm845_snd_platform_probe()
556 card->driver_name = DRIVER_NAME; in sdm845_snd_platform_probe()
557 card->dapm_widgets = sdm845_snd_widgets; in sdm845_snd_platform_probe()
558 card->num_dapm_widgets = ARRAY_SIZE(sdm845_snd_widgets); in sdm845_snd_platform_probe()
559 card->dev = dev; in sdm845_snd_platform_probe()
560 card->owner = THIS_MODULE; in sdm845_snd_platform_probe()
566 data->card = card; in sdm845_snd_platform_probe()
574 { .compatible = "qcom,sdm845-sndcard" },
575 { .compatible = "qcom,db845c-sndcard" },
576 { .compatible = "lenovo,yoga-c630-sndcard" },
584 .name = "msm-snd-sdm845",