Lines Matching refs:component

285 static void soc_init_component_debugfs(struct snd_soc_component *component)  in soc_init_component_debugfs()  argument
287 if (!component->card->debugfs_card_root) in soc_init_component_debugfs()
290 if (component->debugfs_prefix) { in soc_init_component_debugfs()
294 component->debugfs_prefix, component->name); in soc_init_component_debugfs()
296 component->debugfs_root = debugfs_create_dir(name, in soc_init_component_debugfs()
297 component->card->debugfs_card_root); in soc_init_component_debugfs()
301 component->debugfs_root = debugfs_create_dir(component->name, in soc_init_component_debugfs()
302 component->card->debugfs_card_root); in soc_init_component_debugfs()
305 if (!component->debugfs_root) { in soc_init_component_debugfs()
306 dev_warn(component->dev, in soc_init_component_debugfs()
311 snd_soc_dapm_debugfs_init(snd_soc_component_get_dapm(component), in soc_init_component_debugfs()
312 component->debugfs_root); in soc_init_component_debugfs()
314 if (component->init_debugfs) in soc_init_component_debugfs()
315 component->init_debugfs(component); in soc_init_component_debugfs()
318 static void soc_cleanup_component_debugfs(struct snd_soc_component *component) in soc_cleanup_component_debugfs() argument
320 debugfs_remove_recursive(component->debugfs_root); in soc_cleanup_component_debugfs()
323 static void soc_init_codec_debugfs(struct snd_soc_component *component) in soc_init_codec_debugfs() argument
325 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in soc_init_codec_debugfs()
328 codec->component.debugfs_root, in soc_init_codec_debugfs()
349 codec->component.name); in codec_list_read_file()
378 struct snd_soc_component *component; in dai_list_read_file() local
386 list_for_each_entry(component, &component_list, list) { in dai_list_read_file()
387 list_for_each_entry(dai, &component->dai_list, list) { in dai_list_read_file()
428 platform->component.name); in platform_list_read_file()
510 struct snd_soc_component *component) in soc_init_component_debugfs() argument
515 struct snd_soc_component *component) in soc_cleanup_component_debugfs() argument
680 if (codec->component.regmap) in snd_soc_suspend()
681 regcache_mark_dirty(codec->component.regmap); in snd_soc_suspend()
867 struct snd_soc_component *component; in soc_find_component() local
871 list_for_each_entry(component, &component_list, list) { in soc_find_component()
873 if (component->dev->of_node == of_node) in soc_find_component()
874 return component; in soc_find_component()
875 } else if (strcmp(component->name, name) == 0) { in soc_find_component()
876 return component; in soc_find_component()
886 struct snd_soc_component *component; in snd_soc_find_dai() local
893 list_for_each_entry(component, &component_list, list) { in snd_soc_find_dai()
894 component_of_node = component->dev->of_node; in snd_soc_find_dai()
895 if (!component_of_node && component->dev->parent) in snd_soc_find_dai()
896 component_of_node = component->dev->parent->of_node; in snd_soc_find_dai()
900 if (dlc->name && strcmp(component->name, dlc->name)) in snd_soc_find_dai()
902 list_for_each_entry(dai, &component->dai_list, list) { in snd_soc_find_dai()
964 if (strcmp(platform->component.name, platform_name)) in soc_bind_dai_link()
981 static void soc_remove_component(struct snd_soc_component *component) in soc_remove_component() argument
983 if (!component->card) in soc_remove_component()
987 if (component->codec) in soc_remove_component()
988 list_del(&component->codec->card_list); in soc_remove_component()
990 if (component->remove) in soc_remove_component()
991 component->remove(component); in soc_remove_component()
993 snd_soc_dapm_free(snd_soc_component_get_dapm(component)); in soc_remove_component()
995 soc_cleanup_component_debugfs(component); in soc_remove_component()
996 component->card = NULL; in soc_remove_component()
997 module_put(component->dev->driver->owner); in soc_remove_component()
1041 struct snd_soc_component *component; in soc_remove_link_components() local
1045 if (platform && platform->component.driver->remove_order == order) in soc_remove_link_components()
1046 soc_remove_component(&platform->component); in soc_remove_link_components()
1050 component = rtd->codec_dais[i]->component; in soc_remove_link_components()
1051 if (component->driver->remove_order == order) in soc_remove_link_components()
1052 soc_remove_component(component); in soc_remove_link_components()
1057 if (cpu_dai->component->driver->remove_order == order) in soc_remove_link_components()
1058 soc_remove_component(cpu_dai->component); in soc_remove_link_components()
1082 struct snd_soc_component *component) in soc_set_name_prefix() argument
1091 if (map->of_node && component->dev->of_node != map->of_node) in soc_set_name_prefix()
1093 if (map->dev_name && strcmp(component->name, map->dev_name)) in soc_set_name_prefix()
1095 component->name_prefix = map->name_prefix; in soc_set_name_prefix()
1101 struct snd_soc_component *component) in soc_probe_component() argument
1103 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); in soc_probe_component()
1107 if (!strcmp(component->name, "snd-soc-dummy")) in soc_probe_component()
1110 if (component->card) { in soc_probe_component()
1111 if (component->card != card) { in soc_probe_component()
1112 dev_err(component->dev, in soc_probe_component()
1114 card->name, component->card->name); in soc_probe_component()
1120 if (!try_module_get(component->dev->driver->owner)) in soc_probe_component()
1123 component->card = card; in soc_probe_component()
1125 soc_set_name_prefix(card, component); in soc_probe_component()
1127 soc_init_component_debugfs(component); in soc_probe_component()
1129 if (component->dapm_widgets) { in soc_probe_component()
1130 ret = snd_soc_dapm_new_controls(dapm, component->dapm_widgets, in soc_probe_component()
1131 component->num_dapm_widgets); in soc_probe_component()
1134 dev_err(component->dev, in soc_probe_component()
1140 list_for_each_entry(dai, &component->dai_list, list) { in soc_probe_component()
1143 dev_err(component->dev, in soc_probe_component()
1149 if (component->probe) { in soc_probe_component()
1150 ret = component->probe(component); in soc_probe_component()
1152 dev_err(component->dev, in soc_probe_component()
1160 component->name); in soc_probe_component()
1163 if (component->controls) in soc_probe_component()
1164 snd_soc_add_component_controls(component, component->controls, in soc_probe_component()
1165 component->num_controls); in soc_probe_component()
1166 if (component->dapm_routes) in soc_probe_component()
1167 snd_soc_dapm_add_routes(dapm, component->dapm_routes, in soc_probe_component()
1168 component->num_dapm_routes); in soc_probe_component()
1173 if (component->codec) in soc_probe_component()
1174 list_add(&component->codec->card_list, &card->codec_dev_list); in soc_probe_component()
1179 soc_cleanup_component_debugfs(component); in soc_probe_component()
1180 component->card = NULL; in soc_probe_component()
1181 module_put(component->dev->driver->owner); in soc_probe_component()
1228 struct snd_soc_component *component; in soc_probe_link_components() local
1232 component = rtd->cpu_dai->component; in soc_probe_link_components()
1233 if (component->driver->probe_order == order) { in soc_probe_link_components()
1234 ret = soc_probe_component(card, component); in soc_probe_link_components()
1241 component = rtd->codec_dais[i]->component; in soc_probe_link_components()
1242 if (component->driver->probe_order == order) { in soc_probe_link_components()
1243 ret = soc_probe_component(card, component); in soc_probe_link_components()
1250 if (platform->component.driver->probe_order == order) { in soc_probe_link_components()
1251 ret = soc_probe_component(card, &platform->component); in soc_probe_link_components()
1411 rtd->component = soc_find_component(aux_dev->codec_of_node, name); in soc_bind_aux_dev()
1412 if (!rtd->component) { in soc_bind_aux_dev()
1425 rtd->codec = rtd->component->codec; in soc_bind_aux_dev()
1436 ret = soc_probe_component(card, rtd->component); in soc_probe_aux_dev()
1442 ret = aux_dev->init(rtd->component); in soc_probe_aux_dev()
1456 struct snd_soc_component *component = rtd->component; in soc_remove_aux_dev() local
1464 if (component) in soc_remove_aux_dev()
1465 soc_remove_component(component); in soc_remove_aux_dev()
1945 int snd_soc_add_component_controls(struct snd_soc_component *component, in snd_soc_add_component_controls() argument
1948 struct snd_card *card = component->card->snd_card; in snd_soc_add_component_controls()
1950 return snd_soc_add_controls(card, component->dev, controls, in snd_soc_add_component_controls()
1951 num_controls, component->name_prefix, component); in snd_soc_add_component_controls()
1969 return snd_soc_add_component_controls(&codec->component, controls, in snd_soc_add_codec_controls()
1987 return snd_soc_add_component_controls(&platform->component, controls, in snd_soc_add_platform_controls()
2025 struct snd_card *card = dai->component->card->snd_card; in snd_soc_add_dai_controls()
2548 static void snd_soc_unregister_dais(struct snd_soc_component *component) in snd_soc_unregister_dais() argument
2552 list_for_each_entry_safe(dai, _dai, &component->dai_list, list) { in snd_soc_unregister_dais()
2553 dev_dbg(component->dev, "ASoC: Unregistered DAI '%s'\n", in snd_soc_unregister_dais()
2570 static int snd_soc_register_dais(struct snd_soc_component *component, in snd_soc_register_dais() argument
2574 struct device *dev = component->dev; in snd_soc_register_dais()
2581 component->dai_drv = dai_drv; in snd_soc_register_dais()
2582 component->num_dai = count; in snd_soc_register_dais()
2616 dai->component = component; in snd_soc_register_dais()
2622 list_add(&dai->list, &component->dai_list); in snd_soc_register_dais()
2630 snd_soc_unregister_dais(component); in snd_soc_register_dais()
2638 struct snd_soc_component *component = dapm->component; in snd_soc_component_seq_notifier() local
2640 component->driver->seq_notifier(component, type, subseq); in snd_soc_component_seq_notifier()
2646 struct snd_soc_component *component = dapm->component; in snd_soc_component_stream_event() local
2648 return component->driver->stream_event(component, event); in snd_soc_component_stream_event()
2651 static int snd_soc_component_initialize(struct snd_soc_component *component, in snd_soc_component_initialize() argument
2656 component->name = fmt_single_name(dev, &component->id); in snd_soc_component_initialize()
2657 if (!component->name) { in snd_soc_component_initialize()
2662 component->dev = dev; in snd_soc_component_initialize()
2663 component->driver = driver; in snd_soc_component_initialize()
2664 component->probe = component->driver->probe; in snd_soc_component_initialize()
2665 component->remove = component->driver->remove; in snd_soc_component_initialize()
2667 dapm = &component->dapm; in snd_soc_component_initialize()
2669 dapm->component = component; in snd_soc_component_initialize()
2677 component->controls = driver->controls; in snd_soc_component_initialize()
2678 component->num_controls = driver->num_controls; in snd_soc_component_initialize()
2679 component->dapm_widgets = driver->dapm_widgets; in snd_soc_component_initialize()
2680 component->num_dapm_widgets = driver->num_dapm_widgets; in snd_soc_component_initialize()
2681 component->dapm_routes = driver->dapm_routes; in snd_soc_component_initialize()
2682 component->num_dapm_routes = driver->num_dapm_routes; in snd_soc_component_initialize()
2684 INIT_LIST_HEAD(&component->dai_list); in snd_soc_component_initialize()
2685 mutex_init(&component->io_mutex); in snd_soc_component_initialize()
2690 static void snd_soc_component_setup_regmap(struct snd_soc_component *component) in snd_soc_component_setup_regmap() argument
2692 int val_bytes = regmap_get_val_bytes(component->regmap); in snd_soc_component_setup_regmap()
2696 component->val_bytes = val_bytes; in snd_soc_component_setup_regmap()
2711 void snd_soc_component_init_regmap(struct snd_soc_component *component, in snd_soc_component_init_regmap() argument
2714 component->regmap = regmap; in snd_soc_component_init_regmap()
2715 snd_soc_component_setup_regmap(component); in snd_soc_component_init_regmap()
2729 void snd_soc_component_exit_regmap(struct snd_soc_component *component) in snd_soc_component_exit_regmap() argument
2731 regmap_exit(component->regmap); in snd_soc_component_exit_regmap()
2732 component->regmap = NULL; in snd_soc_component_exit_regmap()
2738 static void snd_soc_component_add_unlocked(struct snd_soc_component *component) in snd_soc_component_add_unlocked() argument
2740 if (!component->write && !component->read) { in snd_soc_component_add_unlocked()
2741 if (!component->regmap) in snd_soc_component_add_unlocked()
2742 component->regmap = dev_get_regmap(component->dev, NULL); in snd_soc_component_add_unlocked()
2743 if (component->regmap) in snd_soc_component_add_unlocked()
2744 snd_soc_component_setup_regmap(component); in snd_soc_component_add_unlocked()
2747 list_add(&component->list, &component_list); in snd_soc_component_add_unlocked()
2748 INIT_LIST_HEAD(&component->dobj_list); in snd_soc_component_add_unlocked()
2751 static void snd_soc_component_add(struct snd_soc_component *component) in snd_soc_component_add() argument
2754 snd_soc_component_add_unlocked(component); in snd_soc_component_add()
2758 static void snd_soc_component_cleanup(struct snd_soc_component *component) in snd_soc_component_cleanup() argument
2760 snd_soc_unregister_dais(component); in snd_soc_component_cleanup()
2761 kfree(component->name); in snd_soc_component_cleanup()
2764 static void snd_soc_component_del_unlocked(struct snd_soc_component *component) in snd_soc_component_del_unlocked() argument
2766 list_del(&component->list); in snd_soc_component_del_unlocked()
2834 static int snd_soc_platform_drv_probe(struct snd_soc_component *component) in snd_soc_platform_drv_probe() argument
2836 struct snd_soc_platform *platform = snd_soc_component_to_platform(component); in snd_soc_platform_drv_probe()
2841 static void snd_soc_platform_drv_remove(struct snd_soc_component *component) in snd_soc_platform_drv_remove() argument
2843 struct snd_soc_platform *platform = snd_soc_component_to_platform(component); in snd_soc_platform_drv_remove()
2859 ret = snd_soc_component_initialize(&platform->component, in snd_soc_add_platform()
2868 platform->component.probe = snd_soc_platform_drv_probe; in snd_soc_add_platform()
2870 platform->component.remove = snd_soc_platform_drv_remove; in snd_soc_add_platform()
2873 platform->component.debugfs_prefix = "platform"; in snd_soc_add_platform()
2877 snd_soc_component_add_unlocked(&platform->component); in snd_soc_add_platform()
2882 platform->component.name); in snd_soc_add_platform()
2923 snd_soc_component_del_unlocked(&platform->component); in snd_soc_remove_platform()
2927 platform->component.name); in snd_soc_remove_platform()
2929 snd_soc_component_cleanup(&platform->component); in snd_soc_remove_platform()
3001 static int snd_soc_codec_drv_probe(struct snd_soc_component *component) in snd_soc_codec_drv_probe() argument
3003 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_probe()
3008 static void snd_soc_codec_drv_remove(struct snd_soc_component *component) in snd_soc_codec_drv_remove() argument
3010 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_remove()
3015 static int snd_soc_codec_drv_write(struct snd_soc_component *component, in snd_soc_codec_drv_write() argument
3018 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_write()
3023 static int snd_soc_codec_drv_read(struct snd_soc_component *component, in snd_soc_codec_drv_read() argument
3026 struct snd_soc_codec *codec = snd_soc_component_to_codec(component); in snd_soc_codec_drv_read()
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()
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()
3129 snd_soc_component_add_unlocked(&codec->component); 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()
3164 snd_soc_component_del_unlocked(&codec->component); 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()
3627 struct snd_soc_dai_link_component *component; in snd_soc_of_get_dai_link_codecs() local
3642 component = devm_kzalloc(dev, in snd_soc_of_get_dai_link_codecs()
3643 sizeof *component * num_codecs, in snd_soc_of_get_dai_link_codecs()
3645 if (!component) in snd_soc_of_get_dai_link_codecs()
3647 dai_link->codecs = component; in snd_soc_of_get_dai_link_codecs()
3651 for (index = 0, component = dai_link->codecs; in snd_soc_of_get_dai_link_codecs()
3653 index++, component++) { in snd_soc_of_get_dai_link_codecs()
3659 component->of_node = args.np; in snd_soc_of_get_dai_link_codecs()
3660 ret = snd_soc_get_dai_name(&args, &component->dai_name); in snd_soc_of_get_dai_link_codecs()
3666 for (index = 0, component = dai_link->codecs; in snd_soc_of_get_dai_link_codecs()
3668 index++, component++) { in snd_soc_of_get_dai_link_codecs()
3669 if (!component->of_node) in snd_soc_of_get_dai_link_codecs()
3671 of_node_put(component->of_node); in snd_soc_of_get_dai_link_codecs()
3672 component->of_node = NULL; in snd_soc_of_get_dai_link_codecs()