Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/xtensa/include/asm/dma.h
26470 views
1
/*
2
* include/asm-xtensa/dma.h
3
*
4
* This file is subject to the terms and conditions of the GNU General Public
5
* License. See the file "COPYING" in the main directory of this archive
6
* for more details.
7
*
8
* Copyright (C) 2003 - 2005 Tensilica Inc.
9
*/
10
11
#ifndef _XTENSA_DMA_H
12
#define _XTENSA_DMA_H
13
14
#include <asm/io.h> /* need byte IO */
15
16
/*
17
* This is only to be defined if we have PC-like DMA.
18
* By default this is not true on an Xtensa processor,
19
* however on boards with a PCI bus, such functionality
20
* might be emulated externally.
21
*
22
* NOTE: there still exists driver code that assumes
23
* this is defined, eg. drivers/sound/soundcard.c (as of 2.4).
24
*/
25
#define MAX_DMA_CHANNELS 8
26
27
/*
28
* The maximum virtual address to which DMA transfers
29
* can be performed on this platform.
30
*
31
* NOTE: This is board (platform) specific, not processor-specific!
32
*
33
* NOTE: This assumes DMA transfers can only be performed on
34
* the section of physical memory contiguously mapped in virtual
35
* space for the kernel. For the Xtensa architecture, this
36
* means the maximum possible size of this DMA area is
37
* the size of the statically mapped kernel segment
38
* (XCHAL_KSEG_{CACHED,BYPASS}_SIZE), ie. 128 MB.
39
*
40
* NOTE: When the entire KSEG area is DMA capable, we subtract
41
* one from the max address so that the virt_to_phys() macro
42
* works correctly on the address (otherwise the address
43
* enters another area, and virt_to_phys() may not return
44
* the value desired).
45
*/
46
47
#ifndef MAX_DMA_ADDRESS
48
#define MAX_DMA_ADDRESS (PAGE_OFFSET + XCHAL_KIO_SIZE - 1)
49
#endif
50
51
/* Reserve and release a DMA channel */
52
extern int request_dma(unsigned int dmanr, const char * device_id);
53
extern void free_dma(unsigned int dmanr);
54
55
#endif
56
57