Lines Matching +full:tegra210 +full:- +full:amixer

1 // SPDX-License-Identifier: GPL-2.0-only
2 // SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES.
5 // tegra210_mixer.c - Tegra210 MIXER driver
80 regcache_cache_only(mixer->regmap, true);
81 regcache_mark_dirty(mixer->regmap);
90 regcache_cache_only(mixer->regmap, false);
91 regcache_sync(mixer->regmap);
104 err = regmap_read_poll_timeout(mixer->regmap,
116 regmap_write(mixer->regmap,
119 regmap_write(mixer->regmap,
133 pm_runtime_get_sync(cmpnt->dev);
146 mixer->gain_value[id]);
171 pm_runtime_put(cmpnt->dev);
180 (struct soc_mixer_control *)kcontrol->private_value;
183 unsigned int reg = mc->reg;
186 i = (reg - TEGRA210_MIXER_GAIN_CFG_RAM_ADDR_0) /
189 ucontrol->value.integer.value[0] = mixer->gain_value[i];
199 (struct soc_mixer_control *)kcontrol->private_value;
202 unsigned int reg = mc->reg, id;
206 id = (reg - TEGRA210_MIXER_GAIN_CFG_RAM_ADDR_0) /
209 if (mixer->gain_value[id] == ucontrol->value.integer.value[0])
212 mixer->gain_value[id] = ucontrol->value.integer.value[0];
216 dev_err(cmpnt->dev, "Failed to apply gain\n");
256 return -EINVAL;
264 tegra_set_cif(mixer->regmap,
280 dai->id);
284 return tegra210_mixer_configure_gain(dai->component, dai->id, false);
295 dai->id - TEGRA210_MIXER_RX_MAX);
308 .name = "MIXER-RX-CIF"#id, \
310 .stream_name = "RX" #id "-CIF-Playback",\
320 .stream_name = "RX" #id "-CIF-Capture", \
334 .name = "MIXER-TX-CIF" #id, \
336 .stream_name = "TX" #id "-CIF-Playback",\
346 .stream_name = "TX" #id "-CIF-Capture", \
401 MIXER_GAIN_CFG_RAM_ADDR((id) - 1), 0, \
405 MIXER_GAIN_CFG_RAM_ADDR((id) - 1), 0, \
452 { "RX" #id " XBAR-" sname, NULL, "RX" #id " XBAR-TX" }, \
453 { "RX" #id "-CIF-" sname, NULL, "RX" #id " XBAR-" sname }, \
454 { "RX" #id, NULL, "RX" #id "-CIF-" sname }
472 { "TX" #id "-CIF-" sname, NULL, "TX" #id }, \
473 { "TX" #id " XBAR-" sname, NULL, "TX" #id "-CIF-" sname }, \
474 { "TX" #id " XBAR-RX", NULL, "TX" #id " XBAR-" sname } \
615 { .compatible = "nvidia,tegra210-amixer" },
622 struct device *dev = &pdev->dev;
629 return -ENOMEM;
635 mixer->gain_value[i] = gain_params.gain_value;
641 mixer->regmap = devm_regmap_init_mmio(dev, regs,
643 if (IS_ERR(mixer->regmap)) {
645 return PTR_ERR(mixer->regmap);
648 regcache_cache_only(mixer->regmap, true);
665 pm_runtime_disable(&pdev->dev);
686 MODULE_DESCRIPTION("Tegra210 MIXER ASoC driver");