Lines Matching +full:switch +full:- +full:freq
1 // SPDX-License-Identifier: GPL-2.0-or-later
20 #include <sound/soc-dapm.h>
97 struct snd_soc_component *component = dai->component; in mc13783_pcm_hw_params_dac()
109 return -EINVAL; in mc13783_pcm_hw_params_dac()
116 struct snd_soc_component *component = dai->component; in mc13783_pcm_hw_params_codec()
120 switch (rate) { in mc13783_pcm_hw_params_codec()
128 return -EINVAL; in mc13783_pcm_hw_params_codec()
141 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in mc13783_pcm_hw_params_sync()
150 struct snd_soc_component *component = dai->component; in mc13783_set_fmt()
157 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { in mc13783_set_fmt()
165 return -EINVAL; in mc13783_set_fmt()
169 switch (fmt & SND_SOC_DAIFMT_INV_MASK) { in mc13783_set_fmt()
184 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { in mc13783_set_fmt()
193 return -EINVAL; in mc13783_set_fmt()
205 if (dai->id == MC13783_ID_STEREO_DAC) in mc13783_set_fmt_async()
234 -1,
236 -1, /* 12000000, invalid for voice codec */
237 -1, /* 3686400, invalid for voice codec */
242 int clk_id, unsigned int freq, int dir, in mc13783_set_sysclk() argument
245 struct snd_soc_component *component = dai->component; in mc13783_set_sysclk()
253 if (mc13783_sysclk[clk] == freq) in mc13783_set_sysclk()
258 return -EINVAL; in mc13783_set_sysclk()
271 int clk_id, unsigned int freq, int dir) in mc13783_set_sysclk_dac() argument
273 return mc13783_set_sysclk(dai, clk_id, freq, dir, MC13783_AUDIO_DAC); in mc13783_set_sysclk_dac()
277 int clk_id, unsigned int freq, int dir) in mc13783_set_sysclk_codec() argument
279 return mc13783_set_sysclk(dai, clk_id, freq, dir, MC13783_AUDIO_CODEC); in mc13783_set_sysclk_codec()
283 int clk_id, unsigned int freq, int dir) in mc13783_set_sysclk_sync() argument
287 ret = mc13783_set_sysclk(dai, clk_id, freq, dir, MC13783_AUDIO_DAC); in mc13783_set_sysclk_sync()
291 return mc13783_set_sysclk(dai, clk_id, freq, dir, MC13783_AUDIO_CODEC); in mc13783_set_sysclk_sync()
298 struct snd_soc_component *component = dai->component; in mc13783_set_tdm_slot_dac()
303 switch (slots) { in mc13783_set_tdm_slot_dac()
314 return -EINVAL; in mc13783_set_tdm_slot_dac()
317 switch (rx_mask) { in mc13783_set_tdm_slot_dac()
331 return -EINVAL; in mc13783_set_tdm_slot_dac()
343 struct snd_soc_component *component = dai->component; in mc13783_set_tdm_slot_codec()
348 return -EINVAL; in mc13783_set_tdm_slot_codec()
351 return -EINVAL; in mc13783_set_tdm_slot_codec()
379 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_TX, 7, 1, 0);
382 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_TX, 5, 1, 0);
385 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_TX, 9, 1, 0);
388 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_TX, 11, 1, 0);
412 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 3, 1, 0);
432 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 18, 1, 0);
435 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_CODEC, 16, 1, 0);
438 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 5, 1, 0);
441 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 10, 1, 0);
444 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 9, 1, 0);
447 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 16, 1, 0);
450 SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 15, 1, 0);
502 SND_SOC_DAPM_SWITCH("CDCOUT Switch", MC13783_AUDIO_RX0, 18, 0,
504 SND_SOC_DAPM_SWITCH("Speaker Amp Switch", MC13783_AUDIO_RX0, 3, 0,
553 { "SP", "Speaker Amp Switch", "Speaker Amp Source MUX"},
561 { "CDCOUT", "CDCOUT Switch", "Voice CODEC PGA"},
574 SOC_SINGLE("PCM Playback Switch", MC13783_AUDIO_RX1, 5, 1, 0),
578 SOC_SINGLE("CDCOUT Switch", MC13783_AUDIO_RX0, 18, 1, 0),
579 SOC_SINGLE("Earpiece Amp Switch", MC13783_AUDIO_RX0, 3, 1, 0),
580 SOC_DOUBLE("Headset Amp Switch", MC13783_AUDIO_RX0, 10, 9, 1, 0),
581 SOC_DOUBLE("Line out Amp Switch", MC13783_AUDIO_RX0, 16, 15, 1, 0),
583 SOC_SINGLE("PCM Capture Mixin Switch", MC13783_AUDIO_RX0, 22, 1, 0),
584 SOC_SINGLE("Line in Capture Mixin Switch", MC13783_AUDIO_RX0, 23, 1, 0),
587 SOC_SINGLE("CODEC Capture Mixin Switch", MC13783_AUDIO_RX0, 21, 1, 0),
590 SOC_SINGLE("Line in Capture Switch", MC13783_AUDIO_RX1, 10, 1, 0),
592 SOC_SINGLE("MC1 Capture Bias Switch", MC13783_AUDIO_TX, 0, 1, 0),
593 SOC_SINGLE("MC2 Capture Bias Switch", MC13783_AUDIO_TX, 1, 1, 0),
601 dev_get_regmap(component->dev->parent, NULL)); in mc13783_probe()
604 mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_RX0, 0x25893); in mc13783_probe()
605 mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_RX1, 0x00d35A); in mc13783_probe()
606 mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_TX, 0x420000); in mc13783_probe()
607 mc13xxx_reg_write(priv->mc13xxx, MC13783_SSI_NETWORK, 0x013060); in mc13783_probe()
608 mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_CODEC, 0x180027); in mc13783_probe()
609 mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_DAC, 0x0e0004); in mc13783_probe()
611 if (priv->adc_ssi_port == MC13783_SSI1_PORT) in mc13783_probe()
612 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC, in mc13783_probe()
615 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC, in mc13783_probe()
618 if (priv->dac_ssi_port == MC13783_SSI1_PORT) in mc13783_probe()
619 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC, in mc13783_probe()
622 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC, in mc13783_probe()
633 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_RX0, 0x3, 0); in mc13783_remove()
660 * (mc13783-hifi-playback and mc13783-hifi-capture). Using the same port
661 * forces us to use symmetric rates (mc13783-hifi).
665 .name = "mc13783-hifi-playback",
676 .name = "mc13783-hifi-capture",
698 .name = "mc13783-hifi",
737 struct mc13xxx_codec_platform_data *pdata = pdev->dev.platform_data; in mc13783_codec_probe()
741 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in mc13783_codec_probe()
743 return -ENOMEM; in mc13783_codec_probe()
746 priv->adc_ssi_port = pdata->adc_ssi_port; in mc13783_codec_probe()
747 priv->dac_ssi_port = pdata->dac_ssi_port; in mc13783_codec_probe()
749 np = of_get_child_by_name(pdev->dev.parent->of_node, "codec"); in mc13783_codec_probe()
751 return -ENOSYS; in mc13783_codec_probe()
753 ret = of_property_read_u32(np, "adc-port", &priv->adc_ssi_port); in mc13783_codec_probe()
759 ret = of_property_read_u32(np, "dac-port", &priv->dac_ssi_port); in mc13783_codec_probe()
768 dev_set_drvdata(&pdev->dev, priv); in mc13783_codec_probe()
769 priv->mc13xxx = dev_get_drvdata(pdev->dev.parent); in mc13783_codec_probe()
771 if (priv->adc_ssi_port == priv->dac_ssi_port) in mc13783_codec_probe()
772 ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_mc13783, in mc13783_codec_probe()
775 ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_mc13783, in mc13783_codec_probe()
788 .name = "mc13783-codec",