blob: b0115e340fbc129d8dead6329b72bf5a8e1b0ade [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef _SPRD_DMA_H_
4#define _SPRD_DMA_H_
5
6#define SPRD_DMA_REQ_SHIFT 16
7#define SPRD_DMA_FLAGS(req_mode, int_type) \
8 ((req_mode) << SPRD_DMA_REQ_SHIFT | (int_type))
9
10/*
11 * enum sprd_dma_req_mode: define the DMA request mode
12 * @SPRD_DMA_FRAG_REQ: fragment request mode
13 * @SPRD_DMA_BLK_REQ: block request mode
14 * @SPRD_DMA_TRANS_REQ: transaction request mode
15 * @SPRD_DMA_LIST_REQ: link-list request mode
16 *
17 * We have 4 types request mode: fragment mode, block mode, transaction mode
18 * and linklist mode. One transaction can contain several blocks, one block can
19 * contain several fragments. Link-list mode means we can save several DMA
20 * configuration into one reserved memory, then DMA can fetch each DMA
21 * configuration automatically to start transfer.
22 */
23enum sprd_dma_req_mode {
24 SPRD_DMA_FRAG_REQ,
25 SPRD_DMA_BLK_REQ,
26 SPRD_DMA_TRANS_REQ,
27 SPRD_DMA_LIST_REQ,
28};
29
30/*
31 * enum sprd_dma_int_type: define the DMA interrupt type
32 * @SPRD_DMA_NO_INT: do not need generate DMA interrupts.
33 * @SPRD_DMA_FRAG_INT: fragment done interrupt when one fragment request
34 * is done.
35 * @SPRD_DMA_BLK_INT: block done interrupt when one block request is done.
36 * @SPRD_DMA_BLK_FRAG_INT: block and fragment interrupt when one fragment
37 * or one block request is done.
38 * @SPRD_DMA_TRANS_INT: tansaction done interrupt when one transaction
39 * request is done.
40 * @SPRD_DMA_TRANS_FRAG_INT: transaction and fragment interrupt when one
41 * transaction request or fragment request is done.
42 * @SPRD_DMA_TRANS_BLK_INT: transaction and block interrupt when one
43 * transaction request or block request is done.
44 * @SPRD_DMA_LIST_INT: link-list done interrupt when one link-list request
45 * is done.
46 * @SPRD_DMA_CFGERR_INT: configure error interrupt when configuration is
47 * incorrect.
48 */
49enum sprd_dma_int_type {
50 SPRD_DMA_NO_INT,
51 SPRD_DMA_FRAG_INT,
52 SPRD_DMA_BLK_INT,
53 SPRD_DMA_BLK_FRAG_INT,
54 SPRD_DMA_TRANS_INT,
55 SPRD_DMA_TRANS_FRAG_INT,
56 SPRD_DMA_TRANS_BLK_INT,
57 SPRD_DMA_LIST_INT,
58 SPRD_DMA_CFGERR_INT,
59};
60
61#endif