dmamap.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

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