mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
![Mauro Carvalho Chehab](/assets/img/avatar_default.png)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJXefulAAoJEHm+PkMAQRiG6nMH/2O1vcZeOtqmx2yCMUeXyKAT wG88XflXzf3rM7C7TiObEYVf/bbLleJ7saDLEeic7ButD5gyYacIuzylVnrcqfBc vinz4cOw5kvu9DrRkCKdOfiTAgwYtqQW+syJ8ZK4lPQuSxnPAs+F/FKSOpyUF5FN Dngr520KjYKBEtn27W9UDPChFRwQoWAlaOC534eusaArCJtHGHHiuq5TEDn2EIo8 pUw2vwx5JiquSHOY34WLU7r+QoilovCQlUSsBQdLlPjfMB1QFtclPYa+5yEMjkT4 wusOUOfS/zK0rV6KnEdc/SkpiVX5C9WpFiWUOdEeJ5mZ+KijVkaOa9K1EDx8jSM= =7Hwh -----END PGP SIGNATURE----- Merge tag 'v4.7-rc6' into patchwork Linux 4.7-rc6 * tag 'v4.7-rc6': (1245 commits) Linux 4.7-rc6 ovl: warn instead of error if d_type is not supported MIPS: Fix possible corruption of cache mode by mprotect. locks: use file_inode() usb: dwc3: st: Use explicit reset_control_get_exclusive() API phy: phy-stih407-usb: Use explicit reset_control_get_exclusive() API phy: miphy28lp: Inform the reset framework that our reset line may be shared namespace: update event counter when umounting a deleted dentry 9p: use file_dentry() lockd: unregister notifier blocks if the service fails to come up completely ACPI,PCI,IRQ: correct operator precedence fuse: serialize dirops by default drm/i915: Fix missing unlock on error in i915_ppgtt_info() powerpc: Initialise pci_io_base as early as possible mfd: da9053: Fix compiler warning message for uninitialised variable mfd: max77620: Fix FPS switch statements phy: phy-stih407-usb: Inform the reset framework that our reset line may be shared usb: dwc3: st: Inform the reset framework that our reset line may be shared usb: host: ehci-st: Inform the reset framework that our reset line may be shared usb: host: ohci-st: Inform the reset framework that our reset line may be shared ...
75 lines
2.1 KiB
C
75 lines
2.1 KiB
C
#ifndef __OF_RESERVED_MEM_H
|
|
#define __OF_RESERVED_MEM_H
|
|
|
|
#include <linux/device.h>
|
|
|
|
struct of_phandle_args;
|
|
struct reserved_mem_ops;
|
|
|
|
struct reserved_mem {
|
|
const char *name;
|
|
unsigned long fdt_node;
|
|
unsigned long phandle;
|
|
const struct reserved_mem_ops *ops;
|
|
phys_addr_t base;
|
|
phys_addr_t size;
|
|
void *priv;
|
|
};
|
|
|
|
struct reserved_mem_ops {
|
|
int (*device_init)(struct reserved_mem *rmem,
|
|
struct device *dev);
|
|
void (*device_release)(struct reserved_mem *rmem,
|
|
struct device *dev);
|
|
};
|
|
|
|
typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem);
|
|
|
|
#define RESERVEDMEM_OF_DECLARE(name, compat, init) \
|
|
_OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)
|
|
|
|
#ifdef CONFIG_OF_RESERVED_MEM
|
|
|
|
int of_reserved_mem_device_init_by_idx(struct device *dev,
|
|
struct device_node *np, int idx);
|
|
void of_reserved_mem_device_release(struct device *dev);
|
|
|
|
int early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
|
|
phys_addr_t align,
|
|
phys_addr_t start,
|
|
phys_addr_t end,
|
|
bool nomap,
|
|
phys_addr_t *res_base);
|
|
|
|
void fdt_init_reserved_mem(void);
|
|
void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
|
|
phys_addr_t base, phys_addr_t size);
|
|
#else
|
|
static inline int of_reserved_mem_device_init_by_idx(struct device *dev,
|
|
struct device_node *np, int idx)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
static inline void of_reserved_mem_device_release(struct device *pdev) { }
|
|
|
|
static inline void fdt_init_reserved_mem(void) { }
|
|
static inline void fdt_reserved_mem_save_node(unsigned long node,
|
|
const char *uname, phys_addr_t base, phys_addr_t size) { }
|
|
#endif
|
|
|
|
/**
|
|
* of_reserved_mem_device_init() - assign reserved memory region to given device
|
|
* @dev: Pointer to the device to configure
|
|
*
|
|
* This function assigns respective DMA-mapping operations based on the first
|
|
* reserved memory region specified by 'memory-region' property in device tree
|
|
* node of the given device.
|
|
*
|
|
* Returns error code or zero on success.
|
|
*/
|
|
static inline int of_reserved_mem_device_init(struct device *dev)
|
|
{
|
|
return of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
|
|
}
|
|
|
|
#endif /* __OF_RESERVED_MEM_H */
|