Skip to content

Commit 0da0e31

Browse files
committed
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. Reviewed-by: Rob Herring <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
1 parent 8f3d9f3 commit 0da0e31

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

drivers/of/of_reserved_mem.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,25 @@ int of_reserved_mem_device_init_by_idx(struct device *dev,
357357
}
358358
EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_by_idx);
359359

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+
*/
369+
int 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+
}
377+
EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_by_name);
378+
360379
/**
361380
* of_reserved_mem_device_release() - release reserved memory device structures
362381
* @dev: Pointer to the device to deconfigure

include/linux/of_reserved_mem.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem);
3333

3434
int of_reserved_mem_device_init_by_idx(struct device *dev,
3535
struct device_node *np, int idx);
36+
int of_reserved_mem_device_init_by_name(struct device *dev,
37+
struct device_node *np,
38+
const char *name);
3639
void of_reserved_mem_device_release(struct device *dev);
3740

3841
void fdt_init_reserved_mem(void);
@@ -45,6 +48,14 @@ static inline int of_reserved_mem_device_init_by_idx(struct device *dev,
4548
{
4649
return -ENOSYS;
4750
}
51+
52+
static 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+
4859
static inline void of_reserved_mem_device_release(struct device *pdev) { }
4960

5061
static inline void fdt_init_reserved_mem(void) { }

0 commit comments

Comments
 (0)