1*4a66e76fSBjorn Andersson // SPDX-License-Identifier: GPL-2.0-only
2*4a66e76fSBjorn Andersson /*
3*4a66e76fSBjorn Andersson  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4*4a66e76fSBjorn Andersson  * Copyright (c) 2022, Linaro Ltd.
5*4a66e76fSBjorn Andersson  */
6*4a66e76fSBjorn Andersson 
7*4a66e76fSBjorn Andersson #include <linux/clk-provider.h>
8*4a66e76fSBjorn Andersson #include <linux/module.h>
9*4a66e76fSBjorn Andersson #include <linux/platform_device.h>
10*4a66e76fSBjorn Andersson #include <linux/property.h>
11*4a66e76fSBjorn Andersson #include <linux/pm_clock.h>
12*4a66e76fSBjorn Andersson #include <linux/pm_runtime.h>
13*4a66e76fSBjorn Andersson #include <linux/regmap.h>
14*4a66e76fSBjorn Andersson #include <linux/reset-controller.h>
15*4a66e76fSBjorn Andersson 
16*4a66e76fSBjorn Andersson #include <dt-bindings/clock/qcom,dispcc-sc8280xp.h>
17*4a66e76fSBjorn Andersson 
18*4a66e76fSBjorn Andersson #include "clk-alpha-pll.h"
19*4a66e76fSBjorn Andersson #include "clk-branch.h"
20*4a66e76fSBjorn Andersson #include "clk-rcg.h"
21*4a66e76fSBjorn Andersson #include "clk-regmap-divider.h"
22*4a66e76fSBjorn Andersson #include "common.h"
23*4a66e76fSBjorn Andersson #include "gdsc.h"
24*4a66e76fSBjorn Andersson #include "reset.h"
25*4a66e76fSBjorn Andersson 
26*4a66e76fSBjorn Andersson /* Need to match the order of clocks in DT binding */
27*4a66e76fSBjorn Andersson enum {
28*4a66e76fSBjorn Andersson 	DT_IFACE,
29*4a66e76fSBjorn Andersson 	DT_BI_TCXO,
30*4a66e76fSBjorn Andersson 	DT_SLEEP_CLK,
31*4a66e76fSBjorn Andersson 	DT_DP0_PHY_PLL_LINK_CLK,
32*4a66e76fSBjorn Andersson 	DT_DP0_PHY_PLL_VCO_DIV_CLK,
33*4a66e76fSBjorn Andersson 	DT_DP1_PHY_PLL_LINK_CLK,
34*4a66e76fSBjorn Andersson 	DT_DP1_PHY_PLL_VCO_DIV_CLK,
35*4a66e76fSBjorn Andersson 	DT_DP2_PHY_PLL_LINK_CLK,
36*4a66e76fSBjorn Andersson 	DT_DP2_PHY_PLL_VCO_DIV_CLK,
37*4a66e76fSBjorn Andersson 	DT_DP3_PHY_PLL_LINK_CLK,
38*4a66e76fSBjorn Andersson 	DT_DP3_PHY_PLL_VCO_DIV_CLK,
39*4a66e76fSBjorn Andersson 	DT_DSI0_PHY_PLL_OUT_BYTECLK,
40*4a66e76fSBjorn Andersson 	DT_DSI0_PHY_PLL_OUT_DSICLK,
41*4a66e76fSBjorn Andersson 	DT_DSI1_PHY_PLL_OUT_BYTECLK,
42*4a66e76fSBjorn Andersson 	DT_DSI1_PHY_PLL_OUT_DSICLK,
43*4a66e76fSBjorn Andersson };
44*4a66e76fSBjorn Andersson 
45*4a66e76fSBjorn Andersson enum {
46*4a66e76fSBjorn Andersson 	P_BI_TCXO,
47*4a66e76fSBjorn Andersson 	P_DP0_PHY_PLL_LINK_CLK,
48*4a66e76fSBjorn Andersson 	P_DP0_PHY_PLL_VCO_DIV_CLK,
49*4a66e76fSBjorn Andersson 	P_DP1_PHY_PLL_LINK_CLK,
50*4a66e76fSBjorn Andersson 	P_DP1_PHY_PLL_VCO_DIV_CLK,
51*4a66e76fSBjorn Andersson 	P_DP2_PHY_PLL_LINK_CLK,
52*4a66e76fSBjorn Andersson 	P_DP2_PHY_PLL_VCO_DIV_CLK,
53*4a66e76fSBjorn Andersson 	P_DP3_PHY_PLL_LINK_CLK,
54*4a66e76fSBjorn Andersson 	P_DP3_PHY_PLL_VCO_DIV_CLK,
55*4a66e76fSBjorn Andersson 	P_DSI0_PHY_PLL_OUT_BYTECLK,
56*4a66e76fSBjorn Andersson 	P_DSI0_PHY_PLL_OUT_DSICLK,
57*4a66e76fSBjorn Andersson 	P_DSI1_PHY_PLL_OUT_BYTECLK,
58*4a66e76fSBjorn Andersson 	P_DSI1_PHY_PLL_OUT_DSICLK,
59*4a66e76fSBjorn Andersson 	P_DISPn_CC_PLL0_OUT_MAIN,
60*4a66e76fSBjorn Andersson 	P_DISPn_CC_PLL1_OUT_EVEN,
61*4a66e76fSBjorn Andersson 	P_DISPn_CC_PLL1_OUT_MAIN,
62*4a66e76fSBjorn Andersson 	P_DISPn_CC_PLL2_OUT_MAIN,
63*4a66e76fSBjorn Andersson 	P_SLEEP_CLK,
64*4a66e76fSBjorn Andersson };
65*4a66e76fSBjorn Andersson 
66*4a66e76fSBjorn Andersson static const struct clk_parent_data parent_data_tcxo = { .index = DT_BI_TCXO };
67*4a66e76fSBjorn Andersson 
68*4a66e76fSBjorn Andersson static const struct pll_vco lucid_5lpe_vco[] = {
69*4a66e76fSBjorn Andersson 	{ 249600000, 1800000000, 0 },
70*4a66e76fSBjorn Andersson };
71*4a66e76fSBjorn Andersson 
72*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll0_config = {
73*4a66e76fSBjorn Andersson 	.l = 0x4e,
74*4a66e76fSBjorn Andersson 	.alpha = 0x2000,
75*4a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
76*4a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
77*4a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
78*4a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
79*4a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
80*4a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
81*4a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000000,
82*4a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
83*4a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
84*4a66e76fSBjorn Andersson };
85*4a66e76fSBjorn Andersson 
86*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll0 = {
87*4a66e76fSBjorn Andersson 	.offset = 0x0,
88*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
89*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
90*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
91*4a66e76fSBjorn Andersson 	.clkr = {
92*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
93*4a66e76fSBjorn Andersson 			.name = "disp0_cc_pll0",
94*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
95*4a66e76fSBjorn Andersson 			.num_parents = 1,
96*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
97*4a66e76fSBjorn Andersson 		},
98*4a66e76fSBjorn Andersson 	},
99*4a66e76fSBjorn Andersson };
100*4a66e76fSBjorn Andersson 
101*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll0 = {
102*4a66e76fSBjorn Andersson 	.offset = 0x0,
103*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
104*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
105*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
106*4a66e76fSBjorn Andersson 	.clkr = {
107*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
108*4a66e76fSBjorn Andersson 			.name = "disp1_cc_pll0",
109*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
110*4a66e76fSBjorn Andersson 			.num_parents = 1,
111*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
112*4a66e76fSBjorn Andersson 		},
113*4a66e76fSBjorn Andersson 	},
114*4a66e76fSBjorn Andersson };
115*4a66e76fSBjorn Andersson 
116*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll1_config = {
117*4a66e76fSBjorn Andersson 	.l = 0x1f,
118*4a66e76fSBjorn Andersson 	.alpha = 0x4000,
119*4a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
120*4a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
121*4a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
122*4a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
123*4a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
124*4a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
125*4a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000100,
126*4a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
127*4a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
128*4a66e76fSBjorn Andersson };
129*4a66e76fSBjorn Andersson 
130*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll1 = {
131*4a66e76fSBjorn Andersson 	.offset = 0x1000,
132*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
133*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
134*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
135*4a66e76fSBjorn Andersson 	.clkr = {
136*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
137*4a66e76fSBjorn Andersson 			.name = "disp0_cc_pll1",
138*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
139*4a66e76fSBjorn Andersson 			.num_parents = 1,
140*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
141*4a66e76fSBjorn Andersson 		},
142*4a66e76fSBjorn Andersson 	},
143*4a66e76fSBjorn Andersson };
144*4a66e76fSBjorn Andersson 
145*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll1 = {
146*4a66e76fSBjorn Andersson 	.offset = 0x1000,
147*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
148*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
149*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
150*4a66e76fSBjorn Andersson 	.clkr = {
151*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
152*4a66e76fSBjorn Andersson 			.name = "disp1_cc_pll1",
153*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
154*4a66e76fSBjorn Andersson 			.num_parents = 1,
155*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
156*4a66e76fSBjorn Andersson 		},
157*4a66e76fSBjorn Andersson 	},
158*4a66e76fSBjorn Andersson };
159*4a66e76fSBjorn Andersson 
160*4a66e76fSBjorn Andersson static const struct clk_div_table post_div_table_disp_cc_pll1_out_even[] = {
161*4a66e76fSBjorn Andersson 	{ 0x1, 2 },
162*4a66e76fSBjorn Andersson 	{ }
163*4a66e76fSBjorn Andersson };
164*4a66e76fSBjorn Andersson 
165*4a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp0_cc_pll1_out_even = {
166*4a66e76fSBjorn Andersson 	.offset = 0x1000,
167*4a66e76fSBjorn Andersson 	.post_div_shift = 8,
168*4a66e76fSBjorn Andersson 	.post_div_table = post_div_table_disp_cc_pll1_out_even,
169*4a66e76fSBjorn Andersson 	.num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even),
170*4a66e76fSBjorn Andersson 	.width = 4,
171*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
172*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
173*4a66e76fSBjorn Andersson 		.name = "disp0_cc_pll1_out_even",
174*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
175*4a66e76fSBjorn Andersson 			&disp0_cc_pll1.clkr.hw,
176*4a66e76fSBjorn Andersson 		},
177*4a66e76fSBjorn Andersson 		.num_parents = 1,
178*4a66e76fSBjorn Andersson 		.ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
179*4a66e76fSBjorn Andersson 	},
180*4a66e76fSBjorn Andersson };
181*4a66e76fSBjorn Andersson 
182*4a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp1_cc_pll1_out_even = {
183*4a66e76fSBjorn Andersson 	.offset = 0x1000,
184*4a66e76fSBjorn Andersson 	.post_div_shift = 8,
185*4a66e76fSBjorn Andersson 	.post_div_table = post_div_table_disp_cc_pll1_out_even,
186*4a66e76fSBjorn Andersson 	.num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even),
187*4a66e76fSBjorn Andersson 	.width = 4,
188*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
189*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
190*4a66e76fSBjorn Andersson 		.name = "disp1_cc_pll1_out_even",
191*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
192*4a66e76fSBjorn Andersson 			&disp1_cc_pll1.clkr.hw,
193*4a66e76fSBjorn Andersson 		},
194*4a66e76fSBjorn Andersson 		.num_parents = 1,
195*4a66e76fSBjorn Andersson 		.ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
196*4a66e76fSBjorn Andersson 	},
197*4a66e76fSBjorn Andersson };
198*4a66e76fSBjorn Andersson 
199*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll2_config = {
200*4a66e76fSBjorn Andersson 	.l = 0x46,
201*4a66e76fSBjorn Andersson 	.alpha = 0x5000,
202*4a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
203*4a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
204*4a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
205*4a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
206*4a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
207*4a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
208*4a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000000,
209*4a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
210*4a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
211*4a66e76fSBjorn Andersson };
212*4a66e76fSBjorn Andersson 
213*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll2 = {
214*4a66e76fSBjorn Andersson 	.offset = 0x9000,
215*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
216*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
217*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
218*4a66e76fSBjorn Andersson 	.clkr = {
219*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
220*4a66e76fSBjorn Andersson 			.name = "disp0_cc_pll2",
221*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
222*4a66e76fSBjorn Andersson 			.num_parents = 1,
223*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
224*4a66e76fSBjorn Andersson 		},
225*4a66e76fSBjorn Andersson 	},
226*4a66e76fSBjorn Andersson };
227*4a66e76fSBjorn Andersson 
228*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll2 = {
229*4a66e76fSBjorn Andersson 	.offset = 0x9000,
230*4a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
231*4a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
232*4a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
233*4a66e76fSBjorn Andersson 	.clkr = {
234*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
235*4a66e76fSBjorn Andersson 			.name = "disp1_cc_pll2",
236*4a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
237*4a66e76fSBjorn Andersson 			.num_parents = 1,
238*4a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
239*4a66e76fSBjorn Andersson 		},
240*4a66e76fSBjorn Andersson 	},
241*4a66e76fSBjorn Andersson };
242*4a66e76fSBjorn Andersson 
243*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_0[] = {
244*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
245*4a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
246*4a66e76fSBjorn Andersson 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
247*4a66e76fSBjorn Andersson 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
248*4a66e76fSBjorn Andersson 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
249*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
250*4a66e76fSBjorn Andersson };
251*4a66e76fSBjorn Andersson 
252*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_0[] = {
253*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
254*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
255*4a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
256*4a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
257*4a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
258*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
259*4a66e76fSBjorn Andersson };
260*4a66e76fSBjorn Andersson 
261*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_0[] = {
262*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
263*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
264*4a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
265*4a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
266*4a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
267*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
268*4a66e76fSBjorn Andersson };
269*4a66e76fSBjorn Andersson 
270*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_1[] = {
271*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
272*4a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
273*4a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_VCO_DIV_CLK, 2 },
274*4a66e76fSBjorn Andersson 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
275*4a66e76fSBjorn Andersson 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
276*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
277*4a66e76fSBjorn Andersson 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
278*4a66e76fSBjorn Andersson };
279*4a66e76fSBjorn Andersson 
280*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_1[] = {
281*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
282*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
283*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
284*4a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
285*4a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
286*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
287*4a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
288*4a66e76fSBjorn Andersson };
289*4a66e76fSBjorn Andersson 
290*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_1[] = {
291*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
292*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
293*4a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
294*4a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
295*4a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
296*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
297*4a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
298*4a66e76fSBjorn Andersson };
299*4a66e76fSBjorn Andersson 
300*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_2[] = {
301*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
302*4a66e76fSBjorn Andersson };
303*4a66e76fSBjorn Andersson 
304*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_2[] = {
305*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
306*4a66e76fSBjorn Andersson };
307*4a66e76fSBjorn Andersson 
308*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_3[] = {
309*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
310*4a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
311*4a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
312*4a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
313*4a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
314*4a66e76fSBjorn Andersson };
315*4a66e76fSBjorn Andersson 
316*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_3[] = {
317*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
318*4a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
319*4a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
320*4a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
321*4a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
322*4a66e76fSBjorn Andersson };
323*4a66e76fSBjorn Andersson 
324*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_4[] = {
325*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
326*4a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
327*4a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
328*4a66e76fSBjorn Andersson };
329*4a66e76fSBjorn Andersson 
330*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_4[] = {
331*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
332*4a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
333*4a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
334*4a66e76fSBjorn Andersson };
335*4a66e76fSBjorn Andersson 
336*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_5[] = {
337*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
338*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL0_OUT_MAIN, 1 },
339*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_MAIN, 4 },
340*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
341*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_EVEN, 6 },
342*4a66e76fSBjorn Andersson };
343*4a66e76fSBjorn Andersson 
344*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_5[] = {
345*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
346*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll0.clkr.hw },
347*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1.clkr.hw },
348*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
349*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1_out_even.clkr.hw },
350*4a66e76fSBjorn Andersson };
351*4a66e76fSBjorn Andersson 
352*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_5[] = {
353*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
354*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll0.clkr.hw },
355*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1.clkr.hw },
356*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
357*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1_out_even.clkr.hw },
358*4a66e76fSBjorn Andersson };
359*4a66e76fSBjorn Andersson 
360*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_6[] = {
361*4a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
362*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_MAIN, 4 },
363*4a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_EVEN, 6 },
364*4a66e76fSBjorn Andersson };
365*4a66e76fSBjorn Andersson 
366*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_6[] = {
367*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
368*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1.clkr.hw },
369*4a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1_out_even.clkr.hw },
370*4a66e76fSBjorn Andersson };
371*4a66e76fSBjorn Andersson 
372*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_6[] = {
373*4a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
374*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1.clkr.hw },
375*4a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1_out_even.clkr.hw },
376*4a66e76fSBjorn Andersson };
377*4a66e76fSBjorn Andersson 
378*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_7[] = {
379*4a66e76fSBjorn Andersson 	{ P_SLEEP_CLK, 0 },
380*4a66e76fSBjorn Andersson };
381*4a66e76fSBjorn Andersson 
382*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_7[] = {
383*4a66e76fSBjorn Andersson 	{ .index = DT_SLEEP_CLK },
384*4a66e76fSBjorn Andersson };
385*4a66e76fSBjorn Andersson 
386*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = {
387*4a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
388*4a66e76fSBjorn Andersson 	F(37500000, P_DISPn_CC_PLL1_OUT_EVEN, 8, 0, 0),
389*4a66e76fSBjorn Andersson 	F(75000000, P_DISPn_CC_PLL1_OUT_MAIN, 8, 0, 0),
390*4a66e76fSBjorn Andersson 	{ }
391*4a66e76fSBjorn Andersson };
392*4a66e76fSBjorn Andersson 
393*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_ahb_clk_src = {
394*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2364,
395*4a66e76fSBjorn Andersson 	.mnd_width = 0,
396*4a66e76fSBjorn Andersson 	.hid_width = 5,
397*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_6,
398*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
399*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
400*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_ahb_clk_src",
401*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_6,
402*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_6),
403*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
404*4a66e76fSBjorn Andersson 	},
405*4a66e76fSBjorn Andersson };
406*4a66e76fSBjorn Andersson 
407*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_ahb_clk_src = {
408*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2364,
409*4a66e76fSBjorn Andersson 	.mnd_width = 0,
410*4a66e76fSBjorn Andersson 	.hid_width = 5,
411*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_6,
412*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
413*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
414*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_ahb_clk_src",
415*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_6,
416*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_6),
417*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
418*4a66e76fSBjorn Andersson 	},
419*4a66e76fSBjorn Andersson };
420*4a66e76fSBjorn Andersson 
421*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_byte0_clk_src[] = {
422*4a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
423*4a66e76fSBjorn Andersson 	{ }
424*4a66e76fSBjorn Andersson };
425*4a66e76fSBjorn Andersson 
426*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte0_clk_src = {
427*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x213c,
428*4a66e76fSBjorn Andersson 	.mnd_width = 0,
429*4a66e76fSBjorn Andersson 	.hid_width = 5,
430*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
431*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
432*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte0_clk_src",
433*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
434*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
435*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
436*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
437*4a66e76fSBjorn Andersson 	},
438*4a66e76fSBjorn Andersson };
439*4a66e76fSBjorn Andersson 
440*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte0_clk_src = {
441*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x213c,
442*4a66e76fSBjorn Andersson 	.mnd_width = 0,
443*4a66e76fSBjorn Andersson 	.hid_width = 5,
444*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
445*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
446*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte0_clk_src",
447*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
448*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
449*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
450*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
451*4a66e76fSBjorn Andersson 	},
452*4a66e76fSBjorn Andersson };
453*4a66e76fSBjorn Andersson 
454*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte1_clk_src = {
455*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2158,
456*4a66e76fSBjorn Andersson 	.mnd_width = 0,
457*4a66e76fSBjorn Andersson 	.hid_width = 5,
458*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
459*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
460*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte1_clk_src",
461*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
462*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
463*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
464*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
465*4a66e76fSBjorn Andersson 	},
466*4a66e76fSBjorn Andersson };
467*4a66e76fSBjorn Andersson 
468*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte1_clk_src = {
469*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2158,
470*4a66e76fSBjorn Andersson 	.mnd_width = 0,
471*4a66e76fSBjorn Andersson 	.hid_width = 5,
472*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
473*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
474*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte1_clk_src",
475*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
476*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
477*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
478*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
479*4a66e76fSBjorn Andersson 	},
480*4a66e76fSBjorn Andersson };
481*4a66e76fSBjorn Andersson 
482*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_aux_clk_src = {
483*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2238,
484*4a66e76fSBjorn Andersson 	.mnd_width = 0,
485*4a66e76fSBjorn Andersson 	.hid_width = 5,
486*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
487*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
488*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
489*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_aux_clk_src",
490*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
491*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
492*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
493*4a66e76fSBjorn Andersson 	},
494*4a66e76fSBjorn Andersson };
495*4a66e76fSBjorn Andersson 
496*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_aux_clk_src = {
497*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2238,
498*4a66e76fSBjorn Andersson 	.mnd_width = 0,
499*4a66e76fSBjorn Andersson 	.hid_width = 5,
500*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
501*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
502*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
503*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_aux_clk_src",
504*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
505*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
506*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
507*4a66e76fSBjorn Andersson 	},
508*4a66e76fSBjorn Andersson };
509*4a66e76fSBjorn Andersson 
510*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_link_clk_src = {
511*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21a4,
512*4a66e76fSBjorn Andersson 	.mnd_width = 0,
513*4a66e76fSBjorn Andersson 	.hid_width = 5,
514*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
515*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
516*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_link_clk_src",
517*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
518*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
519*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
520*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
521*4a66e76fSBjorn Andersson 	},
522*4a66e76fSBjorn Andersson };
523*4a66e76fSBjorn Andersson 
524*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_link_clk_src = {
525*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21a4,
526*4a66e76fSBjorn Andersson 	.mnd_width = 0,
527*4a66e76fSBjorn Andersson 	.hid_width = 5,
528*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
529*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
530*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_link_clk_src",
531*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
532*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
533*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
534*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
535*4a66e76fSBjorn Andersson 	},
536*4a66e76fSBjorn Andersson };
537*4a66e76fSBjorn Andersson 
538*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel0_clk_src = {
539*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21d8,
540*4a66e76fSBjorn Andersson 	.mnd_width = 16,
541*4a66e76fSBjorn Andersson 	.hid_width = 5,
542*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
543*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
544*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_pixel0_clk_src",
545*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
546*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
547*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
548*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
549*4a66e76fSBjorn Andersson 	},
550*4a66e76fSBjorn Andersson };
551*4a66e76fSBjorn Andersson 
552*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel0_clk_src = {
553*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21d8,
554*4a66e76fSBjorn Andersson 	.mnd_width = 16,
555*4a66e76fSBjorn Andersson 	.hid_width = 5,
556*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
557*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
558*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_pixel0_clk_src",
559*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
560*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
561*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
562*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
563*4a66e76fSBjorn Andersson 	},
564*4a66e76fSBjorn Andersson };
565*4a66e76fSBjorn Andersson 
566*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel1_clk_src = {
567*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21f0,
568*4a66e76fSBjorn Andersson 	.mnd_width = 16,
569*4a66e76fSBjorn Andersson 	.hid_width = 5,
570*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
571*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
572*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_pixel1_clk_src",
573*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
574*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
575*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
576*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
577*4a66e76fSBjorn Andersson 	},
578*4a66e76fSBjorn Andersson };
579*4a66e76fSBjorn Andersson 
580*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel1_clk_src = {
581*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21f0,
582*4a66e76fSBjorn Andersson 	.mnd_width = 16,
583*4a66e76fSBjorn Andersson 	.hid_width = 5,
584*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
585*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
586*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_pixel1_clk_src",
587*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
588*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
589*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
590*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
591*4a66e76fSBjorn Andersson 	},
592*4a66e76fSBjorn Andersson };
593*4a66e76fSBjorn Andersson 
594*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_aux_clk_src = {
595*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22d0,
596*4a66e76fSBjorn Andersson 	.mnd_width = 0,
597*4a66e76fSBjorn Andersson 	.hid_width = 5,
598*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
599*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
600*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
601*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_aux_clk_src",
602*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
603*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
604*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
605*4a66e76fSBjorn Andersson 	},
606*4a66e76fSBjorn Andersson };
607*4a66e76fSBjorn Andersson 
608*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_aux_clk_src = {
609*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22d0,
610*4a66e76fSBjorn Andersson 	.mnd_width = 0,
611*4a66e76fSBjorn Andersson 	.hid_width = 5,
612*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
613*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
614*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
615*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_aux_clk_src",
616*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
617*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
618*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
619*4a66e76fSBjorn Andersson 	},
620*4a66e76fSBjorn Andersson };
621*4a66e76fSBjorn Andersson 
622*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_link_clk_src = {
623*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2268,
624*4a66e76fSBjorn Andersson 	.mnd_width = 0,
625*4a66e76fSBjorn Andersson 	.hid_width = 5,
626*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
627*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
628*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_link_clk_src",
629*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
630*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
631*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
632*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
633*4a66e76fSBjorn Andersson 	},
634*4a66e76fSBjorn Andersson };
635*4a66e76fSBjorn Andersson 
636*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_link_clk_src = {
637*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2268,
638*4a66e76fSBjorn Andersson 	.mnd_width = 0,
639*4a66e76fSBjorn Andersson 	.hid_width = 5,
640*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
641*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
642*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_link_clk_src",
643*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
644*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
645*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
646*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
647*4a66e76fSBjorn Andersson 	},
648*4a66e76fSBjorn Andersson };
649*4a66e76fSBjorn Andersson 
650*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel0_clk_src = {
651*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2250,
652*4a66e76fSBjorn Andersson 	.mnd_width = 16,
653*4a66e76fSBjorn Andersson 	.hid_width = 5,
654*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
655*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
656*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_pixel0_clk_src",
657*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
658*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
659*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
660*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
661*4a66e76fSBjorn Andersson 	},
662*4a66e76fSBjorn Andersson };
663*4a66e76fSBjorn Andersson 
664*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel0_clk_src = {
665*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2250,
666*4a66e76fSBjorn Andersson 	.mnd_width = 16,
667*4a66e76fSBjorn Andersson 	.hid_width = 5,
668*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
669*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
670*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_pixel0_clk_src",
671*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
672*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
673*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
674*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
675*4a66e76fSBjorn Andersson 	},
676*4a66e76fSBjorn Andersson };
677*4a66e76fSBjorn Andersson 
678*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel1_clk_src = {
679*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2370,
680*4a66e76fSBjorn Andersson 	.mnd_width = 16,
681*4a66e76fSBjorn Andersson 	.hid_width = 5,
682*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
683*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
684*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_pixel1_clk_src",
685*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
686*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
687*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
688*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
689*4a66e76fSBjorn Andersson 	},
690*4a66e76fSBjorn Andersson };
691*4a66e76fSBjorn Andersson 
692*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel1_clk_src = {
693*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2370,
694*4a66e76fSBjorn Andersson 	.mnd_width = 16,
695*4a66e76fSBjorn Andersson 	.hid_width = 5,
696*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
697*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
698*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_pixel1_clk_src",
699*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
700*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
701*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
702*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
703*4a66e76fSBjorn Andersson 	},
704*4a66e76fSBjorn Andersson };
705*4a66e76fSBjorn Andersson 
706*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_aux_clk_src = {
707*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22e8,
708*4a66e76fSBjorn Andersson 	.mnd_width = 0,
709*4a66e76fSBjorn Andersson 	.hid_width = 5,
710*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
711*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
712*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
713*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_aux_clk_src",
714*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
715*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
716*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
717*4a66e76fSBjorn Andersson 	},
718*4a66e76fSBjorn Andersson };
719*4a66e76fSBjorn Andersson 
720*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_aux_clk_src = {
721*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22e8,
722*4a66e76fSBjorn Andersson 	.mnd_width = 0,
723*4a66e76fSBjorn Andersson 	.hid_width = 5,
724*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
725*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
726*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
727*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_aux_clk_src",
728*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
729*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
730*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
731*4a66e76fSBjorn Andersson 	},
732*4a66e76fSBjorn Andersson };
733*4a66e76fSBjorn Andersson 
734*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_link_clk_src = {
735*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2284,
736*4a66e76fSBjorn Andersson 	.mnd_width = 0,
737*4a66e76fSBjorn Andersson 	.hid_width = 5,
738*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
739*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
740*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_link_clk_src",
741*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
742*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
743*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
744*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
745*4a66e76fSBjorn Andersson 	},
746*4a66e76fSBjorn Andersson };
747*4a66e76fSBjorn Andersson 
748*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_link_clk_src = {
749*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2284,
750*4a66e76fSBjorn Andersson 	.mnd_width = 0,
751*4a66e76fSBjorn Andersson 	.hid_width = 5,
752*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
753*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
754*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_link_clk_src",
755*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
756*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
757*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
758*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
759*4a66e76fSBjorn Andersson 	},
760*4a66e76fSBjorn Andersson };
761*4a66e76fSBjorn Andersson 
762*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel0_clk_src = {
763*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2208,
764*4a66e76fSBjorn Andersson 	.mnd_width = 16,
765*4a66e76fSBjorn Andersson 	.hid_width = 5,
766*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
767*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
768*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_pixel0_clk_src",
769*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
770*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
771*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
772*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
773*4a66e76fSBjorn Andersson 	},
774*4a66e76fSBjorn Andersson };
775*4a66e76fSBjorn Andersson 
776*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel0_clk_src = {
777*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2208,
778*4a66e76fSBjorn Andersson 	.mnd_width = 16,
779*4a66e76fSBjorn Andersson 	.hid_width = 5,
780*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
781*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
782*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_pixel0_clk_src",
783*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
784*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
785*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
786*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
787*4a66e76fSBjorn Andersson 	},
788*4a66e76fSBjorn Andersson };
789*4a66e76fSBjorn Andersson 
790*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel1_clk_src = {
791*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2220,
792*4a66e76fSBjorn Andersson 	.mnd_width = 16,
793*4a66e76fSBjorn Andersson 	.hid_width = 5,
794*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
795*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
796*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_pixel1_clk_src",
797*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
798*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
799*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
800*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
801*4a66e76fSBjorn Andersson 	},
802*4a66e76fSBjorn Andersson };
803*4a66e76fSBjorn Andersson 
804*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel1_clk_src = {
805*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2220,
806*4a66e76fSBjorn Andersson 	.mnd_width = 16,
807*4a66e76fSBjorn Andersson 	.hid_width = 5,
808*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
809*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
810*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_pixel1_clk_src",
811*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
812*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
813*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
814*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
815*4a66e76fSBjorn Andersson 	},
816*4a66e76fSBjorn Andersson };
817*4a66e76fSBjorn Andersson 
818*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_aux_clk_src = {
819*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x234c,
820*4a66e76fSBjorn Andersson 	.mnd_width = 0,
821*4a66e76fSBjorn Andersson 	.hid_width = 5,
822*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
823*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
824*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
825*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_aux_clk_src",
826*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
827*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
828*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
829*4a66e76fSBjorn Andersson 	},
830*4a66e76fSBjorn Andersson };
831*4a66e76fSBjorn Andersson 
832*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_aux_clk_src = {
833*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x234c,
834*4a66e76fSBjorn Andersson 	.mnd_width = 0,
835*4a66e76fSBjorn Andersson 	.hid_width = 5,
836*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
837*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
838*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
839*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_aux_clk_src",
840*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
841*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
842*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
843*4a66e76fSBjorn Andersson 	},
844*4a66e76fSBjorn Andersson };
845*4a66e76fSBjorn Andersson 
846*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_link_clk_src = {
847*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2318,
848*4a66e76fSBjorn Andersson 	.mnd_width = 0,
849*4a66e76fSBjorn Andersson 	.hid_width = 5,
850*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
851*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
852*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_link_clk_src",
853*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
854*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
855*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
856*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
857*4a66e76fSBjorn Andersson 	},
858*4a66e76fSBjorn Andersson };
859*4a66e76fSBjorn Andersson 
860*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_link_clk_src = {
861*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2318,
862*4a66e76fSBjorn Andersson 	.mnd_width = 0,
863*4a66e76fSBjorn Andersson 	.hid_width = 5,
864*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
865*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
866*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_link_clk_src",
867*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
868*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
869*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
870*4a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
871*4a66e76fSBjorn Andersson 	},
872*4a66e76fSBjorn Andersson };
873*4a66e76fSBjorn Andersson 
874*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_pixel0_clk_src = {
875*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2300,
876*4a66e76fSBjorn Andersson 	.mnd_width = 16,
877*4a66e76fSBjorn Andersson 	.hid_width = 5,
878*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
879*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
880*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_pixel0_clk_src",
881*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
882*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
883*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
884*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
885*4a66e76fSBjorn Andersson 	},
886*4a66e76fSBjorn Andersson };
887*4a66e76fSBjorn Andersson 
888*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_pixel0_clk_src = {
889*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2300,
890*4a66e76fSBjorn Andersson 	.mnd_width = 16,
891*4a66e76fSBjorn Andersson 	.hid_width = 5,
892*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
893*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
894*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_pixel0_clk_src",
895*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
896*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
897*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
898*4a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
899*4a66e76fSBjorn Andersson 	},
900*4a66e76fSBjorn Andersson };
901*4a66e76fSBjorn Andersson 
902*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc0_clk_src = {
903*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2174,
904*4a66e76fSBjorn Andersson 	.mnd_width = 0,
905*4a66e76fSBjorn Andersson 	.hid_width = 5,
906*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
907*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
908*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
909*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_esc0_clk_src",
910*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
911*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
912*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
913*4a66e76fSBjorn Andersson 	},
914*4a66e76fSBjorn Andersson };
915*4a66e76fSBjorn Andersson 
916*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc0_clk_src = {
917*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2174,
918*4a66e76fSBjorn Andersson 	.mnd_width = 0,
919*4a66e76fSBjorn Andersson 	.hid_width = 5,
920*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
921*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
922*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
923*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_esc0_clk_src",
924*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
925*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
926*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
927*4a66e76fSBjorn Andersson 	},
928*4a66e76fSBjorn Andersson };
929*4a66e76fSBjorn Andersson 
930*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc1_clk_src = {
931*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x218c,
932*4a66e76fSBjorn Andersson 	.mnd_width = 0,
933*4a66e76fSBjorn Andersson 	.hid_width = 5,
934*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
935*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
936*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
937*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_esc1_clk_src",
938*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
939*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
940*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
941*4a66e76fSBjorn Andersson 	},
942*4a66e76fSBjorn Andersson };
943*4a66e76fSBjorn Andersson 
944*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc1_clk_src = {
945*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x218c,
946*4a66e76fSBjorn Andersson 	.mnd_width = 0,
947*4a66e76fSBjorn Andersson 	.hid_width = 5,
948*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
949*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
950*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
951*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_esc1_clk_src",
952*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
953*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
954*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
955*4a66e76fSBjorn Andersson 	},
956*4a66e76fSBjorn Andersson };
957*4a66e76fSBjorn Andersson 
958*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = {
959*4a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
960*4a66e76fSBjorn Andersson 	F(85714286, P_DISPn_CC_PLL1_OUT_MAIN, 7, 0, 0),
961*4a66e76fSBjorn Andersson 	F(100000000, P_DISPn_CC_PLL1_OUT_MAIN, 6, 0, 0),
962*4a66e76fSBjorn Andersson 	F(150000000, P_DISPn_CC_PLL1_OUT_MAIN, 4, 0, 0),
963*4a66e76fSBjorn Andersson 	F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0),
964*4a66e76fSBjorn Andersson 	F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0),
965*4a66e76fSBjorn Andersson 	F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0),
966*4a66e76fSBjorn Andersson 	F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0),
967*4a66e76fSBjorn Andersson 	F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0),
968*4a66e76fSBjorn Andersson 	{ }
969*4a66e76fSBjorn Andersson };
970*4a66e76fSBjorn Andersson 
971*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_mdp_clk_src = {
972*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20f4,
973*4a66e76fSBjorn Andersson 	.mnd_width = 0,
974*4a66e76fSBjorn Andersson 	.hid_width = 5,
975*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
976*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
977*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
978*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_mdp_clk_src",
979*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_5,
980*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_5),
981*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
982*4a66e76fSBjorn Andersson 	},
983*4a66e76fSBjorn Andersson };
984*4a66e76fSBjorn Andersson 
985*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_mdp_clk_src = {
986*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20f4,
987*4a66e76fSBjorn Andersson 	.mnd_width = 0,
988*4a66e76fSBjorn Andersson 	.hid_width = 5,
989*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
990*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
991*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
992*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_mdp_clk_src",
993*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_5,
994*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_5),
995*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
996*4a66e76fSBjorn Andersson 	},
997*4a66e76fSBjorn Andersson };
998*4a66e76fSBjorn Andersson 
999*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk0_clk_src = {
1000*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20c4,
1001*4a66e76fSBjorn Andersson 	.mnd_width = 8,
1002*4a66e76fSBjorn Andersson 	.hid_width = 5,
1003*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
1004*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1005*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_pclk0_clk_src",
1006*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
1007*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
1008*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1009*4a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
1010*4a66e76fSBjorn Andersson 	},
1011*4a66e76fSBjorn Andersson };
1012*4a66e76fSBjorn Andersson 
1013*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk0_clk_src = {
1014*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20c4,
1015*4a66e76fSBjorn Andersson 	.mnd_width = 8,
1016*4a66e76fSBjorn Andersson 	.hid_width = 5,
1017*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
1018*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1019*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_pclk0_clk_src",
1020*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
1021*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
1022*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1023*4a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
1024*4a66e76fSBjorn Andersson 	},
1025*4a66e76fSBjorn Andersson };
1026*4a66e76fSBjorn Andersson 
1027*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk1_clk_src = {
1028*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20dc,
1029*4a66e76fSBjorn Andersson 	.mnd_width = 8,
1030*4a66e76fSBjorn Andersson 	.hid_width = 5,
1031*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
1032*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1033*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_pclk1_clk_src",
1034*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
1035*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
1036*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1037*4a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
1038*4a66e76fSBjorn Andersson 	},
1039*4a66e76fSBjorn Andersson };
1040*4a66e76fSBjorn Andersson 
1041*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk1_clk_src = {
1042*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20dc,
1043*4a66e76fSBjorn Andersson 	.mnd_width = 8,
1044*4a66e76fSBjorn Andersson 	.hid_width = 5,
1045*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
1046*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1047*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_pclk1_clk_src",
1048*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
1049*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
1050*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1051*4a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
1052*4a66e76fSBjorn Andersson 	},
1053*4a66e76fSBjorn Andersson };
1054*4a66e76fSBjorn Andersson 
1055*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_rot_clk_src[] = {
1056*4a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
1057*4a66e76fSBjorn Andersson 	F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0),
1058*4a66e76fSBjorn Andersson 	F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0),
1059*4a66e76fSBjorn Andersson 	F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0),
1060*4a66e76fSBjorn Andersson 	F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0),
1061*4a66e76fSBjorn Andersson 	F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0),
1062*4a66e76fSBjorn Andersson 	{ }
1063*4a66e76fSBjorn Andersson };
1064*4a66e76fSBjorn Andersson 
1065*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_rot_clk_src = {
1066*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x210c,
1067*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1068*4a66e76fSBjorn Andersson 	.hid_width = 5,
1069*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
1070*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_rot_clk_src,
1071*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1072*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_rot_clk_src",
1073*4a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_5,
1074*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_5),
1075*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
1076*4a66e76fSBjorn Andersson 	},
1077*4a66e76fSBjorn Andersson };
1078*4a66e76fSBjorn Andersson 
1079*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_rot_clk_src = {
1080*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x210c,
1081*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1082*4a66e76fSBjorn Andersson 	.hid_width = 5,
1083*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
1084*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_rot_clk_src,
1085*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1086*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_rot_clk_src",
1087*4a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_5,
1088*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_5),
1089*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
1090*4a66e76fSBjorn Andersson 	},
1091*4a66e76fSBjorn Andersson };
1092*4a66e76fSBjorn Andersson 
1093*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_vsync_clk_src = {
1094*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2124,
1095*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1096*4a66e76fSBjorn Andersson 	.hid_width = 5,
1097*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
1098*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
1099*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1100*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_vsync_clk_src",
1101*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
1102*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
1103*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
1104*4a66e76fSBjorn Andersson 	},
1105*4a66e76fSBjorn Andersson };
1106*4a66e76fSBjorn Andersson 
1107*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_vsync_clk_src = {
1108*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2124,
1109*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1110*4a66e76fSBjorn Andersson 	.hid_width = 5,
1111*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
1112*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
1113*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1114*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_vsync_clk_src",
1115*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
1116*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
1117*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
1118*4a66e76fSBjorn Andersson 	},
1119*4a66e76fSBjorn Andersson };
1120*4a66e76fSBjorn Andersson 
1121*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_sleep_clk_src[] = {
1122*4a66e76fSBjorn Andersson 	F(32000, P_SLEEP_CLK, 1, 0, 0),
1123*4a66e76fSBjorn Andersson 	{ }
1124*4a66e76fSBjorn Andersson };
1125*4a66e76fSBjorn Andersson 
1126*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_sleep_clk_src = {
1127*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x6060,
1128*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1129*4a66e76fSBjorn Andersson 	.hid_width = 5,
1130*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_7,
1131*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_sleep_clk_src,
1132*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1133*4a66e76fSBjorn Andersson 		.name = "disp0_cc_sleep_clk_src",
1134*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_7,
1135*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
1136*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
1137*4a66e76fSBjorn Andersson 	},
1138*4a66e76fSBjorn Andersson };
1139*4a66e76fSBjorn Andersson 
1140*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_sleep_clk_src = {
1141*4a66e76fSBjorn Andersson 	.cmd_rcgr = 0x6060,
1142*4a66e76fSBjorn Andersson 	.mnd_width = 0,
1143*4a66e76fSBjorn Andersson 	.hid_width = 5,
1144*4a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_7,
1145*4a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_sleep_clk_src,
1146*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1147*4a66e76fSBjorn Andersson 		.name = "disp1_cc_sleep_clk_src",
1148*4a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_7,
1149*4a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
1150*4a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
1151*4a66e76fSBjorn Andersson 	},
1152*4a66e76fSBjorn Andersson };
1153*4a66e76fSBjorn Andersson 
1154*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte0_div_clk_src = {
1155*4a66e76fSBjorn Andersson 	.reg = 0x2154,
1156*4a66e76fSBjorn Andersson 	.shift = 0,
1157*4a66e76fSBjorn Andersson 	.width = 4,
1158*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1159*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte0_div_clk_src",
1160*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1161*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_byte0_clk_src.clkr.hw,
1162*4a66e76fSBjorn Andersson 		},
1163*4a66e76fSBjorn Andersson 		.num_parents = 1,
1164*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1165*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
1166*4a66e76fSBjorn Andersson 	},
1167*4a66e76fSBjorn Andersson };
1168*4a66e76fSBjorn Andersson 
1169*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte0_div_clk_src = {
1170*4a66e76fSBjorn Andersson 	.reg = 0x2154,
1171*4a66e76fSBjorn Andersson 	.shift = 0,
1172*4a66e76fSBjorn Andersson 	.width = 4,
1173*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1174*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte0_div_clk_src",
1175*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1176*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_byte0_clk_src.clkr.hw,
1177*4a66e76fSBjorn Andersson 		},
1178*4a66e76fSBjorn Andersson 		.num_parents = 1,
1179*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1180*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
1181*4a66e76fSBjorn Andersson 	},
1182*4a66e76fSBjorn Andersson };
1183*4a66e76fSBjorn Andersson 
1184*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte1_div_clk_src = {
1185*4a66e76fSBjorn Andersson 	.reg = 0x2170,
1186*4a66e76fSBjorn Andersson 	.shift = 0,
1187*4a66e76fSBjorn Andersson 	.width = 4,
1188*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1189*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte1_div_clk_src",
1190*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1191*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_byte1_clk_src.clkr.hw,
1192*4a66e76fSBjorn Andersson 		},
1193*4a66e76fSBjorn Andersson 		.num_parents = 1,
1194*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1195*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
1196*4a66e76fSBjorn Andersson 	},
1197*4a66e76fSBjorn Andersson };
1198*4a66e76fSBjorn Andersson 
1199*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte1_div_clk_src = {
1200*4a66e76fSBjorn Andersson 	.reg = 0x2170,
1201*4a66e76fSBjorn Andersson 	.shift = 0,
1202*4a66e76fSBjorn Andersson 	.width = 4,
1203*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1204*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte1_div_clk_src",
1205*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1206*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_byte1_clk_src.clkr.hw,
1207*4a66e76fSBjorn Andersson 		},
1208*4a66e76fSBjorn Andersson 		.num_parents = 1,
1209*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1210*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
1211*4a66e76fSBjorn Andersson 	},
1212*4a66e76fSBjorn Andersson };
1213*4a66e76fSBjorn Andersson 
1214*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx0_link_div_clk_src = {
1215*4a66e76fSBjorn Andersson 	.reg = 0x21bc,
1216*4a66e76fSBjorn Andersson 	.shift = 0,
1217*4a66e76fSBjorn Andersson 	.width = 4,
1218*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1219*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_link_div_clk_src",
1220*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1221*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx0_link_clk_src.clkr.hw,
1222*4a66e76fSBjorn Andersson 		},
1223*4a66e76fSBjorn Andersson 		.num_parents = 1,
1224*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1225*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1226*4a66e76fSBjorn Andersson 	},
1227*4a66e76fSBjorn Andersson };
1228*4a66e76fSBjorn Andersson 
1229*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx0_link_div_clk_src = {
1230*4a66e76fSBjorn Andersson 	.reg = 0x21bc,
1231*4a66e76fSBjorn Andersson 	.shift = 0,
1232*4a66e76fSBjorn Andersson 	.width = 4,
1233*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1234*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_link_div_clk_src",
1235*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1236*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx0_link_clk_src.clkr.hw,
1237*4a66e76fSBjorn Andersson 		},
1238*4a66e76fSBjorn Andersson 		.num_parents = 1,
1239*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1240*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1241*4a66e76fSBjorn Andersson 	},
1242*4a66e76fSBjorn Andersson };
1243*4a66e76fSBjorn Andersson 
1244*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx1_link_div_clk_src = {
1245*4a66e76fSBjorn Andersson 	.reg = 0x2280,
1246*4a66e76fSBjorn Andersson 	.shift = 0,
1247*4a66e76fSBjorn Andersson 	.width = 4,
1248*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1249*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_link_div_clk_src",
1250*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1251*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx1_link_clk_src.clkr.hw,
1252*4a66e76fSBjorn Andersson 		},
1253*4a66e76fSBjorn Andersson 		.num_parents = 1,
1254*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1255*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1256*4a66e76fSBjorn Andersson 	},
1257*4a66e76fSBjorn Andersson };
1258*4a66e76fSBjorn Andersson 
1259*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx1_link_div_clk_src = {
1260*4a66e76fSBjorn Andersson 	.reg = 0x2280,
1261*4a66e76fSBjorn Andersson 	.shift = 0,
1262*4a66e76fSBjorn Andersson 	.width = 4,
1263*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1264*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_link_div_clk_src",
1265*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1266*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx1_link_clk_src.clkr.hw,
1267*4a66e76fSBjorn Andersson 		},
1268*4a66e76fSBjorn Andersson 		.num_parents = 1,
1269*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1270*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1271*4a66e76fSBjorn Andersson 	},
1272*4a66e76fSBjorn Andersson };
1273*4a66e76fSBjorn Andersson 
1274*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx2_link_div_clk_src = {
1275*4a66e76fSBjorn Andersson 	.reg = 0x229c,
1276*4a66e76fSBjorn Andersson 	.shift = 0,
1277*4a66e76fSBjorn Andersson 	.width = 4,
1278*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1279*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_link_div_clk_src",
1280*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1281*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx2_link_clk_src.clkr.hw,
1282*4a66e76fSBjorn Andersson 		},
1283*4a66e76fSBjorn Andersson 		.num_parents = 1,
1284*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1285*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1286*4a66e76fSBjorn Andersson 	},
1287*4a66e76fSBjorn Andersson };
1288*4a66e76fSBjorn Andersson 
1289*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx2_link_div_clk_src = {
1290*4a66e76fSBjorn Andersson 	.reg = 0x229c,
1291*4a66e76fSBjorn Andersson 	.shift = 0,
1292*4a66e76fSBjorn Andersson 	.width = 4,
1293*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1294*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_link_div_clk_src",
1295*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1296*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx2_link_clk_src.clkr.hw,
1297*4a66e76fSBjorn Andersson 		},
1298*4a66e76fSBjorn Andersson 		.num_parents = 1,
1299*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1300*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1301*4a66e76fSBjorn Andersson 	},
1302*4a66e76fSBjorn Andersson };
1303*4a66e76fSBjorn Andersson 
1304*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx3_link_div_clk_src = {
1305*4a66e76fSBjorn Andersson 	.reg = 0x2330,
1306*4a66e76fSBjorn Andersson 	.shift = 0,
1307*4a66e76fSBjorn Andersson 	.width = 4,
1308*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1309*4a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_link_div_clk_src",
1310*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1311*4a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx3_link_clk_src.clkr.hw,
1312*4a66e76fSBjorn Andersson 		},
1313*4a66e76fSBjorn Andersson 		.num_parents = 1,
1314*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1315*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1316*4a66e76fSBjorn Andersson 	},
1317*4a66e76fSBjorn Andersson };
1318*4a66e76fSBjorn Andersson 
1319*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx3_link_div_clk_src = {
1320*4a66e76fSBjorn Andersson 	.reg = 0x2330,
1321*4a66e76fSBjorn Andersson 	.shift = 0,
1322*4a66e76fSBjorn Andersson 	.width = 4,
1323*4a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1324*4a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_link_div_clk_src",
1325*4a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1326*4a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx3_link_clk_src.clkr.hw,
1327*4a66e76fSBjorn Andersson 		},
1328*4a66e76fSBjorn Andersson 		.num_parents = 1,
1329*4a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
1330*4a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
1331*4a66e76fSBjorn Andersson 	},
1332*4a66e76fSBjorn Andersson };
1333*4a66e76fSBjorn Andersson 
1334*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb1_clk = {
1335*4a66e76fSBjorn Andersson 	.halt_reg = 0x20c0,
1336*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1337*4a66e76fSBjorn Andersson 	.clkr = {
1338*4a66e76fSBjorn Andersson 		.enable_reg = 0x20c0,
1339*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1340*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1341*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_ahb1_clk",
1342*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1343*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
1344*4a66e76fSBjorn Andersson 			},
1345*4a66e76fSBjorn Andersson 			.num_parents = 1,
1346*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1347*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1348*4a66e76fSBjorn Andersson 		},
1349*4a66e76fSBjorn Andersson 	},
1350*4a66e76fSBjorn Andersson };
1351*4a66e76fSBjorn Andersson 
1352*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb1_clk = {
1353*4a66e76fSBjorn Andersson 	.halt_reg = 0x20c0,
1354*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1355*4a66e76fSBjorn Andersson 	.clkr = {
1356*4a66e76fSBjorn Andersson 		.enable_reg = 0x20c0,
1357*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1358*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1359*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_ahb1_clk",
1360*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1361*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
1362*4a66e76fSBjorn Andersson 			},
1363*4a66e76fSBjorn Andersson 			.num_parents = 1,
1364*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1365*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1366*4a66e76fSBjorn Andersson 		},
1367*4a66e76fSBjorn Andersson 	},
1368*4a66e76fSBjorn Andersson };
1369*4a66e76fSBjorn Andersson 
1370*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb_clk = {
1371*4a66e76fSBjorn Andersson 	.halt_reg = 0x20bc,
1372*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1373*4a66e76fSBjorn Andersson 	.clkr = {
1374*4a66e76fSBjorn Andersson 		.enable_reg = 0x20bc,
1375*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1376*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1377*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_ahb_clk",
1378*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1379*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
1380*4a66e76fSBjorn Andersson 			},
1381*4a66e76fSBjorn Andersson 			.num_parents = 1,
1382*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1383*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1384*4a66e76fSBjorn Andersson 		},
1385*4a66e76fSBjorn Andersson 	},
1386*4a66e76fSBjorn Andersson };
1387*4a66e76fSBjorn Andersson 
1388*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb_clk = {
1389*4a66e76fSBjorn Andersson 	.halt_reg = 0x20bc,
1390*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1391*4a66e76fSBjorn Andersson 	.clkr = {
1392*4a66e76fSBjorn Andersson 		.enable_reg = 0x20bc,
1393*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1394*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1395*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_ahb_clk",
1396*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1397*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
1398*4a66e76fSBjorn Andersson 			},
1399*4a66e76fSBjorn Andersson 			.num_parents = 1,
1400*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1401*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1402*4a66e76fSBjorn Andersson 		},
1403*4a66e76fSBjorn Andersson 	},
1404*4a66e76fSBjorn Andersson };
1405*4a66e76fSBjorn Andersson 
1406*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_clk = {
1407*4a66e76fSBjorn Andersson 	.halt_reg = 0x2044,
1408*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1409*4a66e76fSBjorn Andersson 	.clkr = {
1410*4a66e76fSBjorn Andersson 		.enable_reg = 0x2044,
1411*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1412*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1413*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte0_clk",
1414*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1415*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte0_clk_src.clkr.hw,
1416*4a66e76fSBjorn Andersson 			},
1417*4a66e76fSBjorn Andersson 			.num_parents = 1,
1418*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1419*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1420*4a66e76fSBjorn Andersson 		},
1421*4a66e76fSBjorn Andersson 	},
1422*4a66e76fSBjorn Andersson };
1423*4a66e76fSBjorn Andersson 
1424*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_clk = {
1425*4a66e76fSBjorn Andersson 	.halt_reg = 0x2044,
1426*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1427*4a66e76fSBjorn Andersson 	.clkr = {
1428*4a66e76fSBjorn Andersson 		.enable_reg = 0x2044,
1429*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1430*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1431*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte0_clk",
1432*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1433*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte0_clk_src.clkr.hw,
1434*4a66e76fSBjorn Andersson 			},
1435*4a66e76fSBjorn Andersson 			.num_parents = 1,
1436*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1437*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1438*4a66e76fSBjorn Andersson 		},
1439*4a66e76fSBjorn Andersson 	},
1440*4a66e76fSBjorn Andersson };
1441*4a66e76fSBjorn Andersson 
1442*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_intf_clk = {
1443*4a66e76fSBjorn Andersson 	.halt_reg = 0x2048,
1444*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1445*4a66e76fSBjorn Andersson 	.clkr = {
1446*4a66e76fSBjorn Andersson 		.enable_reg = 0x2048,
1447*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1448*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1449*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte0_intf_clk",
1450*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1451*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte0_div_clk_src.clkr.hw,
1452*4a66e76fSBjorn Andersson 			},
1453*4a66e76fSBjorn Andersson 			.num_parents = 1,
1454*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1455*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1456*4a66e76fSBjorn Andersson 		},
1457*4a66e76fSBjorn Andersson 	},
1458*4a66e76fSBjorn Andersson };
1459*4a66e76fSBjorn Andersson 
1460*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_intf_clk = {
1461*4a66e76fSBjorn Andersson 	.halt_reg = 0x2048,
1462*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1463*4a66e76fSBjorn Andersson 	.clkr = {
1464*4a66e76fSBjorn Andersson 		.enable_reg = 0x2048,
1465*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1466*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1467*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte0_intf_clk",
1468*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1469*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte0_div_clk_src.clkr.hw,
1470*4a66e76fSBjorn Andersson 			},
1471*4a66e76fSBjorn Andersson 			.num_parents = 1,
1472*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1473*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1474*4a66e76fSBjorn Andersson 		},
1475*4a66e76fSBjorn Andersson 	},
1476*4a66e76fSBjorn Andersson };
1477*4a66e76fSBjorn Andersson 
1478*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_clk = {
1479*4a66e76fSBjorn Andersson 	.halt_reg = 0x204c,
1480*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1481*4a66e76fSBjorn Andersson 	.clkr = {
1482*4a66e76fSBjorn Andersson 		.enable_reg = 0x204c,
1483*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1484*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1485*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte1_clk",
1486*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1487*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte1_clk_src.clkr.hw,
1488*4a66e76fSBjorn Andersson 			},
1489*4a66e76fSBjorn Andersson 			.num_parents = 1,
1490*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1491*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1492*4a66e76fSBjorn Andersson 		},
1493*4a66e76fSBjorn Andersson 	},
1494*4a66e76fSBjorn Andersson };
1495*4a66e76fSBjorn Andersson 
1496*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_clk = {
1497*4a66e76fSBjorn Andersson 	.halt_reg = 0x204c,
1498*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1499*4a66e76fSBjorn Andersson 	.clkr = {
1500*4a66e76fSBjorn Andersson 		.enable_reg = 0x204c,
1501*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1502*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1503*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte1_clk",
1504*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1505*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte1_clk_src.clkr.hw,
1506*4a66e76fSBjorn Andersson 			},
1507*4a66e76fSBjorn Andersson 			.num_parents = 1,
1508*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1509*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1510*4a66e76fSBjorn Andersson 		},
1511*4a66e76fSBjorn Andersson 	},
1512*4a66e76fSBjorn Andersson };
1513*4a66e76fSBjorn Andersson 
1514*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_intf_clk = {
1515*4a66e76fSBjorn Andersson 	.halt_reg = 0x2050,
1516*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1517*4a66e76fSBjorn Andersson 	.clkr = {
1518*4a66e76fSBjorn Andersson 		.enable_reg = 0x2050,
1519*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1520*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1521*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte1_intf_clk",
1522*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1523*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte1_div_clk_src.clkr.hw,
1524*4a66e76fSBjorn Andersson 			},
1525*4a66e76fSBjorn Andersson 			.num_parents = 1,
1526*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1527*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1528*4a66e76fSBjorn Andersson 		},
1529*4a66e76fSBjorn Andersson 	},
1530*4a66e76fSBjorn Andersson };
1531*4a66e76fSBjorn Andersson 
1532*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_intf_clk = {
1533*4a66e76fSBjorn Andersson 	.halt_reg = 0x2050,
1534*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1535*4a66e76fSBjorn Andersson 	.clkr = {
1536*4a66e76fSBjorn Andersson 		.enable_reg = 0x2050,
1537*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1538*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1539*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte1_intf_clk",
1540*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1541*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte1_div_clk_src.clkr.hw,
1542*4a66e76fSBjorn Andersson 			},
1543*4a66e76fSBjorn Andersson 			.num_parents = 1,
1544*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1545*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1546*4a66e76fSBjorn Andersson 		},
1547*4a66e76fSBjorn Andersson 	},
1548*4a66e76fSBjorn Andersson };
1549*4a66e76fSBjorn Andersson 
1550*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_aux_clk = {
1551*4a66e76fSBjorn Andersson 	.halt_reg = 0x206c,
1552*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1553*4a66e76fSBjorn Andersson 	.clkr = {
1554*4a66e76fSBjorn Andersson 		.enable_reg = 0x206c,
1555*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1556*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1557*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_aux_clk",
1558*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1559*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_aux_clk_src.clkr.hw,
1560*4a66e76fSBjorn Andersson 			},
1561*4a66e76fSBjorn Andersson 			.num_parents = 1,
1562*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1563*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1564*4a66e76fSBjorn Andersson 		},
1565*4a66e76fSBjorn Andersson 	},
1566*4a66e76fSBjorn Andersson };
1567*4a66e76fSBjorn Andersson 
1568*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_aux_clk = {
1569*4a66e76fSBjorn Andersson 	.halt_reg = 0x206c,
1570*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1571*4a66e76fSBjorn Andersson 	.clkr = {
1572*4a66e76fSBjorn Andersson 		.enable_reg = 0x206c,
1573*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1574*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1575*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_aux_clk",
1576*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1577*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_aux_clk_src.clkr.hw,
1578*4a66e76fSBjorn Andersson 			},
1579*4a66e76fSBjorn Andersson 			.num_parents = 1,
1580*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1581*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1582*4a66e76fSBjorn Andersson 		},
1583*4a66e76fSBjorn Andersson 	},
1584*4a66e76fSBjorn Andersson };
1585*4a66e76fSBjorn Andersson 
1586*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_clk = {
1587*4a66e76fSBjorn Andersson 	.halt_reg = 0x205c,
1588*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1589*4a66e76fSBjorn Andersson 	.clkr = {
1590*4a66e76fSBjorn Andersson 		.enable_reg = 0x205c,
1591*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1592*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1593*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_link_clk",
1594*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1595*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_clk_src.clkr.hw,
1596*4a66e76fSBjorn Andersson 			},
1597*4a66e76fSBjorn Andersson 			.num_parents = 1,
1598*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1599*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1600*4a66e76fSBjorn Andersson 		},
1601*4a66e76fSBjorn Andersson 	},
1602*4a66e76fSBjorn Andersson };
1603*4a66e76fSBjorn Andersson 
1604*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_clk = {
1605*4a66e76fSBjorn Andersson 	.halt_reg = 0x205c,
1606*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1607*4a66e76fSBjorn Andersson 	.clkr = {
1608*4a66e76fSBjorn Andersson 		.enable_reg = 0x205c,
1609*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1610*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1611*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_link_clk",
1612*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1613*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_clk_src.clkr.hw,
1614*4a66e76fSBjorn Andersson 			},
1615*4a66e76fSBjorn Andersson 			.num_parents = 1,
1616*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1617*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1618*4a66e76fSBjorn Andersson 		},
1619*4a66e76fSBjorn Andersson 	},
1620*4a66e76fSBjorn Andersson };
1621*4a66e76fSBjorn Andersson 
1622*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_intf_clk = {
1623*4a66e76fSBjorn Andersson 	.halt_reg = 0x2060,
1624*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1625*4a66e76fSBjorn Andersson 	.clkr = {
1626*4a66e76fSBjorn Andersson 		.enable_reg = 0x2060,
1627*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1628*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1629*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_link_intf_clk",
1630*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1631*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1632*4a66e76fSBjorn Andersson 			},
1633*4a66e76fSBjorn Andersson 			.num_parents = 1,
1634*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1635*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1636*4a66e76fSBjorn Andersson 		},
1637*4a66e76fSBjorn Andersson 	},
1638*4a66e76fSBjorn Andersson };
1639*4a66e76fSBjorn Andersson 
1640*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_intf_clk = {
1641*4a66e76fSBjorn Andersson 	.halt_reg = 0x2060,
1642*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1643*4a66e76fSBjorn Andersson 	.clkr = {
1644*4a66e76fSBjorn Andersson 		.enable_reg = 0x2060,
1645*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1646*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1647*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_link_intf_clk",
1648*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1649*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1650*4a66e76fSBjorn Andersson 			},
1651*4a66e76fSBjorn Andersson 			.num_parents = 1,
1652*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1653*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1654*4a66e76fSBjorn Andersson 		},
1655*4a66e76fSBjorn Andersson 	},
1656*4a66e76fSBjorn Andersson };
1657*4a66e76fSBjorn Andersson 
1658*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel0_clk = {
1659*4a66e76fSBjorn Andersson 	.halt_reg = 0x2070,
1660*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1661*4a66e76fSBjorn Andersson 	.clkr = {
1662*4a66e76fSBjorn Andersson 		.enable_reg = 0x2070,
1663*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1664*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1665*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_pixel0_clk",
1666*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1667*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
1668*4a66e76fSBjorn Andersson 			},
1669*4a66e76fSBjorn Andersson 			.num_parents = 1,
1670*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1671*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1672*4a66e76fSBjorn Andersson 		},
1673*4a66e76fSBjorn Andersson 	},
1674*4a66e76fSBjorn Andersson };
1675*4a66e76fSBjorn Andersson 
1676*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel0_clk = {
1677*4a66e76fSBjorn Andersson 	.halt_reg = 0x2070,
1678*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1679*4a66e76fSBjorn Andersson 	.clkr = {
1680*4a66e76fSBjorn Andersson 		.enable_reg = 0x2070,
1681*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1682*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1683*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_pixel0_clk",
1684*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1685*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
1686*4a66e76fSBjorn Andersson 			},
1687*4a66e76fSBjorn Andersson 			.num_parents = 1,
1688*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1689*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1690*4a66e76fSBjorn Andersson 		},
1691*4a66e76fSBjorn Andersson 	},
1692*4a66e76fSBjorn Andersson };
1693*4a66e76fSBjorn Andersson 
1694*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel1_clk = {
1695*4a66e76fSBjorn Andersson 	.halt_reg = 0x2074,
1696*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1697*4a66e76fSBjorn Andersson 	.clkr = {
1698*4a66e76fSBjorn Andersson 		.enable_reg = 0x2074,
1699*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1700*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1701*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_pixel1_clk",
1702*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1703*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
1704*4a66e76fSBjorn Andersson 			},
1705*4a66e76fSBjorn Andersson 			.num_parents = 1,
1706*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1707*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1708*4a66e76fSBjorn Andersson 		},
1709*4a66e76fSBjorn Andersson 	},
1710*4a66e76fSBjorn Andersson };
1711*4a66e76fSBjorn Andersson 
1712*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel1_clk = {
1713*4a66e76fSBjorn Andersson 	.halt_reg = 0x2074,
1714*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1715*4a66e76fSBjorn Andersson 	.clkr = {
1716*4a66e76fSBjorn Andersson 		.enable_reg = 0x2074,
1717*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1718*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1719*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_pixel1_clk",
1720*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1721*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
1722*4a66e76fSBjorn Andersson 			},
1723*4a66e76fSBjorn Andersson 			.num_parents = 1,
1724*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1725*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1726*4a66e76fSBjorn Andersson 		},
1727*4a66e76fSBjorn Andersson 	},
1728*4a66e76fSBjorn Andersson };
1729*4a66e76fSBjorn Andersson 
1730*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_usb_router_link_intf_clk = {
1731*4a66e76fSBjorn Andersson 	.halt_reg = 0x2064,
1732*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1733*4a66e76fSBjorn Andersson 	.clkr = {
1734*4a66e76fSBjorn Andersson 		.enable_reg = 0x2064,
1735*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1736*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1737*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_usb_router_link_intf_clk",
1738*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1739*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1740*4a66e76fSBjorn Andersson 			},
1741*4a66e76fSBjorn Andersson 			.num_parents = 1,
1742*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1743*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1744*4a66e76fSBjorn Andersson 		},
1745*4a66e76fSBjorn Andersson 	},
1746*4a66e76fSBjorn Andersson };
1747*4a66e76fSBjorn Andersson 
1748*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_usb_router_link_intf_clk = {
1749*4a66e76fSBjorn Andersson 	.halt_reg = 0x2064,
1750*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1751*4a66e76fSBjorn Andersson 	.clkr = {
1752*4a66e76fSBjorn Andersson 		.enable_reg = 0x2064,
1753*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1754*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1755*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_usb_router_link_intf_clk",
1756*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1757*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
1758*4a66e76fSBjorn Andersson 			},
1759*4a66e76fSBjorn Andersson 			.num_parents = 1,
1760*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1761*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1762*4a66e76fSBjorn Andersson 		},
1763*4a66e76fSBjorn Andersson 	},
1764*4a66e76fSBjorn Andersson };
1765*4a66e76fSBjorn Andersson 
1766*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_aux_clk = {
1767*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a0,
1768*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1769*4a66e76fSBjorn Andersson 	.clkr = {
1770*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a0,
1771*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1772*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1773*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_aux_clk",
1774*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1775*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_aux_clk_src.clkr.hw,
1776*4a66e76fSBjorn Andersson 			},
1777*4a66e76fSBjorn Andersson 			.num_parents = 1,
1778*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1779*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1780*4a66e76fSBjorn Andersson 		},
1781*4a66e76fSBjorn Andersson 	},
1782*4a66e76fSBjorn Andersson };
1783*4a66e76fSBjorn Andersson 
1784*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_aux_clk = {
1785*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a0,
1786*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1787*4a66e76fSBjorn Andersson 	.clkr = {
1788*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a0,
1789*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1790*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1791*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_aux_clk",
1792*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1793*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_aux_clk_src.clkr.hw,
1794*4a66e76fSBjorn Andersson 			},
1795*4a66e76fSBjorn Andersson 			.num_parents = 1,
1796*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1797*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1798*4a66e76fSBjorn Andersson 		},
1799*4a66e76fSBjorn Andersson 	},
1800*4a66e76fSBjorn Andersson };
1801*4a66e76fSBjorn Andersson 
1802*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_clk = {
1803*4a66e76fSBjorn Andersson 	.halt_reg = 0x2084,
1804*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1805*4a66e76fSBjorn Andersson 	.clkr = {
1806*4a66e76fSBjorn Andersson 		.enable_reg = 0x2084,
1807*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1808*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1809*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_link_clk",
1810*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1811*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_clk_src.clkr.hw,
1812*4a66e76fSBjorn Andersson 			},
1813*4a66e76fSBjorn Andersson 			.num_parents = 1,
1814*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1815*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1816*4a66e76fSBjorn Andersson 		},
1817*4a66e76fSBjorn Andersson 	},
1818*4a66e76fSBjorn Andersson };
1819*4a66e76fSBjorn Andersson 
1820*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_clk = {
1821*4a66e76fSBjorn Andersson 	.halt_reg = 0x2084,
1822*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1823*4a66e76fSBjorn Andersson 	.clkr = {
1824*4a66e76fSBjorn Andersson 		.enable_reg = 0x2084,
1825*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1826*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1827*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_link_clk",
1828*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1829*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_clk_src.clkr.hw,
1830*4a66e76fSBjorn Andersson 			},
1831*4a66e76fSBjorn Andersson 			.num_parents = 1,
1832*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1833*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1834*4a66e76fSBjorn Andersson 		},
1835*4a66e76fSBjorn Andersson 	},
1836*4a66e76fSBjorn Andersson };
1837*4a66e76fSBjorn Andersson 
1838*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_intf_clk = {
1839*4a66e76fSBjorn Andersson 	.halt_reg = 0x2088,
1840*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1841*4a66e76fSBjorn Andersson 	.clkr = {
1842*4a66e76fSBjorn Andersson 		.enable_reg = 0x2088,
1843*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1844*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1845*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_link_intf_clk",
1846*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1847*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1848*4a66e76fSBjorn Andersson 			},
1849*4a66e76fSBjorn Andersson 			.num_parents = 1,
1850*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1851*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1852*4a66e76fSBjorn Andersson 		},
1853*4a66e76fSBjorn Andersson 	},
1854*4a66e76fSBjorn Andersson };
1855*4a66e76fSBjorn Andersson 
1856*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_intf_clk = {
1857*4a66e76fSBjorn Andersson 	.halt_reg = 0x2088,
1858*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1859*4a66e76fSBjorn Andersson 	.clkr = {
1860*4a66e76fSBjorn Andersson 		.enable_reg = 0x2088,
1861*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1862*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1863*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_link_intf_clk",
1864*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1865*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1866*4a66e76fSBjorn Andersson 			},
1867*4a66e76fSBjorn Andersson 			.num_parents = 1,
1868*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1869*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1870*4a66e76fSBjorn Andersson 		},
1871*4a66e76fSBjorn Andersson 	},
1872*4a66e76fSBjorn Andersson };
1873*4a66e76fSBjorn Andersson 
1874*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel0_clk = {
1875*4a66e76fSBjorn Andersson 	.halt_reg = 0x2078,
1876*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1877*4a66e76fSBjorn Andersson 	.clkr = {
1878*4a66e76fSBjorn Andersson 		.enable_reg = 0x2078,
1879*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1880*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1881*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_pixel0_clk",
1882*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1883*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
1884*4a66e76fSBjorn Andersson 			},
1885*4a66e76fSBjorn Andersson 			.num_parents = 1,
1886*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1887*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1888*4a66e76fSBjorn Andersson 		},
1889*4a66e76fSBjorn Andersson 	},
1890*4a66e76fSBjorn Andersson };
1891*4a66e76fSBjorn Andersson 
1892*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel0_clk = {
1893*4a66e76fSBjorn Andersson 	.halt_reg = 0x2078,
1894*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1895*4a66e76fSBjorn Andersson 	.clkr = {
1896*4a66e76fSBjorn Andersson 		.enable_reg = 0x2078,
1897*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1898*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1899*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_pixel0_clk",
1900*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1901*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
1902*4a66e76fSBjorn Andersson 			},
1903*4a66e76fSBjorn Andersson 			.num_parents = 1,
1904*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1905*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1906*4a66e76fSBjorn Andersson 		},
1907*4a66e76fSBjorn Andersson 	},
1908*4a66e76fSBjorn Andersson };
1909*4a66e76fSBjorn Andersson 
1910*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel1_clk = {
1911*4a66e76fSBjorn Andersson 	.halt_reg = 0x236c,
1912*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1913*4a66e76fSBjorn Andersson 	.clkr = {
1914*4a66e76fSBjorn Andersson 		.enable_reg = 0x236c,
1915*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1916*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1917*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_pixel1_clk",
1918*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1919*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
1920*4a66e76fSBjorn Andersson 			},
1921*4a66e76fSBjorn Andersson 			.num_parents = 1,
1922*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1923*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1924*4a66e76fSBjorn Andersson 		},
1925*4a66e76fSBjorn Andersson 	},
1926*4a66e76fSBjorn Andersson };
1927*4a66e76fSBjorn Andersson 
1928*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel1_clk = {
1929*4a66e76fSBjorn Andersson 	.halt_reg = 0x236c,
1930*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1931*4a66e76fSBjorn Andersson 	.clkr = {
1932*4a66e76fSBjorn Andersson 		.enable_reg = 0x236c,
1933*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1934*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1935*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_pixel1_clk",
1936*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1937*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
1938*4a66e76fSBjorn Andersson 			},
1939*4a66e76fSBjorn Andersson 			.num_parents = 1,
1940*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1941*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1942*4a66e76fSBjorn Andersson 		},
1943*4a66e76fSBjorn Andersson 	},
1944*4a66e76fSBjorn Andersson };
1945*4a66e76fSBjorn Andersson 
1946*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_usb_router_link_intf_clk = {
1947*4a66e76fSBjorn Andersson 	.halt_reg = 0x208c,
1948*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1949*4a66e76fSBjorn Andersson 	.clkr = {
1950*4a66e76fSBjorn Andersson 		.enable_reg = 0x208c,
1951*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1952*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1953*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_usb_router_link_intf_clk",
1954*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1955*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1956*4a66e76fSBjorn Andersson 			},
1957*4a66e76fSBjorn Andersson 			.num_parents = 1,
1958*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1959*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1960*4a66e76fSBjorn Andersson 		},
1961*4a66e76fSBjorn Andersson 	},
1962*4a66e76fSBjorn Andersson };
1963*4a66e76fSBjorn Andersson 
1964*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_usb_router_link_intf_clk = {
1965*4a66e76fSBjorn Andersson 	.halt_reg = 0x208c,
1966*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1967*4a66e76fSBjorn Andersson 	.clkr = {
1968*4a66e76fSBjorn Andersson 		.enable_reg = 0x208c,
1969*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1970*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1971*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_usb_router_link_intf_clk",
1972*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1973*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
1974*4a66e76fSBjorn Andersson 			},
1975*4a66e76fSBjorn Andersson 			.num_parents = 1,
1976*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1977*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1978*4a66e76fSBjorn Andersson 		},
1979*4a66e76fSBjorn Andersson 	},
1980*4a66e76fSBjorn Andersson };
1981*4a66e76fSBjorn Andersson 
1982*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_aux_clk = {
1983*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a4,
1984*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
1985*4a66e76fSBjorn Andersson 	.clkr = {
1986*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a4,
1987*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
1988*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1989*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_aux_clk",
1990*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
1991*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_aux_clk_src.clkr.hw,
1992*4a66e76fSBjorn Andersson 			},
1993*4a66e76fSBjorn Andersson 			.num_parents = 1,
1994*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
1995*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
1996*4a66e76fSBjorn Andersson 		},
1997*4a66e76fSBjorn Andersson 	},
1998*4a66e76fSBjorn Andersson };
1999*4a66e76fSBjorn Andersson 
2000*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_aux_clk = {
2001*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a4,
2002*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2003*4a66e76fSBjorn Andersson 	.clkr = {
2004*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a4,
2005*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2006*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2007*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_aux_clk",
2008*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2009*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_aux_clk_src.clkr.hw,
2010*4a66e76fSBjorn Andersson 			},
2011*4a66e76fSBjorn Andersson 			.num_parents = 1,
2012*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2013*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2014*4a66e76fSBjorn Andersson 		},
2015*4a66e76fSBjorn Andersson 	},
2016*4a66e76fSBjorn Andersson };
2017*4a66e76fSBjorn Andersson 
2018*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_clk = {
2019*4a66e76fSBjorn Andersson 	.halt_reg = 0x2090,
2020*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2021*4a66e76fSBjorn Andersson 	.clkr = {
2022*4a66e76fSBjorn Andersson 		.enable_reg = 0x2090,
2023*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2024*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2025*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_link_clk",
2026*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2027*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_link_clk_src.clkr.hw,
2028*4a66e76fSBjorn Andersson 			},
2029*4a66e76fSBjorn Andersson 			.num_parents = 1,
2030*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2031*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2032*4a66e76fSBjorn Andersson 		},
2033*4a66e76fSBjorn Andersson 	},
2034*4a66e76fSBjorn Andersson };
2035*4a66e76fSBjorn Andersson 
2036*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_clk = {
2037*4a66e76fSBjorn Andersson 	.halt_reg = 0x2090,
2038*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2039*4a66e76fSBjorn Andersson 	.clkr = {
2040*4a66e76fSBjorn Andersson 		.enable_reg = 0x2090,
2041*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2042*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2043*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_link_clk",
2044*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2045*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_link_clk_src.clkr.hw,
2046*4a66e76fSBjorn Andersson 			},
2047*4a66e76fSBjorn Andersson 			.num_parents = 1,
2048*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2049*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2050*4a66e76fSBjorn Andersson 		},
2051*4a66e76fSBjorn Andersson 	},
2052*4a66e76fSBjorn Andersson };
2053*4a66e76fSBjorn Andersson 
2054*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_intf_clk = {
2055*4a66e76fSBjorn Andersson 	.halt_reg = 0x2094,
2056*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2057*4a66e76fSBjorn Andersson 	.clkr = {
2058*4a66e76fSBjorn Andersson 		.enable_reg = 0x2094,
2059*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2060*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2061*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_link_intf_clk",
2062*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2063*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
2064*4a66e76fSBjorn Andersson 			},
2065*4a66e76fSBjorn Andersson 			.num_parents = 1,
2066*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2067*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2068*4a66e76fSBjorn Andersson 		},
2069*4a66e76fSBjorn Andersson 	},
2070*4a66e76fSBjorn Andersson };
2071*4a66e76fSBjorn Andersson 
2072*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_intf_clk = {
2073*4a66e76fSBjorn Andersson 	.halt_reg = 0x2094,
2074*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2075*4a66e76fSBjorn Andersson 	.clkr = {
2076*4a66e76fSBjorn Andersson 		.enable_reg = 0x2094,
2077*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2078*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2079*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_link_intf_clk",
2080*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2081*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
2082*4a66e76fSBjorn Andersson 			},
2083*4a66e76fSBjorn Andersson 			.num_parents = 1,
2084*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2085*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2086*4a66e76fSBjorn Andersson 		},
2087*4a66e76fSBjorn Andersson 	},
2088*4a66e76fSBjorn Andersson };
2089*4a66e76fSBjorn Andersson 
2090*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel0_clk = {
2091*4a66e76fSBjorn Andersson 	.halt_reg = 0x207c,
2092*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2093*4a66e76fSBjorn Andersson 	.clkr = {
2094*4a66e76fSBjorn Andersson 		.enable_reg = 0x207c,
2095*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2096*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2097*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_pixel0_clk",
2098*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2099*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
2100*4a66e76fSBjorn Andersson 			},
2101*4a66e76fSBjorn Andersson 			.num_parents = 1,
2102*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2103*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2104*4a66e76fSBjorn Andersson 		},
2105*4a66e76fSBjorn Andersson 	},
2106*4a66e76fSBjorn Andersson };
2107*4a66e76fSBjorn Andersson 
2108*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel0_clk = {
2109*4a66e76fSBjorn Andersson 	.halt_reg = 0x207c,
2110*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2111*4a66e76fSBjorn Andersson 	.clkr = {
2112*4a66e76fSBjorn Andersson 		.enable_reg = 0x207c,
2113*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2114*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2115*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_pixel0_clk",
2116*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2117*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
2118*4a66e76fSBjorn Andersson 			},
2119*4a66e76fSBjorn Andersson 			.num_parents = 1,
2120*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2121*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2122*4a66e76fSBjorn Andersson 		},
2123*4a66e76fSBjorn Andersson 	},
2124*4a66e76fSBjorn Andersson };
2125*4a66e76fSBjorn Andersson 
2126*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel1_clk = {
2127*4a66e76fSBjorn Andersson 	.halt_reg = 0x2080,
2128*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2129*4a66e76fSBjorn Andersson 	.clkr = {
2130*4a66e76fSBjorn Andersson 		.enable_reg = 0x2080,
2131*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2132*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2133*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_pixel1_clk",
2134*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2135*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
2136*4a66e76fSBjorn Andersson 			},
2137*4a66e76fSBjorn Andersson 			.num_parents = 1,
2138*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2139*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2140*4a66e76fSBjorn Andersson 		},
2141*4a66e76fSBjorn Andersson 	},
2142*4a66e76fSBjorn Andersson };
2143*4a66e76fSBjorn Andersson 
2144*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel1_clk = {
2145*4a66e76fSBjorn Andersson 	.halt_reg = 0x2080,
2146*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2147*4a66e76fSBjorn Andersson 	.clkr = {
2148*4a66e76fSBjorn Andersson 		.enable_reg = 0x2080,
2149*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2150*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2151*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_pixel1_clk",
2152*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2153*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
2154*4a66e76fSBjorn Andersson 			},
2155*4a66e76fSBjorn Andersson 			.num_parents = 1,
2156*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2157*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2158*4a66e76fSBjorn Andersson 		},
2159*4a66e76fSBjorn Andersson 	},
2160*4a66e76fSBjorn Andersson };
2161*4a66e76fSBjorn Andersson 
2162*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_aux_clk = {
2163*4a66e76fSBjorn Andersson 	.halt_reg = 0x20b8,
2164*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2165*4a66e76fSBjorn Andersson 	.clkr = {
2166*4a66e76fSBjorn Andersson 		.enable_reg = 0x20b8,
2167*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2168*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2169*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_aux_clk",
2170*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2171*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_aux_clk_src.clkr.hw,
2172*4a66e76fSBjorn Andersson 			},
2173*4a66e76fSBjorn Andersson 			.num_parents = 1,
2174*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2175*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2176*4a66e76fSBjorn Andersson 		},
2177*4a66e76fSBjorn Andersson 	},
2178*4a66e76fSBjorn Andersson };
2179*4a66e76fSBjorn Andersson 
2180*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_aux_clk = {
2181*4a66e76fSBjorn Andersson 	.halt_reg = 0x20b8,
2182*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2183*4a66e76fSBjorn Andersson 	.clkr = {
2184*4a66e76fSBjorn Andersson 		.enable_reg = 0x20b8,
2185*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2186*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2187*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_aux_clk",
2188*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2189*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_aux_clk_src.clkr.hw,
2190*4a66e76fSBjorn Andersson 			},
2191*4a66e76fSBjorn Andersson 			.num_parents = 1,
2192*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2193*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2194*4a66e76fSBjorn Andersson 		},
2195*4a66e76fSBjorn Andersson 	},
2196*4a66e76fSBjorn Andersson };
2197*4a66e76fSBjorn Andersson 
2198*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_clk = {
2199*4a66e76fSBjorn Andersson 	.halt_reg = 0x20ac,
2200*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2201*4a66e76fSBjorn Andersson 	.clkr = {
2202*4a66e76fSBjorn Andersson 		.enable_reg = 0x20ac,
2203*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2204*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2205*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_link_clk",
2206*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2207*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_link_clk_src.clkr.hw,
2208*4a66e76fSBjorn Andersson 			},
2209*4a66e76fSBjorn Andersson 			.num_parents = 1,
2210*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2211*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2212*4a66e76fSBjorn Andersson 		},
2213*4a66e76fSBjorn Andersson 	},
2214*4a66e76fSBjorn Andersson };
2215*4a66e76fSBjorn Andersson 
2216*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_clk = {
2217*4a66e76fSBjorn Andersson 	.halt_reg = 0x20ac,
2218*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2219*4a66e76fSBjorn Andersson 	.clkr = {
2220*4a66e76fSBjorn Andersson 		.enable_reg = 0x20ac,
2221*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2222*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2223*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_link_clk",
2224*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2225*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_link_clk_src.clkr.hw,
2226*4a66e76fSBjorn Andersson 			},
2227*4a66e76fSBjorn Andersson 			.num_parents = 1,
2228*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2229*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2230*4a66e76fSBjorn Andersson 		},
2231*4a66e76fSBjorn Andersson 	},
2232*4a66e76fSBjorn Andersson };
2233*4a66e76fSBjorn Andersson 
2234*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_intf_clk = {
2235*4a66e76fSBjorn Andersson 	.halt_reg = 0x20b0,
2236*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2237*4a66e76fSBjorn Andersson 	.clkr = {
2238*4a66e76fSBjorn Andersson 		.enable_reg = 0x20b0,
2239*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2240*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2241*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_link_intf_clk",
2242*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2243*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
2244*4a66e76fSBjorn Andersson 			},
2245*4a66e76fSBjorn Andersson 			.num_parents = 1,
2246*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2247*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2248*4a66e76fSBjorn Andersson 		},
2249*4a66e76fSBjorn Andersson 	},
2250*4a66e76fSBjorn Andersson };
2251*4a66e76fSBjorn Andersson 
2252*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_intf_clk = {
2253*4a66e76fSBjorn Andersson 	.halt_reg = 0x20b0,
2254*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2255*4a66e76fSBjorn Andersson 	.clkr = {
2256*4a66e76fSBjorn Andersson 		.enable_reg = 0x20b0,
2257*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2258*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2259*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_link_intf_clk",
2260*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2261*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
2262*4a66e76fSBjorn Andersson 			},
2263*4a66e76fSBjorn Andersson 			.num_parents = 1,
2264*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2265*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2266*4a66e76fSBjorn Andersson 		},
2267*4a66e76fSBjorn Andersson 	},
2268*4a66e76fSBjorn Andersson };
2269*4a66e76fSBjorn Andersson 
2270*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_pixel0_clk = {
2271*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a8,
2272*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2273*4a66e76fSBjorn Andersson 	.clkr = {
2274*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a8,
2275*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2276*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2277*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_pixel0_clk",
2278*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2279*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
2280*4a66e76fSBjorn Andersson 			},
2281*4a66e76fSBjorn Andersson 			.num_parents = 1,
2282*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2283*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2284*4a66e76fSBjorn Andersson 		},
2285*4a66e76fSBjorn Andersson 	},
2286*4a66e76fSBjorn Andersson };
2287*4a66e76fSBjorn Andersson 
2288*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_pixel0_clk = {
2289*4a66e76fSBjorn Andersson 	.halt_reg = 0x20a8,
2290*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2291*4a66e76fSBjorn Andersson 	.clkr = {
2292*4a66e76fSBjorn Andersson 		.enable_reg = 0x20a8,
2293*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2294*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2295*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_pixel0_clk",
2296*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2297*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
2298*4a66e76fSBjorn Andersson 			},
2299*4a66e76fSBjorn Andersson 			.num_parents = 1,
2300*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2301*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2302*4a66e76fSBjorn Andersson 		},
2303*4a66e76fSBjorn Andersson 	},
2304*4a66e76fSBjorn Andersson };
2305*4a66e76fSBjorn Andersson 
2306*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc0_clk = {
2307*4a66e76fSBjorn Andersson 	.halt_reg = 0x2054,
2308*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2309*4a66e76fSBjorn Andersson 	.clkr = {
2310*4a66e76fSBjorn Andersson 		.enable_reg = 0x2054,
2311*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2312*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2313*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_esc0_clk",
2314*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2315*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_esc0_clk_src.clkr.hw,
2316*4a66e76fSBjorn Andersson 			},
2317*4a66e76fSBjorn Andersson 			.num_parents = 1,
2318*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2319*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2320*4a66e76fSBjorn Andersson 		},
2321*4a66e76fSBjorn Andersson 	},
2322*4a66e76fSBjorn Andersson };
2323*4a66e76fSBjorn Andersson 
2324*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc0_clk = {
2325*4a66e76fSBjorn Andersson 	.halt_reg = 0x2054,
2326*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2327*4a66e76fSBjorn Andersson 	.clkr = {
2328*4a66e76fSBjorn Andersson 		.enable_reg = 0x2054,
2329*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2330*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2331*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_esc0_clk",
2332*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2333*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_esc0_clk_src.clkr.hw,
2334*4a66e76fSBjorn Andersson 			},
2335*4a66e76fSBjorn Andersson 			.num_parents = 1,
2336*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2337*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2338*4a66e76fSBjorn Andersson 		},
2339*4a66e76fSBjorn Andersson 	},
2340*4a66e76fSBjorn Andersson };
2341*4a66e76fSBjorn Andersson 
2342*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc1_clk = {
2343*4a66e76fSBjorn Andersson 	.halt_reg = 0x2058,
2344*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2345*4a66e76fSBjorn Andersson 	.clkr = {
2346*4a66e76fSBjorn Andersson 		.enable_reg = 0x2058,
2347*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2348*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2349*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_esc1_clk",
2350*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2351*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_esc1_clk_src.clkr.hw,
2352*4a66e76fSBjorn Andersson 			},
2353*4a66e76fSBjorn Andersson 			.num_parents = 1,
2354*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2355*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2356*4a66e76fSBjorn Andersson 		},
2357*4a66e76fSBjorn Andersson 	},
2358*4a66e76fSBjorn Andersson };
2359*4a66e76fSBjorn Andersson 
2360*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc1_clk = {
2361*4a66e76fSBjorn Andersson 	.halt_reg = 0x2058,
2362*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2363*4a66e76fSBjorn Andersson 	.clkr = {
2364*4a66e76fSBjorn Andersson 		.enable_reg = 0x2058,
2365*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2366*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2367*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_esc1_clk",
2368*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2369*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_esc1_clk_src.clkr.hw,
2370*4a66e76fSBjorn Andersson 			},
2371*4a66e76fSBjorn Andersson 			.num_parents = 1,
2372*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2373*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2374*4a66e76fSBjorn Andersson 		},
2375*4a66e76fSBjorn Andersson 	},
2376*4a66e76fSBjorn Andersson };
2377*4a66e76fSBjorn Andersson 
2378*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp1_clk = {
2379*4a66e76fSBjorn Andersson 	.halt_reg = 0x2014,
2380*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2381*4a66e76fSBjorn Andersson 	.clkr = {
2382*4a66e76fSBjorn Andersson 		.enable_reg = 0x2014,
2383*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2384*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2385*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp1_clk",
2386*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2387*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
2388*4a66e76fSBjorn Andersson 			},
2389*4a66e76fSBjorn Andersson 			.num_parents = 1,
2390*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2391*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2392*4a66e76fSBjorn Andersson 		},
2393*4a66e76fSBjorn Andersson 	},
2394*4a66e76fSBjorn Andersson };
2395*4a66e76fSBjorn Andersson 
2396*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp1_clk = {
2397*4a66e76fSBjorn Andersson 	.halt_reg = 0x2014,
2398*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2399*4a66e76fSBjorn Andersson 	.clkr = {
2400*4a66e76fSBjorn Andersson 		.enable_reg = 0x2014,
2401*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2402*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2403*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp1_clk",
2404*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2405*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
2406*4a66e76fSBjorn Andersson 			},
2407*4a66e76fSBjorn Andersson 			.num_parents = 1,
2408*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2409*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2410*4a66e76fSBjorn Andersson 		},
2411*4a66e76fSBjorn Andersson 	},
2412*4a66e76fSBjorn Andersson };
2413*4a66e76fSBjorn Andersson 
2414*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_clk = {
2415*4a66e76fSBjorn Andersson 	.halt_reg = 0x200c,
2416*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2417*4a66e76fSBjorn Andersson 	.clkr = {
2418*4a66e76fSBjorn Andersson 		.enable_reg = 0x200c,
2419*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2420*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2421*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_clk",
2422*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2423*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
2424*4a66e76fSBjorn Andersson 			},
2425*4a66e76fSBjorn Andersson 			.num_parents = 1,
2426*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2427*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2428*4a66e76fSBjorn Andersson 		},
2429*4a66e76fSBjorn Andersson 	},
2430*4a66e76fSBjorn Andersson };
2431*4a66e76fSBjorn Andersson 
2432*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_clk = {
2433*4a66e76fSBjorn Andersson 	.halt_reg = 0x200c,
2434*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2435*4a66e76fSBjorn Andersson 	.clkr = {
2436*4a66e76fSBjorn Andersson 		.enable_reg = 0x200c,
2437*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2438*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2439*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_clk",
2440*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2441*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
2442*4a66e76fSBjorn Andersson 			},
2443*4a66e76fSBjorn Andersson 			.num_parents = 1,
2444*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2445*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2446*4a66e76fSBjorn Andersson 		},
2447*4a66e76fSBjorn Andersson 	},
2448*4a66e76fSBjorn Andersson };
2449*4a66e76fSBjorn Andersson 
2450*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut1_clk = {
2451*4a66e76fSBjorn Andersson 	.halt_reg = 0x2034,
2452*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2453*4a66e76fSBjorn Andersson 	.clkr = {
2454*4a66e76fSBjorn Andersson 		.enable_reg = 0x2034,
2455*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2456*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2457*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_lut1_clk",
2458*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2459*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
2460*4a66e76fSBjorn Andersson 			},
2461*4a66e76fSBjorn Andersson 			.num_parents = 1,
2462*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2463*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2464*4a66e76fSBjorn Andersson 		},
2465*4a66e76fSBjorn Andersson 	},
2466*4a66e76fSBjorn Andersson };
2467*4a66e76fSBjorn Andersson 
2468*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut1_clk = {
2469*4a66e76fSBjorn Andersson 	.halt_reg = 0x2034,
2470*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2471*4a66e76fSBjorn Andersson 	.clkr = {
2472*4a66e76fSBjorn Andersson 		.enable_reg = 0x2034,
2473*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2474*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2475*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_lut1_clk",
2476*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2477*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
2478*4a66e76fSBjorn Andersson 			},
2479*4a66e76fSBjorn Andersson 			.num_parents = 1,
2480*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2481*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2482*4a66e76fSBjorn Andersson 		},
2483*4a66e76fSBjorn Andersson 	},
2484*4a66e76fSBjorn Andersson };
2485*4a66e76fSBjorn Andersson 
2486*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut_clk = {
2487*4a66e76fSBjorn Andersson 	.halt_reg = 0x202c,
2488*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
2489*4a66e76fSBjorn Andersson 	.clkr = {
2490*4a66e76fSBjorn Andersson 		.enable_reg = 0x202c,
2491*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2492*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2493*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_lut_clk",
2494*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2495*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
2496*4a66e76fSBjorn Andersson 			},
2497*4a66e76fSBjorn Andersson 			.num_parents = 1,
2498*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2499*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2500*4a66e76fSBjorn Andersson 		},
2501*4a66e76fSBjorn Andersson 	},
2502*4a66e76fSBjorn Andersson };
2503*4a66e76fSBjorn Andersson 
2504*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut_clk = {
2505*4a66e76fSBjorn Andersson 	.halt_reg = 0x202c,
2506*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
2507*4a66e76fSBjorn Andersson 	.clkr = {
2508*4a66e76fSBjorn Andersson 		.enable_reg = 0x202c,
2509*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2510*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2511*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_lut_clk",
2512*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2513*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
2514*4a66e76fSBjorn Andersson 			},
2515*4a66e76fSBjorn Andersson 			.num_parents = 1,
2516*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2517*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2518*4a66e76fSBjorn Andersson 		},
2519*4a66e76fSBjorn Andersson 	},
2520*4a66e76fSBjorn Andersson };
2521*4a66e76fSBjorn Andersson 
2522*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_non_gdsc_ahb_clk = {
2523*4a66e76fSBjorn Andersson 	.halt_reg = 0x4004,
2524*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
2525*4a66e76fSBjorn Andersson 	.clkr = {
2526*4a66e76fSBjorn Andersson 		.enable_reg = 0x4004,
2527*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2528*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2529*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_non_gdsc_ahb_clk",
2530*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2531*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
2532*4a66e76fSBjorn Andersson 			},
2533*4a66e76fSBjorn Andersson 			.num_parents = 1,
2534*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2535*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2536*4a66e76fSBjorn Andersson 		},
2537*4a66e76fSBjorn Andersson 	},
2538*4a66e76fSBjorn Andersson };
2539*4a66e76fSBjorn Andersson 
2540*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_non_gdsc_ahb_clk = {
2541*4a66e76fSBjorn Andersson 	.halt_reg = 0x4004,
2542*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
2543*4a66e76fSBjorn Andersson 	.clkr = {
2544*4a66e76fSBjorn Andersson 		.enable_reg = 0x4004,
2545*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2546*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2547*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_non_gdsc_ahb_clk",
2548*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2549*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
2550*4a66e76fSBjorn Andersson 			},
2551*4a66e76fSBjorn Andersson 			.num_parents = 1,
2552*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2553*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2554*4a66e76fSBjorn Andersson 		},
2555*4a66e76fSBjorn Andersson 	},
2556*4a66e76fSBjorn Andersson };
2557*4a66e76fSBjorn Andersson 
2558*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk0_clk = {
2559*4a66e76fSBjorn Andersson 	.halt_reg = 0x2004,
2560*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2561*4a66e76fSBjorn Andersson 	.clkr = {
2562*4a66e76fSBjorn Andersson 		.enable_reg = 0x2004,
2563*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2564*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2565*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_pclk0_clk",
2566*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2567*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_pclk0_clk_src.clkr.hw,
2568*4a66e76fSBjorn Andersson 			},
2569*4a66e76fSBjorn Andersson 			.num_parents = 1,
2570*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2571*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2572*4a66e76fSBjorn Andersson 		},
2573*4a66e76fSBjorn Andersson 	},
2574*4a66e76fSBjorn Andersson };
2575*4a66e76fSBjorn Andersson 
2576*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk0_clk = {
2577*4a66e76fSBjorn Andersson 	.halt_reg = 0x2004,
2578*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2579*4a66e76fSBjorn Andersson 	.clkr = {
2580*4a66e76fSBjorn Andersson 		.enable_reg = 0x2004,
2581*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2582*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2583*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_pclk0_clk",
2584*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2585*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_pclk0_clk_src.clkr.hw,
2586*4a66e76fSBjorn Andersson 			},
2587*4a66e76fSBjorn Andersson 			.num_parents = 1,
2588*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2589*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2590*4a66e76fSBjorn Andersson 		},
2591*4a66e76fSBjorn Andersson 	},
2592*4a66e76fSBjorn Andersson };
2593*4a66e76fSBjorn Andersson 
2594*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk1_clk = {
2595*4a66e76fSBjorn Andersson 	.halt_reg = 0x2008,
2596*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2597*4a66e76fSBjorn Andersson 	.clkr = {
2598*4a66e76fSBjorn Andersson 		.enable_reg = 0x2008,
2599*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2600*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2601*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_pclk1_clk",
2602*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2603*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_pclk1_clk_src.clkr.hw,
2604*4a66e76fSBjorn Andersson 			},
2605*4a66e76fSBjorn Andersson 			.num_parents = 1,
2606*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2607*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2608*4a66e76fSBjorn Andersson 		},
2609*4a66e76fSBjorn Andersson 	},
2610*4a66e76fSBjorn Andersson };
2611*4a66e76fSBjorn Andersson 
2612*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk1_clk = {
2613*4a66e76fSBjorn Andersson 	.halt_reg = 0x2008,
2614*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2615*4a66e76fSBjorn Andersson 	.clkr = {
2616*4a66e76fSBjorn Andersson 		.enable_reg = 0x2008,
2617*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2618*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2619*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_pclk1_clk",
2620*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2621*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_pclk1_clk_src.clkr.hw,
2622*4a66e76fSBjorn Andersson 			},
2623*4a66e76fSBjorn Andersson 			.num_parents = 1,
2624*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2625*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2626*4a66e76fSBjorn Andersson 		},
2627*4a66e76fSBjorn Andersson 	},
2628*4a66e76fSBjorn Andersson };
2629*4a66e76fSBjorn Andersson 
2630*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot1_clk = {
2631*4a66e76fSBjorn Andersson 	.halt_reg = 0x2024,
2632*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2633*4a66e76fSBjorn Andersson 	.clkr = {
2634*4a66e76fSBjorn Andersson 		.enable_reg = 0x2024,
2635*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2636*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2637*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rot1_clk",
2638*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2639*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_rot_clk_src.clkr.hw,
2640*4a66e76fSBjorn Andersson 			},
2641*4a66e76fSBjorn Andersson 			.num_parents = 1,
2642*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2643*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2644*4a66e76fSBjorn Andersson 		},
2645*4a66e76fSBjorn Andersson 	},
2646*4a66e76fSBjorn Andersson };
2647*4a66e76fSBjorn Andersson 
2648*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot1_clk = {
2649*4a66e76fSBjorn Andersson 	.halt_reg = 0x2024,
2650*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2651*4a66e76fSBjorn Andersson 	.clkr = {
2652*4a66e76fSBjorn Andersson 		.enable_reg = 0x2024,
2653*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2654*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2655*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rot1_clk",
2656*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2657*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_rot_clk_src.clkr.hw,
2658*4a66e76fSBjorn Andersson 			},
2659*4a66e76fSBjorn Andersson 			.num_parents = 1,
2660*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2661*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2662*4a66e76fSBjorn Andersson 		},
2663*4a66e76fSBjorn Andersson 	},
2664*4a66e76fSBjorn Andersson };
2665*4a66e76fSBjorn Andersson 
2666*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot_clk = {
2667*4a66e76fSBjorn Andersson 	.halt_reg = 0x201c,
2668*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2669*4a66e76fSBjorn Andersson 	.clkr = {
2670*4a66e76fSBjorn Andersson 		.enable_reg = 0x201c,
2671*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2672*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2673*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rot_clk",
2674*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2675*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_rot_clk_src.clkr.hw,
2676*4a66e76fSBjorn Andersson 			},
2677*4a66e76fSBjorn Andersson 			.num_parents = 1,
2678*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2679*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2680*4a66e76fSBjorn Andersson 		},
2681*4a66e76fSBjorn Andersson 	},
2682*4a66e76fSBjorn Andersson };
2683*4a66e76fSBjorn Andersson 
2684*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot_clk = {
2685*4a66e76fSBjorn Andersson 	.halt_reg = 0x201c,
2686*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2687*4a66e76fSBjorn Andersson 	.clkr = {
2688*4a66e76fSBjorn Andersson 		.enable_reg = 0x201c,
2689*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2690*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2691*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rot_clk",
2692*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2693*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_rot_clk_src.clkr.hw,
2694*4a66e76fSBjorn Andersson 			},
2695*4a66e76fSBjorn Andersson 			.num_parents = 1,
2696*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2697*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2698*4a66e76fSBjorn Andersson 		},
2699*4a66e76fSBjorn Andersson 	},
2700*4a66e76fSBjorn Andersson };
2701*4a66e76fSBjorn Andersson 
2702*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_ahb_clk = {
2703*4a66e76fSBjorn Andersson 	.halt_reg = 0x400c,
2704*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2705*4a66e76fSBjorn Andersson 	.clkr = {
2706*4a66e76fSBjorn Andersson 		.enable_reg = 0x400c,
2707*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2708*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2709*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rscc_ahb_clk",
2710*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2711*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
2712*4a66e76fSBjorn Andersson 			},
2713*4a66e76fSBjorn Andersson 			.num_parents = 1,
2714*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2715*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2716*4a66e76fSBjorn Andersson 		},
2717*4a66e76fSBjorn Andersson 	},
2718*4a66e76fSBjorn Andersson };
2719*4a66e76fSBjorn Andersson 
2720*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_ahb_clk = {
2721*4a66e76fSBjorn Andersson 	.halt_reg = 0x400c,
2722*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2723*4a66e76fSBjorn Andersson 	.clkr = {
2724*4a66e76fSBjorn Andersson 		.enable_reg = 0x400c,
2725*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2726*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2727*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rscc_ahb_clk",
2728*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2729*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
2730*4a66e76fSBjorn Andersson 			},
2731*4a66e76fSBjorn Andersson 			.num_parents = 1,
2732*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2733*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2734*4a66e76fSBjorn Andersson 		},
2735*4a66e76fSBjorn Andersson 	},
2736*4a66e76fSBjorn Andersson };
2737*4a66e76fSBjorn Andersson 
2738*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_vsync_clk = {
2739*4a66e76fSBjorn Andersson 	.halt_reg = 0x4008,
2740*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2741*4a66e76fSBjorn Andersson 	.clkr = {
2742*4a66e76fSBjorn Andersson 		.enable_reg = 0x4008,
2743*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2744*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2745*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rscc_vsync_clk",
2746*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2747*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
2748*4a66e76fSBjorn Andersson 			},
2749*4a66e76fSBjorn Andersson 			.num_parents = 1,
2750*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2751*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2752*4a66e76fSBjorn Andersson 		},
2753*4a66e76fSBjorn Andersson 	},
2754*4a66e76fSBjorn Andersson };
2755*4a66e76fSBjorn Andersson 
2756*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_vsync_clk = {
2757*4a66e76fSBjorn Andersson 	.halt_reg = 0x4008,
2758*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2759*4a66e76fSBjorn Andersson 	.clkr = {
2760*4a66e76fSBjorn Andersson 		.enable_reg = 0x4008,
2761*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2762*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2763*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rscc_vsync_clk",
2764*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2765*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
2766*4a66e76fSBjorn Andersson 			},
2767*4a66e76fSBjorn Andersson 			.num_parents = 1,
2768*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2769*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2770*4a66e76fSBjorn Andersson 		},
2771*4a66e76fSBjorn Andersson 	},
2772*4a66e76fSBjorn Andersson };
2773*4a66e76fSBjorn Andersson 
2774*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync1_clk = {
2775*4a66e76fSBjorn Andersson 	.halt_reg = 0x2040,
2776*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2777*4a66e76fSBjorn Andersson 	.clkr = {
2778*4a66e76fSBjorn Andersson 		.enable_reg = 0x2040,
2779*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2780*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2781*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_vsync1_clk",
2782*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2783*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
2784*4a66e76fSBjorn Andersson 			},
2785*4a66e76fSBjorn Andersson 			.num_parents = 1,
2786*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2787*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2788*4a66e76fSBjorn Andersson 		},
2789*4a66e76fSBjorn Andersson 	},
2790*4a66e76fSBjorn Andersson };
2791*4a66e76fSBjorn Andersson 
2792*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync1_clk = {
2793*4a66e76fSBjorn Andersson 	.halt_reg = 0x2040,
2794*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2795*4a66e76fSBjorn Andersson 	.clkr = {
2796*4a66e76fSBjorn Andersson 		.enable_reg = 0x2040,
2797*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2798*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2799*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_vsync1_clk",
2800*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2801*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
2802*4a66e76fSBjorn Andersson 			},
2803*4a66e76fSBjorn Andersson 			.num_parents = 1,
2804*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2805*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2806*4a66e76fSBjorn Andersson 		},
2807*4a66e76fSBjorn Andersson 	},
2808*4a66e76fSBjorn Andersson };
2809*4a66e76fSBjorn Andersson 
2810*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync_clk = {
2811*4a66e76fSBjorn Andersson 	.halt_reg = 0x203c,
2812*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2813*4a66e76fSBjorn Andersson 	.clkr = {
2814*4a66e76fSBjorn Andersson 		.enable_reg = 0x203c,
2815*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2816*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2817*4a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_vsync_clk",
2818*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2819*4a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
2820*4a66e76fSBjorn Andersson 			},
2821*4a66e76fSBjorn Andersson 			.num_parents = 1,
2822*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2823*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2824*4a66e76fSBjorn Andersson 		},
2825*4a66e76fSBjorn Andersson 	},
2826*4a66e76fSBjorn Andersson };
2827*4a66e76fSBjorn Andersson 
2828*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync_clk = {
2829*4a66e76fSBjorn Andersson 	.halt_reg = 0x203c,
2830*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2831*4a66e76fSBjorn Andersson 	.clkr = {
2832*4a66e76fSBjorn Andersson 		.enable_reg = 0x203c,
2833*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2834*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2835*4a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_vsync_clk",
2836*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2837*4a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
2838*4a66e76fSBjorn Andersson 			},
2839*4a66e76fSBjorn Andersson 			.num_parents = 1,
2840*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2841*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2842*4a66e76fSBjorn Andersson 		},
2843*4a66e76fSBjorn Andersson 	},
2844*4a66e76fSBjorn Andersson };
2845*4a66e76fSBjorn Andersson 
2846*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_sleep_clk = {
2847*4a66e76fSBjorn Andersson 	.halt_reg = 0x6078,
2848*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2849*4a66e76fSBjorn Andersson 	.clkr = {
2850*4a66e76fSBjorn Andersson 		.enable_reg = 0x6078,
2851*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2852*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2853*4a66e76fSBjorn Andersson 			.name = "disp0_cc_sleep_clk",
2854*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2855*4a66e76fSBjorn Andersson 				&disp0_cc_sleep_clk_src.clkr.hw,
2856*4a66e76fSBjorn Andersson 			},
2857*4a66e76fSBjorn Andersson 			.num_parents = 1,
2858*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2859*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2860*4a66e76fSBjorn Andersson 		},
2861*4a66e76fSBjorn Andersson 	},
2862*4a66e76fSBjorn Andersson };
2863*4a66e76fSBjorn Andersson 
2864*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_sleep_clk = {
2865*4a66e76fSBjorn Andersson 	.halt_reg = 0x6078,
2866*4a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
2867*4a66e76fSBjorn Andersson 	.clkr = {
2868*4a66e76fSBjorn Andersson 		.enable_reg = 0x6078,
2869*4a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
2870*4a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2871*4a66e76fSBjorn Andersson 			.name = "disp1_cc_sleep_clk",
2872*4a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
2873*4a66e76fSBjorn Andersson 				&disp1_cc_sleep_clk_src.clkr.hw,
2874*4a66e76fSBjorn Andersson 			},
2875*4a66e76fSBjorn Andersson 			.num_parents = 1,
2876*4a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
2877*4a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
2878*4a66e76fSBjorn Andersson 		},
2879*4a66e76fSBjorn Andersson 	},
2880*4a66e76fSBjorn Andersson };
2881*4a66e76fSBjorn Andersson 
2882*4a66e76fSBjorn Andersson static struct clk_regmap *disp0_cc_sc8280xp_clocks[] = {
2883*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB1_CLK] = &disp0_cc_mdss_ahb1_clk.clkr,
2884*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK] = &disp0_cc_mdss_ahb_clk.clkr,
2885*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp0_cc_mdss_ahb_clk_src.clkr,
2886*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK] = &disp0_cc_mdss_byte0_clk.clkr,
2887*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp0_cc_mdss_byte0_clk_src.clkr,
2888*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp0_cc_mdss_byte0_div_clk_src.clkr,
2889*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp0_cc_mdss_byte0_intf_clk.clkr,
2890*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK] = &disp0_cc_mdss_byte1_clk.clkr,
2891*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp0_cc_mdss_byte1_clk_src.clkr,
2892*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp0_cc_mdss_byte1_div_clk_src.clkr,
2893*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp0_cc_mdss_byte1_intf_clk.clkr,
2894*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp0_cc_mdss_dptx0_aux_clk.clkr,
2895*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp0_cc_mdss_dptx0_aux_clk_src.clkr,
2896*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp0_cc_mdss_dptx0_link_clk.clkr,
2897*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp0_cc_mdss_dptx0_link_clk_src.clkr,
2898*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx0_link_div_clk_src.clkr,
2899*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_link_intf_clk.clkr,
2900*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp0_cc_mdss_dptx0_pixel0_clk.clkr,
2901*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel0_clk_src.clkr,
2902*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp0_cc_mdss_dptx0_pixel1_clk.clkr,
2903*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel1_clk_src.clkr,
2904*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
2905*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp0_cc_mdss_dptx1_aux_clk.clkr,
2906*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp0_cc_mdss_dptx1_aux_clk_src.clkr,
2907*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp0_cc_mdss_dptx1_link_clk.clkr,
2908*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp0_cc_mdss_dptx1_link_clk_src.clkr,
2909*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx1_link_div_clk_src.clkr,
2910*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_link_intf_clk.clkr,
2911*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp0_cc_mdss_dptx1_pixel0_clk.clkr,
2912*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel0_clk_src.clkr,
2913*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp0_cc_mdss_dptx1_pixel1_clk.clkr,
2914*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel1_clk_src.clkr,
2915*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
2916*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp0_cc_mdss_dptx2_aux_clk.clkr,
2917*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp0_cc_mdss_dptx2_aux_clk_src.clkr,
2918*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp0_cc_mdss_dptx2_link_clk.clkr,
2919*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp0_cc_mdss_dptx2_link_clk_src.clkr,
2920*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx2_link_div_clk_src.clkr,
2921*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp0_cc_mdss_dptx2_link_intf_clk.clkr,
2922*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp0_cc_mdss_dptx2_pixel0_clk.clkr,
2923*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel0_clk_src.clkr,
2924*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp0_cc_mdss_dptx2_pixel1_clk.clkr,
2925*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel1_clk_src.clkr,
2926*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp0_cc_mdss_dptx3_aux_clk.clkr,
2927*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp0_cc_mdss_dptx3_aux_clk_src.clkr,
2928*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp0_cc_mdss_dptx3_link_clk.clkr,
2929*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp0_cc_mdss_dptx3_link_clk_src.clkr,
2930*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx3_link_div_clk_src.clkr,
2931*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp0_cc_mdss_dptx3_link_intf_clk.clkr,
2932*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp0_cc_mdss_dptx3_pixel0_clk.clkr,
2933*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx3_pixel0_clk_src.clkr,
2934*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK] = &disp0_cc_mdss_esc0_clk.clkr,
2935*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp0_cc_mdss_esc0_clk_src.clkr,
2936*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK] = &disp0_cc_mdss_esc1_clk.clkr,
2937*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp0_cc_mdss_esc1_clk_src.clkr,
2938*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP1_CLK] = &disp0_cc_mdss_mdp1_clk.clkr,
2939*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK] = &disp0_cc_mdss_mdp_clk.clkr,
2940*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp0_cc_mdss_mdp_clk_src.clkr,
2941*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp0_cc_mdss_mdp_lut1_clk.clkr,
2942*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp0_cc_mdss_mdp_lut_clk.clkr,
2943*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp0_cc_mdss_non_gdsc_ahb_clk.clkr,
2944*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK] = &disp0_cc_mdss_pclk0_clk.clkr,
2945*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp0_cc_mdss_pclk0_clk_src.clkr,
2946*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK] = &disp0_cc_mdss_pclk1_clk.clkr,
2947*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp0_cc_mdss_pclk1_clk_src.clkr,
2948*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT1_CLK] = &disp0_cc_mdss_rot1_clk.clkr,
2949*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK] = &disp0_cc_mdss_rot_clk.clkr,
2950*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK_SRC] = &disp0_cc_mdss_rot_clk_src.clkr,
2951*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_AHB_CLK] = &disp0_cc_mdss_rscc_ahb_clk.clkr,
2952*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp0_cc_mdss_rscc_vsync_clk.clkr,
2953*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp0_cc_mdss_vsync1_clk.clkr,
2954*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK] = &disp0_cc_mdss_vsync_clk.clkr,
2955*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp0_cc_mdss_vsync_clk_src.clkr,
2956*4a66e76fSBjorn Andersson 	[DISP_CC_PLL0] = &disp0_cc_pll0.clkr,
2957*4a66e76fSBjorn Andersson 	[DISP_CC_PLL1] = &disp0_cc_pll1.clkr,
2958*4a66e76fSBjorn Andersson 	[DISP_CC_PLL1_OUT_EVEN] = &disp0_cc_pll1_out_even.clkr,
2959*4a66e76fSBjorn Andersson 	[DISP_CC_PLL2] = &disp0_cc_pll2.clkr,
2960*4a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK] = &disp0_cc_sleep_clk.clkr,
2961*4a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK_SRC] = &disp0_cc_sleep_clk_src.clkr,
2962*4a66e76fSBjorn Andersson };
2963*4a66e76fSBjorn Andersson 
2964*4a66e76fSBjorn Andersson static struct clk_regmap *disp1_cc_sc8280xp_clocks[] = {
2965*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB1_CLK] = &disp1_cc_mdss_ahb1_clk.clkr,
2966*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK] = &disp1_cc_mdss_ahb_clk.clkr,
2967*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp1_cc_mdss_ahb_clk_src.clkr,
2968*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK] = &disp1_cc_mdss_byte0_clk.clkr,
2969*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp1_cc_mdss_byte0_clk_src.clkr,
2970*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp1_cc_mdss_byte0_div_clk_src.clkr,
2971*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp1_cc_mdss_byte0_intf_clk.clkr,
2972*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK] = &disp1_cc_mdss_byte1_clk.clkr,
2973*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp1_cc_mdss_byte1_clk_src.clkr,
2974*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp1_cc_mdss_byte1_div_clk_src.clkr,
2975*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp1_cc_mdss_byte1_intf_clk.clkr,
2976*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp1_cc_mdss_dptx0_aux_clk.clkr,
2977*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp1_cc_mdss_dptx0_aux_clk_src.clkr,
2978*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp1_cc_mdss_dptx0_link_clk.clkr,
2979*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp1_cc_mdss_dptx0_link_clk_src.clkr,
2980*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx0_link_div_clk_src.clkr,
2981*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_link_intf_clk.clkr,
2982*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp1_cc_mdss_dptx0_pixel0_clk.clkr,
2983*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel0_clk_src.clkr,
2984*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp1_cc_mdss_dptx0_pixel1_clk.clkr,
2985*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel1_clk_src.clkr,
2986*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
2987*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp1_cc_mdss_dptx1_aux_clk.clkr,
2988*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp1_cc_mdss_dptx1_aux_clk_src.clkr,
2989*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp1_cc_mdss_dptx1_link_clk.clkr,
2990*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp1_cc_mdss_dptx1_link_clk_src.clkr,
2991*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx1_link_div_clk_src.clkr,
2992*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_link_intf_clk.clkr,
2993*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp1_cc_mdss_dptx1_pixel0_clk.clkr,
2994*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel0_clk_src.clkr,
2995*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp1_cc_mdss_dptx1_pixel1_clk.clkr,
2996*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel1_clk_src.clkr,
2997*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
2998*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp1_cc_mdss_dptx2_aux_clk.clkr,
2999*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp1_cc_mdss_dptx2_aux_clk_src.clkr,
3000*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp1_cc_mdss_dptx2_link_clk.clkr,
3001*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp1_cc_mdss_dptx2_link_clk_src.clkr,
3002*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx2_link_div_clk_src.clkr,
3003*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp1_cc_mdss_dptx2_link_intf_clk.clkr,
3004*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp1_cc_mdss_dptx2_pixel0_clk.clkr,
3005*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel0_clk_src.clkr,
3006*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp1_cc_mdss_dptx2_pixel1_clk.clkr,
3007*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel1_clk_src.clkr,
3008*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp1_cc_mdss_dptx3_aux_clk.clkr,
3009*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp1_cc_mdss_dptx3_aux_clk_src.clkr,
3010*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp1_cc_mdss_dptx3_link_clk.clkr,
3011*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp1_cc_mdss_dptx3_link_clk_src.clkr,
3012*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx3_link_div_clk_src.clkr,
3013*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp1_cc_mdss_dptx3_link_intf_clk.clkr,
3014*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp1_cc_mdss_dptx3_pixel0_clk.clkr,
3015*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx3_pixel0_clk_src.clkr,
3016*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK] = &disp1_cc_mdss_esc0_clk.clkr,
3017*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp1_cc_mdss_esc0_clk_src.clkr,
3018*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK] = &disp1_cc_mdss_esc1_clk.clkr,
3019*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp1_cc_mdss_esc1_clk_src.clkr,
3020*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP1_CLK] = &disp1_cc_mdss_mdp1_clk.clkr,
3021*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK] = &disp1_cc_mdss_mdp_clk.clkr,
3022*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp1_cc_mdss_mdp_clk_src.clkr,
3023*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp1_cc_mdss_mdp_lut1_clk.clkr,
3024*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp1_cc_mdss_mdp_lut_clk.clkr,
3025*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp1_cc_mdss_non_gdsc_ahb_clk.clkr,
3026*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK] = &disp1_cc_mdss_pclk0_clk.clkr,
3027*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp1_cc_mdss_pclk0_clk_src.clkr,
3028*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK] = &disp1_cc_mdss_pclk1_clk.clkr,
3029*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp1_cc_mdss_pclk1_clk_src.clkr,
3030*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT1_CLK] = &disp1_cc_mdss_rot1_clk.clkr,
3031*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK] = &disp1_cc_mdss_rot_clk.clkr,
3032*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK_SRC] = &disp1_cc_mdss_rot_clk_src.clkr,
3033*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_AHB_CLK] = &disp1_cc_mdss_rscc_ahb_clk.clkr,
3034*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp1_cc_mdss_rscc_vsync_clk.clkr,
3035*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp1_cc_mdss_vsync1_clk.clkr,
3036*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK] = &disp1_cc_mdss_vsync_clk.clkr,
3037*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp1_cc_mdss_vsync_clk_src.clkr,
3038*4a66e76fSBjorn Andersson 	[DISP_CC_PLL0] = &disp1_cc_pll0.clkr,
3039*4a66e76fSBjorn Andersson 	[DISP_CC_PLL1] = &disp1_cc_pll1.clkr,
3040*4a66e76fSBjorn Andersson 	[DISP_CC_PLL1_OUT_EVEN] = &disp1_cc_pll1_out_even.clkr,
3041*4a66e76fSBjorn Andersson 	[DISP_CC_PLL2] = &disp1_cc_pll2.clkr,
3042*4a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK] = &disp1_cc_sleep_clk.clkr,
3043*4a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK_SRC] = &disp1_cc_sleep_clk_src.clkr,
3044*4a66e76fSBjorn Andersson };
3045*4a66e76fSBjorn Andersson 
3046*4a66e76fSBjorn Andersson static const struct qcom_reset_map disp_cc_sc8280xp_resets[] = {
3047*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_CORE_BCR] = { 0x2000 },
3048*4a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_BCR] = { 0x4000 },
3049*4a66e76fSBjorn Andersson };
3050*4a66e76fSBjorn Andersson 
3051*4a66e76fSBjorn Andersson static struct gdsc disp0_mdss_gdsc = {
3052*4a66e76fSBjorn Andersson 	.gdscr = 0x3000,
3053*4a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
3054*4a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
3055*4a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
3056*4a66e76fSBjorn Andersson 	.pd = {
3057*4a66e76fSBjorn Andersson 		.name = "disp0_mdss_gdsc",
3058*4a66e76fSBjorn Andersson 	},
3059*4a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3060*4a66e76fSBjorn Andersson 	.flags = HW_CTRL,
3061*4a66e76fSBjorn Andersson };
3062*4a66e76fSBjorn Andersson 
3063*4a66e76fSBjorn Andersson static struct gdsc disp1_mdss_gdsc = {
3064*4a66e76fSBjorn Andersson 	.gdscr = 0x3000,
3065*4a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
3066*4a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
3067*4a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
3068*4a66e76fSBjorn Andersson 	.pd = {
3069*4a66e76fSBjorn Andersson 		.name = "disp1_mdss_gdsc",
3070*4a66e76fSBjorn Andersson 	},
3071*4a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3072*4a66e76fSBjorn Andersson 	.flags = HW_CTRL,
3073*4a66e76fSBjorn Andersson };
3074*4a66e76fSBjorn Andersson 
3075*4a66e76fSBjorn Andersson static struct gdsc disp0_mdss_int2_gdsc = {
3076*4a66e76fSBjorn Andersson 	.gdscr = 0xa000,
3077*4a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
3078*4a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
3079*4a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
3080*4a66e76fSBjorn Andersson 	.pd = {
3081*4a66e76fSBjorn Andersson 		.name = "disp0_mdss_int2_gdsc",
3082*4a66e76fSBjorn Andersson 	},
3083*4a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3084*4a66e76fSBjorn Andersson 	.flags = HW_CTRL,
3085*4a66e76fSBjorn Andersson };
3086*4a66e76fSBjorn Andersson 
3087*4a66e76fSBjorn Andersson static struct gdsc disp1_mdss_int2_gdsc = {
3088*4a66e76fSBjorn Andersson 	.gdscr = 0xa000,
3089*4a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
3090*4a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
3091*4a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
3092*4a66e76fSBjorn Andersson 	.pd = {
3093*4a66e76fSBjorn Andersson 		.name = "disp1_mdss_int2_gdsc",
3094*4a66e76fSBjorn Andersson 	},
3095*4a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3096*4a66e76fSBjorn Andersson 	.flags = HW_CTRL,
3097*4a66e76fSBjorn Andersson };
3098*4a66e76fSBjorn Andersson 
3099*4a66e76fSBjorn Andersson static struct gdsc *disp0_cc_sc8280xp_gdscs[] = {
3100*4a66e76fSBjorn Andersson 	[MDSS_GDSC] = &disp0_mdss_gdsc,
3101*4a66e76fSBjorn Andersson 	[MDSS_INT2_GDSC] = &disp0_mdss_int2_gdsc,
3102*4a66e76fSBjorn Andersson };
3103*4a66e76fSBjorn Andersson 
3104*4a66e76fSBjorn Andersson static struct gdsc *disp1_cc_sc8280xp_gdscs[] = {
3105*4a66e76fSBjorn Andersson 	[MDSS_GDSC] = &disp1_mdss_gdsc,
3106*4a66e76fSBjorn Andersson 	[MDSS_INT2_GDSC] = &disp1_mdss_int2_gdsc,
3107*4a66e76fSBjorn Andersson };
3108*4a66e76fSBjorn Andersson 
3109*4a66e76fSBjorn Andersson static const struct regmap_config disp_cc_sc8280xp_regmap_config = {
3110*4a66e76fSBjorn Andersson 	.reg_bits = 32,
3111*4a66e76fSBjorn Andersson 	.reg_stride = 4,
3112*4a66e76fSBjorn Andersson 	.val_bits = 32,
3113*4a66e76fSBjorn Andersson 	.max_register = 0x10000,
3114*4a66e76fSBjorn Andersson 	.fast_io = true,
3115*4a66e76fSBjorn Andersson };
3116*4a66e76fSBjorn Andersson 
3117*4a66e76fSBjorn Andersson static struct qcom_cc_desc disp0_cc_sc8280xp_desc = {
3118*4a66e76fSBjorn Andersson 	.config = &disp_cc_sc8280xp_regmap_config,
3119*4a66e76fSBjorn Andersson 	.clks = disp0_cc_sc8280xp_clocks,
3120*4a66e76fSBjorn Andersson 	.num_clks = ARRAY_SIZE(disp0_cc_sc8280xp_clocks),
3121*4a66e76fSBjorn Andersson 	.resets = disp_cc_sc8280xp_resets,
3122*4a66e76fSBjorn Andersson 	.num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets),
3123*4a66e76fSBjorn Andersson 	.gdscs = disp0_cc_sc8280xp_gdscs,
3124*4a66e76fSBjorn Andersson 	.num_gdscs = ARRAY_SIZE(disp0_cc_sc8280xp_gdscs),
3125*4a66e76fSBjorn Andersson };
3126*4a66e76fSBjorn Andersson 
3127*4a66e76fSBjorn Andersson static struct qcom_cc_desc disp1_cc_sc8280xp_desc = {
3128*4a66e76fSBjorn Andersson 	.config = &disp_cc_sc8280xp_regmap_config,
3129*4a66e76fSBjorn Andersson 	.clks = disp1_cc_sc8280xp_clocks,
3130*4a66e76fSBjorn Andersson 	.num_clks = ARRAY_SIZE(disp1_cc_sc8280xp_clocks),
3131*4a66e76fSBjorn Andersson 	.resets = disp_cc_sc8280xp_resets,
3132*4a66e76fSBjorn Andersson 	.num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets),
3133*4a66e76fSBjorn Andersson 	.gdscs = disp1_cc_sc8280xp_gdscs,
3134*4a66e76fSBjorn Andersson 	.num_gdscs = ARRAY_SIZE(disp1_cc_sc8280xp_gdscs),
3135*4a66e76fSBjorn Andersson };
3136*4a66e76fSBjorn Andersson 
3137*4a66e76fSBjorn Andersson #define clkr_to_alpha_clk_pll(_clkr) container_of(_clkr, struct clk_alpha_pll, clkr)
3138*4a66e76fSBjorn Andersson 
3139*4a66e76fSBjorn Andersson static int disp_cc_sc8280xp_probe(struct platform_device *pdev)
3140*4a66e76fSBjorn Andersson {
3141*4a66e76fSBjorn Andersson 	const struct qcom_cc_desc *desc;
3142*4a66e76fSBjorn Andersson 	struct regmap *regmap;
3143*4a66e76fSBjorn Andersson 	int ret;
3144*4a66e76fSBjorn Andersson 
3145*4a66e76fSBjorn Andersson 	desc = device_get_match_data(&pdev->dev);
3146*4a66e76fSBjorn Andersson 
3147*4a66e76fSBjorn Andersson 	ret = devm_pm_runtime_enable(&pdev->dev);
3148*4a66e76fSBjorn Andersson 	if (ret)
3149*4a66e76fSBjorn Andersson 		return ret;
3150*4a66e76fSBjorn Andersson 
3151*4a66e76fSBjorn Andersson 	ret = devm_pm_clk_create(&pdev->dev);
3152*4a66e76fSBjorn Andersson 	if (ret)
3153*4a66e76fSBjorn Andersson 		return ret;
3154*4a66e76fSBjorn Andersson 
3155*4a66e76fSBjorn Andersson 	ret = pm_clk_add(&pdev->dev, NULL);
3156*4a66e76fSBjorn Andersson 	if (ret < 0) {
3157*4a66e76fSBjorn Andersson 		dev_err(&pdev->dev, "failed to acquire ahb clock\n");
3158*4a66e76fSBjorn Andersson 		return ret;
3159*4a66e76fSBjorn Andersson 	}
3160*4a66e76fSBjorn Andersson 
3161*4a66e76fSBjorn Andersson 	ret = pm_runtime_resume_and_get(&pdev->dev);
3162*4a66e76fSBjorn Andersson 	if (ret)
3163*4a66e76fSBjorn Andersson 		return ret;
3164*4a66e76fSBjorn Andersson 
3165*4a66e76fSBjorn Andersson 	regmap = qcom_cc_map(pdev, desc);
3166*4a66e76fSBjorn Andersson 	if (IS_ERR(regmap)) {
3167*4a66e76fSBjorn Andersson 		ret = PTR_ERR(regmap);
3168*4a66e76fSBjorn Andersson 		goto out_pm_runtime_put;
3169*4a66e76fSBjorn Andersson 	}
3170*4a66e76fSBjorn Andersson 
3171*4a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL0]), regmap, &disp_cc_pll0_config);
3172*4a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL1]), regmap, &disp_cc_pll1_config);
3173*4a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL2]), regmap, &disp_cc_pll2_config);
3174*4a66e76fSBjorn Andersson 
3175*4a66e76fSBjorn Andersson 	ret = qcom_cc_really_probe(pdev, desc, regmap);
3176*4a66e76fSBjorn Andersson 	if (ret) {
3177*4a66e76fSBjorn Andersson 		dev_err(&pdev->dev, "Failed to register display clock controller\n");
3178*4a66e76fSBjorn Andersson 		goto out_pm_runtime_put;
3179*4a66e76fSBjorn Andersson 	}
3180*4a66e76fSBjorn Andersson 
3181*4a66e76fSBjorn Andersson 	/* DISP_CC_XO_CLK always-on */
3182*4a66e76fSBjorn Andersson 	regmap_update_bits(regmap, 0x605c, BIT(0), BIT(0));
3183*4a66e76fSBjorn Andersson 
3184*4a66e76fSBjorn Andersson out_pm_runtime_put:
3185*4a66e76fSBjorn Andersson 	pm_runtime_put_sync(&pdev->dev);
3186*4a66e76fSBjorn Andersson 
3187*4a66e76fSBjorn Andersson 	return ret;
3188*4a66e76fSBjorn Andersson }
3189*4a66e76fSBjorn Andersson 
3190*4a66e76fSBjorn Andersson static const struct of_device_id disp_cc_sc8280xp_match_table[] = {
3191*4a66e76fSBjorn Andersson 	{ .compatible = "qcom,sc8280xp-dispcc0", .data = &disp0_cc_sc8280xp_desc },
3192*4a66e76fSBjorn Andersson 	{ .compatible = "qcom,sc8280xp-dispcc1", .data = &disp1_cc_sc8280xp_desc },
3193*4a66e76fSBjorn Andersson 	{ }
3194*4a66e76fSBjorn Andersson };
3195*4a66e76fSBjorn Andersson MODULE_DEVICE_TABLE(of, disp_cc_sc8280xp_match_table);
3196*4a66e76fSBjorn Andersson 
3197*4a66e76fSBjorn Andersson static struct platform_driver disp_cc_sc8280xp_driver = {
3198*4a66e76fSBjorn Andersson 	.probe = disp_cc_sc8280xp_probe,
3199*4a66e76fSBjorn Andersson 	.driver = {
3200*4a66e76fSBjorn Andersson 		.name = "disp_cc-sc8280xp",
3201*4a66e76fSBjorn Andersson 		.of_match_table = disp_cc_sc8280xp_match_table,
3202*4a66e76fSBjorn Andersson 	},
3203*4a66e76fSBjorn Andersson };
3204*4a66e76fSBjorn Andersson 
3205*4a66e76fSBjorn Andersson static int __init disp_cc_sc8280xp_init(void)
3206*4a66e76fSBjorn Andersson {
3207*4a66e76fSBjorn Andersson 	return platform_driver_register(&disp_cc_sc8280xp_driver);
3208*4a66e76fSBjorn Andersson }
3209*4a66e76fSBjorn Andersson subsys_initcall(disp_cc_sc8280xp_init);
3210*4a66e76fSBjorn Andersson 
3211*4a66e76fSBjorn Andersson static void __exit disp_cc_sc8280xp_exit(void)
3212*4a66e76fSBjorn Andersson {
3213*4a66e76fSBjorn Andersson 	platform_driver_unregister(&disp_cc_sc8280xp_driver);
3214*4a66e76fSBjorn Andersson }
3215*4a66e76fSBjorn Andersson module_exit(disp_cc_sc8280xp_exit);
3216*4a66e76fSBjorn Andersson 
3217*4a66e76fSBjorn Andersson MODULE_DESCRIPTION("Qualcomm SC8280XP dispcc driver");
3218*4a66e76fSBjorn Andersson MODULE_LICENSE("GPL");
3219