Lines Matching defs:provider
14 #include <linux/interconnect-provider.h>
47 struct icc_provider *provider;
54 list_for_each_entry(provider, &icc_providers, provider_list) {
57 list_for_each_entry(n, &provider->nodes, node_list) {
103 struct icc_provider *provider;
113 list_for_each_entry(provider, &icc_providers, provider_list) {
115 if (provider->dev)
117 dev_name(provider->dev));
120 list_for_each_entry(n, &provider->nodes, node_list)
124 list_for_each_entry(n, &provider->nodes, node_list)
126 if (n->provider == n->links[i]->provider)
134 list_for_each_entry(provider, &icc_providers, provider_list)
135 list_for_each_entry(n, &provider->nodes, node_list)
137 if (n->provider != n->links[i]->provider)
155 struct icc_provider *provider;
158 list_for_each_entry(provider, &icc_providers, provider_list) {
159 list_for_each_entry(n, &provider->nodes, node_list) {
184 node->provider->users++;
273 struct icc_provider *p = node->provider;
313 p = next->provider;
316 if (!prev || (p != prev->provider && !p->inter_set)) {
350 * registering the provider.
371 * Looks for interconnect provider under the node specified by @spec and if
372 * found, uses xlate function of the provider to map phandle args to node.
381 struct icc_provider *provider;
387 list_for_each_entry(provider, &icc_providers, provider_list) {
388 if (device_match_of_node(provider->dev, spec->np)) {
389 if (provider->xlate_extended) {
390 data = provider->xlate_extended(spec, provider->data);
396 node = provider->xlate(spec, provider->data);
826 if (!WARN_ON(!node->provider->users))
827 node->provider->users--;
941 * @provider: node provider
946 int icc_node_set_name(struct icc_node *node, const struct icc_provider *provider, const char *name)
950 dev_name(provider->dev));
968 * provider driver has not probed yet). So just create the @dst_node
969 * and when the actual provider driver is probed, the rest of the node
979 if (!src_node->provider)
1018 * provider driver has not probed yet). So just create the @dst_id node
1019 * and when the actual provider driver is probed, the rest of the node
1030 if (!node->provider)
1064 * icc_node_add() - add interconnect node to interconnect provider
1066 * @provider: pointer to the interconnect provider
1068 void icc_node_add(struct icc_node *node, struct icc_provider *provider)
1070 if (WARN_ON(node->provider))
1076 node->provider = provider;
1077 list_add_tail(&node->node_list, &provider->nodes);
1080 if (provider->get_bw) {
1081 provider->get_bw(node, &node->init_avg, &node->init_peak);
1090 if (provider->pre_aggregate)
1091 provider->pre_aggregate(node);
1093 if (provider->aggregate)
1094 provider->aggregate(node, 0, node->init_avg, node->init_peak,
1096 if (provider->set)
1097 provider->set(node, node);
1109 * icc_node_del() - delete interconnect node from interconnect provider
1123 * icc_nodes_remove() - remove all previously added nodes from provider
1124 * @provider: the interconnect provider we are removing nodes from
1128 int icc_nodes_remove(struct icc_provider *provider)
1132 if (WARN_ON(IS_ERR_OR_NULL(provider)))
1135 list_for_each_entry_safe_reverse(n, tmp, &provider->nodes, node_list) {
1145 * icc_provider_init() - initialize a new interconnect provider
1146 * @provider: the interconnect provider to initialize
1148 * Must be called before adding nodes to the provider.
1150 void icc_provider_init(struct icc_provider *provider)
1152 WARN_ON(!provider->set);
1154 INIT_LIST_HEAD(&provider->nodes);
1159 * icc_provider_register() - register a new interconnect provider
1160 * @provider: the interconnect provider to register
1164 int icc_provider_register(struct icc_provider *provider)
1166 if (WARN_ON(!provider->xlate && !provider->xlate_extended))
1170 list_add_tail(&provider->provider_list, &icc_providers);
1173 dev_dbg(provider->dev, "interconnect provider registered\n");
1180 * icc_provider_deregister() - deregister an interconnect provider
1181 * @provider: the interconnect provider to deregister
1183 void icc_provider_deregister(struct icc_provider *provider)
1186 WARN_ON(provider->users);
1188 list_del(&provider->provider_list);
1232 dev_dbg(p->dev, "interconnect provider is in synced state\n");