History

of: reserved-memory: Support lookup of regions by name

Add support for looking up memory regions by name. This looks up the given name in the newly introduced memory-region-names property and returns the memory region at the corresponding index in the memory- region(s) property.

Thierry Reding committed 6 years ago

Commit 0da0e311 parent 8f3d9f32 files · +30 −0Browse files

Unified · Split

2 files
  1. drivers/of/of_reserved_mem.c +19 −0
  2. include/linux/of_reserved_mem.h +11 −0
drivers/of/of_reserved_mem.c+19−0
@@ -357,6 +357,25 @@ int of_reserved_mem_device_init_by_idx(struct device *dev, · 356 unmodified lines
357}357}
358EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_by_idx);358EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_by_idx);
359 359
360/**
361 * of_reserved_mem_device_init_by_name() - assign named reserved memory region
362 * to given device
363 * @dev: pointer to the device to configure
364 * @np: pointer to the device node with 'memory-region' property
365 * @name: name of the selected memory region
366 *
367 * Returns: 0 on success or a negative error-code on failure.
368 */
369int of_reserved_mem_device_init_by_name(struct device *dev,
370 struct device_node *np,
371 const char *name)
372{
373 int idx = of_property_match_string(np, "memory-region-names", name);
374
375 return of_reserved_mem_device_init_by_idx(dev, np, idx);
376}
377EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_by_name);
378
360/**379/**
361 * of_reserved_mem_device_release() - release reserved memory device structures380 * of_reserved_mem_device_release() - release reserved memory device structures
362 * @dev: Pointer to the device to deconfigure381 * @dev: Pointer to the device to deconfigure
include/linux/of_reserved_mem.h+11−0
@@ -33,6 +33,9 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); · 32 unmodified lines
33 33
34int of_reserved_mem_device_init_by_idx(struct device *dev,34int of_reserved_mem_device_init_by_idx(struct device *dev,
35 struct device_node *np, int idx);35 struct device_node *np, int idx);
36int of_reserved_mem_device_init_by_name(struct device *dev,
37 struct device_node *np,
38 const char *name);
36void of_reserved_mem_device_release(struct device *dev);39void of_reserved_mem_device_release(struct device *dev);
37 40
38void fdt_init_reserved_mem(void);41void fdt_init_reserved_mem(void);
@@ -45,6 +48,14 @@ static inline int of_reserved_mem_device_init_by_idx(struct device *dev, · 6 unmodified lines
45{48{
46 return -ENOSYS;49 return -ENOSYS;
47}50}
51
52static inline int of_reserved_mem_device_init_by_name(struct device *dev,
53 struct device_node *np,
54 const char *name)
55{
56 return -ENOSYS;
57}
58
48static inline void of_reserved_mem_device_release(struct device *pdev) { }59static inline void of_reserved_mem_device_release(struct device *pdev) { }
49 60
50static inline void fdt_init_reserved_mem(void) { }61static inline void fdt_init_reserved_mem(void) { }