Lines Matching full:ope

5 // tegra210_ope.c - Tegra210 OPE driver
33 static int tegra210_ope_set_audio_cif(struct tegra210_ope *ope, in tegra210_ope_set_audio_cif() argument
63 tegra_set_cif(ope->regmap, reg, &cif_conf); in tegra210_ope_set_audio_cif()
73 struct tegra210_ope *ope = snd_soc_dai_get_drvdata(dai); in tegra210_ope_hw_params() local
77 err = tegra210_ope_set_audio_cif(ope, params, in tegra210_ope_hw_params()
80 dev_err(dev, "Can't set OPE RX CIF: %d\n", err); in tegra210_ope_hw_params()
84 err = tegra210_ope_set_audio_cif(ope, params, in tegra210_ope_hw_params()
87 dev_err(dev, "Can't set OPE TX CIF: %d\n", err); in tegra210_ope_hw_params()
98 struct tegra210_ope *ope = dev_get_drvdata(cmpnt->dev); in tegra210_ope_component_probe() local
104 * The OPE, PEQ and MBDRC functionalities are combined under one in tegra210_ope_component_probe()
105 * device registered by OPE driver. In fact OPE HW block includes in tegra210_ope_component_probe()
110 * the DAPM routes depend on OPE regmap only, below explicit in tegra210_ope_component_probe()
114 snd_soc_component_init_regmap(cmpnt, ope->regmap); in tegra210_ope_component_probe()
125 .name = "OPE-RX-CIF",
148 .name = "OPE-TX-CIF",
206 struct tegra210_ope *ope = snd_soc_component_get_drvdata(cmpnt); in tegra210_ope_get_data_dir() local
208 ucontrol->value.enumerated.item[0] = ope->data_dir; in tegra210_ope_get_data_dir()
217 struct tegra210_ope *ope = snd_soc_component_get_drvdata(cmpnt); in tegra210_ope_put_data_dir() local
220 if (value == ope->data_dir) in tegra210_ope_put_data_dir()
223 ope->data_dir = value; in tegra210_ope_put_data_dir()
306 struct tegra210_ope *ope; in tegra210_ope_probe() local
310 ope = devm_kzalloc(dev, sizeof(*ope), GFP_KERNEL); in tegra210_ope_probe()
311 if (!ope) 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()
327 dev_set_drvdata(dev, ope); in tegra210_ope_probe()
345 dev_err(dev, "can't register OPE component, err: %d\n", err); in tegra210_ope_probe()
361 struct tegra210_ope *ope = dev_get_drvdata(dev); in tegra210_ope_runtime_suspend() local
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()
379 struct tegra210_ope *ope = dev_get_drvdata(dev); in tegra210_ope_runtime_resume() local
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()
403 { .compatible = "nvidia,tegra210-ope" },
410 .name = "tegra210-ope",
420 MODULE_DESCRIPTION("Tegra210 OPE ASoC driver");