Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 
 14 struct dma_struct;
 15 typedef struct dma_struct dma_t;
 16 
 17 struct 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 
 27 struct 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  */
 49 extern int isa_dma_add(unsigned int, dma_t *dma);
 50 
 51 /*
 52  * Add the ISA DMA controller.  Always takes channels 0-7.
 53  */
 54 extern void isa_init_dma(void);
 55 
  This page was automatically generated by the LXR engine.