| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef _SPRD_DMA_H_ | |
| #define _SPRD_DMA_H_ | |
| #define SPRD_DMA_REQ_SHIFT 16 | |
| #define SPRD_DMA_FLAGS(req_mode, int_type) \ | |
| ((req_mode) << SPRD_DMA_REQ_SHIFT | (int_type)) | |
| /* | |
| * enum sprd_dma_req_mode: define the DMA request mode | |
| * @SPRD_DMA_FRAG_REQ: fragment request mode | |
| * @SPRD_DMA_BLK_REQ: block request mode | |
| * @SPRD_DMA_TRANS_REQ: transaction request mode | |
| * @SPRD_DMA_LIST_REQ: link-list request mode | |
| * | |
| * We have 4 types request mode: fragment mode, block mode, transaction mode | |
| * and linklist mode. One transaction can contain several blocks, one block can | |
| * contain several fragments. Link-list mode means we can save several DMA | |
| * configuration into one reserved memory, then DMA can fetch each DMA | |
| * configuration automatically to start transfer. | |
| */ | |
| enum sprd_dma_req_mode { | |
| SPRD_DMA_FRAG_REQ, | |
| SPRD_DMA_BLK_REQ, | |
| SPRD_DMA_TRANS_REQ, | |
| SPRD_DMA_LIST_REQ, | |
| }; | |
| /* | |
| * enum sprd_dma_int_type: define the DMA interrupt type | |
| * @SPRD_DMA_NO_INT: do not need generate DMA interrupts. | |
| * @SPRD_DMA_FRAG_INT: fragment done interrupt when one fragment request | |
| * is done. | |
| * @SPRD_DMA_BLK_INT: block done interrupt when one block request is done. | |
| * @SPRD_DMA_BLK_FRAG_INT: block and fragment interrupt when one fragment | |
| * or one block request is done. | |
| * @SPRD_DMA_TRANS_INT: tansaction done interrupt when one transaction | |
| * request is done. | |
| * @SPRD_DMA_TRANS_FRAG_INT: transaction and fragment interrupt when one | |
| * transaction request or fragment request is done. | |
| * @SPRD_DMA_TRANS_BLK_INT: transaction and block interrupt when one | |
| * transaction request or block request is done. | |
| * @SPRD_DMA_LIST_INT: link-list done interrupt when one link-list request | |
| * is done. | |
| * @SPRD_DMA_CFGERR_INT: configure error interrupt when configuration is | |
| * incorrect. | |
| */ | |
| enum sprd_dma_int_type { | |
| SPRD_DMA_NO_INT, | |
| SPRD_DMA_FRAG_INT, | |
| SPRD_DMA_BLK_INT, | |
| SPRD_DMA_BLK_FRAG_INT, | |
| SPRD_DMA_TRANS_INT, | |
| SPRD_DMA_TRANS_FRAG_INT, | |
| SPRD_DMA_TRANS_BLK_INT, | |
| SPRD_DMA_LIST_INT, | |
| SPRD_DMA_CFGERR_INT, | |
| }; | |
| #endif |