History

drivers: of: add return value to of_reserved_mem_device_init()

Driver calling of_reserved_mem_device_init() might be interested if the initialization has been successful or not, so add support for returning error code. This fixes a build warining caused by commit 7bfa5ab6fa1b ("drivers: dma-coherent: add initialization from device tree"), which has been merged without this change and without fixing function return value.

Marek Szyprowski committed 12 years ago

Commit 47f29df1 parent 5ddacbe3 files · +17 −9Browse files

Unified · Split

3 files
  1. drivers/base/dma-contiguous.c +2 −1
  2. drivers/of/of_reserved_mem.c +9 −5
  3. include/linux/of_reserved_mem.h +6 −3
drivers/base/dma-contiguous.c+2−1
@@ -223,9 +223,10 @@ bool dma_release_from_contiguous(struct device *dev, struct page *pages, · 222 unmodified lines
223#undef pr_fmt223#undef pr_fmt
224#define pr_fmt(fmt) fmt224#define pr_fmt(fmt) fmt
225 225
226static void rmem_cma_device_init(struct reserved_mem *rmem, struct device *dev)226static int rmem_cma_device_init(struct reserved_mem *rmem, struct device *dev)
227{227{
228 dev_set_cma_area(dev, rmem->priv);228 dev_set_cma_area(dev, rmem->priv);
229 return 0;
229}230}
230 231
231static void rmem_cma_device_release(struct reserved_mem *rmem,232static void rmem_cma_device_release(struct reserved_mem *rmem,
drivers/of/of_reserved_mem.c+9−5
@@ -243,23 +243,27 @@ static inline struct reserved_mem *__find_rmem(struct device_node *node) · 242 unmodified lines
243 * This function assign memory region pointed by "memory-region" device tree243 * This function assign memory region pointed by "memory-region" device tree
244 * property to the given device.244 * property to the given device.
245 */245 */
246void of_reserved_mem_device_init(struct device *dev)246int of_reserved_mem_device_init(struct device *dev)
247{247{
248 struct reserved_mem *rmem;248 struct reserved_mem *rmem;
249 struct device_node *np;249 struct device_node *np;
250 int ret;
250 251
251 np = of_parse_phandle(dev->of_node, "memory-region", 0);252 np = of_parse_phandle(dev->of_node, "memory-region", 0);
252 if (!np)253 if (!np)
253 return;254 return -ENODEV;
254 255
255 rmem = __find_rmem(np);256 rmem = __find_rmem(np);
256 of_node_put(np);257 of_node_put(np);
257 258
258 if (!rmem || !rmem->ops || !rmem->ops->device_init)259 if (!rmem || !rmem->ops || !rmem->ops->device_init)
259 return;260 return -EINVAL;
261
262 ret = rmem->ops->device_init(rmem, dev);
263 if (ret == 0)
264 dev_info(dev, "assigned reserved memory node %s\n", rmem->name);
260 265
261 rmem->ops->device_init(rmem, dev);266 return ret;
262 dev_info(dev, "assigned reserved memory node %s\n", rmem->name);
263}267}
264 268
265/**269/**
include/linux/of_reserved_mem.h+6−3
@@ -16,7 +16,7 @@ struct reserved_mem { · 15 unmodified lines
16};16};
17 17
18struct reserved_mem_ops {18struct reserved_mem_ops {
19 void (*device_init)(struct reserved_mem *rmem,19 int (*device_init)(struct reserved_mem *rmem,
20 struct device *dev);20 struct device *dev);
21 void (*device_release)(struct reserved_mem *rmem,21 void (*device_release)(struct reserved_mem *rmem,
22 struct device *dev);22 struct device *dev);
@@ -28,14 +28,17 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); · 5 unmodified lines
28 _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)28 _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)
29 29
30#ifdef CONFIG_OF_RESERVED_MEM30#ifdef CONFIG_OF_RESERVED_MEM
31void of_reserved_mem_device_init(struct device *dev);31int of_reserved_mem_device_init(struct device *dev);
32void of_reserved_mem_device_release(struct device *dev);32void of_reserved_mem_device_release(struct device *dev);
33 33
34void fdt_init_reserved_mem(void);34void fdt_init_reserved_mem(void);
35void fdt_reserved_mem_save_node(unsigned long node, const char *uname,35void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
36 phys_addr_t base, phys_addr_t size);36 phys_addr_t base, phys_addr_t size);
37#else37#else
38static inline void of_reserved_mem_device_init(struct device *dev) { }38static inline int of_reserved_mem_device_init(struct device *dev)
39{
40 return -ENOSYS;
41}
39static inline void of_reserved_mem_device_release(struct device *pdev) { }42static inline void of_reserved_mem_device_release(struct device *pdev) { }
40 43
41static inline void fdt_init_reserved_mem(void) { }44static inline void fdt_init_reserved_mem(void) { }