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