dmamap.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Colin Ngam
  9.  */
  10. #ifndef _ASM_SN_DMAMAP_H
  11. #define _ASM_SN_DMAMAP_H
  12. #include <asm/sn/sv.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17.  * Definitions for allocating, freeing, and using DMA maps
  18.  */
  19. /*
  20.  * DMA map types
  21.  */
  22. #define DMA_SCSI 0
  23. #define DMA_A24VME 1 /* Challenge/Onyx only  */
  24. #define DMA_A32VME 2 /* Challenge/Onyx only  */
  25. #define DMA_A64VME 3 /* SN0/Racer */
  26. #define DMA_EISA 4
  27. #define DMA_PCI32 5 /* SN0/Racer  */
  28. #define DMA_PCI64 6 /* SN0/Racer  */
  29. /*
  30.  * DMA map structure as returned by dma_mapalloc()
  31.  */
  32. typedef struct dmamap {
  33. int dma_type; /* Map type (see above) */
  34. int dma_adap; /* I/O adapter */
  35. int dma_index; /* Beginning map register to use */
  36. int dma_size; /* Number of map registers to use */
  37. paddr_t dma_addr; /* Corresponding bus addr for A24/A32 */
  38. caddr_t dma_virtaddr; /* Beginning virtual address that is mapped */
  39. } dmamap_t;
  40. struct alenlist_s;
  41. /*
  42.  * Prototypes of exported functions
  43.  */
  44. extern dmamap_t *dma_mapalloc(int, int, int, int);
  45. extern void dma_mapfree(dmamap_t *);
  46. extern int dma_map(dmamap_t *, caddr_t, int);
  47. extern int dma_map2(dmamap_t *, caddr_t, caddr_t, int);
  48. extern paddr_t dma_mapaddr(dmamap_t *, caddr_t);
  49. #ifdef LATER
  50. extern int dma_mapbp(dmamap_t *, buf_t *, int);
  51. #endif
  52. extern int dma_map_alenlist(dmamap_t *, struct alenlist_s *, size_t);
  53. extern uint ev_kvtoiopnum(caddr_t);
  54. /*
  55.  * These variables are defined in master.d/kernel
  56.  */
  57. extern struct map *a24map[];
  58. extern struct map *a32map[];
  59. extern int a24_mapsize;
  60. extern int a32_mapsize;
  61. extern lock_t dmamaplock;
  62. extern sv_t dmamapout;
  63. #ifdef __cplusplus
  64. }
  65. #endif
  66. /* standard flags values for pio_map routines,
  67.  * including {xtalk,pciio}_dmamap calls.
  68.  * NOTE: try to keep these in step with PIOMAP flags.
  69.  */
  70. #define DMAMAP_FIXED 0x1
  71. #define DMAMAP_NOSLEEP 0x2
  72. #define DMAMAP_INPLACE 0x4
  73. #define DMAMAP_FLAGS 0x7
  74. #endif /* _ASM_SN_DMAMAP_H */