Lines Matching refs:resource

23  * fsl_mc_resource_pool_add_device - add allocatable object to a resource
38 struct fsl_mc_resource *resource;
46 if (mc_dev->resource)
63 resource = devm_kzalloc(&mc_bus_dev->dev, sizeof(*resource),
65 if (!resource) {
72 resource->type = pool_type;
73 resource->id = mc_dev->obj_desc.id;
74 resource->data = mc_dev;
75 resource->parent_pool = res_pool;
76 INIT_LIST_HEAD(&resource->node);
77 list_add_tail(&resource->node, &res_pool->free_list);
78 mc_dev->resource = resource;
90 * resource pool
94 * It permanently removes an allocatable fsl-mc device from the resource
103 struct fsl_mc_resource *resource;
109 resource = mc_dev->resource;
110 if (!resource || resource->data != mc_dev) {
111 dev_err(&mc_bus_dev->dev, "resource mismatch\n");
115 res_pool = resource->parent_pool;
116 if (res_pool != &mc_bus->resource_pools[resource->type]) {
134 * If the device is currently allocated, its resource is not
137 if (list_empty(&resource->node)) {
140 "Device %s cannot be removed from resource pool\n",
145 list_del_init(&resource->node);
149 devm_kfree(&mc_bus_dev->dev, resource);
150 mc_dev->resource = NULL;
186 struct fsl_mc_resource *resource;
202 resource = list_first_entry_or_null(&res_pool->free_list,
205 if (!resource) {
213 if (resource->type != pool_type)
215 if (resource->parent_pool != res_pool)
221 list_del_init(&resource->node);
227 *new_resource = resource;
233 void fsl_mc_resource_free(struct fsl_mc_resource *resource)
237 res_pool = resource->parent_pool;
238 if (resource->type != res_pool->type)
246 if (!list_empty(&resource->node))
249 list_add_tail(&resource->node, &res_pool->free_list);
282 struct fsl_mc_resource *resource = NULL;
296 error = fsl_mc_resource_allocate(mc_bus, pool_type, &resource);
300 mc_adev = resource->data;
317 if (resource)
318 fsl_mc_resource_free(resource);
325 * fsl_mc_object_free - Returns an fsl-mc object to the resource
331 struct fsl_mc_resource *resource;
333 resource = mc_adev->resource;
334 if (resource->type == FSL_MC_POOL_DPMCP)
336 if (resource->data != mc_adev)
339 fsl_mc_resource_free(resource);
393 mc_dev_irq->resource.type = res_pool->type;
394 mc_dev_irq->resource.data = mc_dev_irq;
395 mc_dev_irq->resource.parent_pool = res_pool;
397 mc_dev_irq->resource.id = mc_dev_irq->virq;
398 INIT_LIST_HEAD(&mc_dev_irq->resource.node);
399 list_add_tail(&mc_dev_irq->resource.node, &res_pool->free_list);
481 struct fsl_mc_resource *resource;
484 &resource);
488 irqs[i] = to_fsl_mc_irq(resource);
501 fsl_mc_resource_free(&irqs[i]->resource);
533 fsl_mc_resource_free(&irqs[i]->resource);
561 struct fsl_mc_resource *resource;
567 list_for_each_entry_safe(resource, next, &res_pool->free_list, node)
568 devm_kfree(&mc_bus_dev->dev, resource);
619 if (mc_dev->resource) {