linux/arch/arm/include/asm/mach/dma.h
<<
>>
Prefs
   1/*
   2 *  arch/arm/include/asm/mach/dma.h
   3 *
   4 *  Copyright (C) 1998-2000 Russell King
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License version 2 as
   8 * published by the Free Software Foundation.
   9 *
  10 *  This header file describes the interface between the generic DMA handler
  11 *  (dma.c) and the architecture-specific DMA backends (dma-*.c)
  12 */
  13
  14struct dma_struct;
  15typedef struct dma_struct dma_t;
  16
  17struct dma_ops {
  18        int     (*request)(unsigned int, dma_t *);              /* optional */
  19        void    (*free)(unsigned int, dma_t *);                 /* optional */
  20        void    (*enable)(unsigned int, dma_t *);               /* mandatory */
  21        void    (*disable)(unsigned int, dma_t *);              /* mandatory */
  22        int     (*residue)(unsigned int, dma_t *);              /* optional */
  23        int     (*setspeed)(unsigned int, dma_t *, int);        /* optional */
  24        const char *type;
  25};
  26
  27struct dma_struct {
  28        void            *addr;          /* single DMA address           */
  29        unsigned long   count;          /* single DMA size              */
  30        struct scatterlist buf;         /* single DMA                   */
  31        int             sgcount;        /* number of DMA SG             */
  32        struct scatterlist *sg;         /* DMA Scatter-Gather List      */
  33
  34        unsigned int    active:1;       /* Transfer active              */
  35        unsigned int    invalid:1;      /* Address/Count changed        */
  36
  37        unsigned int    dma_mode;       /* DMA mode                     */
  38        int             speed;          /* DMA speed                    */
  39
  40        unsigned int    lock;           /* Device is allocated          */
  41        const char      *device_id;     /* Device name                  */
  42
  43        const struct dma_ops *d_ops;
  44};
  45
  46/*
  47 * isa_dma_add - add an ISA-style DMA channel
  48 */
  49extern int isa_dma_add(unsigned int, dma_t *dma);
  50
  51/*
  52 * Add the ISA DMA controller.  Always takes channels 0-7.
  53 */
  54extern void isa_init_dma(void);
  55