File Index
Files and directories
Sign in
FILE

of_reserved_mem.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/of_reserved_mem.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#ifndef __OF_RESERVED_MEM_H
  3#define __OF_RESERVED_MEM_H
  4
  5#include <linux/device.h>
  6#include <linux/of.h>
  7
  8struct of_phandle_args;
  9struct reserved_mem_ops;
 10struct resource;
 11
 12struct reserved_mem {
 13	const char			*name;
 14	unsigned long			fdt_node;
 15	const struct reserved_mem_ops	*ops;
 16	phys_addr_t			base;
 17	phys_addr_t			size;
 18	void				*priv;
 19};
 20
 21struct reserved_mem_ops {
 22	int	(*device_init)(struct reserved_mem *rmem,
 23			       struct device *dev);
 24	void	(*device_release)(struct reserved_mem *rmem,
 25				  struct device *dev);
 26};
 27
 28typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem);
 29
 30#ifdef CONFIG_OF_RESERVED_MEM
 31
 32#define RESERVEDMEM_OF_DECLARE(name, compat, init)			\
 33	_OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)
 34
 35int of_reserved_mem_device_init_by_idx(struct device *dev,
 36				       struct device_node *np, int idx);
 37int of_reserved_mem_device_init_by_name(struct device *dev,
 38					struct device_node *np,
 39					const char *name);
 40void of_reserved_mem_device_release(struct device *dev);
 41
 42struct reserved_mem *of_reserved_mem_lookup(struct device_node *np);
 43int of_reserved_mem_region_to_resource(const struct device_node *np,
 44				       unsigned int idx, struct resource *res);
 45int of_reserved_mem_region_to_resource_byname(const struct device_node *np,
 46					      const char *name, struct resource *res);
 47int of_reserved_mem_region_count(const struct device_node *np);
 48
 49#else
 50
 51#define RESERVEDMEM_OF_DECLARE(name, compat, init)			\
 52	_OF_DECLARE_STUB(reservedmem, name, compat, init, reservedmem_of_init_fn)
 53
 54static inline int of_reserved_mem_device_init_by_idx(struct device *dev,
 55					struct device_node *np, int idx)
 56{
 57	return -ENOSYS;
 58}
 59
 60static inline int of_reserved_mem_device_init_by_name(struct device *dev,
 61						      struct device_node *np,
 62						      const char *name)
 63{
 64	return -ENOSYS;
 65}
 66
 67static inline void of_reserved_mem_device_release(struct device *pdev) { }
 68
 69static inline struct reserved_mem *of_reserved_mem_lookup(struct device_node *np)
 70{
 71	return NULL;
 72}
 73
 74static inline int of_reserved_mem_region_to_resource(const struct device_node *np,
 75						     unsigned int idx,
 76						     struct resource *res)
 77{
 78	return -ENOSYS;
 79}
 80
 81static inline int of_reserved_mem_region_to_resource_byname(const struct device_node *np,
 82							    const char *name,
 83							    struct resource *res)
 84{
 85	return -ENOSYS;
 86}
 87
 88static inline int of_reserved_mem_region_count(const struct device_node *np)
 89{
 90	return 0;
 91}
 92#endif
 93
 94/**
 95 * of_reserved_mem_device_init() - assign reserved memory region to given device
 96 * @dev:	Pointer to the device to configure
 97 *
 98 * This function assigns respective DMA-mapping operations based on the first
 99 * reserved memory region specified by 'memory-region' property in device tree
100 * node of the given device.
101 *
102 * Returns error code or zero on success.
103 */
104static inline int of_reserved_mem_device_init(struct device *dev)
105{
106	return of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
107}
108
109#endif /* __OF_RESERVED_MEM_H */
~/ Read-only file preview.