Lines Matching +full:mic +full:- +full:int
1 // SPDX-License-Identifier: GPL-2.0
167 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(jz4725b_dac_tlv, -2250, 150, 0);
169 0, 11, TLV_DB_SCALE_ITEM(-2250, 0, 0),
170 12, 31, TLV_DB_SCALE_ITEM(-2250, 150, 0),
174 0, 11, TLV_DB_SCALE_ITEM(-3350, 200, 0),
175 12, 23, TLV_DB_SCALE_ITEM(-1050, 100, 0),
204 SOC_DOUBLE_R_TLV("Mixer Mic 1 Bypass Playback Volume",
209 SOC_DOUBLE_R_TLV("Mixer Mic 2 Bypass Playback Volume",
228 SOC_SINGLE("High-Pass Filter Capture Switch",
232 SOC_ENUM("Mic Mode Capture Switch", jz4725b_mic_mode_enum),
241 "Mic 1", "Mic 2", "Line In", "Mixer",
243 static const unsigned int jz4725b_codec_adc_src_values[] = { 0, 1, 2, 3, };
256 SOC_DAPM_SINGLE("Mic 1 Bypass Playback Switch", JZ4725B_CODEC_REG_CR3,
258 SOC_DAPM_SINGLE("Mic 2 Bypass Playback Switch", JZ4725B_CODEC_REG_CR3,
262 static int jz4725b_out_stage_enable(struct snd_soc_dapm_widget *w, in jz4725b_out_stage_enable()
264 int event) in jz4725b_out_stage_enable()
266 struct snd_soc_component *codec = snd_soc_dapm_to_component(w->dapm); in jz4725b_out_stage_enable()
268 struct regmap *map = icdc->regmap; in jz4725b_out_stage_enable()
269 unsigned int val; in jz4725b_out_stage_enable()
287 return -EINVAL; in jz4725b_out_stage_enable()
316 SND_SOC_DAPM_MIXER("Mic 1", JZ4725B_CODEC_REG_CR3,
318 SND_SOC_DAPM_MIXER("Mic 2", JZ4725B_CODEC_REG_CR3,
329 SND_SOC_DAPM_SUPPLY("Mic Bias", JZ4725B_CODEC_REG_CR1,
346 {"Mic 1", NULL, "MIC1P"},
347 {"Mic 1", NULL, "MIC1N"},
348 {"Mic 2", NULL, "MIC2P"},
349 {"Mic 2", NULL, "MIC2N"},
354 {"Mixer", "Mic 1 Bypass Playback Switch", "Mic 1"},
355 {"Mixer", "Mic 2 Bypass Playback Switch", "Mic 2"},
363 {"ADC Source Capture Route", "Mic 1", "Mic 1"},
364 {"ADC Source Capture Route", "Mic 2", "Mic 2"},
373 static int jz4725b_codec_set_bias_level(struct snd_soc_component *component, in jz4725b_codec_set_bias_level()
377 struct regmap *map = icdc->regmap; in jz4725b_codec_set_bias_level()
403 static int jz4725b_codec_dev_probe(struct snd_soc_component *component) in jz4725b_codec_dev_probe()
406 struct regmap *map = icdc->regmap; in jz4725b_codec_dev_probe()
408 clk_prepare_enable(icdc->clk); in jz4725b_codec_dev_probe()
425 clk_disable_unprepare(icdc->clk); in jz4725b_codec_dev_remove()
442 static const unsigned int jz4725b_codec_sample_rates[] = {
448 static int jz4725b_codec_hw_params(struct snd_pcm_substream *substream, in jz4725b_codec_hw_params()
451 struct jz_icdc *icdc = snd_soc_component_get_drvdata(dai->component); in jz4725b_codec_hw_params()
452 unsigned int rate, bit_width; in jz4725b_codec_hw_params()
468 return -EINVAL; in jz4725b_codec_hw_params()
477 return -EINVAL; in jz4725b_codec_hw_params()
479 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in jz4725b_codec_hw_params()
480 regmap_update_bits(icdc->regmap, in jz4725b_codec_hw_params()
485 regmap_update_bits(icdc->regmap, in jz4725b_codec_hw_params()
490 regmap_update_bits(icdc->regmap, in jz4725b_codec_hw_params()
495 regmap_update_bits(icdc->regmap, in jz4725b_codec_hw_params()
512 .name = "jz4725b-hifi",
530 static bool jz4725b_codec_volatile(struct device *dev, unsigned int reg) in jz4725b_codec_volatile()
535 static bool jz4725b_codec_can_access_reg(struct device *dev, unsigned int reg) in jz4725b_codec_can_access_reg()
540 static int jz4725b_codec_io_wait(struct jz_icdc *icdc) in jz4725b_codec_io_wait()
544 return readl_poll_timeout(icdc->base + ICDC_RGADW_OFFSET, reg, in jz4725b_codec_io_wait()
548 static int jz4725b_codec_reg_read(void *context, unsigned int reg, in jz4725b_codec_reg_read()
549 unsigned int *val) in jz4725b_codec_reg_read()
552 unsigned int i; in jz4725b_codec_reg_read()
554 int ret; in jz4725b_codec_reg_read()
560 tmp = readl(icdc->base + ICDC_RGADW_OFFSET); in jz4725b_codec_reg_read()
563 writel(tmp, icdc->base + ICDC_RGADW_OFFSET); in jz4725b_codec_reg_read()
567 *val = readl(icdc->base + ICDC_RGDATA_OFFSET) & in jz4725b_codec_reg_read()
573 static int jz4725b_codec_reg_write(void *context, unsigned int reg, in jz4725b_codec_reg_write()
574 unsigned int val) in jz4725b_codec_reg_write()
577 int ret; in jz4725b_codec_reg_write()
584 icdc->base + ICDC_RGADW_OFFSET); in jz4725b_codec_reg_write()
617 static int jz4725b_codec_probe(struct platform_device *pdev) in jz4725b_codec_probe()
619 struct device *dev = &pdev->dev; in jz4725b_codec_probe()
621 int ret; in jz4725b_codec_probe()
625 return -ENOMEM; in jz4725b_codec_probe()
627 icdc->base = devm_platform_ioremap_resource(pdev, 0); in jz4725b_codec_probe()
628 if (IS_ERR(icdc->base)) in jz4725b_codec_probe()
629 return PTR_ERR(icdc->base); in jz4725b_codec_probe()
631 icdc->regmap = devm_regmap_init(dev, NULL, icdc, in jz4725b_codec_probe()
633 if (IS_ERR(icdc->regmap)) in jz4725b_codec_probe()
634 return PTR_ERR(icdc->regmap); in jz4725b_codec_probe()
636 icdc->clk = devm_clk_get(&pdev->dev, "aic"); in jz4725b_codec_probe()
637 if (IS_ERR(icdc->clk)) in jz4725b_codec_probe()
638 return PTR_ERR(icdc->clk); in jz4725b_codec_probe()
651 { .compatible = "ingenic,jz4725b-codec", },
659 .name = "jz4725b-codec",