Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
plat-samsung
include
plat
dma.h
Go to the documentation of this file.
1
/* arch/arm/plat-samsung/include/plat/dma.h
2
*
3
* Copyright (C) 2003-2006 Simtec Electronics
4
* Ben Dooks <
[email protected]
>
5
*
6
* Samsung S3C DMA support
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License version 2 as
10
* published by the Free Software Foundation.
11
*/
12
13
#ifndef __PLAT_DMA_H
14
#define __PLAT_DMA_H
15
16
#include <
linux/dma-mapping.h
>
17
18
enum
s3c2410_dma_buffresult
{
19
S3C2410_RES_OK
,
20
S3C2410_RES_ERR
,
21
S3C2410_RES_ABORT
22
};
23
24
/* enum s3c2410_chan_op
25
*
26
* operation codes passed to the DMA code by the user, and also used
27
* to inform the current channel owner of any changes to the system state
28
*/
29
30
enum
s3c2410_chan_op
{
31
S3C2410_DMAOP_START
,
32
S3C2410_DMAOP_STOP
,
33
S3C2410_DMAOP_PAUSE
,
34
S3C2410_DMAOP_RESUME
,
35
S3C2410_DMAOP_FLUSH
,
36
S3C2410_DMAOP_TIMEOUT
,
/* internal signal to handler */
37
S3C2410_DMAOP_STARTED
,
/* indicate channel started */
38
};
39
40
struct
s3c2410_dma_client
{
41
char
*
name
;
42
};
43
44
struct
s3c2410_dma_chan
;
45
enum
dma_ch
;
46
47
/* s3c2410_dma_cbfn_t
48
*
49
* buffer callback routine type
50
*/
51
52
typedef
void
(*
s3c2410_dma_cbfn_t
)(
struct
s3c2410_dma_chan
*,
53
void
*
buf
,
int
size
,
54
enum
s3c2410_dma_buffresult
result
);
55
56
typedef
int
(*
s3c2410_dma_opfn_t
)(
struct
s3c2410_dma_chan
*,
57
enum
s3c2410_chan_op
);
58
59
60
61
/* s3c2410_dma_request
62
*
63
* request a dma channel exclusivley
64
*/
65
66
extern
int
s3c2410_dma_request
(
enum
dma_ch
channel
,
67
struct
s3c2410_dma_client
*,
void
*
dev
);
68
69
70
/* s3c2410_dma_ctrl
71
*
72
* change the state of the dma channel
73
*/
74
75
extern
int
s3c2410_dma_ctrl
(
enum
dma_ch
channel
,
enum
s3c2410_chan_op
op
);
76
77
/* s3c2410_dma_setflags
78
*
79
* set the channel's flags to a given state
80
*/
81
82
extern
int
s3c2410_dma_setflags
(
enum
dma_ch
channel
,
83
unsigned
int
flags
);
84
85
/* s3c2410_dma_free
86
*
87
* free the dma channel (will also abort any outstanding operations)
88
*/
89
90
extern
int
s3c2410_dma_free
(
enum
dma_ch
channel
,
struct
s3c2410_dma_client
*);
91
92
/* s3c2410_dma_enqueue
93
*
94
* place the given buffer onto the queue of operations for the channel.
95
* The buffer must be allocated from dma coherent memory, or the Dcache/WB
96
* drained before the buffer is given to the DMA system.
97
*/
98
99
extern
int
s3c2410_dma_enqueue
(
enum
dma_ch
channel
,
void
*
id
,
100
dma_addr_t
data
,
int
size
);
101
102
/* s3c2410_dma_config
103
*
104
* configure the dma channel
105
*/
106
107
extern
int
s3c2410_dma_config
(
enum
dma_ch
channel
,
int
xferunit);
108
109
/* s3c2410_dma_devconfig
110
*
111
* configure the device we're talking to
112
*/
113
114
extern
int
s3c2410_dma_devconfig
(
enum
dma_ch
channel
,
115
enum
dma_data_direction
source
,
unsigned
long
devaddr);
116
117
/* s3c2410_dma_getposition
118
*
119
* get the position that the dma transfer is currently at
120
*/
121
122
extern
int
s3c2410_dma_getposition
(
enum
dma_ch
channel
,
123
dma_addr_t
*
src
,
dma_addr_t
*
dest
);
124
125
extern
int
s3c2410_dma_set_opfn
(
enum
dma_ch
,
s3c2410_dma_opfn_t
rtn);
126
extern
int
s3c2410_dma_set_buffdone_fn
(
enum
dma_ch
,
s3c2410_dma_cbfn_t
rtn);
127
128
#include <
plat/dma-ops.h
>
129
130
#endif
Generated on Thu Jan 10 2013 12:49:29 for Linux Kernel by
1.8.2