Lines Matching full:provider

14 #include <linux/interconnect-provider.h>
45 struct icc_provider *provider; in icc_summary_show() local
52 list_for_each_entry(provider, &icc_providers, provider_list) { in icc_summary_show()
55 list_for_each_entry(n, &provider->nodes, node_list) { in icc_summary_show()
101 struct icc_provider *provider; in icc_graph_show() local
111 list_for_each_entry(provider, &icc_providers, provider_list) { in icc_graph_show()
113 if (provider->dev) in icc_graph_show()
115 dev_name(provider->dev)); in icc_graph_show()
118 list_for_each_entry(n, &provider->nodes, node_list) in icc_graph_show()
122 list_for_each_entry(n, &provider->nodes, node_list) in icc_graph_show()
124 if (n->provider == n->links[i]->provider) in icc_graph_show()
132 list_for_each_entry(provider, &icc_providers, provider_list) in icc_graph_show()
133 list_for_each_entry(n, &provider->nodes, node_list) in icc_graph_show()
135 if (n->provider != n->links[i]->provider) in icc_graph_show()
165 node->provider->users++; in path_init()
252 struct icc_provider *p = node->provider; in aggregate_requests()
292 p = next->provider; in apply_constraints()
295 if (!prev || (p != prev->provider && !p->inter_set)) { in apply_constraints()
329 * registering the provider.
350 * Looks for interconnect provider under the node specified by @spec and if
351 * found, uses xlate function of the provider to map phandle args to node.
360 struct icc_provider *provider; in of_icc_get_from_provider() local
366 list_for_each_entry(provider, &icc_providers, provider_list) { in of_icc_get_from_provider()
367 if (provider->dev->of_node == spec->np) { in of_icc_get_from_provider()
368 if (provider->xlate_extended) { in of_icc_get_from_provider()
369 data = provider->xlate_extended(spec, provider->data); in of_icc_get_from_provider()
375 node = provider->xlate(spec, provider->data); in of_icc_get_from_provider()
780 if (!WARN_ON(!node->provider->users)) in icc_put()
781 node->provider->users--; in icc_put()
864 * provider driver has not probed yet). So just create the @dst_id node
865 * and when the actual provider driver is probed, the rest of the node
876 if (!node->provider) in icc_link_create()
954 * icc_node_add() - add interconnect node to interconnect provider
956 * @provider: pointer to the interconnect provider
958 void icc_node_add(struct icc_node *node, struct icc_provider *provider) in icc_node_add() argument
962 node->provider = provider; in icc_node_add()
963 list_add_tail(&node->node_list, &provider->nodes); in icc_node_add()
966 if (provider->get_bw) { in icc_node_add()
967 provider->get_bw(node, &node->init_avg, &node->init_peak); in icc_node_add()
974 if (provider->aggregate) in icc_node_add()
975 provider->aggregate(node, 0, node->init_avg, node->init_peak, in icc_node_add()
977 provider->set(node, node); in icc_node_add()
986 * icc_node_del() - delete interconnect node from interconnect provider
1000 * icc_nodes_remove() - remove all previously added nodes from provider
1001 * @provider: the interconnect provider we are removing nodes from
1005 int icc_nodes_remove(struct icc_provider *provider) in icc_nodes_remove() argument
1009 if (WARN_ON(IS_ERR_OR_NULL(provider))) in icc_nodes_remove()
1012 list_for_each_entry_safe_reverse(n, tmp, &provider->nodes, node_list) { in icc_nodes_remove()
1022 * icc_provider_add() - add a new interconnect provider
1023 * @provider: the interconnect provider that will be added into topology
1027 int icc_provider_add(struct icc_provider *provider) in icc_provider_add() argument
1029 if (WARN_ON(!provider->set)) in icc_provider_add()
1031 if (WARN_ON(!provider->xlate && !provider->xlate_extended)) in icc_provider_add()
1036 INIT_LIST_HEAD(&provider->nodes); in icc_provider_add()
1037 list_add_tail(&provider->provider_list, &icc_providers); in icc_provider_add()
1041 dev_dbg(provider->dev, "interconnect provider added to topology\n"); in icc_provider_add()
1048 * icc_provider_del() - delete previously added interconnect provider
1049 * @provider: the interconnect provider that will be removed from topology
1053 int icc_provider_del(struct icc_provider *provider) in icc_provider_del() argument
1056 if (provider->users) { in icc_provider_del()
1057 pr_warn("interconnect provider still has %d users\n", in icc_provider_del()
1058 provider->users); in icc_provider_del()
1063 if (!list_empty(&provider->nodes)) { in icc_provider_del()
1064 pr_warn("interconnect provider still has nodes\n"); in icc_provider_del()
1069 list_del(&provider->provider_list); in icc_provider_del()
1104 dev_dbg(p->dev, "interconnect provider is in synced state\n"); in icc_sync_state()