Lines Matching refs:codec
89 static int format_register_str(struct snd_soc_codec *codec, in format_register_str() argument
92 int wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; in format_register_str()
93 int regsize = codec->driver->reg_word_size * 2; in format_register_str()
106 ret = snd_soc_read(codec, reg); in format_register_str()
123 static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf, in soc_codec_reg_show() argument
132 wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; in soc_codec_reg_show()
133 regsize = codec->driver->reg_word_size * 2; in soc_codec_reg_show()
137 if (!codec->driver->reg_cache_size) in soc_codec_reg_show()
140 if (codec->driver->reg_cache_step) in soc_codec_reg_show()
141 step = codec->driver->reg_cache_step; in soc_codec_reg_show()
143 for (i = 0; i < codec->driver->reg_cache_size; i += step) { in soc_codec_reg_show()
149 format_register_str(codec, i, buf + total, len); in soc_codec_reg_show()
165 return soc_codec_reg_show(rtd->codec, buf, PAGE_SIZE, 0); in codec_reg_show()
208 return rtd->codec ? attr->mode : 0; /* enabled only with codec */ in soc_dev_attr_is_visible()
232 struct snd_soc_codec *codec = file->private_data; in codec_reg_read_file() local
242 ret = soc_codec_reg_show(codec, buf, count, *ppos); in codec_reg_read_file()
262 struct snd_soc_codec *codec = file->private_data; in codec_reg_write_file() local
282 snd_soc_write(codec, reg, value); in codec_reg_write_file()
333 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in soc_init_codec_debugfs() local
335 codec->debugfs_reg = debugfs_create_file("codec_reg", 0644, in soc_init_codec_debugfs()
336 codec->component.debugfs_root, in soc_init_codec_debugfs()
337 codec, &codec_reg_fops); in soc_init_codec_debugfs()
338 if (!codec->debugfs_reg) in soc_init_codec_debugfs()
339 dev_warn(codec->dev, in soc_init_codec_debugfs()
348 struct snd_soc_codec *codec; in codec_list_read_file() local
355 list_for_each_entry(codec, &codec_list, list) { in codec_list_read_file()
357 codec->component.name); in codec_list_read_file()
588 struct snd_soc_codec *codec; in snd_soc_suspend() local
664 list_for_each_entry(codec, &card->codec_dev_list, card_list) { in snd_soc_suspend()
667 if (!codec->suspended) { in snd_soc_suspend()
668 switch (codec->dapm.bias_level) { in snd_soc_suspend()
676 if (codec->dapm.idle_bias_off) { in snd_soc_suspend()
677 dev_dbg(codec->dev, in snd_soc_suspend()
683 if (codec->driver->suspend) in snd_soc_suspend()
684 codec->driver->suspend(codec); in snd_soc_suspend()
685 codec->suspended = 1; in snd_soc_suspend()
686 if (codec->component.regmap) in snd_soc_suspend()
687 regcache_mark_dirty(codec->component.regmap); in snd_soc_suspend()
689 pinctrl_pm_select_sleep_state(codec->dev); in snd_soc_suspend()
692 dev_dbg(codec->dev, in snd_soc_suspend()
726 struct snd_soc_codec *codec; in soc_resume_deferred() local
752 list_for_each_entry(codec, &card->codec_dev_list, card_list) { in soc_resume_deferred()
757 if (codec->suspended) { in soc_resume_deferred()
758 switch (codec->dapm.bias_level) { in soc_resume_deferred()
761 if (codec->driver->resume) in soc_resume_deferred()
762 codec->driver->resume(codec); in soc_resume_deferred()
763 codec->suspended = 0; in soc_resume_deferred()
766 dev_dbg(codec->dev, in soc_resume_deferred()
964 rtd->codec = rtd->codec_dai->codec; in soc_bind_dai_link()
1001 if (component->codec) in soc_remove_component()
1002 list_del(&component->codec->card_list); in soc_remove_component()
1178 if (component->codec) in soc_probe_component()
1179 list_add(&component->codec->card_list, &card->codec_dev_list); in soc_probe_component()
1429 rtd->codec = rtd->component->codec; in soc_bind_aux_dev()
1472 static int snd_soc_init_codec_cache(struct snd_soc_codec *codec) in snd_soc_init_codec_cache() argument
1476 if (codec->cache_init) in snd_soc_init_codec_cache()
1479 ret = snd_soc_cache_init(codec); in snd_soc_init_codec_cache()
1481 dev_err(codec->dev, in snd_soc_init_codec_cache()
1486 codec->cache_init = 1; in snd_soc_init_codec_cache()
1523 if (cpu_dai->codec) { in snd_soc_runtime_set_dai_fmt()
1558 struct snd_soc_codec *codec; in snd_soc_instantiate_card() local
1579 list_for_each_entry(codec, &codec_list, list) { in snd_soc_instantiate_card()
1580 if (codec->cache_init) in snd_soc_instantiate_card()
1582 ret = snd_soc_init_codec_cache(codec); in snd_soc_instantiate_card()
1969 int snd_soc_add_codec_controls(struct snd_soc_codec *codec, in snd_soc_add_codec_controls() argument
1972 return snd_soc_add_component_controls(&codec->component, controls, in snd_soc_add_codec_controls()
2049 else if (dai->codec && dai->codec->driver->set_sysclk) in snd_soc_dai_set_sysclk()
2050 return dai->codec->driver->set_sysclk(dai->codec, clk_id, 0, in snd_soc_dai_set_sysclk()
2067 int snd_soc_codec_set_sysclk(struct snd_soc_codec *codec, int clk_id, in snd_soc_codec_set_sysclk() argument
2070 if (codec->driver->set_sysclk) in snd_soc_codec_set_sysclk()
2071 return codec->driver->set_sysclk(codec, clk_id, source, in snd_soc_codec_set_sysclk()
2114 else if (dai->codec && dai->codec->driver->set_pll) in snd_soc_dai_set_pll()
2115 return dai->codec->driver->set_pll(dai->codec, pll_id, source, in snd_soc_dai_set_pll()
2132 int snd_soc_codec_set_pll(struct snd_soc_codec *codec, int pll_id, int source, in snd_soc_codec_set_pll() argument
2135 if (codec->driver->set_pll) in snd_soc_codec_set_pll()
2136 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()
3051 struct snd_soc_codec *codec; in snd_soc_register_codec() local
3057 codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); in snd_soc_register_codec()
3058 if (codec == NULL) in snd_soc_register_codec()
3061 codec->component.dapm_ptr = &codec->dapm; in snd_soc_register_codec()
3062 codec->component.codec = codec; in snd_soc_register_codec()
3064 ret = snd_soc_component_initialize(&codec->component, in snd_soc_register_codec()
3070 codec->component.controls = codec_drv->controls; in snd_soc_register_codec()
3071 codec->component.num_controls = codec_drv->num_controls; in snd_soc_register_codec()
3074 codec->component.dapm_widgets = codec_drv->dapm_widgets; in snd_soc_register_codec()
3075 codec->component.num_dapm_widgets = codec_drv->num_dapm_widgets; in snd_soc_register_codec()
3078 codec->component.dapm_routes = codec_drv->dapm_routes; in snd_soc_register_codec()
3079 codec->component.num_dapm_routes = codec_drv->num_dapm_routes; in snd_soc_register_codec()
3083 codec->component.probe = snd_soc_codec_drv_probe; in snd_soc_register_codec()
3085 codec->component.remove = snd_soc_codec_drv_remove; in snd_soc_register_codec()
3087 codec->component.write = snd_soc_codec_drv_write; in snd_soc_register_codec()
3089 codec->component.read = snd_soc_codec_drv_read; in snd_soc_register_codec()
3090 codec->component.ignore_pmdown_time = codec_drv->ignore_pmdown_time; in snd_soc_register_codec()
3091 codec->dapm.idle_bias_off = codec_drv->idle_bias_off; in snd_soc_register_codec()
3092 codec->dapm.suspend_bias_off = codec_drv->suspend_bias_off; in snd_soc_register_codec()
3094 codec->dapm.seq_notifier = codec_drv->seq_notifier; in snd_soc_register_codec()
3096 codec->dapm.set_bias_level = snd_soc_codec_set_bias_level; in snd_soc_register_codec()
3097 codec->dev = dev; in snd_soc_register_codec()
3098 codec->driver = codec_drv; in snd_soc_register_codec()
3099 codec->component.val_bytes = codec_drv->reg_word_size; in snd_soc_register_codec()
3102 codec->component.init_debugfs = soc_init_codec_debugfs; in snd_soc_register_codec()
3103 codec->component.debugfs_prefix = "codec"; in snd_soc_register_codec()
3107 codec->component.regmap = codec_drv->get_regmap(dev); in snd_soc_register_codec()
3114 ret = snd_soc_register_dais(&codec->component, dai_drv, num_dai, false); in snd_soc_register_codec()
3120 list_for_each_entry(dai, &codec->component.dai_list, list) in snd_soc_register_codec()
3121 dai->codec = codec; in snd_soc_register_codec()
3124 snd_soc_component_add_unlocked(&codec->component); in snd_soc_register_codec()
3125 list_add(&codec->list, &codec_list); in snd_soc_register_codec()
3128 dev_dbg(codec->dev, "ASoC: Registered codec '%s'\n", in snd_soc_register_codec()
3129 codec->component.name); in snd_soc_register_codec()
3133 snd_soc_component_cleanup(&codec->component); in snd_soc_register_codec()
3135 kfree(codec); in snd_soc_register_codec()
3147 struct snd_soc_codec *codec; in snd_soc_unregister_codec() local
3150 list_for_each_entry(codec, &codec_list, list) { in snd_soc_unregister_codec()
3151 if (dev == codec->dev) in snd_soc_unregister_codec()
3158 list_del(&codec->list); in snd_soc_unregister_codec()
3159 snd_soc_component_del_unlocked(&codec->component); in snd_soc_unregister_codec()
3162 dev_dbg(codec->dev, "ASoC: Unregistered codec '%s'\n", in snd_soc_unregister_codec()
3163 codec->component.name); in snd_soc_unregister_codec()
3165 snd_soc_component_cleanup(&codec->component); in snd_soc_unregister_codec()
3166 snd_soc_cache_exit(codec); in snd_soc_unregister_codec()
3167 kfree(codec); in snd_soc_unregister_codec()