Lines Matching defs:provider

14 #include <linux/interconnect-provider.h>
45 struct icc_provider *provider;
52 list_for_each_entry(provider, &icc_providers, provider_list) {
55 list_for_each_entry(n, &provider->nodes, node_list) {
101 struct icc_provider *provider;
111 list_for_each_entry(provider, &icc_providers, provider_list) {
113 if (provider->dev)
115 dev_name(provider->dev));
118 list_for_each_entry(n, &provider->nodes, node_list)
122 list_for_each_entry(n, &provider->nodes, node_list)
124 if (n->provider == n->links[i]->provider)
132 list_for_each_entry(provider, &icc_providers, provider_list)
133 list_for_each_entry(n, &provider->nodes, node_list)
135 if (n->provider != n->links[i]->provider)
153 struct icc_provider *provider;
156 list_for_each_entry(provider, &icc_providers, provider_list) {
157 list_for_each_entry(n, &provider->nodes, node_list) {
182 node->provider->users++;
271 struct icc_provider *p = node->provider;
311 p = next->provider;
314 if (!prev || (p != prev->provider && !p->inter_set)) {
348 * registering the provider.
369 * Looks for interconnect provider under the node specified by @spec and if
370 * found, uses xlate function of the provider to map phandle args to node.
379 struct icc_provider *provider;
385 list_for_each_entry(provider, &icc_providers, provider_list) {
386 if (provider->dev->of_node == spec->np) {
387 if (provider->xlate_extended) {
388 data = provider->xlate_extended(spec, provider->data);
394 node = provider->xlate(spec, provider->data);
804 if (!WARN_ON(!node->provider->users))
805 node->provider->users--;
894 * provider driver has not probed yet). So just create the @dst_id node
895 * and when the actual provider driver is probed, the rest of the node
906 if (!node->provider)
940 * icc_node_add() - add interconnect node to interconnect provider
942 * @provider: pointer to the interconnect provider
944 void icc_node_add(struct icc_node *node, struct icc_provider *provider)
946 if (WARN_ON(node->provider))
952 node->provider = provider;
953 list_add_tail(&node->node_list, &provider->nodes);
956 if (provider->get_bw) {
957 provider->get_bw(node, &node->init_avg, &node->init_peak);
966 if (provider->pre_aggregate)
967 provider->pre_aggregate(node);
969 if (provider->aggregate)
970 provider->aggregate(node, 0, node->init_avg, node->init_peak,
972 if (provider->set)
973 provider->set(node, node);
985 * icc_node_del() - delete interconnect node from interconnect provider
999 * icc_nodes_remove() - remove all previously added nodes from provider
1000 * @provider: the interconnect provider we are removing nodes from
1004 int icc_nodes_remove(struct icc_provider *provider)
1008 if (WARN_ON(IS_ERR_OR_NULL(provider)))
1011 list_for_each_entry_safe_reverse(n, tmp, &provider->nodes, node_list) {
1021 * icc_provider_init() - initialize a new interconnect provider
1022 * @provider: the interconnect provider to initialize
1024 * Must be called before adding nodes to the provider.
1026 void icc_provider_init(struct icc_provider *provider)
1028 WARN_ON(!provider->set);
1030 INIT_LIST_HEAD(&provider->nodes);
1035 * icc_provider_register() - register a new interconnect provider
1036 * @provider: the interconnect provider to register
1040 int icc_provider_register(struct icc_provider *provider)
1042 if (WARN_ON(!provider->xlate && !provider->xlate_extended))
1046 list_add_tail(&provider->provider_list, &icc_providers);
1049 dev_dbg(provider->dev, "interconnect provider registered\n");
1056 * icc_provider_deregister() - deregister an interconnect provider
1057 * @provider: the interconnect provider to deregister
1059 void icc_provider_deregister(struct icc_provider *provider)
1062 WARN_ON(provider->users);
1064 list_del(&provider->provider_list);
1108 dev_dbg(p->dev, "interconnect provider is in synced state\n");