Lines Matching full:release

21 	dr_release_t			release;  member
75 * Release functions for devres group. These callbacks are used only
90 if (node->release == &group_open_release) in node_to_group()
92 if (node->release == &group_close_release) in node_to_group()
107 static __always_inline struct devres * alloc_dr(dr_release_t release, in alloc_dr() argument
123 dr->node.release = release; in alloc_dr()
144 * @release: Release function devres will be associated with
151 * associated with @release. The returned pointer can be passed to
157 void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp, int nid, in __devres_alloc_node() argument
162 dr = alloc_dr(release, size, gfp | __GFP_ZERO, nid); in __devres_alloc_node()
173 * @release: Look for resources associated with this release function
179 * Call @fn for each devres of @dev which is associated with @release
185 void devres_for_each_res(struct device *dev, dr_release_t release, in devres_for_each_res() argument
202 if (node->release != release) in devres_for_each_res()
235 * using devres_alloc(). On driver detach, the associated release
249 static struct devres *find_dr(struct device *dev, dr_release_t release, in find_dr() argument
257 if (node->release != release) in find_dr()
270 * @release: Look for resources associated with this release function
274 * Find the latest devres of @dev which is associated with @release
281 void * devres_find(struct device *dev, dr_release_t release, in devres_find() argument
288 dr = find_dr(dev, release, match, match_data); in devres_find()
304 * Find the latest devres of @dev which has the same release function
319 dr = find_dr(dev, new_dr->node.release, match, match_data); in devres_get()
335 * @release: Look for resources associated with this release function
339 * Find the latest devres of @dev associated with @release and for
347 void * devres_remove(struct device *dev, dr_release_t release, in devres_remove() argument
354 dr = find_dr(dev, release, match, match_data); in devres_remove()
370 * @release: Look for resources associated with this release function
374 * Find the latest devres of @dev associated with @release and for
378 * Note that the release function for the resource will not be called,
385 int devres_destroy(struct device *dev, dr_release_t release, in devres_destroy() argument
390 res = devres_remove(dev, release, match, match_data); in devres_destroy()
401 * devres_release - Find a device resource and destroy it, calling release
403 * @release: Look for resources associated with this release function
407 * Find the latest devres of @dev associated with @release and for
410 * release function called and the resource freed.
415 int devres_release(struct device *dev, dr_release_t release, in devres_release() argument
420 res = devres_remove(dev, release, match, match_data); in devres_release()
424 (*release)(dev, res); in devres_release()
495 /* Release. Note that both devres and devres_group are in release_nodes()
500 dr->node.release(dev, dr->data); in release_nodes()
506 * devres_release_all - Release all managed resources
507 * @dev: Device to release resources for
509 * Release all resources associated with @dev. This function is
522 /* Nothing to release if list is empty */ in devres_release_all()
556 grp->node[0].release = &group_open_release; in devres_open_group()
557 grp->node[1].release = &group_close_release; in devres_open_group()
581 if (node->release != &group_open_release) in find_group()
652 * devres_release_group - Release resources in a devres group
653 * @dev: Device to release group for
656 * Release all resources in the group identified by @id. If @id is
767 * devm_release_action() - release previously added custom action
848 * change the order in which the release callback for the re-alloc'ed devres