root/include/linux/of_dma.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. of_dma_controller_register
  2. of_dma_controller_free
  3. of_dma_router_register
  4. of_dma_request_slave_channel
  5. of_dma_simple_xlate

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * OF helpers for DMA request / controller
   4  *
   5  * Based on of_gpio.h
   6  *
   7  * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
   8  */
   9 
  10 #ifndef __LINUX_OF_DMA_H
  11 #define __LINUX_OF_DMA_H
  12 
  13 #include <linux/of.h>
  14 #include <linux/dmaengine.h>
  15 
  16 struct device_node;
  17 
  18 struct 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 
  29 struct of_dma_filter_info {
  30         dma_cap_mask_t  dma_cap;
  31         dma_filter_fn   filter_fn;
  32 };
  33 
  34 #ifdef CONFIG_DMA_OF
  35 extern 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);
  39 extern void of_dma_controller_free(struct device_node *np);
  40 
  41 extern 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_free
  46 
  47 extern struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
  48                                                      const char *name);
  49 extern struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
  50                 struct of_dma *ofdma);
  51 extern struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,
  52                 struct of_dma *ofdma);
  53 
  54 #else
  55 static 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 
  63 static inline void of_dma_controller_free(struct device_node *np)
  64 {
  65 }
  66 
  67 static 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_free
  76 
  77 static 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 
  83 static 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 NULL
  90 
  91 #endif
  92 
  93 #endif /* __LINUX_OF_DMA_H */

/* [<][>][^][v][top][bottom][index][help] */