home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / mach / dma.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.7 KB  |  58 lines

  1. /*
  2.  *  linux/include/asm-arm/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)(dmach_t, dma_t *);        /* optional */
  19.     void    (*free)(dmach_t, dma_t *);        /* optional */
  20.     void    (*enable)(dmach_t, dma_t *);        /* mandatory */
  21.     void     (*disable)(dmach_t, dma_t *);        /* mandatory */
  22.     int    (*residue)(dmach_t, dma_t *);        /* optional */
  23.     int    (*setspeed)(dmach_t, dma_t *, int);    /* optional */
  24.     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.     dmamode_t    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.     unsigned int    dma_base;    /* Controller base address    */
  44.     int        dma_irq;    /* Controller IRQ        */
  45.     struct scatterlist cur_sg;    /* Current controller buffer    */
  46.     unsigned int    state;
  47.  
  48.     struct dma_ops    *d_ops;
  49. };
  50.  
  51. /* Prototype: void arch_dma_init(dma)
  52.  * Purpose  : Initialise architecture specific DMA
  53.  * Params   : dma - pointer to array of DMA structures
  54.  */
  55. extern void arch_dma_init(dma_t *dma);
  56.  
  57. extern void isa_init_dma(dma_t *dma);
  58.