Lines Matching refs:codec
90 static int format_register_str(struct snd_soc_codec *codec, in format_register_str() argument
93 int wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; in format_register_str()
94 int regsize = codec->driver->reg_word_size * 2; in format_register_str()
104 ret = snd_soc_read(codec, reg); in format_register_str()
115 static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf, in soc_codec_reg_show() argument
124 wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; in soc_codec_reg_show()
125 regsize = codec->driver->reg_word_size * 2; in soc_codec_reg_show()
129 if (!codec->driver->reg_cache_size) in soc_codec_reg_show()
132 if (codec->driver->reg_cache_step) in soc_codec_reg_show()
133 step = codec->driver->reg_cache_step; in soc_codec_reg_show()
135 for (i = 0; i < codec->driver->reg_cache_size; i += step) { in soc_codec_reg_show()
141 format_register_str(codec, i, buf + total, len); in soc_codec_reg_show()
157 return soc_codec_reg_show(rtd->codec, buf, PAGE_SIZE, 0); in codec_reg_show()
200 return rtd->codec ? attr->mode : 0; /* enabled only with codec */ in soc_dev_attr_is_visible()
224 struct snd_soc_codec *codec = file->private_data; in codec_reg_read_file() local
234 ret = soc_codec_reg_show(codec, buf, count, *ppos); in codec_reg_read_file()
254 struct snd_soc_codec *codec = file->private_data; in codec_reg_write_file() local
274 snd_soc_write(codec, reg, value); in codec_reg_write_file()
325 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in soc_init_codec_debugfs() local
327 codec->debugfs_reg = debugfs_create_file("codec_reg", 0644, in soc_init_codec_debugfs()
328 codec->component.debugfs_root, in soc_init_codec_debugfs()
329 codec, &codec_reg_fops); in soc_init_codec_debugfs()
330 if (!codec->debugfs_reg) in soc_init_codec_debugfs()
331 dev_warn(codec->dev, in soc_init_codec_debugfs()
340 struct snd_soc_codec *codec; in codec_list_read_file() local
347 list_for_each_entry(codec, &codec_list, list) { in codec_list_read_file()
349 codec->component.name); in codec_list_read_file()
580 struct snd_soc_codec *codec; in snd_soc_suspend() local
656 list_for_each_entry(codec, &card->codec_dev_list, card_list) { in snd_soc_suspend()
657 struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); in snd_soc_suspend()
661 if (!codec->suspended) { in snd_soc_suspend()
671 dev_dbg(codec->dev, in snd_soc_suspend()
677 if (codec->driver->suspend) in snd_soc_suspend()
678 codec->driver->suspend(codec); in snd_soc_suspend()
679 codec->suspended = 1; in snd_soc_suspend()
680 if (codec->component.regmap) in snd_soc_suspend()
681 regcache_mark_dirty(codec->component.regmap); in snd_soc_suspend()
683 pinctrl_pm_select_sleep_state(codec->dev); in snd_soc_suspend()
686 dev_dbg(codec->dev, in snd_soc_suspend()
720 struct snd_soc_codec *codec; in soc_resume_deferred() local
746 list_for_each_entry(codec, &card->codec_dev_list, card_list) { in soc_resume_deferred()
747 if (codec->suspended) { in soc_resume_deferred()
748 if (codec->driver->resume) in soc_resume_deferred()
749 codec->driver->resume(codec); in soc_resume_deferred()
750 codec->suspended = 0; in soc_resume_deferred()
950 rtd->codec = rtd->codec_dai->codec; in soc_bind_dai_link()
987 if (component->codec) in soc_remove_component()
988 list_del(&component->codec->card_list); in soc_remove_component()
1173 if (component->codec) in soc_probe_component()
1174 list_add(&component->codec->card_list, &card->codec_dev_list); in soc_probe_component()
1425 rtd->codec = rtd->component->codec; in soc_bind_aux_dev()
1468 static int snd_soc_init_codec_cache(struct snd_soc_codec *codec) in snd_soc_init_codec_cache() argument
1472 if (codec->cache_init) in snd_soc_init_codec_cache()
1475 ret = snd_soc_cache_init(codec); in snd_soc_init_codec_cache()
1477 dev_err(codec->dev, in snd_soc_init_codec_cache()
1482 codec->cache_init = 1; in snd_soc_init_codec_cache()
1519 if (cpu_dai->codec) { in snd_soc_runtime_set_dai_fmt()
1554 struct snd_soc_codec *codec; in snd_soc_instantiate_card() local
1575 list_for_each_entry(codec, &codec_list, list) { in snd_soc_instantiate_card()
1576 if (codec->cache_init) in snd_soc_instantiate_card()
1578 ret = snd_soc_init_codec_cache(codec); in snd_soc_instantiate_card()
1966 int snd_soc_add_codec_controls(struct snd_soc_codec *codec, in snd_soc_add_codec_controls() argument
1969 return snd_soc_add_component_controls(&codec->component, controls, in snd_soc_add_codec_controls()
2046 else if (dai->codec && dai->codec->driver->set_sysclk) in snd_soc_dai_set_sysclk()
2047 return dai->codec->driver->set_sysclk(dai->codec, clk_id, 0, in snd_soc_dai_set_sysclk()
2064 int snd_soc_codec_set_sysclk(struct snd_soc_codec *codec, int clk_id, in snd_soc_codec_set_sysclk() argument
2067 if (codec->driver->set_sysclk) in snd_soc_codec_set_sysclk()
2068 return codec->driver->set_sysclk(codec, clk_id, source, in snd_soc_codec_set_sysclk()
2111 else if (dai->codec && dai->codec->driver->set_pll) in snd_soc_dai_set_pll()
2112 return dai->codec->driver->set_pll(dai->codec, pll_id, source, in snd_soc_dai_set_pll()
2129 int snd_soc_codec_set_pll(struct snd_soc_codec *codec, int pll_id, int source, in snd_soc_codec_set_pll() argument
2132 if (codec->driver->set_pll) in snd_soc_codec_set_pll()
2133 return codec->driver->set_pll(codec, pll_id, source, in snd_soc_codec_set_pll()
3003 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_probe() local
3005 return codec->driver->probe(codec); in snd_soc_codec_drv_probe()
3010 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_remove() local
3012 codec->driver->remove(codec); in snd_soc_codec_drv_remove()
3018 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_write() local
3020 return codec->driver->write(codec, reg, val); in snd_soc_codec_drv_write()
3026 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_read() local
3028 *val = codec->driver->read(codec, reg); in snd_soc_codec_drv_read()
3036 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm); in snd_soc_codec_set_bias_level() local
3038 return codec->driver->set_bias_level(codec, level); in snd_soc_codec_set_bias_level()
3055 struct snd_soc_codec *codec; in snd_soc_register_codec() local
3061 codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); in snd_soc_register_codec()
3062 if (codec == NULL) in snd_soc_register_codec()
3065 codec->component.codec = codec; in snd_soc_register_codec()
3067 ret = snd_soc_component_initialize(&codec->component, in snd_soc_register_codec()
3073 codec->component.controls = codec_drv->controls; in snd_soc_register_codec()
3074 codec->component.num_controls = codec_drv->num_controls; in snd_soc_register_codec()
3077 codec->component.dapm_widgets = codec_drv->dapm_widgets; in snd_soc_register_codec()
3078 codec->component.num_dapm_widgets = codec_drv->num_dapm_widgets; in snd_soc_register_codec()
3081 codec->component.dapm_routes = codec_drv->dapm_routes; in snd_soc_register_codec()
3082 codec->component.num_dapm_routes = codec_drv->num_dapm_routes; in snd_soc_register_codec()
3086 codec->component.probe = snd_soc_codec_drv_probe; in snd_soc_register_codec()
3088 codec->component.remove = snd_soc_codec_drv_remove; in snd_soc_register_codec()
3090 codec->component.write = snd_soc_codec_drv_write; in snd_soc_register_codec()
3092 codec->component.read = snd_soc_codec_drv_read; in snd_soc_register_codec()
3093 codec->component.ignore_pmdown_time = codec_drv->ignore_pmdown_time; in snd_soc_register_codec()
3095 dapm = snd_soc_codec_get_dapm(codec); in snd_soc_register_codec()
3102 codec->dev = dev; in snd_soc_register_codec()
3103 codec->driver = codec_drv; in snd_soc_register_codec()
3104 codec->component.val_bytes = codec_drv->reg_word_size; in snd_soc_register_codec()
3107 codec->component.init_debugfs = soc_init_codec_debugfs; in snd_soc_register_codec()
3108 codec->component.debugfs_prefix = "codec"; in snd_soc_register_codec()
3112 codec->component.regmap = codec_drv->get_regmap(dev); in snd_soc_register_codec()
3119 ret = snd_soc_register_dais(&codec->component, dai_drv, num_dai, false); in snd_soc_register_codec()
3125 list_for_each_entry(dai, &codec->component.dai_list, list) in snd_soc_register_codec()
3126 dai->codec = codec; in snd_soc_register_codec()
3129 snd_soc_component_add_unlocked(&codec->component); in snd_soc_register_codec()
3130 list_add(&codec->list, &codec_list); in snd_soc_register_codec()
3133 dev_dbg(codec->dev, "ASoC: Registered codec '%s'\n", in snd_soc_register_codec()
3134 codec->component.name); in snd_soc_register_codec()
3138 snd_soc_component_cleanup(&codec->component); in snd_soc_register_codec()
3140 kfree(codec); in snd_soc_register_codec()
3152 struct snd_soc_codec *codec; in snd_soc_unregister_codec() local
3155 list_for_each_entry(codec, &codec_list, list) { in snd_soc_unregister_codec()
3156 if (dev == codec->dev) in snd_soc_unregister_codec()
3163 list_del(&codec->list); in snd_soc_unregister_codec()
3164 snd_soc_component_del_unlocked(&codec->component); in snd_soc_unregister_codec()
3167 dev_dbg(codec->dev, "ASoC: Unregistered codec '%s'\n", in snd_soc_unregister_codec()
3168 codec->component.name); in snd_soc_unregister_codec()
3170 snd_soc_component_cleanup(&codec->component); in snd_soc_unregister_codec()
3171 snd_soc_cache_exit(codec); in snd_soc_unregister_codec()
3172 kfree(codec); in snd_soc_unregister_codec()