Lines Matching full:mixer
5 // tegra210_mixer.c - Tegra210 MIXER driver
78 struct tegra210_mixer *mixer = dev_get_drvdata(dev); in tegra210_mixer_runtime_suspend() local
80 regcache_cache_only(mixer->regmap, true); in tegra210_mixer_runtime_suspend()
81 regcache_mark_dirty(mixer->regmap); in tegra210_mixer_runtime_suspend()
88 struct tegra210_mixer *mixer = dev_get_drvdata(dev); in tegra210_mixer_runtime_resume() local
90 regcache_cache_only(mixer->regmap, false); in tegra210_mixer_runtime_resume()
91 regcache_sync(mixer->regmap); in tegra210_mixer_runtime_resume()
96 static int tegra210_mixer_write_ram(struct tegra210_mixer *mixer, in tegra210_mixer_write_ram() argument
104 err = regmap_read_poll_timeout(mixer->regmap, in tegra210_mixer_write_ram()
116 regmap_write(mixer->regmap, in tegra210_mixer_write_ram()
119 regmap_write(mixer->regmap, in tegra210_mixer_write_ram()
129 struct tegra210_mixer *mixer = snd_soc_component_get_drvdata(cmpnt); in tegra210_mixer_configure_gain() local
137 err = tegra210_mixer_write_ram(mixer, reg + i, in tegra210_mixer_configure_gain()
145 err = tegra210_mixer_write_ram(mixer, reg + NUM_GAIN_POLY_COEFFS, in tegra210_mixer_configure_gain()
146 mixer->gain_value[id]); in tegra210_mixer_configure_gain()
159 err = tegra210_mixer_write_ram(mixer, in tegra210_mixer_configure_gain()
167 err = tegra210_mixer_write_ram(mixer, reg + REG_CFG_DONE_TRIGGER, in tegra210_mixer_configure_gain()
182 struct tegra210_mixer *mixer = snd_soc_component_get_drvdata(cmpnt); in tegra210_mixer_get_gain() local
189 ucontrol->value.integer.value[0] = mixer->gain_value[i]; in tegra210_mixer_get_gain()
201 struct tegra210_mixer *mixer = snd_soc_component_get_drvdata(cmpnt); in tegra210_mixer_apply_gain() local
205 /* Save gain value for specific MIXER input */ in tegra210_mixer_apply_gain()
209 if (mixer->gain_value[id] == ucontrol->value.integer.value[0]) in tegra210_mixer_apply_gain()
212 mixer->gain_value[id] = ucontrol->value.integer.value[0]; in tegra210_mixer_apply_gain()
235 static int tegra210_mixer_set_audio_cif(struct tegra210_mixer *mixer, in tegra210_mixer_set_audio_cif() argument
264 tegra_set_cif(mixer->regmap, in tegra210_mixer_set_audio_cif()
275 struct tegra210_mixer *mixer = snd_soc_dai_get_drvdata(dai); in tegra210_mixer_in_hw_params() local
278 err = tegra210_mixer_set_audio_cif(mixer, params, in tegra210_mixer_in_hw_params()
291 struct tegra210_mixer *mixer = snd_soc_dai_get_drvdata(dai); in tegra210_mixer_out_hw_params() local
293 return tegra210_mixer_set_audio_cif(mixer, params, in tegra210_mixer_out_hw_params()
308 .name = "MIXER-RX-CIF"#id, \
334 .name = "MIXER-TX-CIF" #id, \
359 /* Mixer Input */
371 /* Mixer Output */
409 /* Volume controls for all MIXER inputs */
623 struct tegra210_mixer *mixer; in tegra210_mixer_platform_probe() local
627 mixer = devm_kzalloc(dev, sizeof(*mixer), GFP_KERNEL); in tegra210_mixer_platform_probe()
628 if (!mixer) in tegra210_mixer_platform_probe()
631 dev_set_drvdata(dev, mixer); in tegra210_mixer_platform_probe()
633 /* Use default gain value for all MIXER inputs */ in tegra210_mixer_platform_probe()
635 mixer->gain_value[i] = gain_params.gain_value; in tegra210_mixer_platform_probe()
641 mixer->regmap = devm_regmap_init_mmio(dev, regs, in tegra210_mixer_platform_probe()
643 if (IS_ERR(mixer->regmap)) { in tegra210_mixer_platform_probe()
645 return PTR_ERR(mixer->regmap); in tegra210_mixer_platform_probe()
648 regcache_cache_only(mixer->regmap, true); in tegra210_mixer_platform_probe()
654 dev_err(dev, "can't register MIXER component, err: %d\n", err); in tegra210_mixer_platform_probe()
687 MODULE_DESCRIPTION("Tegra210 MIXER ASoC driver");