xref: /linux/drivers/clk/qcom/dispcc-kaanapali.c (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*6c6750b7STaniya Das // SPDX-License-Identifier: GPL-2.0-only
2*6c6750b7STaniya Das /*
3*6c6750b7STaniya Das  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*6c6750b7STaniya Das  */
5*6c6750b7STaniya Das 
6*6c6750b7STaniya Das #include <linux/clk-provider.h>
7*6c6750b7STaniya Das #include <linux/mod_devicetable.h>
8*6c6750b7STaniya Das #include <linux/module.h>
9*6c6750b7STaniya Das #include <linux/of.h>
10*6c6750b7STaniya Das #include <linux/platform_device.h>
11*6c6750b7STaniya Das #include <linux/pm_runtime.h>
12*6c6750b7STaniya Das #include <linux/regmap.h>
13*6c6750b7STaniya Das 
14*6c6750b7STaniya Das #include <dt-bindings/clock/qcom,kaanapali-dispcc.h>
15*6c6750b7STaniya Das 
16*6c6750b7STaniya Das #include "clk-alpha-pll.h"
17*6c6750b7STaniya Das #include "clk-branch.h"
18*6c6750b7STaniya Das #include "clk-pll.h"
19*6c6750b7STaniya Das #include "clk-rcg.h"
20*6c6750b7STaniya Das #include "clk-regmap.h"
21*6c6750b7STaniya Das #include "clk-regmap-divider.h"
22*6c6750b7STaniya Das #include "clk-regmap-mux.h"
23*6c6750b7STaniya Das #include "common.h"
24*6c6750b7STaniya Das #include "gdsc.h"
25*6c6750b7STaniya Das #include "reset.h"
26*6c6750b7STaniya Das 
27*6c6750b7STaniya Das #define DISP_CC_MISC_CMD	0xF000
28*6c6750b7STaniya Das 
29*6c6750b7STaniya Das enum {
30*6c6750b7STaniya Das 	DT_BI_TCXO,
31*6c6750b7STaniya Das 	DT_BI_TCXO_AO,
32*6c6750b7STaniya Das 	DT_AHB_CLK,
33*6c6750b7STaniya Das 	DT_SLEEP_CLK,
34*6c6750b7STaniya Das 	DT_DP0_PHY_PLL_LINK_CLK,
35*6c6750b7STaniya Das 	DT_DP0_PHY_PLL_VCO_DIV_CLK,
36*6c6750b7STaniya Das 	DT_DP1_PHY_PLL_LINK_CLK,
37*6c6750b7STaniya Das 	DT_DP1_PHY_PLL_VCO_DIV_CLK,
38*6c6750b7STaniya Das 	DT_DP2_PHY_PLL_LINK_CLK,
39*6c6750b7STaniya Das 	DT_DP2_PHY_PLL_VCO_DIV_CLK,
40*6c6750b7STaniya Das 	DT_DP3_PHY_PLL_LINK_CLK,
41*6c6750b7STaniya Das 	DT_DP3_PHY_PLL_VCO_DIV_CLK,
42*6c6750b7STaniya Das 	DT_DSI0_PHY_PLL_OUT_BYTECLK,
43*6c6750b7STaniya Das 	DT_DSI0_PHY_PLL_OUT_DSICLK,
44*6c6750b7STaniya Das 	DT_DSI1_PHY_PLL_OUT_BYTECLK,
45*6c6750b7STaniya Das 	DT_DSI1_PHY_PLL_OUT_DSICLK,
46*6c6750b7STaniya Das };
47*6c6750b7STaniya Das 
48*6c6750b7STaniya Das enum {
49*6c6750b7STaniya Das 	P_BI_TCXO,
50*6c6750b7STaniya Das 	P_DISP_CC_PLL0_OUT_MAIN,
51*6c6750b7STaniya Das 	P_DISP_CC_PLL1_OUT_EVEN,
52*6c6750b7STaniya Das 	P_DISP_CC_PLL1_OUT_MAIN,
53*6c6750b7STaniya Das 	P_DISP_CC_PLL2_OUT_MAIN,
54*6c6750b7STaniya Das 	P_DP0_PHY_PLL_LINK_CLK,
55*6c6750b7STaniya Das 	P_DP0_PHY_PLL_VCO_DIV_CLK,
56*6c6750b7STaniya Das 	P_DP1_PHY_PLL_LINK_CLK,
57*6c6750b7STaniya Das 	P_DP1_PHY_PLL_VCO_DIV_CLK,
58*6c6750b7STaniya Das 	P_DP2_PHY_PLL_LINK_CLK,
59*6c6750b7STaniya Das 	P_DP2_PHY_PLL_VCO_DIV_CLK,
60*6c6750b7STaniya Das 	P_DP3_PHY_PLL_LINK_CLK,
61*6c6750b7STaniya Das 	P_DP3_PHY_PLL_VCO_DIV_CLK,
62*6c6750b7STaniya Das 	P_DSI0_PHY_PLL_OUT_BYTECLK,
63*6c6750b7STaniya Das 	P_DSI0_PHY_PLL_OUT_DSICLK,
64*6c6750b7STaniya Das 	P_DSI1_PHY_PLL_OUT_BYTECLK,
65*6c6750b7STaniya Das 	P_DSI1_PHY_PLL_OUT_DSICLK,
66*6c6750b7STaniya Das };
67*6c6750b7STaniya Das 
68*6c6750b7STaniya Das static const struct pll_vco pongo_eko_t_vco[] = {
69*6c6750b7STaniya Das 	{ 38400000, 153600000, 0 },
70*6c6750b7STaniya Das };
71*6c6750b7STaniya Das 
72*6c6750b7STaniya Das static const struct pll_vco taycan_eko_t_vco[] = {
73*6c6750b7STaniya Das 	{ 249600000, 2500000000, 0 },
74*6c6750b7STaniya Das };
75*6c6750b7STaniya Das 
76*6c6750b7STaniya Das /* 257.142858 MHz Configuration */
77*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll0_config = {
78*6c6750b7STaniya Das 	.l = 0xd,
79*6c6750b7STaniya Das 	.cal_l = 0x48,
80*6c6750b7STaniya Das 	.alpha = 0x6492,
81*6c6750b7STaniya Das 	.config_ctl_val = 0x25c400e7,
82*6c6750b7STaniya Das 	.config_ctl_hi_val = 0x0a8062e0,
83*6c6750b7STaniya Das 	.config_ctl_hi1_val = 0xf51dea20,
84*6c6750b7STaniya Das 	.user_ctl_val = 0x00000008,
85*6c6750b7STaniya Das 	.user_ctl_hi_val = 0x00000002,
86*6c6750b7STaniya Das };
87*6c6750b7STaniya Das 
88*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll0 = {
89*6c6750b7STaniya Das 	.offset = 0x0,
90*6c6750b7STaniya Das 	.config = &disp_cc_pll0_config,
91*6c6750b7STaniya Das 	.vco_table = taycan_eko_t_vco,
92*6c6750b7STaniya Das 	.num_vco = ARRAY_SIZE(taycan_eko_t_vco),
93*6c6750b7STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
94*6c6750b7STaniya Das 	.clkr = {
95*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
96*6c6750b7STaniya Das 			.name = "disp_cc_pll0",
97*6c6750b7STaniya Das 			.parent_data = &(const struct clk_parent_data) {
98*6c6750b7STaniya Das 				.index = DT_BI_TCXO,
99*6c6750b7STaniya Das 			},
100*6c6750b7STaniya Das 			.num_parents = 1,
101*6c6750b7STaniya Das 			.ops = &clk_alpha_pll_taycan_eko_t_ops,
102*6c6750b7STaniya Das 		},
103*6c6750b7STaniya Das 	},
104*6c6750b7STaniya Das };
105*6c6750b7STaniya Das 
106*6c6750b7STaniya Das /* 300.0 MHz Configuration */
107*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll1_config = {
108*6c6750b7STaniya Das 	.l = 0xf,
109*6c6750b7STaniya Das 	.cal_l = 0x48,
110*6c6750b7STaniya Das 	.alpha = 0xa000,
111*6c6750b7STaniya Das 	.config_ctl_val = 0x25c400e7,
112*6c6750b7STaniya Das 	.config_ctl_hi_val = 0x0a8062e0,
113*6c6750b7STaniya Das 	.config_ctl_hi1_val = 0xf51dea20,
114*6c6750b7STaniya Das 	.user_ctl_val = 0x00000008,
115*6c6750b7STaniya Das 	.user_ctl_hi_val = 0x00000002,
116*6c6750b7STaniya Das };
117*6c6750b7STaniya Das 
118*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll1 = {
119*6c6750b7STaniya Das 	.offset = 0x1000,
120*6c6750b7STaniya Das 	.config = &disp_cc_pll1_config,
121*6c6750b7STaniya Das 	.vco_table = taycan_eko_t_vco,
122*6c6750b7STaniya Das 	.num_vco = ARRAY_SIZE(taycan_eko_t_vco),
123*6c6750b7STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
124*6c6750b7STaniya Das 	.clkr = {
125*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
126*6c6750b7STaniya Das 			.name = "disp_cc_pll1",
127*6c6750b7STaniya Das 			.parent_data = &(const struct clk_parent_data) {
128*6c6750b7STaniya Das 				.index = DT_BI_TCXO,
129*6c6750b7STaniya Das 			},
130*6c6750b7STaniya Das 			.num_parents = 1,
131*6c6750b7STaniya Das 			.ops = &clk_alpha_pll_taycan_eko_t_ops,
132*6c6750b7STaniya Das 		},
133*6c6750b7STaniya Das 	},
134*6c6750b7STaniya Das };
135*6c6750b7STaniya Das 
136*6c6750b7STaniya Das /* 38.4 MHz Configuration */
137*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll2_config = {
138*6c6750b7STaniya Das 	.l = 0x493,
139*6c6750b7STaniya Das 	.cal_l = 0x493,
140*6c6750b7STaniya Das 	.alpha = 0x0,
141*6c6750b7STaniya Das 	.config_ctl_val = 0x60000f68,
142*6c6750b7STaniya Das 	.config_ctl_hi_val = 0x0001c808,
143*6c6750b7STaniya Das 	.config_ctl_hi1_val = 0x00000000,
144*6c6750b7STaniya Das 	.config_ctl_hi2_val = 0x040082f4,
145*6c6750b7STaniya Das 	.test_ctl_val = 0x00000000,
146*6c6750b7STaniya Das 	.test_ctl_hi_val = 0x0080c496,
147*6c6750b7STaniya Das 	.test_ctl_hi1_val = 0x40100080,
148*6c6750b7STaniya Das 	.test_ctl_hi2_val = 0x001001bc,
149*6c6750b7STaniya Das 	.test_ctl_hi3_val = 0x002003d8,
150*6c6750b7STaniya Das 	.user_ctl_val = 0x00000400,
151*6c6750b7STaniya Das 	.user_ctl_hi_val = 0x00e50302,
152*6c6750b7STaniya Das };
153*6c6750b7STaniya Das 
154*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll2 = {
155*6c6750b7STaniya Das 	.offset = 0x2000,
156*6c6750b7STaniya Das 	.config = &disp_cc_pll2_config,
157*6c6750b7STaniya Das 	.vco_table = pongo_eko_t_vco,
158*6c6750b7STaniya Das 	.num_vco = ARRAY_SIZE(pongo_eko_t_vco),
159*6c6750b7STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_PONGO_EKO_T],
160*6c6750b7STaniya Das 	.clkr = {
161*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
162*6c6750b7STaniya Das 			.name = "disp_cc_pll2",
163*6c6750b7STaniya Das 			.parent_data = &(const struct clk_parent_data) {
164*6c6750b7STaniya Das 				.index = DT_SLEEP_CLK,
165*6c6750b7STaniya Das 			},
166*6c6750b7STaniya Das 			.num_parents = 1,
167*6c6750b7STaniya Das 			.ops = &clk_alpha_pll_pongo_eko_t_ops,
168*6c6750b7STaniya Das 		},
169*6c6750b7STaniya Das 	},
170*6c6750b7STaniya Das };
171*6c6750b7STaniya Das 
172*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_0[] = {
173*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
174*6c6750b7STaniya Das };
175*6c6750b7STaniya Das 
176*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_0[] = {
177*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
178*6c6750b7STaniya Das };
179*6c6750b7STaniya Das 
180*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_1[] = {
181*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
182*6c6750b7STaniya Das 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
183*6c6750b7STaniya Das 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
184*6c6750b7STaniya Das 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
185*6c6750b7STaniya Das 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
186*6c6750b7STaniya Das };
187*6c6750b7STaniya Das 
188*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_1[] = {
189*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
190*6c6750b7STaniya Das 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
191*6c6750b7STaniya Das 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
192*6c6750b7STaniya Das 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
193*6c6750b7STaniya Das 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
194*6c6750b7STaniya Das };
195*6c6750b7STaniya Das 
196*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_2[] = {
197*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
198*6c6750b7STaniya Das 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
199*6c6750b7STaniya Das 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
200*6c6750b7STaniya Das 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
201*6c6750b7STaniya Das };
202*6c6750b7STaniya Das 
203*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_2[] = {
204*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
205*6c6750b7STaniya Das 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
206*6c6750b7STaniya Das 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
207*6c6750b7STaniya Das 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
208*6c6750b7STaniya Das };
209*6c6750b7STaniya Das 
210*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_3[] = {
211*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
212*6c6750b7STaniya Das 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
213*6c6750b7STaniya Das 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
214*6c6750b7STaniya Das 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
215*6c6750b7STaniya Das };
216*6c6750b7STaniya Das 
217*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_3[] = {
218*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
219*6c6750b7STaniya Das 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
220*6c6750b7STaniya Das 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
221*6c6750b7STaniya Das 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
222*6c6750b7STaniya Das };
223*6c6750b7STaniya Das 
224*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_4[] = {
225*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
226*6c6750b7STaniya Das 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
227*6c6750b7STaniya Das 	{ P_DISP_CC_PLL2_OUT_MAIN, 2 },
228*6c6750b7STaniya Das 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
229*6c6750b7STaniya Das };
230*6c6750b7STaniya Das 
231*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_4[] = {
232*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
233*6c6750b7STaniya Das 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
234*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll2.clkr.hw },
235*6c6750b7STaniya Das 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
236*6c6750b7STaniya Das };
237*6c6750b7STaniya Das 
238*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_5[] = {
239*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
240*6c6750b7STaniya Das 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
241*6c6750b7STaniya Das 	{ P_DP0_PHY_PLL_VCO_DIV_CLK, 2 },
242*6c6750b7STaniya Das 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
243*6c6750b7STaniya Das 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
244*6c6750b7STaniya Das 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
245*6c6750b7STaniya Das };
246*6c6750b7STaniya Das 
247*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_5[] = {
248*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
249*6c6750b7STaniya Das 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
250*6c6750b7STaniya Das 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
251*6c6750b7STaniya Das 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
252*6c6750b7STaniya Das 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
253*6c6750b7STaniya Das 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
254*6c6750b7STaniya Das };
255*6c6750b7STaniya Das 
256*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_6[] = {
257*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
258*6c6750b7STaniya Das 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
259*6c6750b7STaniya Das 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
260*6c6750b7STaniya Das };
261*6c6750b7STaniya Das 
262*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_6[] = {
263*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
264*6c6750b7STaniya Das 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
265*6c6750b7STaniya Das 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
266*6c6750b7STaniya Das };
267*6c6750b7STaniya Das 
268*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_7[] = {
269*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
270*6c6750b7STaniya Das 	{ P_DISP_CC_PLL1_OUT_MAIN, 4 },
271*6c6750b7STaniya Das 	{ P_DISP_CC_PLL1_OUT_EVEN, 6 },
272*6c6750b7STaniya Das };
273*6c6750b7STaniya Das 
274*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_7[] = {
275*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
276*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll1.clkr.hw },
277*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll1.clkr.hw },
278*6c6750b7STaniya Das };
279*6c6750b7STaniya Das 
280*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_8[] = {
281*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
282*6c6750b7STaniya Das 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
283*6c6750b7STaniya Das 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
284*6c6750b7STaniya Das 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
285*6c6750b7STaniya Das 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
286*6c6750b7STaniya Das };
287*6c6750b7STaniya Das 
288*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_8[] = {
289*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
290*6c6750b7STaniya Das 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
291*6c6750b7STaniya Das 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
292*6c6750b7STaniya Das 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
293*6c6750b7STaniya Das 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
294*6c6750b7STaniya Das };
295*6c6750b7STaniya Das 
296*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_9[] = {
297*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
298*6c6750b7STaniya Das 	{ P_DISP_CC_PLL0_OUT_MAIN, 1 },
299*6c6750b7STaniya Das 	{ P_DISP_CC_PLL1_OUT_MAIN, 4 },
300*6c6750b7STaniya Das 	{ P_DISP_CC_PLL1_OUT_EVEN, 6 },
301*6c6750b7STaniya Das };
302*6c6750b7STaniya Das 
303*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_9[] = {
304*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
305*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll0.clkr.hw },
306*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll1.clkr.hw },
307*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll1.clkr.hw },
308*6c6750b7STaniya Das };
309*6c6750b7STaniya Das 
310*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_10[] = {
311*6c6750b7STaniya Das 	{ P_BI_TCXO, 0 },
312*6c6750b7STaniya Das 	{ P_DISP_CC_PLL2_OUT_MAIN, 2 },
313*6c6750b7STaniya Das };
314*6c6750b7STaniya Das 
315*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_10[] = {
316*6c6750b7STaniya Das 	{ .index = DT_BI_TCXO },
317*6c6750b7STaniya Das 	{ .hw = &disp_cc_pll2.clkr.hw },
318*6c6750b7STaniya Das };
319*6c6750b7STaniya Das 
320*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_esync0_clk_src[] = {
321*6c6750b7STaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
322*6c6750b7STaniya Das 	{ }
323*6c6750b7STaniya Das };
324*6c6750b7STaniya Das 
325*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_esync0_clk_src = {
326*6c6750b7STaniya Das 	.cmd_rcgr = 0x80d4,
327*6c6750b7STaniya Das 	.mnd_width = 16,
328*6c6750b7STaniya Das 	.hid_width = 5,
329*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_4,
330*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
331*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
332*6c6750b7STaniya Das 		.name = "disp_cc_esync0_clk_src",
333*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_4,
334*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
335*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
336*6c6750b7STaniya Das 		.ops = &clk_pixel_ops,
337*6c6750b7STaniya Das 	},
338*6c6750b7STaniya Das };
339*6c6750b7STaniya Das 
340*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_esync1_clk_src = {
341*6c6750b7STaniya Das 	.cmd_rcgr = 0x80ec,
342*6c6750b7STaniya Das 	.mnd_width = 16,
343*6c6750b7STaniya Das 	.hid_width = 5,
344*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_4,
345*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
346*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
347*6c6750b7STaniya Das 		.name = "disp_cc_esync1_clk_src",
348*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_4,
349*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
350*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
351*6c6750b7STaniya Das 		.ops = &clk_pixel_ops,
352*6c6750b7STaniya Das 	},
353*6c6750b7STaniya Das };
354*6c6750b7STaniya Das 
355*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = {
356*6c6750b7STaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
357*6c6750b7STaniya Das 	F(100000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
358*6c6750b7STaniya Das 	F(120000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
359*6c6750b7STaniya Das 	F(165000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
360*6c6750b7STaniya Das 	F(200000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
361*6c6750b7STaniya Das 	F(233333333, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
362*6c6750b7STaniya Das 	F(261666667, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
363*6c6750b7STaniya Das 	F(283333333, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0),
364*6c6750b7STaniya Das 	{ }
365*6c6750b7STaniya Das };
366*6c6750b7STaniya Das 
367*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_ahb_clk_src = {
368*6c6750b7STaniya Das 	.cmd_rcgr = 0x8378,
369*6c6750b7STaniya Das 	.mnd_width = 0,
370*6c6750b7STaniya Das 	.hid_width = 5,
371*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_7,
372*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
373*6c6750b7STaniya Das 	.hw_clk_ctrl = true,
374*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
375*6c6750b7STaniya Das 		.name = "disp_cc_mdss_ahb_clk_src",
376*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_7,
377*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
378*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
379*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
380*6c6750b7STaniya Das 	},
381*6c6750b7STaniya Das };
382*6c6750b7STaniya Das 
383*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_byte0_clk_src = {
384*6c6750b7STaniya Das 	.cmd_rcgr = 0x8194,
385*6c6750b7STaniya Das 	.mnd_width = 0,
386*6c6750b7STaniya Das 	.hid_width = 5,
387*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_1,
388*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
389*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
390*6c6750b7STaniya Das 		.name = "disp_cc_mdss_byte0_clk_src",
391*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_1,
392*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
393*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
394*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
395*6c6750b7STaniya Das 	},
396*6c6750b7STaniya Das };
397*6c6750b7STaniya Das 
398*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_byte1_clk_src = {
399*6c6750b7STaniya Das 	.cmd_rcgr = 0x81b0,
400*6c6750b7STaniya Das 	.mnd_width = 0,
401*6c6750b7STaniya Das 	.hid_width = 5,
402*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_1,
403*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
404*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
405*6c6750b7STaniya Das 		.name = "disp_cc_mdss_byte1_clk_src",
406*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_1,
407*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
408*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
409*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
410*6c6750b7STaniya Das 	},
411*6c6750b7STaniya Das };
412*6c6750b7STaniya Das 
413*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_aux_clk_src = {
414*6c6750b7STaniya Das 	.cmd_rcgr = 0x8248,
415*6c6750b7STaniya Das 	.mnd_width = 0,
416*6c6750b7STaniya Das 	.hid_width = 5,
417*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_0,
418*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
419*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
420*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx0_aux_clk_src",
421*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_0,
422*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
423*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
424*6c6750b7STaniya Das 		.ops = &clk_rcg2_ops,
425*6c6750b7STaniya Das 	},
426*6c6750b7STaniya Das };
427*6c6750b7STaniya Das 
428*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_link_clk_src = {
429*6c6750b7STaniya Das 	.cmd_rcgr = 0x81fc,
430*6c6750b7STaniya Das 	.mnd_width = 0,
431*6c6750b7STaniya Das 	.hid_width = 5,
432*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_8,
433*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
434*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
435*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx0_link_clk_src",
436*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_8,
437*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_8),
438*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
439*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
440*6c6750b7STaniya Das 	},
441*6c6750b7STaniya Das };
442*6c6750b7STaniya Das 
443*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_pixel0_clk_src = {
444*6c6750b7STaniya Das 	.cmd_rcgr = 0x8218,
445*6c6750b7STaniya Das 	.mnd_width = 16,
446*6c6750b7STaniya Das 	.hid_width = 5,
447*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_5,
448*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
449*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
450*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx0_pixel0_clk_src",
451*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_5,
452*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_5),
453*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
454*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
455*6c6750b7STaniya Das 	},
456*6c6750b7STaniya Das };
457*6c6750b7STaniya Das 
458*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_pixel1_clk_src = {
459*6c6750b7STaniya Das 	.cmd_rcgr = 0x8230,
460*6c6750b7STaniya Das 	.mnd_width = 16,
461*6c6750b7STaniya Das 	.hid_width = 5,
462*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_5,
463*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
464*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
465*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx0_pixel1_clk_src",
466*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_5,
467*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_5),
468*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
469*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
470*6c6750b7STaniya Das 	},
471*6c6750b7STaniya Das };
472*6c6750b7STaniya Das 
473*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_aux_clk_src = {
474*6c6750b7STaniya Das 	.cmd_rcgr = 0x82ac,
475*6c6750b7STaniya Das 	.mnd_width = 0,
476*6c6750b7STaniya Das 	.hid_width = 5,
477*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_0,
478*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
479*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
480*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx1_aux_clk_src",
481*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_0,
482*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
483*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
484*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
485*6c6750b7STaniya Das 	},
486*6c6750b7STaniya Das };
487*6c6750b7STaniya Das 
488*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_link_clk_src = {
489*6c6750b7STaniya Das 	.cmd_rcgr = 0x8290,
490*6c6750b7STaniya Das 	.mnd_width = 0,
491*6c6750b7STaniya Das 	.hid_width = 5,
492*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_3,
493*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
494*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
495*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx1_link_clk_src",
496*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_3,
497*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
498*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
499*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
500*6c6750b7STaniya Das 	},
501*6c6750b7STaniya Das };
502*6c6750b7STaniya Das 
503*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_pixel0_clk_src = {
504*6c6750b7STaniya Das 	.cmd_rcgr = 0x8260,
505*6c6750b7STaniya Das 	.mnd_width = 16,
506*6c6750b7STaniya Das 	.hid_width = 5,
507*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_2,
508*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
509*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
510*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx1_pixel0_clk_src",
511*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_2,
512*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
513*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
514*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
515*6c6750b7STaniya Das 	},
516*6c6750b7STaniya Das };
517*6c6750b7STaniya Das 
518*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_pixel1_clk_src = {
519*6c6750b7STaniya Das 	.cmd_rcgr = 0x8278,
520*6c6750b7STaniya Das 	.mnd_width = 16,
521*6c6750b7STaniya Das 	.hid_width = 5,
522*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_2,
523*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
524*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
525*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx1_pixel1_clk_src",
526*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_2,
527*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
528*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
529*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
530*6c6750b7STaniya Das 	},
531*6c6750b7STaniya Das };
532*6c6750b7STaniya Das 
533*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_aux_clk_src = {
534*6c6750b7STaniya Das 	.cmd_rcgr = 0x8310,
535*6c6750b7STaniya Das 	.mnd_width = 0,
536*6c6750b7STaniya Das 	.hid_width = 5,
537*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_0,
538*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
539*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
540*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx2_aux_clk_src",
541*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_0,
542*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
543*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
544*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
545*6c6750b7STaniya Das 	},
546*6c6750b7STaniya Das };
547*6c6750b7STaniya Das 
548*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_link_clk_src = {
549*6c6750b7STaniya Das 	.cmd_rcgr = 0x82c4,
550*6c6750b7STaniya Das 	.mnd_width = 0,
551*6c6750b7STaniya Das 	.hid_width = 5,
552*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_3,
553*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
554*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
555*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx2_link_clk_src",
556*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_3,
557*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
558*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
559*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
560*6c6750b7STaniya Das 	},
561*6c6750b7STaniya Das };
562*6c6750b7STaniya Das 
563*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_pixel0_clk_src = {
564*6c6750b7STaniya Das 	.cmd_rcgr = 0x82e0,
565*6c6750b7STaniya Das 	.mnd_width = 16,
566*6c6750b7STaniya Das 	.hid_width = 5,
567*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_2,
568*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
569*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
570*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx2_pixel0_clk_src",
571*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_2,
572*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
573*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
574*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
575*6c6750b7STaniya Das 	},
576*6c6750b7STaniya Das };
577*6c6750b7STaniya Das 
578*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_pixel1_clk_src = {
579*6c6750b7STaniya Das 	.cmd_rcgr = 0x82f8,
580*6c6750b7STaniya Das 	.mnd_width = 16,
581*6c6750b7STaniya Das 	.hid_width = 5,
582*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_2,
583*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
584*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
585*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx2_pixel1_clk_src",
586*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_2,
587*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
588*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
589*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
590*6c6750b7STaniya Das 	},
591*6c6750b7STaniya Das };
592*6c6750b7STaniya Das 
593*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_aux_clk_src = {
594*6c6750b7STaniya Das 	.cmd_rcgr = 0x835c,
595*6c6750b7STaniya Das 	.mnd_width = 0,
596*6c6750b7STaniya Das 	.hid_width = 5,
597*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_0,
598*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
599*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
600*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx3_aux_clk_src",
601*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_0,
602*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
603*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
604*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
605*6c6750b7STaniya Das 	},
606*6c6750b7STaniya Das };
607*6c6750b7STaniya Das 
608*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_link_clk_src = {
609*6c6750b7STaniya Das 	.cmd_rcgr = 0x8340,
610*6c6750b7STaniya Das 	.mnd_width = 0,
611*6c6750b7STaniya Das 	.hid_width = 5,
612*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_3,
613*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
614*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
615*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx3_link_clk_src",
616*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_3,
617*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
618*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
619*6c6750b7STaniya Das 		.ops = &clk_byte2_ops,
620*6c6750b7STaniya Das 	},
621*6c6750b7STaniya Das };
622*6c6750b7STaniya Das 
623*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_pixel0_clk_src = {
624*6c6750b7STaniya Das 	.cmd_rcgr = 0x8328,
625*6c6750b7STaniya Das 	.mnd_width = 16,
626*6c6750b7STaniya Das 	.hid_width = 5,
627*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_2,
628*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
629*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
630*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx3_pixel0_clk_src",
631*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_2,
632*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
633*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
634*6c6750b7STaniya Das 		.ops = &clk_dp_ops,
635*6c6750b7STaniya Das 	},
636*6c6750b7STaniya Das };
637*6c6750b7STaniya Das 
638*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_esc0_clk_src = {
639*6c6750b7STaniya Das 	.cmd_rcgr = 0x81cc,
640*6c6750b7STaniya Das 	.mnd_width = 0,
641*6c6750b7STaniya Das 	.hid_width = 5,
642*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_6,
643*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
644*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
645*6c6750b7STaniya Das 		.name = "disp_cc_mdss_esc0_clk_src",
646*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_6,
647*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_6),
648*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
649*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
650*6c6750b7STaniya Das 	},
651*6c6750b7STaniya Das };
652*6c6750b7STaniya Das 
653*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_esc1_clk_src = {
654*6c6750b7STaniya Das 	.cmd_rcgr = 0x81e4,
655*6c6750b7STaniya Das 	.mnd_width = 0,
656*6c6750b7STaniya Das 	.hid_width = 5,
657*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_6,
658*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
659*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
660*6c6750b7STaniya Das 		.name = "disp_cc_mdss_esc1_clk_src",
661*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_6,
662*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_6),
663*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
664*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
665*6c6750b7STaniya Das 	},
666*6c6750b7STaniya Das };
667*6c6750b7STaniya Das 
668*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = {
669*6c6750b7STaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
670*6c6750b7STaniya Das 	F(85714286, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
671*6c6750b7STaniya Das 	F(100000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
672*6c6750b7STaniya Das 	F(156000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
673*6c6750b7STaniya Das 	F(207000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
674*6c6750b7STaniya Das 	F(337000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
675*6c6750b7STaniya Das 	F(417000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
676*6c6750b7STaniya Das 	F(532000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
677*6c6750b7STaniya Das 	F(600000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
678*6c6750b7STaniya Das 	F(650000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
679*6c6750b7STaniya Das 	{ }
680*6c6750b7STaniya Das };
681*6c6750b7STaniya Das 
682*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_mdp_clk_src = {
683*6c6750b7STaniya Das 	.cmd_rcgr = 0x8164,
684*6c6750b7STaniya Das 	.mnd_width = 0,
685*6c6750b7STaniya Das 	.hid_width = 5,
686*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_9,
687*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
688*6c6750b7STaniya Das 	.hw_clk_ctrl = true,
689*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
690*6c6750b7STaniya Das 		.name = "disp_cc_mdss_mdp_clk_src",
691*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_9,
692*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_9),
693*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
694*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
695*6c6750b7STaniya Das 	},
696*6c6750b7STaniya Das };
697*6c6750b7STaniya Das 
698*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk0_clk_src = {
699*6c6750b7STaniya Das 	.cmd_rcgr = 0x811c,
700*6c6750b7STaniya Das 	.mnd_width = 8,
701*6c6750b7STaniya Das 	.hid_width = 5,
702*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_1,
703*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
704*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
705*6c6750b7STaniya Das 		.name = "disp_cc_mdss_pclk0_clk_src",
706*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_1,
707*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
708*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
709*6c6750b7STaniya Das 		.ops = &clk_pixel_ops,
710*6c6750b7STaniya Das 	},
711*6c6750b7STaniya Das };
712*6c6750b7STaniya Das 
713*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk1_clk_src = {
714*6c6750b7STaniya Das 	.cmd_rcgr = 0x8134,
715*6c6750b7STaniya Das 	.mnd_width = 8,
716*6c6750b7STaniya Das 	.hid_width = 5,
717*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_1,
718*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
719*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
720*6c6750b7STaniya Das 		.name = "disp_cc_mdss_pclk1_clk_src",
721*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_1,
722*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
723*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
724*6c6750b7STaniya Das 		.ops = &clk_pixel_ops,
725*6c6750b7STaniya Das 	},
726*6c6750b7STaniya Das };
727*6c6750b7STaniya Das 
728*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk2_clk_src = {
729*6c6750b7STaniya Das 	.cmd_rcgr = 0x814c,
730*6c6750b7STaniya Das 	.mnd_width = 8,
731*6c6750b7STaniya Das 	.hid_width = 5,
732*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_1,
733*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
734*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
735*6c6750b7STaniya Das 		.name = "disp_cc_mdss_pclk2_clk_src",
736*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_1,
737*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
738*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
739*6c6750b7STaniya Das 		.ops = &clk_pixel_ops,
740*6c6750b7STaniya Das 	},
741*6c6750b7STaniya Das };
742*6c6750b7STaniya Das 
743*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_vsync_clk_src = {
744*6c6750b7STaniya Das 	.cmd_rcgr = 0x817c,
745*6c6750b7STaniya Das 	.mnd_width = 0,
746*6c6750b7STaniya Das 	.hid_width = 5,
747*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_0,
748*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
749*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
750*6c6750b7STaniya Das 		.name = "disp_cc_mdss_vsync_clk_src",
751*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_0,
752*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
753*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
754*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
755*6c6750b7STaniya Das 	},
756*6c6750b7STaniya Das };
757*6c6750b7STaniya Das 
758*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_osc_clk_src[] = {
759*6c6750b7STaniya Das 	F(38400000, P_DISP_CC_PLL2_OUT_MAIN, 1, 0, 0),
760*6c6750b7STaniya Das 	{ }
761*6c6750b7STaniya Das };
762*6c6750b7STaniya Das 
763*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_osc_clk_src = {
764*6c6750b7STaniya Das 	.cmd_rcgr = 0x8104,
765*6c6750b7STaniya Das 	.mnd_width = 0,
766*6c6750b7STaniya Das 	.hid_width = 5,
767*6c6750b7STaniya Das 	.parent_map = disp_cc_parent_map_10,
768*6c6750b7STaniya Das 	.freq_tbl = ftbl_disp_cc_osc_clk_src,
769*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
770*6c6750b7STaniya Das 		.name = "disp_cc_osc_clk_src",
771*6c6750b7STaniya Das 		.parent_data = disp_cc_parent_data_10,
772*6c6750b7STaniya Das 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_10),
773*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
774*6c6750b7STaniya Das 		.ops = &clk_rcg2_shared_ops,
775*6c6750b7STaniya Das 	},
776*6c6750b7STaniya Das };
777*6c6750b7STaniya Das 
778*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_ahb_swi_div_clk_src = {
779*6c6750b7STaniya Das 	.reg = 0x8374,
780*6c6750b7STaniya Das 	.shift = 0,
781*6c6750b7STaniya Das 	.width = 4,
782*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
783*6c6750b7STaniya Das 		.name = "disp_cc_mdss_ahb_swi_div_clk_src",
784*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
785*6c6750b7STaniya Das 			&disp_cc_mdss_ahb_clk_src.clkr.hw,
786*6c6750b7STaniya Das 		},
787*6c6750b7STaniya Das 		.num_parents = 1,
788*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
789*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ro_ops,
790*6c6750b7STaniya Das 	},
791*6c6750b7STaniya Das };
792*6c6750b7STaniya Das 
793*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_byte0_div_clk_src = {
794*6c6750b7STaniya Das 	.reg = 0x81ac,
795*6c6750b7STaniya Das 	.shift = 0,
796*6c6750b7STaniya Das 	.width = 4,
797*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
798*6c6750b7STaniya Das 		.name = "disp_cc_mdss_byte0_div_clk_src",
799*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
800*6c6750b7STaniya Das 			&disp_cc_mdss_byte0_clk_src.clkr.hw,
801*6c6750b7STaniya Das 		},
802*6c6750b7STaniya Das 		.num_parents = 1,
803*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
804*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ops,
805*6c6750b7STaniya Das 	},
806*6c6750b7STaniya Das };
807*6c6750b7STaniya Das 
808*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_byte1_div_clk_src = {
809*6c6750b7STaniya Das 	.reg = 0x81c8,
810*6c6750b7STaniya Das 	.shift = 0,
811*6c6750b7STaniya Das 	.width = 4,
812*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
813*6c6750b7STaniya Das 		.name = "disp_cc_mdss_byte1_div_clk_src",
814*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
815*6c6750b7STaniya Das 			&disp_cc_mdss_byte1_clk_src.clkr.hw,
816*6c6750b7STaniya Das 		},
817*6c6750b7STaniya Das 		.num_parents = 1,
818*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
819*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ops,
820*6c6750b7STaniya Das 	},
821*6c6750b7STaniya Das };
822*6c6750b7STaniya Das 
823*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx0_link_div_clk_src = {
824*6c6750b7STaniya Das 	.reg = 0x8214,
825*6c6750b7STaniya Das 	.shift = 0,
826*6c6750b7STaniya Das 	.width = 4,
827*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
828*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx0_link_div_clk_src",
829*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
830*6c6750b7STaniya Das 			&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
831*6c6750b7STaniya Das 		},
832*6c6750b7STaniya Das 		.num_parents = 1,
833*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
834*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ro_ops,
835*6c6750b7STaniya Das 	},
836*6c6750b7STaniya Das };
837*6c6750b7STaniya Das 
838*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx1_link_div_clk_src = {
839*6c6750b7STaniya Das 	.reg = 0x82a8,
840*6c6750b7STaniya Das 	.shift = 0,
841*6c6750b7STaniya Das 	.width = 4,
842*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
843*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx1_link_div_clk_src",
844*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
845*6c6750b7STaniya Das 			&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
846*6c6750b7STaniya Das 		},
847*6c6750b7STaniya Das 		.num_parents = 1,
848*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
849*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ro_ops,
850*6c6750b7STaniya Das 	},
851*6c6750b7STaniya Das };
852*6c6750b7STaniya Das 
853*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx2_link_div_clk_src = {
854*6c6750b7STaniya Das 	.reg = 0x82dc,
855*6c6750b7STaniya Das 	.shift = 0,
856*6c6750b7STaniya Das 	.width = 4,
857*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
858*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx2_link_div_clk_src",
859*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
860*6c6750b7STaniya Das 			&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
861*6c6750b7STaniya Das 		},
862*6c6750b7STaniya Das 		.num_parents = 1,
863*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
864*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ro_ops,
865*6c6750b7STaniya Das 	},
866*6c6750b7STaniya Das };
867*6c6750b7STaniya Das 
868*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx3_link_div_clk_src = {
869*6c6750b7STaniya Das 	.reg = 0x8358,
870*6c6750b7STaniya Das 	.shift = 0,
871*6c6750b7STaniya Das 	.width = 4,
872*6c6750b7STaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
873*6c6750b7STaniya Das 		.name = "disp_cc_mdss_dptx3_link_div_clk_src",
874*6c6750b7STaniya Das 		.parent_hws = (const struct clk_hw*[]) {
875*6c6750b7STaniya Das 			&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
876*6c6750b7STaniya Das 		},
877*6c6750b7STaniya Das 		.num_parents = 1,
878*6c6750b7STaniya Das 		.flags = CLK_SET_RATE_PARENT,
879*6c6750b7STaniya Das 		.ops = &clk_regmap_div_ro_ops,
880*6c6750b7STaniya Das 	},
881*6c6750b7STaniya Das };
882*6c6750b7STaniya Das 
883*6c6750b7STaniya Das static struct clk_branch disp_cc_esync0_clk = {
884*6c6750b7STaniya Das 	.halt_reg = 0x80cc,
885*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
886*6c6750b7STaniya Das 	.clkr = {
887*6c6750b7STaniya Das 		.enable_reg = 0x80cc,
888*6c6750b7STaniya Das 		.enable_mask = BIT(0),
889*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
890*6c6750b7STaniya Das 			.name = "disp_cc_esync0_clk",
891*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
892*6c6750b7STaniya Das 				&disp_cc_esync0_clk_src.clkr.hw,
893*6c6750b7STaniya Das 			},
894*6c6750b7STaniya Das 			.num_parents = 1,
895*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
896*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
897*6c6750b7STaniya Das 		},
898*6c6750b7STaniya Das 	},
899*6c6750b7STaniya Das };
900*6c6750b7STaniya Das 
901*6c6750b7STaniya Das static struct clk_branch disp_cc_esync1_clk = {
902*6c6750b7STaniya Das 	.halt_reg = 0x80d0,
903*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
904*6c6750b7STaniya Das 	.clkr = {
905*6c6750b7STaniya Das 		.enable_reg = 0x80d0,
906*6c6750b7STaniya Das 		.enable_mask = BIT(0),
907*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
908*6c6750b7STaniya Das 			.name = "disp_cc_esync1_clk",
909*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
910*6c6750b7STaniya Das 				&disp_cc_esync1_clk_src.clkr.hw,
911*6c6750b7STaniya Das 			},
912*6c6750b7STaniya Das 			.num_parents = 1,
913*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
914*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
915*6c6750b7STaniya Das 		},
916*6c6750b7STaniya Das 	},
917*6c6750b7STaniya Das };
918*6c6750b7STaniya Das 
919*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_accu_shift_clk = {
920*6c6750b7STaniya Das 	.halt_reg = 0xe060,
921*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
922*6c6750b7STaniya Das 	.clkr = {
923*6c6750b7STaniya Das 		.enable_reg = 0xe060,
924*6c6750b7STaniya Das 		.enable_mask = BIT(0),
925*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
926*6c6750b7STaniya Das 			.name = "disp_cc_mdss_accu_shift_clk",
927*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
928*6c6750b7STaniya Das 		},
929*6c6750b7STaniya Das 	},
930*6c6750b7STaniya Das };
931*6c6750b7STaniya Das 
932*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb1_clk = {
933*6c6750b7STaniya Das 	.halt_reg = 0xa028,
934*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
935*6c6750b7STaniya Das 	.clkr = {
936*6c6750b7STaniya Das 		.enable_reg = 0xa028,
937*6c6750b7STaniya Das 		.enable_mask = BIT(0),
938*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
939*6c6750b7STaniya Das 			.name = "disp_cc_mdss_ahb1_clk",
940*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
941*6c6750b7STaniya Das 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
942*6c6750b7STaniya Das 			},
943*6c6750b7STaniya Das 			.num_parents = 1,
944*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
945*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
946*6c6750b7STaniya Das 		},
947*6c6750b7STaniya Das 	},
948*6c6750b7STaniya Das };
949*6c6750b7STaniya Das 
950*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb_clk = {
951*6c6750b7STaniya Das 	.halt_reg = 0x80c4,
952*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
953*6c6750b7STaniya Das 	.clkr = {
954*6c6750b7STaniya Das 		.enable_reg = 0x80c4,
955*6c6750b7STaniya Das 		.enable_mask = BIT(0),
956*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
957*6c6750b7STaniya Das 			.name = "disp_cc_mdss_ahb_clk",
958*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
959*6c6750b7STaniya Das 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
960*6c6750b7STaniya Das 			},
961*6c6750b7STaniya Das 			.num_parents = 1,
962*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
963*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
964*6c6750b7STaniya Das 		},
965*6c6750b7STaniya Das 	},
966*6c6750b7STaniya Das };
967*6c6750b7STaniya Das 
968*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb_swi_clk = {
969*6c6750b7STaniya Das 	.halt_reg = 0x80c0,
970*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
971*6c6750b7STaniya Das 	.clkr = {
972*6c6750b7STaniya Das 		.enable_reg = 0x80c0,
973*6c6750b7STaniya Das 		.enable_mask = BIT(0),
974*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
975*6c6750b7STaniya Das 			.name = "disp_cc_mdss_ahb_swi_clk",
976*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
977*6c6750b7STaniya Das 				&disp_cc_mdss_ahb_swi_div_clk_src.clkr.hw,
978*6c6750b7STaniya Das 			},
979*6c6750b7STaniya Das 			.num_parents = 1,
980*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
981*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
982*6c6750b7STaniya Das 		},
983*6c6750b7STaniya Das 	},
984*6c6750b7STaniya Das };
985*6c6750b7STaniya Das 
986*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte0_clk = {
987*6c6750b7STaniya Das 	.halt_reg = 0x8044,
988*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
989*6c6750b7STaniya Das 	.clkr = {
990*6c6750b7STaniya Das 		.enable_reg = 0x8044,
991*6c6750b7STaniya Das 		.enable_mask = BIT(0),
992*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
993*6c6750b7STaniya Das 			.name = "disp_cc_mdss_byte0_clk",
994*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
995*6c6750b7STaniya Das 				&disp_cc_mdss_byte0_clk_src.clkr.hw,
996*6c6750b7STaniya Das 			},
997*6c6750b7STaniya Das 			.num_parents = 1,
998*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
999*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1000*6c6750b7STaniya Das 		},
1001*6c6750b7STaniya Das 	},
1002*6c6750b7STaniya Das };
1003*6c6750b7STaniya Das 
1004*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte0_intf_clk = {
1005*6c6750b7STaniya Das 	.halt_reg = 0x8048,
1006*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1007*6c6750b7STaniya Das 	.clkr = {
1008*6c6750b7STaniya Das 		.enable_reg = 0x8048,
1009*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1010*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1011*6c6750b7STaniya Das 			.name = "disp_cc_mdss_byte0_intf_clk",
1012*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1013*6c6750b7STaniya Das 				&disp_cc_mdss_byte0_div_clk_src.clkr.hw,
1014*6c6750b7STaniya Das 			},
1015*6c6750b7STaniya Das 			.num_parents = 1,
1016*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1017*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1018*6c6750b7STaniya Das 		},
1019*6c6750b7STaniya Das 	},
1020*6c6750b7STaniya Das };
1021*6c6750b7STaniya Das 
1022*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte1_clk = {
1023*6c6750b7STaniya Das 	.halt_reg = 0x804c,
1024*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1025*6c6750b7STaniya Das 	.clkr = {
1026*6c6750b7STaniya Das 		.enable_reg = 0x804c,
1027*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1028*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1029*6c6750b7STaniya Das 			.name = "disp_cc_mdss_byte1_clk",
1030*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1031*6c6750b7STaniya Das 				&disp_cc_mdss_byte1_clk_src.clkr.hw,
1032*6c6750b7STaniya Das 			},
1033*6c6750b7STaniya Das 			.num_parents = 1,
1034*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1035*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1036*6c6750b7STaniya Das 		},
1037*6c6750b7STaniya Das 	},
1038*6c6750b7STaniya Das };
1039*6c6750b7STaniya Das 
1040*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte1_intf_clk = {
1041*6c6750b7STaniya Das 	.halt_reg = 0x8050,
1042*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1043*6c6750b7STaniya Das 	.clkr = {
1044*6c6750b7STaniya Das 		.enable_reg = 0x8050,
1045*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1046*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1047*6c6750b7STaniya Das 			.name = "disp_cc_mdss_byte1_intf_clk",
1048*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1049*6c6750b7STaniya Das 				&disp_cc_mdss_byte1_div_clk_src.clkr.hw,
1050*6c6750b7STaniya Das 			},
1051*6c6750b7STaniya Das 			.num_parents = 1,
1052*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1053*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1054*6c6750b7STaniya Das 		},
1055*6c6750b7STaniya Das 	},
1056*6c6750b7STaniya Das };
1057*6c6750b7STaniya Das 
1058*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_aux_clk = {
1059*6c6750b7STaniya Das 	.halt_reg = 0x8074,
1060*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1061*6c6750b7STaniya Das 	.clkr = {
1062*6c6750b7STaniya Das 		.enable_reg = 0x8074,
1063*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1064*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1065*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_aux_clk",
1066*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1067*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_aux_clk_src.clkr.hw,
1068*6c6750b7STaniya Das 			},
1069*6c6750b7STaniya Das 			.num_parents = 1,
1070*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1071*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1072*6c6750b7STaniya Das 		},
1073*6c6750b7STaniya Das 	},
1074*6c6750b7STaniya Das };
1075*6c6750b7STaniya Das 
1076*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_crypto_clk = {
1077*6c6750b7STaniya Das 	.halt_reg = 0x8068,
1078*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1079*6c6750b7STaniya Das 	.clkr = {
1080*6c6750b7STaniya Das 		.enable_reg = 0x8068,
1081*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1082*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1083*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_crypto_clk",
1084*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1085*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
1086*6c6750b7STaniya Das 			},
1087*6c6750b7STaniya Das 			.num_parents = 1,
1088*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1089*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1090*6c6750b7STaniya Das 		},
1091*6c6750b7STaniya Das 	},
1092*6c6750b7STaniya Das };
1093*6c6750b7STaniya Das 
1094*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_link_clk = {
1095*6c6750b7STaniya Das 	.halt_reg = 0x805c,
1096*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1097*6c6750b7STaniya Das 	.clkr = {
1098*6c6750b7STaniya Das 		.enable_reg = 0x805c,
1099*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1100*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1101*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_link_clk",
1102*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1103*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
1104*6c6750b7STaniya Das 			},
1105*6c6750b7STaniya Das 			.num_parents = 1,
1106*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1107*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1108*6c6750b7STaniya Das 		},
1109*6c6750b7STaniya Das 	},
1110*6c6750b7STaniya Das };
1111*6c6750b7STaniya Das 
1112*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_link_intf_clk = {
1113*6c6750b7STaniya Das 	.halt_reg = 0x8064,
1114*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1115*6c6750b7STaniya Das 	.clkr = {
1116*6c6750b7STaniya Das 		.enable_reg = 0x8064,
1117*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1118*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1119*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_link_intf_clk",
1120*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1121*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1122*6c6750b7STaniya Das 			},
1123*6c6750b7STaniya Das 			.num_parents = 1,
1124*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1125*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1126*6c6750b7STaniya Das 		},
1127*6c6750b7STaniya Das 	},
1128*6c6750b7STaniya Das };
1129*6c6750b7STaniya Das 
1130*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_pixel0_clk = {
1131*6c6750b7STaniya Das 	.halt_reg = 0x806c,
1132*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1133*6c6750b7STaniya Das 	.clkr = {
1134*6c6750b7STaniya Das 		.enable_reg = 0x806c,
1135*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1136*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1137*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_pixel0_clk",
1138*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1139*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
1140*6c6750b7STaniya Das 			},
1141*6c6750b7STaniya Das 			.num_parents = 1,
1142*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1143*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1144*6c6750b7STaniya Das 		},
1145*6c6750b7STaniya Das 	},
1146*6c6750b7STaniya Das };
1147*6c6750b7STaniya Das 
1148*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_pixel1_clk = {
1149*6c6750b7STaniya Das 	.halt_reg = 0x8070,
1150*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1151*6c6750b7STaniya Das 	.clkr = {
1152*6c6750b7STaniya Das 		.enable_reg = 0x8070,
1153*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1154*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1155*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_pixel1_clk",
1156*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1157*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
1158*6c6750b7STaniya Das 			},
1159*6c6750b7STaniya Das 			.num_parents = 1,
1160*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1161*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1162*6c6750b7STaniya Das 		},
1163*6c6750b7STaniya Das 	},
1164*6c6750b7STaniya Das };
1165*6c6750b7STaniya Das 
1166*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_usb_router_link_intf_clk = {
1167*6c6750b7STaniya Das 	.halt_reg = 0x8060,
1168*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1169*6c6750b7STaniya Das 	.clkr = {
1170*6c6750b7STaniya Das 		.enable_reg = 0x8060,
1171*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1172*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1173*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx0_usb_router_link_intf_clk",
1174*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1175*6c6750b7STaniya Das 				&disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1176*6c6750b7STaniya Das 			},
1177*6c6750b7STaniya Das 			.num_parents = 1,
1178*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1179*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1180*6c6750b7STaniya Das 		},
1181*6c6750b7STaniya Das 	},
1182*6c6750b7STaniya Das };
1183*6c6750b7STaniya Das 
1184*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_aux_clk = {
1185*6c6750b7STaniya Das 	.halt_reg = 0x8090,
1186*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1187*6c6750b7STaniya Das 	.clkr = {
1188*6c6750b7STaniya Das 		.enable_reg = 0x8090,
1189*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1190*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1191*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_aux_clk",
1192*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1193*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_aux_clk_src.clkr.hw,
1194*6c6750b7STaniya Das 			},
1195*6c6750b7STaniya Das 			.num_parents = 1,
1196*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1197*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1198*6c6750b7STaniya Das 		},
1199*6c6750b7STaniya Das 	},
1200*6c6750b7STaniya Das };
1201*6c6750b7STaniya Das 
1202*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_crypto_clk = {
1203*6c6750b7STaniya Das 	.halt_reg = 0x808c,
1204*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1205*6c6750b7STaniya Das 	.clkr = {
1206*6c6750b7STaniya Das 		.enable_reg = 0x808c,
1207*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1208*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1209*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_crypto_clk",
1210*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1211*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
1212*6c6750b7STaniya Das 			},
1213*6c6750b7STaniya Das 			.num_parents = 1,
1214*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1215*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1216*6c6750b7STaniya Das 		},
1217*6c6750b7STaniya Das 	},
1218*6c6750b7STaniya Das };
1219*6c6750b7STaniya Das 
1220*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_link_clk = {
1221*6c6750b7STaniya Das 	.halt_reg = 0x8080,
1222*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1223*6c6750b7STaniya Das 	.clkr = {
1224*6c6750b7STaniya Das 		.enable_reg = 0x8080,
1225*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1226*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1227*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_link_clk",
1228*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1229*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
1230*6c6750b7STaniya Das 			},
1231*6c6750b7STaniya Das 			.num_parents = 1,
1232*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1233*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1234*6c6750b7STaniya Das 		},
1235*6c6750b7STaniya Das 	},
1236*6c6750b7STaniya Das };
1237*6c6750b7STaniya Das 
1238*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_link_intf_clk = {
1239*6c6750b7STaniya Das 	.halt_reg = 0x8088,
1240*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1241*6c6750b7STaniya Das 	.clkr = {
1242*6c6750b7STaniya Das 		.enable_reg = 0x8088,
1243*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1244*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1245*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_link_intf_clk",
1246*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1247*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1248*6c6750b7STaniya Das 			},
1249*6c6750b7STaniya Das 			.num_parents = 1,
1250*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1251*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1252*6c6750b7STaniya Das 		},
1253*6c6750b7STaniya Das 	},
1254*6c6750b7STaniya Das };
1255*6c6750b7STaniya Das 
1256*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_pixel0_clk = {
1257*6c6750b7STaniya Das 	.halt_reg = 0x8078,
1258*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1259*6c6750b7STaniya Das 	.clkr = {
1260*6c6750b7STaniya Das 		.enable_reg = 0x8078,
1261*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1262*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1263*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_pixel0_clk",
1264*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1265*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
1266*6c6750b7STaniya Das 			},
1267*6c6750b7STaniya Das 			.num_parents = 1,
1268*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1269*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1270*6c6750b7STaniya Das 		},
1271*6c6750b7STaniya Das 	},
1272*6c6750b7STaniya Das };
1273*6c6750b7STaniya Das 
1274*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_pixel1_clk = {
1275*6c6750b7STaniya Das 	.halt_reg = 0x807c,
1276*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1277*6c6750b7STaniya Das 	.clkr = {
1278*6c6750b7STaniya Das 		.enable_reg = 0x807c,
1279*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1280*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1281*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_pixel1_clk",
1282*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1283*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
1284*6c6750b7STaniya Das 			},
1285*6c6750b7STaniya Das 			.num_parents = 1,
1286*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1287*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1288*6c6750b7STaniya Das 		},
1289*6c6750b7STaniya Das 	},
1290*6c6750b7STaniya Das };
1291*6c6750b7STaniya Das 
1292*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_usb_router_link_intf_clk = {
1293*6c6750b7STaniya Das 	.halt_reg = 0x8084,
1294*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1295*6c6750b7STaniya Das 	.clkr = {
1296*6c6750b7STaniya Das 		.enable_reg = 0x8084,
1297*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1298*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1299*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx1_usb_router_link_intf_clk",
1300*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1301*6c6750b7STaniya Das 				&disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1302*6c6750b7STaniya Das 			},
1303*6c6750b7STaniya Das 			.num_parents = 1,
1304*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1305*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1306*6c6750b7STaniya Das 		},
1307*6c6750b7STaniya Das 	},
1308*6c6750b7STaniya Das };
1309*6c6750b7STaniya Das 
1310*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_aux_clk = {
1311*6c6750b7STaniya Das 	.halt_reg = 0x80a8,
1312*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1313*6c6750b7STaniya Das 	.clkr = {
1314*6c6750b7STaniya Das 		.enable_reg = 0x80a8,
1315*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1316*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1317*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_aux_clk",
1318*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1319*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_aux_clk_src.clkr.hw,
1320*6c6750b7STaniya Das 			},
1321*6c6750b7STaniya Das 			.num_parents = 1,
1322*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1323*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1324*6c6750b7STaniya Das 		},
1325*6c6750b7STaniya Das 	},
1326*6c6750b7STaniya Das };
1327*6c6750b7STaniya Das 
1328*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_crypto_clk = {
1329*6c6750b7STaniya Das 	.halt_reg = 0x80a4,
1330*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1331*6c6750b7STaniya Das 	.clkr = {
1332*6c6750b7STaniya Das 		.enable_reg = 0x80a4,
1333*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1334*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1335*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_crypto_clk",
1336*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1337*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
1338*6c6750b7STaniya Das 			},
1339*6c6750b7STaniya Das 			.num_parents = 1,
1340*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1341*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1342*6c6750b7STaniya Das 		},
1343*6c6750b7STaniya Das 	},
1344*6c6750b7STaniya Das };
1345*6c6750b7STaniya Das 
1346*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_link_clk = {
1347*6c6750b7STaniya Das 	.halt_reg = 0x809c,
1348*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1349*6c6750b7STaniya Das 	.clkr = {
1350*6c6750b7STaniya Das 		.enable_reg = 0x809c,
1351*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1352*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1353*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_link_clk",
1354*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1355*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
1356*6c6750b7STaniya Das 			},
1357*6c6750b7STaniya Das 			.num_parents = 1,
1358*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1359*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1360*6c6750b7STaniya Das 		},
1361*6c6750b7STaniya Das 	},
1362*6c6750b7STaniya Das };
1363*6c6750b7STaniya Das 
1364*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_link_intf_clk = {
1365*6c6750b7STaniya Das 	.halt_reg = 0x80a0,
1366*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1367*6c6750b7STaniya Das 	.clkr = {
1368*6c6750b7STaniya Das 		.enable_reg = 0x80a0,
1369*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1370*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1371*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_link_intf_clk",
1372*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1373*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
1374*6c6750b7STaniya Das 			},
1375*6c6750b7STaniya Das 			.num_parents = 1,
1376*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1377*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1378*6c6750b7STaniya Das 		},
1379*6c6750b7STaniya Das 	},
1380*6c6750b7STaniya Das };
1381*6c6750b7STaniya Das 
1382*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_pixel0_clk = {
1383*6c6750b7STaniya Das 	.halt_reg = 0x8094,
1384*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1385*6c6750b7STaniya Das 	.clkr = {
1386*6c6750b7STaniya Das 		.enable_reg = 0x8094,
1387*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1388*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1389*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_pixel0_clk",
1390*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1391*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
1392*6c6750b7STaniya Das 			},
1393*6c6750b7STaniya Das 			.num_parents = 1,
1394*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1395*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1396*6c6750b7STaniya Das 		},
1397*6c6750b7STaniya Das 	},
1398*6c6750b7STaniya Das };
1399*6c6750b7STaniya Das 
1400*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_pixel1_clk = {
1401*6c6750b7STaniya Das 	.halt_reg = 0x8098,
1402*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1403*6c6750b7STaniya Das 	.clkr = {
1404*6c6750b7STaniya Das 		.enable_reg = 0x8098,
1405*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1406*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1407*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx2_pixel1_clk",
1408*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1409*6c6750b7STaniya Das 				&disp_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
1410*6c6750b7STaniya Das 			},
1411*6c6750b7STaniya Das 			.num_parents = 1,
1412*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1413*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1414*6c6750b7STaniya Das 		},
1415*6c6750b7STaniya Das 	},
1416*6c6750b7STaniya Das };
1417*6c6750b7STaniya Das 
1418*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_aux_clk = {
1419*6c6750b7STaniya Das 	.halt_reg = 0x80b8,
1420*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1421*6c6750b7STaniya Das 	.clkr = {
1422*6c6750b7STaniya Das 		.enable_reg = 0x80b8,
1423*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1424*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1425*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx3_aux_clk",
1426*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1427*6c6750b7STaniya Das 				&disp_cc_mdss_dptx3_aux_clk_src.clkr.hw,
1428*6c6750b7STaniya Das 			},
1429*6c6750b7STaniya Das 			.num_parents = 1,
1430*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1431*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1432*6c6750b7STaniya Das 		},
1433*6c6750b7STaniya Das 	},
1434*6c6750b7STaniya Das };
1435*6c6750b7STaniya Das 
1436*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_crypto_clk = {
1437*6c6750b7STaniya Das 	.halt_reg = 0x80bc,
1438*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1439*6c6750b7STaniya Das 	.clkr = {
1440*6c6750b7STaniya Das 		.enable_reg = 0x80bc,
1441*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1442*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1443*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx3_crypto_clk",
1444*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1445*6c6750b7STaniya Das 				&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
1446*6c6750b7STaniya Das 			},
1447*6c6750b7STaniya Das 			.num_parents = 1,
1448*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1449*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1450*6c6750b7STaniya Das 		},
1451*6c6750b7STaniya Das 	},
1452*6c6750b7STaniya Das };
1453*6c6750b7STaniya Das 
1454*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_link_clk = {
1455*6c6750b7STaniya Das 	.halt_reg = 0x80b0,
1456*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1457*6c6750b7STaniya Das 	.clkr = {
1458*6c6750b7STaniya Das 		.enable_reg = 0x80b0,
1459*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1460*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1461*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx3_link_clk",
1462*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1463*6c6750b7STaniya Das 				&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
1464*6c6750b7STaniya Das 			},
1465*6c6750b7STaniya Das 			.num_parents = 1,
1466*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1467*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1468*6c6750b7STaniya Das 		},
1469*6c6750b7STaniya Das 	},
1470*6c6750b7STaniya Das };
1471*6c6750b7STaniya Das 
1472*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_link_intf_clk = {
1473*6c6750b7STaniya Das 	.halt_reg = 0x80b4,
1474*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1475*6c6750b7STaniya Das 	.clkr = {
1476*6c6750b7STaniya Das 		.enable_reg = 0x80b4,
1477*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1478*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1479*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx3_link_intf_clk",
1480*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1481*6c6750b7STaniya Das 				&disp_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
1482*6c6750b7STaniya Das 			},
1483*6c6750b7STaniya Das 			.num_parents = 1,
1484*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1485*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1486*6c6750b7STaniya Das 		},
1487*6c6750b7STaniya Das 	},
1488*6c6750b7STaniya Das };
1489*6c6750b7STaniya Das 
1490*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_pixel0_clk = {
1491*6c6750b7STaniya Das 	.halt_reg = 0x80ac,
1492*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1493*6c6750b7STaniya Das 	.clkr = {
1494*6c6750b7STaniya Das 		.enable_reg = 0x80ac,
1495*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1496*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1497*6c6750b7STaniya Das 			.name = "disp_cc_mdss_dptx3_pixel0_clk",
1498*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1499*6c6750b7STaniya Das 				&disp_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
1500*6c6750b7STaniya Das 			},
1501*6c6750b7STaniya Das 			.num_parents = 1,
1502*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1503*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1504*6c6750b7STaniya Das 		},
1505*6c6750b7STaniya Das 	},
1506*6c6750b7STaniya Das };
1507*6c6750b7STaniya Das 
1508*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_esc0_clk = {
1509*6c6750b7STaniya Das 	.halt_reg = 0x8054,
1510*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1511*6c6750b7STaniya Das 	.clkr = {
1512*6c6750b7STaniya Das 		.enable_reg = 0x8054,
1513*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1514*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1515*6c6750b7STaniya Das 			.name = "disp_cc_mdss_esc0_clk",
1516*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1517*6c6750b7STaniya Das 				&disp_cc_mdss_esc0_clk_src.clkr.hw,
1518*6c6750b7STaniya Das 			},
1519*6c6750b7STaniya Das 			.num_parents = 1,
1520*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1521*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1522*6c6750b7STaniya Das 		},
1523*6c6750b7STaniya Das 	},
1524*6c6750b7STaniya Das };
1525*6c6750b7STaniya Das 
1526*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_esc1_clk = {
1527*6c6750b7STaniya Das 	.halt_reg = 0x8058,
1528*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1529*6c6750b7STaniya Das 	.clkr = {
1530*6c6750b7STaniya Das 		.enable_reg = 0x8058,
1531*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1532*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1533*6c6750b7STaniya Das 			.name = "disp_cc_mdss_esc1_clk",
1534*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1535*6c6750b7STaniya Das 				&disp_cc_mdss_esc1_clk_src.clkr.hw,
1536*6c6750b7STaniya Das 			},
1537*6c6750b7STaniya Das 			.num_parents = 1,
1538*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1539*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1540*6c6750b7STaniya Das 		},
1541*6c6750b7STaniya Das 	},
1542*6c6750b7STaniya Das };
1543*6c6750b7STaniya Das 
1544*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp1_clk = {
1545*6c6750b7STaniya Das 	.halt_reg = 0xa004,
1546*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1547*6c6750b7STaniya Das 	.clkr = {
1548*6c6750b7STaniya Das 		.enable_reg = 0xa004,
1549*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1550*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1551*6c6750b7STaniya Das 			.name = "disp_cc_mdss_mdp1_clk",
1552*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1553*6c6750b7STaniya Das 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
1554*6c6750b7STaniya Das 			},
1555*6c6750b7STaniya Das 			.num_parents = 1,
1556*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1557*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1558*6c6750b7STaniya Das 		},
1559*6c6750b7STaniya Das 	},
1560*6c6750b7STaniya Das };
1561*6c6750b7STaniya Das 
1562*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_clk = {
1563*6c6750b7STaniya Das 	.halt_reg = 0x8010,
1564*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1565*6c6750b7STaniya Das 	.clkr = {
1566*6c6750b7STaniya Das 		.enable_reg = 0x8010,
1567*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1568*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1569*6c6750b7STaniya Das 			.name = "disp_cc_mdss_mdp_clk",
1570*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1571*6c6750b7STaniya Das 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
1572*6c6750b7STaniya Das 			},
1573*6c6750b7STaniya Das 			.num_parents = 1,
1574*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1575*6c6750b7STaniya Das 			.ops = &clk_branch2_aon_ops,
1576*6c6750b7STaniya Das 		},
1577*6c6750b7STaniya Das 	},
1578*6c6750b7STaniya Das };
1579*6c6750b7STaniya Das 
1580*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_lut1_clk = {
1581*6c6750b7STaniya Das 	.halt_reg = 0xa014,
1582*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1583*6c6750b7STaniya Das 	.clkr = {
1584*6c6750b7STaniya Das 		.enable_reg = 0xa014,
1585*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1586*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1587*6c6750b7STaniya Das 			.name = "disp_cc_mdss_mdp_lut1_clk",
1588*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1589*6c6750b7STaniya Das 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
1590*6c6750b7STaniya Das 			},
1591*6c6750b7STaniya Das 			.num_parents = 1,
1592*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1593*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1594*6c6750b7STaniya Das 		},
1595*6c6750b7STaniya Das 	},
1596*6c6750b7STaniya Das };
1597*6c6750b7STaniya Das 
1598*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_lut_clk = {
1599*6c6750b7STaniya Das 	.halt_reg = 0x8020,
1600*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1601*6c6750b7STaniya Das 	.clkr = {
1602*6c6750b7STaniya Das 		.enable_reg = 0x8020,
1603*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1604*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1605*6c6750b7STaniya Das 			.name = "disp_cc_mdss_mdp_lut_clk",
1606*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1607*6c6750b7STaniya Das 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
1608*6c6750b7STaniya Das 			},
1609*6c6750b7STaniya Das 			.num_parents = 1,
1610*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1611*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1612*6c6750b7STaniya Das 		},
1613*6c6750b7STaniya Das 	},
1614*6c6750b7STaniya Das };
1615*6c6750b7STaniya Das 
1616*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_ss_ip_clk = {
1617*6c6750b7STaniya Das 	.halt_reg = 0x8030,
1618*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1619*6c6750b7STaniya Das 	.clkr = {
1620*6c6750b7STaniya Das 		.enable_reg = 0x8030,
1621*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1622*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1623*6c6750b7STaniya Das 			.name = "disp_cc_mdss_mdp_ss_ip_clk",
1624*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1625*6c6750b7STaniya Das 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
1626*6c6750b7STaniya Das 			},
1627*6c6750b7STaniya Das 			.num_parents = 1,
1628*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1629*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1630*6c6750b7STaniya Das 		},
1631*6c6750b7STaniya Das 	},
1632*6c6750b7STaniya Das };
1633*6c6750b7STaniya Das 
1634*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_non_gdsc_ahb_clk = {
1635*6c6750b7STaniya Das 	.halt_reg = 0xc004,
1636*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1637*6c6750b7STaniya Das 	.clkr = {
1638*6c6750b7STaniya Das 		.enable_reg = 0xc004,
1639*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1640*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1641*6c6750b7STaniya Das 			.name = "disp_cc_mdss_non_gdsc_ahb_clk",
1642*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1643*6c6750b7STaniya Das 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
1644*6c6750b7STaniya Das 			},
1645*6c6750b7STaniya Das 			.num_parents = 1,
1646*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1647*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1648*6c6750b7STaniya Das 		},
1649*6c6750b7STaniya Das 	},
1650*6c6750b7STaniya Das };
1651*6c6750b7STaniya Das 
1652*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk0_clk = {
1653*6c6750b7STaniya Das 	.halt_reg = 0x8004,
1654*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1655*6c6750b7STaniya Das 	.clkr = {
1656*6c6750b7STaniya Das 		.enable_reg = 0x8004,
1657*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1658*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1659*6c6750b7STaniya Das 			.name = "disp_cc_mdss_pclk0_clk",
1660*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1661*6c6750b7STaniya Das 				&disp_cc_mdss_pclk0_clk_src.clkr.hw,
1662*6c6750b7STaniya Das 			},
1663*6c6750b7STaniya Das 			.num_parents = 1,
1664*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1665*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1666*6c6750b7STaniya Das 		},
1667*6c6750b7STaniya Das 	},
1668*6c6750b7STaniya Das };
1669*6c6750b7STaniya Das 
1670*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk1_clk = {
1671*6c6750b7STaniya Das 	.halt_reg = 0x8008,
1672*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1673*6c6750b7STaniya Das 	.clkr = {
1674*6c6750b7STaniya Das 		.enable_reg = 0x8008,
1675*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1676*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1677*6c6750b7STaniya Das 			.name = "disp_cc_mdss_pclk1_clk",
1678*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1679*6c6750b7STaniya Das 				&disp_cc_mdss_pclk1_clk_src.clkr.hw,
1680*6c6750b7STaniya Das 			},
1681*6c6750b7STaniya Das 			.num_parents = 1,
1682*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1683*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1684*6c6750b7STaniya Das 		},
1685*6c6750b7STaniya Das 	},
1686*6c6750b7STaniya Das };
1687*6c6750b7STaniya Das 
1688*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk2_clk = {
1689*6c6750b7STaniya Das 	.halt_reg = 0x800c,
1690*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1691*6c6750b7STaniya Das 	.clkr = {
1692*6c6750b7STaniya Das 		.enable_reg = 0x800c,
1693*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1694*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1695*6c6750b7STaniya Das 			.name = "disp_cc_mdss_pclk2_clk",
1696*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1697*6c6750b7STaniya Das 				&disp_cc_mdss_pclk2_clk_src.clkr.hw,
1698*6c6750b7STaniya Das 			},
1699*6c6750b7STaniya Das 			.num_parents = 1,
1700*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1701*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1702*6c6750b7STaniya Das 		},
1703*6c6750b7STaniya Das 	},
1704*6c6750b7STaniya Das };
1705*6c6750b7STaniya Das 
1706*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_vsync1_clk = {
1707*6c6750b7STaniya Das 	.halt_reg = 0xa024,
1708*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1709*6c6750b7STaniya Das 	.clkr = {
1710*6c6750b7STaniya Das 		.enable_reg = 0xa024,
1711*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1712*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1713*6c6750b7STaniya Das 			.name = "disp_cc_mdss_vsync1_clk",
1714*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1715*6c6750b7STaniya Das 				&disp_cc_mdss_vsync_clk_src.clkr.hw,
1716*6c6750b7STaniya Das 			},
1717*6c6750b7STaniya Das 			.num_parents = 1,
1718*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1719*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1720*6c6750b7STaniya Das 		},
1721*6c6750b7STaniya Das 	},
1722*6c6750b7STaniya Das };
1723*6c6750b7STaniya Das 
1724*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_vsync_clk = {
1725*6c6750b7STaniya Das 	.halt_reg = 0x8040,
1726*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1727*6c6750b7STaniya Das 	.clkr = {
1728*6c6750b7STaniya Das 		.enable_reg = 0x8040,
1729*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1730*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1731*6c6750b7STaniya Das 			.name = "disp_cc_mdss_vsync_clk",
1732*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1733*6c6750b7STaniya Das 				&disp_cc_mdss_vsync_clk_src.clkr.hw,
1734*6c6750b7STaniya Das 			},
1735*6c6750b7STaniya Das 			.num_parents = 1,
1736*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1737*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1738*6c6750b7STaniya Das 		},
1739*6c6750b7STaniya Das 	},
1740*6c6750b7STaniya Das };
1741*6c6750b7STaniya Das 
1742*6c6750b7STaniya Das static struct clk_branch disp_cc_osc_clk = {
1743*6c6750b7STaniya Das 	.halt_reg = 0x80c8,
1744*6c6750b7STaniya Das 	.halt_check = BRANCH_HALT,
1745*6c6750b7STaniya Das 	.clkr = {
1746*6c6750b7STaniya Das 		.enable_reg = 0x80c8,
1747*6c6750b7STaniya Das 		.enable_mask = BIT(0),
1748*6c6750b7STaniya Das 		.hw.init = &(const struct clk_init_data) {
1749*6c6750b7STaniya Das 			.name = "disp_cc_osc_clk",
1750*6c6750b7STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1751*6c6750b7STaniya Das 				&disp_cc_osc_clk_src.clkr.hw,
1752*6c6750b7STaniya Das 			},
1753*6c6750b7STaniya Das 			.num_parents = 1,
1754*6c6750b7STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1755*6c6750b7STaniya Das 			.ops = &clk_branch2_ops,
1756*6c6750b7STaniya Das 		},
1757*6c6750b7STaniya Das 	},
1758*6c6750b7STaniya Das };
1759*6c6750b7STaniya Das 
1760*6c6750b7STaniya Das static struct gdsc disp_cc_mdss_core_gdsc = {
1761*6c6750b7STaniya Das 	.gdscr = 0x9000,
1762*6c6750b7STaniya Das 	.en_rest_wait_val = 0x2,
1763*6c6750b7STaniya Das 	.en_few_wait_val = 0x2,
1764*6c6750b7STaniya Das 	.clk_dis_wait_val = 0xf,
1765*6c6750b7STaniya Das 	.pd = {
1766*6c6750b7STaniya Das 		.name = "disp_cc_mdss_core_gdsc",
1767*6c6750b7STaniya Das 	},
1768*6c6750b7STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1769*6c6750b7STaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER,
1770*6c6750b7STaniya Das };
1771*6c6750b7STaniya Das 
1772*6c6750b7STaniya Das static struct gdsc disp_cc_mdss_core_int2_gdsc = {
1773*6c6750b7STaniya Das 	.gdscr = 0xb000,
1774*6c6750b7STaniya Das 	.en_rest_wait_val = 0x2,
1775*6c6750b7STaniya Das 	.en_few_wait_val = 0x2,
1776*6c6750b7STaniya Das 	.clk_dis_wait_val = 0xf,
1777*6c6750b7STaniya Das 	.pd = {
1778*6c6750b7STaniya Das 		.name = "disp_cc_mdss_core_int2_gdsc",
1779*6c6750b7STaniya Das 	},
1780*6c6750b7STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1781*6c6750b7STaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER,
1782*6c6750b7STaniya Das };
1783*6c6750b7STaniya Das 
1784*6c6750b7STaniya Das static struct clk_regmap *disp_cc_kaanapali_clocks[] = {
1785*6c6750b7STaniya Das 	[DISP_CC_ESYNC0_CLK] = &disp_cc_esync0_clk.clkr,
1786*6c6750b7STaniya Das 	[DISP_CC_ESYNC0_CLK_SRC] = &disp_cc_esync0_clk_src.clkr,
1787*6c6750b7STaniya Das 	[DISP_CC_ESYNC1_CLK] = &disp_cc_esync1_clk.clkr,
1788*6c6750b7STaniya Das 	[DISP_CC_ESYNC1_CLK_SRC] = &disp_cc_esync1_clk_src.clkr,
1789*6c6750b7STaniya Das 	[DISP_CC_MDSS_ACCU_SHIFT_CLK] = &disp_cc_mdss_accu_shift_clk.clkr,
1790*6c6750b7STaniya Das 	[DISP_CC_MDSS_AHB1_CLK] = &disp_cc_mdss_ahb1_clk.clkr,
1791*6c6750b7STaniya Das 	[DISP_CC_MDSS_AHB_CLK] = &disp_cc_mdss_ahb_clk.clkr,
1792*6c6750b7STaniya Das 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp_cc_mdss_ahb_clk_src.clkr,
1793*6c6750b7STaniya Das 	[DISP_CC_MDSS_AHB_SWI_CLK] = &disp_cc_mdss_ahb_swi_clk.clkr,
1794*6c6750b7STaniya Das 	[DISP_CC_MDSS_AHB_SWI_DIV_CLK_SRC] = &disp_cc_mdss_ahb_swi_div_clk_src.clkr,
1795*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE0_CLK] = &disp_cc_mdss_byte0_clk.clkr,
1796*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp_cc_mdss_byte0_clk_src.clkr,
1797*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp_cc_mdss_byte0_div_clk_src.clkr,
1798*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp_cc_mdss_byte0_intf_clk.clkr,
1799*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE1_CLK] = &disp_cc_mdss_byte1_clk.clkr,
1800*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp_cc_mdss_byte1_clk_src.clkr,
1801*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp_cc_mdss_byte1_div_clk_src.clkr,
1802*6c6750b7STaniya Das 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp_cc_mdss_byte1_intf_clk.clkr,
1803*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp_cc_mdss_dptx0_aux_clk.clkr,
1804*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp_cc_mdss_dptx0_aux_clk_src.clkr,
1805*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_CRYPTO_CLK] = &disp_cc_mdss_dptx0_crypto_clk.clkr,
1806*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp_cc_mdss_dptx0_link_clk.clkr,
1807*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp_cc_mdss_dptx0_link_clk_src.clkr,
1808*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx0_link_div_clk_src.clkr,
1809*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp_cc_mdss_dptx0_link_intf_clk.clkr,
1810*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp_cc_mdss_dptx0_pixel0_clk.clkr,
1811*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx0_pixel0_clk_src.clkr,
1812*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp_cc_mdss_dptx0_pixel1_clk.clkr,
1813*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx0_pixel1_clk_src.clkr,
1814*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] =
1815*6c6750b7STaniya Das 		&disp_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
1816*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp_cc_mdss_dptx1_aux_clk.clkr,
1817*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp_cc_mdss_dptx1_aux_clk_src.clkr,
1818*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_CRYPTO_CLK] = &disp_cc_mdss_dptx1_crypto_clk.clkr,
1819*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp_cc_mdss_dptx1_link_clk.clkr,
1820*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp_cc_mdss_dptx1_link_clk_src.clkr,
1821*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx1_link_div_clk_src.clkr,
1822*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp_cc_mdss_dptx1_link_intf_clk.clkr,
1823*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp_cc_mdss_dptx1_pixel0_clk.clkr,
1824*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx1_pixel0_clk_src.clkr,
1825*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp_cc_mdss_dptx1_pixel1_clk.clkr,
1826*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx1_pixel1_clk_src.clkr,
1827*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] =
1828*6c6750b7STaniya Das 		&disp_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
1829*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp_cc_mdss_dptx2_aux_clk.clkr,
1830*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp_cc_mdss_dptx2_aux_clk_src.clkr,
1831*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_CRYPTO_CLK] = &disp_cc_mdss_dptx2_crypto_clk.clkr,
1832*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp_cc_mdss_dptx2_link_clk.clkr,
1833*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp_cc_mdss_dptx2_link_clk_src.clkr,
1834*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx2_link_div_clk_src.clkr,
1835*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp_cc_mdss_dptx2_link_intf_clk.clkr,
1836*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp_cc_mdss_dptx2_pixel0_clk.clkr,
1837*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx2_pixel0_clk_src.clkr,
1838*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp_cc_mdss_dptx2_pixel1_clk.clkr,
1839*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx2_pixel1_clk_src.clkr,
1840*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp_cc_mdss_dptx3_aux_clk.clkr,
1841*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp_cc_mdss_dptx3_aux_clk_src.clkr,
1842*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_CRYPTO_CLK] = &disp_cc_mdss_dptx3_crypto_clk.clkr,
1843*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp_cc_mdss_dptx3_link_clk.clkr,
1844*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp_cc_mdss_dptx3_link_clk_src.clkr,
1845*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx3_link_div_clk_src.clkr,
1846*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp_cc_mdss_dptx3_link_intf_clk.clkr,
1847*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp_cc_mdss_dptx3_pixel0_clk.clkr,
1848*6c6750b7STaniya Das 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx3_pixel0_clk_src.clkr,
1849*6c6750b7STaniya Das 	[DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr,
1850*6c6750b7STaniya Das 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr,
1851*6c6750b7STaniya Das 	[DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr,
1852*6c6750b7STaniya Das 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp_cc_mdss_esc1_clk_src.clkr,
1853*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP1_CLK] = &disp_cc_mdss_mdp1_clk.clkr,
1854*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP_CLK] = &disp_cc_mdss_mdp_clk.clkr,
1855*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp_cc_mdss_mdp_clk_src.clkr,
1856*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp_cc_mdss_mdp_lut1_clk.clkr,
1857*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp_cc_mdss_mdp_lut_clk.clkr,
1858*6c6750b7STaniya Das 	[DISP_CC_MDSS_MDP_SS_IP_CLK] = &disp_cc_mdss_mdp_ss_ip_clk.clkr,
1859*6c6750b7STaniya Das 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp_cc_mdss_non_gdsc_ahb_clk.clkr,
1860*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK0_CLK] = &disp_cc_mdss_pclk0_clk.clkr,
1861*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp_cc_mdss_pclk0_clk_src.clkr,
1862*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK1_CLK] = &disp_cc_mdss_pclk1_clk.clkr,
1863*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp_cc_mdss_pclk1_clk_src.clkr,
1864*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK2_CLK] = &disp_cc_mdss_pclk2_clk.clkr,
1865*6c6750b7STaniya Das 	[DISP_CC_MDSS_PCLK2_CLK_SRC] = &disp_cc_mdss_pclk2_clk_src.clkr,
1866*6c6750b7STaniya Das 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp_cc_mdss_vsync1_clk.clkr,
1867*6c6750b7STaniya Das 	[DISP_CC_MDSS_VSYNC_CLK] = &disp_cc_mdss_vsync_clk.clkr,
1868*6c6750b7STaniya Das 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp_cc_mdss_vsync_clk_src.clkr,
1869*6c6750b7STaniya Das 	[DISP_CC_OSC_CLK] = &disp_cc_osc_clk.clkr,
1870*6c6750b7STaniya Das 	[DISP_CC_OSC_CLK_SRC] = &disp_cc_osc_clk_src.clkr,
1871*6c6750b7STaniya Das 	[DISP_CC_PLL0] = &disp_cc_pll0.clkr,
1872*6c6750b7STaniya Das 	[DISP_CC_PLL1] = &disp_cc_pll1.clkr,
1873*6c6750b7STaniya Das 	[DISP_CC_PLL2] = &disp_cc_pll2.clkr,
1874*6c6750b7STaniya Das };
1875*6c6750b7STaniya Das 
1876*6c6750b7STaniya Das static struct gdsc *disp_cc_kaanapali_gdscs[] = {
1877*6c6750b7STaniya Das 	[DISP_CC_MDSS_CORE_GDSC] = &disp_cc_mdss_core_gdsc,
1878*6c6750b7STaniya Das 	[DISP_CC_MDSS_CORE_INT2_GDSC] = &disp_cc_mdss_core_int2_gdsc,
1879*6c6750b7STaniya Das };
1880*6c6750b7STaniya Das 
1881*6c6750b7STaniya Das static const struct qcom_reset_map disp_cc_kaanapali_resets[] = {
1882*6c6750b7STaniya Das 	[DISP_CC_MDSS_CORE_BCR] = { 0x8000 },
1883*6c6750b7STaniya Das 	[DISP_CC_MDSS_CORE_INT2_BCR] = { 0xa000 },
1884*6c6750b7STaniya Das 	[DISP_CC_MDSS_RSCC_BCR] = { 0xc000 },
1885*6c6750b7STaniya Das };
1886*6c6750b7STaniya Das 
1887*6c6750b7STaniya Das static struct clk_alpha_pll *disp_cc_kaanapali_plls[] = {
1888*6c6750b7STaniya Das 	&disp_cc_pll0,
1889*6c6750b7STaniya Das 	&disp_cc_pll1,
1890*6c6750b7STaniya Das 	&disp_cc_pll2,
1891*6c6750b7STaniya Das };
1892*6c6750b7STaniya Das 
1893*6c6750b7STaniya Das static u32 disp_cc_kaanapali_critical_cbcrs[] = {
1894*6c6750b7STaniya Das 	0xe064, /* DISP_CC_SLEEP_CLK */
1895*6c6750b7STaniya Das 	0xe05c, /* DISP_CC_XO_CLK */
1896*6c6750b7STaniya Das 	0xc00c, /* DISP_CC_MDSS_RSCC_AHB_CLK */
1897*6c6750b7STaniya Das 	0xc008, /* DISP_CC_MDSS_RSCC_VSYNC_CLK */
1898*6c6750b7STaniya Das };
1899*6c6750b7STaniya Das 
1900*6c6750b7STaniya Das static const struct regmap_config disp_cc_kaanapali_regmap_config = {
1901*6c6750b7STaniya Das 	.reg_bits = 32,
1902*6c6750b7STaniya Das 	.reg_stride = 4,
1903*6c6750b7STaniya Das 	.val_bits = 32,
1904*6c6750b7STaniya Das 	.max_register = 0x12094,
1905*6c6750b7STaniya Das 	.fast_io = true,
1906*6c6750b7STaniya Das };
1907*6c6750b7STaniya Das 
1908*6c6750b7STaniya Das static void clk_kaanapali_regs_configure(struct device *dev, struct regmap *regmap)
1909*6c6750b7STaniya Das {
1910*6c6750b7STaniya Das 	/* Enable clock gating for MDP clocks */
1911*6c6750b7STaniya Das 	regmap_update_bits(regmap, DISP_CC_MISC_CMD, BIT(4), BIT(4));
1912*6c6750b7STaniya Das }
1913*6c6750b7STaniya Das 
1914*6c6750b7STaniya Das static struct qcom_cc_driver_data disp_cc_kaanapali_driver_data = {
1915*6c6750b7STaniya Das 	.alpha_plls = disp_cc_kaanapali_plls,
1916*6c6750b7STaniya Das 	.num_alpha_plls = ARRAY_SIZE(disp_cc_kaanapali_plls),
1917*6c6750b7STaniya Das 	.clk_cbcrs = disp_cc_kaanapali_critical_cbcrs,
1918*6c6750b7STaniya Das 	.num_clk_cbcrs = ARRAY_SIZE(disp_cc_kaanapali_critical_cbcrs),
1919*6c6750b7STaniya Das 	.clk_regs_configure = clk_kaanapali_regs_configure,
1920*6c6750b7STaniya Das };
1921*6c6750b7STaniya Das 
1922*6c6750b7STaniya Das static const struct qcom_cc_desc disp_cc_kaanapali_desc = {
1923*6c6750b7STaniya Das 	.config = &disp_cc_kaanapali_regmap_config,
1924*6c6750b7STaniya Das 	.clks = disp_cc_kaanapali_clocks,
1925*6c6750b7STaniya Das 	.num_clks = ARRAY_SIZE(disp_cc_kaanapali_clocks),
1926*6c6750b7STaniya Das 	.resets = disp_cc_kaanapali_resets,
1927*6c6750b7STaniya Das 	.num_resets = ARRAY_SIZE(disp_cc_kaanapali_resets),
1928*6c6750b7STaniya Das 	.gdscs = disp_cc_kaanapali_gdscs,
1929*6c6750b7STaniya Das 	.num_gdscs = ARRAY_SIZE(disp_cc_kaanapali_gdscs),
1930*6c6750b7STaniya Das 	.use_rpm = true,
1931*6c6750b7STaniya Das 	.driver_data = &disp_cc_kaanapali_driver_data,
1932*6c6750b7STaniya Das };
1933*6c6750b7STaniya Das 
1934*6c6750b7STaniya Das static const struct of_device_id disp_cc_kaanapali_match_table[] = {
1935*6c6750b7STaniya Das 	{ .compatible = "qcom,kaanapali-dispcc" },
1936*6c6750b7STaniya Das 	{ }
1937*6c6750b7STaniya Das };
1938*6c6750b7STaniya Das MODULE_DEVICE_TABLE(of, disp_cc_kaanapali_match_table);
1939*6c6750b7STaniya Das 
1940*6c6750b7STaniya Das static int disp_cc_kaanapali_probe(struct platform_device *pdev)
1941*6c6750b7STaniya Das {
1942*6c6750b7STaniya Das 	return qcom_cc_probe(pdev, &disp_cc_kaanapali_desc);
1943*6c6750b7STaniya Das }
1944*6c6750b7STaniya Das 
1945*6c6750b7STaniya Das static struct platform_driver disp_cc_kaanapali_driver = {
1946*6c6750b7STaniya Das 	.probe = disp_cc_kaanapali_probe,
1947*6c6750b7STaniya Das 	.driver = {
1948*6c6750b7STaniya Das 		.name = "dispcc-kaanapali",
1949*6c6750b7STaniya Das 		.of_match_table = disp_cc_kaanapali_match_table,
1950*6c6750b7STaniya Das 	},
1951*6c6750b7STaniya Das };
1952*6c6750b7STaniya Das 
1953*6c6750b7STaniya Das module_platform_driver(disp_cc_kaanapali_driver);
1954*6c6750b7STaniya Das 
1955*6c6750b7STaniya Das MODULE_DESCRIPTION("QTI DISPCC Kaanapali Driver");
1956*6c6750b7STaniya Das MODULE_LICENSE("GPL");
1957