Lines Matching refs:node
155 struct icc_node *node = dst; in path_init() local
166 node->provider->users++; in path_init()
167 hlist_add_head(&path->reqs[i].req_node, &node->req_list); in path_init()
168 path->reqs[i].node = node; in path_init()
172 node = node->reverse; in path_init()
182 struct icc_node *n, *node = NULL; in path_find() local
197 list_for_each_entry_safe(node, n, &traverse_list, search_list) { in path_find()
198 if (node == dst) { in path_find()
204 for (i = 0; i < node->num_links; i++) { in path_find()
205 struct icc_node *tmp = node->links[i]; in path_find()
216 tmp->reverse = node; in path_find()
251 static int aggregate_requests(struct icc_node *node) in aggregate_requests() argument
253 struct icc_provider *p = node->provider; in aggregate_requests()
257 node->avg_bw = 0; in aggregate_requests()
258 node->peak_bw = 0; in aggregate_requests()
261 p->pre_aggregate(node); in aggregate_requests()
263 hlist_for_each_entry(r, &node->req_list, req_node) { in aggregate_requests()
271 p->aggregate(node, r->tag, avg_bw, peak_bw, in aggregate_requests()
272 &node->avg_bw, &node->peak_bw); in aggregate_requests()
276 node->avg_bw = max(node->avg_bw, node->init_avg); in aggregate_requests()
277 node->peak_bw = max(node->peak_bw, node->init_peak); in aggregate_requests()
292 next = path->reqs[i].node; in apply_constraints()
312 int icc_std_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, in icc_std_aggregate() argument
359 struct icc_node *node = ERR_PTR(-EPROBE_DEFER); in of_icc_get_from_provider() local
372 node = data->node; in of_icc_get_from_provider()
376 node = provider->xlate(spec, provider->data); in of_icc_get_from_provider()
377 if (!IS_ERR(node)) in of_icc_get_from_provider()
384 if (!node) in of_icc_get_from_provider()
387 if (IS_ERR(node)) in of_icc_get_from_provider()
388 return ERR_CAST(node); in of_icc_get_from_provider()
394 data->node = node; in of_icc_get_from_provider()
498 path = path_find(dev, src_data->node, dst_data->node); in of_icc_get_by_index()
509 src_data->node->name, dst_data->node->name); in of_icc_get_by_index()
628 struct icc_node *node; in icc_set_bw() local
645 node = path->reqs[i].node; in icc_set_bw()
652 aggregate_requests(node); in icc_set_bw()
654 trace_icc_set_bw(path, node, i, avg_bw, peak_bw); in icc_set_bw()
663 node = path->reqs[i].node; in icc_set_bw()
666 aggregate_requests(node); in icc_set_bw()
769 struct icc_node *node; in icc_put() local
782 node = path->reqs[i].node; in icc_put()
784 if (!WARN_ON(!node->provider->users)) in icc_put()
785 node->provider->users--; in icc_put()
796 struct icc_node *node; in icc_node_create_nolock() local
799 node = node_find(id); in icc_node_create_nolock()
800 if (node) in icc_node_create_nolock()
801 return node; in icc_node_create_nolock()
803 node = kzalloc(sizeof(*node), GFP_KERNEL); in icc_node_create_nolock()
804 if (!node) in icc_node_create_nolock()
807 id = idr_alloc(&icc_idr, node, id, id + 1, GFP_KERNEL); in icc_node_create_nolock()
810 kfree(node); in icc_node_create_nolock()
814 node->id = id; in icc_node_create_nolock()
816 return node; in icc_node_create_nolock()
827 struct icc_node *node; in icc_node_create() local
831 node = icc_node_create_nolock(id); in icc_node_create()
835 return node; in icc_node_create()
845 struct icc_node *node; in icc_node_destroy() local
849 node = node_find(id); in icc_node_destroy()
850 if (node) { in icc_node_destroy()
851 idr_remove(&icc_idr, node->id); in icc_node_destroy()
852 WARN_ON(!hlist_empty(&node->req_list)); in icc_node_destroy()
857 if (!node) in icc_node_destroy()
860 kfree(node->links); in icc_node_destroy()
861 kfree(node); in icc_node_destroy()
878 int icc_link_create(struct icc_node *node, const int dst_id) in icc_link_create() argument
884 if (!node->provider) in icc_link_create()
899 new = krealloc(node->links, in icc_link_create()
900 (node->num_links + 1) * sizeof(*node->links), in icc_link_create()
907 node->links = new; in icc_link_create()
908 node->links[node->num_links++] = dst; in icc_link_create()
968 void icc_node_add(struct icc_node *node, struct icc_provider *provider) in icc_node_add() argument
970 if (WARN_ON(node->provider)) in icc_node_add()
975 node->provider = provider; in icc_node_add()
976 list_add_tail(&node->node_list, &provider->nodes); in icc_node_add()
980 provider->get_bw(node, &node->init_avg, &node->init_peak); in icc_node_add()
982 node->init_avg = INT_MAX; in icc_node_add()
983 node->init_peak = INT_MAX; in icc_node_add()
985 node->avg_bw = node->init_avg; in icc_node_add()
986 node->peak_bw = node->init_peak; in icc_node_add()
989 provider->pre_aggregate(node); in icc_node_add()
992 provider->aggregate(node, 0, node->init_avg, node->init_peak, in icc_node_add()
993 &node->avg_bw, &node->peak_bw); in icc_node_add()
995 provider->set(node, node); in icc_node_add()
996 node->avg_bw = 0; in icc_node_add()
997 node->peak_bw = 0; in icc_node_add()
1007 void icc_node_del(struct icc_node *node) in icc_node_del() argument
1011 list_del(&node->node_list); in icc_node_del()