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
7 * Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
9 #ifndef _ASM_IA64_SN_DMAMAP_H
10 #define _ASM_IA64_SN_DMAMAP_H
12 #include <asm/sn/sv.h>
19 * Definitions for allocating, freeing, and using DMA maps
26 #define DMA_A24VME 1 /* Challenge/Onyx only */
27 #define DMA_A32VME 2 /* Challenge/Onyx only */
28 #define DMA_A64VME 3 /* SN0/Racer */
32 #define DMA_PCI32 5 /* SN0/Racer */
33 #define DMA_PCI64 6 /* SN0/Racer */
36 * DMA map structure as returned by dma_mapalloc()
38 typedef struct dmamap {
39 int dma_type; /* Map type (see above) */
40 int dma_adap; /* I/O adapter */
41 int dma_index; /* Beginning map register to use */
42 int dma_size; /* Number of map registers to use */
43 paddr_t dma_addr; /* Corresponding bus addr for A24/A32 */
44 caddr_t dma_virtaddr; /* Beginning virtual address that is mapped */
50 * Prototypes of exported functions
52 extern dmamap_t *dma_mapalloc(int, int, int, int);
53 extern void dma_mapfree(dmamap_t *);
54 extern int dma_map(dmamap_t *, caddr_t, int);
55 extern int dma_map2(dmamap_t *, caddr_t, caddr_t, int);
56 extern paddr_t dma_mapaddr(dmamap_t *, caddr_t);
58 extern int dma_mapbp(dmamap_t *, buf_t *, int);
60 extern int dma_map_alenlist(dmamap_t *, struct alenlist_s *, size_t);
61 extern uint ev_kvtoiopnum(caddr_t);
64 * These variables are defined in master.d/kernel
66 extern struct map *a24map[];
67 extern struct map *a32map[];
69 extern int a24_mapsize;
70 extern int a32_mapsize;
72 extern sv_t dmamapout;
78 /* standard flags values for pio_map routines,
79 * including {xtalk,pciio}_dmamap calls.
80 * NOTE: try to keep these in step with PIOMAP flags.
82 #define DMAMAP_FIXED 0x1
83 #define DMAMAP_NOSLEEP 0x2
84 #define DMAMAP_INPLACE 0x4
86 #define DMAMAP_FLAGS 0x7
88 #endif /* _ASM_IA64_SN_DMAMAP_H */