Lines Matching full:amx

5 // tegra210_amx.c - Tegra210 AMX driver
25 * received within these clock cycles, the AMX input channel gets
61 static void tegra210_amx_write_map_ram(struct tegra210_amx *amx) in tegra210_amx_write_map_ram() argument
65 regmap_write(amx->regmap, TEGRA210_AMX_CFG_RAM_CTRL + amx->soc_data->reg_offset, in tegra210_amx_write_map_ram()
70 for (i = 0; i < amx->soc_data->ram_depth; i++) in tegra210_amx_write_map_ram()
71 regmap_write(amx->regmap, TEGRA210_AMX_CFG_RAM_DATA + amx->soc_data->reg_offset, in tegra210_amx_write_map_ram()
72 amx->map[i]); in tegra210_amx_write_map_ram()
74 for (i = 0; i < amx->soc_data->byte_mask_size; i++) in tegra210_amx_write_map_ram()
75 regmap_write(amx->regmap, in tegra210_amx_write_map_ram()
77 amx->byte_mask[i]); in tegra210_amx_write_map_ram()
83 struct tegra210_amx *amx = snd_soc_dai_get_drvdata(dai); in tegra210_amx_startup() local
87 /* Ensure if AMX is disabled */ in tegra210_amx_startup()
88 err = regmap_read_poll_timeout(amx->regmap, TEGRA210_AMX_STATUS, val, in tegra210_amx_startup()
91 dev_err(dai->dev, "failed to stop AMX, err = %d\n", err); in tegra210_amx_startup()
101 regmap_update_bits(amx->regmap, TEGRA210_AMX_SOFT_RESET, in tegra210_amx_startup()
105 err = regmap_read_poll_timeout(amx->regmap, TEGRA210_AMX_SOFT_RESET, in tegra210_amx_startup()
108 dev_err(dai->dev, "failed to reset AMX, err = %d\n", err); in tegra210_amx_startup()
117 struct tegra210_amx *amx = dev_get_drvdata(dev); in tegra210_amx_runtime_suspend() local
119 regcache_cache_only(amx->regmap, true); in tegra210_amx_runtime_suspend()
120 regcache_mark_dirty(amx->regmap); in tegra210_amx_runtime_suspend()
127 struct tegra210_amx *amx = dev_get_drvdata(dev); in tegra210_amx_runtime_resume() local
129 regcache_cache_only(amx->regmap, false); in tegra210_amx_runtime_resume()
130 regcache_sync(amx->regmap); in tegra210_amx_runtime_resume()
132 regmap_update_bits(amx->regmap, in tegra210_amx_runtime_resume()
137 tegra210_amx_write_map_ram(amx); in tegra210_amx_runtime_resume()
146 struct tegra210_amx *amx = snd_soc_dai_get_drvdata(dai); in tegra210_amx_set_audio_cif() local
174 if (amx->soc_data->max_ch == TEGRA264_AMX_MAX_CHANNEL) in tegra210_amx_set_audio_cif()
175 tegra264_set_cif(amx->regmap, reg, &cif_conf); in tegra210_amx_set_audio_cif()
177 tegra_set_cif(amx->regmap, reg, &cif_conf); in tegra210_amx_set_audio_cif()
186 struct tegra210_amx *amx = snd_soc_dai_get_drvdata(dai); in tegra210_amx_in_hw_params() local
188 if (amx->soc_data->auto_disable) { in tegra210_amx_in_hw_params()
189 regmap_write(amx->regmap, in tegra210_amx_in_hw_params()
191 amx->soc_data->reg_offset), in tegra210_amx_in_hw_params()
193 regmap_write(amx->regmap, TEGRA210_AMX_CYA + amx->soc_data->reg_offset, 1); in tegra210_amx_in_hw_params()
214 struct tegra210_amx *amx = snd_soc_component_get_drvdata(cmpnt); in tegra210_amx_get_byte_map() local
215 unsigned char *bytes_map = (unsigned char *)amx->map; in tegra210_amx_get_byte_map()
219 enabled = amx->byte_mask[reg / 32] & (1 << (reg % 32)); in tegra210_amx_get_byte_map()
245 struct tegra210_amx *amx = snd_soc_component_get_drvdata(cmpnt); in tegra210_amx_put_byte_map() local
246 unsigned char *bytes_map = (unsigned char *)amx->map; in tegra210_amx_put_byte_map()
249 unsigned int mask_val = amx->byte_mask[reg / 32]; in tegra210_amx_put_byte_map()
256 if (mask_val == amx->byte_mask[reg / 32]) in tegra210_amx_put_byte_map()
261 amx->byte_mask[reg / 32] = mask_val; in tegra210_amx_put_byte_map()
277 .name = "AMX-RX-CIF" #id, \
303 .name = "AMX-TX-CIF", \
505 struct tegra210_amx *amx = snd_soc_component_get_drvdata(component); in tegra210_amx_component_probe() local
508 if (amx->soc_data->num_controls) { in tegra210_amx_component_probe()
509 err = snd_soc_add_component_controls(component, amx->soc_data->controls, in tegra210_amx_component_probe()
510 amx->soc_data->num_controls); in tegra210_amx_component_probe()
512 dev_err(component->dev, "can't add AMX controls, err: %d\n", err); in tegra210_amx_component_probe()
715 { .compatible = "nvidia,tegra210-amx", .data = &soc_data_tegra210 },
716 { .compatible = "nvidia,tegra194-amx", .data = &soc_data_tegra194 },
717 { .compatible = "nvidia,tegra264-amx", .data = &soc_data_tegra264 },
725 struct tegra210_amx *amx; in tegra210_amx_platform_probe() local
729 amx = devm_kzalloc(dev, sizeof(*amx), GFP_KERNEL); in tegra210_amx_platform_probe()
730 if (!amx) in tegra210_amx_platform_probe()
733 amx->soc_data = device_get_match_data(dev); in tegra210_amx_platform_probe()
735 dev_set_drvdata(dev, amx); in tegra210_amx_platform_probe()
741 amx->regmap = devm_regmap_init_mmio(dev, regs, in tegra210_amx_platform_probe()
742 amx->soc_data->regmap_conf); in tegra210_amx_platform_probe()
743 if (IS_ERR(amx->regmap)) { in tegra210_amx_platform_probe()
745 return PTR_ERR(amx->regmap); in tegra210_amx_platform_probe()
748 regcache_cache_only(amx->regmap, true); in tegra210_amx_platform_probe()
750 amx->map = devm_kzalloc(dev, amx->soc_data->ram_depth * sizeof(*amx->map), in tegra210_amx_platform_probe()
752 if (!amx->map) in tegra210_amx_platform_probe()
755 amx->byte_mask = devm_kzalloc(dev, in tegra210_amx_platform_probe()
756 amx->soc_data->byte_mask_size * sizeof(*amx->byte_mask), in tegra210_amx_platform_probe()
758 if (!amx->byte_mask) in tegra210_amx_platform_probe()
762 amx->soc_data->max_ch; in tegra210_amx_platform_probe()
768 dev_err(dev, "can't register AMX component, err: %d\n", err); in tegra210_amx_platform_probe()
790 .name = "tegra210-amx",
800 MODULE_DESCRIPTION("Tegra210 AMX ASoC driver");