1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022, Linaro Ltd.
7 #include <linux/clk-provider.h>
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/property.h>
11 #include <linux/pm_clock.h>
12 #include <linux/pm_runtime.h>
13 #include <linux/regmap.h>
14 #include <linux/reset-controller.h>
16 #include <dt-bindings/clock/qcom,dispcc-sc8280xp.h>
18 #include "clk-alpha-pll.h"
19 #include "clk-branch.h"
21 #include "clk-regmap-divider.h"
26 /* Need to match the order of clocks in DT binding */
31 DT_DP0_PHY_PLL_LINK_CLK
,
32 DT_DP0_PHY_PLL_VCO_DIV_CLK
,
33 DT_DP1_PHY_PLL_LINK_CLK
,
34 DT_DP1_PHY_PLL_VCO_DIV_CLK
,
35 DT_DP2_PHY_PLL_LINK_CLK
,
36 DT_DP2_PHY_PLL_VCO_DIV_CLK
,
37 DT_DP3_PHY_PLL_LINK_CLK
,
38 DT_DP3_PHY_PLL_VCO_DIV_CLK
,
39 DT_DSI0_PHY_PLL_OUT_BYTECLK
,
40 DT_DSI0_PHY_PLL_OUT_DSICLK
,
41 DT_DSI1_PHY_PLL_OUT_BYTECLK
,
42 DT_DSI1_PHY_PLL_OUT_DSICLK
,
47 P_DP0_PHY_PLL_LINK_CLK
,
48 P_DP0_PHY_PLL_VCO_DIV_CLK
,
49 P_DP1_PHY_PLL_LINK_CLK
,
50 P_DP1_PHY_PLL_VCO_DIV_CLK
,
51 P_DP2_PHY_PLL_LINK_CLK
,
52 P_DP2_PHY_PLL_VCO_DIV_CLK
,
53 P_DP3_PHY_PLL_LINK_CLK
,
54 P_DP3_PHY_PLL_VCO_DIV_CLK
,
55 P_DSI0_PHY_PLL_OUT_BYTECLK
,
56 P_DSI0_PHY_PLL_OUT_DSICLK
,
57 P_DSI1_PHY_PLL_OUT_BYTECLK
,
58 P_DSI1_PHY_PLL_OUT_DSICLK
,
59 P_DISPn_CC_PLL0_OUT_MAIN
,
60 P_DISPn_CC_PLL1_OUT_EVEN
,
61 P_DISPn_CC_PLL1_OUT_MAIN
,
62 P_DISPn_CC_PLL2_OUT_MAIN
,
66 static const struct clk_parent_data parent_data_tcxo
= { .index
= DT_BI_TCXO
};
68 static const struct pll_vco lucid_5lpe_vco
[] = {
69 { 249600000, 1800000000, 0 },
72 static const struct alpha_pll_config disp_cc_pll0_config
= {
75 .config_ctl_val
= 0x20485699,
76 .config_ctl_hi_val
= 0x00002261,
77 .config_ctl_hi1_val
= 0x2a9a699c,
78 .test_ctl_val
= 0x00000000,
79 .test_ctl_hi_val
= 0x00000000,
80 .test_ctl_hi1_val
= 0x01800000,
81 .user_ctl_val
= 0x00000000,
82 .user_ctl_hi_val
= 0x00000805,
83 .user_ctl_hi1_val
= 0x00000000,
86 static struct clk_alpha_pll disp0_cc_pll0
= {
88 .vco_table
= lucid_5lpe_vco
,
89 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
90 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
92 .hw
.init
= &(const struct clk_init_data
) {
93 .name
= "disp0_cc_pll0",
94 .parent_data
= &parent_data_tcxo
,
96 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
101 static struct clk_alpha_pll disp1_cc_pll0
= {
103 .vco_table
= lucid_5lpe_vco
,
104 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
105 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
107 .hw
.init
= &(const struct clk_init_data
) {
108 .name
= "disp1_cc_pll0",
109 .parent_data
= &parent_data_tcxo
,
111 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
116 static const struct alpha_pll_config disp_cc_pll1_config
= {
119 .config_ctl_val
= 0x20485699,
120 .config_ctl_hi_val
= 0x00002261,
121 .config_ctl_hi1_val
= 0x2a9a699c,
122 .test_ctl_val
= 0x00000000,
123 .test_ctl_hi_val
= 0x00000000,
124 .test_ctl_hi1_val
= 0x01800000,
125 .user_ctl_val
= 0x00000100,
126 .user_ctl_hi_val
= 0x00000805,
127 .user_ctl_hi1_val
= 0x00000000,
130 static struct clk_alpha_pll disp0_cc_pll1
= {
132 .vco_table
= lucid_5lpe_vco
,
133 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
134 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
136 .hw
.init
= &(const struct clk_init_data
) {
137 .name
= "disp0_cc_pll1",
138 .parent_data
= &parent_data_tcxo
,
140 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
145 static struct clk_alpha_pll disp1_cc_pll1
= {
147 .vco_table
= lucid_5lpe_vco
,
148 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
149 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
151 .hw
.init
= &(const struct clk_init_data
) {
152 .name
= "disp1_cc_pll1",
153 .parent_data
= &parent_data_tcxo
,
155 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
160 static const struct clk_div_table post_div_table_disp_cc_pll1_out_even
[] = {
165 static struct clk_alpha_pll_postdiv disp0_cc_pll1_out_even
= {
168 .post_div_table
= post_div_table_disp_cc_pll1_out_even
,
169 .num_post_div
= ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even
),
171 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
172 .clkr
.hw
.init
= &(const struct clk_init_data
) {
173 .name
= "disp0_cc_pll1_out_even",
174 .parent_hws
= (const struct clk_hw
*[]){
175 &disp0_cc_pll1
.clkr
.hw
,
178 .ops
= &clk_alpha_pll_postdiv_lucid_5lpe_ops
,
182 static struct clk_alpha_pll_postdiv disp1_cc_pll1_out_even
= {
185 .post_div_table
= post_div_table_disp_cc_pll1_out_even
,
186 .num_post_div
= ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even
),
188 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
189 .clkr
.hw
.init
= &(const struct clk_init_data
) {
190 .name
= "disp1_cc_pll1_out_even",
191 .parent_hws
= (const struct clk_hw
*[]){
192 &disp1_cc_pll1
.clkr
.hw
,
195 .ops
= &clk_alpha_pll_postdiv_lucid_5lpe_ops
,
199 static const struct alpha_pll_config disp_cc_pll2_config
= {
202 .config_ctl_val
= 0x20485699,
203 .config_ctl_hi_val
= 0x00002261,
204 .config_ctl_hi1_val
= 0x2a9a699c,
205 .test_ctl_val
= 0x00000000,
206 .test_ctl_hi_val
= 0x00000000,
207 .test_ctl_hi1_val
= 0x01800000,
208 .user_ctl_val
= 0x00000000,
209 .user_ctl_hi_val
= 0x00000805,
210 .user_ctl_hi1_val
= 0x00000000,
213 static struct clk_alpha_pll disp0_cc_pll2
= {
215 .vco_table
= lucid_5lpe_vco
,
216 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
217 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
219 .hw
.init
= &(const struct clk_init_data
) {
220 .name
= "disp0_cc_pll2",
221 .parent_data
= &parent_data_tcxo
,
223 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
228 static struct clk_alpha_pll disp1_cc_pll2
= {
230 .vco_table
= lucid_5lpe_vco
,
231 .num_vco
= ARRAY_SIZE(lucid_5lpe_vco
),
232 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
234 .hw
.init
= &(const struct clk_init_data
) {
235 .name
= "disp1_cc_pll2",
236 .parent_data
= &parent_data_tcxo
,
238 .ops
= &clk_alpha_pll_lucid_5lpe_ops
,
243 static const struct parent_map disp_cc_parent_map_0
[] = {
245 { P_DP0_PHY_PLL_LINK_CLK
, 1 },
246 { P_DP1_PHY_PLL_LINK_CLK
, 2 },
247 { P_DP2_PHY_PLL_LINK_CLK
, 3 },
248 { P_DP3_PHY_PLL_LINK_CLK
, 4 },
249 { P_DISPn_CC_PLL2_OUT_MAIN
, 5 },
252 static const struct clk_parent_data disp0_cc_parent_data_0
[] = {
253 { .index
= DT_BI_TCXO
},
254 { .index
= DT_DP0_PHY_PLL_LINK_CLK
},
255 { .index
= DT_DP1_PHY_PLL_LINK_CLK
},
256 { .index
= DT_DP2_PHY_PLL_LINK_CLK
},
257 { .index
= DT_DP3_PHY_PLL_LINK_CLK
},
258 { .hw
= &disp0_cc_pll2
.clkr
.hw
},
261 static const struct clk_parent_data disp1_cc_parent_data_0
[] = {
262 { .index
= DT_BI_TCXO
},
263 { .index
= DT_DP0_PHY_PLL_LINK_CLK
},
264 { .index
= DT_DP1_PHY_PLL_LINK_CLK
},
265 { .index
= DT_DP2_PHY_PLL_LINK_CLK
},
266 { .index
= DT_DP3_PHY_PLL_LINK_CLK
},
267 { .hw
= &disp1_cc_pll2
.clkr
.hw
},
270 static const struct parent_map disp_cc_parent_map_1
[] = {
272 { P_DP0_PHY_PLL_LINK_CLK
, 1 },
273 { P_DP0_PHY_PLL_VCO_DIV_CLK
, 2 },
274 { P_DP3_PHY_PLL_VCO_DIV_CLK
, 3 },
275 { P_DP1_PHY_PLL_VCO_DIV_CLK
, 4 },
276 { P_DISPn_CC_PLL2_OUT_MAIN
, 5 },
277 { P_DP2_PHY_PLL_VCO_DIV_CLK
, 6 },
280 static const struct clk_parent_data disp0_cc_parent_data_1
[] = {
281 { .index
= DT_BI_TCXO
},
282 { .index
= DT_DP0_PHY_PLL_LINK_CLK
},
283 { .index
= DT_DP0_PHY_PLL_VCO_DIV_CLK
},
284 { .index
= DT_DP3_PHY_PLL_VCO_DIV_CLK
},
285 { .index
= DT_DP1_PHY_PLL_VCO_DIV_CLK
},
286 { .hw
= &disp0_cc_pll2
.clkr
.hw
},
287 { .index
= DT_DP2_PHY_PLL_VCO_DIV_CLK
},
290 static const struct clk_parent_data disp1_cc_parent_data_1
[] = {
291 { .index
= DT_BI_TCXO
},
292 { .index
= DT_DP0_PHY_PLL_LINK_CLK
},
293 { .index
= DT_DP0_PHY_PLL_VCO_DIV_CLK
},
294 { .index
= DT_DP3_PHY_PLL_VCO_DIV_CLK
},
295 { .index
= DT_DP1_PHY_PLL_VCO_DIV_CLK
},
296 { .hw
= &disp1_cc_pll2
.clkr
.hw
},
297 { .index
= DT_DP2_PHY_PLL_VCO_DIV_CLK
},
300 static const struct parent_map disp_cc_parent_map_2
[] = {
304 static const struct clk_parent_data disp_cc_parent_data_2
[] = {
305 { .index
= DT_BI_TCXO
},
308 static const struct parent_map disp_cc_parent_map_3
[] = {
310 { P_DSI0_PHY_PLL_OUT_DSICLK
, 1 },
311 { P_DSI0_PHY_PLL_OUT_BYTECLK
, 2 },
312 { P_DSI1_PHY_PLL_OUT_DSICLK
, 3 },
313 { P_DSI1_PHY_PLL_OUT_BYTECLK
, 4 },
316 static const struct clk_parent_data disp_cc_parent_data_3
[] = {
317 { .index
= DT_BI_TCXO
},
318 { .index
= DT_DSI0_PHY_PLL_OUT_DSICLK
},
319 { .index
= DT_DSI0_PHY_PLL_OUT_BYTECLK
},
320 { .index
= DT_DSI1_PHY_PLL_OUT_DSICLK
},
321 { .index
= DT_DSI1_PHY_PLL_OUT_BYTECLK
},
324 static const struct parent_map disp_cc_parent_map_4
[] = {
326 { P_DSI0_PHY_PLL_OUT_BYTECLK
, 2 },
327 { P_DSI1_PHY_PLL_OUT_BYTECLK
, 4 },
330 static const struct clk_parent_data disp_cc_parent_data_4
[] = {
331 { .index
= DT_BI_TCXO
},
332 { .index
= DT_DSI0_PHY_PLL_OUT_BYTECLK
},
333 { .index
= DT_DSI1_PHY_PLL_OUT_BYTECLK
},
336 static const struct parent_map disp_cc_parent_map_5
[] = {
338 { P_DISPn_CC_PLL0_OUT_MAIN
, 1 },
339 { P_DISPn_CC_PLL1_OUT_MAIN
, 4 },
340 { P_DISPn_CC_PLL2_OUT_MAIN
, 5 },
341 { P_DISPn_CC_PLL1_OUT_EVEN
, 6 },
344 static const struct clk_parent_data disp0_cc_parent_data_5
[] = {
345 { .index
= DT_BI_TCXO
},
346 { .hw
= &disp0_cc_pll0
.clkr
.hw
},
347 { .hw
= &disp0_cc_pll1
.clkr
.hw
},
348 { .hw
= &disp0_cc_pll2
.clkr
.hw
},
349 { .hw
= &disp0_cc_pll1_out_even
.clkr
.hw
},
352 static const struct clk_parent_data disp1_cc_parent_data_5
[] = {
353 { .index
= DT_BI_TCXO
},
354 { .hw
= &disp1_cc_pll0
.clkr
.hw
},
355 { .hw
= &disp1_cc_pll1
.clkr
.hw
},
356 { .hw
= &disp1_cc_pll2
.clkr
.hw
},
357 { .hw
= &disp1_cc_pll1_out_even
.clkr
.hw
},
360 static const struct parent_map disp_cc_parent_map_6
[] = {
362 { P_DISPn_CC_PLL1_OUT_MAIN
, 4 },
363 { P_DISPn_CC_PLL1_OUT_EVEN
, 6 },
366 static const struct clk_parent_data disp0_cc_parent_data_6
[] = {
367 { .index
= DT_BI_TCXO
},
368 { .hw
= &disp0_cc_pll1
.clkr
.hw
},
369 { .hw
= &disp0_cc_pll1_out_even
.clkr
.hw
},
372 static const struct clk_parent_data disp1_cc_parent_data_6
[] = {
373 { .index
= DT_BI_TCXO
},
374 { .hw
= &disp1_cc_pll1
.clkr
.hw
},
375 { .hw
= &disp1_cc_pll1_out_even
.clkr
.hw
},
378 static const struct parent_map disp_cc_parent_map_7
[] = {
382 static const struct clk_parent_data disp_cc_parent_data_7
[] = {
383 { .index
= DT_SLEEP_CLK
},
386 static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src
[] = {
387 F(19200000, P_BI_TCXO
, 1, 0, 0),
388 F(37500000, P_DISPn_CC_PLL1_OUT_EVEN
, 8, 0, 0),
389 F(75000000, P_DISPn_CC_PLL1_OUT_MAIN
, 8, 0, 0),
393 static struct clk_rcg2 disp0_cc_mdss_ahb_clk_src
= {
397 .parent_map
= disp_cc_parent_map_6
,
398 .freq_tbl
= ftbl_disp_cc_mdss_ahb_clk_src
,
399 .clkr
.hw
.init
= &(const struct clk_init_data
) {
400 .name
= "disp0_cc_mdss_ahb_clk_src",
401 .parent_data
= disp0_cc_parent_data_6
,
402 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_6
),
403 .ops
= &clk_rcg2_shared_ops
,
407 static struct clk_rcg2 disp1_cc_mdss_ahb_clk_src
= {
411 .parent_map
= disp_cc_parent_map_6
,
412 .freq_tbl
= ftbl_disp_cc_mdss_ahb_clk_src
,
413 .clkr
.hw
.init
= &(const struct clk_init_data
) {
414 .name
= "disp1_cc_mdss_ahb_clk_src",
415 .parent_data
= disp1_cc_parent_data_6
,
416 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_6
),
417 .ops
= &clk_rcg2_shared_ops
,
421 static const struct freq_tbl ftbl_disp_cc_mdss_byte0_clk_src
[] = {
422 F(19200000, P_BI_TCXO
, 1, 0, 0),
426 static struct clk_rcg2 disp0_cc_mdss_byte0_clk_src
= {
430 .parent_map
= disp_cc_parent_map_3
,
431 .clkr
.hw
.init
= &(const struct clk_init_data
) {
432 .name
= "disp0_cc_mdss_byte0_clk_src",
433 .parent_data
= disp_cc_parent_data_3
,
434 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
435 .flags
= CLK_SET_RATE_PARENT
,
436 .ops
= &clk_byte2_ops
,
440 static struct clk_rcg2 disp1_cc_mdss_byte0_clk_src
= {
444 .parent_map
= disp_cc_parent_map_3
,
445 .clkr
.hw
.init
= &(const struct clk_init_data
) {
446 .name
= "disp1_cc_mdss_byte0_clk_src",
447 .parent_data
= disp_cc_parent_data_3
,
448 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
449 .flags
= CLK_SET_RATE_PARENT
,
450 .ops
= &clk_byte2_ops
,
454 static struct clk_rcg2 disp0_cc_mdss_byte1_clk_src
= {
458 .parent_map
= disp_cc_parent_map_3
,
459 .clkr
.hw
.init
= &(const struct clk_init_data
) {
460 .name
= "disp0_cc_mdss_byte1_clk_src",
461 .parent_data
= disp_cc_parent_data_3
,
462 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
463 .flags
= CLK_SET_RATE_PARENT
,
464 .ops
= &clk_byte2_ops
,
468 static struct clk_rcg2 disp1_cc_mdss_byte1_clk_src
= {
472 .parent_map
= disp_cc_parent_map_3
,
473 .clkr
.hw
.init
= &(const struct clk_init_data
) {
474 .name
= "disp1_cc_mdss_byte1_clk_src",
475 .parent_data
= disp_cc_parent_data_3
,
476 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
477 .flags
= CLK_SET_RATE_PARENT
,
478 .ops
= &clk_byte2_ops
,
482 static struct clk_rcg2 disp0_cc_mdss_dptx0_aux_clk_src
= {
486 .parent_map
= disp_cc_parent_map_2
,
487 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
488 .clkr
.hw
.init
= &(const struct clk_init_data
) {
489 .name
= "disp0_cc_mdss_dptx0_aux_clk_src",
490 .parent_data
= disp_cc_parent_data_2
,
491 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
492 .ops
= &clk_rcg2_ops
,
496 static struct clk_rcg2 disp1_cc_mdss_dptx0_aux_clk_src
= {
500 .parent_map
= disp_cc_parent_map_2
,
501 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
502 .clkr
.hw
.init
= &(const struct clk_init_data
) {
503 .name
= "disp1_cc_mdss_dptx0_aux_clk_src",
504 .parent_data
= disp_cc_parent_data_2
,
505 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
506 .ops
= &clk_rcg2_ops
,
510 static struct clk_rcg2 disp0_cc_mdss_dptx0_link_clk_src
= {
514 .parent_map
= disp_cc_parent_map_0
,
515 .clkr
.hw
.init
= &(const struct clk_init_data
) {
516 .name
= "disp0_cc_mdss_dptx0_link_clk_src",
517 .parent_data
= disp0_cc_parent_data_0
,
518 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_0
),
519 .flags
= CLK_SET_RATE_PARENT
,
520 .ops
= &clk_byte2_ops
,
524 static struct clk_rcg2 disp1_cc_mdss_dptx0_link_clk_src
= {
528 .parent_map
= disp_cc_parent_map_0
,
529 .clkr
.hw
.init
= &(const struct clk_init_data
) {
530 .name
= "disp1_cc_mdss_dptx0_link_clk_src",
531 .parent_data
= disp1_cc_parent_data_0
,
532 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_0
),
533 .flags
= CLK_SET_RATE_PARENT
,
534 .ops
= &clk_byte2_ops
,
538 static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel0_clk_src
= {
542 .parent_map
= disp_cc_parent_map_1
,
543 .clkr
.hw
.init
= &(const struct clk_init_data
) {
544 .name
= "disp0_cc_mdss_dptx0_pixel0_clk_src",
545 .parent_data
= disp0_cc_parent_data_1
,
546 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
547 .flags
= CLK_SET_RATE_PARENT
,
552 static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel0_clk_src
= {
556 .parent_map
= disp_cc_parent_map_1
,
557 .clkr
.hw
.init
= &(const struct clk_init_data
) {
558 .name
= "disp1_cc_mdss_dptx0_pixel0_clk_src",
559 .parent_data
= disp1_cc_parent_data_1
,
560 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
561 .flags
= CLK_SET_RATE_PARENT
,
566 static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel1_clk_src
= {
570 .parent_map
= disp_cc_parent_map_1
,
571 .clkr
.hw
.init
= &(const struct clk_init_data
) {
572 .name
= "disp0_cc_mdss_dptx0_pixel1_clk_src",
573 .parent_data
= disp0_cc_parent_data_1
,
574 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
575 .flags
= CLK_SET_RATE_PARENT
,
580 static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel1_clk_src
= {
584 .parent_map
= disp_cc_parent_map_1
,
585 .clkr
.hw
.init
= &(const struct clk_init_data
) {
586 .name
= "disp1_cc_mdss_dptx0_pixel1_clk_src",
587 .parent_data
= disp1_cc_parent_data_1
,
588 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
589 .flags
= CLK_SET_RATE_PARENT
,
594 static struct clk_rcg2 disp0_cc_mdss_dptx1_aux_clk_src
= {
598 .parent_map
= disp_cc_parent_map_2
,
599 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
600 .clkr
.hw
.init
= &(const struct clk_init_data
) {
601 .name
= "disp0_cc_mdss_dptx1_aux_clk_src",
602 .parent_data
= disp_cc_parent_data_2
,
603 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
604 .ops
= &clk_rcg2_ops
,
608 static struct clk_rcg2 disp1_cc_mdss_dptx1_aux_clk_src
= {
612 .parent_map
= disp_cc_parent_map_2
,
613 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
614 .clkr
.hw
.init
= &(const struct clk_init_data
) {
615 .name
= "disp1_cc_mdss_dptx1_aux_clk_src",
616 .parent_data
= disp_cc_parent_data_2
,
617 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
618 .ops
= &clk_rcg2_ops
,
622 static struct clk_rcg2 disp0_cc_mdss_dptx1_link_clk_src
= {
626 .parent_map
= disp_cc_parent_map_0
,
627 .clkr
.hw
.init
= &(const struct clk_init_data
) {
628 .name
= "disp0_cc_mdss_dptx1_link_clk_src",
629 .parent_data
= disp0_cc_parent_data_0
,
630 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_0
),
631 .flags
= CLK_SET_RATE_PARENT
,
632 .ops
= &clk_byte2_ops
,
636 static struct clk_rcg2 disp1_cc_mdss_dptx1_link_clk_src
= {
640 .parent_map
= disp_cc_parent_map_0
,
641 .clkr
.hw
.init
= &(const struct clk_init_data
) {
642 .name
= "disp1_cc_mdss_dptx1_link_clk_src",
643 .parent_data
= disp1_cc_parent_data_0
,
644 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_0
),
645 .flags
= CLK_SET_RATE_PARENT
,
646 .ops
= &clk_byte2_ops
,
650 static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel0_clk_src
= {
654 .parent_map
= disp_cc_parent_map_1
,
655 .clkr
.hw
.init
= &(const struct clk_init_data
) {
656 .name
= "disp0_cc_mdss_dptx1_pixel0_clk_src",
657 .parent_data
= disp0_cc_parent_data_1
,
658 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
659 .flags
= CLK_SET_RATE_PARENT
,
664 static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel0_clk_src
= {
668 .parent_map
= disp_cc_parent_map_1
,
669 .clkr
.hw
.init
= &(const struct clk_init_data
) {
670 .name
= "disp1_cc_mdss_dptx1_pixel0_clk_src",
671 .parent_data
= disp1_cc_parent_data_1
,
672 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
673 .flags
= CLK_SET_RATE_PARENT
,
678 static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel1_clk_src
= {
682 .parent_map
= disp_cc_parent_map_1
,
683 .clkr
.hw
.init
= &(const struct clk_init_data
) {
684 .name
= "disp0_cc_mdss_dptx1_pixel1_clk_src",
685 .parent_data
= disp0_cc_parent_data_1
,
686 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
687 .flags
= CLK_SET_RATE_PARENT
,
692 static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel1_clk_src
= {
696 .parent_map
= disp_cc_parent_map_1
,
697 .clkr
.hw
.init
= &(const struct clk_init_data
) {
698 .name
= "disp1_cc_mdss_dptx1_pixel1_clk_src",
699 .parent_data
= disp1_cc_parent_data_1
,
700 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
701 .flags
= CLK_SET_RATE_PARENT
,
706 static struct clk_rcg2 disp0_cc_mdss_dptx2_aux_clk_src
= {
710 .parent_map
= disp_cc_parent_map_2
,
711 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
712 .clkr
.hw
.init
= &(const struct clk_init_data
) {
713 .name
= "disp0_cc_mdss_dptx2_aux_clk_src",
714 .parent_data
= disp_cc_parent_data_2
,
715 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
716 .ops
= &clk_rcg2_ops
,
720 static struct clk_rcg2 disp1_cc_mdss_dptx2_aux_clk_src
= {
724 .parent_map
= disp_cc_parent_map_2
,
725 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
726 .clkr
.hw
.init
= &(const struct clk_init_data
) {
727 .name
= "disp1_cc_mdss_dptx2_aux_clk_src",
728 .parent_data
= disp_cc_parent_data_2
,
729 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
730 .ops
= &clk_rcg2_ops
,
734 static struct clk_rcg2 disp0_cc_mdss_dptx2_link_clk_src
= {
738 .parent_map
= disp_cc_parent_map_0
,
739 .clkr
.hw
.init
= &(const struct clk_init_data
) {
740 .name
= "disp0_cc_mdss_dptx2_link_clk_src",
741 .parent_data
= disp0_cc_parent_data_0
,
742 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_0
),
743 .flags
= CLK_SET_RATE_PARENT
,
744 .ops
= &clk_byte2_ops
,
748 static struct clk_rcg2 disp1_cc_mdss_dptx2_link_clk_src
= {
752 .parent_map
= disp_cc_parent_map_0
,
753 .clkr
.hw
.init
= &(const struct clk_init_data
) {
754 .name
= "disp1_cc_mdss_dptx2_link_clk_src",
755 .parent_data
= disp1_cc_parent_data_0
,
756 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_0
),
757 .flags
= CLK_SET_RATE_PARENT
,
758 .ops
= &clk_byte2_ops
,
762 static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel0_clk_src
= {
766 .parent_map
= disp_cc_parent_map_1
,
767 .clkr
.hw
.init
= &(const struct clk_init_data
) {
768 .name
= "disp0_cc_mdss_dptx2_pixel0_clk_src",
769 .parent_data
= disp0_cc_parent_data_1
,
770 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
771 .flags
= CLK_SET_RATE_PARENT
,
776 static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel0_clk_src
= {
780 .parent_map
= disp_cc_parent_map_1
,
781 .clkr
.hw
.init
= &(const struct clk_init_data
) {
782 .name
= "disp1_cc_mdss_dptx2_pixel0_clk_src",
783 .parent_data
= disp1_cc_parent_data_1
,
784 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
785 .flags
= CLK_SET_RATE_PARENT
,
790 static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel1_clk_src
= {
794 .parent_map
= disp_cc_parent_map_1
,
795 .clkr
.hw
.init
= &(const struct clk_init_data
) {
796 .name
= "disp0_cc_mdss_dptx2_pixel1_clk_src",
797 .parent_data
= disp0_cc_parent_data_1
,
798 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
799 .flags
= CLK_SET_RATE_PARENT
,
804 static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel1_clk_src
= {
808 .parent_map
= disp_cc_parent_map_1
,
809 .clkr
.hw
.init
= &(const struct clk_init_data
) {
810 .name
= "disp1_cc_mdss_dptx2_pixel1_clk_src",
811 .parent_data
= disp1_cc_parent_data_1
,
812 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
813 .flags
= CLK_SET_RATE_PARENT
,
818 static struct clk_rcg2 disp0_cc_mdss_dptx3_aux_clk_src
= {
822 .parent_map
= disp_cc_parent_map_2
,
823 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
824 .clkr
.hw
.init
= &(const struct clk_init_data
) {
825 .name
= "disp0_cc_mdss_dptx3_aux_clk_src",
826 .parent_data
= disp_cc_parent_data_2
,
827 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
828 .ops
= &clk_rcg2_ops
,
832 static struct clk_rcg2 disp1_cc_mdss_dptx3_aux_clk_src
= {
836 .parent_map
= disp_cc_parent_map_2
,
837 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
838 .clkr
.hw
.init
= &(const struct clk_init_data
) {
839 .name
= "disp1_cc_mdss_dptx3_aux_clk_src",
840 .parent_data
= disp_cc_parent_data_2
,
841 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
842 .ops
= &clk_rcg2_ops
,
846 static struct clk_rcg2 disp0_cc_mdss_dptx3_link_clk_src
= {
850 .parent_map
= disp_cc_parent_map_0
,
851 .clkr
.hw
.init
= &(const struct clk_init_data
) {
852 .name
= "disp0_cc_mdss_dptx3_link_clk_src",
853 .parent_data
= disp0_cc_parent_data_0
,
854 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_0
),
855 .flags
= CLK_SET_RATE_PARENT
,
856 .ops
= &clk_byte2_ops
,
860 static struct clk_rcg2 disp1_cc_mdss_dptx3_link_clk_src
= {
864 .parent_map
= disp_cc_parent_map_0
,
865 .clkr
.hw
.init
= &(const struct clk_init_data
) {
866 .name
= "disp1_cc_mdss_dptx3_link_clk_src",
867 .parent_data
= disp1_cc_parent_data_0
,
868 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_0
),
869 .flags
= CLK_SET_RATE_PARENT
,
870 .ops
= &clk_byte2_ops
,
874 static struct clk_rcg2 disp0_cc_mdss_dptx3_pixel0_clk_src
= {
878 .parent_map
= disp_cc_parent_map_1
,
879 .clkr
.hw
.init
= &(const struct clk_init_data
) {
880 .name
= "disp0_cc_mdss_dptx3_pixel0_clk_src",
881 .parent_data
= disp0_cc_parent_data_1
,
882 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_1
),
883 .flags
= CLK_SET_RATE_PARENT
,
888 static struct clk_rcg2 disp1_cc_mdss_dptx3_pixel0_clk_src
= {
892 .parent_map
= disp_cc_parent_map_1
,
893 .clkr
.hw
.init
= &(const struct clk_init_data
) {
894 .name
= "disp1_cc_mdss_dptx3_pixel0_clk_src",
895 .parent_data
= disp1_cc_parent_data_1
,
896 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_1
),
897 .flags
= CLK_SET_RATE_PARENT
,
902 static struct clk_rcg2 disp0_cc_mdss_esc0_clk_src
= {
906 .parent_map
= disp_cc_parent_map_4
,
907 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
908 .clkr
.hw
.init
= &(const struct clk_init_data
) {
909 .name
= "disp0_cc_mdss_esc0_clk_src",
910 .parent_data
= disp_cc_parent_data_4
,
911 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_4
),
912 .ops
= &clk_rcg2_ops
,
916 static struct clk_rcg2 disp1_cc_mdss_esc0_clk_src
= {
920 .parent_map
= disp_cc_parent_map_4
,
921 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
922 .clkr
.hw
.init
= &(const struct clk_init_data
) {
923 .name
= "disp1_cc_mdss_esc0_clk_src",
924 .parent_data
= disp_cc_parent_data_4
,
925 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_4
),
926 .ops
= &clk_rcg2_ops
,
930 static struct clk_rcg2 disp0_cc_mdss_esc1_clk_src
= {
934 .parent_map
= disp_cc_parent_map_4
,
935 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
936 .clkr
.hw
.init
= &(const struct clk_init_data
) {
937 .name
= "disp0_cc_mdss_esc1_clk_src",
938 .parent_data
= disp_cc_parent_data_4
,
939 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_4
),
940 .ops
= &clk_rcg2_ops
,
944 static struct clk_rcg2 disp1_cc_mdss_esc1_clk_src
= {
948 .parent_map
= disp_cc_parent_map_4
,
949 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
950 .clkr
.hw
.init
= &(const struct clk_init_data
) {
951 .name
= "disp1_cc_mdss_esc1_clk_src",
952 .parent_data
= disp_cc_parent_data_4
,
953 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_4
),
954 .ops
= &clk_rcg2_ops
,
958 static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src
[] = {
959 F(19200000, P_BI_TCXO
, 1, 0, 0),
960 F(85714286, P_DISPn_CC_PLL1_OUT_MAIN
, 7, 0, 0),
961 F(100000000, P_DISPn_CC_PLL1_OUT_MAIN
, 6, 0, 0),
962 F(150000000, P_DISPn_CC_PLL1_OUT_MAIN
, 4, 0, 0),
963 F(200000000, P_DISPn_CC_PLL1_OUT_MAIN
, 3, 0, 0),
964 F(300000000, P_DISPn_CC_PLL1_OUT_MAIN
, 2, 0, 0),
965 F(375000000, P_DISPn_CC_PLL0_OUT_MAIN
, 4, 0, 0),
966 F(500000000, P_DISPn_CC_PLL0_OUT_MAIN
, 3, 0, 0),
967 F(600000000, P_DISPn_CC_PLL1_OUT_MAIN
, 1, 0, 0),
971 static struct clk_rcg2 disp0_cc_mdss_mdp_clk_src
= {
975 .parent_map
= disp_cc_parent_map_5
,
976 .freq_tbl
= ftbl_disp_cc_mdss_mdp_clk_src
,
977 .clkr
.hw
.init
= &(const struct clk_init_data
) {
978 .name
= "disp0_cc_mdss_mdp_clk_src",
979 .parent_data
= disp0_cc_parent_data_5
,
980 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_5
),
981 .ops
= &clk_rcg2_shared_ops
,
985 static struct clk_rcg2 disp1_cc_mdss_mdp_clk_src
= {
989 .parent_map
= disp_cc_parent_map_5
,
990 .freq_tbl
= ftbl_disp_cc_mdss_mdp_clk_src
,
991 .clkr
.hw
.init
= &(const struct clk_init_data
) {
992 .name
= "disp1_cc_mdss_mdp_clk_src",
993 .parent_data
= disp1_cc_parent_data_5
,
994 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_5
),
995 .ops
= &clk_rcg2_shared_ops
,
999 static struct clk_rcg2 disp0_cc_mdss_pclk0_clk_src
= {
1003 .parent_map
= disp_cc_parent_map_3
,
1004 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1005 .name
= "disp0_cc_mdss_pclk0_clk_src",
1006 .parent_data
= disp_cc_parent_data_3
,
1007 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
1008 .flags
= CLK_SET_RATE_PARENT
,
1009 .ops
= &clk_pixel_ops
,
1013 static struct clk_rcg2 disp1_cc_mdss_pclk0_clk_src
= {
1017 .parent_map
= disp_cc_parent_map_3
,
1018 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1019 .name
= "disp1_cc_mdss_pclk0_clk_src",
1020 .parent_data
= disp_cc_parent_data_3
,
1021 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
1022 .flags
= CLK_SET_RATE_PARENT
,
1023 .ops
= &clk_pixel_ops
,
1027 static struct clk_rcg2 disp0_cc_mdss_pclk1_clk_src
= {
1031 .parent_map
= disp_cc_parent_map_3
,
1032 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1033 .name
= "disp0_cc_mdss_pclk1_clk_src",
1034 .parent_data
= disp_cc_parent_data_3
,
1035 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
1036 .flags
= CLK_SET_RATE_PARENT
,
1037 .ops
= &clk_pixel_ops
,
1041 static struct clk_rcg2 disp1_cc_mdss_pclk1_clk_src
= {
1045 .parent_map
= disp_cc_parent_map_3
,
1046 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1047 .name
= "disp1_cc_mdss_pclk1_clk_src",
1048 .parent_data
= disp_cc_parent_data_3
,
1049 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_3
),
1050 .flags
= CLK_SET_RATE_PARENT
,
1051 .ops
= &clk_pixel_ops
,
1055 static const struct freq_tbl ftbl_disp_cc_mdss_rot_clk_src
[] = {
1056 F(19200000, P_BI_TCXO
, 1, 0, 0),
1057 F(200000000, P_DISPn_CC_PLL1_OUT_MAIN
, 3, 0, 0),
1058 F(300000000, P_DISPn_CC_PLL1_OUT_MAIN
, 2, 0, 0),
1059 F(375000000, P_DISPn_CC_PLL0_OUT_MAIN
, 4, 0, 0),
1060 F(500000000, P_DISPn_CC_PLL0_OUT_MAIN
, 3, 0, 0),
1061 F(600000000, P_DISPn_CC_PLL1_OUT_MAIN
, 1, 0, 0),
1065 static struct clk_rcg2 disp0_cc_mdss_rot_clk_src
= {
1069 .parent_map
= disp_cc_parent_map_5
,
1070 .freq_tbl
= ftbl_disp_cc_mdss_rot_clk_src
,
1071 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1072 .name
= "disp0_cc_mdss_rot_clk_src",
1073 .parent_data
= disp0_cc_parent_data_5
,
1074 .num_parents
= ARRAY_SIZE(disp0_cc_parent_data_5
),
1075 .ops
= &clk_rcg2_shared_ops
,
1079 static struct clk_rcg2 disp1_cc_mdss_rot_clk_src
= {
1083 .parent_map
= disp_cc_parent_map_5
,
1084 .freq_tbl
= ftbl_disp_cc_mdss_rot_clk_src
,
1085 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1086 .name
= "disp1_cc_mdss_rot_clk_src",
1087 .parent_data
= disp1_cc_parent_data_5
,
1088 .num_parents
= ARRAY_SIZE(disp1_cc_parent_data_5
),
1089 .ops
= &clk_rcg2_shared_ops
,
1093 static struct clk_rcg2 disp0_cc_mdss_vsync_clk_src
= {
1097 .parent_map
= disp_cc_parent_map_2
,
1098 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
1099 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1100 .name
= "disp0_cc_mdss_vsync_clk_src",
1101 .parent_data
= disp_cc_parent_data_2
,
1102 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
1103 .ops
= &clk_rcg2_ops
,
1107 static struct clk_rcg2 disp1_cc_mdss_vsync_clk_src
= {
1111 .parent_map
= disp_cc_parent_map_2
,
1112 .freq_tbl
= ftbl_disp_cc_mdss_byte0_clk_src
,
1113 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1114 .name
= "disp1_cc_mdss_vsync_clk_src",
1115 .parent_data
= disp_cc_parent_data_2
,
1116 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_2
),
1117 .ops
= &clk_rcg2_ops
,
1121 static const struct freq_tbl ftbl_disp_cc_sleep_clk_src
[] = {
1122 F(32000, P_SLEEP_CLK
, 1, 0, 0),
1126 static struct clk_rcg2 disp0_cc_sleep_clk_src
= {
1130 .parent_map
= disp_cc_parent_map_7
,
1131 .freq_tbl
= ftbl_disp_cc_sleep_clk_src
,
1132 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1133 .name
= "disp0_cc_sleep_clk_src",
1134 .parent_data
= disp_cc_parent_data_7
,
1135 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_7
),
1136 .ops
= &clk_rcg2_ops
,
1140 static struct clk_rcg2 disp1_cc_sleep_clk_src
= {
1144 .parent_map
= disp_cc_parent_map_7
,
1145 .freq_tbl
= ftbl_disp_cc_sleep_clk_src
,
1146 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1147 .name
= "disp1_cc_sleep_clk_src",
1148 .parent_data
= disp_cc_parent_data_7
,
1149 .num_parents
= ARRAY_SIZE(disp_cc_parent_data_7
),
1150 .ops
= &clk_rcg2_ops
,
1154 static struct clk_regmap_div disp0_cc_mdss_byte0_div_clk_src
= {
1158 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1159 .name
= "disp0_cc_mdss_byte0_div_clk_src",
1160 .parent_hws
= (const struct clk_hw
*[]){
1161 &disp0_cc_mdss_byte0_clk_src
.clkr
.hw
,
1164 .flags
= CLK_SET_RATE_PARENT
,
1165 .ops
= &clk_regmap_div_ops
,
1169 static struct clk_regmap_div disp1_cc_mdss_byte0_div_clk_src
= {
1173 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1174 .name
= "disp1_cc_mdss_byte0_div_clk_src",
1175 .parent_hws
= (const struct clk_hw
*[]){
1176 &disp1_cc_mdss_byte0_clk_src
.clkr
.hw
,
1179 .flags
= CLK_SET_RATE_PARENT
,
1180 .ops
= &clk_regmap_div_ops
,
1184 static struct clk_regmap_div disp0_cc_mdss_byte1_div_clk_src
= {
1188 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1189 .name
= "disp0_cc_mdss_byte1_div_clk_src",
1190 .parent_hws
= (const struct clk_hw
*[]){
1191 &disp0_cc_mdss_byte1_clk_src
.clkr
.hw
,
1194 .flags
= CLK_SET_RATE_PARENT
,
1195 .ops
= &clk_regmap_div_ops
,
1199 static struct clk_regmap_div disp1_cc_mdss_byte1_div_clk_src
= {
1203 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1204 .name
= "disp1_cc_mdss_byte1_div_clk_src",
1205 .parent_hws
= (const struct clk_hw
*[]){
1206 &disp1_cc_mdss_byte1_clk_src
.clkr
.hw
,
1209 .flags
= CLK_SET_RATE_PARENT
,
1210 .ops
= &clk_regmap_div_ops
,
1214 static struct clk_regmap_div disp0_cc_mdss_dptx0_link_div_clk_src
= {
1218 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1219 .name
= "disp0_cc_mdss_dptx0_link_div_clk_src",
1220 .parent_hws
= (const struct clk_hw
*[]){
1221 &disp0_cc_mdss_dptx0_link_clk_src
.clkr
.hw
,
1224 .flags
= CLK_SET_RATE_PARENT
,
1225 .ops
= &clk_regmap_div_ro_ops
,
1229 static struct clk_regmap_div disp1_cc_mdss_dptx0_link_div_clk_src
= {
1233 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1234 .name
= "disp1_cc_mdss_dptx0_link_div_clk_src",
1235 .parent_hws
= (const struct clk_hw
*[]){
1236 &disp1_cc_mdss_dptx0_link_clk_src
.clkr
.hw
,
1239 .flags
= CLK_SET_RATE_PARENT
,
1240 .ops
= &clk_regmap_div_ro_ops
,
1244 static struct clk_regmap_div disp0_cc_mdss_dptx1_link_div_clk_src
= {
1248 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1249 .name
= "disp0_cc_mdss_dptx1_link_div_clk_src",
1250 .parent_hws
= (const struct clk_hw
*[]){
1251 &disp0_cc_mdss_dptx1_link_clk_src
.clkr
.hw
,
1254 .flags
= CLK_SET_RATE_PARENT
,
1255 .ops
= &clk_regmap_div_ro_ops
,
1259 static struct clk_regmap_div disp1_cc_mdss_dptx1_link_div_clk_src
= {
1263 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1264 .name
= "disp1_cc_mdss_dptx1_link_div_clk_src",
1265 .parent_hws
= (const struct clk_hw
*[]){
1266 &disp1_cc_mdss_dptx1_link_clk_src
.clkr
.hw
,
1269 .flags
= CLK_SET_RATE_PARENT
,
1270 .ops
= &clk_regmap_div_ro_ops
,
1274 static struct clk_regmap_div disp0_cc_mdss_dptx2_link_div_clk_src
= {
1278 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1279 .name
= "disp0_cc_mdss_dptx2_link_div_clk_src",
1280 .parent_hws
= (const struct clk_hw
*[]){
1281 &disp0_cc_mdss_dptx2_link_clk_src
.clkr
.hw
,
1284 .flags
= CLK_SET_RATE_PARENT
,
1285 .ops
= &clk_regmap_div_ro_ops
,
1289 static struct clk_regmap_div disp1_cc_mdss_dptx2_link_div_clk_src
= {
1293 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1294 .name
= "disp1_cc_mdss_dptx2_link_div_clk_src",
1295 .parent_hws
= (const struct clk_hw
*[]){
1296 &disp1_cc_mdss_dptx2_link_clk_src
.clkr
.hw
,
1299 .flags
= CLK_SET_RATE_PARENT
,
1300 .ops
= &clk_regmap_div_ro_ops
,
1304 static struct clk_regmap_div disp0_cc_mdss_dptx3_link_div_clk_src
= {
1308 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1309 .name
= "disp0_cc_mdss_dptx3_link_div_clk_src",
1310 .parent_hws
= (const struct clk_hw
*[]){
1311 &disp0_cc_mdss_dptx3_link_clk_src
.clkr
.hw
,
1314 .flags
= CLK_SET_RATE_PARENT
,
1315 .ops
= &clk_regmap_div_ro_ops
,
1319 static struct clk_regmap_div disp1_cc_mdss_dptx3_link_div_clk_src
= {
1323 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1324 .name
= "disp1_cc_mdss_dptx3_link_div_clk_src",
1325 .parent_hws
= (const struct clk_hw
*[]){
1326 &disp1_cc_mdss_dptx3_link_clk_src
.clkr
.hw
,
1329 .flags
= CLK_SET_RATE_PARENT
,
1330 .ops
= &clk_regmap_div_ro_ops
,
1334 static struct clk_branch disp0_cc_mdss_ahb1_clk
= {
1336 .halt_check
= BRANCH_HALT
,
1338 .enable_reg
= 0x20c0,
1339 .enable_mask
= BIT(0),
1340 .hw
.init
= &(const struct clk_init_data
) {
1341 .name
= "disp0_cc_mdss_ahb1_clk",
1342 .parent_hws
= (const struct clk_hw
*[]){
1343 &disp0_cc_mdss_ahb_clk_src
.clkr
.hw
,
1346 .flags
= CLK_SET_RATE_PARENT
,
1347 .ops
= &clk_branch2_ops
,
1352 static struct clk_branch disp1_cc_mdss_ahb1_clk
= {
1354 .halt_check
= BRANCH_HALT
,
1356 .enable_reg
= 0x20c0,
1357 .enable_mask
= BIT(0),
1358 .hw
.init
= &(const struct clk_init_data
) {
1359 .name
= "disp1_cc_mdss_ahb1_clk",
1360 .parent_hws
= (const struct clk_hw
*[]){
1361 &disp1_cc_mdss_ahb_clk_src
.clkr
.hw
,
1364 .flags
= CLK_SET_RATE_PARENT
,
1365 .ops
= &clk_branch2_ops
,
1370 static struct clk_branch disp0_cc_mdss_ahb_clk
= {
1372 .halt_check
= BRANCH_HALT
,
1374 .enable_reg
= 0x20bc,
1375 .enable_mask
= BIT(0),
1376 .hw
.init
= &(const struct clk_init_data
) {
1377 .name
= "disp0_cc_mdss_ahb_clk",
1378 .parent_hws
= (const struct clk_hw
*[]){
1379 &disp0_cc_mdss_ahb_clk_src
.clkr
.hw
,
1382 .flags
= CLK_SET_RATE_PARENT
,
1383 .ops
= &clk_branch2_ops
,
1388 static struct clk_branch disp1_cc_mdss_ahb_clk
= {
1390 .halt_check
= BRANCH_HALT
,
1392 .enable_reg
= 0x20bc,
1393 .enable_mask
= BIT(0),
1394 .hw
.init
= &(const struct clk_init_data
) {
1395 .name
= "disp1_cc_mdss_ahb_clk",
1396 .parent_hws
= (const struct clk_hw
*[]){
1397 &disp1_cc_mdss_ahb_clk_src
.clkr
.hw
,
1400 .flags
= CLK_SET_RATE_PARENT
,
1401 .ops
= &clk_branch2_ops
,
1406 static struct clk_branch disp0_cc_mdss_byte0_clk
= {
1408 .halt_check
= BRANCH_HALT
,
1410 .enable_reg
= 0x2044,
1411 .enable_mask
= BIT(0),
1412 .hw
.init
= &(const struct clk_init_data
) {
1413 .name
= "disp0_cc_mdss_byte0_clk",
1414 .parent_hws
= (const struct clk_hw
*[]){
1415 &disp0_cc_mdss_byte0_clk_src
.clkr
.hw
,
1418 .flags
= CLK_SET_RATE_PARENT
,
1419 .ops
= &clk_branch2_ops
,
1424 static struct clk_branch disp1_cc_mdss_byte0_clk
= {
1426 .halt_check
= BRANCH_HALT
,
1428 .enable_reg
= 0x2044,
1429 .enable_mask
= BIT(0),
1430 .hw
.init
= &(const struct clk_init_data
) {
1431 .name
= "disp1_cc_mdss_byte0_clk",
1432 .parent_hws
= (const struct clk_hw
*[]){
1433 &disp1_cc_mdss_byte0_clk_src
.clkr
.hw
,
1436 .flags
= CLK_SET_RATE_PARENT
,
1437 .ops
= &clk_branch2_ops
,
1442 static struct clk_branch disp0_cc_mdss_byte0_intf_clk
= {
1444 .halt_check
= BRANCH_HALT
,
1446 .enable_reg
= 0x2048,
1447 .enable_mask
= BIT(0),
1448 .hw
.init
= &(const struct clk_init_data
) {
1449 .name
= "disp0_cc_mdss_byte0_intf_clk",
1450 .parent_hws
= (const struct clk_hw
*[]){
1451 &disp0_cc_mdss_byte0_div_clk_src
.clkr
.hw
,
1454 .flags
= CLK_SET_RATE_PARENT
,
1455 .ops
= &clk_branch2_ops
,
1460 static struct clk_branch disp1_cc_mdss_byte0_intf_clk
= {
1462 .halt_check
= BRANCH_HALT
,
1464 .enable_reg
= 0x2048,
1465 .enable_mask
= BIT(0),
1466 .hw
.init
= &(const struct clk_init_data
) {
1467 .name
= "disp1_cc_mdss_byte0_intf_clk",
1468 .parent_hws
= (const struct clk_hw
*[]){
1469 &disp1_cc_mdss_byte0_div_clk_src
.clkr
.hw
,
1472 .flags
= CLK_SET_RATE_PARENT
,
1473 .ops
= &clk_branch2_ops
,
1478 static struct clk_branch disp0_cc_mdss_byte1_clk
= {
1480 .halt_check
= BRANCH_HALT
,
1482 .enable_reg
= 0x204c,
1483 .enable_mask
= BIT(0),
1484 .hw
.init
= &(const struct clk_init_data
) {
1485 .name
= "disp0_cc_mdss_byte1_clk",
1486 .parent_hws
= (const struct clk_hw
*[]){
1487 &disp0_cc_mdss_byte1_clk_src
.clkr
.hw
,
1490 .flags
= CLK_SET_RATE_PARENT
,
1491 .ops
= &clk_branch2_ops
,
1496 static struct clk_branch disp1_cc_mdss_byte1_clk
= {
1498 .halt_check
= BRANCH_HALT
,
1500 .enable_reg
= 0x204c,
1501 .enable_mask
= BIT(0),
1502 .hw
.init
= &(const struct clk_init_data
) {
1503 .name
= "disp1_cc_mdss_byte1_clk",
1504 .parent_hws
= (const struct clk_hw
*[]){
1505 &disp1_cc_mdss_byte1_clk_src
.clkr
.hw
,
1508 .flags
= CLK_SET_RATE_PARENT
,
1509 .ops
= &clk_branch2_ops
,
1514 static struct clk_branch disp0_cc_mdss_byte1_intf_clk
= {
1516 .halt_check
= BRANCH_HALT
,
1518 .enable_reg
= 0x2050,
1519 .enable_mask
= BIT(0),
1520 .hw
.init
= &(const struct clk_init_data
) {
1521 .name
= "disp0_cc_mdss_byte1_intf_clk",
1522 .parent_hws
= (const struct clk_hw
*[]){
1523 &disp0_cc_mdss_byte1_div_clk_src
.clkr
.hw
,
1526 .flags
= CLK_SET_RATE_PARENT
,
1527 .ops
= &clk_branch2_ops
,
1532 static struct clk_branch disp1_cc_mdss_byte1_intf_clk
= {
1534 .halt_check
= BRANCH_HALT
,
1536 .enable_reg
= 0x2050,
1537 .enable_mask
= BIT(0),
1538 .hw
.init
= &(const struct clk_init_data
) {
1539 .name
= "disp1_cc_mdss_byte1_intf_clk",
1540 .parent_hws
= (const struct clk_hw
*[]){
1541 &disp1_cc_mdss_byte1_div_clk_src
.clkr
.hw
,
1544 .flags
= CLK_SET_RATE_PARENT
,
1545 .ops
= &clk_branch2_ops
,
1550 static struct clk_branch disp0_cc_mdss_dptx0_aux_clk
= {
1552 .halt_check
= BRANCH_HALT
,
1554 .enable_reg
= 0x206c,
1555 .enable_mask
= BIT(0),
1556 .hw
.init
= &(const struct clk_init_data
) {
1557 .name
= "disp0_cc_mdss_dptx0_aux_clk",
1558 .parent_hws
= (const struct clk_hw
*[]){
1559 &disp0_cc_mdss_dptx0_aux_clk_src
.clkr
.hw
,
1562 .flags
= CLK_SET_RATE_PARENT
,
1563 .ops
= &clk_branch2_ops
,
1568 static struct clk_branch disp1_cc_mdss_dptx0_aux_clk
= {
1570 .halt_check
= BRANCH_HALT
,
1572 .enable_reg
= 0x206c,
1573 .enable_mask
= BIT(0),
1574 .hw
.init
= &(const struct clk_init_data
) {
1575 .name
= "disp1_cc_mdss_dptx0_aux_clk",
1576 .parent_hws
= (const struct clk_hw
*[]){
1577 &disp1_cc_mdss_dptx0_aux_clk_src
.clkr
.hw
,
1580 .flags
= CLK_SET_RATE_PARENT
,
1581 .ops
= &clk_branch2_ops
,
1586 static struct clk_branch disp0_cc_mdss_dptx0_link_clk
= {
1588 .halt_check
= BRANCH_HALT
,
1590 .enable_reg
= 0x205c,
1591 .enable_mask
= BIT(0),
1592 .hw
.init
= &(const struct clk_init_data
) {
1593 .name
= "disp0_cc_mdss_dptx0_link_clk",
1594 .parent_hws
= (const struct clk_hw
*[]){
1595 &disp0_cc_mdss_dptx0_link_clk_src
.clkr
.hw
,
1598 .flags
= CLK_SET_RATE_PARENT
,
1599 .ops
= &clk_branch2_ops
,
1604 static struct clk_branch disp1_cc_mdss_dptx0_link_clk
= {
1606 .halt_check
= BRANCH_HALT
,
1608 .enable_reg
= 0x205c,
1609 .enable_mask
= BIT(0),
1610 .hw
.init
= &(const struct clk_init_data
) {
1611 .name
= "disp1_cc_mdss_dptx0_link_clk",
1612 .parent_hws
= (const struct clk_hw
*[]){
1613 &disp1_cc_mdss_dptx0_link_clk_src
.clkr
.hw
,
1616 .flags
= CLK_SET_RATE_PARENT
,
1617 .ops
= &clk_branch2_ops
,
1622 static struct clk_branch disp0_cc_mdss_dptx0_link_intf_clk
= {
1624 .halt_check
= BRANCH_HALT
,
1626 .enable_reg
= 0x2060,
1627 .enable_mask
= BIT(0),
1628 .hw
.init
= &(const struct clk_init_data
) {
1629 .name
= "disp0_cc_mdss_dptx0_link_intf_clk",
1630 .parent_hws
= (const struct clk_hw
*[]){
1631 &disp0_cc_mdss_dptx0_link_div_clk_src
.clkr
.hw
,
1634 .flags
= CLK_SET_RATE_PARENT
,
1635 .ops
= &clk_branch2_ops
,
1640 static struct clk_branch disp1_cc_mdss_dptx0_link_intf_clk
= {
1642 .halt_check
= BRANCH_HALT
,
1644 .enable_reg
= 0x2060,
1645 .enable_mask
= BIT(0),
1646 .hw
.init
= &(const struct clk_init_data
) {
1647 .name
= "disp1_cc_mdss_dptx0_link_intf_clk",
1648 .parent_hws
= (const struct clk_hw
*[]){
1649 &disp1_cc_mdss_dptx0_link_div_clk_src
.clkr
.hw
,
1652 .flags
= CLK_SET_RATE_PARENT
,
1653 .ops
= &clk_branch2_ops
,
1658 static struct clk_branch disp0_cc_mdss_dptx0_pixel0_clk
= {
1660 .halt_check
= BRANCH_HALT
,
1662 .enable_reg
= 0x2070,
1663 .enable_mask
= BIT(0),
1664 .hw
.init
= &(const struct clk_init_data
) {
1665 .name
= "disp0_cc_mdss_dptx0_pixel0_clk",
1666 .parent_hws
= (const struct clk_hw
*[]){
1667 &disp0_cc_mdss_dptx0_pixel0_clk_src
.clkr
.hw
,
1670 .flags
= CLK_SET_RATE_PARENT
,
1671 .ops
= &clk_branch2_ops
,
1676 static struct clk_branch disp1_cc_mdss_dptx0_pixel0_clk
= {
1678 .halt_check
= BRANCH_HALT
,
1680 .enable_reg
= 0x2070,
1681 .enable_mask
= BIT(0),
1682 .hw
.init
= &(const struct clk_init_data
) {
1683 .name
= "disp1_cc_mdss_dptx0_pixel0_clk",
1684 .parent_hws
= (const struct clk_hw
*[]){
1685 &disp1_cc_mdss_dptx0_pixel0_clk_src
.clkr
.hw
,
1688 .flags
= CLK_SET_RATE_PARENT
,
1689 .ops
= &clk_branch2_ops
,
1694 static struct clk_branch disp0_cc_mdss_dptx0_pixel1_clk
= {
1696 .halt_check
= BRANCH_HALT
,
1698 .enable_reg
= 0x2074,
1699 .enable_mask
= BIT(0),
1700 .hw
.init
= &(const struct clk_init_data
) {
1701 .name
= "disp0_cc_mdss_dptx0_pixel1_clk",
1702 .parent_hws
= (const struct clk_hw
*[]){
1703 &disp0_cc_mdss_dptx0_pixel1_clk_src
.clkr
.hw
,
1706 .flags
= CLK_SET_RATE_PARENT
,
1707 .ops
= &clk_branch2_ops
,
1712 static struct clk_branch disp1_cc_mdss_dptx0_pixel1_clk
= {
1714 .halt_check
= BRANCH_HALT
,
1716 .enable_reg
= 0x2074,
1717 .enable_mask
= BIT(0),
1718 .hw
.init
= &(const struct clk_init_data
) {
1719 .name
= "disp1_cc_mdss_dptx0_pixel1_clk",
1720 .parent_hws
= (const struct clk_hw
*[]){
1721 &disp1_cc_mdss_dptx0_pixel1_clk_src
.clkr
.hw
,
1724 .flags
= CLK_SET_RATE_PARENT
,
1725 .ops
= &clk_branch2_ops
,
1730 static struct clk_branch disp0_cc_mdss_dptx0_usb_router_link_intf_clk
= {
1732 .halt_check
= BRANCH_HALT
,
1734 .enable_reg
= 0x2064,
1735 .enable_mask
= BIT(0),
1736 .hw
.init
= &(const struct clk_init_data
) {
1737 .name
= "disp0_cc_mdss_dptx0_usb_router_link_intf_clk",
1738 .parent_hws
= (const struct clk_hw
*[]){
1739 &disp0_cc_mdss_dptx0_link_div_clk_src
.clkr
.hw
,
1742 .flags
= CLK_SET_RATE_PARENT
,
1743 .ops
= &clk_branch2_ops
,
1748 static struct clk_branch disp1_cc_mdss_dptx0_usb_router_link_intf_clk
= {
1750 .halt_check
= BRANCH_HALT
,
1752 .enable_reg
= 0x2064,
1753 .enable_mask
= BIT(0),
1754 .hw
.init
= &(const struct clk_init_data
) {
1755 .name
= "disp1_cc_mdss_dptx0_usb_router_link_intf_clk",
1756 .parent_hws
= (const struct clk_hw
*[]){
1757 &disp1_cc_mdss_dptx0_link_div_clk_src
.clkr
.hw
,
1760 .flags
= CLK_SET_RATE_PARENT
,
1761 .ops
= &clk_branch2_ops
,
1766 static struct clk_branch disp0_cc_mdss_dptx1_aux_clk
= {
1768 .halt_check
= BRANCH_HALT
,
1770 .enable_reg
= 0x20a0,
1771 .enable_mask
= BIT(0),
1772 .hw
.init
= &(const struct clk_init_data
) {
1773 .name
= "disp0_cc_mdss_dptx1_aux_clk",
1774 .parent_hws
= (const struct clk_hw
*[]){
1775 &disp0_cc_mdss_dptx1_aux_clk_src
.clkr
.hw
,
1778 .flags
= CLK_SET_RATE_PARENT
,
1779 .ops
= &clk_branch2_ops
,
1784 static struct clk_branch disp1_cc_mdss_dptx1_aux_clk
= {
1786 .halt_check
= BRANCH_HALT
,
1788 .enable_reg
= 0x20a0,
1789 .enable_mask
= BIT(0),
1790 .hw
.init
= &(const struct clk_init_data
) {
1791 .name
= "disp1_cc_mdss_dptx1_aux_clk",
1792 .parent_hws
= (const struct clk_hw
*[]){
1793 &disp1_cc_mdss_dptx1_aux_clk_src
.clkr
.hw
,
1796 .flags
= CLK_SET_RATE_PARENT
,
1797 .ops
= &clk_branch2_ops
,
1802 static struct clk_branch disp0_cc_mdss_dptx1_link_clk
= {
1804 .halt_check
= BRANCH_HALT
,
1806 .enable_reg
= 0x2084,
1807 .enable_mask
= BIT(0),
1808 .hw
.init
= &(const struct clk_init_data
) {
1809 .name
= "disp0_cc_mdss_dptx1_link_clk",
1810 .parent_hws
= (const struct clk_hw
*[]){
1811 &disp0_cc_mdss_dptx1_link_clk_src
.clkr
.hw
,
1814 .flags
= CLK_SET_RATE_PARENT
,
1815 .ops
= &clk_branch2_ops
,
1820 static struct clk_branch disp1_cc_mdss_dptx1_link_clk
= {
1822 .halt_check
= BRANCH_HALT
,
1824 .enable_reg
= 0x2084,
1825 .enable_mask
= BIT(0),
1826 .hw
.init
= &(const struct clk_init_data
) {
1827 .name
= "disp1_cc_mdss_dptx1_link_clk",
1828 .parent_hws
= (const struct clk_hw
*[]){
1829 &disp1_cc_mdss_dptx1_link_clk_src
.clkr
.hw
,
1832 .flags
= CLK_SET_RATE_PARENT
,
1833 .ops
= &clk_branch2_ops
,
1838 static struct clk_branch disp0_cc_mdss_dptx1_link_intf_clk
= {
1840 .halt_check
= BRANCH_HALT
,
1842 .enable_reg
= 0x2088,
1843 .enable_mask
= BIT(0),
1844 .hw
.init
= &(const struct clk_init_data
) {
1845 .name
= "disp0_cc_mdss_dptx1_link_intf_clk",
1846 .parent_hws
= (const struct clk_hw
*[]){
1847 &disp0_cc_mdss_dptx1_link_div_clk_src
.clkr
.hw
,
1850 .flags
= CLK_SET_RATE_PARENT
,
1851 .ops
= &clk_branch2_ops
,
1856 static struct clk_branch disp1_cc_mdss_dptx1_link_intf_clk
= {
1858 .halt_check
= BRANCH_HALT
,
1860 .enable_reg
= 0x2088,
1861 .enable_mask
= BIT(0),
1862 .hw
.init
= &(const struct clk_init_data
) {
1863 .name
= "disp1_cc_mdss_dptx1_link_intf_clk",
1864 .parent_hws
= (const struct clk_hw
*[]){
1865 &disp1_cc_mdss_dptx1_link_div_clk_src
.clkr
.hw
,
1868 .flags
= CLK_SET_RATE_PARENT
,
1869 .ops
= &clk_branch2_ops
,
1874 static struct clk_branch disp0_cc_mdss_dptx1_pixel0_clk
= {
1876 .halt_check
= BRANCH_HALT
,
1878 .enable_reg
= 0x2078,
1879 .enable_mask
= BIT(0),
1880 .hw
.init
= &(const struct clk_init_data
) {
1881 .name
= "disp0_cc_mdss_dptx1_pixel0_clk",
1882 .parent_hws
= (const struct clk_hw
*[]){
1883 &disp0_cc_mdss_dptx1_pixel0_clk_src
.clkr
.hw
,
1886 .flags
= CLK_SET_RATE_PARENT
,
1887 .ops
= &clk_branch2_ops
,
1892 static struct clk_branch disp1_cc_mdss_dptx1_pixel0_clk
= {
1894 .halt_check
= BRANCH_HALT
,
1896 .enable_reg
= 0x2078,
1897 .enable_mask
= BIT(0),
1898 .hw
.init
= &(const struct clk_init_data
) {
1899 .name
= "disp1_cc_mdss_dptx1_pixel0_clk",
1900 .parent_hws
= (const struct clk_hw
*[]){
1901 &disp1_cc_mdss_dptx1_pixel0_clk_src
.clkr
.hw
,
1904 .flags
= CLK_SET_RATE_PARENT
,
1905 .ops
= &clk_branch2_ops
,
1910 static struct clk_branch disp0_cc_mdss_dptx1_pixel1_clk
= {
1912 .halt_check
= BRANCH_HALT
,
1914 .enable_reg
= 0x236c,
1915 .enable_mask
= BIT(0),
1916 .hw
.init
= &(const struct clk_init_data
) {
1917 .name
= "disp0_cc_mdss_dptx1_pixel1_clk",
1918 .parent_hws
= (const struct clk_hw
*[]){
1919 &disp0_cc_mdss_dptx1_pixel1_clk_src
.clkr
.hw
,
1922 .flags
= CLK_SET_RATE_PARENT
,
1923 .ops
= &clk_branch2_ops
,
1928 static struct clk_branch disp1_cc_mdss_dptx1_pixel1_clk
= {
1930 .halt_check
= BRANCH_HALT
,
1932 .enable_reg
= 0x236c,
1933 .enable_mask
= BIT(0),
1934 .hw
.init
= &(const struct clk_init_data
) {
1935 .name
= "disp1_cc_mdss_dptx1_pixel1_clk",
1936 .parent_hws
= (const struct clk_hw
*[]){
1937 &disp1_cc_mdss_dptx1_pixel1_clk_src
.clkr
.hw
,
1940 .flags
= CLK_SET_RATE_PARENT
,
1941 .ops
= &clk_branch2_ops
,
1946 static struct clk_branch disp0_cc_mdss_dptx1_usb_router_link_intf_clk
= {
1948 .halt_check
= BRANCH_HALT
,
1950 .enable_reg
= 0x208c,
1951 .enable_mask
= BIT(0),
1952 .hw
.init
= &(const struct clk_init_data
) {
1953 .name
= "disp0_cc_mdss_dptx1_usb_router_link_intf_clk",
1954 .parent_hws
= (const struct clk_hw
*[]){
1955 &disp0_cc_mdss_dptx1_link_div_clk_src
.clkr
.hw
,
1958 .flags
= CLK_SET_RATE_PARENT
,
1959 .ops
= &clk_branch2_ops
,
1964 static struct clk_branch disp1_cc_mdss_dptx1_usb_router_link_intf_clk
= {
1966 .halt_check
= BRANCH_HALT
,
1968 .enable_reg
= 0x208c,
1969 .enable_mask
= BIT(0),
1970 .hw
.init
= &(const struct clk_init_data
) {
1971 .name
= "disp1_cc_mdss_dptx1_usb_router_link_intf_clk",
1972 .parent_hws
= (const struct clk_hw
*[]){
1973 &disp1_cc_mdss_dptx1_link_div_clk_src
.clkr
.hw
,
1976 .flags
= CLK_SET_RATE_PARENT
,
1977 .ops
= &clk_branch2_ops
,
1982 static struct clk_branch disp0_cc_mdss_dptx2_aux_clk
= {
1984 .halt_check
= BRANCH_HALT
,
1986 .enable_reg
= 0x20a4,
1987 .enable_mask
= BIT(0),
1988 .hw
.init
= &(const struct clk_init_data
) {
1989 .name
= "disp0_cc_mdss_dptx2_aux_clk",
1990 .parent_hws
= (const struct clk_hw
*[]){
1991 &disp0_cc_mdss_dptx2_aux_clk_src
.clkr
.hw
,
1994 .flags
= CLK_SET_RATE_PARENT
,
1995 .ops
= &clk_branch2_ops
,
2000 static struct clk_branch disp1_cc_mdss_dptx2_aux_clk
= {
2002 .halt_check
= BRANCH_HALT
,
2004 .enable_reg
= 0x20a4,
2005 .enable_mask
= BIT(0),
2006 .hw
.init
= &(const struct clk_init_data
) {
2007 .name
= "disp1_cc_mdss_dptx2_aux_clk",
2008 .parent_hws
= (const struct clk_hw
*[]){
2009 &disp1_cc_mdss_dptx2_aux_clk_src
.clkr
.hw
,
2012 .flags
= CLK_SET_RATE_PARENT
,
2013 .ops
= &clk_branch2_ops
,
2018 static struct clk_branch disp0_cc_mdss_dptx2_link_clk
= {
2020 .halt_check
= BRANCH_HALT
,
2022 .enable_reg
= 0x2090,
2023 .enable_mask
= BIT(0),
2024 .hw
.init
= &(const struct clk_init_data
) {
2025 .name
= "disp0_cc_mdss_dptx2_link_clk",
2026 .parent_hws
= (const struct clk_hw
*[]){
2027 &disp0_cc_mdss_dptx2_link_clk_src
.clkr
.hw
,
2030 .flags
= CLK_SET_RATE_PARENT
,
2031 .ops
= &clk_branch2_ops
,
2036 static struct clk_branch disp1_cc_mdss_dptx2_link_clk
= {
2038 .halt_check
= BRANCH_HALT
,
2040 .enable_reg
= 0x2090,
2041 .enable_mask
= BIT(0),
2042 .hw
.init
= &(const struct clk_init_data
) {
2043 .name
= "disp1_cc_mdss_dptx2_link_clk",
2044 .parent_hws
= (const struct clk_hw
*[]){
2045 &disp1_cc_mdss_dptx2_link_clk_src
.clkr
.hw
,
2048 .flags
= CLK_SET_RATE_PARENT
,
2049 .ops
= &clk_branch2_ops
,
2054 static struct clk_branch disp0_cc_mdss_dptx2_link_intf_clk
= {
2056 .halt_check
= BRANCH_HALT
,
2058 .enable_reg
= 0x2094,
2059 .enable_mask
= BIT(0),
2060 .hw
.init
= &(const struct clk_init_data
) {
2061 .name
= "disp0_cc_mdss_dptx2_link_intf_clk",
2062 .parent_hws
= (const struct clk_hw
*[]){
2063 &disp0_cc_mdss_dptx2_link_div_clk_src
.clkr
.hw
,
2066 .flags
= CLK_SET_RATE_PARENT
,
2067 .ops
= &clk_branch2_ops
,
2072 static struct clk_branch disp1_cc_mdss_dptx2_link_intf_clk
= {
2074 .halt_check
= BRANCH_HALT
,
2076 .enable_reg
= 0x2094,
2077 .enable_mask
= BIT(0),
2078 .hw
.init
= &(const struct clk_init_data
) {
2079 .name
= "disp1_cc_mdss_dptx2_link_intf_clk",
2080 .parent_hws
= (const struct clk_hw
*[]){
2081 &disp1_cc_mdss_dptx2_link_div_clk_src
.clkr
.hw
,
2084 .flags
= CLK_SET_RATE_PARENT
,
2085 .ops
= &clk_branch2_ops
,
2090 static struct clk_branch disp0_cc_mdss_dptx2_pixel0_clk
= {
2092 .halt_check
= BRANCH_HALT
,
2094 .enable_reg
= 0x207c,
2095 .enable_mask
= BIT(0),
2096 .hw
.init
= &(const struct clk_init_data
) {
2097 .name
= "disp0_cc_mdss_dptx2_pixel0_clk",
2098 .parent_hws
= (const struct clk_hw
*[]){
2099 &disp0_cc_mdss_dptx2_pixel0_clk_src
.clkr
.hw
,
2102 .flags
= CLK_SET_RATE_PARENT
,
2103 .ops
= &clk_branch2_ops
,
2108 static struct clk_branch disp1_cc_mdss_dptx2_pixel0_clk
= {
2110 .halt_check
= BRANCH_HALT
,
2112 .enable_reg
= 0x207c,
2113 .enable_mask
= BIT(0),
2114 .hw
.init
= &(const struct clk_init_data
) {
2115 .name
= "disp1_cc_mdss_dptx2_pixel0_clk",
2116 .parent_hws
= (const struct clk_hw
*[]){
2117 &disp1_cc_mdss_dptx2_pixel0_clk_src
.clkr
.hw
,
2120 .flags
= CLK_SET_RATE_PARENT
,
2121 .ops
= &clk_branch2_ops
,
2126 static struct clk_branch disp0_cc_mdss_dptx2_pixel1_clk
= {
2128 .halt_check
= BRANCH_HALT
,
2130 .enable_reg
= 0x2080,
2131 .enable_mask
= BIT(0),
2132 .hw
.init
= &(const struct clk_init_data
) {
2133 .name
= "disp0_cc_mdss_dptx2_pixel1_clk",
2134 .parent_hws
= (const struct clk_hw
*[]){
2135 &disp0_cc_mdss_dptx2_pixel1_clk_src
.clkr
.hw
,
2138 .flags
= CLK_SET_RATE_PARENT
,
2139 .ops
= &clk_branch2_ops
,
2144 static struct clk_branch disp1_cc_mdss_dptx2_pixel1_clk
= {
2146 .halt_check
= BRANCH_HALT
,
2148 .enable_reg
= 0x2080,
2149 .enable_mask
= BIT(0),
2150 .hw
.init
= &(const struct clk_init_data
) {
2151 .name
= "disp1_cc_mdss_dptx2_pixel1_clk",
2152 .parent_hws
= (const struct clk_hw
*[]){
2153 &disp1_cc_mdss_dptx2_pixel1_clk_src
.clkr
.hw
,
2156 .flags
= CLK_SET_RATE_PARENT
,
2157 .ops
= &clk_branch2_ops
,
2162 static struct clk_branch disp0_cc_mdss_dptx3_aux_clk
= {
2164 .halt_check
= BRANCH_HALT
,
2166 .enable_reg
= 0x20b8,
2167 .enable_mask
= BIT(0),
2168 .hw
.init
= &(const struct clk_init_data
) {
2169 .name
= "disp0_cc_mdss_dptx3_aux_clk",
2170 .parent_hws
= (const struct clk_hw
*[]){
2171 &disp0_cc_mdss_dptx3_aux_clk_src
.clkr
.hw
,
2174 .flags
= CLK_SET_RATE_PARENT
,
2175 .ops
= &clk_branch2_ops
,
2180 static struct clk_branch disp1_cc_mdss_dptx3_aux_clk
= {
2182 .halt_check
= BRANCH_HALT
,
2184 .enable_reg
= 0x20b8,
2185 .enable_mask
= BIT(0),
2186 .hw
.init
= &(const struct clk_init_data
) {
2187 .name
= "disp1_cc_mdss_dptx3_aux_clk",
2188 .parent_hws
= (const struct clk_hw
*[]){
2189 &disp1_cc_mdss_dptx3_aux_clk_src
.clkr
.hw
,
2192 .flags
= CLK_SET_RATE_PARENT
,
2193 .ops
= &clk_branch2_ops
,
2198 static struct clk_branch disp0_cc_mdss_dptx3_link_clk
= {
2200 .halt_check
= BRANCH_HALT
,
2202 .enable_reg
= 0x20ac,
2203 .enable_mask
= BIT(0),
2204 .hw
.init
= &(const struct clk_init_data
) {
2205 .name
= "disp0_cc_mdss_dptx3_link_clk",
2206 .parent_hws
= (const struct clk_hw
*[]){
2207 &disp0_cc_mdss_dptx3_link_clk_src
.clkr
.hw
,
2210 .flags
= CLK_SET_RATE_PARENT
,
2211 .ops
= &clk_branch2_ops
,
2216 static struct clk_branch disp1_cc_mdss_dptx3_link_clk
= {
2218 .halt_check
= BRANCH_HALT
,
2220 .enable_reg
= 0x20ac,
2221 .enable_mask
= BIT(0),
2222 .hw
.init
= &(const struct clk_init_data
) {
2223 .name
= "disp1_cc_mdss_dptx3_link_clk",
2224 .parent_hws
= (const struct clk_hw
*[]){
2225 &disp1_cc_mdss_dptx3_link_clk_src
.clkr
.hw
,
2228 .flags
= CLK_SET_RATE_PARENT
,
2229 .ops
= &clk_branch2_ops
,
2234 static struct clk_branch disp0_cc_mdss_dptx3_link_intf_clk
= {
2236 .halt_check
= BRANCH_HALT
,
2238 .enable_reg
= 0x20b0,
2239 .enable_mask
= BIT(0),
2240 .hw
.init
= &(const struct clk_init_data
) {
2241 .name
= "disp0_cc_mdss_dptx3_link_intf_clk",
2242 .parent_hws
= (const struct clk_hw
*[]){
2243 &disp0_cc_mdss_dptx3_link_div_clk_src
.clkr
.hw
,
2246 .flags
= CLK_SET_RATE_PARENT
,
2247 .ops
= &clk_branch2_ops
,
2252 static struct clk_branch disp1_cc_mdss_dptx3_link_intf_clk
= {
2254 .halt_check
= BRANCH_HALT
,
2256 .enable_reg
= 0x20b0,
2257 .enable_mask
= BIT(0),
2258 .hw
.init
= &(const struct clk_init_data
) {
2259 .name
= "disp1_cc_mdss_dptx3_link_intf_clk",
2260 .parent_hws
= (const struct clk_hw
*[]){
2261 &disp1_cc_mdss_dptx3_link_div_clk_src
.clkr
.hw
,
2264 .flags
= CLK_SET_RATE_PARENT
,
2265 .ops
= &clk_branch2_ops
,
2270 static struct clk_branch disp0_cc_mdss_dptx3_pixel0_clk
= {
2272 .halt_check
= BRANCH_HALT
,
2274 .enable_reg
= 0x20a8,
2275 .enable_mask
= BIT(0),
2276 .hw
.init
= &(const struct clk_init_data
) {
2277 .name
= "disp0_cc_mdss_dptx3_pixel0_clk",
2278 .parent_hws
= (const struct clk_hw
*[]){
2279 &disp0_cc_mdss_dptx3_pixel0_clk_src
.clkr
.hw
,
2282 .flags
= CLK_SET_RATE_PARENT
,
2283 .ops
= &clk_branch2_ops
,
2288 static struct clk_branch disp1_cc_mdss_dptx3_pixel0_clk
= {
2290 .halt_check
= BRANCH_HALT
,
2292 .enable_reg
= 0x20a8,
2293 .enable_mask
= BIT(0),
2294 .hw
.init
= &(const struct clk_init_data
) {
2295 .name
= "disp1_cc_mdss_dptx3_pixel0_clk",
2296 .parent_hws
= (const struct clk_hw
*[]){
2297 &disp1_cc_mdss_dptx3_pixel0_clk_src
.clkr
.hw
,
2300 .flags
= CLK_SET_RATE_PARENT
,
2301 .ops
= &clk_branch2_ops
,
2306 static struct clk_branch disp0_cc_mdss_esc0_clk
= {
2308 .halt_check
= BRANCH_HALT
,
2310 .enable_reg
= 0x2054,
2311 .enable_mask
= BIT(0),
2312 .hw
.init
= &(const struct clk_init_data
) {
2313 .name
= "disp0_cc_mdss_esc0_clk",
2314 .parent_hws
= (const struct clk_hw
*[]){
2315 &disp0_cc_mdss_esc0_clk_src
.clkr
.hw
,
2318 .flags
= CLK_SET_RATE_PARENT
,
2319 .ops
= &clk_branch2_ops
,
2324 static struct clk_branch disp1_cc_mdss_esc0_clk
= {
2326 .halt_check
= BRANCH_HALT
,
2328 .enable_reg
= 0x2054,
2329 .enable_mask
= BIT(0),
2330 .hw
.init
= &(const struct clk_init_data
) {
2331 .name
= "disp1_cc_mdss_esc0_clk",
2332 .parent_hws
= (const struct clk_hw
*[]){
2333 &disp1_cc_mdss_esc0_clk_src
.clkr
.hw
,
2336 .flags
= CLK_SET_RATE_PARENT
,
2337 .ops
= &clk_branch2_ops
,
2342 static struct clk_branch disp0_cc_mdss_esc1_clk
= {
2344 .halt_check
= BRANCH_HALT
,
2346 .enable_reg
= 0x2058,
2347 .enable_mask
= BIT(0),
2348 .hw
.init
= &(const struct clk_init_data
) {
2349 .name
= "disp0_cc_mdss_esc1_clk",
2350 .parent_hws
= (const struct clk_hw
*[]){
2351 &disp0_cc_mdss_esc1_clk_src
.clkr
.hw
,
2354 .flags
= CLK_SET_RATE_PARENT
,
2355 .ops
= &clk_branch2_ops
,
2360 static struct clk_branch disp1_cc_mdss_esc1_clk
= {
2362 .halt_check
= BRANCH_HALT
,
2364 .enable_reg
= 0x2058,
2365 .enable_mask
= BIT(0),
2366 .hw
.init
= &(const struct clk_init_data
) {
2367 .name
= "disp1_cc_mdss_esc1_clk",
2368 .parent_hws
= (const struct clk_hw
*[]){
2369 &disp1_cc_mdss_esc1_clk_src
.clkr
.hw
,
2372 .flags
= CLK_SET_RATE_PARENT
,
2373 .ops
= &clk_branch2_ops
,
2378 static struct clk_branch disp0_cc_mdss_mdp1_clk
= {
2380 .halt_check
= BRANCH_HALT
,
2382 .enable_reg
= 0x2014,
2383 .enable_mask
= BIT(0),
2384 .hw
.init
= &(const struct clk_init_data
) {
2385 .name
= "disp0_cc_mdss_mdp1_clk",
2386 .parent_hws
= (const struct clk_hw
*[]){
2387 &disp0_cc_mdss_mdp_clk_src
.clkr
.hw
,
2390 .flags
= CLK_SET_RATE_PARENT
,
2391 .ops
= &clk_branch2_ops
,
2396 static struct clk_branch disp1_cc_mdss_mdp1_clk
= {
2398 .halt_check
= BRANCH_HALT
,
2400 .enable_reg
= 0x2014,
2401 .enable_mask
= BIT(0),
2402 .hw
.init
= &(const struct clk_init_data
) {
2403 .name
= "disp1_cc_mdss_mdp1_clk",
2404 .parent_hws
= (const struct clk_hw
*[]){
2405 &disp1_cc_mdss_mdp_clk_src
.clkr
.hw
,
2408 .flags
= CLK_SET_RATE_PARENT
,
2409 .ops
= &clk_branch2_ops
,
2414 static struct clk_branch disp0_cc_mdss_mdp_clk
= {
2416 .halt_check
= BRANCH_HALT
,
2418 .enable_reg
= 0x200c,
2419 .enable_mask
= BIT(0),
2420 .hw
.init
= &(const struct clk_init_data
) {
2421 .name
= "disp0_cc_mdss_mdp_clk",
2422 .parent_hws
= (const struct clk_hw
*[]){
2423 &disp0_cc_mdss_mdp_clk_src
.clkr
.hw
,
2426 .flags
= CLK_SET_RATE_PARENT
,
2427 .ops
= &clk_branch2_ops
,
2432 static struct clk_branch disp1_cc_mdss_mdp_clk
= {
2434 .halt_check
= BRANCH_HALT
,
2436 .enable_reg
= 0x200c,
2437 .enable_mask
= BIT(0),
2438 .hw
.init
= &(const struct clk_init_data
) {
2439 .name
= "disp1_cc_mdss_mdp_clk",
2440 .parent_hws
= (const struct clk_hw
*[]){
2441 &disp1_cc_mdss_mdp_clk_src
.clkr
.hw
,
2444 .flags
= CLK_SET_RATE_PARENT
,
2445 .ops
= &clk_branch2_ops
,
2450 static struct clk_branch disp0_cc_mdss_mdp_lut1_clk
= {
2452 .halt_check
= BRANCH_HALT
,
2454 .enable_reg
= 0x2034,
2455 .enable_mask
= BIT(0),
2456 .hw
.init
= &(const struct clk_init_data
) {
2457 .name
= "disp0_cc_mdss_mdp_lut1_clk",
2458 .parent_hws
= (const struct clk_hw
*[]){
2459 &disp0_cc_mdss_mdp_clk_src
.clkr
.hw
,
2462 .flags
= CLK_SET_RATE_PARENT
,
2463 .ops
= &clk_branch2_ops
,
2468 static struct clk_branch disp1_cc_mdss_mdp_lut1_clk
= {
2470 .halt_check
= BRANCH_HALT
,
2472 .enable_reg
= 0x2034,
2473 .enable_mask
= BIT(0),
2474 .hw
.init
= &(const struct clk_init_data
) {
2475 .name
= "disp1_cc_mdss_mdp_lut1_clk",
2476 .parent_hws
= (const struct clk_hw
*[]){
2477 &disp1_cc_mdss_mdp_clk_src
.clkr
.hw
,
2480 .flags
= CLK_SET_RATE_PARENT
,
2481 .ops
= &clk_branch2_ops
,
2486 static struct clk_branch disp0_cc_mdss_mdp_lut_clk
= {
2488 .halt_check
= BRANCH_HALT_VOTED
,
2490 .enable_reg
= 0x202c,
2491 .enable_mask
= BIT(0),
2492 .hw
.init
= &(const struct clk_init_data
) {
2493 .name
= "disp0_cc_mdss_mdp_lut_clk",
2494 .parent_hws
= (const struct clk_hw
*[]){
2495 &disp0_cc_mdss_mdp_clk_src
.clkr
.hw
,
2498 .flags
= CLK_SET_RATE_PARENT
,
2499 .ops
= &clk_branch2_ops
,
2504 static struct clk_branch disp1_cc_mdss_mdp_lut_clk
= {
2506 .halt_check
= BRANCH_HALT_VOTED
,
2508 .enable_reg
= 0x202c,
2509 .enable_mask
= BIT(0),
2510 .hw
.init
= &(const struct clk_init_data
) {
2511 .name
= "disp1_cc_mdss_mdp_lut_clk",
2512 .parent_hws
= (const struct clk_hw
*[]){
2513 &disp1_cc_mdss_mdp_clk_src
.clkr
.hw
,
2516 .flags
= CLK_SET_RATE_PARENT
,
2517 .ops
= &clk_branch2_ops
,
2522 static struct clk_branch disp0_cc_mdss_non_gdsc_ahb_clk
= {
2524 .halt_check
= BRANCH_HALT_VOTED
,
2526 .enable_reg
= 0x4004,
2527 .enable_mask
= BIT(0),
2528 .hw
.init
= &(const struct clk_init_data
) {
2529 .name
= "disp0_cc_mdss_non_gdsc_ahb_clk",
2530 .parent_hws
= (const struct clk_hw
*[]){
2531 &disp0_cc_mdss_ahb_clk_src
.clkr
.hw
,
2534 .flags
= CLK_SET_RATE_PARENT
,
2535 .ops
= &clk_branch2_ops
,
2540 static struct clk_branch disp1_cc_mdss_non_gdsc_ahb_clk
= {
2542 .halt_check
= BRANCH_HALT_VOTED
,
2544 .enable_reg
= 0x4004,
2545 .enable_mask
= BIT(0),
2546 .hw
.init
= &(const struct clk_init_data
) {
2547 .name
= "disp1_cc_mdss_non_gdsc_ahb_clk",
2548 .parent_hws
= (const struct clk_hw
*[]){
2549 &disp1_cc_mdss_ahb_clk_src
.clkr
.hw
,
2552 .flags
= CLK_SET_RATE_PARENT
,
2553 .ops
= &clk_branch2_ops
,
2558 static struct clk_branch disp0_cc_mdss_pclk0_clk
= {
2560 .halt_check
= BRANCH_HALT
,
2562 .enable_reg
= 0x2004,
2563 .enable_mask
= BIT(0),
2564 .hw
.init
= &(const struct clk_init_data
) {
2565 .name
= "disp0_cc_mdss_pclk0_clk",
2566 .parent_hws
= (const struct clk_hw
*[]){
2567 &disp0_cc_mdss_pclk0_clk_src
.clkr
.hw
,
2570 .flags
= CLK_SET_RATE_PARENT
,
2571 .ops
= &clk_branch2_ops
,
2576 static struct clk_branch disp1_cc_mdss_pclk0_clk
= {
2578 .halt_check
= BRANCH_HALT
,
2580 .enable_reg
= 0x2004,
2581 .enable_mask
= BIT(0),
2582 .hw
.init
= &(const struct clk_init_data
) {
2583 .name
= "disp1_cc_mdss_pclk0_clk",
2584 .parent_hws
= (const struct clk_hw
*[]){
2585 &disp1_cc_mdss_pclk0_clk_src
.clkr
.hw
,
2588 .flags
= CLK_SET_RATE_PARENT
,
2589 .ops
= &clk_branch2_ops
,
2594 static struct clk_branch disp0_cc_mdss_pclk1_clk
= {
2596 .halt_check
= BRANCH_HALT
,
2598 .enable_reg
= 0x2008,
2599 .enable_mask
= BIT(0),
2600 .hw
.init
= &(const struct clk_init_data
) {
2601 .name
= "disp0_cc_mdss_pclk1_clk",
2602 .parent_hws
= (const struct clk_hw
*[]){
2603 &disp0_cc_mdss_pclk1_clk_src
.clkr
.hw
,
2606 .flags
= CLK_SET_RATE_PARENT
,
2607 .ops
= &clk_branch2_ops
,
2612 static struct clk_branch disp1_cc_mdss_pclk1_clk
= {
2614 .halt_check
= BRANCH_HALT
,
2616 .enable_reg
= 0x2008,
2617 .enable_mask
= BIT(0),
2618 .hw
.init
= &(const struct clk_init_data
) {
2619 .name
= "disp1_cc_mdss_pclk1_clk",
2620 .parent_hws
= (const struct clk_hw
*[]){
2621 &disp1_cc_mdss_pclk1_clk_src
.clkr
.hw
,
2624 .flags
= CLK_SET_RATE_PARENT
,
2625 .ops
= &clk_branch2_ops
,
2630 static struct clk_branch disp0_cc_mdss_rot1_clk
= {
2632 .halt_check
= BRANCH_HALT
,
2634 .enable_reg
= 0x2024,
2635 .enable_mask
= BIT(0),
2636 .hw
.init
= &(const struct clk_init_data
) {
2637 .name
= "disp0_cc_mdss_rot1_clk",
2638 .parent_hws
= (const struct clk_hw
*[]){
2639 &disp0_cc_mdss_rot_clk_src
.clkr
.hw
,
2642 .flags
= CLK_SET_RATE_PARENT
,
2643 .ops
= &clk_branch2_ops
,
2648 static struct clk_branch disp1_cc_mdss_rot1_clk
= {
2650 .halt_check
= BRANCH_HALT
,
2652 .enable_reg
= 0x2024,
2653 .enable_mask
= BIT(0),
2654 .hw
.init
= &(const struct clk_init_data
) {
2655 .name
= "disp1_cc_mdss_rot1_clk",
2656 .parent_hws
= (const struct clk_hw
*[]){
2657 &disp1_cc_mdss_rot_clk_src
.clkr
.hw
,
2660 .flags
= CLK_SET_RATE_PARENT
,
2661 .ops
= &clk_branch2_ops
,
2666 static struct clk_branch disp0_cc_mdss_rot_clk
= {
2668 .halt_check
= BRANCH_HALT
,
2670 .enable_reg
= 0x201c,
2671 .enable_mask
= BIT(0),
2672 .hw
.init
= &(const struct clk_init_data
) {
2673 .name
= "disp0_cc_mdss_rot_clk",
2674 .parent_hws
= (const struct clk_hw
*[]){
2675 &disp0_cc_mdss_rot_clk_src
.clkr
.hw
,
2678 .flags
= CLK_SET_RATE_PARENT
,
2679 .ops
= &clk_branch2_ops
,
2684 static struct clk_branch disp1_cc_mdss_rot_clk
= {
2686 .halt_check
= BRANCH_HALT
,
2688 .enable_reg
= 0x201c,
2689 .enable_mask
= BIT(0),
2690 .hw
.init
= &(const struct clk_init_data
) {
2691 .name
= "disp1_cc_mdss_rot_clk",
2692 .parent_hws
= (const struct clk_hw
*[]){
2693 &disp1_cc_mdss_rot_clk_src
.clkr
.hw
,
2696 .flags
= CLK_SET_RATE_PARENT
,
2697 .ops
= &clk_branch2_ops
,
2702 static struct clk_branch disp0_cc_mdss_rscc_ahb_clk
= {
2704 .halt_check
= BRANCH_HALT
,
2706 .enable_reg
= 0x400c,
2707 .enable_mask
= BIT(0),
2708 .hw
.init
= &(const struct clk_init_data
) {
2709 .name
= "disp0_cc_mdss_rscc_ahb_clk",
2710 .parent_hws
= (const struct clk_hw
*[]){
2711 &disp0_cc_mdss_ahb_clk_src
.clkr
.hw
,
2714 .flags
= CLK_SET_RATE_PARENT
,
2715 .ops
= &clk_branch2_ops
,
2720 static struct clk_branch disp1_cc_mdss_rscc_ahb_clk
= {
2722 .halt_check
= BRANCH_HALT
,
2724 .enable_reg
= 0x400c,
2725 .enable_mask
= BIT(0),
2726 .hw
.init
= &(const struct clk_init_data
) {
2727 .name
= "disp1_cc_mdss_rscc_ahb_clk",
2728 .parent_hws
= (const struct clk_hw
*[]){
2729 &disp1_cc_mdss_ahb_clk_src
.clkr
.hw
,
2732 .flags
= CLK_SET_RATE_PARENT
,
2733 .ops
= &clk_branch2_ops
,
2738 static struct clk_branch disp0_cc_mdss_rscc_vsync_clk
= {
2740 .halt_check
= BRANCH_HALT
,
2742 .enable_reg
= 0x4008,
2743 .enable_mask
= BIT(0),
2744 .hw
.init
= &(const struct clk_init_data
) {
2745 .name
= "disp0_cc_mdss_rscc_vsync_clk",
2746 .parent_hws
= (const struct clk_hw
*[]){
2747 &disp0_cc_mdss_vsync_clk_src
.clkr
.hw
,
2750 .flags
= CLK_SET_RATE_PARENT
,
2751 .ops
= &clk_branch2_ops
,
2756 static struct clk_branch disp1_cc_mdss_rscc_vsync_clk
= {
2758 .halt_check
= BRANCH_HALT
,
2760 .enable_reg
= 0x4008,
2761 .enable_mask
= BIT(0),
2762 .hw
.init
= &(const struct clk_init_data
) {
2763 .name
= "disp1_cc_mdss_rscc_vsync_clk",
2764 .parent_hws
= (const struct clk_hw
*[]){
2765 &disp1_cc_mdss_vsync_clk_src
.clkr
.hw
,
2768 .flags
= CLK_SET_RATE_PARENT
,
2769 .ops
= &clk_branch2_ops
,
2774 static struct clk_branch disp0_cc_mdss_vsync1_clk
= {
2776 .halt_check
= BRANCH_HALT
,
2778 .enable_reg
= 0x2040,
2779 .enable_mask
= BIT(0),
2780 .hw
.init
= &(const struct clk_init_data
) {
2781 .name
= "disp0_cc_mdss_vsync1_clk",
2782 .parent_hws
= (const struct clk_hw
*[]){
2783 &disp0_cc_mdss_vsync_clk_src
.clkr
.hw
,
2786 .flags
= CLK_SET_RATE_PARENT
,
2787 .ops
= &clk_branch2_ops
,
2792 static struct clk_branch disp1_cc_mdss_vsync1_clk
= {
2794 .halt_check
= BRANCH_HALT
,
2796 .enable_reg
= 0x2040,
2797 .enable_mask
= BIT(0),
2798 .hw
.init
= &(const struct clk_init_data
) {
2799 .name
= "disp1_cc_mdss_vsync1_clk",
2800 .parent_hws
= (const struct clk_hw
*[]){
2801 &disp1_cc_mdss_vsync_clk_src
.clkr
.hw
,
2804 .flags
= CLK_SET_RATE_PARENT
,
2805 .ops
= &clk_branch2_ops
,
2810 static struct clk_branch disp0_cc_mdss_vsync_clk
= {
2812 .halt_check
= BRANCH_HALT
,
2814 .enable_reg
= 0x203c,
2815 .enable_mask
= BIT(0),
2816 .hw
.init
= &(const struct clk_init_data
) {
2817 .name
= "disp0_cc_mdss_vsync_clk",
2818 .parent_hws
= (const struct clk_hw
*[]){
2819 &disp0_cc_mdss_vsync_clk_src
.clkr
.hw
,
2822 .flags
= CLK_SET_RATE_PARENT
,
2823 .ops
= &clk_branch2_ops
,
2828 static struct clk_branch disp1_cc_mdss_vsync_clk
= {
2830 .halt_check
= BRANCH_HALT
,
2832 .enable_reg
= 0x203c,
2833 .enable_mask
= BIT(0),
2834 .hw
.init
= &(const struct clk_init_data
) {
2835 .name
= "disp1_cc_mdss_vsync_clk",
2836 .parent_hws
= (const struct clk_hw
*[]){
2837 &disp1_cc_mdss_vsync_clk_src
.clkr
.hw
,
2840 .flags
= CLK_SET_RATE_PARENT
,
2841 .ops
= &clk_branch2_ops
,
2846 static struct clk_branch disp0_cc_sleep_clk
= {
2848 .halt_check
= BRANCH_HALT
,
2850 .enable_reg
= 0x6078,
2851 .enable_mask
= BIT(0),
2852 .hw
.init
= &(const struct clk_init_data
) {
2853 .name
= "disp0_cc_sleep_clk",
2854 .parent_hws
= (const struct clk_hw
*[]){
2855 &disp0_cc_sleep_clk_src
.clkr
.hw
,
2858 .flags
= CLK_SET_RATE_PARENT
,
2859 .ops
= &clk_branch2_ops
,
2864 static struct clk_branch disp1_cc_sleep_clk
= {
2866 .halt_check
= BRANCH_HALT
,
2868 .enable_reg
= 0x6078,
2869 .enable_mask
= BIT(0),
2870 .hw
.init
= &(const struct clk_init_data
) {
2871 .name
= "disp1_cc_sleep_clk",
2872 .parent_hws
= (const struct clk_hw
*[]){
2873 &disp1_cc_sleep_clk_src
.clkr
.hw
,
2876 .flags
= CLK_SET_RATE_PARENT
,
2877 .ops
= &clk_branch2_ops
,
2882 static struct clk_regmap
*disp0_cc_sc8280xp_clocks
[] = {
2883 [DISP_CC_MDSS_AHB1_CLK
] = &disp0_cc_mdss_ahb1_clk
.clkr
,
2884 [DISP_CC_MDSS_AHB_CLK
] = &disp0_cc_mdss_ahb_clk
.clkr
,
2885 [DISP_CC_MDSS_AHB_CLK_SRC
] = &disp0_cc_mdss_ahb_clk_src
.clkr
,
2886 [DISP_CC_MDSS_BYTE0_CLK
] = &disp0_cc_mdss_byte0_clk
.clkr
,
2887 [DISP_CC_MDSS_BYTE0_CLK_SRC
] = &disp0_cc_mdss_byte0_clk_src
.clkr
,
2888 [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC
] = &disp0_cc_mdss_byte0_div_clk_src
.clkr
,
2889 [DISP_CC_MDSS_BYTE0_INTF_CLK
] = &disp0_cc_mdss_byte0_intf_clk
.clkr
,
2890 [DISP_CC_MDSS_BYTE1_CLK
] = &disp0_cc_mdss_byte1_clk
.clkr
,
2891 [DISP_CC_MDSS_BYTE1_CLK_SRC
] = &disp0_cc_mdss_byte1_clk_src
.clkr
,
2892 [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC
] = &disp0_cc_mdss_byte1_div_clk_src
.clkr
,
2893 [DISP_CC_MDSS_BYTE1_INTF_CLK
] = &disp0_cc_mdss_byte1_intf_clk
.clkr
,
2894 [DISP_CC_MDSS_DPTX0_AUX_CLK
] = &disp0_cc_mdss_dptx0_aux_clk
.clkr
,
2895 [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC
] = &disp0_cc_mdss_dptx0_aux_clk_src
.clkr
,
2896 [DISP_CC_MDSS_DPTX0_LINK_CLK
] = &disp0_cc_mdss_dptx0_link_clk
.clkr
,
2897 [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC
] = &disp0_cc_mdss_dptx0_link_clk_src
.clkr
,
2898 [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC
] = &disp0_cc_mdss_dptx0_link_div_clk_src
.clkr
,
2899 [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx0_link_intf_clk
.clkr
,
2900 [DISP_CC_MDSS_DPTX0_PIXEL0_CLK
] = &disp0_cc_mdss_dptx0_pixel0_clk
.clkr
,
2901 [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC
] = &disp0_cc_mdss_dptx0_pixel0_clk_src
.clkr
,
2902 [DISP_CC_MDSS_DPTX0_PIXEL1_CLK
] = &disp0_cc_mdss_dptx0_pixel1_clk
.clkr
,
2903 [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC
] = &disp0_cc_mdss_dptx0_pixel1_clk_src
.clkr
,
2904 [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx0_usb_router_link_intf_clk
.clkr
,
2905 [DISP_CC_MDSS_DPTX1_AUX_CLK
] = &disp0_cc_mdss_dptx1_aux_clk
.clkr
,
2906 [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC
] = &disp0_cc_mdss_dptx1_aux_clk_src
.clkr
,
2907 [DISP_CC_MDSS_DPTX1_LINK_CLK
] = &disp0_cc_mdss_dptx1_link_clk
.clkr
,
2908 [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC
] = &disp0_cc_mdss_dptx1_link_clk_src
.clkr
,
2909 [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC
] = &disp0_cc_mdss_dptx1_link_div_clk_src
.clkr
,
2910 [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx1_link_intf_clk
.clkr
,
2911 [DISP_CC_MDSS_DPTX1_PIXEL0_CLK
] = &disp0_cc_mdss_dptx1_pixel0_clk
.clkr
,
2912 [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC
] = &disp0_cc_mdss_dptx1_pixel0_clk_src
.clkr
,
2913 [DISP_CC_MDSS_DPTX1_PIXEL1_CLK
] = &disp0_cc_mdss_dptx1_pixel1_clk
.clkr
,
2914 [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC
] = &disp0_cc_mdss_dptx1_pixel1_clk_src
.clkr
,
2915 [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx1_usb_router_link_intf_clk
.clkr
,
2916 [DISP_CC_MDSS_DPTX2_AUX_CLK
] = &disp0_cc_mdss_dptx2_aux_clk
.clkr
,
2917 [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC
] = &disp0_cc_mdss_dptx2_aux_clk_src
.clkr
,
2918 [DISP_CC_MDSS_DPTX2_LINK_CLK
] = &disp0_cc_mdss_dptx2_link_clk
.clkr
,
2919 [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC
] = &disp0_cc_mdss_dptx2_link_clk_src
.clkr
,
2920 [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC
] = &disp0_cc_mdss_dptx2_link_div_clk_src
.clkr
,
2921 [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx2_link_intf_clk
.clkr
,
2922 [DISP_CC_MDSS_DPTX2_PIXEL0_CLK
] = &disp0_cc_mdss_dptx2_pixel0_clk
.clkr
,
2923 [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC
] = &disp0_cc_mdss_dptx2_pixel0_clk_src
.clkr
,
2924 [DISP_CC_MDSS_DPTX2_PIXEL1_CLK
] = &disp0_cc_mdss_dptx2_pixel1_clk
.clkr
,
2925 [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC
] = &disp0_cc_mdss_dptx2_pixel1_clk_src
.clkr
,
2926 [DISP_CC_MDSS_DPTX3_AUX_CLK
] = &disp0_cc_mdss_dptx3_aux_clk
.clkr
,
2927 [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC
] = &disp0_cc_mdss_dptx3_aux_clk_src
.clkr
,
2928 [DISP_CC_MDSS_DPTX3_LINK_CLK
] = &disp0_cc_mdss_dptx3_link_clk
.clkr
,
2929 [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC
] = &disp0_cc_mdss_dptx3_link_clk_src
.clkr
,
2930 [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC
] = &disp0_cc_mdss_dptx3_link_div_clk_src
.clkr
,
2931 [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK
] = &disp0_cc_mdss_dptx3_link_intf_clk
.clkr
,
2932 [DISP_CC_MDSS_DPTX3_PIXEL0_CLK
] = &disp0_cc_mdss_dptx3_pixel0_clk
.clkr
,
2933 [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC
] = &disp0_cc_mdss_dptx3_pixel0_clk_src
.clkr
,
2934 [DISP_CC_MDSS_ESC0_CLK
] = &disp0_cc_mdss_esc0_clk
.clkr
,
2935 [DISP_CC_MDSS_ESC0_CLK_SRC
] = &disp0_cc_mdss_esc0_clk_src
.clkr
,
2936 [DISP_CC_MDSS_ESC1_CLK
] = &disp0_cc_mdss_esc1_clk
.clkr
,
2937 [DISP_CC_MDSS_ESC1_CLK_SRC
] = &disp0_cc_mdss_esc1_clk_src
.clkr
,
2938 [DISP_CC_MDSS_MDP1_CLK
] = &disp0_cc_mdss_mdp1_clk
.clkr
,
2939 [DISP_CC_MDSS_MDP_CLK
] = &disp0_cc_mdss_mdp_clk
.clkr
,
2940 [DISP_CC_MDSS_MDP_CLK_SRC
] = &disp0_cc_mdss_mdp_clk_src
.clkr
,
2941 [DISP_CC_MDSS_MDP_LUT1_CLK
] = &disp0_cc_mdss_mdp_lut1_clk
.clkr
,
2942 [DISP_CC_MDSS_MDP_LUT_CLK
] = &disp0_cc_mdss_mdp_lut_clk
.clkr
,
2943 [DISP_CC_MDSS_NON_GDSC_AHB_CLK
] = &disp0_cc_mdss_non_gdsc_ahb_clk
.clkr
,
2944 [DISP_CC_MDSS_PCLK0_CLK
] = &disp0_cc_mdss_pclk0_clk
.clkr
,
2945 [DISP_CC_MDSS_PCLK0_CLK_SRC
] = &disp0_cc_mdss_pclk0_clk_src
.clkr
,
2946 [DISP_CC_MDSS_PCLK1_CLK
] = &disp0_cc_mdss_pclk1_clk
.clkr
,
2947 [DISP_CC_MDSS_PCLK1_CLK_SRC
] = &disp0_cc_mdss_pclk1_clk_src
.clkr
,
2948 [DISP_CC_MDSS_ROT1_CLK
] = &disp0_cc_mdss_rot1_clk
.clkr
,
2949 [DISP_CC_MDSS_ROT_CLK
] = &disp0_cc_mdss_rot_clk
.clkr
,
2950 [DISP_CC_MDSS_ROT_CLK_SRC
] = &disp0_cc_mdss_rot_clk_src
.clkr
,
2951 [DISP_CC_MDSS_RSCC_AHB_CLK
] = &disp0_cc_mdss_rscc_ahb_clk
.clkr
,
2952 [DISP_CC_MDSS_RSCC_VSYNC_CLK
] = &disp0_cc_mdss_rscc_vsync_clk
.clkr
,
2953 [DISP_CC_MDSS_VSYNC1_CLK
] = &disp0_cc_mdss_vsync1_clk
.clkr
,
2954 [DISP_CC_MDSS_VSYNC_CLK
] = &disp0_cc_mdss_vsync_clk
.clkr
,
2955 [DISP_CC_MDSS_VSYNC_CLK_SRC
] = &disp0_cc_mdss_vsync_clk_src
.clkr
,
2956 [DISP_CC_PLL0
] = &disp0_cc_pll0
.clkr
,
2957 [DISP_CC_PLL1
] = &disp0_cc_pll1
.clkr
,
2958 [DISP_CC_PLL1_OUT_EVEN
] = &disp0_cc_pll1_out_even
.clkr
,
2959 [DISP_CC_PLL2
] = &disp0_cc_pll2
.clkr
,
2960 [DISP_CC_SLEEP_CLK
] = &disp0_cc_sleep_clk
.clkr
,
2961 [DISP_CC_SLEEP_CLK_SRC
] = &disp0_cc_sleep_clk_src
.clkr
,
2964 static struct clk_regmap
*disp1_cc_sc8280xp_clocks
[] = {
2965 [DISP_CC_MDSS_AHB1_CLK
] = &disp1_cc_mdss_ahb1_clk
.clkr
,
2966 [DISP_CC_MDSS_AHB_CLK
] = &disp1_cc_mdss_ahb_clk
.clkr
,
2967 [DISP_CC_MDSS_AHB_CLK_SRC
] = &disp1_cc_mdss_ahb_clk_src
.clkr
,
2968 [DISP_CC_MDSS_BYTE0_CLK
] = &disp1_cc_mdss_byte0_clk
.clkr
,
2969 [DISP_CC_MDSS_BYTE0_CLK_SRC
] = &disp1_cc_mdss_byte0_clk_src
.clkr
,
2970 [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC
] = &disp1_cc_mdss_byte0_div_clk_src
.clkr
,
2971 [DISP_CC_MDSS_BYTE0_INTF_CLK
] = &disp1_cc_mdss_byte0_intf_clk
.clkr
,
2972 [DISP_CC_MDSS_BYTE1_CLK
] = &disp1_cc_mdss_byte1_clk
.clkr
,
2973 [DISP_CC_MDSS_BYTE1_CLK_SRC
] = &disp1_cc_mdss_byte1_clk_src
.clkr
,
2974 [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC
] = &disp1_cc_mdss_byte1_div_clk_src
.clkr
,
2975 [DISP_CC_MDSS_BYTE1_INTF_CLK
] = &disp1_cc_mdss_byte1_intf_clk
.clkr
,
2976 [DISP_CC_MDSS_DPTX0_AUX_CLK
] = &disp1_cc_mdss_dptx0_aux_clk
.clkr
,
2977 [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC
] = &disp1_cc_mdss_dptx0_aux_clk_src
.clkr
,
2978 [DISP_CC_MDSS_DPTX0_LINK_CLK
] = &disp1_cc_mdss_dptx0_link_clk
.clkr
,
2979 [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC
] = &disp1_cc_mdss_dptx0_link_clk_src
.clkr
,
2980 [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC
] = &disp1_cc_mdss_dptx0_link_div_clk_src
.clkr
,
2981 [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx0_link_intf_clk
.clkr
,
2982 [DISP_CC_MDSS_DPTX0_PIXEL0_CLK
] = &disp1_cc_mdss_dptx0_pixel0_clk
.clkr
,
2983 [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC
] = &disp1_cc_mdss_dptx0_pixel0_clk_src
.clkr
,
2984 [DISP_CC_MDSS_DPTX0_PIXEL1_CLK
] = &disp1_cc_mdss_dptx0_pixel1_clk
.clkr
,
2985 [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC
] = &disp1_cc_mdss_dptx0_pixel1_clk_src
.clkr
,
2986 [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx0_usb_router_link_intf_clk
.clkr
,
2987 [DISP_CC_MDSS_DPTX1_AUX_CLK
] = &disp1_cc_mdss_dptx1_aux_clk
.clkr
,
2988 [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC
] = &disp1_cc_mdss_dptx1_aux_clk_src
.clkr
,
2989 [DISP_CC_MDSS_DPTX1_LINK_CLK
] = &disp1_cc_mdss_dptx1_link_clk
.clkr
,
2990 [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC
] = &disp1_cc_mdss_dptx1_link_clk_src
.clkr
,
2991 [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC
] = &disp1_cc_mdss_dptx1_link_div_clk_src
.clkr
,
2992 [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx1_link_intf_clk
.clkr
,
2993 [DISP_CC_MDSS_DPTX1_PIXEL0_CLK
] = &disp1_cc_mdss_dptx1_pixel0_clk
.clkr
,
2994 [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC
] = &disp1_cc_mdss_dptx1_pixel0_clk_src
.clkr
,
2995 [DISP_CC_MDSS_DPTX1_PIXEL1_CLK
] = &disp1_cc_mdss_dptx1_pixel1_clk
.clkr
,
2996 [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC
] = &disp1_cc_mdss_dptx1_pixel1_clk_src
.clkr
,
2997 [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx1_usb_router_link_intf_clk
.clkr
,
2998 [DISP_CC_MDSS_DPTX2_AUX_CLK
] = &disp1_cc_mdss_dptx2_aux_clk
.clkr
,
2999 [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC
] = &disp1_cc_mdss_dptx2_aux_clk_src
.clkr
,
3000 [DISP_CC_MDSS_DPTX2_LINK_CLK
] = &disp1_cc_mdss_dptx2_link_clk
.clkr
,
3001 [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC
] = &disp1_cc_mdss_dptx2_link_clk_src
.clkr
,
3002 [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC
] = &disp1_cc_mdss_dptx2_link_div_clk_src
.clkr
,
3003 [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx2_link_intf_clk
.clkr
,
3004 [DISP_CC_MDSS_DPTX2_PIXEL0_CLK
] = &disp1_cc_mdss_dptx2_pixel0_clk
.clkr
,
3005 [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC
] = &disp1_cc_mdss_dptx2_pixel0_clk_src
.clkr
,
3006 [DISP_CC_MDSS_DPTX2_PIXEL1_CLK
] = &disp1_cc_mdss_dptx2_pixel1_clk
.clkr
,
3007 [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC
] = &disp1_cc_mdss_dptx2_pixel1_clk_src
.clkr
,
3008 [DISP_CC_MDSS_DPTX3_AUX_CLK
] = &disp1_cc_mdss_dptx3_aux_clk
.clkr
,
3009 [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC
] = &disp1_cc_mdss_dptx3_aux_clk_src
.clkr
,
3010 [DISP_CC_MDSS_DPTX3_LINK_CLK
] = &disp1_cc_mdss_dptx3_link_clk
.clkr
,
3011 [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC
] = &disp1_cc_mdss_dptx3_link_clk_src
.clkr
,
3012 [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC
] = &disp1_cc_mdss_dptx3_link_div_clk_src
.clkr
,
3013 [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK
] = &disp1_cc_mdss_dptx3_link_intf_clk
.clkr
,
3014 [DISP_CC_MDSS_DPTX3_PIXEL0_CLK
] = &disp1_cc_mdss_dptx3_pixel0_clk
.clkr
,
3015 [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC
] = &disp1_cc_mdss_dptx3_pixel0_clk_src
.clkr
,
3016 [DISP_CC_MDSS_ESC0_CLK
] = &disp1_cc_mdss_esc0_clk
.clkr
,
3017 [DISP_CC_MDSS_ESC0_CLK_SRC
] = &disp1_cc_mdss_esc0_clk_src
.clkr
,
3018 [DISP_CC_MDSS_ESC1_CLK
] = &disp1_cc_mdss_esc1_clk
.clkr
,
3019 [DISP_CC_MDSS_ESC1_CLK_SRC
] = &disp1_cc_mdss_esc1_clk_src
.clkr
,
3020 [DISP_CC_MDSS_MDP1_CLK
] = &disp1_cc_mdss_mdp1_clk
.clkr
,
3021 [DISP_CC_MDSS_MDP_CLK
] = &disp1_cc_mdss_mdp_clk
.clkr
,
3022 [DISP_CC_MDSS_MDP_CLK_SRC
] = &disp1_cc_mdss_mdp_clk_src
.clkr
,
3023 [DISP_CC_MDSS_MDP_LUT1_CLK
] = &disp1_cc_mdss_mdp_lut1_clk
.clkr
,
3024 [DISP_CC_MDSS_MDP_LUT_CLK
] = &disp1_cc_mdss_mdp_lut_clk
.clkr
,
3025 [DISP_CC_MDSS_NON_GDSC_AHB_CLK
] = &disp1_cc_mdss_non_gdsc_ahb_clk
.clkr
,
3026 [DISP_CC_MDSS_PCLK0_CLK
] = &disp1_cc_mdss_pclk0_clk
.clkr
,
3027 [DISP_CC_MDSS_PCLK0_CLK_SRC
] = &disp1_cc_mdss_pclk0_clk_src
.clkr
,
3028 [DISP_CC_MDSS_PCLK1_CLK
] = &disp1_cc_mdss_pclk1_clk
.clkr
,
3029 [DISP_CC_MDSS_PCLK1_CLK_SRC
] = &disp1_cc_mdss_pclk1_clk_src
.clkr
,
3030 [DISP_CC_MDSS_ROT1_CLK
] = &disp1_cc_mdss_rot1_clk
.clkr
,
3031 [DISP_CC_MDSS_ROT_CLK
] = &disp1_cc_mdss_rot_clk
.clkr
,
3032 [DISP_CC_MDSS_ROT_CLK_SRC
] = &disp1_cc_mdss_rot_clk_src
.clkr
,
3033 [DISP_CC_MDSS_RSCC_AHB_CLK
] = &disp1_cc_mdss_rscc_ahb_clk
.clkr
,
3034 [DISP_CC_MDSS_RSCC_VSYNC_CLK
] = &disp1_cc_mdss_rscc_vsync_clk
.clkr
,
3035 [DISP_CC_MDSS_VSYNC1_CLK
] = &disp1_cc_mdss_vsync1_clk
.clkr
,
3036 [DISP_CC_MDSS_VSYNC_CLK
] = &disp1_cc_mdss_vsync_clk
.clkr
,
3037 [DISP_CC_MDSS_VSYNC_CLK_SRC
] = &disp1_cc_mdss_vsync_clk_src
.clkr
,
3038 [DISP_CC_PLL0
] = &disp1_cc_pll0
.clkr
,
3039 [DISP_CC_PLL1
] = &disp1_cc_pll1
.clkr
,
3040 [DISP_CC_PLL1_OUT_EVEN
] = &disp1_cc_pll1_out_even
.clkr
,
3041 [DISP_CC_PLL2
] = &disp1_cc_pll2
.clkr
,
3042 [DISP_CC_SLEEP_CLK
] = &disp1_cc_sleep_clk
.clkr
,
3043 [DISP_CC_SLEEP_CLK_SRC
] = &disp1_cc_sleep_clk_src
.clkr
,
3046 static const struct qcom_reset_map disp_cc_sc8280xp_resets
[] = {
3047 [DISP_CC_MDSS_CORE_BCR
] = { 0x2000 },
3048 [DISP_CC_MDSS_RSCC_BCR
] = { 0x4000 },
3051 static struct gdsc disp0_mdss_gdsc
= {
3053 .en_rest_wait_val
= 0x2,
3054 .en_few_wait_val
= 0x2,
3055 .clk_dis_wait_val
= 0xf,
3057 .name
= "disp0_mdss_gdsc",
3059 .pwrsts
= PWRSTS_OFF_ON
,
3060 .flags
= HW_CTRL
| RETAIN_FF_ENABLE
,
3063 static struct gdsc disp1_mdss_gdsc
= {
3065 .en_rest_wait_val
= 0x2,
3066 .en_few_wait_val
= 0x2,
3067 .clk_dis_wait_val
= 0xf,
3069 .name
= "disp1_mdss_gdsc",
3071 .pwrsts
= PWRSTS_OFF_ON
,
3072 .flags
= HW_CTRL
| RETAIN_FF_ENABLE
,
3075 static struct gdsc disp0_mdss_int2_gdsc
= {
3077 .en_rest_wait_val
= 0x2,
3078 .en_few_wait_val
= 0x2,
3079 .clk_dis_wait_val
= 0xf,
3081 .name
= "disp0_mdss_int2_gdsc",
3083 .pwrsts
= PWRSTS_OFF_ON
,
3084 .flags
= HW_CTRL
| RETAIN_FF_ENABLE
,
3087 static struct gdsc disp1_mdss_int2_gdsc
= {
3089 .en_rest_wait_val
= 0x2,
3090 .en_few_wait_val
= 0x2,
3091 .clk_dis_wait_val
= 0xf,
3093 .name
= "disp1_mdss_int2_gdsc",
3095 .pwrsts
= PWRSTS_OFF_ON
,
3096 .flags
= HW_CTRL
| RETAIN_FF_ENABLE
,
3099 static struct gdsc
*disp0_cc_sc8280xp_gdscs
[] = {
3100 [MDSS_GDSC
] = &disp0_mdss_gdsc
,
3101 [MDSS_INT2_GDSC
] = &disp0_mdss_int2_gdsc
,
3104 static struct gdsc
*disp1_cc_sc8280xp_gdscs
[] = {
3105 [MDSS_GDSC
] = &disp1_mdss_gdsc
,
3106 [MDSS_INT2_GDSC
] = &disp1_mdss_int2_gdsc
,
3109 static const struct regmap_config disp_cc_sc8280xp_regmap_config
= {
3113 .max_register
= 0x10000,
3117 static struct qcom_cc_desc disp0_cc_sc8280xp_desc
= {
3118 .config
= &disp_cc_sc8280xp_regmap_config
,
3119 .clks
= disp0_cc_sc8280xp_clocks
,
3120 .num_clks
= ARRAY_SIZE(disp0_cc_sc8280xp_clocks
),
3121 .resets
= disp_cc_sc8280xp_resets
,
3122 .num_resets
= ARRAY_SIZE(disp_cc_sc8280xp_resets
),
3123 .gdscs
= disp0_cc_sc8280xp_gdscs
,
3124 .num_gdscs
= ARRAY_SIZE(disp0_cc_sc8280xp_gdscs
),
3127 static struct qcom_cc_desc disp1_cc_sc8280xp_desc
= {
3128 .config
= &disp_cc_sc8280xp_regmap_config
,
3129 .clks
= disp1_cc_sc8280xp_clocks
,
3130 .num_clks
= ARRAY_SIZE(disp1_cc_sc8280xp_clocks
),
3131 .resets
= disp_cc_sc8280xp_resets
,
3132 .num_resets
= ARRAY_SIZE(disp_cc_sc8280xp_resets
),
3133 .gdscs
= disp1_cc_sc8280xp_gdscs
,
3134 .num_gdscs
= ARRAY_SIZE(disp1_cc_sc8280xp_gdscs
),
3137 #define clkr_to_alpha_clk_pll(_clkr) container_of(_clkr, struct clk_alpha_pll, clkr)
3139 static int disp_cc_sc8280xp_probe(struct platform_device
*pdev
)
3141 const struct qcom_cc_desc
*desc
;
3142 struct regmap
*regmap
;
3145 desc
= device_get_match_data(&pdev
->dev
);
3147 ret
= devm_pm_runtime_enable(&pdev
->dev
);
3151 ret
= devm_pm_clk_create(&pdev
->dev
);
3155 ret
= pm_clk_add(&pdev
->dev
, NULL
);
3157 dev_err(&pdev
->dev
, "failed to acquire ahb clock\n");
3161 ret
= pm_runtime_resume_and_get(&pdev
->dev
);
3165 regmap
= qcom_cc_map(pdev
, desc
);
3166 if (IS_ERR(regmap
)) {
3167 ret
= PTR_ERR(regmap
);
3168 goto out_pm_runtime_put
;
3171 clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc
->clks
[DISP_CC_PLL0
]), regmap
, &disp_cc_pll0_config
);
3172 clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc
->clks
[DISP_CC_PLL1
]), regmap
, &disp_cc_pll1_config
);
3173 clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc
->clks
[DISP_CC_PLL2
]), regmap
, &disp_cc_pll2_config
);
3175 ret
= qcom_cc_really_probe(&pdev
->dev
, desc
, regmap
);
3177 dev_err(&pdev
->dev
, "Failed to register display clock controller\n");
3178 goto out_pm_runtime_put
;
3181 /* Keep some clocks always-on */
3182 qcom_branch_set_clk_en(regmap
, 0x605c); /* DISP_CC_XO_CLK */
3185 pm_runtime_put_sync(&pdev
->dev
);
3190 static const struct of_device_id disp_cc_sc8280xp_match_table
[] = {
3191 { .compatible
= "qcom,sc8280xp-dispcc0", .data
= &disp0_cc_sc8280xp_desc
},
3192 { .compatible
= "qcom,sc8280xp-dispcc1", .data
= &disp1_cc_sc8280xp_desc
},
3195 MODULE_DEVICE_TABLE(of
, disp_cc_sc8280xp_match_table
);
3197 static struct platform_driver disp_cc_sc8280xp_driver
= {
3198 .probe
= disp_cc_sc8280xp_probe
,
3200 .name
= "disp_cc-sc8280xp",
3201 .of_match_table
= disp_cc_sc8280xp_match_table
,
3205 module_platform_driver(disp_cc_sc8280xp_driver
);
3207 MODULE_DESCRIPTION("Qualcomm SC8280XP dispcc driver");
3208 MODULE_LICENSE("GPL");