Lines Matching +full:rx +full:- +full:device

1 // SPDX-License-Identifier: GPL-2.0-only
2 // SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES.
5 // tegra210_ope.c - Tegra210 OPE driver
8 #include <linux/device.h>
44 return -EINVAL; in tegra210_ope_set_audio_cif()
55 return -EINVAL; in tegra210_ope_set_audio_cif()
63 tegra_set_cif(ope->regmap, reg, &cif_conf); in tegra210_ope_set_audio_cif()
72 struct device *dev = dai->dev; in tegra210_ope_hw_params()
76 /* Set RX and TX CIF */ in tegra210_ope_hw_params()
80 dev_err(dev, "Can't set OPE RX CIF: %d\n", err); in tegra210_ope_hw_params()
91 tegra210_mbdrc_hw_params(dai->component); in tegra210_ope_hw_params()
98 struct tegra210_ope *ope = dev_get_drvdata(cmpnt->dev); in tegra210_ope_component_probe()
105 * device registered by OPE driver. In fact OPE HW block includes in tegra210_ope_component_probe()
114 snd_soc_component_init_regmap(cmpnt, ope->regmap); in tegra210_ope_component_probe()
125 .name = "OPE-RX-CIF",
127 .stream_name = "RX-CIF-Playback",
137 .stream_name = "RX-CIF-Capture",
148 .name = "OPE-TX-CIF",
150 .stream_name = "TX-CIF-Playback",
160 .stream_name = "TX-CIF-Capture",
174 SND_SOC_DAPM_AIF_IN("RX", NULL, 0, SND_SOC_NOPM, 0, 0),
180 { "RX XBAR-" sname, NULL, "XBAR-TX" }, \
181 { "RX-CIF-" sname, NULL, "RX XBAR-" sname }, \
182 { "RX", NULL, "RX-CIF-" sname }, \
183 { "TX-CIF-" sname, NULL, "TX" }, \
184 { "TX XBAR-" sname, NULL, "TX-CIF-" sname }, \
185 { "XBAR-RX", NULL, "TX XBAR-" sname }
188 { "TX", NULL, "RX" },
208 ucontrol->value.enumerated.item[0] = ope->data_dir; in tegra210_ope_get_data_dir()
218 unsigned int value = ucontrol->value.enumerated.item[0]; in tegra210_ope_put_data_dir()
220 if (value == ope->data_dir) in tegra210_ope_put_data_dir()
223 ope->data_dir = value; in tegra210_ope_put_data_dir()
243 static bool tegra210_ope_wr_reg(struct device *dev, unsigned int reg) in tegra210_ope_wr_reg()
256 static bool tegra210_ope_rd_reg(struct device *dev, unsigned int reg) in tegra210_ope_rd_reg()
274 static bool tegra210_ope_volatile_reg(struct device *dev, unsigned int reg) in tegra210_ope_volatile_reg()
305 struct device *dev = &pdev->dev; in tegra210_ope_probe()
312 return -ENOMEM; in tegra210_ope_probe()
318 ope->regmap = devm_regmap_init_mmio(dev, regs, in tegra210_ope_probe()
320 if (IS_ERR(ope->regmap)) { in tegra210_ope_probe()
322 return PTR_ERR(ope->regmap); in tegra210_ope_probe()
325 regcache_cache_only(ope->regmap, true); in tegra210_ope_probe()
356 pm_runtime_disable(&pdev->dev); in tegra210_ope_remove()
359 static int tegra210_ope_runtime_suspend(struct device *dev) in tegra210_ope_runtime_suspend()
363 tegra210_peq_save(ope->peq_regmap, ope->peq_biquad_gains, in tegra210_ope_runtime_suspend()
364 ope->peq_biquad_shifts); in tegra210_ope_runtime_suspend()
366 regcache_cache_only(ope->mbdrc_regmap, true); in tegra210_ope_runtime_suspend()
367 regcache_cache_only(ope->peq_regmap, true); in tegra210_ope_runtime_suspend()
368 regcache_cache_only(ope->regmap, true); in tegra210_ope_runtime_suspend()
370 regcache_mark_dirty(ope->regmap); in tegra210_ope_runtime_suspend()
371 regcache_mark_dirty(ope->peq_regmap); in tegra210_ope_runtime_suspend()
372 regcache_mark_dirty(ope->mbdrc_regmap); in tegra210_ope_runtime_suspend()
377 static int tegra210_ope_runtime_resume(struct device *dev) in tegra210_ope_runtime_resume()
381 regcache_cache_only(ope->regmap, false); in tegra210_ope_runtime_resume()
382 regcache_cache_only(ope->peq_regmap, false); in tegra210_ope_runtime_resume()
383 regcache_cache_only(ope->mbdrc_regmap, false); in tegra210_ope_runtime_resume()
385 regcache_sync(ope->regmap); in tegra210_ope_runtime_resume()
386 regcache_sync(ope->peq_regmap); in tegra210_ope_runtime_resume()
387 regcache_sync(ope->mbdrc_regmap); in tegra210_ope_runtime_resume()
389 tegra210_peq_restore(ope->peq_regmap, ope->peq_biquad_gains, in tegra210_ope_runtime_resume()
390 ope->peq_biquad_shifts); in tegra210_ope_runtime_resume()
402 { .compatible = "nvidia,tegra210-ope" },
409 .name = "tegra210-ope",