diff options
| author | Philipp Zabel <[email protected]> | 2013-04-29 16:17:10 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2013-04-29 18:28:13 -0700 |
| commit | 9375db07adeaeea5f5ea7ca0463a8b371d71ddbb (patch) | |
| tree | 8825d1985a7bd6acd9e13de4594c574c81dd11fe /include/linux/genalloc.h | |
| parent | 3119b487e03650b51589a86aac33098b7cc2a09e (diff) | |
genalloc: add devres support, allow to find a managed pool by device
This patch adds three exported functions to lib/genalloc.c:
devm_gen_pool_create, dev_get_gen_pool, and of_get_named_gen_pool.
devm_gen_pool_create is a managed version of gen_pool_create that keeps
track of the pool via devres and allows the management code to
automatically destroy it after device removal.
dev_get_gen_pool retrieves the gen_pool for a given device, if it was
created with devm_gen_pool_create, using devres_find.
of_get_named_gen_pool retrieves the gen_pool for a given device node and
property name, where the property must contain a phandle pointing to a
platform device node. The corresponding platform device is then fed into
dev_get_gen_pool and the resulting gen_pool is returned.
[[email protected]: make the of_get_named_gen_pool() stub static, fixing a zillion link errors]
[[email protected]: squish "struct device declared inside parameter list" warning]
Signed-off-by: Philipp Zabel <[email protected]>
Acked-by: Grant Likely <[email protected]>
Tested-by: Michal Simek <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: Matt Porter <[email protected]>
Cc: Dong Aisheng <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Paul Gortmaker <[email protected]>
Cc: Javier Martin <[email protected]>
Cc: Huang Shijie <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'include/linux/genalloc.h')
| -rw-r--r-- | include/linux/genalloc.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h index dd7c569aacad..661d374aeb2d 100644 --- a/include/linux/genalloc.h +++ b/include/linux/genalloc.h @@ -29,6 +29,10 @@ #ifndef __GENALLOC_H__ #define __GENALLOC_H__ + +struct device; +struct device_node; + /** * Allocation callback function type definition * @map: Pointer to bitmap @@ -105,4 +109,18 @@ extern unsigned long gen_pool_first_fit(unsigned long *map, unsigned long size, extern unsigned long gen_pool_best_fit(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr, void *data); +extern struct gen_pool *devm_gen_pool_create(struct device *dev, + int min_alloc_order, int nid); +extern struct gen_pool *dev_get_gen_pool(struct device *dev); + +#ifdef CONFIG_OF +extern struct gen_pool *of_get_named_gen_pool(struct device_node *np, + const char *propname, int index); +#else +static inline struct gen_pool *of_get_named_gen_pool(struct device_node *np, + const char *propname, int index) +{ + return NULL; +} +#endif #endif /* __GENALLOC_H__ */ |