Lines Matching full:adx
5 // tegra210_adx.c - Tegra210 ADX driver
48 static void tegra210_adx_write_map_ram(struct tegra210_adx *adx) in tegra210_adx_write_map_ram() argument
52 regmap_write(adx->regmap, TEGRA210_ADX_CFG_RAM_CTRL + in tegra210_adx_write_map_ram()
53 adx->soc_data->cya_offset, in tegra210_adx_write_map_ram()
58 for (i = 0; i < adx->soc_data->ram_depth; i++) in tegra210_adx_write_map_ram()
59 regmap_write(adx->regmap, TEGRA210_ADX_CFG_RAM_DATA + in tegra210_adx_write_map_ram()
60 adx->soc_data->cya_offset, in tegra210_adx_write_map_ram()
61 adx->map[i]); in tegra210_adx_write_map_ram()
63 for (i = 0; i < adx->soc_data->byte_mask_size; i++) in tegra210_adx_write_map_ram()
64 regmap_write(adx->regmap, in tegra210_adx_write_map_ram()
66 adx->byte_mask[i]); in tegra210_adx_write_map_ram()
72 struct tegra210_adx *adx = snd_soc_dai_get_drvdata(dai); in tegra210_adx_startup() local
76 /* Ensure if ADX status is disabled */ in tegra210_adx_startup()
77 err = regmap_read_poll_timeout(adx->regmap, TEGRA210_ADX_STATUS, in tegra210_adx_startup()
80 dev_err(dai->dev, "failed to stop ADX, err = %d\n", err); in tegra210_adx_startup()
90 regmap_update_bits(adx->regmap, TEGRA210_ADX_SOFT_RESET, in tegra210_adx_startup()
94 err = regmap_read_poll_timeout(adx->regmap, TEGRA210_ADX_SOFT_RESET, in tegra210_adx_startup()
97 dev_err(dai->dev, "failed to reset ADX, err = %d\n", err); in tegra210_adx_startup()
106 struct tegra210_adx *adx = dev_get_drvdata(dev); in tegra210_adx_runtime_suspend() local
108 regcache_cache_only(adx->regmap, true); in tegra210_adx_runtime_suspend()
109 regcache_mark_dirty(adx->regmap); in tegra210_adx_runtime_suspend()
116 struct tegra210_adx *adx = dev_get_drvdata(dev); in tegra210_adx_runtime_resume() local
118 regcache_cache_only(adx->regmap, false); in tegra210_adx_runtime_resume()
119 regcache_sync(adx->regmap); in tegra210_adx_runtime_resume()
121 tegra210_adx_write_map_ram(adx); in tegra210_adx_runtime_resume()
131 struct tegra210_adx *adx = snd_soc_dai_get_drvdata(dai); in tegra210_adx_set_audio_cif() local
137 if (channels < 1 || channels > adx->soc_data->max_ch) in tegra210_adx_set_audio_cif()
160 if (adx->soc_data->max_ch == 32) in tegra210_adx_set_audio_cif()
161 tegra264_set_cif(adx->regmap, reg, &cif_conf); in tegra210_adx_set_audio_cif()
163 tegra_set_cif(adx->regmap, reg, &cif_conf); in tegra210_adx_set_audio_cif()
190 struct tegra210_adx *adx = snd_soc_component_get_drvdata(cmpnt); in tegra210_adx_get_byte_map() local
192 unsigned char *bytes_map = (unsigned char *)adx->map; in tegra210_adx_get_byte_map()
196 enabled = adx->byte_mask[mc->reg / 32] & (1 << (mc->reg % 32)); in tegra210_adx_get_byte_map()
220 struct tegra210_adx *adx = snd_soc_component_get_drvdata(cmpnt); in tegra210_adx_put_byte_map() local
221 unsigned char *bytes_map = (unsigned char *)adx->map; in tegra210_adx_put_byte_map()
225 unsigned int mask_val = adx->byte_mask[mc->reg / 32]; in tegra210_adx_put_byte_map()
232 if (mask_val == adx->byte_mask[mc->reg / 32]) in tegra210_adx_put_byte_map()
237 adx->byte_mask[mc->reg / 32] = mask_val; in tegra210_adx_put_byte_map()
253 .name = "ADX-RX-CIF", \
279 .name = "ADX-TX" #id "-CIF", \
494 struct tegra210_adx *adx = snd_soc_component_get_drvdata(component); in tegra210_adx_component_probe() local
497 if (adx->soc_data->num_controls) { in tegra210_adx_component_probe()
498 err = snd_soc_add_component_controls(component, adx->soc_data->controls, in tegra210_adx_component_probe()
499 adx->soc_data->num_controls); in tegra210_adx_component_probe()
501 dev_err(component->dev, "can't add ADX controls, err: %d\n", err); in tegra210_adx_component_probe()
663 { .compatible = "nvidia,tegra210-adx", .data = &soc_data_tegra210 },
664 { .compatible = "nvidia,tegra264-adx", .data = &soc_data_tegra264 },
672 struct tegra210_adx *adx; in tegra210_adx_platform_probe() local
678 adx = devm_kzalloc(dev, sizeof(*adx), GFP_KERNEL); in tegra210_adx_platform_probe()
679 if (!adx) in tegra210_adx_platform_probe()
684 adx->soc_data = soc_data; in tegra210_adx_platform_probe()
686 dev_set_drvdata(dev, adx); in tegra210_adx_platform_probe()
692 adx->regmap = devm_regmap_init_mmio(dev, regs, in tegra210_adx_platform_probe()
694 if (IS_ERR(adx->regmap)) { in tegra210_adx_platform_probe()
696 return PTR_ERR(adx->regmap); in tegra210_adx_platform_probe()
699 regcache_cache_only(adx->regmap, true); in tegra210_adx_platform_probe()
701 adx->map = devm_kzalloc(dev, soc_data->ram_depth * sizeof(*adx->map), in tegra210_adx_platform_probe()
703 if (!adx->map) in tegra210_adx_platform_probe()
706 adx->byte_mask = devm_kzalloc(dev, in tegra210_adx_platform_probe()
707 soc_data->byte_mask_size * sizeof(*adx->byte_mask), in tegra210_adx_platform_probe()
709 if (!adx->byte_mask) in tegra210_adx_platform_probe()
713 adx->soc_data->max_ch; in tegra210_adx_platform_probe()
719 dev_err(dev, "can't register ADX component, err: %d\n", err); in tegra210_adx_platform_probe()
741 .name = "tegra210-adx",
751 MODULE_DESCRIPTION("Tegra210 ADX ASoC driver");