xref: /optee_os/core/include/drivers/zynqmp_csudma.h (revision 777da538ab49f4b6acd8df4b5dae6e84e4938d6b)
1*777da538SJorge Ramirez-Ortiz /* SPDX-License-Identifier: BSD-2-Clause */
2*777da538SJorge Ramirez-Ortiz /*
3*777da538SJorge Ramirez-Ortiz  * Copyright (C) Foundries Ltd. 2021
4*777da538SJorge Ramirez-Ortiz  * Author: Jorge Ramirez <jorge@foundries.io>
5*777da538SJorge Ramirez-Ortiz  */
6*777da538SJorge Ramirez-Ortiz 
7*777da538SJorge Ramirez-Ortiz #ifndef __DRIVERS_ZYNQMP_CSUDMA_H_
8*777da538SJorge Ramirez-Ortiz #define __DRIVERS_ZYNQMP_CSUDMA_H_
9*777da538SJorge Ramirez-Ortiz 
10*777da538SJorge Ramirez-Ortiz #include <drivers/zynqmp_csu.h>
11*777da538SJorge Ramirez-Ortiz #include <tee_api_types.h>
12*777da538SJorge Ramirez-Ortiz #include <types_ext.h>
13*777da538SJorge Ramirez-Ortiz 
14*777da538SJorge Ramirez-Ortiz #define ZYNQMP_CSUDMA_ALIGN			64
15*777da538SJorge Ramirez-Ortiz #define __aligned_csudma			__aligned(ZYNQMP_CSUDMA_ALIGN)
16*777da538SJorge Ramirez-Ortiz 
17*777da538SJorge Ramirez-Ortiz #define ZYNQMP_CSUDMA_MIN_SIZE			16
18*777da538SJorge Ramirez-Ortiz #define ZYNQMP_CSUDMA_DONE			BIT(0)
19*777da538SJorge Ramirez-Ortiz 
20*777da538SJorge Ramirez-Ortiz enum zynqmp_csudma_channel {
21*777da538SJorge Ramirez-Ortiz 	ZYNQMP_CSUDMA_SRC_CHANNEL = 0,
22*777da538SJorge Ramirez-Ortiz 	ZYNQMP_CSUDMA_DST_CHANNEL
23*777da538SJorge Ramirez-Ortiz };
24*777da538SJorge Ramirez-Ortiz 
25*777da538SJorge Ramirez-Ortiz TEE_Result zynqmp_csudma_transfer(enum zynqmp_csudma_channel channel,
26*777da538SJorge Ramirez-Ortiz 				  void *address, size_t len, uint8_t notify);
27*777da538SJorge Ramirez-Ortiz TEE_Result zynqmp_csudma_sync(enum zynqmp_csudma_channel channel);
28*777da538SJorge Ramirez-Ortiz TEE_Result zynqmp_csudma_prepare(void);
29*777da538SJorge Ramirez-Ortiz void zynqmp_csudma_unprepare(void);
30*777da538SJorge Ramirez-Ortiz 
31*777da538SJorge Ramirez-Ortiz #endif
32