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.
Unified · Split
| @@ -357,6 +357,25 @@ int of_reserved_mem_device_init_by_idx(struct device *dev, · 356 unmodified lines | ||
| 357 | 357 | } |
| 358 | 358 | EXPORT_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 | + */ | |
| 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 | + | |
| 360 | 379 | /** |
| 361 | 380 | * of_reserved_mem_device_release() - release reserved memory device structures |
| 362 | 381 | * @dev: Pointer to the device to deconfigure |
| @@ -33,6 +33,9 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); · 32 unmodified lines | ||
| 33 | 33 | |
| 34 | 34 | int of_reserved_mem_device_init_by_idx(struct device *dev, |
| 35 | 35 | 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); | |
| 36 | 39 | void of_reserved_mem_device_release(struct device *dev); |
| 37 | 40 | |
| 38 | 41 | void 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 | 49 | return -ENOSYS; |
| 47 | 50 | } |
| 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 | + | |
| 48 | 59 | static inline void of_reserved_mem_device_release(struct device *pdev) { } |
| 49 | 60 | |
| 50 | 61 | static inline void fdt_init_reserved_mem(void) { } |