Lines Matching +full:clk +full:- +full:source
1 // SPDX-License-Identifier: GPL-2.0
8 #include <linux/clk.h>
17 #include <sound/soc-dai.h>
18 #include <sound/soc-dapm.h>
182 struct clk *clk;
189 struct regmap *regmap = jz_codec->regmap;
219 struct snd_soc_component *codec = dai->component;
227 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
236 struct snd_soc_component *codec = dai->component;
239 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
247 struct snd_soc_component *codec = dai->component;
254 if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
264 ret = -EINVAL;
272 struct snd_soc_component *codec = dai->component;
282 regmap_read(jz_codec->regmap, JZ4770_CODEC_REG_CR_DAC, &val);
287 err = regmap_read_poll_timeout(jz_codec->regmap,
292 dev_err(jz_codec->dev,
298 regmap_set_bits(jz_codec->regmap, JZ4770_CODEC_REG_IFR,
306 static const DECLARE_TLV_DB_MINMAX_MUTE(dac_tlv, -3100, 0);
308 static const DECLARE_TLV_DB_MINMAX(out_tlv, -2500, 600);
309 static const DECLARE_TLV_DB_SCALE(linein_tlv, -2500, 100, 0);
310 static const DECLARE_TLV_DB_MINMAX(mixer_tlv, -3100, 0);
348 struct snd_soc_component *codec = snd_soc_dapm_to_component(w->dapm);
356 regmap_clear_bits(jz_codec->regmap, JZ4770_CODEC_REG_CR_HP,
361 /* wait for ramp-up complete (RUP) */
362 err = regmap_read_poll_timeout(jz_codec->regmap,
367 dev_err(jz_codec->dev, "RUP timeout: %d", err);
372 regmap_set_bits(jz_codec->regmap, JZ4770_CODEC_REG_IFR,
379 regmap_set_bits(jz_codec->regmap, JZ4770_CODEC_REG_CR_HP,
382 err = regmap_read_poll_timeout(jz_codec->regmap,
387 dev_err(jz_codec->dev, "RDO timeout: %d", err);
392 regmap_set_bits(jz_codec->regmap, JZ4770_CODEC_REG_IFR,
465 SND_SOC_DAPM_MUX("Headphones Source", SND_SOC_NOPM, 0, 0,
467 SND_SOC_DAPM_MUX("Capture Source", SND_SOC_NOPM, 0, 0,
469 SND_SOC_DAPM_MUX("Line Out Source", SND_SOC_NOPM, 0, 0,
503 SND_SOC_DAPM_SUPPLY("Cap-less", JZ4770_CODEC_REG_CR_HP,
537 { "Headphones Source", "Mic 1", "Mic" },
538 { "Headphones Source", "Mic 2", "Mic" },
539 { "Capture Source", "Mic 1", "Mic" },
540 { "Capture Source", "Mic 2", "Mic" },
542 { "Headphones Source", "Mic 1", "Mic 1" },
543 { "Headphones Source", "Mic 2", "Mic 2" },
544 { "Headphones Source", "Line In", "Line In Bypass" },
545 { "Headphones Source", "PCM", "Headphones Playback" },
546 { "HP Out", NULL, "Headphones Source" },
548 { "Capture Source", "Line In", "Line In" },
549 { "Capture Source", "Mic 1", "Mic 1" },
550 { "Capture Source", "Mic 2", "Mic 2" },
551 { "ADC", NULL, "Capture Source" },
554 { "Line Out Source", "Line In", "Line In Bypass" },
555 { "Line Out Source", "PCM", "PCM Playback" },
560 { "Line Out", NULL, "Line Out Source" },
575 struct regmap *regmap = jz_codec->regmap;
590 /* Set mic 1 as default source for ADC */
626 /* default to cap-less mode(0) */
639 clk_prepare_enable(jz_codec->clk);
650 clk_disable_unprepare(jz_codec->clk);
677 struct jz_codec *codec = snd_soc_component_get_drvdata(dai->component);
694 return -EINVAL;
703 return -EINVAL;
705 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
706 regmap_update_bits(codec->regmap, JZ4770_CODEC_REG_AICR_DAC,
709 regmap_update_bits(codec->regmap, JZ4770_CODEC_REG_FCR_DAC,
713 regmap_update_bits(codec->regmap, JZ4770_CODEC_REG_AICR_ADC,
716 regmap_update_bits(codec->regmap, JZ4770_CODEC_REG_FCR_ADC,
739 .name = "jz4770-hifi",
789 return readl_poll_timeout(codec->base + ICDC_RGADW_OFFSET, reg,
806 tmp = readl(codec->base + ICDC_RGADW_OFFSET);
809 writel(tmp, codec->base + ICDC_RGADW_OFFSET);
813 *val = readl(codec->base + ICDC_RGDATA_OFFSET) &
830 codec->base + ICDC_RGADW_OFFSET);
866 struct device *dev = &pdev->dev;
872 return -ENOMEM;
874 codec->dev = dev;
876 codec->base = devm_platform_ioremap_resource(pdev, 0);
877 if (IS_ERR(codec->base))
878 return PTR_ERR(codec->base);
880 codec->regmap = devm_regmap_init(dev, NULL, codec,
882 if (IS_ERR(codec->regmap))
883 return PTR_ERR(codec->regmap);
885 codec->clk = devm_clk_get(dev, "aic");
886 if (IS_ERR(codec->clk))
887 return PTR_ERR(codec->clk);
902 { .compatible = "ingenic,jz4770-codec", },
910 .name = "jz4770-codec",