Lines Matching refs:dmic

45 	struct tegra210_dmic *dmic = dev_get_drvdata(dev);
47 regcache_cache_only(dmic->regmap, true);
48 regcache_mark_dirty(dmic->regmap);
50 clk_disable_unprepare(dmic->clk_dmic);
57 struct tegra210_dmic *dmic = dev_get_drvdata(dev);
60 err = clk_prepare_enable(dmic->clk_dmic);
66 regcache_cache_only(dmic->regmap, false);
67 regcache_sync(dmic->regmap);
76 struct tegra210_dmic *dmic = snd_soc_dai_get_drvdata(dai);
88 switch (dmic->ch_select) {
107 clk_rate = (DMIC_OSR_FACTOR << dmic->osr_val) * srate;
109 err = clk_set_rate(dmic->clk_dmic, clk_rate);
116 regmap_update_bits(dmic->regmap,
124 (dmic->lrsel << LRSEL_POL_SHIFT) |
125 (dmic->osr_val << OSR_SHIFT) |
126 ((dmic->ch_select + 1) << CH_SEL_SHIFT));
132 if (dmic->boost_gain)
133 gain_q23 = div_u64(gain_q23 * dmic->boost_gain, 100);
135 regmap_write(dmic->regmap, TEGRA210_DMIC_LP_FILTER_GAIN,
151 cif_conf.mono_conv = dmic->mono_to_stereo;
152 cif_conf.stereo_conv = dmic->stereo_to_mono;
154 tegra_set_cif(dmic->regmap, TEGRA210_DMIC_TX_CIF_CTRL, &cif_conf);
163 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
165 ucontrol->value.integer.value[0] = dmic->boost_gain;
174 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
177 if (value == dmic->boost_gain)
180 dmic->boost_gain = value;
189 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
191 ucontrol->value.enumerated.item[0] = dmic->ch_select;
200 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
203 if (value == dmic->ch_select)
206 dmic->ch_select = value;
215 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
217 ucontrol->value.enumerated.item[0] = dmic->mono_to_stereo;
226 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
229 if (value == dmic->mono_to_stereo)
232 dmic->mono_to_stereo = value;
241 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
243 ucontrol->value.enumerated.item[0] = dmic->stereo_to_mono;
252 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
255 if (value == dmic->stereo_to_mono)
258 dmic->stereo_to_mono = value;
267 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
269 ucontrol->value.enumerated.item[0] = dmic->osr_val;
278 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
281 if (value == dmic->osr_val)
284 dmic->osr_val = value;
293 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
295 ucontrol->value.enumerated.item[0] = dmic->lrsel;
304 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
307 if (value == dmic->lrsel)
310 dmic->lrsel = value;
489 struct tegra210_dmic *dmic;
493 dmic = devm_kzalloc(dev, sizeof(*dmic), GFP_KERNEL);
494 if (!dmic)
497 dmic->osr_val = DMIC_OSR_64;
498 dmic->ch_select = DMIC_CH_SELECT_STEREO;
499 dmic->lrsel = DMIC_LRSEL_LEFT;
500 dmic->boost_gain = 0;
501 dmic->stereo_to_mono = 0; /* "CH0" */
503 dev_set_drvdata(dev, dmic);
505 dmic->clk_dmic = devm_clk_get(dev, "dmic");
506 if (IS_ERR(dmic->clk_dmic)) {
508 return PTR_ERR(dmic->clk_dmic);
515 dmic->regmap = devm_regmap_init_mmio(dev, regs,
517 if (IS_ERR(dmic->regmap)) {
519 return PTR_ERR(dmic->regmap);
522 regcache_cache_only(dmic->regmap, true);
552 { .compatible = "nvidia,tegra210-dmic" },
559 .name = "tegra210-dmic",