Lines Matching full:component
52 #define for_each_component(component) \ argument
53 list_for_each_entry(component, &component_list, list)
134 static void soc_init_component_debugfs(struct snd_soc_component *component) in soc_init_component_debugfs() argument
136 if (!component->card->debugfs_card_root) in soc_init_component_debugfs()
139 if (component->debugfs_prefix) { in soc_init_component_debugfs()
143 component->debugfs_prefix, component->name); in soc_init_component_debugfs()
145 component->debugfs_root = debugfs_create_dir(name, in soc_init_component_debugfs()
146 component->card->debugfs_card_root); in soc_init_component_debugfs()
150 component->debugfs_root = debugfs_create_dir(component->name, in soc_init_component_debugfs()
151 component->card->debugfs_card_root); in soc_init_component_debugfs()
154 snd_soc_dapm_debugfs_init(snd_soc_component_get_dapm(component), in soc_init_component_debugfs()
155 component->debugfs_root); in soc_init_component_debugfs()
158 static void soc_cleanup_component_debugfs(struct snd_soc_component *component) in soc_cleanup_component_debugfs() argument
160 if (!component->debugfs_root) in soc_cleanup_component_debugfs()
162 debugfs_remove_recursive(component->debugfs_root); in soc_cleanup_component_debugfs()
163 component->debugfs_root = NULL; in soc_cleanup_component_debugfs()
168 struct snd_soc_component *component; in dai_list_show() local
173 for_each_component(component) in dai_list_show()
174 for_each_component_dais(component, dai) in dai_list_show()
185 struct snd_soc_component *component; in component_list_show() local
189 for_each_component(component) in component_list_show()
190 seq_printf(m, "%s\n", component->name); in component_list_show()
234 struct snd_soc_component *component) in soc_init_component_debugfs() argument
239 struct snd_soc_component *component) in soc_cleanup_component_debugfs() argument
262 struct snd_soc_component *component) in snd_soc_rtd_add_component() argument
269 if (comp == component) in snd_soc_rtd_add_component()
274 rtd->components[rtd->num_components] = component; in snd_soc_rtd_add_component()
283 struct snd_soc_component *component; in snd_soc_rtdcom_lookup() local
292 * snd_soc_rtdcom_lookup() will find component from rtd by using in snd_soc_rtdcom_lookup()
295 * to 1 rtd, this function will return 1st found component. in snd_soc_rtdcom_lookup()
297 for_each_rtd_components(rtd, i, component) { in snd_soc_rtdcom_lookup()
298 const char *component_name = component->driver->name; in snd_soc_rtdcom_lookup()
305 return component; in snd_soc_rtdcom_lookup()
315 struct snd_soc_component *component; in snd_soc_lookup_component_nolocked() local
319 for_each_component(component) { in snd_soc_lookup_component_nolocked()
320 if ((dev == component->dev) && in snd_soc_lookup_component_nolocked()
322 (driver_name == component->driver->name) || in snd_soc_lookup_component_nolocked()
323 (strcmp(component->driver->name, driver_name) == 0))) { in snd_soc_lookup_component_nolocked()
324 found_component = component; in snd_soc_lookup_component_nolocked()
336 struct snd_soc_component *component; in snd_soc_lookup_component() local
339 component = snd_soc_lookup_component_nolocked(dev, driver_name); in snd_soc_lookup_component()
342 return component; in snd_soc_lookup_component()
434 struct snd_soc_component *component; in soc_new_pcm_runtime() local
462 sizeof(*component) * (dai_link->num_cpus + in soc_new_pcm_runtime()
528 struct snd_soc_component *component; in snd_soc_suspend() local
593 for_each_rtd_components(rtd, i, component) { in snd_soc_suspend()
595 snd_soc_component_get_dapm(component); in snd_soc_suspend()
598 * ignore if component was already suspended in snd_soc_suspend()
600 if (snd_soc_component_is_suspended(component)) in snd_soc_suspend()
604 * If there are paths active then the COMPONENT will be in snd_soc_suspend()
610 * If the COMPONENT is capable of idle in snd_soc_suspend()
616 dev_dbg(component->dev, in snd_soc_suspend()
623 snd_soc_component_suspend(component); in snd_soc_suspend()
624 if (component->regmap) in snd_soc_suspend()
625 regcache_mark_dirty(component->regmap); in snd_soc_suspend()
627 pinctrl_pm_select_sleep_state(component->dev); in snd_soc_suspend()
630 dev_dbg(component->dev, in snd_soc_suspend()
631 "ASoC: COMPONENT is on over suspend\n"); in snd_soc_suspend()
653 struct snd_soc_component *component; in soc_resume_deferred() local
668 for_each_card_components(card, component) { in soc_resume_deferred()
669 if (snd_soc_component_is_suspended(component)) in soc_resume_deferred()
670 snd_soc_component_resume(component); in soc_resume_deferred()
714 struct snd_soc_component *component; in snd_soc_resume() local
721 for_each_card_components(card, component) in snd_soc_resume()
722 if (snd_soc_component_active(component)) in snd_soc_resume()
723 pinctrl_pm_select_default_state(component->dev); in snd_soc_resume()
747 *soc_component_to_node(struct snd_soc_component *component) in soc_component_to_node() argument
751 of_node = component->dev->of_node; in soc_component_to_node()
752 if (!of_node && component->dev->parent) in soc_component_to_node()
753 of_node = component->dev->parent->of_node; in soc_component_to_node()
760 struct snd_soc_component *component) in snd_soc_is_matching_component() argument
767 component_of_node = soc_component_to_node(component); in snd_soc_is_matching_component()
771 if (dlc->name && strcmp(component->name, dlc->name)) in snd_soc_is_matching_component()
780 struct snd_soc_component *component; in soc_find_component() local
787 * It returns *1st* found component, but some driver in soc_find_component()
790 * CPU component and generic DMAEngine component in soc_find_component()
792 for_each_component(component) in soc_find_component()
793 if (snd_soc_is_matching_component(dlc, component)) in soc_find_component()
794 return component; in soc_find_component()
802 * @dlc: name of the DAI or the DAI driver and optional component info to match
805 * find the DAI of the same name. The component's of_node and name
813 struct snd_soc_component *component; in snd_soc_find_dai() local
819 for_each_component(component) { in snd_soc_find_dai()
820 if (!snd_soc_is_matching_component(dlc, component)) in snd_soc_find_dai()
822 for_each_component_dais(component, dai) { in snd_soc_find_dai()
874 * Defer card registration if codec component is not added to in soc_dai_link_sanity_check()
875 * component list. in soc_dai_link_sanity_check()
879 "ASoC: codec component %s not found for link %s\n", in soc_dai_link_sanity_check()
899 * Defer card registration if platform component is not added to in soc_dai_link_sanity_check()
900 * component list. in soc_dai_link_sanity_check()
904 "ASoC: platform component %s not found for link %s\n", in soc_dai_link_sanity_check()
924 * Defer card registration if cpu dai component is not added to in soc_dai_link_sanity_check()
925 * component list. in soc_dai_link_sanity_check()
930 "ASoC: cpu component %s not found for link %s\n", in soc_dai_link_sanity_check()
983 * topology component. And machine drivers can still define static
991 struct snd_soc_component *component; in snd_soc_add_pcm_runtime() local
1023 snd_soc_rtd_add_component(rtd, asoc_rtd_to_cpu(rtd, i)->component); in snd_soc_add_pcm_runtime()
1035 snd_soc_rtd_add_component(rtd, asoc_rtd_to_codec(rtd, i)->component); in snd_soc_add_pcm_runtime()
1040 for_each_component(component) { in snd_soc_add_pcm_runtime()
1041 if (!snd_soc_is_matching_component(platform, component)) in snd_soc_add_pcm_runtime()
1044 snd_soc_rtd_add_component(rtd, component); in snd_soc_add_pcm_runtime()
1061 struct snd_soc_component *component; in soc_init_pcm_runtime() local
1088 for_each_rtd_components(rtd, i, component) { in soc_init_pcm_runtime()
1089 if (!component->driver->use_dai_pcm_id) in soc_init_pcm_runtime()
1093 num += component->driver->be_pcm_base; in soc_init_pcm_runtime()
1119 struct snd_soc_component *component) in soc_set_name_prefix() argument
1121 struct device_node *of_node = soc_component_to_node(component); in soc_set_name_prefix()
1128 if (snd_soc_is_matching_component(&map->dlc, component)) { in soc_set_name_prefix()
1129 component->name_prefix = map->name_prefix; in soc_set_name_prefix()
1142 component->name_prefix = str; in soc_set_name_prefix()
1145 static void soc_remove_component(struct snd_soc_component *component, in soc_remove_component() argument
1149 if (!component->card) in soc_remove_component()
1153 snd_soc_component_remove(component); in soc_remove_component()
1156 snd_soc_component_set_jack(component, NULL, NULL); in soc_remove_component()
1158 list_del_init(&component->card_list); in soc_remove_component()
1159 snd_soc_dapm_free(snd_soc_component_get_dapm(component)); in soc_remove_component()
1160 soc_cleanup_component_debugfs(component); in soc_remove_component()
1161 component->card = NULL; in soc_remove_component()
1162 snd_soc_component_module_put_when_remove(component); in soc_remove_component()
1166 struct snd_soc_component *component) in soc_probe_component() argument
1169 snd_soc_component_get_dapm(component); in soc_probe_component()
1174 if (!strcmp(component->name, "snd-soc-dummy")) in soc_probe_component()
1177 if (component->card) { in soc_probe_component()
1178 if (component->card != card) { in soc_probe_component()
1179 dev_err(component->dev, in soc_probe_component()
1180 "Trying to bind component to card \"%s\" but is already bound to card \"%s\"\n", in soc_probe_component()
1181 card->name, component->card->name); in soc_probe_component()
1187 ret = snd_soc_component_module_get_when_probe(component); in soc_probe_component()
1191 component->card = card; in soc_probe_component()
1192 soc_set_name_prefix(card, component); in soc_probe_component()
1194 soc_init_component_debugfs(component); in soc_probe_component()
1196 snd_soc_dapm_init(dapm, card, component); in soc_probe_component()
1199 component->driver->dapm_widgets, in soc_probe_component()
1200 component->driver->num_dapm_widgets); in soc_probe_component()
1203 dev_err(component->dev, in soc_probe_component()
1208 for_each_component_dais(component, dai) { in soc_probe_component()
1211 dev_err(component->dev, in soc_probe_component()
1217 ret = snd_soc_component_probe(component); in soc_probe_component()
1219 dev_err(component->dev, in soc_probe_component()
1220 "ASoC: failed to probe component %d\n", ret); in soc_probe_component()
1226 component->name); in soc_probe_component()
1234 ret = snd_soc_component_init(component); in soc_probe_component()
1238 ret = snd_soc_add_component_controls(component, in soc_probe_component()
1239 component->driver->controls, in soc_probe_component()
1240 component->driver->num_controls); in soc_probe_component()
1245 component->driver->dapm_routes, in soc_probe_component()
1246 component->driver->num_dapm_routes); in soc_probe_component()
1261 list_add(&component->card_list, &card->component_dev_list); in soc_probe_component()
1265 soc_remove_component(component, probed); in soc_probe_component()
1307 struct snd_soc_component *component; in soc_remove_link_components() local
1313 for_each_rtd_components(rtd, i, component) { in soc_remove_link_components()
1314 if (component->driver->remove_order != order) in soc_remove_link_components()
1317 soc_remove_component(component, 1); in soc_remove_link_components()
1325 struct snd_soc_component *component; in soc_probe_link_components() local
1331 for_each_rtd_components(rtd, i, component) { in soc_probe_link_components()
1332 if (component->driver->probe_order != order) in soc_probe_link_components()
1335 ret = soc_probe_component(card, component); in soc_probe_link_components()
1347 struct snd_soc_component *component, *_component; in soc_unbind_aux_dev() local
1349 for_each_card_auxs_safe(card, component, _component) { in soc_unbind_aux_dev()
1351 snd_soc_component_set_aux(component, NULL); in soc_unbind_aux_dev()
1352 list_del(&component->card_aux_list); in soc_unbind_aux_dev()
1358 struct snd_soc_component *component; in soc_bind_aux_dev() local
1364 component = soc_find_component(&aux->dlc); in soc_bind_aux_dev()
1365 if (!component) in soc_bind_aux_dev()
1369 snd_soc_component_set_aux(component, aux); in soc_bind_aux_dev()
1371 list_add(&component->card_aux_list, &card->aux_comp_list); in soc_bind_aux_dev()
1378 struct snd_soc_component *component; in soc_probe_aux_devices() local
1383 for_each_card_auxs(card, component) { in soc_probe_aux_devices()
1384 if (component->driver->probe_order != order) in soc_probe_aux_devices()
1387 ret = soc_probe_component(card, component); in soc_probe_aux_devices()
1442 * the component which has non_legacy_dai_naming is Codec in snd_soc_runtime_set_dai_fmt()
1462 if (cpu_dai->component->driver->non_legacy_dai_naming) in snd_soc_runtime_set_dai_fmt()
1635 struct snd_soc_component *component; in soc_check_tplg_fes() local
1640 for_each_component(component) { in soc_check_tplg_fes()
1642 /* does this component override BEs ? */ in soc_check_tplg_fes()
1643 if (!component->driver->ignore_machine) in soc_check_tplg_fes()
1647 if (!strcmp(component->driver->ignore_machine, in soc_check_tplg_fes()
1650 if (strcmp(component->driver->ignore_machine, in soc_check_tplg_fes()
1666 /* override platform component */ in soc_check_tplg_fes()
1671 dai_link->platforms->name = component->name; in soc_check_tplg_fes()
1700 component->driver->be_hw_params_fixup; in soc_check_tplg_fes()
1711 if (component->driver->topology_name_prefix) { in soc_check_tplg_fes()
1715 comp_drv = component->driver; in soc_check_tplg_fes()
1815 struct snd_soc_component *component; in snd_soc_bind_card() local
1881 "ASoC: failed to probe aux component %d\n", ret); in snd_soc_bind_card()
1968 for_each_card_components(card, component) in snd_soc_bind_card()
1969 if (!snd_soc_component_active(component)) in snd_soc_bind_card()
1970 pinctrl_pm_select_sleep_state(component->dev); in snd_soc_bind_card()
2007 struct snd_soc_component *component; in snd_soc_poweroff() local
2021 for_each_card_components(card, component) in snd_soc_poweroff()
2022 pinctrl_pm_select_sleep_state(component->dev); in snd_soc_poweroff()
2112 * snd_soc_add_component_controls - Add an array of controls to a component.
2114 * @component: Component to add controls to
2120 int snd_soc_add_component_controls(struct snd_soc_component *component, in snd_soc_add_component_controls() argument
2123 struct snd_card *card = component->card->snd_card; in snd_soc_add_component_controls()
2125 return snd_soc_add_controls(card, component->dev, controls, in snd_soc_add_component_controls()
2126 num_controls, component->name_prefix, component); in snd_soc_add_component_controls()
2163 struct snd_card *card = dai->component->card->snd_card; in snd_soc_add_dai_controls()
2248 /* I2C component devices are named "bus-addr" */ in fmt_single_name()
2256 /* sanitize component name for DAI link creation */ in fmt_single_name()
2292 * @component: The component the DAIs are registered for
2297 * Topology can use this API to register DAIs when probing a component.
2299 * will be freed in the component cleanup.
2301 struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component, in snd_soc_register_dai() argument
2305 struct device *dev = component->dev; in snd_soc_register_dai()
2317 * Back in the old days when we still had component-less DAIs, in snd_soc_register_dai()
2318 * instead of having a static name, component-less DAIs would in snd_soc_register_dai()
2322 * component-less anymore. in snd_soc_register_dai()
2332 dai->id = component->num_dai; in snd_soc_register_dai()
2337 dai->component = component; in snd_soc_register_dai()
2342 list_add_tail(&dai->list, &component->dai_list); in snd_soc_register_dai()
2343 component->num_dai++; in snd_soc_register_dai()
2352 * @component: The component for which the DAIs should be unregistered
2354 static void snd_soc_unregister_dais(struct snd_soc_component *component) in snd_soc_unregister_dais() argument
2358 for_each_component_dais_safe(component, dai, _dai) in snd_soc_unregister_dais()
2365 * @component: The component the DAIs are registered for
2369 static int snd_soc_register_dais(struct snd_soc_component *component, in snd_soc_register_dais() argument
2378 dai = snd_soc_register_dai(component, dai_drv + i, count == 1 && in snd_soc_register_dais()
2379 !component->driver->non_legacy_dai_naming); in snd_soc_register_dais()
2389 snd_soc_unregister_dais(component); in snd_soc_register_dais()
2438 static void snd_soc_del_component_unlocked(struct snd_soc_component *component) in snd_soc_del_component_unlocked() argument
2440 struct snd_soc_card *card = component->card; in snd_soc_del_component_unlocked()
2442 snd_soc_unregister_dais(component); in snd_soc_del_component_unlocked()
2447 list_del(&component->list); in snd_soc_del_component_unlocked()
2450 int snd_soc_component_initialize(struct snd_soc_component *component, in snd_soc_component_initialize() argument
2454 INIT_LIST_HEAD(&component->dai_list); in snd_soc_component_initialize()
2455 INIT_LIST_HEAD(&component->dobj_list); in snd_soc_component_initialize()
2456 INIT_LIST_HEAD(&component->card_list); in snd_soc_component_initialize()
2457 INIT_LIST_HEAD(&component->list); in snd_soc_component_initialize()
2458 mutex_init(&component->io_mutex); in snd_soc_component_initialize()
2460 component->name = fmt_single_name(dev, &component->id); in snd_soc_component_initialize()
2461 if (!component->name) { in snd_soc_component_initialize()
2466 component->dev = dev; in snd_soc_component_initialize()
2467 component->driver = driver; in snd_soc_component_initialize()
2473 int snd_soc_add_component(struct snd_soc_component *component, in snd_soc_add_component() argument
2482 if (component->driver->endianness) { in snd_soc_add_component()
2489 ret = snd_soc_register_dais(component, dai_drv, num_dai); in snd_soc_add_component()
2491 dev_err(component->dev, "ASoC: Failed to register DAIs: %d\n", in snd_soc_add_component()
2496 if (!component->driver->write && !component->driver->read) { in snd_soc_add_component()
2497 if (!component->regmap) in snd_soc_add_component()
2498 component->regmap = dev_get_regmap(component->dev, in snd_soc_add_component()
2500 if (component->regmap) in snd_soc_add_component()
2501 snd_soc_component_setup_regmap(component); in snd_soc_add_component()
2505 list_add(&component->list, &component_list); in snd_soc_add_component()
2509 snd_soc_del_component_unlocked(component); in snd_soc_add_component()
2525 struct snd_soc_component *component; in snd_soc_register_component() local
2528 component = devm_kzalloc(dev, sizeof(*component), GFP_KERNEL); in snd_soc_register_component()
2529 if (!component) in snd_soc_register_component()
2532 ret = snd_soc_component_initialize(component, component_driver, dev); in snd_soc_register_component()
2536 return snd_soc_add_component(component, dai_drv, num_dai); in snd_soc_register_component()
2541 * snd_soc_unregister_component_by_driver - Unregister component using a given driver
2545 * @component_driver: The component driver to unregister
2550 struct snd_soc_component *component; in snd_soc_unregister_component_by_driver() local
2556 component = snd_soc_lookup_component_nolocked(dev, component_driver->name); in snd_soc_unregister_component_by_driver()
2557 if (!component) in snd_soc_unregister_component_by_driver()
2560 snd_soc_del_component_unlocked(component); in snd_soc_unregister_component_by_driver()
2568 * snd_soc_unregister_component - Unregister all related component
2575 struct snd_soc_component *component; in snd_soc_unregister_component() local
2579 component = snd_soc_lookup_component_nolocked(dev, NULL); in snd_soc_unregister_component()
2580 if (!component) in snd_soc_unregister_component()
2583 snd_soc_del_component_unlocked(component); in snd_soc_unregister_component()
2987 struct snd_soc_component *component; in snd_soc_get_dai_id() local
3001 component = soc_find_component(&dlc); in snd_soc_get_dai_id()
3002 if (component) in snd_soc_get_dai_id()
3003 ret = snd_soc_component_of_xlate_dai_id(component, ep); in snd_soc_get_dai_id()
3063 * check if another component is provided with the same in snd_soc_get_dai_name()
3104 struct snd_soc_dai_link_component *component; in snd_soc_of_put_dai_link_codecs() local
3107 for_each_link_codecs(dai_link, index, component) { in snd_soc_of_put_dai_link_codecs()
3108 if (!component->of_node) in snd_soc_of_put_dai_link_codecs()
3110 of_node_put(component->of_node); in snd_soc_of_put_dai_link_codecs()
3111 component->of_node = NULL; in snd_soc_of_put_dai_link_codecs()
3135 struct snd_soc_dai_link_component *component; in snd_soc_of_get_dai_link_codecs() local
3150 component = devm_kcalloc(dev, in snd_soc_of_get_dai_link_codecs()
3151 num_codecs, sizeof(*component), in snd_soc_of_get_dai_link_codecs()
3153 if (!component) in snd_soc_of_get_dai_link_codecs()
3155 dai_link->codecs = component; in snd_soc_of_get_dai_link_codecs()
3159 for_each_link_codecs(dai_link, index, component) { in snd_soc_of_get_dai_link_codecs()
3165 component->of_node = args.np; in snd_soc_of_get_dai_link_codecs()
3166 ret = snd_soc_get_dai_name(&args, &component->dai_name); in snd_soc_of_get_dai_link_codecs()