linux/include/linux/of_dma.h
<<
>>
Prefs
   1/*
   2 * OF helpers for DMA request / controller
   3 *
   4 * Based on of_gpio.h
   5 *
   6 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License version 2 as
  10 * published by the Free Software Foundation.
  11 */
  12
  13#ifndef __LINUX_OF_DMA_H
  14#define __LINUX_OF_DMA_H
  15
  16#include <linux/of.h>
  17#include <linux/dmaengine.h>
  18
  19struct device_node;
  20
  21struct of_dma {
  22        struct list_head        of_dma_controllers;
  23        struct device_node      *of_node;
  24        struct dma_chan         *(*of_dma_xlate)
  25                                (struct of_phandle_args *, struct of_dma *);
  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_OF
  35extern 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);
  40extern struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
  41                                                     const char *name);
  42extern struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
  43                struct of_dma *ofdma);
  44extern struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,
  45                struct of_dma *ofdma);
  46#else
  47static inline int of_dma_controller_register(struct device_node *np,
  48                struct dma_chan *(*of_dma_xlate)
  49                (struct of_phandle_args *, struct of_dma *),
  50                void *data)
  51{
  52        return -ENODEV;
  53}
  54
  55static inline void of_dma_controller_free(struct device_node *np)
  56{
  57}
  58
  59static inline struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
  60                                                     const char *name)
  61{
  62        return NULL;
  63}
  64
  65static inline struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
  66                struct of_dma *ofdma)
  67{
  68        return NULL;
  69}
  70
  71#define of_dma_xlate_by_chan_id NULL
  72
  73#endif
  74
  75#endif /* __LINUX_OF_DMA_H */
  76