xref: /optee_os/core/include/drivers/clk_qcom.h (revision ed9b177e198fdd4423c69ace34e6d362717d25a1)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2025, Linaro Limited
4  * Copyright (c) 2026, Qualcomm Technologies, Inc. and/or its subsidiaries.
5  */
6 
7 #ifndef _CLK_QCOM_H_
8 #define _CLK_QCOM_H_
9 
10 #include <stdint.h>
11 #include <tee_api_types.h>
12 
13 #define REG_POLL_TIMEOUT(_addr, _timeout_us, _delay_us, _retp, _match)	\
14 	do {								\
15 		uint32_t __val;						\
16 		int __rc;						\
17 									\
18 		__rc = IO_READ32_POLL_TIMEOUT(_addr, __val,		\
19 					     (_match)(__val),		\
20 					     _delay_us, _timeout_us);	\
21 		*(_retp) = __rc ? -1 : 0;				\
22 	} while (0)
23 
24 enum qcom_clk_group {
25 	QCOM_CLKS_WPSS,
26 	QCOM_CLKS_TURING,
27 	QCOM_CLKS_LPASS,
28 	QCOM_CLKS_MAX,
29 };
30 
31 TEE_Result qcom_clock_enable(enum qcom_clk_group group);
32 TEE_Result qcom_clock_enable_cbc(vaddr_t cbcr);
33 TEE_Result qcom_clock_enable_pas(enum qcom_clk_group group);
34 
35 #endif /* _CLK_QCOM_H_ */
36