14a66e76fSBjorn Andersson // SPDX-License-Identifier: GPL-2.0-only
24a66e76fSBjorn Andersson /*
34a66e76fSBjorn Andersson  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
44a66e76fSBjorn Andersson  * Copyright (c) 2022, Linaro Ltd.
54a66e76fSBjorn Andersson  */
64a66e76fSBjorn Andersson 
74a66e76fSBjorn Andersson #include <linux/clk-provider.h>
84a66e76fSBjorn Andersson #include <linux/module.h>
94a66e76fSBjorn Andersson #include <linux/platform_device.h>
104a66e76fSBjorn Andersson #include <linux/property.h>
114a66e76fSBjorn Andersson #include <linux/pm_clock.h>
124a66e76fSBjorn Andersson #include <linux/pm_runtime.h>
134a66e76fSBjorn Andersson #include <linux/regmap.h>
144a66e76fSBjorn Andersson #include <linux/reset-controller.h>
154a66e76fSBjorn Andersson 
164a66e76fSBjorn Andersson #include <dt-bindings/clock/qcom,dispcc-sc8280xp.h>
174a66e76fSBjorn Andersson 
184a66e76fSBjorn Andersson #include "clk-alpha-pll.h"
194a66e76fSBjorn Andersson #include "clk-branch.h"
204a66e76fSBjorn Andersson #include "clk-rcg.h"
214a66e76fSBjorn Andersson #include "clk-regmap-divider.h"
224a66e76fSBjorn Andersson #include "common.h"
234a66e76fSBjorn Andersson #include "gdsc.h"
244a66e76fSBjorn Andersson #include "reset.h"
254a66e76fSBjorn Andersson 
264a66e76fSBjorn Andersson /* Need to match the order of clocks in DT binding */
274a66e76fSBjorn Andersson enum {
284a66e76fSBjorn Andersson 	DT_IFACE,
294a66e76fSBjorn Andersson 	DT_BI_TCXO,
304a66e76fSBjorn Andersson 	DT_SLEEP_CLK,
314a66e76fSBjorn Andersson 	DT_DP0_PHY_PLL_LINK_CLK,
324a66e76fSBjorn Andersson 	DT_DP0_PHY_PLL_VCO_DIV_CLK,
334a66e76fSBjorn Andersson 	DT_DP1_PHY_PLL_LINK_CLK,
344a66e76fSBjorn Andersson 	DT_DP1_PHY_PLL_VCO_DIV_CLK,
354a66e76fSBjorn Andersson 	DT_DP2_PHY_PLL_LINK_CLK,
364a66e76fSBjorn Andersson 	DT_DP2_PHY_PLL_VCO_DIV_CLK,
374a66e76fSBjorn Andersson 	DT_DP3_PHY_PLL_LINK_CLK,
384a66e76fSBjorn Andersson 	DT_DP3_PHY_PLL_VCO_DIV_CLK,
394a66e76fSBjorn Andersson 	DT_DSI0_PHY_PLL_OUT_BYTECLK,
404a66e76fSBjorn Andersson 	DT_DSI0_PHY_PLL_OUT_DSICLK,
414a66e76fSBjorn Andersson 	DT_DSI1_PHY_PLL_OUT_BYTECLK,
424a66e76fSBjorn Andersson 	DT_DSI1_PHY_PLL_OUT_DSICLK,
434a66e76fSBjorn Andersson };
444a66e76fSBjorn Andersson 
454a66e76fSBjorn Andersson enum {
464a66e76fSBjorn Andersson 	P_BI_TCXO,
474a66e76fSBjorn Andersson 	P_DP0_PHY_PLL_LINK_CLK,
484a66e76fSBjorn Andersson 	P_DP0_PHY_PLL_VCO_DIV_CLK,
494a66e76fSBjorn Andersson 	P_DP1_PHY_PLL_LINK_CLK,
504a66e76fSBjorn Andersson 	P_DP1_PHY_PLL_VCO_DIV_CLK,
514a66e76fSBjorn Andersson 	P_DP2_PHY_PLL_LINK_CLK,
524a66e76fSBjorn Andersson 	P_DP2_PHY_PLL_VCO_DIV_CLK,
534a66e76fSBjorn Andersson 	P_DP3_PHY_PLL_LINK_CLK,
544a66e76fSBjorn Andersson 	P_DP3_PHY_PLL_VCO_DIV_CLK,
554a66e76fSBjorn Andersson 	P_DSI0_PHY_PLL_OUT_BYTECLK,
564a66e76fSBjorn Andersson 	P_DSI0_PHY_PLL_OUT_DSICLK,
574a66e76fSBjorn Andersson 	P_DSI1_PHY_PLL_OUT_BYTECLK,
584a66e76fSBjorn Andersson 	P_DSI1_PHY_PLL_OUT_DSICLK,
594a66e76fSBjorn Andersson 	P_DISPn_CC_PLL0_OUT_MAIN,
604a66e76fSBjorn Andersson 	P_DISPn_CC_PLL1_OUT_EVEN,
614a66e76fSBjorn Andersson 	P_DISPn_CC_PLL1_OUT_MAIN,
624a66e76fSBjorn Andersson 	P_DISPn_CC_PLL2_OUT_MAIN,
634a66e76fSBjorn Andersson 	P_SLEEP_CLK,
644a66e76fSBjorn Andersson };
654a66e76fSBjorn Andersson 
664a66e76fSBjorn Andersson static const struct clk_parent_data parent_data_tcxo = { .index = DT_BI_TCXO };
674a66e76fSBjorn Andersson 
684a66e76fSBjorn Andersson static const struct pll_vco lucid_5lpe_vco[] = {
694a66e76fSBjorn Andersson 	{ 249600000, 1800000000, 0 },
704a66e76fSBjorn Andersson };
714a66e76fSBjorn Andersson 
724a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll0_config = {
734a66e76fSBjorn Andersson 	.l = 0x4e,
744a66e76fSBjorn Andersson 	.alpha = 0x2000,
754a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
764a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
774a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
784a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
794a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
804a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
814a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000000,
824a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
834a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
844a66e76fSBjorn Andersson };
854a66e76fSBjorn Andersson 
864a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll0 = {
874a66e76fSBjorn Andersson 	.offset = 0x0,
884a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
894a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
904a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
914a66e76fSBjorn Andersson 	.clkr = {
924a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
934a66e76fSBjorn Andersson 			.name = "disp0_cc_pll0",
944a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
954a66e76fSBjorn Andersson 			.num_parents = 1,
964a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
974a66e76fSBjorn Andersson 		},
984a66e76fSBjorn Andersson 	},
994a66e76fSBjorn Andersson };
1004a66e76fSBjorn Andersson 
1014a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll0 = {
1024a66e76fSBjorn Andersson 	.offset = 0x0,
1034a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
1044a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
1054a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
1064a66e76fSBjorn Andersson 	.clkr = {
1074a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1084a66e76fSBjorn Andersson 			.name = "disp1_cc_pll0",
1094a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
1104a66e76fSBjorn Andersson 			.num_parents = 1,
1114a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
1124a66e76fSBjorn Andersson 		},
1134a66e76fSBjorn Andersson 	},
1144a66e76fSBjorn Andersson };
1154a66e76fSBjorn Andersson 
1164a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll1_config = {
1174a66e76fSBjorn Andersson 	.l = 0x1f,
1184a66e76fSBjorn Andersson 	.alpha = 0x4000,
1194a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
1204a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
1214a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
1224a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
1234a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
1244a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
1254a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000100,
1264a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
1274a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
1284a66e76fSBjorn Andersson };
1294a66e76fSBjorn Andersson 
1304a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll1 = {
1314a66e76fSBjorn Andersson 	.offset = 0x1000,
1324a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
1334a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
1344a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
1354a66e76fSBjorn Andersson 	.clkr = {
1364a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1374a66e76fSBjorn Andersson 			.name = "disp0_cc_pll1",
1384a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
1394a66e76fSBjorn Andersson 			.num_parents = 1,
1404a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
1414a66e76fSBjorn Andersson 		},
1424a66e76fSBjorn Andersson 	},
1434a66e76fSBjorn Andersson };
1444a66e76fSBjorn Andersson 
1454a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll1 = {
1464a66e76fSBjorn Andersson 	.offset = 0x1000,
1474a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
1484a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
1494a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
1504a66e76fSBjorn Andersson 	.clkr = {
1514a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
1524a66e76fSBjorn Andersson 			.name = "disp1_cc_pll1",
1534a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
1544a66e76fSBjorn Andersson 			.num_parents = 1,
1554a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
1564a66e76fSBjorn Andersson 		},
1574a66e76fSBjorn Andersson 	},
1584a66e76fSBjorn Andersson };
1594a66e76fSBjorn Andersson 
1604a66e76fSBjorn Andersson static const struct clk_div_table post_div_table_disp_cc_pll1_out_even[] = {
1614a66e76fSBjorn Andersson 	{ 0x1, 2 },
1624a66e76fSBjorn Andersson 	{ }
1634a66e76fSBjorn Andersson };
1644a66e76fSBjorn Andersson 
1654a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp0_cc_pll1_out_even = {
1664a66e76fSBjorn Andersson 	.offset = 0x1000,
1674a66e76fSBjorn Andersson 	.post_div_shift = 8,
1684a66e76fSBjorn Andersson 	.post_div_table = post_div_table_disp_cc_pll1_out_even,
1694a66e76fSBjorn Andersson 	.num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even),
1704a66e76fSBjorn Andersson 	.width = 4,
1714a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
1724a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1734a66e76fSBjorn Andersson 		.name = "disp0_cc_pll1_out_even",
1744a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1754a66e76fSBjorn Andersson 			&disp0_cc_pll1.clkr.hw,
1764a66e76fSBjorn Andersson 		},
1774a66e76fSBjorn Andersson 		.num_parents = 1,
1784a66e76fSBjorn Andersson 		.ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
1794a66e76fSBjorn Andersson 	},
1804a66e76fSBjorn Andersson };
1814a66e76fSBjorn Andersson 
1824a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp1_cc_pll1_out_even = {
1834a66e76fSBjorn Andersson 	.offset = 0x1000,
1844a66e76fSBjorn Andersson 	.post_div_shift = 8,
1854a66e76fSBjorn Andersson 	.post_div_table = post_div_table_disp_cc_pll1_out_even,
1864a66e76fSBjorn Andersson 	.num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even),
1874a66e76fSBjorn Andersson 	.width = 4,
1884a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
1894a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
1904a66e76fSBjorn Andersson 		.name = "disp1_cc_pll1_out_even",
1914a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
1924a66e76fSBjorn Andersson 			&disp1_cc_pll1.clkr.hw,
1934a66e76fSBjorn Andersson 		},
1944a66e76fSBjorn Andersson 		.num_parents = 1,
1954a66e76fSBjorn Andersson 		.ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
1964a66e76fSBjorn Andersson 	},
1974a66e76fSBjorn Andersson };
1984a66e76fSBjorn Andersson 
1994a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll2_config = {
2004a66e76fSBjorn Andersson 	.l = 0x46,
2014a66e76fSBjorn Andersson 	.alpha = 0x5000,
2024a66e76fSBjorn Andersson 	.config_ctl_val = 0x20485699,
2034a66e76fSBjorn Andersson 	.config_ctl_hi_val = 0x00002261,
2044a66e76fSBjorn Andersson 	.config_ctl_hi1_val = 0x2a9a699c,
2054a66e76fSBjorn Andersson 	.test_ctl_val = 0x00000000,
2064a66e76fSBjorn Andersson 	.test_ctl_hi_val = 0x00000000,
2074a66e76fSBjorn Andersson 	.test_ctl_hi1_val = 0x01800000,
2084a66e76fSBjorn Andersson 	.user_ctl_val = 0x00000000,
2094a66e76fSBjorn Andersson 	.user_ctl_hi_val = 0x00000805,
2104a66e76fSBjorn Andersson 	.user_ctl_hi1_val = 0x00000000,
2114a66e76fSBjorn Andersson };
2124a66e76fSBjorn Andersson 
2134a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll2 = {
2144a66e76fSBjorn Andersson 	.offset = 0x9000,
2154a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
2164a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
2174a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
2184a66e76fSBjorn Andersson 	.clkr = {
2194a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2204a66e76fSBjorn Andersson 			.name = "disp0_cc_pll2",
2214a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
2224a66e76fSBjorn Andersson 			.num_parents = 1,
2234a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
2244a66e76fSBjorn Andersson 		},
2254a66e76fSBjorn Andersson 	},
2264a66e76fSBjorn Andersson };
2274a66e76fSBjorn Andersson 
2284a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll2 = {
2294a66e76fSBjorn Andersson 	.offset = 0x9000,
2304a66e76fSBjorn Andersson 	.vco_table = lucid_5lpe_vco,
2314a66e76fSBjorn Andersson 	.num_vco = ARRAY_SIZE(lucid_5lpe_vco),
2324a66e76fSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
2334a66e76fSBjorn Andersson 	.clkr = {
2344a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
2354a66e76fSBjorn Andersson 			.name = "disp1_cc_pll2",
2364a66e76fSBjorn Andersson 			.parent_data = &parent_data_tcxo,
2374a66e76fSBjorn Andersson 			.num_parents = 1,
2384a66e76fSBjorn Andersson 			.ops = &clk_alpha_pll_lucid_5lpe_ops,
2394a66e76fSBjorn Andersson 		},
2404a66e76fSBjorn Andersson 	},
2414a66e76fSBjorn Andersson };
2424a66e76fSBjorn Andersson 
2434a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_0[] = {
2444a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
2454a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
2464a66e76fSBjorn Andersson 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
2474a66e76fSBjorn Andersson 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
2484a66e76fSBjorn Andersson 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
2494a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
2504a66e76fSBjorn Andersson };
2514a66e76fSBjorn Andersson 
2524a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_0[] = {
2534a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
2544a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
2554a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
2564a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
2574a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
2584a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
2594a66e76fSBjorn Andersson };
2604a66e76fSBjorn Andersson 
2614a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_0[] = {
2624a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
2634a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
2644a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
2654a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
2664a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
2674a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
2684a66e76fSBjorn Andersson };
2694a66e76fSBjorn Andersson 
2704a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_1[] = {
2714a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
2724a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
2734a66e76fSBjorn Andersson 	{ P_DP0_PHY_PLL_VCO_DIV_CLK, 2 },
2744a66e76fSBjorn Andersson 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
2754a66e76fSBjorn Andersson 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
2764a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
2774a66e76fSBjorn Andersson 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
2784a66e76fSBjorn Andersson };
2794a66e76fSBjorn Andersson 
2804a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_1[] = {
2814a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
2824a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
2834a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
2844a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
2854a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
2864a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
2874a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
2884a66e76fSBjorn Andersson };
2894a66e76fSBjorn Andersson 
2904a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_1[] = {
2914a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
2924a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
2934a66e76fSBjorn Andersson 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
2944a66e76fSBjorn Andersson 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
2954a66e76fSBjorn Andersson 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
2964a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
2974a66e76fSBjorn Andersson 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
2984a66e76fSBjorn Andersson };
2994a66e76fSBjorn Andersson 
3004a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_2[] = {
3014a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
3024a66e76fSBjorn Andersson };
3034a66e76fSBjorn Andersson 
3044a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_2[] = {
3054a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3064a66e76fSBjorn Andersson };
3074a66e76fSBjorn Andersson 
3084a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_3[] = {
3094a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
3104a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
3114a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
3124a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
3134a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
3144a66e76fSBjorn Andersson };
3154a66e76fSBjorn Andersson 
3164a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_3[] = {
3174a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3184a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
3194a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
3204a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
3214a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
3224a66e76fSBjorn Andersson };
3234a66e76fSBjorn Andersson 
3244a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_4[] = {
3254a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
3264a66e76fSBjorn Andersson 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
3274a66e76fSBjorn Andersson 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
3284a66e76fSBjorn Andersson };
3294a66e76fSBjorn Andersson 
3304a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_4[] = {
3314a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3324a66e76fSBjorn Andersson 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
3334a66e76fSBjorn Andersson 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
3344a66e76fSBjorn Andersson };
3354a66e76fSBjorn Andersson 
3364a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_5[] = {
3374a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
3384a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL0_OUT_MAIN, 1 },
3394a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_MAIN, 4 },
3404a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL2_OUT_MAIN, 5 },
3414a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_EVEN, 6 },
3424a66e76fSBjorn Andersson };
3434a66e76fSBjorn Andersson 
3444a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_5[] = {
3454a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3464a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll0.clkr.hw },
3474a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1.clkr.hw },
3484a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll2.clkr.hw },
3494a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1_out_even.clkr.hw },
3504a66e76fSBjorn Andersson };
3514a66e76fSBjorn Andersson 
3524a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_5[] = {
3534a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3544a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll0.clkr.hw },
3554a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1.clkr.hw },
3564a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll2.clkr.hw },
3574a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1_out_even.clkr.hw },
3584a66e76fSBjorn Andersson };
3594a66e76fSBjorn Andersson 
3604a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_6[] = {
3614a66e76fSBjorn Andersson 	{ P_BI_TCXO, 0 },
3624a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_MAIN, 4 },
3634a66e76fSBjorn Andersson 	{ P_DISPn_CC_PLL1_OUT_EVEN, 6 },
3644a66e76fSBjorn Andersson };
3654a66e76fSBjorn Andersson 
3664a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_6[] = {
3674a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3684a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1.clkr.hw },
3694a66e76fSBjorn Andersson 	{ .hw = &disp0_cc_pll1_out_even.clkr.hw },
3704a66e76fSBjorn Andersson };
3714a66e76fSBjorn Andersson 
3724a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_6[] = {
3734a66e76fSBjorn Andersson 	{ .index = DT_BI_TCXO },
3744a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1.clkr.hw },
3754a66e76fSBjorn Andersson 	{ .hw = &disp1_cc_pll1_out_even.clkr.hw },
3764a66e76fSBjorn Andersson };
3774a66e76fSBjorn Andersson 
3784a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_7[] = {
3794a66e76fSBjorn Andersson 	{ P_SLEEP_CLK, 0 },
3804a66e76fSBjorn Andersson };
3814a66e76fSBjorn Andersson 
3824a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_7[] = {
3834a66e76fSBjorn Andersson 	{ .index = DT_SLEEP_CLK },
3844a66e76fSBjorn Andersson };
3854a66e76fSBjorn Andersson 
3864a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = {
3874a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
3884a66e76fSBjorn Andersson 	F(37500000, P_DISPn_CC_PLL1_OUT_EVEN, 8, 0, 0),
3894a66e76fSBjorn Andersson 	F(75000000, P_DISPn_CC_PLL1_OUT_MAIN, 8, 0, 0),
3904a66e76fSBjorn Andersson 	{ }
3914a66e76fSBjorn Andersson };
3924a66e76fSBjorn Andersson 
3934a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_ahb_clk_src = {
3944a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2364,
3954a66e76fSBjorn Andersson 	.mnd_width = 0,
3964a66e76fSBjorn Andersson 	.hid_width = 5,
3974a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_6,
3984a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
3994a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4004a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_ahb_clk_src",
4014a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_6,
4024a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_6),
4034a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
4044a66e76fSBjorn Andersson 	},
4054a66e76fSBjorn Andersson };
4064a66e76fSBjorn Andersson 
4074a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_ahb_clk_src = {
4084a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2364,
4094a66e76fSBjorn Andersson 	.mnd_width = 0,
4104a66e76fSBjorn Andersson 	.hid_width = 5,
4114a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_6,
4124a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
4134a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4144a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_ahb_clk_src",
4154a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_6,
4164a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_6),
4174a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
4184a66e76fSBjorn Andersson 	},
4194a66e76fSBjorn Andersson };
4204a66e76fSBjorn Andersson 
4214a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_byte0_clk_src[] = {
4224a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
4234a66e76fSBjorn Andersson 	{ }
4244a66e76fSBjorn Andersson };
4254a66e76fSBjorn Andersson 
4264a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte0_clk_src = {
4274a66e76fSBjorn Andersson 	.cmd_rcgr = 0x213c,
4284a66e76fSBjorn Andersson 	.mnd_width = 0,
4294a66e76fSBjorn Andersson 	.hid_width = 5,
4304a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
4314a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4324a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte0_clk_src",
4334a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
4344a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
4354a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4364a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
4374a66e76fSBjorn Andersson 	},
4384a66e76fSBjorn Andersson };
4394a66e76fSBjorn Andersson 
4404a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte0_clk_src = {
4414a66e76fSBjorn Andersson 	.cmd_rcgr = 0x213c,
4424a66e76fSBjorn Andersson 	.mnd_width = 0,
4434a66e76fSBjorn Andersson 	.hid_width = 5,
4444a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
4454a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4464a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte0_clk_src",
4474a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
4484a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
4494a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4504a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
4514a66e76fSBjorn Andersson 	},
4524a66e76fSBjorn Andersson };
4534a66e76fSBjorn Andersson 
4544a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte1_clk_src = {
4554a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2158,
4564a66e76fSBjorn Andersson 	.mnd_width = 0,
4574a66e76fSBjorn Andersson 	.hid_width = 5,
4584a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
4594a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4604a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte1_clk_src",
4614a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
4624a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
4634a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4644a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
4654a66e76fSBjorn Andersson 	},
4664a66e76fSBjorn Andersson };
4674a66e76fSBjorn Andersson 
4684a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte1_clk_src = {
4694a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2158,
4704a66e76fSBjorn Andersson 	.mnd_width = 0,
4714a66e76fSBjorn Andersson 	.hid_width = 5,
4724a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
4734a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4744a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte1_clk_src",
4754a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
4764a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
4774a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4784a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
4794a66e76fSBjorn Andersson 	},
4804a66e76fSBjorn Andersson };
4814a66e76fSBjorn Andersson 
4824a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_aux_clk_src = {
4834a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2238,
4844a66e76fSBjorn Andersson 	.mnd_width = 0,
4854a66e76fSBjorn Andersson 	.hid_width = 5,
4864a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
4874a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
4884a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
4894a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_aux_clk_src",
4904a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
4914a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
4924a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
4934a66e76fSBjorn Andersson 	},
4944a66e76fSBjorn Andersson };
4954a66e76fSBjorn Andersson 
4964a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_aux_clk_src = {
4974a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2238,
4984a66e76fSBjorn Andersson 	.mnd_width = 0,
4994a66e76fSBjorn Andersson 	.hid_width = 5,
5004a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
5014a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
5024a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5034a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_aux_clk_src",
5044a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
5054a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
5064a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
5074a66e76fSBjorn Andersson 	},
5084a66e76fSBjorn Andersson };
5094a66e76fSBjorn Andersson 
5104a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_link_clk_src = {
5114a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21a4,
5124a66e76fSBjorn Andersson 	.mnd_width = 0,
5134a66e76fSBjorn Andersson 	.hid_width = 5,
5144a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
5154a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5164a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_link_clk_src",
5174a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
5184a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
5194a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5204a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
5214a66e76fSBjorn Andersson 	},
5224a66e76fSBjorn Andersson };
5234a66e76fSBjorn Andersson 
5244a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_link_clk_src = {
5254a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21a4,
5264a66e76fSBjorn Andersson 	.mnd_width = 0,
5274a66e76fSBjorn Andersson 	.hid_width = 5,
5284a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
5294a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5304a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_link_clk_src",
5314a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
5324a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
5334a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5344a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
5354a66e76fSBjorn Andersson 	},
5364a66e76fSBjorn Andersson };
5374a66e76fSBjorn Andersson 
5384a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel0_clk_src = {
5394a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21d8,
5404a66e76fSBjorn Andersson 	.mnd_width = 16,
5414a66e76fSBjorn Andersson 	.hid_width = 5,
5424a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
5434a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5444a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_pixel0_clk_src",
5454a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
5464a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
5474a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5484a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
5494a66e76fSBjorn Andersson 	},
5504a66e76fSBjorn Andersson };
5514a66e76fSBjorn Andersson 
5524a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel0_clk_src = {
5534a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21d8,
5544a66e76fSBjorn Andersson 	.mnd_width = 16,
5554a66e76fSBjorn Andersson 	.hid_width = 5,
5564a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
5574a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5584a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_pixel0_clk_src",
5594a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
5604a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
5614a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5624a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
5634a66e76fSBjorn Andersson 	},
5644a66e76fSBjorn Andersson };
5654a66e76fSBjorn Andersson 
5664a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel1_clk_src = {
5674a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21f0,
5684a66e76fSBjorn Andersson 	.mnd_width = 16,
5694a66e76fSBjorn Andersson 	.hid_width = 5,
5704a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
5714a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5724a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_pixel1_clk_src",
5734a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
5744a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
5754a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5764a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
5774a66e76fSBjorn Andersson 	},
5784a66e76fSBjorn Andersson };
5794a66e76fSBjorn Andersson 
5804a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel1_clk_src = {
5814a66e76fSBjorn Andersson 	.cmd_rcgr = 0x21f0,
5824a66e76fSBjorn Andersson 	.mnd_width = 16,
5834a66e76fSBjorn Andersson 	.hid_width = 5,
5844a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
5854a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
5864a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_pixel1_clk_src",
5874a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
5884a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
5894a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5904a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
5914a66e76fSBjorn Andersson 	},
5924a66e76fSBjorn Andersson };
5934a66e76fSBjorn Andersson 
5944a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_aux_clk_src = {
5954a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22d0,
5964a66e76fSBjorn Andersson 	.mnd_width = 0,
5974a66e76fSBjorn Andersson 	.hid_width = 5,
5984a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
5994a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
6004a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6014a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_aux_clk_src",
6024a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
6034a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
6044a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
6054a66e76fSBjorn Andersson 	},
6064a66e76fSBjorn Andersson };
6074a66e76fSBjorn Andersson 
6084a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_aux_clk_src = {
6094a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22d0,
6104a66e76fSBjorn Andersson 	.mnd_width = 0,
6114a66e76fSBjorn Andersson 	.hid_width = 5,
6124a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
6134a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
6144a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6154a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_aux_clk_src",
6164a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
6174a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
6184a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
6194a66e76fSBjorn Andersson 	},
6204a66e76fSBjorn Andersson };
6214a66e76fSBjorn Andersson 
6224a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_link_clk_src = {
6234a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2268,
6244a66e76fSBjorn Andersson 	.mnd_width = 0,
6254a66e76fSBjorn Andersson 	.hid_width = 5,
6264a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
6274a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6284a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_link_clk_src",
6294a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
6304a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
6314a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6324a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
6334a66e76fSBjorn Andersson 	},
6344a66e76fSBjorn Andersson };
6354a66e76fSBjorn Andersson 
6364a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_link_clk_src = {
6374a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2268,
6384a66e76fSBjorn Andersson 	.mnd_width = 0,
6394a66e76fSBjorn Andersson 	.hid_width = 5,
6404a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
6414a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6424a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_link_clk_src",
6434a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
6444a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
6454a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6464a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
6474a66e76fSBjorn Andersson 	},
6484a66e76fSBjorn Andersson };
6494a66e76fSBjorn Andersson 
6504a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel0_clk_src = {
6514a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2250,
6524a66e76fSBjorn Andersson 	.mnd_width = 16,
6534a66e76fSBjorn Andersson 	.hid_width = 5,
6544a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
6554a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6564a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_pixel0_clk_src",
6574a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
6584a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
6594a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6604a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
6614a66e76fSBjorn Andersson 	},
6624a66e76fSBjorn Andersson };
6634a66e76fSBjorn Andersson 
6644a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel0_clk_src = {
6654a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2250,
6664a66e76fSBjorn Andersson 	.mnd_width = 16,
6674a66e76fSBjorn Andersson 	.hid_width = 5,
6684a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
6694a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6704a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_pixel0_clk_src",
6714a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
6724a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
6734a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6744a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
6754a66e76fSBjorn Andersson 	},
6764a66e76fSBjorn Andersson };
6774a66e76fSBjorn Andersson 
6784a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel1_clk_src = {
6794a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2370,
6804a66e76fSBjorn Andersson 	.mnd_width = 16,
6814a66e76fSBjorn Andersson 	.hid_width = 5,
6824a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
6834a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6844a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_pixel1_clk_src",
6854a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
6864a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
6874a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6884a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
6894a66e76fSBjorn Andersson 	},
6904a66e76fSBjorn Andersson };
6914a66e76fSBjorn Andersson 
6924a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel1_clk_src = {
6934a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2370,
6944a66e76fSBjorn Andersson 	.mnd_width = 16,
6954a66e76fSBjorn Andersson 	.hid_width = 5,
6964a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
6974a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
6984a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_pixel1_clk_src",
6994a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
7004a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
7014a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7024a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
7034a66e76fSBjorn Andersson 	},
7044a66e76fSBjorn Andersson };
7054a66e76fSBjorn Andersson 
7064a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_aux_clk_src = {
7074a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22e8,
7084a66e76fSBjorn Andersson 	.mnd_width = 0,
7094a66e76fSBjorn Andersson 	.hid_width = 5,
7104a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
7114a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
7124a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7134a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_aux_clk_src",
7144a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
7154a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
7164a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
7174a66e76fSBjorn Andersson 	},
7184a66e76fSBjorn Andersson };
7194a66e76fSBjorn Andersson 
7204a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_aux_clk_src = {
7214a66e76fSBjorn Andersson 	.cmd_rcgr = 0x22e8,
7224a66e76fSBjorn Andersson 	.mnd_width = 0,
7234a66e76fSBjorn Andersson 	.hid_width = 5,
7244a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
7254a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
7264a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7274a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_aux_clk_src",
7284a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
7294a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
7304a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
7314a66e76fSBjorn Andersson 	},
7324a66e76fSBjorn Andersson };
7334a66e76fSBjorn Andersson 
7344a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_link_clk_src = {
7354a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2284,
7364a66e76fSBjorn Andersson 	.mnd_width = 0,
7374a66e76fSBjorn Andersson 	.hid_width = 5,
7384a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
7394a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7404a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_link_clk_src",
7414a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
7424a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
7434a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7444a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
7454a66e76fSBjorn Andersson 	},
7464a66e76fSBjorn Andersson };
7474a66e76fSBjorn Andersson 
7484a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_link_clk_src = {
7494a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2284,
7504a66e76fSBjorn Andersson 	.mnd_width = 0,
7514a66e76fSBjorn Andersson 	.hid_width = 5,
7524a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
7534a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7544a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_link_clk_src",
7554a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
7564a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
7574a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7584a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
7594a66e76fSBjorn Andersson 	},
7604a66e76fSBjorn Andersson };
7614a66e76fSBjorn Andersson 
7624a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel0_clk_src = {
7634a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2208,
7644a66e76fSBjorn Andersson 	.mnd_width = 16,
7654a66e76fSBjorn Andersson 	.hid_width = 5,
7664a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
7674a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7684a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_pixel0_clk_src",
7694a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
7704a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
7714a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7724a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
7734a66e76fSBjorn Andersson 	},
7744a66e76fSBjorn Andersson };
7754a66e76fSBjorn Andersson 
7764a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel0_clk_src = {
7774a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2208,
7784a66e76fSBjorn Andersson 	.mnd_width = 16,
7794a66e76fSBjorn Andersson 	.hid_width = 5,
7804a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
7814a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7824a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_pixel0_clk_src",
7834a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
7844a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
7854a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7864a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
7874a66e76fSBjorn Andersson 	},
7884a66e76fSBjorn Andersson };
7894a66e76fSBjorn Andersson 
7904a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel1_clk_src = {
7914a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2220,
7924a66e76fSBjorn Andersson 	.mnd_width = 16,
7934a66e76fSBjorn Andersson 	.hid_width = 5,
7944a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
7954a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
7964a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_pixel1_clk_src",
7974a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
7984a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
7994a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8004a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
8014a66e76fSBjorn Andersson 	},
8024a66e76fSBjorn Andersson };
8034a66e76fSBjorn Andersson 
8044a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel1_clk_src = {
8054a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2220,
8064a66e76fSBjorn Andersson 	.mnd_width = 16,
8074a66e76fSBjorn Andersson 	.hid_width = 5,
8084a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
8094a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8104a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_pixel1_clk_src",
8114a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
8124a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
8134a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8144a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
8154a66e76fSBjorn Andersson 	},
8164a66e76fSBjorn Andersson };
8174a66e76fSBjorn Andersson 
8184a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_aux_clk_src = {
8194a66e76fSBjorn Andersson 	.cmd_rcgr = 0x234c,
8204a66e76fSBjorn Andersson 	.mnd_width = 0,
8214a66e76fSBjorn Andersson 	.hid_width = 5,
8224a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
8234a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
8244a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8254a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_aux_clk_src",
8264a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
8274a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
8284a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
8294a66e76fSBjorn Andersson 	},
8304a66e76fSBjorn Andersson };
8314a66e76fSBjorn Andersson 
8324a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_aux_clk_src = {
8334a66e76fSBjorn Andersson 	.cmd_rcgr = 0x234c,
8344a66e76fSBjorn Andersson 	.mnd_width = 0,
8354a66e76fSBjorn Andersson 	.hid_width = 5,
8364a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
8374a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
8384a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8394a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_aux_clk_src",
8404a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
8414a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
8424a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
8434a66e76fSBjorn Andersson 	},
8444a66e76fSBjorn Andersson };
8454a66e76fSBjorn Andersson 
8464a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_link_clk_src = {
8474a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2318,
8484a66e76fSBjorn Andersson 	.mnd_width = 0,
8494a66e76fSBjorn Andersson 	.hid_width = 5,
8504a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
8514a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8524a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_link_clk_src",
8534a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_0,
8544a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_0),
8554a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8564a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
8574a66e76fSBjorn Andersson 	},
8584a66e76fSBjorn Andersson };
8594a66e76fSBjorn Andersson 
8604a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_link_clk_src = {
8614a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2318,
8624a66e76fSBjorn Andersson 	.mnd_width = 0,
8634a66e76fSBjorn Andersson 	.hid_width = 5,
8644a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_0,
8654a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8664a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_link_clk_src",
8674a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_0,
8684a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_0),
8694a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8704a66e76fSBjorn Andersson 		.ops = &clk_byte2_ops,
8714a66e76fSBjorn Andersson 	},
8724a66e76fSBjorn Andersson };
8734a66e76fSBjorn Andersson 
8744a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_pixel0_clk_src = {
8754a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2300,
8764a66e76fSBjorn Andersson 	.mnd_width = 16,
8774a66e76fSBjorn Andersson 	.hid_width = 5,
8784a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
8794a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8804a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_pixel0_clk_src",
8814a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_1,
8824a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_1),
8834a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8844a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
8854a66e76fSBjorn Andersson 	},
8864a66e76fSBjorn Andersson };
8874a66e76fSBjorn Andersson 
8884a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_pixel0_clk_src = {
8894a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2300,
8904a66e76fSBjorn Andersson 	.mnd_width = 16,
8914a66e76fSBjorn Andersson 	.hid_width = 5,
8924a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_1,
8934a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
8944a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_pixel0_clk_src",
8954a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_1,
8964a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_1),
8974a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8984a66e76fSBjorn Andersson 		.ops = &clk_dp_ops,
8994a66e76fSBjorn Andersson 	},
9004a66e76fSBjorn Andersson };
9014a66e76fSBjorn Andersson 
9024a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc0_clk_src = {
9034a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2174,
9044a66e76fSBjorn Andersson 	.mnd_width = 0,
9054a66e76fSBjorn Andersson 	.hid_width = 5,
9064a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
9074a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
9084a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9094a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_esc0_clk_src",
9104a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
9114a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
9124a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
9134a66e76fSBjorn Andersson 	},
9144a66e76fSBjorn Andersson };
9154a66e76fSBjorn Andersson 
9164a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc0_clk_src = {
9174a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2174,
9184a66e76fSBjorn Andersson 	.mnd_width = 0,
9194a66e76fSBjorn Andersson 	.hid_width = 5,
9204a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
9214a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
9224a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9234a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_esc0_clk_src",
9244a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
9254a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
9264a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
9274a66e76fSBjorn Andersson 	},
9284a66e76fSBjorn Andersson };
9294a66e76fSBjorn Andersson 
9304a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc1_clk_src = {
9314a66e76fSBjorn Andersson 	.cmd_rcgr = 0x218c,
9324a66e76fSBjorn Andersson 	.mnd_width = 0,
9334a66e76fSBjorn Andersson 	.hid_width = 5,
9344a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
9354a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
9364a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9374a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_esc1_clk_src",
9384a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
9394a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
9404a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
9414a66e76fSBjorn Andersson 	},
9424a66e76fSBjorn Andersson };
9434a66e76fSBjorn Andersson 
9444a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc1_clk_src = {
9454a66e76fSBjorn Andersson 	.cmd_rcgr = 0x218c,
9464a66e76fSBjorn Andersson 	.mnd_width = 0,
9474a66e76fSBjorn Andersson 	.hid_width = 5,
9484a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_4,
9494a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
9504a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9514a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_esc1_clk_src",
9524a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_4,
9534a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
9544a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
9554a66e76fSBjorn Andersson 	},
9564a66e76fSBjorn Andersson };
9574a66e76fSBjorn Andersson 
9584a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = {
9594a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
9604a66e76fSBjorn Andersson 	F(85714286, P_DISPn_CC_PLL1_OUT_MAIN, 7, 0, 0),
9614a66e76fSBjorn Andersson 	F(100000000, P_DISPn_CC_PLL1_OUT_MAIN, 6, 0, 0),
9624a66e76fSBjorn Andersson 	F(150000000, P_DISPn_CC_PLL1_OUT_MAIN, 4, 0, 0),
9634a66e76fSBjorn Andersson 	F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0),
9644a66e76fSBjorn Andersson 	F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0),
9654a66e76fSBjorn Andersson 	F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0),
9664a66e76fSBjorn Andersson 	F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0),
9674a66e76fSBjorn Andersson 	F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0),
9684a66e76fSBjorn Andersson 	{ }
9694a66e76fSBjorn Andersson };
9704a66e76fSBjorn Andersson 
9714a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_mdp_clk_src = {
9724a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20f4,
9734a66e76fSBjorn Andersson 	.mnd_width = 0,
9744a66e76fSBjorn Andersson 	.hid_width = 5,
9754a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
9764a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
9774a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9784a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_mdp_clk_src",
9794a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_5,
9804a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_5),
9814a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
9824a66e76fSBjorn Andersson 	},
9834a66e76fSBjorn Andersson };
9844a66e76fSBjorn Andersson 
9854a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_mdp_clk_src = {
9864a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20f4,
9874a66e76fSBjorn Andersson 	.mnd_width = 0,
9884a66e76fSBjorn Andersson 	.hid_width = 5,
9894a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
9904a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
9914a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
9924a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_mdp_clk_src",
9934a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_5,
9944a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_5),
9954a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
9964a66e76fSBjorn Andersson 	},
9974a66e76fSBjorn Andersson };
9984a66e76fSBjorn Andersson 
9994a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk0_clk_src = {
10004a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20c4,
10014a66e76fSBjorn Andersson 	.mnd_width = 8,
10024a66e76fSBjorn Andersson 	.hid_width = 5,
10034a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
10044a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10054a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_pclk0_clk_src",
10064a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
10074a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
10084a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10094a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
10104a66e76fSBjorn Andersson 	},
10114a66e76fSBjorn Andersson };
10124a66e76fSBjorn Andersson 
10134a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk0_clk_src = {
10144a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20c4,
10154a66e76fSBjorn Andersson 	.mnd_width = 8,
10164a66e76fSBjorn Andersson 	.hid_width = 5,
10174a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
10184a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10194a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_pclk0_clk_src",
10204a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
10214a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
10224a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10234a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
10244a66e76fSBjorn Andersson 	},
10254a66e76fSBjorn Andersson };
10264a66e76fSBjorn Andersson 
10274a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk1_clk_src = {
10284a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20dc,
10294a66e76fSBjorn Andersson 	.mnd_width = 8,
10304a66e76fSBjorn Andersson 	.hid_width = 5,
10314a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
10324a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10334a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_pclk1_clk_src",
10344a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
10354a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
10364a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10374a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
10384a66e76fSBjorn Andersson 	},
10394a66e76fSBjorn Andersson };
10404a66e76fSBjorn Andersson 
10414a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk1_clk_src = {
10424a66e76fSBjorn Andersson 	.cmd_rcgr = 0x20dc,
10434a66e76fSBjorn Andersson 	.mnd_width = 8,
10444a66e76fSBjorn Andersson 	.hid_width = 5,
10454a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_3,
10464a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10474a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_pclk1_clk_src",
10484a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_3,
10494a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
10504a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10514a66e76fSBjorn Andersson 		.ops = &clk_pixel_ops,
10524a66e76fSBjorn Andersson 	},
10534a66e76fSBjorn Andersson };
10544a66e76fSBjorn Andersson 
10554a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_rot_clk_src[] = {
10564a66e76fSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
10574a66e76fSBjorn Andersson 	F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0),
10584a66e76fSBjorn Andersson 	F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0),
10594a66e76fSBjorn Andersson 	F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0),
10604a66e76fSBjorn Andersson 	F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0),
10614a66e76fSBjorn Andersson 	F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0),
10624a66e76fSBjorn Andersson 	{ }
10634a66e76fSBjorn Andersson };
10644a66e76fSBjorn Andersson 
10654a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_rot_clk_src = {
10664a66e76fSBjorn Andersson 	.cmd_rcgr = 0x210c,
10674a66e76fSBjorn Andersson 	.mnd_width = 0,
10684a66e76fSBjorn Andersson 	.hid_width = 5,
10694a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
10704a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_rot_clk_src,
10714a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10724a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_rot_clk_src",
10734a66e76fSBjorn Andersson 		.parent_data = disp0_cc_parent_data_5,
10744a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp0_cc_parent_data_5),
10754a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
10764a66e76fSBjorn Andersson 	},
10774a66e76fSBjorn Andersson };
10784a66e76fSBjorn Andersson 
10794a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_rot_clk_src = {
10804a66e76fSBjorn Andersson 	.cmd_rcgr = 0x210c,
10814a66e76fSBjorn Andersson 	.mnd_width = 0,
10824a66e76fSBjorn Andersson 	.hid_width = 5,
10834a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_5,
10844a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_rot_clk_src,
10854a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
10864a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_rot_clk_src",
10874a66e76fSBjorn Andersson 		.parent_data = disp1_cc_parent_data_5,
10884a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp1_cc_parent_data_5),
10894a66e76fSBjorn Andersson 		.ops = &clk_rcg2_shared_ops,
10904a66e76fSBjorn Andersson 	},
10914a66e76fSBjorn Andersson };
10924a66e76fSBjorn Andersson 
10934a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_vsync_clk_src = {
10944a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2124,
10954a66e76fSBjorn Andersson 	.mnd_width = 0,
10964a66e76fSBjorn Andersson 	.hid_width = 5,
10974a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
10984a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
10994a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11004a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_vsync_clk_src",
11014a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
11024a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
11034a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
11044a66e76fSBjorn Andersson 	},
11054a66e76fSBjorn Andersson };
11064a66e76fSBjorn Andersson 
11074a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_vsync_clk_src = {
11084a66e76fSBjorn Andersson 	.cmd_rcgr = 0x2124,
11094a66e76fSBjorn Andersson 	.mnd_width = 0,
11104a66e76fSBjorn Andersson 	.hid_width = 5,
11114a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_2,
11124a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src,
11134a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11144a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_vsync_clk_src",
11154a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_2,
11164a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
11174a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
11184a66e76fSBjorn Andersson 	},
11194a66e76fSBjorn Andersson };
11204a66e76fSBjorn Andersson 
11214a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_sleep_clk_src[] = {
11224a66e76fSBjorn Andersson 	F(32000, P_SLEEP_CLK, 1, 0, 0),
11234a66e76fSBjorn Andersson 	{ }
11244a66e76fSBjorn Andersson };
11254a66e76fSBjorn Andersson 
11264a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_sleep_clk_src = {
11274a66e76fSBjorn Andersson 	.cmd_rcgr = 0x6060,
11284a66e76fSBjorn Andersson 	.mnd_width = 0,
11294a66e76fSBjorn Andersson 	.hid_width = 5,
11304a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_7,
11314a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_sleep_clk_src,
11324a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11334a66e76fSBjorn Andersson 		.name = "disp0_cc_sleep_clk_src",
11344a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_7,
11354a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
11364a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
11374a66e76fSBjorn Andersson 	},
11384a66e76fSBjorn Andersson };
11394a66e76fSBjorn Andersson 
11404a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_sleep_clk_src = {
11414a66e76fSBjorn Andersson 	.cmd_rcgr = 0x6060,
11424a66e76fSBjorn Andersson 	.mnd_width = 0,
11434a66e76fSBjorn Andersson 	.hid_width = 5,
11444a66e76fSBjorn Andersson 	.parent_map = disp_cc_parent_map_7,
11454a66e76fSBjorn Andersson 	.freq_tbl = ftbl_disp_cc_sleep_clk_src,
11464a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11474a66e76fSBjorn Andersson 		.name = "disp1_cc_sleep_clk_src",
11484a66e76fSBjorn Andersson 		.parent_data = disp_cc_parent_data_7,
11494a66e76fSBjorn Andersson 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
11504a66e76fSBjorn Andersson 		.ops = &clk_rcg2_ops,
11514a66e76fSBjorn Andersson 	},
11524a66e76fSBjorn Andersson };
11534a66e76fSBjorn Andersson 
11544a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte0_div_clk_src = {
11554a66e76fSBjorn Andersson 	.reg = 0x2154,
11564a66e76fSBjorn Andersson 	.shift = 0,
11574a66e76fSBjorn Andersson 	.width = 4,
11584a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11594a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte0_div_clk_src",
11604a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
11614a66e76fSBjorn Andersson 			&disp0_cc_mdss_byte0_clk_src.clkr.hw,
11624a66e76fSBjorn Andersson 		},
11634a66e76fSBjorn Andersson 		.num_parents = 1,
11644a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11654a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
11664a66e76fSBjorn Andersson 	},
11674a66e76fSBjorn Andersson };
11684a66e76fSBjorn Andersson 
11694a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte0_div_clk_src = {
11704a66e76fSBjorn Andersson 	.reg = 0x2154,
11714a66e76fSBjorn Andersson 	.shift = 0,
11724a66e76fSBjorn Andersson 	.width = 4,
11734a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11744a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte0_div_clk_src",
11754a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
11764a66e76fSBjorn Andersson 			&disp1_cc_mdss_byte0_clk_src.clkr.hw,
11774a66e76fSBjorn Andersson 		},
11784a66e76fSBjorn Andersson 		.num_parents = 1,
11794a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11804a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
11814a66e76fSBjorn Andersson 	},
11824a66e76fSBjorn Andersson };
11834a66e76fSBjorn Andersson 
11844a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte1_div_clk_src = {
11854a66e76fSBjorn Andersson 	.reg = 0x2170,
11864a66e76fSBjorn Andersson 	.shift = 0,
11874a66e76fSBjorn Andersson 	.width = 4,
11884a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
11894a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_byte1_div_clk_src",
11904a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
11914a66e76fSBjorn Andersson 			&disp0_cc_mdss_byte1_clk_src.clkr.hw,
11924a66e76fSBjorn Andersson 		},
11934a66e76fSBjorn Andersson 		.num_parents = 1,
11944a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11954a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
11964a66e76fSBjorn Andersson 	},
11974a66e76fSBjorn Andersson };
11984a66e76fSBjorn Andersson 
11994a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte1_div_clk_src = {
12004a66e76fSBjorn Andersson 	.reg = 0x2170,
12014a66e76fSBjorn Andersson 	.shift = 0,
12024a66e76fSBjorn Andersson 	.width = 4,
12034a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12044a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_byte1_div_clk_src",
12054a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12064a66e76fSBjorn Andersson 			&disp1_cc_mdss_byte1_clk_src.clkr.hw,
12074a66e76fSBjorn Andersson 		},
12084a66e76fSBjorn Andersson 		.num_parents = 1,
12094a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12104a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ops,
12114a66e76fSBjorn Andersson 	},
12124a66e76fSBjorn Andersson };
12134a66e76fSBjorn Andersson 
12144a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx0_link_div_clk_src = {
12154a66e76fSBjorn Andersson 	.reg = 0x21bc,
12164a66e76fSBjorn Andersson 	.shift = 0,
12174a66e76fSBjorn Andersson 	.width = 4,
12184a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12194a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx0_link_div_clk_src",
12204a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12214a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx0_link_clk_src.clkr.hw,
12224a66e76fSBjorn Andersson 		},
12234a66e76fSBjorn Andersson 		.num_parents = 1,
12244a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12254a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
12264a66e76fSBjorn Andersson 	},
12274a66e76fSBjorn Andersson };
12284a66e76fSBjorn Andersson 
12294a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx0_link_div_clk_src = {
12304a66e76fSBjorn Andersson 	.reg = 0x21bc,
12314a66e76fSBjorn Andersson 	.shift = 0,
12324a66e76fSBjorn Andersson 	.width = 4,
12334a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12344a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx0_link_div_clk_src",
12354a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12364a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx0_link_clk_src.clkr.hw,
12374a66e76fSBjorn Andersson 		},
12384a66e76fSBjorn Andersson 		.num_parents = 1,
12394a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12404a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
12414a66e76fSBjorn Andersson 	},
12424a66e76fSBjorn Andersson };
12434a66e76fSBjorn Andersson 
12444a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx1_link_div_clk_src = {
12454a66e76fSBjorn Andersson 	.reg = 0x2280,
12464a66e76fSBjorn Andersson 	.shift = 0,
12474a66e76fSBjorn Andersson 	.width = 4,
12484a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12494a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx1_link_div_clk_src",
12504a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12514a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx1_link_clk_src.clkr.hw,
12524a66e76fSBjorn Andersson 		},
12534a66e76fSBjorn Andersson 		.num_parents = 1,
12544a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12554a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
12564a66e76fSBjorn Andersson 	},
12574a66e76fSBjorn Andersson };
12584a66e76fSBjorn Andersson 
12594a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx1_link_div_clk_src = {
12604a66e76fSBjorn Andersson 	.reg = 0x2280,
12614a66e76fSBjorn Andersson 	.shift = 0,
12624a66e76fSBjorn Andersson 	.width = 4,
12634a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12644a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx1_link_div_clk_src",
12654a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12664a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx1_link_clk_src.clkr.hw,
12674a66e76fSBjorn Andersson 		},
12684a66e76fSBjorn Andersson 		.num_parents = 1,
12694a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12704a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
12714a66e76fSBjorn Andersson 	},
12724a66e76fSBjorn Andersson };
12734a66e76fSBjorn Andersson 
12744a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx2_link_div_clk_src = {
12754a66e76fSBjorn Andersson 	.reg = 0x229c,
12764a66e76fSBjorn Andersson 	.shift = 0,
12774a66e76fSBjorn Andersson 	.width = 4,
12784a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12794a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx2_link_div_clk_src",
12804a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12814a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx2_link_clk_src.clkr.hw,
12824a66e76fSBjorn Andersson 		},
12834a66e76fSBjorn Andersson 		.num_parents = 1,
12844a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12854a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
12864a66e76fSBjorn Andersson 	},
12874a66e76fSBjorn Andersson };
12884a66e76fSBjorn Andersson 
12894a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx2_link_div_clk_src = {
12904a66e76fSBjorn Andersson 	.reg = 0x229c,
12914a66e76fSBjorn Andersson 	.shift = 0,
12924a66e76fSBjorn Andersson 	.width = 4,
12934a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
12944a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx2_link_div_clk_src",
12954a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
12964a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx2_link_clk_src.clkr.hw,
12974a66e76fSBjorn Andersson 		},
12984a66e76fSBjorn Andersson 		.num_parents = 1,
12994a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13004a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
13014a66e76fSBjorn Andersson 	},
13024a66e76fSBjorn Andersson };
13034a66e76fSBjorn Andersson 
13044a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx3_link_div_clk_src = {
13054a66e76fSBjorn Andersson 	.reg = 0x2330,
13064a66e76fSBjorn Andersson 	.shift = 0,
13074a66e76fSBjorn Andersson 	.width = 4,
13084a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
13094a66e76fSBjorn Andersson 		.name = "disp0_cc_mdss_dptx3_link_div_clk_src",
13104a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
13114a66e76fSBjorn Andersson 			&disp0_cc_mdss_dptx3_link_clk_src.clkr.hw,
13124a66e76fSBjorn Andersson 		},
13134a66e76fSBjorn Andersson 		.num_parents = 1,
13144a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13154a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
13164a66e76fSBjorn Andersson 	},
13174a66e76fSBjorn Andersson };
13184a66e76fSBjorn Andersson 
13194a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx3_link_div_clk_src = {
13204a66e76fSBjorn Andersson 	.reg = 0x2330,
13214a66e76fSBjorn Andersson 	.shift = 0,
13224a66e76fSBjorn Andersson 	.width = 4,
13234a66e76fSBjorn Andersson 	.clkr.hw.init = &(const struct clk_init_data) {
13244a66e76fSBjorn Andersson 		.name = "disp1_cc_mdss_dptx3_link_div_clk_src",
13254a66e76fSBjorn Andersson 		.parent_hws = (const struct clk_hw*[]){
13264a66e76fSBjorn Andersson 			&disp1_cc_mdss_dptx3_link_clk_src.clkr.hw,
13274a66e76fSBjorn Andersson 		},
13284a66e76fSBjorn Andersson 		.num_parents = 1,
13294a66e76fSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13304a66e76fSBjorn Andersson 		.ops = &clk_regmap_div_ro_ops,
13314a66e76fSBjorn Andersson 	},
13324a66e76fSBjorn Andersson };
13334a66e76fSBjorn Andersson 
13344a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb1_clk = {
13354a66e76fSBjorn Andersson 	.halt_reg = 0x20c0,
13364a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
13374a66e76fSBjorn Andersson 	.clkr = {
13384a66e76fSBjorn Andersson 		.enable_reg = 0x20c0,
13394a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
13404a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
13414a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_ahb1_clk",
13424a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
13434a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
13444a66e76fSBjorn Andersson 			},
13454a66e76fSBjorn Andersson 			.num_parents = 1,
13464a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
13474a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
13484a66e76fSBjorn Andersson 		},
13494a66e76fSBjorn Andersson 	},
13504a66e76fSBjorn Andersson };
13514a66e76fSBjorn Andersson 
13524a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb1_clk = {
13534a66e76fSBjorn Andersson 	.halt_reg = 0x20c0,
13544a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
13554a66e76fSBjorn Andersson 	.clkr = {
13564a66e76fSBjorn Andersson 		.enable_reg = 0x20c0,
13574a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
13584a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
13594a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_ahb1_clk",
13604a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
13614a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
13624a66e76fSBjorn Andersson 			},
13634a66e76fSBjorn Andersson 			.num_parents = 1,
13644a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
13654a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
13664a66e76fSBjorn Andersson 		},
13674a66e76fSBjorn Andersson 	},
13684a66e76fSBjorn Andersson };
13694a66e76fSBjorn Andersson 
13704a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb_clk = {
13714a66e76fSBjorn Andersson 	.halt_reg = 0x20bc,
13724a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
13734a66e76fSBjorn Andersson 	.clkr = {
13744a66e76fSBjorn Andersson 		.enable_reg = 0x20bc,
13754a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
13764a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
13774a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_ahb_clk",
13784a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
13794a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
13804a66e76fSBjorn Andersson 			},
13814a66e76fSBjorn Andersson 			.num_parents = 1,
13824a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
13834a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
13844a66e76fSBjorn Andersson 		},
13854a66e76fSBjorn Andersson 	},
13864a66e76fSBjorn Andersson };
13874a66e76fSBjorn Andersson 
13884a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb_clk = {
13894a66e76fSBjorn Andersson 	.halt_reg = 0x20bc,
13904a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
13914a66e76fSBjorn Andersson 	.clkr = {
13924a66e76fSBjorn Andersson 		.enable_reg = 0x20bc,
13934a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
13944a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
13954a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_ahb_clk",
13964a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
13974a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
13984a66e76fSBjorn Andersson 			},
13994a66e76fSBjorn Andersson 			.num_parents = 1,
14004a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14014a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14024a66e76fSBjorn Andersson 		},
14034a66e76fSBjorn Andersson 	},
14044a66e76fSBjorn Andersson };
14054a66e76fSBjorn Andersson 
14064a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_clk = {
14074a66e76fSBjorn Andersson 	.halt_reg = 0x2044,
14084a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14094a66e76fSBjorn Andersson 	.clkr = {
14104a66e76fSBjorn Andersson 		.enable_reg = 0x2044,
14114a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
14124a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
14134a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte0_clk",
14144a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
14154a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte0_clk_src.clkr.hw,
14164a66e76fSBjorn Andersson 			},
14174a66e76fSBjorn Andersson 			.num_parents = 1,
14184a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14194a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14204a66e76fSBjorn Andersson 		},
14214a66e76fSBjorn Andersson 	},
14224a66e76fSBjorn Andersson };
14234a66e76fSBjorn Andersson 
14244a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_clk = {
14254a66e76fSBjorn Andersson 	.halt_reg = 0x2044,
14264a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14274a66e76fSBjorn Andersson 	.clkr = {
14284a66e76fSBjorn Andersson 		.enable_reg = 0x2044,
14294a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
14304a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
14314a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte0_clk",
14324a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
14334a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte0_clk_src.clkr.hw,
14344a66e76fSBjorn Andersson 			},
14354a66e76fSBjorn Andersson 			.num_parents = 1,
14364a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14374a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14384a66e76fSBjorn Andersson 		},
14394a66e76fSBjorn Andersson 	},
14404a66e76fSBjorn Andersson };
14414a66e76fSBjorn Andersson 
14424a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_intf_clk = {
14434a66e76fSBjorn Andersson 	.halt_reg = 0x2048,
14444a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14454a66e76fSBjorn Andersson 	.clkr = {
14464a66e76fSBjorn Andersson 		.enable_reg = 0x2048,
14474a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
14484a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
14494a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte0_intf_clk",
14504a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
14514a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte0_div_clk_src.clkr.hw,
14524a66e76fSBjorn Andersson 			},
14534a66e76fSBjorn Andersson 			.num_parents = 1,
14544a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14554a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14564a66e76fSBjorn Andersson 		},
14574a66e76fSBjorn Andersson 	},
14584a66e76fSBjorn Andersson };
14594a66e76fSBjorn Andersson 
14604a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_intf_clk = {
14614a66e76fSBjorn Andersson 	.halt_reg = 0x2048,
14624a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14634a66e76fSBjorn Andersson 	.clkr = {
14644a66e76fSBjorn Andersson 		.enable_reg = 0x2048,
14654a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
14664a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
14674a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte0_intf_clk",
14684a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
14694a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte0_div_clk_src.clkr.hw,
14704a66e76fSBjorn Andersson 			},
14714a66e76fSBjorn Andersson 			.num_parents = 1,
14724a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14734a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14744a66e76fSBjorn Andersson 		},
14754a66e76fSBjorn Andersson 	},
14764a66e76fSBjorn Andersson };
14774a66e76fSBjorn Andersson 
14784a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_clk = {
14794a66e76fSBjorn Andersson 	.halt_reg = 0x204c,
14804a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14814a66e76fSBjorn Andersson 	.clkr = {
14824a66e76fSBjorn Andersson 		.enable_reg = 0x204c,
14834a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
14844a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
14854a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte1_clk",
14864a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
14874a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte1_clk_src.clkr.hw,
14884a66e76fSBjorn Andersson 			},
14894a66e76fSBjorn Andersson 			.num_parents = 1,
14904a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14914a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
14924a66e76fSBjorn Andersson 		},
14934a66e76fSBjorn Andersson 	},
14944a66e76fSBjorn Andersson };
14954a66e76fSBjorn Andersson 
14964a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_clk = {
14974a66e76fSBjorn Andersson 	.halt_reg = 0x204c,
14984a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
14994a66e76fSBjorn Andersson 	.clkr = {
15004a66e76fSBjorn Andersson 		.enable_reg = 0x204c,
15014a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15024a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15034a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte1_clk",
15044a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15054a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte1_clk_src.clkr.hw,
15064a66e76fSBjorn Andersson 			},
15074a66e76fSBjorn Andersson 			.num_parents = 1,
15084a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15094a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
15104a66e76fSBjorn Andersson 		},
15114a66e76fSBjorn Andersson 	},
15124a66e76fSBjorn Andersson };
15134a66e76fSBjorn Andersson 
15144a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_intf_clk = {
15154a66e76fSBjorn Andersson 	.halt_reg = 0x2050,
15164a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
15174a66e76fSBjorn Andersson 	.clkr = {
15184a66e76fSBjorn Andersson 		.enable_reg = 0x2050,
15194a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15204a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15214a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_byte1_intf_clk",
15224a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15234a66e76fSBjorn Andersson 				&disp0_cc_mdss_byte1_div_clk_src.clkr.hw,
15244a66e76fSBjorn Andersson 			},
15254a66e76fSBjorn Andersson 			.num_parents = 1,
15264a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15274a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
15284a66e76fSBjorn Andersson 		},
15294a66e76fSBjorn Andersson 	},
15304a66e76fSBjorn Andersson };
15314a66e76fSBjorn Andersson 
15324a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_intf_clk = {
15334a66e76fSBjorn Andersson 	.halt_reg = 0x2050,
15344a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
15354a66e76fSBjorn Andersson 	.clkr = {
15364a66e76fSBjorn Andersson 		.enable_reg = 0x2050,
15374a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15384a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15394a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_byte1_intf_clk",
15404a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15414a66e76fSBjorn Andersson 				&disp1_cc_mdss_byte1_div_clk_src.clkr.hw,
15424a66e76fSBjorn Andersson 			},
15434a66e76fSBjorn Andersson 			.num_parents = 1,
15444a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15454a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
15464a66e76fSBjorn Andersson 		},
15474a66e76fSBjorn Andersson 	},
15484a66e76fSBjorn Andersson };
15494a66e76fSBjorn Andersson 
15504a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_aux_clk = {
15514a66e76fSBjorn Andersson 	.halt_reg = 0x206c,
15524a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
15534a66e76fSBjorn Andersson 	.clkr = {
15544a66e76fSBjorn Andersson 		.enable_reg = 0x206c,
15554a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15564a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15574a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_aux_clk",
15584a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15594a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_aux_clk_src.clkr.hw,
15604a66e76fSBjorn Andersson 			},
15614a66e76fSBjorn Andersson 			.num_parents = 1,
15624a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15634a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
15644a66e76fSBjorn Andersson 		},
15654a66e76fSBjorn Andersson 	},
15664a66e76fSBjorn Andersson };
15674a66e76fSBjorn Andersson 
15684a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_aux_clk = {
15694a66e76fSBjorn Andersson 	.halt_reg = 0x206c,
15704a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
15714a66e76fSBjorn Andersson 	.clkr = {
15724a66e76fSBjorn Andersson 		.enable_reg = 0x206c,
15734a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15744a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15754a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_aux_clk",
15764a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15774a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_aux_clk_src.clkr.hw,
15784a66e76fSBjorn Andersson 			},
15794a66e76fSBjorn Andersson 			.num_parents = 1,
15804a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15814a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
15824a66e76fSBjorn Andersson 		},
15834a66e76fSBjorn Andersson 	},
15844a66e76fSBjorn Andersson };
15854a66e76fSBjorn Andersson 
15864a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_clk = {
15874a66e76fSBjorn Andersson 	.halt_reg = 0x205c,
15884a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
15894a66e76fSBjorn Andersson 	.clkr = {
15904a66e76fSBjorn Andersson 		.enable_reg = 0x205c,
15914a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
15924a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
15934a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_link_clk",
15944a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
15954a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_clk_src.clkr.hw,
15964a66e76fSBjorn Andersson 			},
15974a66e76fSBjorn Andersson 			.num_parents = 1,
15984a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15994a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16004a66e76fSBjorn Andersson 		},
16014a66e76fSBjorn Andersson 	},
16024a66e76fSBjorn Andersson };
16034a66e76fSBjorn Andersson 
16044a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_clk = {
16054a66e76fSBjorn Andersson 	.halt_reg = 0x205c,
16064a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16074a66e76fSBjorn Andersson 	.clkr = {
16084a66e76fSBjorn Andersson 		.enable_reg = 0x205c,
16094a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
16104a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
16114a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_link_clk",
16124a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
16134a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_clk_src.clkr.hw,
16144a66e76fSBjorn Andersson 			},
16154a66e76fSBjorn Andersson 			.num_parents = 1,
16164a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16174a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16184a66e76fSBjorn Andersson 		},
16194a66e76fSBjorn Andersson 	},
16204a66e76fSBjorn Andersson };
16214a66e76fSBjorn Andersson 
16224a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_intf_clk = {
16234a66e76fSBjorn Andersson 	.halt_reg = 0x2060,
16244a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16254a66e76fSBjorn Andersson 	.clkr = {
16264a66e76fSBjorn Andersson 		.enable_reg = 0x2060,
16274a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
16284a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
16294a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_link_intf_clk",
16304a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
16314a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
16324a66e76fSBjorn Andersson 			},
16334a66e76fSBjorn Andersson 			.num_parents = 1,
16344a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16354a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16364a66e76fSBjorn Andersson 		},
16374a66e76fSBjorn Andersson 	},
16384a66e76fSBjorn Andersson };
16394a66e76fSBjorn Andersson 
16404a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_intf_clk = {
16414a66e76fSBjorn Andersson 	.halt_reg = 0x2060,
16424a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16434a66e76fSBjorn Andersson 	.clkr = {
16444a66e76fSBjorn Andersson 		.enable_reg = 0x2060,
16454a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
16464a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
16474a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_link_intf_clk",
16484a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
16494a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
16504a66e76fSBjorn Andersson 			},
16514a66e76fSBjorn Andersson 			.num_parents = 1,
16524a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16534a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16544a66e76fSBjorn Andersson 		},
16554a66e76fSBjorn Andersson 	},
16564a66e76fSBjorn Andersson };
16574a66e76fSBjorn Andersson 
16584a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel0_clk = {
16594a66e76fSBjorn Andersson 	.halt_reg = 0x2070,
16604a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16614a66e76fSBjorn Andersson 	.clkr = {
16624a66e76fSBjorn Andersson 		.enable_reg = 0x2070,
16634a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
16644a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
16654a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_pixel0_clk",
16664a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
16674a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
16684a66e76fSBjorn Andersson 			},
16694a66e76fSBjorn Andersson 			.num_parents = 1,
16704a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16714a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16724a66e76fSBjorn Andersson 		},
16734a66e76fSBjorn Andersson 	},
16744a66e76fSBjorn Andersson };
16754a66e76fSBjorn Andersson 
16764a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel0_clk = {
16774a66e76fSBjorn Andersson 	.halt_reg = 0x2070,
16784a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16794a66e76fSBjorn Andersson 	.clkr = {
16804a66e76fSBjorn Andersson 		.enable_reg = 0x2070,
16814a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
16824a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
16834a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_pixel0_clk",
16844a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
16854a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
16864a66e76fSBjorn Andersson 			},
16874a66e76fSBjorn Andersson 			.num_parents = 1,
16884a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16894a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
16904a66e76fSBjorn Andersson 		},
16914a66e76fSBjorn Andersson 	},
16924a66e76fSBjorn Andersson };
16934a66e76fSBjorn Andersson 
16944a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel1_clk = {
16954a66e76fSBjorn Andersson 	.halt_reg = 0x2074,
16964a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
16974a66e76fSBjorn Andersson 	.clkr = {
16984a66e76fSBjorn Andersson 		.enable_reg = 0x2074,
16994a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17004a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17014a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_pixel1_clk",
17024a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17034a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
17044a66e76fSBjorn Andersson 			},
17054a66e76fSBjorn Andersson 			.num_parents = 1,
17064a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17074a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17084a66e76fSBjorn Andersson 		},
17094a66e76fSBjorn Andersson 	},
17104a66e76fSBjorn Andersson };
17114a66e76fSBjorn Andersson 
17124a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel1_clk = {
17134a66e76fSBjorn Andersson 	.halt_reg = 0x2074,
17144a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
17154a66e76fSBjorn Andersson 	.clkr = {
17164a66e76fSBjorn Andersson 		.enable_reg = 0x2074,
17174a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17184a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17194a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_pixel1_clk",
17204a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17214a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
17224a66e76fSBjorn Andersson 			},
17234a66e76fSBjorn Andersson 			.num_parents = 1,
17244a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17254a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17264a66e76fSBjorn Andersson 		},
17274a66e76fSBjorn Andersson 	},
17284a66e76fSBjorn Andersson };
17294a66e76fSBjorn Andersson 
17304a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_usb_router_link_intf_clk = {
17314a66e76fSBjorn Andersson 	.halt_reg = 0x2064,
17324a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
17334a66e76fSBjorn Andersson 	.clkr = {
17344a66e76fSBjorn Andersson 		.enable_reg = 0x2064,
17354a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17364a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17374a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx0_usb_router_link_intf_clk",
17384a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17394a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
17404a66e76fSBjorn Andersson 			},
17414a66e76fSBjorn Andersson 			.num_parents = 1,
17424a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17434a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17444a66e76fSBjorn Andersson 		},
17454a66e76fSBjorn Andersson 	},
17464a66e76fSBjorn Andersson };
17474a66e76fSBjorn Andersson 
17484a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_usb_router_link_intf_clk = {
17494a66e76fSBjorn Andersson 	.halt_reg = 0x2064,
17504a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
17514a66e76fSBjorn Andersson 	.clkr = {
17524a66e76fSBjorn Andersson 		.enable_reg = 0x2064,
17534a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17544a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17554a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx0_usb_router_link_intf_clk",
17564a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17574a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
17584a66e76fSBjorn Andersson 			},
17594a66e76fSBjorn Andersson 			.num_parents = 1,
17604a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17614a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17624a66e76fSBjorn Andersson 		},
17634a66e76fSBjorn Andersson 	},
17644a66e76fSBjorn Andersson };
17654a66e76fSBjorn Andersson 
17664a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_aux_clk = {
17674a66e76fSBjorn Andersson 	.halt_reg = 0x20a0,
17684a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
17694a66e76fSBjorn Andersson 	.clkr = {
17704a66e76fSBjorn Andersson 		.enable_reg = 0x20a0,
17714a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17724a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17734a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_aux_clk",
17744a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17754a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_aux_clk_src.clkr.hw,
17764a66e76fSBjorn Andersson 			},
17774a66e76fSBjorn Andersson 			.num_parents = 1,
17784a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17794a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17804a66e76fSBjorn Andersson 		},
17814a66e76fSBjorn Andersson 	},
17824a66e76fSBjorn Andersson };
17834a66e76fSBjorn Andersson 
17844a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_aux_clk = {
17854a66e76fSBjorn Andersson 	.halt_reg = 0x20a0,
17864a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
17874a66e76fSBjorn Andersson 	.clkr = {
17884a66e76fSBjorn Andersson 		.enable_reg = 0x20a0,
17894a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
17904a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
17914a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_aux_clk",
17924a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
17934a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_aux_clk_src.clkr.hw,
17944a66e76fSBjorn Andersson 			},
17954a66e76fSBjorn Andersson 			.num_parents = 1,
17964a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17974a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
17984a66e76fSBjorn Andersson 		},
17994a66e76fSBjorn Andersson 	},
18004a66e76fSBjorn Andersson };
18014a66e76fSBjorn Andersson 
18024a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_clk = {
18034a66e76fSBjorn Andersson 	.halt_reg = 0x2084,
18044a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18054a66e76fSBjorn Andersson 	.clkr = {
18064a66e76fSBjorn Andersson 		.enable_reg = 0x2084,
18074a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18084a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18094a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_link_clk",
18104a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
18114a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_clk_src.clkr.hw,
18124a66e76fSBjorn Andersson 			},
18134a66e76fSBjorn Andersson 			.num_parents = 1,
18144a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18154a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
18164a66e76fSBjorn Andersson 		},
18174a66e76fSBjorn Andersson 	},
18184a66e76fSBjorn Andersson };
18194a66e76fSBjorn Andersson 
18204a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_clk = {
18214a66e76fSBjorn Andersson 	.halt_reg = 0x2084,
18224a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18234a66e76fSBjorn Andersson 	.clkr = {
18244a66e76fSBjorn Andersson 		.enable_reg = 0x2084,
18254a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18264a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18274a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_link_clk",
18284a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
18294a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_clk_src.clkr.hw,
18304a66e76fSBjorn Andersson 			},
18314a66e76fSBjorn Andersson 			.num_parents = 1,
18324a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18334a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
18344a66e76fSBjorn Andersson 		},
18354a66e76fSBjorn Andersson 	},
18364a66e76fSBjorn Andersson };
18374a66e76fSBjorn Andersson 
18384a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_intf_clk = {
18394a66e76fSBjorn Andersson 	.halt_reg = 0x2088,
18404a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18414a66e76fSBjorn Andersson 	.clkr = {
18424a66e76fSBjorn Andersson 		.enable_reg = 0x2088,
18434a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18444a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18454a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_link_intf_clk",
18464a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
18474a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
18484a66e76fSBjorn Andersson 			},
18494a66e76fSBjorn Andersson 			.num_parents = 1,
18504a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18514a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
18524a66e76fSBjorn Andersson 		},
18534a66e76fSBjorn Andersson 	},
18544a66e76fSBjorn Andersson };
18554a66e76fSBjorn Andersson 
18564a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_intf_clk = {
18574a66e76fSBjorn Andersson 	.halt_reg = 0x2088,
18584a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18594a66e76fSBjorn Andersson 	.clkr = {
18604a66e76fSBjorn Andersson 		.enable_reg = 0x2088,
18614a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18624a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18634a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_link_intf_clk",
18644a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
18654a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
18664a66e76fSBjorn Andersson 			},
18674a66e76fSBjorn Andersson 			.num_parents = 1,
18684a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18694a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
18704a66e76fSBjorn Andersson 		},
18714a66e76fSBjorn Andersson 	},
18724a66e76fSBjorn Andersson };
18734a66e76fSBjorn Andersson 
18744a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel0_clk = {
18754a66e76fSBjorn Andersson 	.halt_reg = 0x2078,
18764a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18774a66e76fSBjorn Andersson 	.clkr = {
18784a66e76fSBjorn Andersson 		.enable_reg = 0x2078,
18794a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18804a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18814a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_pixel0_clk",
18824a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
18834a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
18844a66e76fSBjorn Andersson 			},
18854a66e76fSBjorn Andersson 			.num_parents = 1,
18864a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18874a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
18884a66e76fSBjorn Andersson 		},
18894a66e76fSBjorn Andersson 	},
18904a66e76fSBjorn Andersson };
18914a66e76fSBjorn Andersson 
18924a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel0_clk = {
18934a66e76fSBjorn Andersson 	.halt_reg = 0x2078,
18944a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
18954a66e76fSBjorn Andersson 	.clkr = {
18964a66e76fSBjorn Andersson 		.enable_reg = 0x2078,
18974a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
18984a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
18994a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_pixel0_clk",
19004a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19014a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
19024a66e76fSBjorn Andersson 			},
19034a66e76fSBjorn Andersson 			.num_parents = 1,
19044a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19054a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19064a66e76fSBjorn Andersson 		},
19074a66e76fSBjorn Andersson 	},
19084a66e76fSBjorn Andersson };
19094a66e76fSBjorn Andersson 
19104a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel1_clk = {
19114a66e76fSBjorn Andersson 	.halt_reg = 0x236c,
19124a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
19134a66e76fSBjorn Andersson 	.clkr = {
19144a66e76fSBjorn Andersson 		.enable_reg = 0x236c,
19154a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
19164a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
19174a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_pixel1_clk",
19184a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19194a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
19204a66e76fSBjorn Andersson 			},
19214a66e76fSBjorn Andersson 			.num_parents = 1,
19224a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19234a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19244a66e76fSBjorn Andersson 		},
19254a66e76fSBjorn Andersson 	},
19264a66e76fSBjorn Andersson };
19274a66e76fSBjorn Andersson 
19284a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel1_clk = {
19294a66e76fSBjorn Andersson 	.halt_reg = 0x236c,
19304a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
19314a66e76fSBjorn Andersson 	.clkr = {
19324a66e76fSBjorn Andersson 		.enable_reg = 0x236c,
19334a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
19344a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
19354a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_pixel1_clk",
19364a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19374a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
19384a66e76fSBjorn Andersson 			},
19394a66e76fSBjorn Andersson 			.num_parents = 1,
19404a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19414a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19424a66e76fSBjorn Andersson 		},
19434a66e76fSBjorn Andersson 	},
19444a66e76fSBjorn Andersson };
19454a66e76fSBjorn Andersson 
19464a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_usb_router_link_intf_clk = {
19474a66e76fSBjorn Andersson 	.halt_reg = 0x208c,
19484a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
19494a66e76fSBjorn Andersson 	.clkr = {
19504a66e76fSBjorn Andersson 		.enable_reg = 0x208c,
19514a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
19524a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
19534a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx1_usb_router_link_intf_clk",
19544a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19554a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
19564a66e76fSBjorn Andersson 			},
19574a66e76fSBjorn Andersson 			.num_parents = 1,
19584a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19594a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19604a66e76fSBjorn Andersson 		},
19614a66e76fSBjorn Andersson 	},
19624a66e76fSBjorn Andersson };
19634a66e76fSBjorn Andersson 
19644a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_usb_router_link_intf_clk = {
19654a66e76fSBjorn Andersson 	.halt_reg = 0x208c,
19664a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
19674a66e76fSBjorn Andersson 	.clkr = {
19684a66e76fSBjorn Andersson 		.enable_reg = 0x208c,
19694a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
19704a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
19714a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx1_usb_router_link_intf_clk",
19724a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19734a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
19744a66e76fSBjorn Andersson 			},
19754a66e76fSBjorn Andersson 			.num_parents = 1,
19764a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19774a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19784a66e76fSBjorn Andersson 		},
19794a66e76fSBjorn Andersson 	},
19804a66e76fSBjorn Andersson };
19814a66e76fSBjorn Andersson 
19824a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_aux_clk = {
19834a66e76fSBjorn Andersson 	.halt_reg = 0x20a4,
19844a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
19854a66e76fSBjorn Andersson 	.clkr = {
19864a66e76fSBjorn Andersson 		.enable_reg = 0x20a4,
19874a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
19884a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
19894a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_aux_clk",
19904a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
19914a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_aux_clk_src.clkr.hw,
19924a66e76fSBjorn Andersson 			},
19934a66e76fSBjorn Andersson 			.num_parents = 1,
19944a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19954a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
19964a66e76fSBjorn Andersson 		},
19974a66e76fSBjorn Andersson 	},
19984a66e76fSBjorn Andersson };
19994a66e76fSBjorn Andersson 
20004a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_aux_clk = {
20014a66e76fSBjorn Andersson 	.halt_reg = 0x20a4,
20024a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20034a66e76fSBjorn Andersson 	.clkr = {
20044a66e76fSBjorn Andersson 		.enable_reg = 0x20a4,
20054a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20064a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20074a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_aux_clk",
20084a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20094a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_aux_clk_src.clkr.hw,
20104a66e76fSBjorn Andersson 			},
20114a66e76fSBjorn Andersson 			.num_parents = 1,
20124a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20134a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
20144a66e76fSBjorn Andersson 		},
20154a66e76fSBjorn Andersson 	},
20164a66e76fSBjorn Andersson };
20174a66e76fSBjorn Andersson 
20184a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_clk = {
20194a66e76fSBjorn Andersson 	.halt_reg = 0x2090,
20204a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20214a66e76fSBjorn Andersson 	.clkr = {
20224a66e76fSBjorn Andersson 		.enable_reg = 0x2090,
20234a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20244a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20254a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_link_clk",
20264a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20274a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_link_clk_src.clkr.hw,
20284a66e76fSBjorn Andersson 			},
20294a66e76fSBjorn Andersson 			.num_parents = 1,
20304a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20314a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
20324a66e76fSBjorn Andersson 		},
20334a66e76fSBjorn Andersson 	},
20344a66e76fSBjorn Andersson };
20354a66e76fSBjorn Andersson 
20364a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_clk = {
20374a66e76fSBjorn Andersson 	.halt_reg = 0x2090,
20384a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20394a66e76fSBjorn Andersson 	.clkr = {
20404a66e76fSBjorn Andersson 		.enable_reg = 0x2090,
20414a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20424a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20434a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_link_clk",
20444a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20454a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_link_clk_src.clkr.hw,
20464a66e76fSBjorn Andersson 			},
20474a66e76fSBjorn Andersson 			.num_parents = 1,
20484a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20494a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
20504a66e76fSBjorn Andersson 		},
20514a66e76fSBjorn Andersson 	},
20524a66e76fSBjorn Andersson };
20534a66e76fSBjorn Andersson 
20544a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_intf_clk = {
20554a66e76fSBjorn Andersson 	.halt_reg = 0x2094,
20564a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20574a66e76fSBjorn Andersson 	.clkr = {
20584a66e76fSBjorn Andersson 		.enable_reg = 0x2094,
20594a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20604a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20614a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_link_intf_clk",
20624a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20634a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
20644a66e76fSBjorn Andersson 			},
20654a66e76fSBjorn Andersson 			.num_parents = 1,
20664a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20674a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
20684a66e76fSBjorn Andersson 		},
20694a66e76fSBjorn Andersson 	},
20704a66e76fSBjorn Andersson };
20714a66e76fSBjorn Andersson 
20724a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_intf_clk = {
20734a66e76fSBjorn Andersson 	.halt_reg = 0x2094,
20744a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20754a66e76fSBjorn Andersson 	.clkr = {
20764a66e76fSBjorn Andersson 		.enable_reg = 0x2094,
20774a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20784a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20794a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_link_intf_clk",
20804a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20814a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
20824a66e76fSBjorn Andersson 			},
20834a66e76fSBjorn Andersson 			.num_parents = 1,
20844a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20854a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
20864a66e76fSBjorn Andersson 		},
20874a66e76fSBjorn Andersson 	},
20884a66e76fSBjorn Andersson };
20894a66e76fSBjorn Andersson 
20904a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel0_clk = {
20914a66e76fSBjorn Andersson 	.halt_reg = 0x207c,
20924a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
20934a66e76fSBjorn Andersson 	.clkr = {
20944a66e76fSBjorn Andersson 		.enable_reg = 0x207c,
20954a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
20964a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
20974a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_pixel0_clk",
20984a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
20994a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
21004a66e76fSBjorn Andersson 			},
21014a66e76fSBjorn Andersson 			.num_parents = 1,
21024a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21034a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21044a66e76fSBjorn Andersson 		},
21054a66e76fSBjorn Andersson 	},
21064a66e76fSBjorn Andersson };
21074a66e76fSBjorn Andersson 
21084a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel0_clk = {
21094a66e76fSBjorn Andersson 	.halt_reg = 0x207c,
21104a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
21114a66e76fSBjorn Andersson 	.clkr = {
21124a66e76fSBjorn Andersson 		.enable_reg = 0x207c,
21134a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
21144a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
21154a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_pixel0_clk",
21164a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
21174a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
21184a66e76fSBjorn Andersson 			},
21194a66e76fSBjorn Andersson 			.num_parents = 1,
21204a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21214a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21224a66e76fSBjorn Andersson 		},
21234a66e76fSBjorn Andersson 	},
21244a66e76fSBjorn Andersson };
21254a66e76fSBjorn Andersson 
21264a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel1_clk = {
21274a66e76fSBjorn Andersson 	.halt_reg = 0x2080,
21284a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
21294a66e76fSBjorn Andersson 	.clkr = {
21304a66e76fSBjorn Andersson 		.enable_reg = 0x2080,
21314a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
21324a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
21334a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx2_pixel1_clk",
21344a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
21354a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
21364a66e76fSBjorn Andersson 			},
21374a66e76fSBjorn Andersson 			.num_parents = 1,
21384a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21394a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21404a66e76fSBjorn Andersson 		},
21414a66e76fSBjorn Andersson 	},
21424a66e76fSBjorn Andersson };
21434a66e76fSBjorn Andersson 
21444a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel1_clk = {
21454a66e76fSBjorn Andersson 	.halt_reg = 0x2080,
21464a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
21474a66e76fSBjorn Andersson 	.clkr = {
21484a66e76fSBjorn Andersson 		.enable_reg = 0x2080,
21494a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
21504a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
21514a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx2_pixel1_clk",
21524a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
21534a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
21544a66e76fSBjorn Andersson 			},
21554a66e76fSBjorn Andersson 			.num_parents = 1,
21564a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21574a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21584a66e76fSBjorn Andersson 		},
21594a66e76fSBjorn Andersson 	},
21604a66e76fSBjorn Andersson };
21614a66e76fSBjorn Andersson 
21624a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_aux_clk = {
21634a66e76fSBjorn Andersson 	.halt_reg = 0x20b8,
21644a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
21654a66e76fSBjorn Andersson 	.clkr = {
21664a66e76fSBjorn Andersson 		.enable_reg = 0x20b8,
21674a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
21684a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
21694a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_aux_clk",
21704a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
21714a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_aux_clk_src.clkr.hw,
21724a66e76fSBjorn Andersson 			},
21734a66e76fSBjorn Andersson 			.num_parents = 1,
21744a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21754a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21764a66e76fSBjorn Andersson 		},
21774a66e76fSBjorn Andersson 	},
21784a66e76fSBjorn Andersson };
21794a66e76fSBjorn Andersson 
21804a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_aux_clk = {
21814a66e76fSBjorn Andersson 	.halt_reg = 0x20b8,
21824a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
21834a66e76fSBjorn Andersson 	.clkr = {
21844a66e76fSBjorn Andersson 		.enable_reg = 0x20b8,
21854a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
21864a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
21874a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_aux_clk",
21884a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
21894a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_aux_clk_src.clkr.hw,
21904a66e76fSBjorn Andersson 			},
21914a66e76fSBjorn Andersson 			.num_parents = 1,
21924a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21934a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
21944a66e76fSBjorn Andersson 		},
21954a66e76fSBjorn Andersson 	},
21964a66e76fSBjorn Andersson };
21974a66e76fSBjorn Andersson 
21984a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_clk = {
21994a66e76fSBjorn Andersson 	.halt_reg = 0x20ac,
22004a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22014a66e76fSBjorn Andersson 	.clkr = {
22024a66e76fSBjorn Andersson 		.enable_reg = 0x20ac,
22034a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22044a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22054a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_link_clk",
22064a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22074a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_link_clk_src.clkr.hw,
22084a66e76fSBjorn Andersson 			},
22094a66e76fSBjorn Andersson 			.num_parents = 1,
22104a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22114a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
22124a66e76fSBjorn Andersson 		},
22134a66e76fSBjorn Andersson 	},
22144a66e76fSBjorn Andersson };
22154a66e76fSBjorn Andersson 
22164a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_clk = {
22174a66e76fSBjorn Andersson 	.halt_reg = 0x20ac,
22184a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22194a66e76fSBjorn Andersson 	.clkr = {
22204a66e76fSBjorn Andersson 		.enable_reg = 0x20ac,
22214a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22224a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22234a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_link_clk",
22244a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22254a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_link_clk_src.clkr.hw,
22264a66e76fSBjorn Andersson 			},
22274a66e76fSBjorn Andersson 			.num_parents = 1,
22284a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22294a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
22304a66e76fSBjorn Andersson 		},
22314a66e76fSBjorn Andersson 	},
22324a66e76fSBjorn Andersson };
22334a66e76fSBjorn Andersson 
22344a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_intf_clk = {
22354a66e76fSBjorn Andersson 	.halt_reg = 0x20b0,
22364a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22374a66e76fSBjorn Andersson 	.clkr = {
22384a66e76fSBjorn Andersson 		.enable_reg = 0x20b0,
22394a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22404a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22414a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_link_intf_clk",
22424a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22434a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
22444a66e76fSBjorn Andersson 			},
22454a66e76fSBjorn Andersson 			.num_parents = 1,
22464a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22474a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
22484a66e76fSBjorn Andersson 		},
22494a66e76fSBjorn Andersson 	},
22504a66e76fSBjorn Andersson };
22514a66e76fSBjorn Andersson 
22524a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_intf_clk = {
22534a66e76fSBjorn Andersson 	.halt_reg = 0x20b0,
22544a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22554a66e76fSBjorn Andersson 	.clkr = {
22564a66e76fSBjorn Andersson 		.enable_reg = 0x20b0,
22574a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22584a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22594a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_link_intf_clk",
22604a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22614a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
22624a66e76fSBjorn Andersson 			},
22634a66e76fSBjorn Andersson 			.num_parents = 1,
22644a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22654a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
22664a66e76fSBjorn Andersson 		},
22674a66e76fSBjorn Andersson 	},
22684a66e76fSBjorn Andersson };
22694a66e76fSBjorn Andersson 
22704a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_pixel0_clk = {
22714a66e76fSBjorn Andersson 	.halt_reg = 0x20a8,
22724a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22734a66e76fSBjorn Andersson 	.clkr = {
22744a66e76fSBjorn Andersson 		.enable_reg = 0x20a8,
22754a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22764a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22774a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_dptx3_pixel0_clk",
22784a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22794a66e76fSBjorn Andersson 				&disp0_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
22804a66e76fSBjorn Andersson 			},
22814a66e76fSBjorn Andersson 			.num_parents = 1,
22824a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22834a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
22844a66e76fSBjorn Andersson 		},
22854a66e76fSBjorn Andersson 	},
22864a66e76fSBjorn Andersson };
22874a66e76fSBjorn Andersson 
22884a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_pixel0_clk = {
22894a66e76fSBjorn Andersson 	.halt_reg = 0x20a8,
22904a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
22914a66e76fSBjorn Andersson 	.clkr = {
22924a66e76fSBjorn Andersson 		.enable_reg = 0x20a8,
22934a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
22944a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
22954a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_dptx3_pixel0_clk",
22964a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
22974a66e76fSBjorn Andersson 				&disp1_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
22984a66e76fSBjorn Andersson 			},
22994a66e76fSBjorn Andersson 			.num_parents = 1,
23004a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23014a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23024a66e76fSBjorn Andersson 		},
23034a66e76fSBjorn Andersson 	},
23044a66e76fSBjorn Andersson };
23054a66e76fSBjorn Andersson 
23064a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc0_clk = {
23074a66e76fSBjorn Andersson 	.halt_reg = 0x2054,
23084a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23094a66e76fSBjorn Andersson 	.clkr = {
23104a66e76fSBjorn Andersson 		.enable_reg = 0x2054,
23114a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
23124a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
23134a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_esc0_clk",
23144a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
23154a66e76fSBjorn Andersson 				&disp0_cc_mdss_esc0_clk_src.clkr.hw,
23164a66e76fSBjorn Andersson 			},
23174a66e76fSBjorn Andersson 			.num_parents = 1,
23184a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23194a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23204a66e76fSBjorn Andersson 		},
23214a66e76fSBjorn Andersson 	},
23224a66e76fSBjorn Andersson };
23234a66e76fSBjorn Andersson 
23244a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc0_clk = {
23254a66e76fSBjorn Andersson 	.halt_reg = 0x2054,
23264a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23274a66e76fSBjorn Andersson 	.clkr = {
23284a66e76fSBjorn Andersson 		.enable_reg = 0x2054,
23294a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
23304a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
23314a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_esc0_clk",
23324a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
23334a66e76fSBjorn Andersson 				&disp1_cc_mdss_esc0_clk_src.clkr.hw,
23344a66e76fSBjorn Andersson 			},
23354a66e76fSBjorn Andersson 			.num_parents = 1,
23364a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23374a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23384a66e76fSBjorn Andersson 		},
23394a66e76fSBjorn Andersson 	},
23404a66e76fSBjorn Andersson };
23414a66e76fSBjorn Andersson 
23424a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc1_clk = {
23434a66e76fSBjorn Andersson 	.halt_reg = 0x2058,
23444a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23454a66e76fSBjorn Andersson 	.clkr = {
23464a66e76fSBjorn Andersson 		.enable_reg = 0x2058,
23474a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
23484a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
23494a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_esc1_clk",
23504a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
23514a66e76fSBjorn Andersson 				&disp0_cc_mdss_esc1_clk_src.clkr.hw,
23524a66e76fSBjorn Andersson 			},
23534a66e76fSBjorn Andersson 			.num_parents = 1,
23544a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23554a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23564a66e76fSBjorn Andersson 		},
23574a66e76fSBjorn Andersson 	},
23584a66e76fSBjorn Andersson };
23594a66e76fSBjorn Andersson 
23604a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc1_clk = {
23614a66e76fSBjorn Andersson 	.halt_reg = 0x2058,
23624a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23634a66e76fSBjorn Andersson 	.clkr = {
23644a66e76fSBjorn Andersson 		.enable_reg = 0x2058,
23654a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
23664a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
23674a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_esc1_clk",
23684a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
23694a66e76fSBjorn Andersson 				&disp1_cc_mdss_esc1_clk_src.clkr.hw,
23704a66e76fSBjorn Andersson 			},
23714a66e76fSBjorn Andersson 			.num_parents = 1,
23724a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23734a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23744a66e76fSBjorn Andersson 		},
23754a66e76fSBjorn Andersson 	},
23764a66e76fSBjorn Andersson };
23774a66e76fSBjorn Andersson 
23784a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp1_clk = {
23794a66e76fSBjorn Andersson 	.halt_reg = 0x2014,
23804a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23814a66e76fSBjorn Andersson 	.clkr = {
23824a66e76fSBjorn Andersson 		.enable_reg = 0x2014,
23834a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
23844a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
23854a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp1_clk",
23864a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
23874a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
23884a66e76fSBjorn Andersson 			},
23894a66e76fSBjorn Andersson 			.num_parents = 1,
23904a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23914a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
23924a66e76fSBjorn Andersson 		},
23934a66e76fSBjorn Andersson 	},
23944a66e76fSBjorn Andersson };
23954a66e76fSBjorn Andersson 
23964a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp1_clk = {
23974a66e76fSBjorn Andersson 	.halt_reg = 0x2014,
23984a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
23994a66e76fSBjorn Andersson 	.clkr = {
24004a66e76fSBjorn Andersson 		.enable_reg = 0x2014,
24014a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24024a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24034a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp1_clk",
24044a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24054a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
24064a66e76fSBjorn Andersson 			},
24074a66e76fSBjorn Andersson 			.num_parents = 1,
24084a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24094a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
24104a66e76fSBjorn Andersson 		},
24114a66e76fSBjorn Andersson 	},
24124a66e76fSBjorn Andersson };
24134a66e76fSBjorn Andersson 
24144a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_clk = {
24154a66e76fSBjorn Andersson 	.halt_reg = 0x200c,
24164a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
24174a66e76fSBjorn Andersson 	.clkr = {
24184a66e76fSBjorn Andersson 		.enable_reg = 0x200c,
24194a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24204a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24214a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_clk",
24224a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24234a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
24244a66e76fSBjorn Andersson 			},
24254a66e76fSBjorn Andersson 			.num_parents = 1,
24264a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24274a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
24284a66e76fSBjorn Andersson 		},
24294a66e76fSBjorn Andersson 	},
24304a66e76fSBjorn Andersson };
24314a66e76fSBjorn Andersson 
24324a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_clk = {
24334a66e76fSBjorn Andersson 	.halt_reg = 0x200c,
24344a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
24354a66e76fSBjorn Andersson 	.clkr = {
24364a66e76fSBjorn Andersson 		.enable_reg = 0x200c,
24374a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24384a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24394a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_clk",
24404a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24414a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
24424a66e76fSBjorn Andersson 			},
24434a66e76fSBjorn Andersson 			.num_parents = 1,
24444a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24454a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
24464a66e76fSBjorn Andersson 		},
24474a66e76fSBjorn Andersson 	},
24484a66e76fSBjorn Andersson };
24494a66e76fSBjorn Andersson 
24504a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut1_clk = {
24514a66e76fSBjorn Andersson 	.halt_reg = 0x2034,
24524a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
24534a66e76fSBjorn Andersson 	.clkr = {
24544a66e76fSBjorn Andersson 		.enable_reg = 0x2034,
24554a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24564a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24574a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_lut1_clk",
24584a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24594a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
24604a66e76fSBjorn Andersson 			},
24614a66e76fSBjorn Andersson 			.num_parents = 1,
24624a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24634a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
24644a66e76fSBjorn Andersson 		},
24654a66e76fSBjorn Andersson 	},
24664a66e76fSBjorn Andersson };
24674a66e76fSBjorn Andersson 
24684a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut1_clk = {
24694a66e76fSBjorn Andersson 	.halt_reg = 0x2034,
24704a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
24714a66e76fSBjorn Andersson 	.clkr = {
24724a66e76fSBjorn Andersson 		.enable_reg = 0x2034,
24734a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24744a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24754a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_lut1_clk",
24764a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24774a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
24784a66e76fSBjorn Andersson 			},
24794a66e76fSBjorn Andersson 			.num_parents = 1,
24804a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24814a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
24824a66e76fSBjorn Andersson 		},
24834a66e76fSBjorn Andersson 	},
24844a66e76fSBjorn Andersson };
24854a66e76fSBjorn Andersson 
24864a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut_clk = {
24874a66e76fSBjorn Andersson 	.halt_reg = 0x202c,
24884a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
24894a66e76fSBjorn Andersson 	.clkr = {
24904a66e76fSBjorn Andersson 		.enable_reg = 0x202c,
24914a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
24924a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
24934a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_mdp_lut_clk",
24944a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
24954a66e76fSBjorn Andersson 				&disp0_cc_mdss_mdp_clk_src.clkr.hw,
24964a66e76fSBjorn Andersson 			},
24974a66e76fSBjorn Andersson 			.num_parents = 1,
24984a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24994a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25004a66e76fSBjorn Andersson 		},
25014a66e76fSBjorn Andersson 	},
25024a66e76fSBjorn Andersson };
25034a66e76fSBjorn Andersson 
25044a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut_clk = {
25054a66e76fSBjorn Andersson 	.halt_reg = 0x202c,
25064a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
25074a66e76fSBjorn Andersson 	.clkr = {
25084a66e76fSBjorn Andersson 		.enable_reg = 0x202c,
25094a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
25104a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
25114a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_mdp_lut_clk",
25124a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
25134a66e76fSBjorn Andersson 				&disp1_cc_mdss_mdp_clk_src.clkr.hw,
25144a66e76fSBjorn Andersson 			},
25154a66e76fSBjorn Andersson 			.num_parents = 1,
25164a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
25174a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25184a66e76fSBjorn Andersson 		},
25194a66e76fSBjorn Andersson 	},
25204a66e76fSBjorn Andersson };
25214a66e76fSBjorn Andersson 
25224a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_non_gdsc_ahb_clk = {
25234a66e76fSBjorn Andersson 	.halt_reg = 0x4004,
25244a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
25254a66e76fSBjorn Andersson 	.clkr = {
25264a66e76fSBjorn Andersson 		.enable_reg = 0x4004,
25274a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
25284a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
25294a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_non_gdsc_ahb_clk",
25304a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
25314a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
25324a66e76fSBjorn Andersson 			},
25334a66e76fSBjorn Andersson 			.num_parents = 1,
25344a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
25354a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25364a66e76fSBjorn Andersson 		},
25374a66e76fSBjorn Andersson 	},
25384a66e76fSBjorn Andersson };
25394a66e76fSBjorn Andersson 
25404a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_non_gdsc_ahb_clk = {
25414a66e76fSBjorn Andersson 	.halt_reg = 0x4004,
25424a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
25434a66e76fSBjorn Andersson 	.clkr = {
25444a66e76fSBjorn Andersson 		.enable_reg = 0x4004,
25454a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
25464a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
25474a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_non_gdsc_ahb_clk",
25484a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
25494a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
25504a66e76fSBjorn Andersson 			},
25514a66e76fSBjorn Andersson 			.num_parents = 1,
25524a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
25534a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25544a66e76fSBjorn Andersson 		},
25554a66e76fSBjorn Andersson 	},
25564a66e76fSBjorn Andersson };
25574a66e76fSBjorn Andersson 
25584a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk0_clk = {
25594a66e76fSBjorn Andersson 	.halt_reg = 0x2004,
25604a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
25614a66e76fSBjorn Andersson 	.clkr = {
25624a66e76fSBjorn Andersson 		.enable_reg = 0x2004,
25634a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
25644a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
25654a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_pclk0_clk",
25664a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
25674a66e76fSBjorn Andersson 				&disp0_cc_mdss_pclk0_clk_src.clkr.hw,
25684a66e76fSBjorn Andersson 			},
25694a66e76fSBjorn Andersson 			.num_parents = 1,
25704a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
25714a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25724a66e76fSBjorn Andersson 		},
25734a66e76fSBjorn Andersson 	},
25744a66e76fSBjorn Andersson };
25754a66e76fSBjorn Andersson 
25764a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk0_clk = {
25774a66e76fSBjorn Andersson 	.halt_reg = 0x2004,
25784a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
25794a66e76fSBjorn Andersson 	.clkr = {
25804a66e76fSBjorn Andersson 		.enable_reg = 0x2004,
25814a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
25824a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
25834a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_pclk0_clk",
25844a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
25854a66e76fSBjorn Andersson 				&disp1_cc_mdss_pclk0_clk_src.clkr.hw,
25864a66e76fSBjorn Andersson 			},
25874a66e76fSBjorn Andersson 			.num_parents = 1,
25884a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
25894a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
25904a66e76fSBjorn Andersson 		},
25914a66e76fSBjorn Andersson 	},
25924a66e76fSBjorn Andersson };
25934a66e76fSBjorn Andersson 
25944a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk1_clk = {
25954a66e76fSBjorn Andersson 	.halt_reg = 0x2008,
25964a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
25974a66e76fSBjorn Andersson 	.clkr = {
25984a66e76fSBjorn Andersson 		.enable_reg = 0x2008,
25994a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26004a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26014a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_pclk1_clk",
26024a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26034a66e76fSBjorn Andersson 				&disp0_cc_mdss_pclk1_clk_src.clkr.hw,
26044a66e76fSBjorn Andersson 			},
26054a66e76fSBjorn Andersson 			.num_parents = 1,
26064a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26074a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26084a66e76fSBjorn Andersson 		},
26094a66e76fSBjorn Andersson 	},
26104a66e76fSBjorn Andersson };
26114a66e76fSBjorn Andersson 
26124a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk1_clk = {
26134a66e76fSBjorn Andersson 	.halt_reg = 0x2008,
26144a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
26154a66e76fSBjorn Andersson 	.clkr = {
26164a66e76fSBjorn Andersson 		.enable_reg = 0x2008,
26174a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26184a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26194a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_pclk1_clk",
26204a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26214a66e76fSBjorn Andersson 				&disp1_cc_mdss_pclk1_clk_src.clkr.hw,
26224a66e76fSBjorn Andersson 			},
26234a66e76fSBjorn Andersson 			.num_parents = 1,
26244a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26254a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26264a66e76fSBjorn Andersson 		},
26274a66e76fSBjorn Andersson 	},
26284a66e76fSBjorn Andersson };
26294a66e76fSBjorn Andersson 
26304a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot1_clk = {
26314a66e76fSBjorn Andersson 	.halt_reg = 0x2024,
26324a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
26334a66e76fSBjorn Andersson 	.clkr = {
26344a66e76fSBjorn Andersson 		.enable_reg = 0x2024,
26354a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26364a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26374a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rot1_clk",
26384a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26394a66e76fSBjorn Andersson 				&disp0_cc_mdss_rot_clk_src.clkr.hw,
26404a66e76fSBjorn Andersson 			},
26414a66e76fSBjorn Andersson 			.num_parents = 1,
26424a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26434a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26444a66e76fSBjorn Andersson 		},
26454a66e76fSBjorn Andersson 	},
26464a66e76fSBjorn Andersson };
26474a66e76fSBjorn Andersson 
26484a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot1_clk = {
26494a66e76fSBjorn Andersson 	.halt_reg = 0x2024,
26504a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
26514a66e76fSBjorn Andersson 	.clkr = {
26524a66e76fSBjorn Andersson 		.enable_reg = 0x2024,
26534a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26544a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26554a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rot1_clk",
26564a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26574a66e76fSBjorn Andersson 				&disp1_cc_mdss_rot_clk_src.clkr.hw,
26584a66e76fSBjorn Andersson 			},
26594a66e76fSBjorn Andersson 			.num_parents = 1,
26604a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26614a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26624a66e76fSBjorn Andersson 		},
26634a66e76fSBjorn Andersson 	},
26644a66e76fSBjorn Andersson };
26654a66e76fSBjorn Andersson 
26664a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot_clk = {
26674a66e76fSBjorn Andersson 	.halt_reg = 0x201c,
26684a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
26694a66e76fSBjorn Andersson 	.clkr = {
26704a66e76fSBjorn Andersson 		.enable_reg = 0x201c,
26714a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26724a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26734a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rot_clk",
26744a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26754a66e76fSBjorn Andersson 				&disp0_cc_mdss_rot_clk_src.clkr.hw,
26764a66e76fSBjorn Andersson 			},
26774a66e76fSBjorn Andersson 			.num_parents = 1,
26784a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26794a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26804a66e76fSBjorn Andersson 		},
26814a66e76fSBjorn Andersson 	},
26824a66e76fSBjorn Andersson };
26834a66e76fSBjorn Andersson 
26844a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot_clk = {
26854a66e76fSBjorn Andersson 	.halt_reg = 0x201c,
26864a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
26874a66e76fSBjorn Andersson 	.clkr = {
26884a66e76fSBjorn Andersson 		.enable_reg = 0x201c,
26894a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
26904a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
26914a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rot_clk",
26924a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
26934a66e76fSBjorn Andersson 				&disp1_cc_mdss_rot_clk_src.clkr.hw,
26944a66e76fSBjorn Andersson 			},
26954a66e76fSBjorn Andersson 			.num_parents = 1,
26964a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26974a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
26984a66e76fSBjorn Andersson 		},
26994a66e76fSBjorn Andersson 	},
27004a66e76fSBjorn Andersson };
27014a66e76fSBjorn Andersson 
27024a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_ahb_clk = {
27034a66e76fSBjorn Andersson 	.halt_reg = 0x400c,
27044a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27054a66e76fSBjorn Andersson 	.clkr = {
27064a66e76fSBjorn Andersson 		.enable_reg = 0x400c,
27074a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27084a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27094a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rscc_ahb_clk",
27104a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
27114a66e76fSBjorn Andersson 				&disp0_cc_mdss_ahb_clk_src.clkr.hw,
27124a66e76fSBjorn Andersson 			},
27134a66e76fSBjorn Andersson 			.num_parents = 1,
27144a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27154a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
27164a66e76fSBjorn Andersson 		},
27174a66e76fSBjorn Andersson 	},
27184a66e76fSBjorn Andersson };
27194a66e76fSBjorn Andersson 
27204a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_ahb_clk = {
27214a66e76fSBjorn Andersson 	.halt_reg = 0x400c,
27224a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27234a66e76fSBjorn Andersson 	.clkr = {
27244a66e76fSBjorn Andersson 		.enable_reg = 0x400c,
27254a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27264a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27274a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rscc_ahb_clk",
27284a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
27294a66e76fSBjorn Andersson 				&disp1_cc_mdss_ahb_clk_src.clkr.hw,
27304a66e76fSBjorn Andersson 			},
27314a66e76fSBjorn Andersson 			.num_parents = 1,
27324a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27334a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
27344a66e76fSBjorn Andersson 		},
27354a66e76fSBjorn Andersson 	},
27364a66e76fSBjorn Andersson };
27374a66e76fSBjorn Andersson 
27384a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_vsync_clk = {
27394a66e76fSBjorn Andersson 	.halt_reg = 0x4008,
27404a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27414a66e76fSBjorn Andersson 	.clkr = {
27424a66e76fSBjorn Andersson 		.enable_reg = 0x4008,
27434a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27444a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27454a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_rscc_vsync_clk",
27464a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
27474a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
27484a66e76fSBjorn Andersson 			},
27494a66e76fSBjorn Andersson 			.num_parents = 1,
27504a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27514a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
27524a66e76fSBjorn Andersson 		},
27534a66e76fSBjorn Andersson 	},
27544a66e76fSBjorn Andersson };
27554a66e76fSBjorn Andersson 
27564a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_vsync_clk = {
27574a66e76fSBjorn Andersson 	.halt_reg = 0x4008,
27584a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27594a66e76fSBjorn Andersson 	.clkr = {
27604a66e76fSBjorn Andersson 		.enable_reg = 0x4008,
27614a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27624a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27634a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_rscc_vsync_clk",
27644a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
27654a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
27664a66e76fSBjorn Andersson 			},
27674a66e76fSBjorn Andersson 			.num_parents = 1,
27684a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27694a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
27704a66e76fSBjorn Andersson 		},
27714a66e76fSBjorn Andersson 	},
27724a66e76fSBjorn Andersson };
27734a66e76fSBjorn Andersson 
27744a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync1_clk = {
27754a66e76fSBjorn Andersson 	.halt_reg = 0x2040,
27764a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27774a66e76fSBjorn Andersson 	.clkr = {
27784a66e76fSBjorn Andersson 		.enable_reg = 0x2040,
27794a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27804a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27814a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_vsync1_clk",
27824a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
27834a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
27844a66e76fSBjorn Andersson 			},
27854a66e76fSBjorn Andersson 			.num_parents = 1,
27864a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27874a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
27884a66e76fSBjorn Andersson 		},
27894a66e76fSBjorn Andersson 	},
27904a66e76fSBjorn Andersson };
27914a66e76fSBjorn Andersson 
27924a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync1_clk = {
27934a66e76fSBjorn Andersson 	.halt_reg = 0x2040,
27944a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
27954a66e76fSBjorn Andersson 	.clkr = {
27964a66e76fSBjorn Andersson 		.enable_reg = 0x2040,
27974a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
27984a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
27994a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_vsync1_clk",
28004a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
28014a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
28024a66e76fSBjorn Andersson 			},
28034a66e76fSBjorn Andersson 			.num_parents = 1,
28044a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28054a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
28064a66e76fSBjorn Andersson 		},
28074a66e76fSBjorn Andersson 	},
28084a66e76fSBjorn Andersson };
28094a66e76fSBjorn Andersson 
28104a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync_clk = {
28114a66e76fSBjorn Andersson 	.halt_reg = 0x203c,
28124a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
28134a66e76fSBjorn Andersson 	.clkr = {
28144a66e76fSBjorn Andersson 		.enable_reg = 0x203c,
28154a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
28164a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
28174a66e76fSBjorn Andersson 			.name = "disp0_cc_mdss_vsync_clk",
28184a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
28194a66e76fSBjorn Andersson 				&disp0_cc_mdss_vsync_clk_src.clkr.hw,
28204a66e76fSBjorn Andersson 			},
28214a66e76fSBjorn Andersson 			.num_parents = 1,
28224a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28234a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
28244a66e76fSBjorn Andersson 		},
28254a66e76fSBjorn Andersson 	},
28264a66e76fSBjorn Andersson };
28274a66e76fSBjorn Andersson 
28284a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync_clk = {
28294a66e76fSBjorn Andersson 	.halt_reg = 0x203c,
28304a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
28314a66e76fSBjorn Andersson 	.clkr = {
28324a66e76fSBjorn Andersson 		.enable_reg = 0x203c,
28334a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
28344a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
28354a66e76fSBjorn Andersson 			.name = "disp1_cc_mdss_vsync_clk",
28364a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
28374a66e76fSBjorn Andersson 				&disp1_cc_mdss_vsync_clk_src.clkr.hw,
28384a66e76fSBjorn Andersson 			},
28394a66e76fSBjorn Andersson 			.num_parents = 1,
28404a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28414a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
28424a66e76fSBjorn Andersson 		},
28434a66e76fSBjorn Andersson 	},
28444a66e76fSBjorn Andersson };
28454a66e76fSBjorn Andersson 
28464a66e76fSBjorn Andersson static struct clk_branch disp0_cc_sleep_clk = {
28474a66e76fSBjorn Andersson 	.halt_reg = 0x6078,
28484a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
28494a66e76fSBjorn Andersson 	.clkr = {
28504a66e76fSBjorn Andersson 		.enable_reg = 0x6078,
28514a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
28524a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
28534a66e76fSBjorn Andersson 			.name = "disp0_cc_sleep_clk",
28544a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
28554a66e76fSBjorn Andersson 				&disp0_cc_sleep_clk_src.clkr.hw,
28564a66e76fSBjorn Andersson 			},
28574a66e76fSBjorn Andersson 			.num_parents = 1,
28584a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28594a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
28604a66e76fSBjorn Andersson 		},
28614a66e76fSBjorn Andersson 	},
28624a66e76fSBjorn Andersson };
28634a66e76fSBjorn Andersson 
28644a66e76fSBjorn Andersson static struct clk_branch disp1_cc_sleep_clk = {
28654a66e76fSBjorn Andersson 	.halt_reg = 0x6078,
28664a66e76fSBjorn Andersson 	.halt_check = BRANCH_HALT,
28674a66e76fSBjorn Andersson 	.clkr = {
28684a66e76fSBjorn Andersson 		.enable_reg = 0x6078,
28694a66e76fSBjorn Andersson 		.enable_mask = BIT(0),
28704a66e76fSBjorn Andersson 		.hw.init = &(const struct clk_init_data) {
28714a66e76fSBjorn Andersson 			.name = "disp1_cc_sleep_clk",
28724a66e76fSBjorn Andersson 			.parent_hws = (const struct clk_hw*[]){
28734a66e76fSBjorn Andersson 				&disp1_cc_sleep_clk_src.clkr.hw,
28744a66e76fSBjorn Andersson 			},
28754a66e76fSBjorn Andersson 			.num_parents = 1,
28764a66e76fSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28774a66e76fSBjorn Andersson 			.ops = &clk_branch2_ops,
28784a66e76fSBjorn Andersson 		},
28794a66e76fSBjorn Andersson 	},
28804a66e76fSBjorn Andersson };
28814a66e76fSBjorn Andersson 
28824a66e76fSBjorn Andersson static struct clk_regmap *disp0_cc_sc8280xp_clocks[] = {
28834a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB1_CLK] = &disp0_cc_mdss_ahb1_clk.clkr,
28844a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK] = &disp0_cc_mdss_ahb_clk.clkr,
28854a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp0_cc_mdss_ahb_clk_src.clkr,
28864a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK] = &disp0_cc_mdss_byte0_clk.clkr,
28874a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp0_cc_mdss_byte0_clk_src.clkr,
28884a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp0_cc_mdss_byte0_div_clk_src.clkr,
28894a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp0_cc_mdss_byte0_intf_clk.clkr,
28904a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK] = &disp0_cc_mdss_byte1_clk.clkr,
28914a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp0_cc_mdss_byte1_clk_src.clkr,
28924a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp0_cc_mdss_byte1_div_clk_src.clkr,
28934a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp0_cc_mdss_byte1_intf_clk.clkr,
28944a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp0_cc_mdss_dptx0_aux_clk.clkr,
28954a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp0_cc_mdss_dptx0_aux_clk_src.clkr,
28964a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp0_cc_mdss_dptx0_link_clk.clkr,
28974a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp0_cc_mdss_dptx0_link_clk_src.clkr,
28984a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx0_link_div_clk_src.clkr,
28994a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_link_intf_clk.clkr,
29004a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp0_cc_mdss_dptx0_pixel0_clk.clkr,
29014a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel0_clk_src.clkr,
29024a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp0_cc_mdss_dptx0_pixel1_clk.clkr,
29034a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel1_clk_src.clkr,
29044a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
29054a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp0_cc_mdss_dptx1_aux_clk.clkr,
29064a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp0_cc_mdss_dptx1_aux_clk_src.clkr,
29074a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp0_cc_mdss_dptx1_link_clk.clkr,
29084a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp0_cc_mdss_dptx1_link_clk_src.clkr,
29094a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx1_link_div_clk_src.clkr,
29104a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_link_intf_clk.clkr,
29114a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp0_cc_mdss_dptx1_pixel0_clk.clkr,
29124a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel0_clk_src.clkr,
29134a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp0_cc_mdss_dptx1_pixel1_clk.clkr,
29144a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel1_clk_src.clkr,
29154a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
29164a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp0_cc_mdss_dptx2_aux_clk.clkr,
29174a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp0_cc_mdss_dptx2_aux_clk_src.clkr,
29184a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp0_cc_mdss_dptx2_link_clk.clkr,
29194a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp0_cc_mdss_dptx2_link_clk_src.clkr,
29204a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx2_link_div_clk_src.clkr,
29214a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp0_cc_mdss_dptx2_link_intf_clk.clkr,
29224a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp0_cc_mdss_dptx2_pixel0_clk.clkr,
29234a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel0_clk_src.clkr,
29244a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp0_cc_mdss_dptx2_pixel1_clk.clkr,
29254a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel1_clk_src.clkr,
29264a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp0_cc_mdss_dptx3_aux_clk.clkr,
29274a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp0_cc_mdss_dptx3_aux_clk_src.clkr,
29284a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp0_cc_mdss_dptx3_link_clk.clkr,
29294a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp0_cc_mdss_dptx3_link_clk_src.clkr,
29304a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx3_link_div_clk_src.clkr,
29314a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp0_cc_mdss_dptx3_link_intf_clk.clkr,
29324a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp0_cc_mdss_dptx3_pixel0_clk.clkr,
29334a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx3_pixel0_clk_src.clkr,
29344a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK] = &disp0_cc_mdss_esc0_clk.clkr,
29354a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp0_cc_mdss_esc0_clk_src.clkr,
29364a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK] = &disp0_cc_mdss_esc1_clk.clkr,
29374a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp0_cc_mdss_esc1_clk_src.clkr,
29384a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP1_CLK] = &disp0_cc_mdss_mdp1_clk.clkr,
29394a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK] = &disp0_cc_mdss_mdp_clk.clkr,
29404a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp0_cc_mdss_mdp_clk_src.clkr,
29414a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp0_cc_mdss_mdp_lut1_clk.clkr,
29424a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp0_cc_mdss_mdp_lut_clk.clkr,
29434a66e76fSBjorn Andersson 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp0_cc_mdss_non_gdsc_ahb_clk.clkr,
29444a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK] = &disp0_cc_mdss_pclk0_clk.clkr,
29454a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp0_cc_mdss_pclk0_clk_src.clkr,
29464a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK] = &disp0_cc_mdss_pclk1_clk.clkr,
29474a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp0_cc_mdss_pclk1_clk_src.clkr,
29484a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT1_CLK] = &disp0_cc_mdss_rot1_clk.clkr,
29494a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK] = &disp0_cc_mdss_rot_clk.clkr,
29504a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK_SRC] = &disp0_cc_mdss_rot_clk_src.clkr,
29514a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_AHB_CLK] = &disp0_cc_mdss_rscc_ahb_clk.clkr,
29524a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp0_cc_mdss_rscc_vsync_clk.clkr,
29534a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp0_cc_mdss_vsync1_clk.clkr,
29544a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK] = &disp0_cc_mdss_vsync_clk.clkr,
29554a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp0_cc_mdss_vsync_clk_src.clkr,
29564a66e76fSBjorn Andersson 	[DISP_CC_PLL0] = &disp0_cc_pll0.clkr,
29574a66e76fSBjorn Andersson 	[DISP_CC_PLL1] = &disp0_cc_pll1.clkr,
29584a66e76fSBjorn Andersson 	[DISP_CC_PLL1_OUT_EVEN] = &disp0_cc_pll1_out_even.clkr,
29594a66e76fSBjorn Andersson 	[DISP_CC_PLL2] = &disp0_cc_pll2.clkr,
29604a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK] = &disp0_cc_sleep_clk.clkr,
29614a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK_SRC] = &disp0_cc_sleep_clk_src.clkr,
29624a66e76fSBjorn Andersson };
29634a66e76fSBjorn Andersson 
29644a66e76fSBjorn Andersson static struct clk_regmap *disp1_cc_sc8280xp_clocks[] = {
29654a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB1_CLK] = &disp1_cc_mdss_ahb1_clk.clkr,
29664a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK] = &disp1_cc_mdss_ahb_clk.clkr,
29674a66e76fSBjorn Andersson 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp1_cc_mdss_ahb_clk_src.clkr,
29684a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK] = &disp1_cc_mdss_byte0_clk.clkr,
29694a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp1_cc_mdss_byte0_clk_src.clkr,
29704a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp1_cc_mdss_byte0_div_clk_src.clkr,
29714a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp1_cc_mdss_byte0_intf_clk.clkr,
29724a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK] = &disp1_cc_mdss_byte1_clk.clkr,
29734a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp1_cc_mdss_byte1_clk_src.clkr,
29744a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp1_cc_mdss_byte1_div_clk_src.clkr,
29754a66e76fSBjorn Andersson 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp1_cc_mdss_byte1_intf_clk.clkr,
29764a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp1_cc_mdss_dptx0_aux_clk.clkr,
29774a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp1_cc_mdss_dptx0_aux_clk_src.clkr,
29784a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp1_cc_mdss_dptx0_link_clk.clkr,
29794a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp1_cc_mdss_dptx0_link_clk_src.clkr,
29804a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx0_link_div_clk_src.clkr,
29814a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_link_intf_clk.clkr,
29824a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp1_cc_mdss_dptx0_pixel0_clk.clkr,
29834a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel0_clk_src.clkr,
29844a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp1_cc_mdss_dptx0_pixel1_clk.clkr,
29854a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel1_clk_src.clkr,
29864a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
29874a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp1_cc_mdss_dptx1_aux_clk.clkr,
29884a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp1_cc_mdss_dptx1_aux_clk_src.clkr,
29894a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp1_cc_mdss_dptx1_link_clk.clkr,
29904a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp1_cc_mdss_dptx1_link_clk_src.clkr,
29914a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx1_link_div_clk_src.clkr,
29924a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_link_intf_clk.clkr,
29934a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp1_cc_mdss_dptx1_pixel0_clk.clkr,
29944a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel0_clk_src.clkr,
29954a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp1_cc_mdss_dptx1_pixel1_clk.clkr,
29964a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel1_clk_src.clkr,
29974a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
29984a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp1_cc_mdss_dptx2_aux_clk.clkr,
29994a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp1_cc_mdss_dptx2_aux_clk_src.clkr,
30004a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp1_cc_mdss_dptx2_link_clk.clkr,
30014a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp1_cc_mdss_dptx2_link_clk_src.clkr,
30024a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx2_link_div_clk_src.clkr,
30034a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp1_cc_mdss_dptx2_link_intf_clk.clkr,
30044a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp1_cc_mdss_dptx2_pixel0_clk.clkr,
30054a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel0_clk_src.clkr,
30064a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp1_cc_mdss_dptx2_pixel1_clk.clkr,
30074a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel1_clk_src.clkr,
30084a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp1_cc_mdss_dptx3_aux_clk.clkr,
30094a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp1_cc_mdss_dptx3_aux_clk_src.clkr,
30104a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp1_cc_mdss_dptx3_link_clk.clkr,
30114a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp1_cc_mdss_dptx3_link_clk_src.clkr,
30124a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx3_link_div_clk_src.clkr,
30134a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp1_cc_mdss_dptx3_link_intf_clk.clkr,
30144a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp1_cc_mdss_dptx3_pixel0_clk.clkr,
30154a66e76fSBjorn Andersson 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx3_pixel0_clk_src.clkr,
30164a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK] = &disp1_cc_mdss_esc0_clk.clkr,
30174a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp1_cc_mdss_esc0_clk_src.clkr,
30184a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK] = &disp1_cc_mdss_esc1_clk.clkr,
30194a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp1_cc_mdss_esc1_clk_src.clkr,
30204a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP1_CLK] = &disp1_cc_mdss_mdp1_clk.clkr,
30214a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK] = &disp1_cc_mdss_mdp_clk.clkr,
30224a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp1_cc_mdss_mdp_clk_src.clkr,
30234a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp1_cc_mdss_mdp_lut1_clk.clkr,
30244a66e76fSBjorn Andersson 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp1_cc_mdss_mdp_lut_clk.clkr,
30254a66e76fSBjorn Andersson 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp1_cc_mdss_non_gdsc_ahb_clk.clkr,
30264a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK] = &disp1_cc_mdss_pclk0_clk.clkr,
30274a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp1_cc_mdss_pclk0_clk_src.clkr,
30284a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK] = &disp1_cc_mdss_pclk1_clk.clkr,
30294a66e76fSBjorn Andersson 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp1_cc_mdss_pclk1_clk_src.clkr,
30304a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT1_CLK] = &disp1_cc_mdss_rot1_clk.clkr,
30314a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK] = &disp1_cc_mdss_rot_clk.clkr,
30324a66e76fSBjorn Andersson 	[DISP_CC_MDSS_ROT_CLK_SRC] = &disp1_cc_mdss_rot_clk_src.clkr,
30334a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_AHB_CLK] = &disp1_cc_mdss_rscc_ahb_clk.clkr,
30344a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp1_cc_mdss_rscc_vsync_clk.clkr,
30354a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp1_cc_mdss_vsync1_clk.clkr,
30364a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK] = &disp1_cc_mdss_vsync_clk.clkr,
30374a66e76fSBjorn Andersson 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp1_cc_mdss_vsync_clk_src.clkr,
30384a66e76fSBjorn Andersson 	[DISP_CC_PLL0] = &disp1_cc_pll0.clkr,
30394a66e76fSBjorn Andersson 	[DISP_CC_PLL1] = &disp1_cc_pll1.clkr,
30404a66e76fSBjorn Andersson 	[DISP_CC_PLL1_OUT_EVEN] = &disp1_cc_pll1_out_even.clkr,
30414a66e76fSBjorn Andersson 	[DISP_CC_PLL2] = &disp1_cc_pll2.clkr,
30424a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK] = &disp1_cc_sleep_clk.clkr,
30434a66e76fSBjorn Andersson 	[DISP_CC_SLEEP_CLK_SRC] = &disp1_cc_sleep_clk_src.clkr,
30444a66e76fSBjorn Andersson };
30454a66e76fSBjorn Andersson 
30464a66e76fSBjorn Andersson static const struct qcom_reset_map disp_cc_sc8280xp_resets[] = {
30474a66e76fSBjorn Andersson 	[DISP_CC_MDSS_CORE_BCR] = { 0x2000 },
30484a66e76fSBjorn Andersson 	[DISP_CC_MDSS_RSCC_BCR] = { 0x4000 },
30494a66e76fSBjorn Andersson };
30504a66e76fSBjorn Andersson 
30514a66e76fSBjorn Andersson static struct gdsc disp0_mdss_gdsc = {
30524a66e76fSBjorn Andersson 	.gdscr = 0x3000,
30534a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
30544a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
30554a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
30564a66e76fSBjorn Andersson 	.pd = {
30574a66e76fSBjorn Andersson 		.name = "disp0_mdss_gdsc",
30584a66e76fSBjorn Andersson 	},
30594a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3060*20e1d75bSKonrad Dybcio 	.flags = HW_CTRL | RETAIN_FF_ENABLE,
30614a66e76fSBjorn Andersson };
30624a66e76fSBjorn Andersson 
30634a66e76fSBjorn Andersson static struct gdsc disp1_mdss_gdsc = {
30644a66e76fSBjorn Andersson 	.gdscr = 0x3000,
30654a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
30664a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
30674a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
30684a66e76fSBjorn Andersson 	.pd = {
30694a66e76fSBjorn Andersson 		.name = "disp1_mdss_gdsc",
30704a66e76fSBjorn Andersson 	},
30714a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3072*20e1d75bSKonrad Dybcio 	.flags = HW_CTRL | RETAIN_FF_ENABLE,
30734a66e76fSBjorn Andersson };
30744a66e76fSBjorn Andersson 
30754a66e76fSBjorn Andersson static struct gdsc disp0_mdss_int2_gdsc = {
30764a66e76fSBjorn Andersson 	.gdscr = 0xa000,
30774a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
30784a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
30794a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
30804a66e76fSBjorn Andersson 	.pd = {
30814a66e76fSBjorn Andersson 		.name = "disp0_mdss_int2_gdsc",
30824a66e76fSBjorn Andersson 	},
30834a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3084*20e1d75bSKonrad Dybcio 	.flags = HW_CTRL | RETAIN_FF_ENABLE,
30854a66e76fSBjorn Andersson };
30864a66e76fSBjorn Andersson 
30874a66e76fSBjorn Andersson static struct gdsc disp1_mdss_int2_gdsc = {
30884a66e76fSBjorn Andersson 	.gdscr = 0xa000,
30894a66e76fSBjorn Andersson 	.en_rest_wait_val = 0x2,
30904a66e76fSBjorn Andersson 	.en_few_wait_val = 0x2,
30914a66e76fSBjorn Andersson 	.clk_dis_wait_val = 0xf,
30924a66e76fSBjorn Andersson 	.pd = {
30934a66e76fSBjorn Andersson 		.name = "disp1_mdss_int2_gdsc",
30944a66e76fSBjorn Andersson 	},
30954a66e76fSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
3096*20e1d75bSKonrad Dybcio 	.flags = HW_CTRL | RETAIN_FF_ENABLE,
30974a66e76fSBjorn Andersson };
30984a66e76fSBjorn Andersson 
30994a66e76fSBjorn Andersson static struct gdsc *disp0_cc_sc8280xp_gdscs[] = {
31004a66e76fSBjorn Andersson 	[MDSS_GDSC] = &disp0_mdss_gdsc,
31014a66e76fSBjorn Andersson 	[MDSS_INT2_GDSC] = &disp0_mdss_int2_gdsc,
31024a66e76fSBjorn Andersson };
31034a66e76fSBjorn Andersson 
31044a66e76fSBjorn Andersson static struct gdsc *disp1_cc_sc8280xp_gdscs[] = {
31054a66e76fSBjorn Andersson 	[MDSS_GDSC] = &disp1_mdss_gdsc,
31064a66e76fSBjorn Andersson 	[MDSS_INT2_GDSC] = &disp1_mdss_int2_gdsc,
31074a66e76fSBjorn Andersson };
31084a66e76fSBjorn Andersson 
31094a66e76fSBjorn Andersson static const struct regmap_config disp_cc_sc8280xp_regmap_config = {
31104a66e76fSBjorn Andersson 	.reg_bits = 32,
31114a66e76fSBjorn Andersson 	.reg_stride = 4,
31124a66e76fSBjorn Andersson 	.val_bits = 32,
31134a66e76fSBjorn Andersson 	.max_register = 0x10000,
31144a66e76fSBjorn Andersson 	.fast_io = true,
31154a66e76fSBjorn Andersson };
31164a66e76fSBjorn Andersson 
31174a66e76fSBjorn Andersson static struct qcom_cc_desc disp0_cc_sc8280xp_desc = {
31184a66e76fSBjorn Andersson 	.config = &disp_cc_sc8280xp_regmap_config,
31194a66e76fSBjorn Andersson 	.clks = disp0_cc_sc8280xp_clocks,
31204a66e76fSBjorn Andersson 	.num_clks = ARRAY_SIZE(disp0_cc_sc8280xp_clocks),
31214a66e76fSBjorn Andersson 	.resets = disp_cc_sc8280xp_resets,
31224a66e76fSBjorn Andersson 	.num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets),
31234a66e76fSBjorn Andersson 	.gdscs = disp0_cc_sc8280xp_gdscs,
31244a66e76fSBjorn Andersson 	.num_gdscs = ARRAY_SIZE(disp0_cc_sc8280xp_gdscs),
31254a66e76fSBjorn Andersson };
31264a66e76fSBjorn Andersson 
31274a66e76fSBjorn Andersson static struct qcom_cc_desc disp1_cc_sc8280xp_desc = {
31284a66e76fSBjorn Andersson 	.config = &disp_cc_sc8280xp_regmap_config,
31294a66e76fSBjorn Andersson 	.clks = disp1_cc_sc8280xp_clocks,
31304a66e76fSBjorn Andersson 	.num_clks = ARRAY_SIZE(disp1_cc_sc8280xp_clocks),
31314a66e76fSBjorn Andersson 	.resets = disp_cc_sc8280xp_resets,
31324a66e76fSBjorn Andersson 	.num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets),
31334a66e76fSBjorn Andersson 	.gdscs = disp1_cc_sc8280xp_gdscs,
31344a66e76fSBjorn Andersson 	.num_gdscs = ARRAY_SIZE(disp1_cc_sc8280xp_gdscs),
31354a66e76fSBjorn Andersson };
31364a66e76fSBjorn Andersson 
31374a66e76fSBjorn Andersson #define clkr_to_alpha_clk_pll(_clkr) container_of(_clkr, struct clk_alpha_pll, clkr)
31384a66e76fSBjorn Andersson 
disp_cc_sc8280xp_probe(struct platform_device * pdev)31394a66e76fSBjorn Andersson static int disp_cc_sc8280xp_probe(struct platform_device *pdev)
31404a66e76fSBjorn Andersson {
31414a66e76fSBjorn Andersson 	const struct qcom_cc_desc *desc;
31424a66e76fSBjorn Andersson 	struct regmap *regmap;
31434a66e76fSBjorn Andersson 	int ret;
31444a66e76fSBjorn Andersson 
31454a66e76fSBjorn Andersson 	desc = device_get_match_data(&pdev->dev);
31464a66e76fSBjorn Andersson 
31474a66e76fSBjorn Andersson 	ret = devm_pm_runtime_enable(&pdev->dev);
31484a66e76fSBjorn Andersson 	if (ret)
31494a66e76fSBjorn Andersson 		return ret;
31504a66e76fSBjorn Andersson 
31514a66e76fSBjorn Andersson 	ret = devm_pm_clk_create(&pdev->dev);
31524a66e76fSBjorn Andersson 	if (ret)
31534a66e76fSBjorn Andersson 		return ret;
31544a66e76fSBjorn Andersson 
31554a66e76fSBjorn Andersson 	ret = pm_clk_add(&pdev->dev, NULL);
31564a66e76fSBjorn Andersson 	if (ret < 0) {
31574a66e76fSBjorn Andersson 		dev_err(&pdev->dev, "failed to acquire ahb clock\n");
31584a66e76fSBjorn Andersson 		return ret;
31594a66e76fSBjorn Andersson 	}
31604a66e76fSBjorn Andersson 
31614a66e76fSBjorn Andersson 	ret = pm_runtime_resume_and_get(&pdev->dev);
31624a66e76fSBjorn Andersson 	if (ret)
31634a66e76fSBjorn Andersson 		return ret;
31644a66e76fSBjorn Andersson 
31654a66e76fSBjorn Andersson 	regmap = qcom_cc_map(pdev, desc);
31664a66e76fSBjorn Andersson 	if (IS_ERR(regmap)) {
31674a66e76fSBjorn Andersson 		ret = PTR_ERR(regmap);
31684a66e76fSBjorn Andersson 		goto out_pm_runtime_put;
31694a66e76fSBjorn Andersson 	}
31704a66e76fSBjorn Andersson 
31714a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL0]), regmap, &disp_cc_pll0_config);
31724a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL1]), regmap, &disp_cc_pll1_config);
31734a66e76fSBjorn Andersson 	clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL2]), regmap, &disp_cc_pll2_config);
31744a66e76fSBjorn Andersson 
31754a66e76fSBjorn Andersson 	ret = qcom_cc_really_probe(pdev, desc, regmap);
31764a66e76fSBjorn Andersson 	if (ret) {
31774a66e76fSBjorn Andersson 		dev_err(&pdev->dev, "Failed to register display clock controller\n");
31784a66e76fSBjorn Andersson 		goto out_pm_runtime_put;
31794a66e76fSBjorn Andersson 	}
31804a66e76fSBjorn Andersson 
31814a66e76fSBjorn Andersson 	/* DISP_CC_XO_CLK always-on */
31824a66e76fSBjorn Andersson 	regmap_update_bits(regmap, 0x605c, BIT(0), BIT(0));
31834a66e76fSBjorn Andersson 
31844a66e76fSBjorn Andersson out_pm_runtime_put:
31854a66e76fSBjorn Andersson 	pm_runtime_put_sync(&pdev->dev);
31864a66e76fSBjorn Andersson 
31874a66e76fSBjorn Andersson 	return ret;
31884a66e76fSBjorn Andersson }
31894a66e76fSBjorn Andersson 
31904a66e76fSBjorn Andersson static const struct of_device_id disp_cc_sc8280xp_match_table[] = {
31914a66e76fSBjorn Andersson 	{ .compatible = "qcom,sc8280xp-dispcc0", .data = &disp0_cc_sc8280xp_desc },
31924a66e76fSBjorn Andersson 	{ .compatible = "qcom,sc8280xp-dispcc1", .data = &disp1_cc_sc8280xp_desc },
31934a66e76fSBjorn Andersson 	{ }
31944a66e76fSBjorn Andersson };
31954a66e76fSBjorn Andersson MODULE_DEVICE_TABLE(of, disp_cc_sc8280xp_match_table);
31964a66e76fSBjorn Andersson 
31974a66e76fSBjorn Andersson static struct platform_driver disp_cc_sc8280xp_driver = {
31984a66e76fSBjorn Andersson 	.probe = disp_cc_sc8280xp_probe,
31994a66e76fSBjorn Andersson 	.driver = {
32004a66e76fSBjorn Andersson 		.name = "disp_cc-sc8280xp",
32014a66e76fSBjorn Andersson 		.of_match_table = disp_cc_sc8280xp_match_table,
32024a66e76fSBjorn Andersson 	},
32034a66e76fSBjorn Andersson };
32044a66e76fSBjorn Andersson 
disp_cc_sc8280xp_init(void)32054a66e76fSBjorn Andersson static int __init disp_cc_sc8280xp_init(void)
32064a66e76fSBjorn Andersson {
32074a66e76fSBjorn Andersson 	return platform_driver_register(&disp_cc_sc8280xp_driver);
32084a66e76fSBjorn Andersson }
32094a66e76fSBjorn Andersson subsys_initcall(disp_cc_sc8280xp_init);
32104a66e76fSBjorn Andersson 
disp_cc_sc8280xp_exit(void)32114a66e76fSBjorn Andersson static void __exit disp_cc_sc8280xp_exit(void)
32124a66e76fSBjorn Andersson {
32134a66e76fSBjorn Andersson 	platform_driver_unregister(&disp_cc_sc8280xp_driver);
32144a66e76fSBjorn Andersson }
32154a66e76fSBjorn Andersson module_exit(disp_cc_sc8280xp_exit);
32164a66e76fSBjorn Andersson 
32174a66e76fSBjorn Andersson MODULE_DESCRIPTION("Qualcomm SC8280XP dispcc driver");
32184a66e76fSBjorn Andersson MODULE_LICENSE("GPL");
3219