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
223223 #undef pr_fmt
224224 #define pr_fmt(fmt) fmt
225225
226−static void rmem_cma_device_init(struct reserved_mem *rmem, struct device *dev)
226+static int rmem_cma_device_init(struct reserved_mem *rmem, struct device *dev)
227227 {
228228 dev_set_cma_area(dev, rmem->priv);
229+ return 0;
229230 }
230231
231232 static 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
243243 * This function assign memory region pointed by "memory-region" device tree
244244 * property to the given device.
245245 */
246−void of_reserved_mem_device_init(struct device *dev)
246+int of_reserved_mem_device_init(struct device *dev)
247247 {
248248 struct reserved_mem *rmem;
249249 struct device_node *np;
250+ int ret;
250251
251252 np = of_parse_phandle(dev->of_node, "memory-region", 0);
252253 if (!np)
253− return;
254+ return -ENODEV;
254255
255256 rmem = __find_rmem(np);
256257 of_node_put(np);
257258
258259 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);
260265
261− rmem->ops->device_init(rmem, dev);
262− dev_info(dev, "assigned reserved memory node %s\n", rmem->name);
266+ return ret;
263267 }
264268
265269 /**
include/linux/of_reserved_mem.h+6−3
@@ -16,7 +16,7 @@ struct reserved_mem { · 15 unmodified lines
1616 };
1717
1818 struct reserved_mem_ops {
19− void (*device_init)(struct reserved_mem *rmem,
19+ int (*device_init)(struct reserved_mem *rmem,
2020 struct device *dev);
2121 void (*device_release)(struct reserved_mem *rmem,
2222 struct device *dev);
@@ -28,14 +28,17 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); · 5 unmodified lines
2828 _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)
2929
3030 #ifdef CONFIG_OF_RESERVED_MEM
31−void of_reserved_mem_device_init(struct device *dev);
31+int of_reserved_mem_device_init(struct device *dev);
3232 void of_reserved_mem_device_release(struct device *dev);
3333
3434 void fdt_init_reserved_mem(void);
3535 void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
3636 phys_addr_t base, phys_addr_t size);
3737 #else
38−static inline void of_reserved_mem_device_init(struct device *dev) { }
38+static inline int of_reserved_mem_device_init(struct device *dev)
39+{
40+ return -ENOSYS;
41+}
3942 static inline void of_reserved_mem_device_release(struct device *pdev) { }
4043
4144 static inline void fdt_init_reserved_mem(void) { }