xref: /rk3399_ARM-atf/plat/xilinx/zynqmp/pm_service/pm_api_clock.h (revision c48c11e7b7a04e2647e96df7ad7630020a494831)
1caae497dSRajan Vaja /*
2619bc13eSMichal Simek  * Copyright (c) 2018-2020, Arm Limited and Contributors. All rights reserved.
3*8ce93ec9SRonak Jain  * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved.
4caae497dSRajan Vaja  *
5caae497dSRajan Vaja  * SPDX-License-Identifier: BSD-3-Clause
6caae497dSRajan Vaja  */
7caae497dSRajan Vaja 
8caae497dSRajan Vaja /*
9caae497dSRajan Vaja  * ZynqMP system level PM-API functions for clock control.
10caae497dSRajan Vaja  */
11caae497dSRajan Vaja 
12c3cf06f1SAntonio Nino Diaz #ifndef PM_API_CLOCK_H
13c3cf06f1SAntonio Nino Diaz #define PM_API_CLOCK_H
14caae497dSRajan Vaja 
1509d40e0eSAntonio Nino Diaz #include <lib/utils_def.h>
1609d40e0eSAntonio Nino Diaz 
17caae497dSRajan Vaja #include "pm_common.h"
18caae497dSRajan Vaja 
19f535068cSPeter Robinson #define CLK_NAME_LEN		(16U)
2015dc3e4fSHariBabu Gattem #define MAX_PARENTS		(100U)
211a3f02b5SRajan Vaja #define CLK_NA_PARENT		-1
221a3f02b5SRajan Vaja #define CLK_DUMMY_PARENT	-2
231a3f02b5SRajan Vaja 
241a3f02b5SRajan Vaja /* Flags for parent id */
2515dc3e4fSHariBabu Gattem #define PARENT_CLK_SELF		(0U)
2615dc3e4fSHariBabu Gattem #define PARENT_CLK_NODE1	(1U)
2715dc3e4fSHariBabu Gattem #define PARENT_CLK_NODE2	(2U)
2815dc3e4fSHariBabu Gattem #define PARENT_CLK_NODE3	(3U)
2915dc3e4fSHariBabu Gattem #define PARENT_CLK_NODE4	(4U)
3015dc3e4fSHariBabu Gattem #define PARENT_CLK_EXTERNAL	(5U)
3115dc3e4fSHariBabu Gattem #define PARENT_CLK_MIO0_MIO77	(6U)
321a3f02b5SRajan Vaja 
331a3f02b5SRajan Vaja #define CLK_SET_RATE_GATE	BIT(0) /* must be gated across rate change */
341a3f02b5SRajan Vaja #define CLK_SET_PARENT_GATE	BIT(1) /* must be gated across re-parent */
351a3f02b5SRajan Vaja #define CLK_SET_RATE_PARENT	BIT(2) /* propagate rate change up one level */
361a3f02b5SRajan Vaja #define CLK_IGNORE_UNUSED	BIT(3) /* do not gate even if unused */
371a3f02b5SRajan Vaja /* unused */
381a3f02b5SRajan Vaja #define CLK_IS_BASIC		BIT(5) /* Basic clk, can't do a to_clk_foo() */
391a3f02b5SRajan Vaja #define CLK_GET_RATE_NOCACHE	BIT(6) /* do not use the cached clk rate */
401a3f02b5SRajan Vaja #define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate change */
411a3f02b5SRajan Vaja #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */
421a3f02b5SRajan Vaja #define CLK_RECALC_NEW_RATES	BIT(9) /* recalc rates after notifications */
431a3f02b5SRajan Vaja #define CLK_SET_RATE_UNGATE	BIT(10) /* clock needs to run to set rate */
441a3f02b5SRajan Vaja #define CLK_IS_CRITICAL		BIT(11) /* do not gate, ever */
451a3f02b5SRajan Vaja /* parents need enable during gate/ungate, set rate and re-parent */
461a3f02b5SRajan Vaja #define CLK_OPS_PARENT_ENABLE	BIT(12)
471a3f02b5SRajan Vaja 
481a3f02b5SRajan Vaja #define CLK_DIVIDER_ONE_BASED		BIT(0)
491a3f02b5SRajan Vaja #define CLK_DIVIDER_POWER_OF_TWO	BIT(1)
501a3f02b5SRajan Vaja #define CLK_DIVIDER_ALLOW_ZERO		BIT(2)
511a3f02b5SRajan Vaja #define CLK_DIVIDER_HIWORD_MASK		BIT(3)
521a3f02b5SRajan Vaja #define CLK_DIVIDER_ROUND_CLOSEST	BIT(4)
531a3f02b5SRajan Vaja #define CLK_DIVIDER_READ_ONLY		BIT(5)
541a3f02b5SRajan Vaja #define CLK_DIVIDER_MAX_AT_ZERO		BIT(6)
5574cf2158SRajan Vaja #define CLK_FRAC		BIT(8)
561a3f02b5SRajan Vaja 
571a3f02b5SRajan Vaja #define END_OF_CLK     "END_OF_CLK"
581a3f02b5SRajan Vaja 
5937e1a68eSJolly Shah //CLock Ids
601e3fb352SJolly Shah enum clock_id {
61cdb62114SHariBabu Gattem 	CLK_IOPLL = (0U),
62cdb62114SHariBabu Gattem 	CLK_RPLL  = (1U),
63cdb62114SHariBabu Gattem 	CLK_APLL  = (2U),
64cdb62114SHariBabu Gattem 	CLK_DPLL  = (3U),
65cdb62114SHariBabu Gattem 	CLK_VPLL  = (4U),
66cdb62114SHariBabu Gattem 	CLK_IOPLL_TO_FPD = (5U),
67cdb62114SHariBabu Gattem 	CLK_RPLL_TO_FPD = (6U),
68cdb62114SHariBabu Gattem 	CLK_APLL_TO_LPD = (7U),
69cdb62114SHariBabu Gattem 	CLK_DPLL_TO_LPD = (8U),
70cdb62114SHariBabu Gattem 	CLK_VPLL_TO_LPD = (9U),
71cdb62114SHariBabu Gattem 	CLK_ACPU = (10U),
72cdb62114SHariBabu Gattem 	CLK_ACPU_HALF = (11U),
73cdb62114SHariBabu Gattem 	CLK_DBG_FPD = (12U),
74cdb62114SHariBabu Gattem 	CLK_DBG_LPD = (13U),
75cdb62114SHariBabu Gattem 	CLK_DBG_TRACE = (14U),
76cdb62114SHariBabu Gattem 	CLK_DBG_TSTMP = (15U),
77cdb62114SHariBabu Gattem 	CLK_DP_VIDEO_REF = (16U),
78cdb62114SHariBabu Gattem 	CLK_DP_AUDIO_REF = (17U),
79cdb62114SHariBabu Gattem 	CLK_DP_STC_REF = (18U),
80cdb62114SHariBabu Gattem 	CLK_GDMA_REF = (19U),
81cdb62114SHariBabu Gattem 	CLK_DPDMA_REF = (20U),
82cdb62114SHariBabu Gattem 	CLK_DDR_REF = (21U),
83cdb62114SHariBabu Gattem 	CLK_SATA_REF = (22U),
84cdb62114SHariBabu Gattem 	CLK_PCIE_REF = (23U),
85cdb62114SHariBabu Gattem 	CLK_GPU_REF = (24U),
86cdb62114SHariBabu Gattem 	CLK_GPU_PP0_REF = (25U),
87cdb62114SHariBabu Gattem 	CLK_GPU_PP1_REF = (26U),
88cdb62114SHariBabu Gattem 	CLK_TOPSW_MAIN = (27U),
89cdb62114SHariBabu Gattem 	CLK_TOPSW_LSBUS = (28U),
90cdb62114SHariBabu Gattem 	CLK_GTGREF0_REF = (29U),
91cdb62114SHariBabu Gattem 	CLK_LPD_SWITCH = (30U),
92cdb62114SHariBabu Gattem 	CLK_LPD_LSBUS = (31U),
93cdb62114SHariBabu Gattem 	CLK_USB0_BUS_REF = (32U),
94cdb62114SHariBabu Gattem 	CLK_USB1_BUS_REF = (33U),
95cdb62114SHariBabu Gattem 	CLK_USB3_DUAL_REF = (34U),
96cdb62114SHariBabu Gattem 	CLK_USB0 = (35U),
97cdb62114SHariBabu Gattem 	CLK_USB1 = (36U),
98cdb62114SHariBabu Gattem 	CLK_CPU_R5 = (37U),
99cdb62114SHariBabu Gattem 	CLK_CPU_R5_CORE = (38U),
100cdb62114SHariBabu Gattem 	CLK_CSU_SPB = (39U),
101cdb62114SHariBabu Gattem 	CLK_CSU_PLL = (40U),
102cdb62114SHariBabu Gattem 	CLK_PCAP = (41U),
103cdb62114SHariBabu Gattem 	CLK_IOU_SWITCH = (42U),
104cdb62114SHariBabu Gattem 	CLK_GEM_TSU_REF = (43U),
105cdb62114SHariBabu Gattem 	CLK_GEM_TSU = (44U),
106cdb62114SHariBabu Gattem 	CLK_GEM0_TX = (45U),
107cdb62114SHariBabu Gattem 	CLK_GEM1_TX = (46U),
108cdb62114SHariBabu Gattem 	CLK_GEM2_TX = (47U),
109cdb62114SHariBabu Gattem 	CLK_GEM3_TX = (48U),
110cdb62114SHariBabu Gattem 	CLK_GEM0_RX = (49U),
111cdb62114SHariBabu Gattem 	CLK_GEM1_RX = (50U),
112cdb62114SHariBabu Gattem 	CLK_GEM2_RX = (51U),
113cdb62114SHariBabu Gattem 	CLK_GEM3_RX = (52U),
114cdb62114SHariBabu Gattem 	CLK_QSPI_REF = (53U),
115cdb62114SHariBabu Gattem 	CLK_SDIO0_REF = (54U),
116cdb62114SHariBabu Gattem 	CLK_SDIO1_REF = (55U),
117cdb62114SHariBabu Gattem 	CLK_UART0_REF = (56U),
118cdb62114SHariBabu Gattem 	CLK_UART1_REF = (57U),
119cdb62114SHariBabu Gattem 	CLK_SPI0_REF = (58U),
120cdb62114SHariBabu Gattem 	CLK_SPI1_REF = (59U),
121cdb62114SHariBabu Gattem 	CLK_NAND_REF = (60U),
122cdb62114SHariBabu Gattem 	CLK_I2C0_REF = (61U),
123cdb62114SHariBabu Gattem 	CLK_I2C1_REF = (62U),
124cdb62114SHariBabu Gattem 	CLK_CAN0_REF = (63U),
125cdb62114SHariBabu Gattem 	CLK_CAN1_REF = (64U),
126cdb62114SHariBabu Gattem 	CLK_CAN0 = (65U),
127cdb62114SHariBabu Gattem 	CLK_CAN1 = (66U),
128cdb62114SHariBabu Gattem 	CLK_DLL_REF = (67U),
129cdb62114SHariBabu Gattem 	CLK_ADMA_REF = (68U),
130cdb62114SHariBabu Gattem 	CLK_TIMESTAMP_REF = (69U),
131cdb62114SHariBabu Gattem 	CLK_AMS_REF = (70U),
132cdb62114SHariBabu Gattem 	CLK_PL0_REF = (71U),
133cdb62114SHariBabu Gattem 	CLK_PL1_REF = (72U),
134cdb62114SHariBabu Gattem 	CLK_PL2_REF = (73U),
135cdb62114SHariBabu Gattem 	CLK_PL3_REF = (74U),
136cdb62114SHariBabu Gattem 	CLK_FPD_WDT = (75U),
137cdb62114SHariBabu Gattem 	CLK_IOPLL_INT = (76U),
138cdb62114SHariBabu Gattem 	CLK_IOPLL_PRE_SRC = (77U),
139cdb62114SHariBabu Gattem 	CLK_IOPLL_HALF = (78U),
140cdb62114SHariBabu Gattem 	CLK_IOPLL_INT_MUX = (79U),
141cdb62114SHariBabu Gattem 	CLK_IOPLL_POST_SRC = (80U),
142cdb62114SHariBabu Gattem 	CLK_RPLL_INT = (81U),
143cdb62114SHariBabu Gattem 	CLK_RPLL_PRE_SRC = (82U),
144cdb62114SHariBabu Gattem 	CLK_RPLL_HALF = (83U),
145cdb62114SHariBabu Gattem 	CLK_RPLL_INT_MUX = (84U),
146cdb62114SHariBabu Gattem 	CLK_RPLL_POST_SRC = (85U),
147cdb62114SHariBabu Gattem 	CLK_APLL_INT = (86U),
148cdb62114SHariBabu Gattem 	CLK_APLL_PRE_SRC = (87U),
149cdb62114SHariBabu Gattem 	CLK_APLL_HALF = (88U),
150cdb62114SHariBabu Gattem 	CLK_APLL_INT_MUX = (89U),
151cdb62114SHariBabu Gattem 	CLK_APLL_POST_SRC = (90U),
152cdb62114SHariBabu Gattem 	CLK_DPLL_INT = (91U),
153cdb62114SHariBabu Gattem 	CLK_DPLL_PRE_SRC = (92U),
154cdb62114SHariBabu Gattem 	CLK_DPLL_HALF = (93U),
155cdb62114SHariBabu Gattem 	CLK_DPLL_INT_MUX = (94U),
156cdb62114SHariBabu Gattem 	CLK_DPLL_POST_SRC = (95U),
157cdb62114SHariBabu Gattem 	CLK_VPLL_INT = (96U),
158cdb62114SHariBabu Gattem 	CLK_VPLL_PRE_SRC = (97U),
159cdb62114SHariBabu Gattem 	CLK_VPLL_HALF = (98U),
160cdb62114SHariBabu Gattem 	CLK_VPLL_INT_MUX = (99U),
161cdb62114SHariBabu Gattem 	CLK_VPLL_POST_SRC = (100U),
162cdb62114SHariBabu Gattem 	CLK_CAN0_MIO = (101U),
163cdb62114SHariBabu Gattem 	CLK_CAN1_MIO = (102U),
164cdb62114SHariBabu Gattem 	CLK_ACPU_FULL = (103U),
165cdb62114SHariBabu Gattem 	CLK_GEM0_REF = (104U),
166cdb62114SHariBabu Gattem 	CLK_GEM1_REF = (105U),
167cdb62114SHariBabu Gattem 	CLK_GEM2_REF = (106U),
168cdb62114SHariBabu Gattem 	CLK_GEM3_REF = (107U),
169cdb62114SHariBabu Gattem 	CLK_GEM0_REF_UNGATED = (108U),
170cdb62114SHariBabu Gattem 	CLK_GEM1_REF_UNGATED = (109U),
171cdb62114SHariBabu Gattem 	CLK_GEM2_REF_UNGATED = (110U),
172cdb62114SHariBabu Gattem 	CLK_GEM3_REF_UNGATED = (111U),
173cdb62114SHariBabu Gattem 	CLK_LPD_WDT = (112U),
174cdb62114SHariBabu Gattem 	END_OF_OUTPUT_CLKS = (113U),
1751a3f02b5SRajan Vaja };
1761a3f02b5SRajan Vaja 
177cdb62114SHariBabu Gattem #define CLK_MAX_OUTPUT_CLK END_OF_OUTPUT_CLKS
17837e1a68eSJolly Shah 
17937e1a68eSJolly Shah //External clock ids
18037e1a68eSJolly Shah enum {
18137e1a68eSJolly Shah 	EXT_CLK_PSS_REF = END_OF_OUTPUT_CLKS,
182cdb62114SHariBabu Gattem 	EXT_CLK_VIDEO = (114U),
183cdb62114SHariBabu Gattem 	EXT_CLK_PSS_ALT_REF = (115U),
184cdb62114SHariBabu Gattem 	EXT_CLK_AUX_REF = (116U),
185cdb62114SHariBabu Gattem 	EXT_CLK_GT_CRX_REF = (117U),
186cdb62114SHariBabu Gattem 	EXT_CLK_SWDT0 = (118U),
187cdb62114SHariBabu Gattem 	EXT_CLK_SWDT1 = (119U),
188cdb62114SHariBabu Gattem 	EXT_CLK_GEM0_TX_EMIO = (120U),
189cdb62114SHariBabu Gattem 	EXT_CLK_GEM1_TX_EMIO = (121U),
190cdb62114SHariBabu Gattem 	EXT_CLK_GEM2_TX_EMIO = (122U),
191cdb62114SHariBabu Gattem 	EXT_CLK_GEM3_TX_EMIO = (123U),
192cdb62114SHariBabu Gattem 	EXT_CLK_GEM0_RX_EMIO = (124U),
193cdb62114SHariBabu Gattem 	EXT_CLK_GEM1_RX_EMIO = (125U),
194cdb62114SHariBabu Gattem 	EXT_CLK_GEM2_RX_EMIO = (126U),
195cdb62114SHariBabu Gattem 	EXT_CLK_GEM3_RX_EMIO = (127U),
196cdb62114SHariBabu Gattem 	EXT_CLK_MIO50_OR_MIO51 = (128U),
197cdb62114SHariBabu Gattem 	EXT_CLK_MIO0 = (129U),
198cdb62114SHariBabu Gattem 	EXT_CLK_MIO1 = (130U),
199cdb62114SHariBabu Gattem 	EXT_CLK_MIO2 = (131U),
200cdb62114SHariBabu Gattem 	EXT_CLK_MIO3 = (132U),
201cdb62114SHariBabu Gattem 	EXT_CLK_MIO4 = (133U),
202cdb62114SHariBabu Gattem 	EXT_CLK_MIO5 = (134U),
203cdb62114SHariBabu Gattem 	EXT_CLK_MIO6 = (135U),
204cdb62114SHariBabu Gattem 	EXT_CLK_MIO7 = (136U),
205cdb62114SHariBabu Gattem 	EXT_CLK_MIO8 = (137U),
206cdb62114SHariBabu Gattem 	EXT_CLK_MIO9 = (138U),
207cdb62114SHariBabu Gattem 	EXT_CLK_MIO10 = (139U),
208cdb62114SHariBabu Gattem 	EXT_CLK_MIO11 = (140U),
209cdb62114SHariBabu Gattem 	EXT_CLK_MIO12 = (141U),
210cdb62114SHariBabu Gattem 	EXT_CLK_MIO13 = (142U),
211cdb62114SHariBabu Gattem 	EXT_CLK_MIO14 = (143U),
212cdb62114SHariBabu Gattem 	EXT_CLK_MIO15 = (144U),
213cdb62114SHariBabu Gattem 	EXT_CLK_MIO16 = (145U),
214cdb62114SHariBabu Gattem 	EXT_CLK_MIO17 = (146U),
215cdb62114SHariBabu Gattem 	EXT_CLK_MIO18 = (147U),
216cdb62114SHariBabu Gattem 	EXT_CLK_MIO19 = (148U),
217cdb62114SHariBabu Gattem 	EXT_CLK_MIO20 = (149U),
218cdb62114SHariBabu Gattem 	EXT_CLK_MIO21 = (150U),
219cdb62114SHariBabu Gattem 	EXT_CLK_MIO22 = (151U),
220cdb62114SHariBabu Gattem 	EXT_CLK_MIO23 = (152U),
221cdb62114SHariBabu Gattem 	EXT_CLK_MIO24 = (153U),
222cdb62114SHariBabu Gattem 	EXT_CLK_MIO25 = (154U),
223cdb62114SHariBabu Gattem 	EXT_CLK_MIO26 = (155U),
224cdb62114SHariBabu Gattem 	EXT_CLK_MIO27 = (156U),
225cdb62114SHariBabu Gattem 	EXT_CLK_MIO28 = (157U),
226cdb62114SHariBabu Gattem 	EXT_CLK_MIO29 = (158U),
227cdb62114SHariBabu Gattem 	EXT_CLK_MIO30 = (159U),
228cdb62114SHariBabu Gattem 	EXT_CLK_MIO31 = (160U),
229cdb62114SHariBabu Gattem 	EXT_CLK_MIO32 = (161U),
230cdb62114SHariBabu Gattem 	EXT_CLK_MIO33 = (162U),
231cdb62114SHariBabu Gattem 	EXT_CLK_MIO34 = (163U),
232cdb62114SHariBabu Gattem 	EXT_CLK_MIO35 = (164U),
233cdb62114SHariBabu Gattem 	EXT_CLK_MIO36 = (165U),
234cdb62114SHariBabu Gattem 	EXT_CLK_MIO37 = (166U),
235cdb62114SHariBabu Gattem 	EXT_CLK_MIO38 = (167U),
236cdb62114SHariBabu Gattem 	EXT_CLK_MIO39 = (168U),
237cdb62114SHariBabu Gattem 	EXT_CLK_MIO40 = (169U),
238cdb62114SHariBabu Gattem 	EXT_CLK_MIO41 = (170U),
239cdb62114SHariBabu Gattem 	EXT_CLK_MIO42 = (171U),
240cdb62114SHariBabu Gattem 	EXT_CLK_MIO43 = (172U),
241cdb62114SHariBabu Gattem 	EXT_CLK_MIO44 = (173U),
242cdb62114SHariBabu Gattem 	EXT_CLK_MIO45 = (174U),
243cdb62114SHariBabu Gattem 	EXT_CLK_MIO46 = (175U),
244cdb62114SHariBabu Gattem 	EXT_CLK_MIO47 = (176U),
245cdb62114SHariBabu Gattem 	EXT_CLK_MIO48 = (177U),
246cdb62114SHariBabu Gattem 	EXT_CLK_MIO49 = (178U),
247cdb62114SHariBabu Gattem 	EXT_CLK_MIO50 = (179U),
248cdb62114SHariBabu Gattem 	EXT_CLK_MIO51 = (180U),
249cdb62114SHariBabu Gattem 	EXT_CLK_MIO52 = (181U),
250cdb62114SHariBabu Gattem 	EXT_CLK_MIO53 = (182U),
251cdb62114SHariBabu Gattem 	EXT_CLK_MIO54 = (183U),
252cdb62114SHariBabu Gattem 	EXT_CLK_MIO55 = (184U),
253cdb62114SHariBabu Gattem 	EXT_CLK_MIO56 = (185U),
254cdb62114SHariBabu Gattem 	EXT_CLK_MIO57 = (186U),
255cdb62114SHariBabu Gattem 	EXT_CLK_MIO58 = (187U),
256cdb62114SHariBabu Gattem 	EXT_CLK_MIO59 = (188U),
257cdb62114SHariBabu Gattem 	EXT_CLK_MIO60 = (189U),
258cdb62114SHariBabu Gattem 	EXT_CLK_MIO61 = (190U),
259cdb62114SHariBabu Gattem 	EXT_CLK_MIO62 = (191U),
260cdb62114SHariBabu Gattem 	EXT_CLK_MIO63 = (192U),
261cdb62114SHariBabu Gattem 	EXT_CLK_MIO64 = (193U),
262cdb62114SHariBabu Gattem 	EXT_CLK_MIO65 = (194U),
263cdb62114SHariBabu Gattem 	EXT_CLK_MIO66 = (195U),
264cdb62114SHariBabu Gattem 	EXT_CLK_MIO67 = (196U),
265cdb62114SHariBabu Gattem 	EXT_CLK_MIO68 = (197U),
266cdb62114SHariBabu Gattem 	EXT_CLK_MIO69 = (198U),
267cdb62114SHariBabu Gattem 	EXT_CLK_MIO70 = (199U),
268cdb62114SHariBabu Gattem 	EXT_CLK_MIO71 = (200U),
269cdb62114SHariBabu Gattem 	EXT_CLK_MIO72 = (201U),
270cdb62114SHariBabu Gattem 	EXT_CLK_MIO73 = (202U),
271cdb62114SHariBabu Gattem 	EXT_CLK_MIO74 = (203U),
272cdb62114SHariBabu Gattem 	EXT_CLK_MIO75 = (204U),
273cdb62114SHariBabu Gattem 	EXT_CLK_MIO76 = (205U),
274cdb62114SHariBabu Gattem 	EXT_CLK_MIO77 = (206U),
275cdb62114SHariBabu Gattem 	END_OF_CLKS = (207U),
2761a3f02b5SRajan Vaja };
2771a3f02b5SRajan Vaja 
278cdb62114SHariBabu Gattem #define CLK_MAX END_OF_CLKS
2791a3f02b5SRajan Vaja 
28037e1a68eSJolly Shah //CLock types
28137e1a68eSJolly Shah #define CLK_TYPE_OUTPUT 0U
28237e1a68eSJolly Shah #define	CLK_TYPE_EXTERNAL  1U
28337e1a68eSJolly Shah 
28437e1a68eSJolly Shah //Topology types
28537e1a68eSJolly Shah #define TYPE_INVALID 0U
28637e1a68eSJolly Shah #define	TYPE_MUX 1U
28737e1a68eSJolly Shah #define	TYPE_PLL 2U
28837e1a68eSJolly Shah #define	TYPE_FIXEDFACTOR 3U
28937e1a68eSJolly Shah #define	TYPE_DIV1 4U
29037e1a68eSJolly Shah #define	TYPE_DIV2 5U
29137e1a68eSJolly Shah #define	TYPE_GATE 6U
29237e1a68eSJolly Shah 
293bd642ddeSJolly Shah struct pm_pll;
294bd642ddeSJolly Shah struct pm_pll *pm_clock_get_pll(enum clock_id clock_id);
295be48511eSJolly Shah struct pm_pll *pm_clock_get_pll_by_related_clk(enum clock_id clock_id);
296ffa91031SVenkatesh Yadav Abbarapu uint8_t pm_clock_has_div(uint32_t clock_id, enum pm_clock_div_id div_id);
297caae497dSRajan Vaja 
298ffa91031SVenkatesh Yadav Abbarapu void pm_api_clock_get_name(uint32_t clock_id, char *name);
299ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_api_clock_get_num_clocks(uint32_t *nclocks);
300ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_api_clock_get_topology(uint32_t clock_id,
301ffa91031SVenkatesh Yadav Abbarapu 					     uint32_t index,
302caae497dSRajan Vaja 					     uint32_t *topology);
303ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_api_clock_get_fixedfactor_params(uint32_t clock_id,
304caae497dSRajan Vaja 						       uint32_t *mul,
305caae497dSRajan Vaja 						       uint32_t *div);
306ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_api_clock_get_parents(uint32_t clock_id,
307ffa91031SVenkatesh Yadav Abbarapu 					    uint32_t index,
308caae497dSRajan Vaja 					    uint32_t *parents);
309ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_api_clock_get_attributes(uint32_t clock_id,
310caae497dSRajan Vaja 					       uint32_t *attr);
3115e07b700SRajan Vaja enum pm_ret_status pm_api_clock_get_max_divisor(enum clock_id clock_id,
3125e07b700SRajan Vaja 						uint8_t div_type,
3135e07b700SRajan Vaja 						uint32_t *max_div);
3141e3fb352SJolly Shah 
3151e3fb352SJolly Shah enum pm_ret_status pm_clock_get_pll_node_id(enum clock_id clock_id,
3161e3fb352SJolly Shah 					    enum pm_node_id *node_id);
317ffa91031SVenkatesh Yadav Abbarapu enum pm_ret_status pm_clock_id_is_valid(uint32_t clock_id);
3181e3fb352SJolly Shah 
319*8ce93ec9SRonak Jain enum pm_ret_status pm_clock_pll_enable(struct pm_pll *pll, uint32_t flag);
320*8ce93ec9SRonak Jain enum pm_ret_status pm_clock_pll_disable(struct pm_pll *pll, uint32_t flag);
321bd30503aSJolly Shah enum pm_ret_status pm_clock_pll_get_state(struct pm_pll *pll,
322*8ce93ec9SRonak Jain 					  uint32_t *state,
323*8ce93ec9SRonak Jain 					  uint32_t flag);
324be48511eSJolly Shah enum pm_ret_status pm_clock_pll_set_parent(struct pm_pll *pll,
325be48511eSJolly Shah 					   enum clock_id clock_id,
326*8ce93ec9SRonak Jain 					   uint32_t parent_index,
327*8ce93ec9SRonak Jain 					   uint32_t flag);
328b6c56bdbSJolly Shah enum pm_ret_status pm_clock_pll_get_parent(struct pm_pll *pll,
329b6c56bdbSJolly Shah 					   enum clock_id clock_id,
330*8ce93ec9SRonak Jain 					   uint32_t *parent_index,
331*8ce93ec9SRonak Jain 					   uint32_t flag);
3328975f317SJolly Shah enum pm_ret_status pm_clock_set_pll_mode(enum clock_id clock_id,
333ffa91031SVenkatesh Yadav Abbarapu 					 uint32_t mode);
334a5ae5a72SJolly Shah enum pm_ret_status pm_clock_get_pll_mode(enum clock_id clock_id,
335ffa91031SVenkatesh Yadav Abbarapu 					 uint32_t *mode);
3361a3f02b5SRajan Vaja 
337c3cf06f1SAntonio Nino Diaz #endif /* PM_API_CLOCK_H */
338