brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · fd706cd Raw
94 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * OF helpers for DMA request / controller4 *5 * Based on of_gpio.h6 *7 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/8 */9 10#ifndef __LINUX_OF_DMA_H11#define __LINUX_OF_DMA_H12 13#include <linux/of.h>14#include <linux/dmaengine.h>15 16struct device_node;17 18struct of_dma {19	struct list_head	of_dma_controllers;20	struct device_node	*of_node;21	struct dma_chan		*(*of_dma_xlate)22				(struct of_phandle_args *, struct of_dma *);23	void			*(*of_dma_route_allocate)24				(struct of_phandle_args *, struct of_dma *);25	struct dma_router	*dma_router;26	void			*of_dma_data;27};28 29struct of_dma_filter_info {30	dma_cap_mask_t	dma_cap;31	dma_filter_fn	filter_fn;32};33 34#ifdef CONFIG_DMA_OF35extern int of_dma_controller_register(struct device_node *np,36		struct dma_chan *(*of_dma_xlate)37		(struct of_phandle_args *, struct of_dma *),38		void *data);39extern void of_dma_controller_free(struct device_node *np);40 41extern int of_dma_router_register(struct device_node *np,42		void *(*of_dma_route_allocate)43		(struct of_phandle_args *, struct of_dma *),44		struct dma_router *dma_router);45#define of_dma_router_free of_dma_controller_free46 47extern struct dma_chan *of_dma_request_slave_channel(struct device_node *np,48						     const char *name);49extern struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,50		struct of_dma *ofdma);51extern struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,52		struct of_dma *ofdma);53 54#else55static inline int of_dma_controller_register(struct device_node *np,56		struct dma_chan *(*of_dma_xlate)57		(struct of_phandle_args *, struct of_dma *),58		void *data)59{60	return -ENODEV;61}62 63static inline void of_dma_controller_free(struct device_node *np)64{65}66 67static inline int of_dma_router_register(struct device_node *np,68		void *(*of_dma_route_allocate)69		(struct of_phandle_args *, struct of_dma *),70		struct dma_router *dma_router)71{72	return -ENODEV;73}74 75#define of_dma_router_free of_dma_controller_free76 77static inline struct dma_chan *of_dma_request_slave_channel(struct device_node *np,78						     const char *name)79{80	return ERR_PTR(-ENODEV);81}82 83static inline struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,84		struct of_dma *ofdma)85{86	return NULL;87}88 89#define of_dma_xlate_by_chan_id NULL90 91#endif92 93#endif /* __LINUX_OF_DMA_H */94