xref: /linux/drivers/clk/qcom/dispcc-eliza.c (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
10e66f109SKrzysztof Kozlowski // SPDX-License-Identifier: GPL-2.0-only
20e66f109SKrzysztof Kozlowski /*
30e66f109SKrzysztof Kozlowski  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
40e66f109SKrzysztof Kozlowski  * Copyright (c) 2023-2024, Linaro Ltd.
50e66f109SKrzysztof Kozlowski  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
60e66f109SKrzysztof Kozlowski  */
70e66f109SKrzysztof Kozlowski 
80e66f109SKrzysztof Kozlowski #include <linux/clk-provider.h>
90e66f109SKrzysztof Kozlowski #include <linux/kernel.h>
100e66f109SKrzysztof Kozlowski #include <linux/mod_devicetable.h>
110e66f109SKrzysztof Kozlowski #include <linux/module.h>
120e66f109SKrzysztof Kozlowski #include <linux/platform_device.h>
130e66f109SKrzysztof Kozlowski #include <linux/regmap.h>
140e66f109SKrzysztof Kozlowski 
150e66f109SKrzysztof Kozlowski #include <dt-bindings/clock/qcom,eliza-dispcc.h>
160e66f109SKrzysztof Kozlowski 
170e66f109SKrzysztof Kozlowski #include "common.h"
180e66f109SKrzysztof Kozlowski #include "clk-alpha-pll.h"
190e66f109SKrzysztof Kozlowski #include "clk-branch.h"
200e66f109SKrzysztof Kozlowski #include "clk-pll.h"
210e66f109SKrzysztof Kozlowski #include "clk-rcg.h"
220e66f109SKrzysztof Kozlowski #include "clk-regmap.h"
230e66f109SKrzysztof Kozlowski #include "clk-regmap-divider.h"
240e66f109SKrzysztof Kozlowski #include "clk-regmap-mux.h"
250e66f109SKrzysztof Kozlowski #include "gdsc.h"
260e66f109SKrzysztof Kozlowski #include "reset.h"
270e66f109SKrzysztof Kozlowski 
280e66f109SKrzysztof Kozlowski /* Need to match the order of clocks in DT binding */
290e66f109SKrzysztof Kozlowski enum {
300e66f109SKrzysztof Kozlowski 	DT_BI_TCXO,
310e66f109SKrzysztof Kozlowski 	DT_BI_TCXO_AO,
320e66f109SKrzysztof Kozlowski 	DT_AHB_CLK,
330e66f109SKrzysztof Kozlowski 	DT_SLEEP_CLK,
340e66f109SKrzysztof Kozlowski 
350e66f109SKrzysztof Kozlowski 	DT_DSI0_PHY_PLL_OUT_BYTECLK,
360e66f109SKrzysztof Kozlowski 	DT_DSI0_PHY_PLL_OUT_DSICLK,
370e66f109SKrzysztof Kozlowski 	DT_DSI1_PHY_PLL_OUT_BYTECLK,
380e66f109SKrzysztof Kozlowski 	DT_DSI1_PHY_PLL_OUT_DSICLK,
390e66f109SKrzysztof Kozlowski 
400e66f109SKrzysztof Kozlowski 	DT_DP0_PHY_PLL_LINK_CLK,
410e66f109SKrzysztof Kozlowski 	DT_DP0_PHY_PLL_VCO_DIV_CLK,
420e66f109SKrzysztof Kozlowski 	DT_DP1_PHY_PLL_LINK_CLK,
430e66f109SKrzysztof Kozlowski 	DT_DP1_PHY_PLL_VCO_DIV_CLK,
440e66f109SKrzysztof Kozlowski 	DT_DP2_PHY_PLL_LINK_CLK,
450e66f109SKrzysztof Kozlowski 	DT_DP2_PHY_PLL_VCO_DIV_CLK,
460e66f109SKrzysztof Kozlowski 	DT_DP3_PHY_PLL_LINK_CLK,
470e66f109SKrzysztof Kozlowski 	DT_DP3_PHY_PLL_VCO_DIV_CLK,
480e66f109SKrzysztof Kozlowski 	DT_HDMI_PHY_PLL_CLK,
490e66f109SKrzysztof Kozlowski };
500e66f109SKrzysztof Kozlowski 
510e66f109SKrzysztof Kozlowski #define DISP_CC_MISC_CMD	0xF000
520e66f109SKrzysztof Kozlowski 
530e66f109SKrzysztof Kozlowski enum {
540e66f109SKrzysztof Kozlowski 	P_BI_TCXO,
550e66f109SKrzysztof Kozlowski 	P_DISP_CC_PLL0_OUT_MAIN,
560e66f109SKrzysztof Kozlowski 	P_DISP_CC_PLL1_OUT_EVEN,
570e66f109SKrzysztof Kozlowski 	P_DISP_CC_PLL1_OUT_MAIN,
580e66f109SKrzysztof Kozlowski 	P_DISP_CC_PLL2_OUT_MAIN,
590e66f109SKrzysztof Kozlowski 	P_DP0_PHY_PLL_LINK_CLK,
600e66f109SKrzysztof Kozlowski 	P_DP0_PHY_PLL_VCO_DIV_CLK,
610e66f109SKrzysztof Kozlowski 	P_DP1_PHY_PLL_LINK_CLK,
620e66f109SKrzysztof Kozlowski 	P_DP1_PHY_PLL_VCO_DIV_CLK,
630e66f109SKrzysztof Kozlowski 	P_DP2_PHY_PLL_LINK_CLK,
640e66f109SKrzysztof Kozlowski 	P_DP2_PHY_PLL_VCO_DIV_CLK,
650e66f109SKrzysztof Kozlowski 	P_DP3_PHY_PLL_LINK_CLK,
660e66f109SKrzysztof Kozlowski 	P_DP3_PHY_PLL_VCO_DIV_CLK,
670e66f109SKrzysztof Kozlowski 	P_DSI0_PHY_PLL_OUT_BYTECLK,
680e66f109SKrzysztof Kozlowski 	P_DSI0_PHY_PLL_OUT_DSICLK,
690e66f109SKrzysztof Kozlowski 	P_DSI1_PHY_PLL_OUT_BYTECLK,
700e66f109SKrzysztof Kozlowski 	P_DSI1_PHY_PLL_OUT_DSICLK,
710e66f109SKrzysztof Kozlowski 	P_HDMI_PHY_PLL_CLK,
720e66f109SKrzysztof Kozlowski 	P_SLEEP_CLK,
730e66f109SKrzysztof Kozlowski };
740e66f109SKrzysztof Kozlowski 
750e66f109SKrzysztof Kozlowski static const struct pll_vco lucid_ole_vco[] = {
760e66f109SKrzysztof Kozlowski 	{ 249600000, 2300000000, 0 },
770e66f109SKrzysztof Kozlowski };
780e66f109SKrzysztof Kozlowski 
790e66f109SKrzysztof Kozlowski static const struct pll_vco pongo_ole_vco[] = {
800e66f109SKrzysztof Kozlowski 	{ 38400000, 38400000, 0 },
810e66f109SKrzysztof Kozlowski };
820e66f109SKrzysztof Kozlowski 
830e66f109SKrzysztof Kozlowski static struct alpha_pll_config disp_cc_pll0_config = {
840e66f109SKrzysztof Kozlowski 	.l = 0xd,
850e66f109SKrzysztof Kozlowski 	.cal_l = 0x44,
860e66f109SKrzysztof Kozlowski 	.alpha = 0x6492,
870e66f109SKrzysztof Kozlowski 	.config_ctl_val = 0x20485699,
880e66f109SKrzysztof Kozlowski 	.config_ctl_hi_val = 0x00182261,
890e66f109SKrzysztof Kozlowski 	.config_ctl_hi1_val = 0x82aa299c,
900e66f109SKrzysztof Kozlowski 	.test_ctl_val = 0x00000000,
910e66f109SKrzysztof Kozlowski 	.test_ctl_hi_val = 0x00000003,
920e66f109SKrzysztof Kozlowski 	.test_ctl_hi1_val = 0x00009000,
930e66f109SKrzysztof Kozlowski 	.test_ctl_hi2_val = 0x00000034,
940e66f109SKrzysztof Kozlowski 	.user_ctl_val = 0x00000000,
950e66f109SKrzysztof Kozlowski 	.user_ctl_hi_val = 0x00000005,
960e66f109SKrzysztof Kozlowski };
970e66f109SKrzysztof Kozlowski 
980e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll0 = {
990e66f109SKrzysztof Kozlowski 	.offset = 0x0,
1000e66f109SKrzysztof Kozlowski 	.config = &disp_cc_pll0_config,
1010e66f109SKrzysztof Kozlowski 	.vco_table = lucid_ole_vco,
1020e66f109SKrzysztof Kozlowski 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
1030e66f109SKrzysztof Kozlowski 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
1040e66f109SKrzysztof Kozlowski 	.clkr = {
1050e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
1060e66f109SKrzysztof Kozlowski 			.name = "disp_cc_pll0",
1070e66f109SKrzysztof Kozlowski 			.parent_data = &(const struct clk_parent_data) {
1080e66f109SKrzysztof Kozlowski 				.index = DT_BI_TCXO,
1090e66f109SKrzysztof Kozlowski 			},
1100e66f109SKrzysztof Kozlowski 			.num_parents = 1,
1110e66f109SKrzysztof Kozlowski 			.ops = &clk_alpha_pll_lucid_evo_ops,
1120e66f109SKrzysztof Kozlowski 		},
1130e66f109SKrzysztof Kozlowski 	},
1140e66f109SKrzysztof Kozlowski };
1150e66f109SKrzysztof Kozlowski 
1160e66f109SKrzysztof Kozlowski static struct alpha_pll_config disp_cc_pll1_config = {
1170e66f109SKrzysztof Kozlowski 	.l = 0x1f,
1180e66f109SKrzysztof Kozlowski 	.cal_l = 0x44,
1190e66f109SKrzysztof Kozlowski 	.alpha = 0x4000,
1200e66f109SKrzysztof Kozlowski 	.config_ctl_val = 0x20485699,
1210e66f109SKrzysztof Kozlowski 	.config_ctl_hi_val = 0x00182261,
1220e66f109SKrzysztof Kozlowski 	.config_ctl_hi1_val = 0x82aa299c,
1230e66f109SKrzysztof Kozlowski 	.test_ctl_val = 0x00000000,
1240e66f109SKrzysztof Kozlowski 	.test_ctl_hi_val = 0x00000003,
1250e66f109SKrzysztof Kozlowski 	.test_ctl_hi1_val = 0x00009000,
1260e66f109SKrzysztof Kozlowski 	.test_ctl_hi2_val = 0x00000034,
1270e66f109SKrzysztof Kozlowski 	.user_ctl_val = 0x00000000,
1280e66f109SKrzysztof Kozlowski 	.user_ctl_hi_val = 0x00000005,
1290e66f109SKrzysztof Kozlowski };
1300e66f109SKrzysztof Kozlowski 
1310e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll1 = {
1320e66f109SKrzysztof Kozlowski 	.offset = 0x1000,
1330e66f109SKrzysztof Kozlowski 	.config = &disp_cc_pll1_config,
1340e66f109SKrzysztof Kozlowski 	.vco_table = lucid_ole_vco,
1350e66f109SKrzysztof Kozlowski 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
1360e66f109SKrzysztof Kozlowski 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
1370e66f109SKrzysztof Kozlowski 	.clkr = {
1380e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
1390e66f109SKrzysztof Kozlowski 			.name = "disp_cc_pll1",
1400e66f109SKrzysztof Kozlowski 			.parent_data = &(const struct clk_parent_data) {
1410e66f109SKrzysztof Kozlowski 				.index = DT_BI_TCXO,
1420e66f109SKrzysztof Kozlowski 			},
1430e66f109SKrzysztof Kozlowski 			.num_parents = 1,
1440e66f109SKrzysztof Kozlowski 			.ops = &clk_alpha_pll_lucid_evo_ops,
1450e66f109SKrzysztof Kozlowski 		},
1460e66f109SKrzysztof Kozlowski 	},
1470e66f109SKrzysztof Kozlowski };
1480e66f109SKrzysztof Kozlowski 
1490e66f109SKrzysztof Kozlowski static const struct alpha_pll_config disp_cc_pll2_config = {
1500e66f109SKrzysztof Kozlowski 	.l = 0x493,
1510e66f109SKrzysztof Kozlowski 	.cal_l = 0x493,
1520e66f109SKrzysztof Kozlowski 	.alpha = 0x0,
1530e66f109SKrzysztof Kozlowski 	.config_ctl_val = 0x60000f6a,
1540e66f109SKrzysztof Kozlowski 	.config_ctl_hi_val = 0x0001c808,
1550e66f109SKrzysztof Kozlowski 	.config_ctl_hi1_val = 0x00000000,
1560e66f109SKrzysztof Kozlowski 	.config_ctl_hi2_val = 0x04008174,
1570e66f109SKrzysztof Kozlowski 	.test_ctl_val = 0x00000000,
1580e66f109SKrzysztof Kozlowski 	.test_ctl_hi_val = 0x0080c496,
1590e66f109SKrzysztof Kozlowski 	.test_ctl_hi1_val = 0x40100180,
1600e66f109SKrzysztof Kozlowski 	.test_ctl_hi2_val = 0x441001bc,
1610e66f109SKrzysztof Kozlowski 	.test_ctl_hi3_val = 0x000003d8,
1620e66f109SKrzysztof Kozlowski 	.user_ctl_val = 0x00000000,
1630e66f109SKrzysztof Kozlowski 	.user_ctl_hi_val = 0x00e50302,
1640e66f109SKrzysztof Kozlowski };
1650e66f109SKrzysztof Kozlowski 
1660e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll2 = {
1670e66f109SKrzysztof Kozlowski 	.offset = 0x2000,
1680e66f109SKrzysztof Kozlowski 	.config = &disp_cc_pll2_config,
1690e66f109SKrzysztof Kozlowski 	.vco_table = pongo_ole_vco,
1700e66f109SKrzysztof Kozlowski 	.num_vco = ARRAY_SIZE(pongo_ole_vco),
1710e66f109SKrzysztof Kozlowski 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_PONGO_ELU],
1720e66f109SKrzysztof Kozlowski 	.clkr = {
1730e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
1740e66f109SKrzysztof Kozlowski 			.name = "disp_cc_pll2",
1750e66f109SKrzysztof Kozlowski 			.parent_data = &(const struct clk_parent_data) {
1760e66f109SKrzysztof Kozlowski 				.index = DT_SLEEP_CLK,
1770e66f109SKrzysztof Kozlowski 			},
1780e66f109SKrzysztof Kozlowski 			.num_parents = 1,
1790e66f109SKrzysztof Kozlowski 			.ops = &clk_alpha_pll_pongo_elu_ops,
1800e66f109SKrzysztof Kozlowski 		},
1810e66f109SKrzysztof Kozlowski 	},
1820e66f109SKrzysztof Kozlowski };
1830e66f109SKrzysztof Kozlowski 
1840e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_0[] = {
1850e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
1860e66f109SKrzysztof Kozlowski };
1870e66f109SKrzysztof Kozlowski 
1880e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_0[] = {
1890e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
1900e66f109SKrzysztof Kozlowski };
1910e66f109SKrzysztof Kozlowski 
1920e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_0_ao[] = {
1930e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO_AO },
1940e66f109SKrzysztof Kozlowski };
1950e66f109SKrzysztof Kozlowski 
1960e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_1[] = {
1970e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
1980e66f109SKrzysztof Kozlowski 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
1990e66f109SKrzysztof Kozlowski 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
2000e66f109SKrzysztof Kozlowski 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
2010e66f109SKrzysztof Kozlowski 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
2020e66f109SKrzysztof Kozlowski };
2030e66f109SKrzysztof Kozlowski 
2040e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_1[] = {
2050e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2060e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
2070e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
2080e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
2090e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
2100e66f109SKrzysztof Kozlowski };
2110e66f109SKrzysztof Kozlowski 
2120e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_2[] = {
2130e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2140e66f109SKrzysztof Kozlowski 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
2150e66f109SKrzysztof Kozlowski 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
2160e66f109SKrzysztof Kozlowski 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
2170e66f109SKrzysztof Kozlowski };
2180e66f109SKrzysztof Kozlowski 
2190e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_2[] = {
2200e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2210e66f109SKrzysztof Kozlowski 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
2220e66f109SKrzysztof Kozlowski 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
2230e66f109SKrzysztof Kozlowski 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
2240e66f109SKrzysztof Kozlowski };
2250e66f109SKrzysztof Kozlowski 
2260e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_3[] = {
2270e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2280e66f109SKrzysztof Kozlowski 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
2290e66f109SKrzysztof Kozlowski 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
2300e66f109SKrzysztof Kozlowski 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
2310e66f109SKrzysztof Kozlowski };
2320e66f109SKrzysztof Kozlowski 
2330e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_3[] = {
2340e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2350e66f109SKrzysztof Kozlowski 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
2360e66f109SKrzysztof Kozlowski 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
2370e66f109SKrzysztof Kozlowski 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
2380e66f109SKrzysztof Kozlowski };
2390e66f109SKrzysztof Kozlowski 
2400e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_4[] = {
2410e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2420e66f109SKrzysztof Kozlowski 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
2430e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL2_OUT_MAIN, 2 },
2440e66f109SKrzysztof Kozlowski 	{ P_DSI1_PHY_PLL_OUT_DSICLK, 3 },
2450e66f109SKrzysztof Kozlowski };
2460e66f109SKrzysztof Kozlowski 
2470e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_4[] = {
2480e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2490e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK },
2500e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll2.clkr.hw },
2510e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI1_PHY_PLL_OUT_DSICLK },
2520e66f109SKrzysztof Kozlowski };
2530e66f109SKrzysztof Kozlowski 
2540e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_5[] = {
2550e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2560e66f109SKrzysztof Kozlowski 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
2570e66f109SKrzysztof Kozlowski 	{ P_DP0_PHY_PLL_VCO_DIV_CLK, 2 },
2580e66f109SKrzysztof Kozlowski 	{ P_DP3_PHY_PLL_VCO_DIV_CLK, 3 },
2590e66f109SKrzysztof Kozlowski 	{ P_DP1_PHY_PLL_VCO_DIV_CLK, 4 },
2600e66f109SKrzysztof Kozlowski 	{ P_DP2_PHY_PLL_VCO_DIV_CLK, 6 },
2610e66f109SKrzysztof Kozlowski };
2620e66f109SKrzysztof Kozlowski 
2630e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_5[] = {
2640e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2650e66f109SKrzysztof Kozlowski 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
2660e66f109SKrzysztof Kozlowski 	{ .index = DT_DP0_PHY_PLL_VCO_DIV_CLK },
2670e66f109SKrzysztof Kozlowski 	{ .index = DT_DP3_PHY_PLL_VCO_DIV_CLK },
2680e66f109SKrzysztof Kozlowski 	{ .index = DT_DP1_PHY_PLL_VCO_DIV_CLK },
2690e66f109SKrzysztof Kozlowski 	{ .index = DT_DP2_PHY_PLL_VCO_DIV_CLK },
2700e66f109SKrzysztof Kozlowski };
2710e66f109SKrzysztof Kozlowski 
2720e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_6[] = {
2730e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2740e66f109SKrzysztof Kozlowski 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
2750e66f109SKrzysztof Kozlowski 	{ P_DSI1_PHY_PLL_OUT_BYTECLK, 4 },
2760e66f109SKrzysztof Kozlowski };
2770e66f109SKrzysztof Kozlowski 
2780e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_6[] = {
2790e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2800e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK },
2810e66f109SKrzysztof Kozlowski 	{ .index = DT_DSI1_PHY_PLL_OUT_BYTECLK },
2820e66f109SKrzysztof Kozlowski };
2830e66f109SKrzysztof Kozlowski 
2840e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_7[] = {
2850e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2860e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL1_OUT_MAIN, 4 },
2870e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL1_OUT_EVEN, 6 },
2880e66f109SKrzysztof Kozlowski };
2890e66f109SKrzysztof Kozlowski 
2900e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_7[] = {
2910e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
2920e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll1.clkr.hw },
2930e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll1.clkr.hw },
2940e66f109SKrzysztof Kozlowski };
2950e66f109SKrzysztof Kozlowski 
2960e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_8[] = {
2970e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
2980e66f109SKrzysztof Kozlowski 	{ P_DP0_PHY_PLL_LINK_CLK, 1 },
2990e66f109SKrzysztof Kozlowski 	{ P_DP1_PHY_PLL_LINK_CLK, 2 },
3000e66f109SKrzysztof Kozlowski 	{ P_DP2_PHY_PLL_LINK_CLK, 3 },
3010e66f109SKrzysztof Kozlowski 	{ P_DP3_PHY_PLL_LINK_CLK, 4 },
3020e66f109SKrzysztof Kozlowski };
3030e66f109SKrzysztof Kozlowski 
3040e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_8[] = {
3050e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
3060e66f109SKrzysztof Kozlowski 	{ .index = DT_DP0_PHY_PLL_LINK_CLK },
3070e66f109SKrzysztof Kozlowski 	{ .index = DT_DP1_PHY_PLL_LINK_CLK },
3080e66f109SKrzysztof Kozlowski 	{ .index = DT_DP2_PHY_PLL_LINK_CLK },
3090e66f109SKrzysztof Kozlowski 	{ .index = DT_DP3_PHY_PLL_LINK_CLK },
3100e66f109SKrzysztof Kozlowski };
3110e66f109SKrzysztof Kozlowski 
3120e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_9[] = {
3130e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
3140e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL0_OUT_MAIN, 1 },
3150e66f109SKrzysztof Kozlowski };
3160e66f109SKrzysztof Kozlowski 
3170e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_9[] = {
3180e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
3190e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll0.clkr.hw },
3200e66f109SKrzysztof Kozlowski };
3210e66f109SKrzysztof Kozlowski 
3220e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_10[] = {
3230e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
3240e66f109SKrzysztof Kozlowski 	{ P_HDMI_PHY_PLL_CLK, 1 },
3250e66f109SKrzysztof Kozlowski };
3260e66f109SKrzysztof Kozlowski 
3270e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_10[] = {
3280e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
3290e66f109SKrzysztof Kozlowski 	{ .index = DT_HDMI_PHY_PLL_CLK },
3300e66f109SKrzysztof Kozlowski };
3310e66f109SKrzysztof Kozlowski 
3320e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_11[] = {
3330e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
3340e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL0_OUT_MAIN, 1 },
3350e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL1_OUT_MAIN, 4 },
3360e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL1_OUT_EVEN, 6 },
3370e66f109SKrzysztof Kozlowski };
3380e66f109SKrzysztof Kozlowski 
3390e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_11[] = {
3400e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
3410e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll0.clkr.hw },
3420e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll1.clkr.hw },
3430e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll1.clkr.hw },
3440e66f109SKrzysztof Kozlowski };
3450e66f109SKrzysztof Kozlowski 
3460e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_12[] = {
3470e66f109SKrzysztof Kozlowski 	{ P_BI_TCXO, 0 },
3480e66f109SKrzysztof Kozlowski 	{ P_DISP_CC_PLL2_OUT_MAIN, 2 },
3490e66f109SKrzysztof Kozlowski };
3500e66f109SKrzysztof Kozlowski 
3510e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_12[] = {
3520e66f109SKrzysztof Kozlowski 	{ .index = DT_BI_TCXO },
3530e66f109SKrzysztof Kozlowski 	{ .hw = &disp_cc_pll2.clkr.hw },
3540e66f109SKrzysztof Kozlowski };
3550e66f109SKrzysztof Kozlowski 
3560e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_13[] = {
3570e66f109SKrzysztof Kozlowski 	{ P_SLEEP_CLK, 0 },
3580e66f109SKrzysztof Kozlowski };
3590e66f109SKrzysztof Kozlowski 
3600e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_13_ao[] = {
3610e66f109SKrzysztof Kozlowski 	{ .index = DT_SLEEP_CLK },
3620e66f109SKrzysztof Kozlowski };
3630e66f109SKrzysztof Kozlowski 
3640e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_esync0_clk_src[] = {
3650e66f109SKrzysztof Kozlowski 	F(19200000, P_BI_TCXO, 1, 0, 0),
3660e66f109SKrzysztof Kozlowski 	{ }
3670e66f109SKrzysztof Kozlowski };
3680e66f109SKrzysztof Kozlowski 
3690e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_esync0_clk_src = {
3700e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x80c0,
3710e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
3720e66f109SKrzysztof Kozlowski 	.hid_width = 5,
3730e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_4,
3740e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
3750e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
3760e66f109SKrzysztof Kozlowski 		.name = "disp_cc_esync0_clk_src",
3770e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_4,
3780e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
3790e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
3800e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
3810e66f109SKrzysztof Kozlowski 	},
3820e66f109SKrzysztof Kozlowski };
3830e66f109SKrzysztof Kozlowski 
3840e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_esync1_clk_src = {
3850e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x80d8,
3860e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
3870e66f109SKrzysztof Kozlowski 	.hid_width = 5,
3880e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_4,
3890e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
3900e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
3910e66f109SKrzysztof Kozlowski 		.name = "disp_cc_esync1_clk_src",
3920e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_4,
3930e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_4),
3940e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
3950e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
3960e66f109SKrzysztof Kozlowski 	},
3970e66f109SKrzysztof Kozlowski };
3980e66f109SKrzysztof Kozlowski 
3990e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = {
4000e66f109SKrzysztof Kozlowski 	F(19200000, P_BI_TCXO, 1, 0, 0),
4010e66f109SKrzysztof Kozlowski 	F(37500000, P_DISP_CC_PLL1_OUT_MAIN, 16, 0, 0),
4020e66f109SKrzysztof Kozlowski 	F(75000000, P_DISP_CC_PLL1_OUT_MAIN, 8, 0, 0),
4030e66f109SKrzysztof Kozlowski 	{ }
4040e66f109SKrzysztof Kozlowski };
4050e66f109SKrzysztof Kozlowski 
4060e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_ahb_clk_src = {
4070e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8360,
4080e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
4090e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4100e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_7,
4110e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src,
4120e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4130e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_ahb_clk_src",
4140e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_7,
4150e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_7),
4160e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
4170e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_shared_ops,
4180e66f109SKrzysztof Kozlowski 	},
4190e66f109SKrzysztof Kozlowski };
4200e66f109SKrzysztof Kozlowski 
4210e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_byte0_clk_src = {
4220e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8180,
4230e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
4240e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4250e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_1,
4260e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
4270e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4280e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_byte0_clk_src",
4290e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_1,
4300e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
4310e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
4320e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
4330e66f109SKrzysztof Kozlowski 	},
4340e66f109SKrzysztof Kozlowski };
4350e66f109SKrzysztof Kozlowski 
4360e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_byte1_clk_src = {
4370e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x819c,
4380e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
4390e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4400e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_1,
4410e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
4420e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4430e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_byte1_clk_src",
4440e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_1,
4450e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
4460e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
4470e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
4480e66f109SKrzysztof Kozlowski 	},
4490e66f109SKrzysztof Kozlowski };
4500e66f109SKrzysztof Kozlowski 
4510e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_aux_clk_src = {
4520e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8234,
4530e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
4540e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4550e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
4560e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
4570e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4580e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx0_aux_clk_src",
4590e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0,
4600e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
4610e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
4620e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
4630e66f109SKrzysztof Kozlowski 	},
4640e66f109SKrzysztof Kozlowski };
4650e66f109SKrzysztof Kozlowski 
4660e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_link_clk_src = {
4670e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x81e8,
4680e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
4690e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4700e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_8,
4710e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
4720e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4730e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx0_link_clk_src",
4740e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_8,
4750e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_8),
4760e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
4770e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
4780e66f109SKrzysztof Kozlowski 	},
4790e66f109SKrzysztof Kozlowski };
4800e66f109SKrzysztof Kozlowski 
4810e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_pixel0_clk_src = {
4820e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8204,
4830e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
4840e66f109SKrzysztof Kozlowski 	.hid_width = 5,
4850e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_5,
4860e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
4870e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
4880e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx0_pixel0_clk_src",
4890e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_5,
4900e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_5),
4910e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
4920e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
4930e66f109SKrzysztof Kozlowski 	},
4940e66f109SKrzysztof Kozlowski };
4950e66f109SKrzysztof Kozlowski 
4960e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_pixel1_clk_src = {
4970e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x821c,
4980e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
4990e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5000e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_5,
5010e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5020e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5030e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx0_pixel1_clk_src",
5040e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_5,
5050e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_5),
5060e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5070e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
5080e66f109SKrzysztof Kozlowski 	},
5090e66f109SKrzysztof Kozlowski };
5100e66f109SKrzysztof Kozlowski 
5110e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_aux_clk_src = {
5120e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8298,
5130e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
5140e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5150e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
5160e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5170e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5180e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx1_aux_clk_src",
5190e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0,
5200e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
5210e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5220e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
5230e66f109SKrzysztof Kozlowski 	},
5240e66f109SKrzysztof Kozlowski };
5250e66f109SKrzysztof Kozlowski 
5260e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_link_clk_src = {
5270e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x827c,
5280e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
5290e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5300e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_3,
5310e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5320e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5330e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx1_link_clk_src",
5340e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_3,
5350e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
5360e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5370e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
5380e66f109SKrzysztof Kozlowski 	},
5390e66f109SKrzysztof Kozlowski };
5400e66f109SKrzysztof Kozlowski 
5410e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_pixel0_clk_src = {
5420e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x824c,
5430e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
5440e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5450e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_2,
5460e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5470e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5480e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx1_pixel0_clk_src",
5490e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_2,
5500e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
5510e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5520e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
5530e66f109SKrzysztof Kozlowski 	},
5540e66f109SKrzysztof Kozlowski };
5550e66f109SKrzysztof Kozlowski 
5560e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_pixel1_clk_src = {
5570e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8264,
5580e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
5590e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5600e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_2,
5610e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5620e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5630e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx1_pixel1_clk_src",
5640e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_2,
5650e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
5660e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5670e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
5680e66f109SKrzysztof Kozlowski 	},
5690e66f109SKrzysztof Kozlowski };
5700e66f109SKrzysztof Kozlowski 
5710e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_aux_clk_src = {
5720e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x82fc,
5730e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
5740e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5750e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
5760e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5770e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5780e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx2_aux_clk_src",
5790e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0,
5800e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
5810e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5820e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
5830e66f109SKrzysztof Kozlowski 	},
5840e66f109SKrzysztof Kozlowski };
5850e66f109SKrzysztof Kozlowski 
5860e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_link_clk_src = {
5870e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x82b0,
5880e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
5890e66f109SKrzysztof Kozlowski 	.hid_width = 5,
5900e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_3,
5910e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
5920e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
5930e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx2_link_clk_src",
5940e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_3,
5950e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
5960e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
5970e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
5980e66f109SKrzysztof Kozlowski 	},
5990e66f109SKrzysztof Kozlowski };
6000e66f109SKrzysztof Kozlowski 
6010e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_pixel0_clk_src = {
6020e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x82cc,
6030e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
6040e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6050e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_2,
6060e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6070e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6080e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx2_pixel0_clk_src",
6090e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_2,
6100e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
6110e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6120e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
6130e66f109SKrzysztof Kozlowski 	},
6140e66f109SKrzysztof Kozlowski };
6150e66f109SKrzysztof Kozlowski 
6160e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_pixel1_clk_src = {
6170e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x82e4,
6180e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
6190e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6200e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_2,
6210e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6220e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6230e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx2_pixel1_clk_src",
6240e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_2,
6250e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
6260e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6270e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
6280e66f109SKrzysztof Kozlowski 	},
6290e66f109SKrzysztof Kozlowski };
6300e66f109SKrzysztof Kozlowski 
6310e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_aux_clk_src = {
6320e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8348,
6330e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
6340e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6350e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
6360e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6370e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6380e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx3_aux_clk_src",
6390e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0,
6400e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
6410e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6420e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
6430e66f109SKrzysztof Kozlowski 	},
6440e66f109SKrzysztof Kozlowski };
6450e66f109SKrzysztof Kozlowski 
6460e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_link_clk_src = {
6470e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x832c,
6480e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
6490e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6500e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_3,
6510e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6520e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6530e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx3_link_clk_src",
6540e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_3,
6550e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_3),
6560e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6570e66f109SKrzysztof Kozlowski 		.ops = &clk_byte2_ops,
6580e66f109SKrzysztof Kozlowski 	},
6590e66f109SKrzysztof Kozlowski };
6600e66f109SKrzysztof Kozlowski 
6610e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_pixel0_clk_src = {
6620e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8314,
6630e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
6640e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6650e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_2,
6660e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6670e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6680e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx3_pixel0_clk_src",
6690e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_2,
6700e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_2),
6710e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6720e66f109SKrzysztof Kozlowski 		.ops = &clk_dp_ops,
6730e66f109SKrzysztof Kozlowski 	},
6740e66f109SKrzysztof Kozlowski };
6750e66f109SKrzysztof Kozlowski 
6760e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_esc0_clk_src = {
6770e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x81b8,
6780e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
6790e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6800e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_6,
6810e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6820e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6830e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_esc0_clk_src",
6840e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_6,
6850e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_6),
6860e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
6870e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_shared_ops,
6880e66f109SKrzysztof Kozlowski 	},
6890e66f109SKrzysztof Kozlowski };
6900e66f109SKrzysztof Kozlowski 
6910e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_esc1_clk_src = {
6920e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x81d0,
6930e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
6940e66f109SKrzysztof Kozlowski 	.hid_width = 5,
6950e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_6,
6960e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
6970e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
6980e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_esc1_clk_src",
6990e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_6,
7000e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_6),
7010e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
7020e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_shared_ops,
7030e66f109SKrzysztof Kozlowski 	},
7040e66f109SKrzysztof Kozlowski };
7050e66f109SKrzysztof Kozlowski 
7060e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_hdmi_app_clk_src = {
7070e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x83a8,
7080e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
7090e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7100e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_9,
7110e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
7120e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
7130e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_hdmi_app_clk_src",
7140e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_9,
7150e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_9),
7160e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
7170e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_shared_ops,
7180e66f109SKrzysztof Kozlowski 	},
7190e66f109SKrzysztof Kozlowski };
7200e66f109SKrzysztof Kozlowski 
7210e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_hdmi_pclk_clk_src = {
7220e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8390,
7230e66f109SKrzysztof Kozlowski 	.mnd_width = 16,
7240e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7250e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_10,
7260e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
7270e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
7280e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_hdmi_pclk_clk_src",
7290e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_10,
7300e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_10),
7310e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
7320e66f109SKrzysztof Kozlowski 		.ops = &clk_pixel_ops,
7330e66f109SKrzysztof Kozlowski 	},
7340e66f109SKrzysztof Kozlowski };
7350e66f109SKrzysztof Kozlowski 
7360e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = {
7370e66f109SKrzysztof Kozlowski 	F(85714286, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7380e66f109SKrzysztof Kozlowski 	F(100000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7390e66f109SKrzysztof Kozlowski 	F(150000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7400e66f109SKrzysztof Kozlowski 	F(207000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7410e66f109SKrzysztof Kozlowski 	F(342000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7420e66f109SKrzysztof Kozlowski 	F(417000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7430e66f109SKrzysztof Kozlowski 	F(535000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7440e66f109SKrzysztof Kozlowski 	F(600000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7450e66f109SKrzysztof Kozlowski 	F(660000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0),
7460e66f109SKrzysztof Kozlowski 	{ }
7470e66f109SKrzysztof Kozlowski };
7480e66f109SKrzysztof Kozlowski 
7490e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_mdp_clk_src = {
7500e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8150,
7510e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
7520e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7530e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_11,
7540e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src,
7550e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
7560e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_mdp_clk_src",
7570e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_11,
7580e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_11),
7590e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
7600e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_shared_ops,
7610e66f109SKrzysztof Kozlowski 	},
7620e66f109SKrzysztof Kozlowski };
7630e66f109SKrzysztof Kozlowski 
7640e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk0_clk_src = {
7650e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8108,
7660e66f109SKrzysztof Kozlowski 	.mnd_width = 8,
7670e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7680e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_1,
7690e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
7700e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
7710e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_pclk0_clk_src",
7720e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_1,
7730e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
7740e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
7750e66f109SKrzysztof Kozlowski 		.ops = &clk_pixel_ops,
7760e66f109SKrzysztof Kozlowski 	},
7770e66f109SKrzysztof Kozlowski };
7780e66f109SKrzysztof Kozlowski 
7790e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk1_clk_src = {
7800e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8120,
7810e66f109SKrzysztof Kozlowski 	.mnd_width = 8,
7820e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7830e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_1,
7840e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
7850e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
7860e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_pclk1_clk_src",
7870e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_1,
7880e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
7890e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
7900e66f109SKrzysztof Kozlowski 		.ops = &clk_pixel_ops,
7910e66f109SKrzysztof Kozlowski 	},
7920e66f109SKrzysztof Kozlowski };
7930e66f109SKrzysztof Kozlowski 
7940e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk2_clk_src = {
7950e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8138,
7960e66f109SKrzysztof Kozlowski 	.mnd_width = 8,
7970e66f109SKrzysztof Kozlowski 	.hid_width = 5,
7980e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_1,
7990e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
8000e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8010e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_pclk2_clk_src",
8020e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_1,
8030e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_1),
8040e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
8050e66f109SKrzysztof Kozlowski 		.ops = &clk_pixel_ops,
8060e66f109SKrzysztof Kozlowski 	},
8070e66f109SKrzysztof Kozlowski };
8080e66f109SKrzysztof Kozlowski 
8090e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_vsync_clk_src = {
8100e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x8168,
8110e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
8120e66f109SKrzysztof Kozlowski 	.hid_width = 5,
8130e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
8140e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
8150e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8160e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_vsync_clk_src",
8170e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0,
8180e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0),
8190e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
8200e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
8210e66f109SKrzysztof Kozlowski 	},
8220e66f109SKrzysztof Kozlowski };
8230e66f109SKrzysztof Kozlowski 
8240e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_osc_clk_src[] = {
8250e66f109SKrzysztof Kozlowski 	F(38400000, P_DISP_CC_PLL2_OUT_MAIN, 1, 0, 0),
8260e66f109SKrzysztof Kozlowski 	{ }
8270e66f109SKrzysztof Kozlowski };
8280e66f109SKrzysztof Kozlowski 
8290e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_osc_clk_src = {
8300e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0x80f0,
8310e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
8320e66f109SKrzysztof Kozlowski 	.hid_width = 5,
8330e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_12,
8340e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_osc_clk_src,
8350e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8360e66f109SKrzysztof Kozlowski 		.name = "disp_cc_osc_clk_src",
8370e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_12,
8380e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_12),
8390e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
8400e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
8410e66f109SKrzysztof Kozlowski 	},
8420e66f109SKrzysztof Kozlowski };
8430e66f109SKrzysztof Kozlowski 
8440e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_sleep_clk_src[] = {
8450e66f109SKrzysztof Kozlowski 	F(32000, P_SLEEP_CLK, 1, 0, 0),
8460e66f109SKrzysztof Kozlowski 	{ }
8470e66f109SKrzysztof Kozlowski };
8480e66f109SKrzysztof Kozlowski 
8490e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_sleep_clk_src = {
8500e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0xe064,
8510e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
8520e66f109SKrzysztof Kozlowski 	.hid_width = 5,
8530e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_13,
8540e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_sleep_clk_src,
8550e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8560e66f109SKrzysztof Kozlowski 		.name = "disp_cc_sleep_clk_src",
8570e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_13_ao,
8580e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_13_ao),
8590e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
8600e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
8610e66f109SKrzysztof Kozlowski 	},
8620e66f109SKrzysztof Kozlowski };
8630e66f109SKrzysztof Kozlowski 
8640e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_xo_clk_src = {
8650e66f109SKrzysztof Kozlowski 	.cmd_rcgr = 0xe044,
8660e66f109SKrzysztof Kozlowski 	.mnd_width = 0,
8670e66f109SKrzysztof Kozlowski 	.hid_width = 5,
8680e66f109SKrzysztof Kozlowski 	.parent_map = disp_cc_parent_map_0,
8690e66f109SKrzysztof Kozlowski 	.freq_tbl = ftbl_disp_cc_esync0_clk_src,
8700e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8710e66f109SKrzysztof Kozlowski 		.name = "disp_cc_xo_clk_src",
8720e66f109SKrzysztof Kozlowski 		.parent_data = disp_cc_parent_data_0_ao,
8730e66f109SKrzysztof Kozlowski 		.num_parents = ARRAY_SIZE(disp_cc_parent_data_0_ao),
8740e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
8750e66f109SKrzysztof Kozlowski 		.ops = &clk_rcg2_ops,
8760e66f109SKrzysztof Kozlowski 	},
8770e66f109SKrzysztof Kozlowski };
8780e66f109SKrzysztof Kozlowski 
8790e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_byte0_div_clk_src = {
8800e66f109SKrzysztof Kozlowski 	.reg = 0x8198,
8810e66f109SKrzysztof Kozlowski 	.shift = 0,
8820e66f109SKrzysztof Kozlowski 	.width = 4,
8830e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8840e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_byte0_div_clk_src",
8850e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
8860e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_byte0_clk_src.clkr.hw,
8870e66f109SKrzysztof Kozlowski 		},
8880e66f109SKrzysztof Kozlowski 		.num_parents = 1,
8890e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ops,
8900e66f109SKrzysztof Kozlowski 	},
8910e66f109SKrzysztof Kozlowski };
8920e66f109SKrzysztof Kozlowski 
8930e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_byte1_div_clk_src = {
8940e66f109SKrzysztof Kozlowski 	.reg = 0x81b4,
8950e66f109SKrzysztof Kozlowski 	.shift = 0,
8960e66f109SKrzysztof Kozlowski 	.width = 4,
8970e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
8980e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_byte1_div_clk_src",
8990e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9000e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_byte1_clk_src.clkr.hw,
9010e66f109SKrzysztof Kozlowski 		},
9020e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9030e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ops,
9040e66f109SKrzysztof Kozlowski 	},
9050e66f109SKrzysztof Kozlowski };
9060e66f109SKrzysztof Kozlowski 
9070e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx0_link_div_clk_src = {
9080e66f109SKrzysztof Kozlowski 	.reg = 0x8200,
9090e66f109SKrzysztof Kozlowski 	.shift = 0,
9100e66f109SKrzysztof Kozlowski 	.width = 4,
9110e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
9120e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx0_link_div_clk_src",
9130e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9140e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
9150e66f109SKrzysztof Kozlowski 		},
9160e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9170e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
9180e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ro_ops,
9190e66f109SKrzysztof Kozlowski 	},
9200e66f109SKrzysztof Kozlowski };
9210e66f109SKrzysztof Kozlowski 
9220e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx1_link_div_clk_src = {
9230e66f109SKrzysztof Kozlowski 	.reg = 0x8294,
9240e66f109SKrzysztof Kozlowski 	.shift = 0,
9250e66f109SKrzysztof Kozlowski 	.width = 4,
9260e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
9270e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx1_link_div_clk_src",
9280e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9290e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
9300e66f109SKrzysztof Kozlowski 		},
9310e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9320e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
9330e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ro_ops,
9340e66f109SKrzysztof Kozlowski 	},
9350e66f109SKrzysztof Kozlowski };
9360e66f109SKrzysztof Kozlowski 
9370e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx2_link_div_clk_src = {
9380e66f109SKrzysztof Kozlowski 	.reg = 0x82c8,
9390e66f109SKrzysztof Kozlowski 	.shift = 0,
9400e66f109SKrzysztof Kozlowski 	.width = 4,
9410e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
9420e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx2_link_div_clk_src",
9430e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9440e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
9450e66f109SKrzysztof Kozlowski 		},
9460e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9470e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
9480e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ro_ops,
9490e66f109SKrzysztof Kozlowski 	},
9500e66f109SKrzysztof Kozlowski };
9510e66f109SKrzysztof Kozlowski 
9520e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx3_link_div_clk_src = {
9530e66f109SKrzysztof Kozlowski 	.reg = 0x8344,
9540e66f109SKrzysztof Kozlowski 	.shift = 0,
9550e66f109SKrzysztof Kozlowski 	.width = 4,
9560e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
9570e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_dptx3_link_div_clk_src",
9580e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9590e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
9600e66f109SKrzysztof Kozlowski 		},
9610e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9620e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
9630e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ro_ops,
9640e66f109SKrzysztof Kozlowski 	},
9650e66f109SKrzysztof Kozlowski };
9660e66f109SKrzysztof Kozlowski 
9670e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_hdmi_pclk_div_clk_src = {
9680e66f109SKrzysztof Kozlowski 	.reg = 0x838c,
9690e66f109SKrzysztof Kozlowski 	.shift = 0,
9700e66f109SKrzysztof Kozlowski 	.width = 4,
9710e66f109SKrzysztof Kozlowski 	.clkr.hw.init = &(const struct clk_init_data) {
9720e66f109SKrzysztof Kozlowski 		.name = "disp_cc_mdss_hdmi_pclk_div_clk_src",
9730e66f109SKrzysztof Kozlowski 		.parent_hws = (const struct clk_hw*[]) {
9740e66f109SKrzysztof Kozlowski 			&disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw,
9750e66f109SKrzysztof Kozlowski 		},
9760e66f109SKrzysztof Kozlowski 		.num_parents = 1,
9770e66f109SKrzysztof Kozlowski 		.flags = CLK_SET_RATE_PARENT,
9780e66f109SKrzysztof Kozlowski 		.ops = &clk_regmap_div_ro_ops,
9790e66f109SKrzysztof Kozlowski 	},
9800e66f109SKrzysztof Kozlowski };
9810e66f109SKrzysztof Kozlowski 
9820e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_esync0_clk = {
9830e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80b8,
9840e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
9850e66f109SKrzysztof Kozlowski 	.clkr = {
9860e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80b8,
9870e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
9880e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
9890e66f109SKrzysztof Kozlowski 			.name = "disp_cc_esync0_clk",
9900e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
9910e66f109SKrzysztof Kozlowski 				&disp_cc_esync0_clk_src.clkr.hw,
9920e66f109SKrzysztof Kozlowski 			},
9930e66f109SKrzysztof Kozlowski 			.num_parents = 1,
9940e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
9950e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
9960e66f109SKrzysztof Kozlowski 		},
9970e66f109SKrzysztof Kozlowski 	},
9980e66f109SKrzysztof Kozlowski };
9990e66f109SKrzysztof Kozlowski 
10000e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_esync1_clk = {
10010e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80bc,
10020e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
10030e66f109SKrzysztof Kozlowski 	.clkr = {
10040e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80bc,
10050e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10060e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10070e66f109SKrzysztof Kozlowski 			.name = "disp_cc_esync1_clk",
10080e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10090e66f109SKrzysztof Kozlowski 				&disp_cc_esync1_clk_src.clkr.hw,
10100e66f109SKrzysztof Kozlowski 			},
10110e66f109SKrzysztof Kozlowski 			.num_parents = 1,
10120e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
10130e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
10140e66f109SKrzysztof Kozlowski 		},
10150e66f109SKrzysztof Kozlowski 	},
10160e66f109SKrzysztof Kozlowski };
10170e66f109SKrzysztof Kozlowski 
10180e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_accu_shift_clk = {
10190e66f109SKrzysztof Kozlowski 	.halt_reg = 0xe060,
10200e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT_VOTED,
10210e66f109SKrzysztof Kozlowski 	.clkr = {
10220e66f109SKrzysztof Kozlowski 		.enable_reg = 0xe060,
10230e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10240e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10250e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_accu_shift_clk",
10260e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10270e66f109SKrzysztof Kozlowski 				&disp_cc_xo_clk_src.clkr.hw,
10280e66f109SKrzysztof Kozlowski 			},
10290e66f109SKrzysztof Kozlowski 			.num_parents = 1,
10300e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
10310e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
10320e66f109SKrzysztof Kozlowski 		},
10330e66f109SKrzysztof Kozlowski 	},
10340e66f109SKrzysztof Kozlowski };
10350e66f109SKrzysztof Kozlowski 
10360e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_ahb1_clk = {
10370e66f109SKrzysztof Kozlowski 	.halt_reg = 0xa028,
10380e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
10390e66f109SKrzysztof Kozlowski 	.clkr = {
10400e66f109SKrzysztof Kozlowski 		.enable_reg = 0xa028,
10410e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10420e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10430e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_ahb1_clk",
10440e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10450e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
10460e66f109SKrzysztof Kozlowski 			},
10470e66f109SKrzysztof Kozlowski 			.num_parents = 1,
10480e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
10490e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
10500e66f109SKrzysztof Kozlowski 		},
10510e66f109SKrzysztof Kozlowski 	},
10520e66f109SKrzysztof Kozlowski };
10530e66f109SKrzysztof Kozlowski 
10540e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_ahb_clk = {
10550e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80b0,
10560e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
10570e66f109SKrzysztof Kozlowski 	.clkr = {
10580e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80b0,
10590e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10600e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10610e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_ahb_clk",
10620e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10630e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
10640e66f109SKrzysztof Kozlowski 			},
10650e66f109SKrzysztof Kozlowski 			.num_parents = 1,
10660e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
10670e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
10680e66f109SKrzysztof Kozlowski 		},
10690e66f109SKrzysztof Kozlowski 	},
10700e66f109SKrzysztof Kozlowski };
10710e66f109SKrzysztof Kozlowski 
10720e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte0_clk = {
10730e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8034,
10740e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
10750e66f109SKrzysztof Kozlowski 	.clkr = {
10760e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8034,
10770e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10780e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10790e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_byte0_clk",
10800e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10810e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_byte0_clk_src.clkr.hw,
10820e66f109SKrzysztof Kozlowski 			},
10830e66f109SKrzysztof Kozlowski 			.num_parents = 1,
10840e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
10850e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
10860e66f109SKrzysztof Kozlowski 		},
10870e66f109SKrzysztof Kozlowski 	},
10880e66f109SKrzysztof Kozlowski };
10890e66f109SKrzysztof Kozlowski 
10900e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte0_intf_clk = {
10910e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8038,
10920e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
10930e66f109SKrzysztof Kozlowski 	.clkr = {
10940e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8038,
10950e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
10960e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
10970e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_byte0_intf_clk",
10980e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
10990e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_byte0_div_clk_src.clkr.hw,
11000e66f109SKrzysztof Kozlowski 			},
11010e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11020e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11030e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11040e66f109SKrzysztof Kozlowski 		},
11050e66f109SKrzysztof Kozlowski 	},
11060e66f109SKrzysztof Kozlowski };
11070e66f109SKrzysztof Kozlowski 
11080e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte1_clk = {
11090e66f109SKrzysztof Kozlowski 	.halt_reg = 0x803c,
11100e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
11110e66f109SKrzysztof Kozlowski 	.clkr = {
11120e66f109SKrzysztof Kozlowski 		.enable_reg = 0x803c,
11130e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
11140e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
11150e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_byte1_clk",
11160e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
11170e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_byte1_clk_src.clkr.hw,
11180e66f109SKrzysztof Kozlowski 			},
11190e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11200e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11210e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11220e66f109SKrzysztof Kozlowski 		},
11230e66f109SKrzysztof Kozlowski 	},
11240e66f109SKrzysztof Kozlowski };
11250e66f109SKrzysztof Kozlowski 
11260e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte1_intf_clk = {
11270e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8040,
11280e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
11290e66f109SKrzysztof Kozlowski 	.clkr = {
11300e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8040,
11310e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
11320e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
11330e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_byte1_intf_clk",
11340e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
11350e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_byte1_div_clk_src.clkr.hw,
11360e66f109SKrzysztof Kozlowski 			},
11370e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11380e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11390e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11400e66f109SKrzysztof Kozlowski 		},
11410e66f109SKrzysztof Kozlowski 	},
11420e66f109SKrzysztof Kozlowski };
11430e66f109SKrzysztof Kozlowski 
11440e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_aux_clk = {
11450e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8064,
11460e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
11470e66f109SKrzysztof Kozlowski 	.clkr = {
11480e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8064,
11490e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
11500e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
11510e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_aux_clk",
11520e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
11530e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_aux_clk_src.clkr.hw,
11540e66f109SKrzysztof Kozlowski 			},
11550e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11560e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11570e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11580e66f109SKrzysztof Kozlowski 		},
11590e66f109SKrzysztof Kozlowski 	},
11600e66f109SKrzysztof Kozlowski };
11610e66f109SKrzysztof Kozlowski 
11620e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_crypto_clk = {
11630e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8058,
11640e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
11650e66f109SKrzysztof Kozlowski 	.clkr = {
11660e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8058,
11670e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
11680e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
11690e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_crypto_clk",
11700e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
11710e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
11720e66f109SKrzysztof Kozlowski 			},
11730e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11740e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11750e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11760e66f109SKrzysztof Kozlowski 		},
11770e66f109SKrzysztof Kozlowski 	},
11780e66f109SKrzysztof Kozlowski };
11790e66f109SKrzysztof Kozlowski 
11800e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_link_clk = {
11810e66f109SKrzysztof Kozlowski 	.halt_reg = 0x804c,
11820e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
11830e66f109SKrzysztof Kozlowski 	.clkr = {
11840e66f109SKrzysztof Kozlowski 		.enable_reg = 0x804c,
11850e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
11860e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
11870e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_link_clk",
11880e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
11890e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_link_clk_src.clkr.hw,
11900e66f109SKrzysztof Kozlowski 			},
11910e66f109SKrzysztof Kozlowski 			.num_parents = 1,
11920e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
11930e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
11940e66f109SKrzysztof Kozlowski 		},
11950e66f109SKrzysztof Kozlowski 	},
11960e66f109SKrzysztof Kozlowski };
11970e66f109SKrzysztof Kozlowski 
11980e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_link_intf_clk = {
11990e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8054,
12000e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12010e66f109SKrzysztof Kozlowski 	.clkr = {
12020e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8054,
12030e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12040e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12050e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_link_intf_clk",
12060e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12070e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
12080e66f109SKrzysztof Kozlowski 			},
12090e66f109SKrzysztof Kozlowski 			.num_parents = 1,
12100e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
12110e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
12120e66f109SKrzysztof Kozlowski 		},
12130e66f109SKrzysztof Kozlowski 	},
12140e66f109SKrzysztof Kozlowski };
12150e66f109SKrzysztof Kozlowski 
12160e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_pixel0_clk = {
12170e66f109SKrzysztof Kozlowski 	.halt_reg = 0x805c,
12180e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12190e66f109SKrzysztof Kozlowski 	.clkr = {
12200e66f109SKrzysztof Kozlowski 		.enable_reg = 0x805c,
12210e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12220e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12230e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_pixel0_clk",
12240e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12250e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_pixel0_clk_src.clkr.hw,
12260e66f109SKrzysztof Kozlowski 			},
12270e66f109SKrzysztof Kozlowski 			.num_parents = 1,
12280e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
12290e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
12300e66f109SKrzysztof Kozlowski 		},
12310e66f109SKrzysztof Kozlowski 	},
12320e66f109SKrzysztof Kozlowski };
12330e66f109SKrzysztof Kozlowski 
12340e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_pixel1_clk = {
12350e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8060,
12360e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12370e66f109SKrzysztof Kozlowski 	.clkr = {
12380e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8060,
12390e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12400e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12410e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_pixel1_clk",
12420e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12430e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_pixel1_clk_src.clkr.hw,
12440e66f109SKrzysztof Kozlowski 			},
12450e66f109SKrzysztof Kozlowski 			.num_parents = 1,
12460e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
12470e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
12480e66f109SKrzysztof Kozlowski 		},
12490e66f109SKrzysztof Kozlowski 	},
12500e66f109SKrzysztof Kozlowski };
12510e66f109SKrzysztof Kozlowski 
12520e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_usb_router_link_intf_clk = {
12530e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8050,
12540e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12550e66f109SKrzysztof Kozlowski 	.clkr = {
12560e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8050,
12570e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12580e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12590e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx0_usb_router_link_intf_clk",
12600e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12610e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw,
12620e66f109SKrzysztof Kozlowski 			},
12630e66f109SKrzysztof Kozlowski 			.num_parents = 1,
12640e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
12650e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
12660e66f109SKrzysztof Kozlowski 		},
12670e66f109SKrzysztof Kozlowski 	},
12680e66f109SKrzysztof Kozlowski };
12690e66f109SKrzysztof Kozlowski 
12700e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_aux_clk = {
12710e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8080,
12720e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12730e66f109SKrzysztof Kozlowski 	.clkr = {
12740e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8080,
12750e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12760e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12770e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_aux_clk",
12780e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12790e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_aux_clk_src.clkr.hw,
12800e66f109SKrzysztof Kozlowski 			},
12810e66f109SKrzysztof Kozlowski 			.num_parents = 1,
12820e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
12830e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
12840e66f109SKrzysztof Kozlowski 		},
12850e66f109SKrzysztof Kozlowski 	},
12860e66f109SKrzysztof Kozlowski };
12870e66f109SKrzysztof Kozlowski 
12880e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_crypto_clk = {
12890e66f109SKrzysztof Kozlowski 	.halt_reg = 0x807c,
12900e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
12910e66f109SKrzysztof Kozlowski 	.clkr = {
12920e66f109SKrzysztof Kozlowski 		.enable_reg = 0x807c,
12930e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
12940e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
12950e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_crypto_clk",
12960e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
12970e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
12980e66f109SKrzysztof Kozlowski 			},
12990e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13000e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13010e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13020e66f109SKrzysztof Kozlowski 		},
13030e66f109SKrzysztof Kozlowski 	},
13040e66f109SKrzysztof Kozlowski };
13050e66f109SKrzysztof Kozlowski 
13060e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_link_clk = {
13070e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8070,
13080e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13090e66f109SKrzysztof Kozlowski 	.clkr = {
13100e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8070,
13110e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
13120e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
13130e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_link_clk",
13140e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
13150e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_link_clk_src.clkr.hw,
13160e66f109SKrzysztof Kozlowski 			},
13170e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13180e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13190e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13200e66f109SKrzysztof Kozlowski 		},
13210e66f109SKrzysztof Kozlowski 	},
13220e66f109SKrzysztof Kozlowski };
13230e66f109SKrzysztof Kozlowski 
13240e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_link_intf_clk = {
13250e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8078,
13260e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13270e66f109SKrzysztof Kozlowski 	.clkr = {
13280e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8078,
13290e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
13300e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
13310e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_link_intf_clk",
13320e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
13330e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
13340e66f109SKrzysztof Kozlowski 			},
13350e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13360e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13370e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13380e66f109SKrzysztof Kozlowski 		},
13390e66f109SKrzysztof Kozlowski 	},
13400e66f109SKrzysztof Kozlowski };
13410e66f109SKrzysztof Kozlowski 
13420e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_pixel0_clk = {
13430e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8068,
13440e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13450e66f109SKrzysztof Kozlowski 	.clkr = {
13460e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8068,
13470e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
13480e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
13490e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_pixel0_clk",
13500e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
13510e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_pixel0_clk_src.clkr.hw,
13520e66f109SKrzysztof Kozlowski 			},
13530e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13540e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13550e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13560e66f109SKrzysztof Kozlowski 		},
13570e66f109SKrzysztof Kozlowski 	},
13580e66f109SKrzysztof Kozlowski };
13590e66f109SKrzysztof Kozlowski 
13600e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_pixel1_clk = {
13610e66f109SKrzysztof Kozlowski 	.halt_reg = 0x806c,
13620e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13630e66f109SKrzysztof Kozlowski 	.clkr = {
13640e66f109SKrzysztof Kozlowski 		.enable_reg = 0x806c,
13650e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
13660e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
13670e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_pixel1_clk",
13680e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
13690e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_pixel1_clk_src.clkr.hw,
13700e66f109SKrzysztof Kozlowski 			},
13710e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13720e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13730e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13740e66f109SKrzysztof Kozlowski 		},
13750e66f109SKrzysztof Kozlowski 	},
13760e66f109SKrzysztof Kozlowski };
13770e66f109SKrzysztof Kozlowski 
13780e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_usb_router_link_intf_clk = {
13790e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8074,
13800e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13810e66f109SKrzysztof Kozlowski 	.clkr = {
13820e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8074,
13830e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
13840e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
13850e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx1_usb_router_link_intf_clk",
13860e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
13870e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw,
13880e66f109SKrzysztof Kozlowski 			},
13890e66f109SKrzysztof Kozlowski 			.num_parents = 1,
13900e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
13910e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
13920e66f109SKrzysztof Kozlowski 		},
13930e66f109SKrzysztof Kozlowski 	},
13940e66f109SKrzysztof Kozlowski };
13950e66f109SKrzysztof Kozlowski 
13960e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_aux_clk = {
13970e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8098,
13980e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
13990e66f109SKrzysztof Kozlowski 	.clkr = {
14000e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8098,
14010e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14020e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14030e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_aux_clk",
14040e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14050e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_aux_clk_src.clkr.hw,
14060e66f109SKrzysztof Kozlowski 			},
14070e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14080e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14090e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
14100e66f109SKrzysztof Kozlowski 		},
14110e66f109SKrzysztof Kozlowski 	},
14120e66f109SKrzysztof Kozlowski };
14130e66f109SKrzysztof Kozlowski 
14140e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_crypto_clk = {
14150e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8094,
14160e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
14170e66f109SKrzysztof Kozlowski 	.clkr = {
14180e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8094,
14190e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14200e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14210e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_crypto_clk",
14220e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14230e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
14240e66f109SKrzysztof Kozlowski 			},
14250e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14260e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14270e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
14280e66f109SKrzysztof Kozlowski 		},
14290e66f109SKrzysztof Kozlowski 	},
14300e66f109SKrzysztof Kozlowski };
14310e66f109SKrzysztof Kozlowski 
14320e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_link_clk = {
14330e66f109SKrzysztof Kozlowski 	.halt_reg = 0x808c,
14340e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
14350e66f109SKrzysztof Kozlowski 	.clkr = {
14360e66f109SKrzysztof Kozlowski 		.enable_reg = 0x808c,
14370e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14380e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14390e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_link_clk",
14400e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14410e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_link_clk_src.clkr.hw,
14420e66f109SKrzysztof Kozlowski 			},
14430e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14440e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14450e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
14460e66f109SKrzysztof Kozlowski 		},
14470e66f109SKrzysztof Kozlowski 	},
14480e66f109SKrzysztof Kozlowski };
14490e66f109SKrzysztof Kozlowski 
14500e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_link_intf_clk = {
14510e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8090,
14520e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
14530e66f109SKrzysztof Kozlowski 	.clkr = {
14540e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8090,
14550e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14560e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14570e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_link_intf_clk",
14580e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14590e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_link_div_clk_src.clkr.hw,
14600e66f109SKrzysztof Kozlowski 			},
14610e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14620e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14630e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
14640e66f109SKrzysztof Kozlowski 		},
14650e66f109SKrzysztof Kozlowski 	},
14660e66f109SKrzysztof Kozlowski };
14670e66f109SKrzysztof Kozlowski 
14680e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_pixel0_clk = {
14690e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8084,
14700e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
14710e66f109SKrzysztof Kozlowski 	.clkr = {
14720e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8084,
14730e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14740e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14750e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_pixel0_clk",
14760e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14770e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_pixel0_clk_src.clkr.hw,
14780e66f109SKrzysztof Kozlowski 			},
14790e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14800e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14810e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
14820e66f109SKrzysztof Kozlowski 		},
14830e66f109SKrzysztof Kozlowski 	},
14840e66f109SKrzysztof Kozlowski };
14850e66f109SKrzysztof Kozlowski 
14860e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_pixel1_clk = {
14870e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8088,
14880e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
14890e66f109SKrzysztof Kozlowski 	.clkr = {
14900e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8088,
14910e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
14920e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
14930e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx2_pixel1_clk",
14940e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
14950e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx2_pixel1_clk_src.clkr.hw,
14960e66f109SKrzysztof Kozlowski 			},
14970e66f109SKrzysztof Kozlowski 			.num_parents = 1,
14980e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
14990e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15000e66f109SKrzysztof Kozlowski 		},
15010e66f109SKrzysztof Kozlowski 	},
15020e66f109SKrzysztof Kozlowski };
15030e66f109SKrzysztof Kozlowski 
15040e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_aux_clk = {
15050e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80a8,
15060e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15070e66f109SKrzysztof Kozlowski 	.clkr = {
15080e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80a8,
15090e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
15100e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
15110e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx3_aux_clk",
15120e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
15130e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx3_aux_clk_src.clkr.hw,
15140e66f109SKrzysztof Kozlowski 			},
15150e66f109SKrzysztof Kozlowski 			.num_parents = 1,
15160e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
15170e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15180e66f109SKrzysztof Kozlowski 		},
15190e66f109SKrzysztof Kozlowski 	},
15200e66f109SKrzysztof Kozlowski };
15210e66f109SKrzysztof Kozlowski 
15220e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_crypto_clk = {
15230e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80ac,
15240e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15250e66f109SKrzysztof Kozlowski 	.clkr = {
15260e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80ac,
15270e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
15280e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
15290e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx3_crypto_clk",
15300e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
15310e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
15320e66f109SKrzysztof Kozlowski 			},
15330e66f109SKrzysztof Kozlowski 			.num_parents = 1,
15340e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
15350e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15360e66f109SKrzysztof Kozlowski 		},
15370e66f109SKrzysztof Kozlowski 	},
15380e66f109SKrzysztof Kozlowski };
15390e66f109SKrzysztof Kozlowski 
15400e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_link_clk = {
15410e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80a0,
15420e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15430e66f109SKrzysztof Kozlowski 	.clkr = {
15440e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80a0,
15450e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
15460e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
15470e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx3_link_clk",
15480e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
15490e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx3_link_clk_src.clkr.hw,
15500e66f109SKrzysztof Kozlowski 			},
15510e66f109SKrzysztof Kozlowski 			.num_parents = 1,
15520e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
15530e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15540e66f109SKrzysztof Kozlowski 		},
15550e66f109SKrzysztof Kozlowski 	},
15560e66f109SKrzysztof Kozlowski };
15570e66f109SKrzysztof Kozlowski 
15580e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_link_intf_clk = {
15590e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80a4,
15600e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15610e66f109SKrzysztof Kozlowski 	.clkr = {
15620e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80a4,
15630e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
15640e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
15650e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx3_link_intf_clk",
15660e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
15670e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx3_link_div_clk_src.clkr.hw,
15680e66f109SKrzysztof Kozlowski 			},
15690e66f109SKrzysztof Kozlowski 			.num_parents = 1,
15700e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
15710e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15720e66f109SKrzysztof Kozlowski 		},
15730e66f109SKrzysztof Kozlowski 	},
15740e66f109SKrzysztof Kozlowski };
15750e66f109SKrzysztof Kozlowski 
15760e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_pixel0_clk = {
15770e66f109SKrzysztof Kozlowski 	.halt_reg = 0x809c,
15780e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15790e66f109SKrzysztof Kozlowski 	.clkr = {
15800e66f109SKrzysztof Kozlowski 		.enable_reg = 0x809c,
15810e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
15820e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
15830e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_dptx3_pixel0_clk",
15840e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
15850e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_dptx3_pixel0_clk_src.clkr.hw,
15860e66f109SKrzysztof Kozlowski 			},
15870e66f109SKrzysztof Kozlowski 			.num_parents = 1,
15880e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
15890e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
15900e66f109SKrzysztof Kozlowski 		},
15910e66f109SKrzysztof Kozlowski 	},
15920e66f109SKrzysztof Kozlowski };
15930e66f109SKrzysztof Kozlowski 
15940e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_esc0_clk = {
15950e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8044,
15960e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
15970e66f109SKrzysztof Kozlowski 	.clkr = {
15980e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8044,
15990e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16000e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16010e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_esc0_clk",
16020e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16030e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_esc0_clk_src.clkr.hw,
16040e66f109SKrzysztof Kozlowski 			},
16050e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16060e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16070e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16080e66f109SKrzysztof Kozlowski 		},
16090e66f109SKrzysztof Kozlowski 	},
16100e66f109SKrzysztof Kozlowski };
16110e66f109SKrzysztof Kozlowski 
16120e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_esc1_clk = {
16130e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8048,
16140e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
16150e66f109SKrzysztof Kozlowski 	.clkr = {
16160e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8048,
16170e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16180e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16190e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_esc1_clk",
16200e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16210e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_esc1_clk_src.clkr.hw,
16220e66f109SKrzysztof Kozlowski 			},
16230e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16240e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16250e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16260e66f109SKrzysztof Kozlowski 		},
16270e66f109SKrzysztof Kozlowski 	},
16280e66f109SKrzysztof Kozlowski };
16290e66f109SKrzysztof Kozlowski 
16300e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_ahbm_clk = {
16310e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8378,
16320e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
16330e66f109SKrzysztof Kozlowski 	.clkr = {
16340e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8378,
16350e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16360e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16370e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_hdmi_ahbm_clk",
16380e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16390e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
16400e66f109SKrzysztof Kozlowski 			},
16410e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16420e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16430e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16440e66f109SKrzysztof Kozlowski 		},
16450e66f109SKrzysztof Kozlowski 	},
16460e66f109SKrzysztof Kozlowski };
16470e66f109SKrzysztof Kozlowski 
16480e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_app_clk = {
16490e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8388,
16500e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
16510e66f109SKrzysztof Kozlowski 	.clkr = {
16520e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8388,
16530e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16540e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16550e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_hdmi_app_clk",
16560e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16570e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_hdmi_app_clk_src.clkr.hw,
16580e66f109SKrzysztof Kozlowski 			},
16590e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16600e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16610e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16620e66f109SKrzysztof Kozlowski 		},
16630e66f109SKrzysztof Kozlowski 	},
16640e66f109SKrzysztof Kozlowski };
16650e66f109SKrzysztof Kozlowski 
16660e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_crypto_clk = {
16670e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8384,
16680e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
16690e66f109SKrzysztof Kozlowski 	.clkr = {
16700e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8384,
16710e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16720e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16730e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_hdmi_crypto_clk",
16740e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16750e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw,
16760e66f109SKrzysztof Kozlowski 			},
16770e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16780e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16790e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16800e66f109SKrzysztof Kozlowski 		},
16810e66f109SKrzysztof Kozlowski 	},
16820e66f109SKrzysztof Kozlowski };
16830e66f109SKrzysztof Kozlowski 
16840e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_intf_clk = {
16850e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8380,
16860e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
16870e66f109SKrzysztof Kozlowski 	.clkr = {
16880e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8380,
16890e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
16900e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
16910e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_hdmi_intf_clk",
16920e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
16930e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_hdmi_pclk_div_clk_src.clkr.hw,
16940e66f109SKrzysztof Kozlowski 			},
16950e66f109SKrzysztof Kozlowski 			.num_parents = 1,
16960e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
16970e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
16980e66f109SKrzysztof Kozlowski 		},
16990e66f109SKrzysztof Kozlowski 	},
17000e66f109SKrzysztof Kozlowski };
17010e66f109SKrzysztof Kozlowski 
17020e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_pclk_clk = {
17030e66f109SKrzysztof Kozlowski 	.halt_reg = 0x837c,
17040e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
17050e66f109SKrzysztof Kozlowski 	.clkr = {
17060e66f109SKrzysztof Kozlowski 		.enable_reg = 0x837c,
17070e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17080e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17090e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_hdmi_pclk_clk",
17100e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
17110e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw,
17120e66f109SKrzysztof Kozlowski 			},
17130e66f109SKrzysztof Kozlowski 			.num_parents = 1,
17140e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
17150e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
17160e66f109SKrzysztof Kozlowski 		},
17170e66f109SKrzysztof Kozlowski 	},
17180e66f109SKrzysztof Kozlowski };
17190e66f109SKrzysztof Kozlowski 
17200e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp1_clk = {
17210e66f109SKrzysztof Kozlowski 	.halt_reg = 0xa004,
17220e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
17230e66f109SKrzysztof Kozlowski 	.clkr = {
17240e66f109SKrzysztof Kozlowski 		.enable_reg = 0xa004,
17250e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17260e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17270e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_mdp1_clk",
17280e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
17290e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
17300e66f109SKrzysztof Kozlowski 			},
17310e66f109SKrzysztof Kozlowski 			.num_parents = 1,
17320e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
17330e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
17340e66f109SKrzysztof Kozlowski 		},
17350e66f109SKrzysztof Kozlowski 	},
17360e66f109SKrzysztof Kozlowski };
17370e66f109SKrzysztof Kozlowski 
17380e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_clk = {
17390e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8010,
17400e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
17410e66f109SKrzysztof Kozlowski 	.clkr = {
17420e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8010,
17430e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17440e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17450e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_mdp_clk",
17460e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
17470e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
17480e66f109SKrzysztof Kozlowski 			},
17490e66f109SKrzysztof Kozlowski 			.num_parents = 1,
17500e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
17510e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_aon_ops,
17520e66f109SKrzysztof Kozlowski 		},
17530e66f109SKrzysztof Kozlowski 	},
17540e66f109SKrzysztof Kozlowski };
17550e66f109SKrzysztof Kozlowski 
17560e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_lut1_clk = {
17570e66f109SKrzysztof Kozlowski 	.halt_reg = 0xa014,
17580e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
17590e66f109SKrzysztof Kozlowski 	.clkr = {
17600e66f109SKrzysztof Kozlowski 		.enable_reg = 0xa014,
17610e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17620e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17630e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_mdp_lut1_clk",
17640e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
17650e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
17660e66f109SKrzysztof Kozlowski 			},
17670e66f109SKrzysztof Kozlowski 			.num_parents = 1,
17680e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
17690e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
17700e66f109SKrzysztof Kozlowski 		},
17710e66f109SKrzysztof Kozlowski 	},
17720e66f109SKrzysztof Kozlowski };
17730e66f109SKrzysztof Kozlowski 
17740e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_lut_clk = {
17750e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8020,
17760e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT_VOTED,
17770e66f109SKrzysztof Kozlowski 	.clkr = {
17780e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8020,
17790e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17800e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17810e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_mdp_lut_clk",
17820e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
17830e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_mdp_clk_src.clkr.hw,
17840e66f109SKrzysztof Kozlowski 			},
17850e66f109SKrzysztof Kozlowski 			.num_parents = 1,
17860e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
17870e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
17880e66f109SKrzysztof Kozlowski 		},
17890e66f109SKrzysztof Kozlowski 	},
17900e66f109SKrzysztof Kozlowski };
17910e66f109SKrzysztof Kozlowski 
17920e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_non_gdsc_ahb_clk = {
17930e66f109SKrzysztof Kozlowski 	.halt_reg = 0xc004,
17940e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT_VOTED,
17950e66f109SKrzysztof Kozlowski 	.clkr = {
17960e66f109SKrzysztof Kozlowski 		.enable_reg = 0xc004,
17970e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
17980e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
17990e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_non_gdsc_ahb_clk",
18000e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18010e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_ahb_clk_src.clkr.hw,
18020e66f109SKrzysztof Kozlowski 			},
18030e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18040e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18050e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18060e66f109SKrzysztof Kozlowski 		},
18070e66f109SKrzysztof Kozlowski 	},
18080e66f109SKrzysztof Kozlowski };
18090e66f109SKrzysztof Kozlowski 
18100e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk0_clk = {
18110e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8004,
18120e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
18130e66f109SKrzysztof Kozlowski 	.clkr = {
18140e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8004,
18150e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
18160e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
18170e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_pclk0_clk",
18180e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18190e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_pclk0_clk_src.clkr.hw,
18200e66f109SKrzysztof Kozlowski 			},
18210e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18220e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18230e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18240e66f109SKrzysztof Kozlowski 		},
18250e66f109SKrzysztof Kozlowski 	},
18260e66f109SKrzysztof Kozlowski };
18270e66f109SKrzysztof Kozlowski 
18280e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk1_clk = {
18290e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8008,
18300e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
18310e66f109SKrzysztof Kozlowski 	.clkr = {
18320e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8008,
18330e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
18340e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
18350e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_pclk1_clk",
18360e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18370e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_pclk1_clk_src.clkr.hw,
18380e66f109SKrzysztof Kozlowski 			},
18390e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18400e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18410e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18420e66f109SKrzysztof Kozlowski 		},
18430e66f109SKrzysztof Kozlowski 	},
18440e66f109SKrzysztof Kozlowski };
18450e66f109SKrzysztof Kozlowski 
18460e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk2_clk = {
18470e66f109SKrzysztof Kozlowski 	.halt_reg = 0x800c,
18480e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
18490e66f109SKrzysztof Kozlowski 	.clkr = {
18500e66f109SKrzysztof Kozlowski 		.enable_reg = 0x800c,
18510e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
18520e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
18530e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_pclk2_clk",
18540e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18550e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_pclk2_clk_src.clkr.hw,
18560e66f109SKrzysztof Kozlowski 			},
18570e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18580e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18590e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18600e66f109SKrzysztof Kozlowski 		},
18610e66f109SKrzysztof Kozlowski 	},
18620e66f109SKrzysztof Kozlowski };
18630e66f109SKrzysztof Kozlowski 
18640e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_vsync1_clk = {
18650e66f109SKrzysztof Kozlowski 	.halt_reg = 0xa024,
18660e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
18670e66f109SKrzysztof Kozlowski 	.clkr = {
18680e66f109SKrzysztof Kozlowski 		.enable_reg = 0xa024,
18690e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
18700e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
18710e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_vsync1_clk",
18720e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18730e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_vsync_clk_src.clkr.hw,
18740e66f109SKrzysztof Kozlowski 			},
18750e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18760e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18770e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18780e66f109SKrzysztof Kozlowski 		},
18790e66f109SKrzysztof Kozlowski 	},
18800e66f109SKrzysztof Kozlowski };
18810e66f109SKrzysztof Kozlowski 
18820e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_vsync_clk = {
18830e66f109SKrzysztof Kozlowski 	.halt_reg = 0x8030,
18840e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
18850e66f109SKrzysztof Kozlowski 	.clkr = {
18860e66f109SKrzysztof Kozlowski 		.enable_reg = 0x8030,
18870e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
18880e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
18890e66f109SKrzysztof Kozlowski 			.name = "disp_cc_mdss_vsync_clk",
18900e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
18910e66f109SKrzysztof Kozlowski 				&disp_cc_mdss_vsync_clk_src.clkr.hw,
18920e66f109SKrzysztof Kozlowski 			},
18930e66f109SKrzysztof Kozlowski 			.num_parents = 1,
18940e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
18950e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
18960e66f109SKrzysztof Kozlowski 		},
18970e66f109SKrzysztof Kozlowski 	},
18980e66f109SKrzysztof Kozlowski };
18990e66f109SKrzysztof Kozlowski 
19000e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_osc_clk = {
19010e66f109SKrzysztof Kozlowski 	.halt_reg = 0x80b4,
19020e66f109SKrzysztof Kozlowski 	.halt_check = BRANCH_HALT,
19030e66f109SKrzysztof Kozlowski 	.clkr = {
19040e66f109SKrzysztof Kozlowski 		.enable_reg = 0x80b4,
19050e66f109SKrzysztof Kozlowski 		.enable_mask = BIT(0),
19060e66f109SKrzysztof Kozlowski 		.hw.init = &(const struct clk_init_data) {
19070e66f109SKrzysztof Kozlowski 			.name = "disp_cc_osc_clk",
19080e66f109SKrzysztof Kozlowski 			.parent_hws = (const struct clk_hw*[]) {
19090e66f109SKrzysztof Kozlowski 				&disp_cc_osc_clk_src.clkr.hw,
19100e66f109SKrzysztof Kozlowski 			},
19110e66f109SKrzysztof Kozlowski 			.num_parents = 1,
19120e66f109SKrzysztof Kozlowski 			.flags = CLK_SET_RATE_PARENT,
19130e66f109SKrzysztof Kozlowski 			.ops = &clk_branch2_ops,
19140e66f109SKrzysztof Kozlowski 		},
19150e66f109SKrzysztof Kozlowski 	},
19160e66f109SKrzysztof Kozlowski };
19170e66f109SKrzysztof Kozlowski 
19180e66f109SKrzysztof Kozlowski static struct gdsc mdss_gdsc = {
19190e66f109SKrzysztof Kozlowski 	.gdscr = 0x9000,
19200e66f109SKrzysztof Kozlowski 	.en_rest_wait_val = 0x2,
19210e66f109SKrzysztof Kozlowski 	.en_few_wait_val = 0x2,
19220e66f109SKrzysztof Kozlowski 	.clk_dis_wait_val = 0xf,
19230e66f109SKrzysztof Kozlowski 	.pd = {
19240e66f109SKrzysztof Kozlowski 		.name = "mdss_gdsc",
19250e66f109SKrzysztof Kozlowski 	},
19260e66f109SKrzysztof Kozlowski 	.pwrsts = PWRSTS_OFF_ON,
19270e66f109SKrzysztof Kozlowski 	.flags = POLL_CFG_GDSCR | HW_CTRL | RETAIN_FF_ENABLE,
19280e66f109SKrzysztof Kozlowski };
19290e66f109SKrzysztof Kozlowski 
19300e66f109SKrzysztof Kozlowski static struct gdsc mdss_int2_gdsc = {
19310e66f109SKrzysztof Kozlowski 	.gdscr = 0xb000,
19320e66f109SKrzysztof Kozlowski 	.en_rest_wait_val = 0x2,
19330e66f109SKrzysztof Kozlowski 	.en_few_wait_val = 0x2,
19340e66f109SKrzysztof Kozlowski 	.clk_dis_wait_val = 0xf,
19350e66f109SKrzysztof Kozlowski 	.pd = {
19360e66f109SKrzysztof Kozlowski 		.name = "mdss_int2_gdsc",
19370e66f109SKrzysztof Kozlowski 	},
19380e66f109SKrzysztof Kozlowski 	.pwrsts = PWRSTS_OFF_ON,
19390e66f109SKrzysztof Kozlowski 	.flags = POLL_CFG_GDSCR | HW_CTRL | RETAIN_FF_ENABLE,
19400e66f109SKrzysztof Kozlowski };
19410e66f109SKrzysztof Kozlowski 
19420e66f109SKrzysztof Kozlowski static struct clk_regmap *disp_cc_eliza_clocks[] = {
19430e66f109SKrzysztof Kozlowski 	[DISP_CC_ESYNC0_CLK] = &disp_cc_esync0_clk.clkr,
19440e66f109SKrzysztof Kozlowski 	[DISP_CC_ESYNC0_CLK_SRC] = &disp_cc_esync0_clk_src.clkr,
19450e66f109SKrzysztof Kozlowski 	[DISP_CC_ESYNC1_CLK] = &disp_cc_esync1_clk.clkr,
19460e66f109SKrzysztof Kozlowski 	[DISP_CC_ESYNC1_CLK_SRC] = &disp_cc_esync1_clk_src.clkr,
19470e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_ACCU_SHIFT_CLK] = &disp_cc_mdss_accu_shift_clk.clkr,
19480e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_AHB1_CLK] = &disp_cc_mdss_ahb1_clk.clkr,
19490e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_AHB_CLK] = &disp_cc_mdss_ahb_clk.clkr,
19500e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_AHB_CLK_SRC] = &disp_cc_mdss_ahb_clk_src.clkr,
19510e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE0_CLK] = &disp_cc_mdss_byte0_clk.clkr,
19520e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp_cc_mdss_byte0_clk_src.clkr,
19530e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp_cc_mdss_byte0_div_clk_src.clkr,
19540e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp_cc_mdss_byte0_intf_clk.clkr,
19550e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE1_CLK] = &disp_cc_mdss_byte1_clk.clkr,
19560e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp_cc_mdss_byte1_clk_src.clkr,
19570e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp_cc_mdss_byte1_div_clk_src.clkr,
19580e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp_cc_mdss_byte1_intf_clk.clkr,
19590e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp_cc_mdss_dptx0_aux_clk.clkr,
19600e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp_cc_mdss_dptx0_aux_clk_src.clkr,
19610e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_CRYPTO_CLK] = &disp_cc_mdss_dptx0_crypto_clk.clkr,
19620e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp_cc_mdss_dptx0_link_clk.clkr,
19630e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp_cc_mdss_dptx0_link_clk_src.clkr,
19640e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx0_link_div_clk_src.clkr,
19650e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp_cc_mdss_dptx0_link_intf_clk.clkr,
19660e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp_cc_mdss_dptx0_pixel0_clk.clkr,
19670e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx0_pixel0_clk_src.clkr,
19680e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp_cc_mdss_dptx0_pixel1_clk.clkr,
19690e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx0_pixel1_clk_src.clkr,
19700e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] =
19710e66f109SKrzysztof Kozlowski 		&disp_cc_mdss_dptx0_usb_router_link_intf_clk.clkr,
19720e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp_cc_mdss_dptx1_aux_clk.clkr,
19730e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp_cc_mdss_dptx1_aux_clk_src.clkr,
19740e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_CRYPTO_CLK] = &disp_cc_mdss_dptx1_crypto_clk.clkr,
19750e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp_cc_mdss_dptx1_link_clk.clkr,
19760e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp_cc_mdss_dptx1_link_clk_src.clkr,
19770e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx1_link_div_clk_src.clkr,
19780e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp_cc_mdss_dptx1_link_intf_clk.clkr,
19790e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp_cc_mdss_dptx1_pixel0_clk.clkr,
19800e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx1_pixel0_clk_src.clkr,
19810e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp_cc_mdss_dptx1_pixel1_clk.clkr,
19820e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx1_pixel1_clk_src.clkr,
19830e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] =
19840e66f109SKrzysztof Kozlowski 		&disp_cc_mdss_dptx1_usb_router_link_intf_clk.clkr,
19850e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp_cc_mdss_dptx2_aux_clk.clkr,
19860e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp_cc_mdss_dptx2_aux_clk_src.clkr,
19870e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_CRYPTO_CLK] = &disp_cc_mdss_dptx2_crypto_clk.clkr,
19880e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp_cc_mdss_dptx2_link_clk.clkr,
19890e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp_cc_mdss_dptx2_link_clk_src.clkr,
19900e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx2_link_div_clk_src.clkr,
19910e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp_cc_mdss_dptx2_link_intf_clk.clkr,
19920e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp_cc_mdss_dptx2_pixel0_clk.clkr,
19930e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx2_pixel0_clk_src.clkr,
19940e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp_cc_mdss_dptx2_pixel1_clk.clkr,
19950e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx2_pixel1_clk_src.clkr,
19960e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp_cc_mdss_dptx3_aux_clk.clkr,
19970e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp_cc_mdss_dptx3_aux_clk_src.clkr,
19980e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_CRYPTO_CLK] = &disp_cc_mdss_dptx3_crypto_clk.clkr,
19990e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp_cc_mdss_dptx3_link_clk.clkr,
20000e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp_cc_mdss_dptx3_link_clk_src.clkr,
20010e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx3_link_div_clk_src.clkr,
20020e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp_cc_mdss_dptx3_link_intf_clk.clkr,
20030e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp_cc_mdss_dptx3_pixel0_clk.clkr,
20040e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx3_pixel0_clk_src.clkr,
20050e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr,
20060e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr,
20070e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr,
20080e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_ESC1_CLK_SRC] = &disp_cc_mdss_esc1_clk_src.clkr,
20090e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_AHBM_CLK] = &disp_cc_mdss_hdmi_ahbm_clk.clkr,
20100e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_APP_CLK] = &disp_cc_mdss_hdmi_app_clk.clkr,
20110e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_APP_CLK_SRC] = &disp_cc_mdss_hdmi_app_clk_src.clkr,
20120e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_CRYPTO_CLK] = &disp_cc_mdss_hdmi_crypto_clk.clkr,
20130e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_INTF_CLK] = &disp_cc_mdss_hdmi_intf_clk.clkr,
20140e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_PCLK_CLK] = &disp_cc_mdss_hdmi_pclk_clk.clkr,
20150e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_PCLK_CLK_SRC] = &disp_cc_mdss_hdmi_pclk_clk_src.clkr,
20160e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_HDMI_PCLK_DIV_CLK_SRC] = &disp_cc_mdss_hdmi_pclk_div_clk_src.clkr,
20170e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_MDP1_CLK] = &disp_cc_mdss_mdp1_clk.clkr,
20180e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_MDP_CLK] = &disp_cc_mdss_mdp_clk.clkr,
20190e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_MDP_CLK_SRC] = &disp_cc_mdss_mdp_clk_src.clkr,
20200e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_MDP_LUT1_CLK] = &disp_cc_mdss_mdp_lut1_clk.clkr,
20210e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_MDP_LUT_CLK] = &disp_cc_mdss_mdp_lut_clk.clkr,
20220e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp_cc_mdss_non_gdsc_ahb_clk.clkr,
20230e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK0_CLK] = &disp_cc_mdss_pclk0_clk.clkr,
20240e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp_cc_mdss_pclk0_clk_src.clkr,
20250e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK1_CLK] = &disp_cc_mdss_pclk1_clk.clkr,
20260e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp_cc_mdss_pclk1_clk_src.clkr,
20270e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK2_CLK] = &disp_cc_mdss_pclk2_clk.clkr,
20280e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_PCLK2_CLK_SRC] = &disp_cc_mdss_pclk2_clk_src.clkr,
20290e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_VSYNC1_CLK] = &disp_cc_mdss_vsync1_clk.clkr,
20300e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_VSYNC_CLK] = &disp_cc_mdss_vsync_clk.clkr,
20310e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp_cc_mdss_vsync_clk_src.clkr,
20320e66f109SKrzysztof Kozlowski 	[DISP_CC_OSC_CLK] = &disp_cc_osc_clk.clkr,
20330e66f109SKrzysztof Kozlowski 	[DISP_CC_OSC_CLK_SRC] = &disp_cc_osc_clk_src.clkr,
20340e66f109SKrzysztof Kozlowski 	[DISP_CC_PLL0] = &disp_cc_pll0.clkr,
20350e66f109SKrzysztof Kozlowski 	[DISP_CC_PLL1] = &disp_cc_pll1.clkr,
20360e66f109SKrzysztof Kozlowski 	[DISP_CC_PLL2] = &disp_cc_pll2.clkr,
20370e66f109SKrzysztof Kozlowski 	[DISP_CC_SLEEP_CLK_SRC] = &disp_cc_sleep_clk_src.clkr,
20380e66f109SKrzysztof Kozlowski 	[DISP_CC_XO_CLK_SRC] = &disp_cc_xo_clk_src.clkr,
20390e66f109SKrzysztof Kozlowski };
20400e66f109SKrzysztof Kozlowski 
20410e66f109SKrzysztof Kozlowski static const struct qcom_reset_map disp_cc_eliza_resets[] = {
20420e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_CORE_BCR] = { 0x8000 },
20430e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_CORE_INT2_BCR] = { 0xa000 },
20440e66f109SKrzysztof Kozlowski 	[DISP_CC_MDSS_RSCC_BCR] = { 0xc000 },
20450e66f109SKrzysztof Kozlowski };
20460e66f109SKrzysztof Kozlowski 
20470e66f109SKrzysztof Kozlowski static struct gdsc *disp_cc_eliza_gdscs[] = {
20480e66f109SKrzysztof Kozlowski 	[MDSS_GDSC] = &mdss_gdsc,
20490e66f109SKrzysztof Kozlowski 	[MDSS_INT2_GDSC] = &mdss_int2_gdsc,
20500e66f109SKrzysztof Kozlowski };
20510e66f109SKrzysztof Kozlowski 
20520e66f109SKrzysztof Kozlowski static const struct regmap_config disp_cc_eliza_regmap_config = {
20530e66f109SKrzysztof Kozlowski 	.reg_bits = 32,
20540e66f109SKrzysztof Kozlowski 	.reg_stride = 4,
20550e66f109SKrzysztof Kozlowski 	.val_bits = 32,
20560e66f109SKrzysztof Kozlowski 	.max_register = 0xf004, /* 0x10000, 0x10004 and maybe others are for TZ */
20570e66f109SKrzysztof Kozlowski 	.fast_io = true,
20580e66f109SKrzysztof Kozlowski };
20590e66f109SKrzysztof Kozlowski 
20600e66f109SKrzysztof Kozlowski static struct clk_alpha_pll *disp_cc_eliza_plls[] = {
20610e66f109SKrzysztof Kozlowski 	&disp_cc_pll0,
20620e66f109SKrzysztof Kozlowski 	&disp_cc_pll1,
20630e66f109SKrzysztof Kozlowski 	&disp_cc_pll2,
20640e66f109SKrzysztof Kozlowski };
20650e66f109SKrzysztof Kozlowski 
2066*87df31eaSKrzysztof Kozlowski static const u32 disp_cc_eliza_critical_cbcrs[] = {
20670e66f109SKrzysztof Kozlowski 	0xe07c, /* DISP_CC_SLEEP_CLK */
20680e66f109SKrzysztof Kozlowski 	0xe05c, /* DISP_CC_XO_CLK */
20690e66f109SKrzysztof Kozlowski 	0xc00c, /* DISP_CC_MDSS_RSCC_AHB_CLK */
20700e66f109SKrzysztof Kozlowski 	0xc008, /* DISP_CC_MDSS_RSCC_VSYNC_CLK */
20710e66f109SKrzysztof Kozlowski };
20720e66f109SKrzysztof Kozlowski 
20730e66f109SKrzysztof Kozlowski static void clk_eliza_regs_configure(struct device *dev, struct regmap *regmap)
20740e66f109SKrzysztof Kozlowski {
20750e66f109SKrzysztof Kozlowski 	/* Enable clock gating for MDP clocks */
20760e66f109SKrzysztof Kozlowski 	regmap_set_bits(regmap, DISP_CC_MISC_CMD, BIT(4));
20770e66f109SKrzysztof Kozlowski }
20780e66f109SKrzysztof Kozlowski 
2079573ddd0dSKrzysztof Kozlowski static const struct qcom_cc_driver_data disp_cc_eliza_driver_data = {
20800e66f109SKrzysztof Kozlowski 	.alpha_plls = disp_cc_eliza_plls,
20810e66f109SKrzysztof Kozlowski 	.num_alpha_plls = ARRAY_SIZE(disp_cc_eliza_plls),
20820e66f109SKrzysztof Kozlowski 	.clk_cbcrs = disp_cc_eliza_critical_cbcrs,
20830e66f109SKrzysztof Kozlowski 	.num_clk_cbcrs = ARRAY_SIZE(disp_cc_eliza_critical_cbcrs),
20840e66f109SKrzysztof Kozlowski 	.clk_regs_configure = clk_eliza_regs_configure,
20850e66f109SKrzysztof Kozlowski };
20860e66f109SKrzysztof Kozlowski 
20870e66f109SKrzysztof Kozlowski static const struct qcom_cc_desc disp_cc_eliza_desc = {
20880e66f109SKrzysztof Kozlowski 	.config = &disp_cc_eliza_regmap_config,
20890e66f109SKrzysztof Kozlowski 	.clks = disp_cc_eliza_clocks,
20900e66f109SKrzysztof Kozlowski 	.num_clks = ARRAY_SIZE(disp_cc_eliza_clocks),
20910e66f109SKrzysztof Kozlowski 	.resets = disp_cc_eliza_resets,
20920e66f109SKrzysztof Kozlowski 	.num_resets = ARRAY_SIZE(disp_cc_eliza_resets),
20930e66f109SKrzysztof Kozlowski 	.gdscs = disp_cc_eliza_gdscs,
20940e66f109SKrzysztof Kozlowski 	.num_gdscs = ARRAY_SIZE(disp_cc_eliza_gdscs),
20950e66f109SKrzysztof Kozlowski 	.use_rpm = true,
20960e66f109SKrzysztof Kozlowski 	.driver_data = &disp_cc_eliza_driver_data,
20970e66f109SKrzysztof Kozlowski };
20980e66f109SKrzysztof Kozlowski 
20990e66f109SKrzysztof Kozlowski static const struct of_device_id disp_cc_eliza_match_table[] = {
21000e66f109SKrzysztof Kozlowski 	{ .compatible = "qcom,eliza-dispcc" },
21010e66f109SKrzysztof Kozlowski 	{ }
21020e66f109SKrzysztof Kozlowski };
21030e66f109SKrzysztof Kozlowski MODULE_DEVICE_TABLE(of, disp_cc_eliza_match_table);
21040e66f109SKrzysztof Kozlowski 
21050e66f109SKrzysztof Kozlowski static int disp_cc_eliza_probe(struct platform_device *pdev)
21060e66f109SKrzysztof Kozlowski {
21070e66f109SKrzysztof Kozlowski 	return qcom_cc_probe(pdev, &disp_cc_eliza_desc);
21080e66f109SKrzysztof Kozlowski }
21090e66f109SKrzysztof Kozlowski 
21100e66f109SKrzysztof Kozlowski static struct platform_driver disp_cc_eliza_driver = {
21110e66f109SKrzysztof Kozlowski 	.probe = disp_cc_eliza_probe,
21120e66f109SKrzysztof Kozlowski 	.driver = {
21130e66f109SKrzysztof Kozlowski 		.name = "dispcc-eliza",
21140e66f109SKrzysztof Kozlowski 		.of_match_table = disp_cc_eliza_match_table,
21150e66f109SKrzysztof Kozlowski 	},
21160e66f109SKrzysztof Kozlowski };
21170e66f109SKrzysztof Kozlowski 
21180e66f109SKrzysztof Kozlowski module_platform_driver(disp_cc_eliza_driver);
21190e66f109SKrzysztof Kozlowski 
21200e66f109SKrzysztof Kozlowski MODULE_DESCRIPTION("QTI DISPCC Eliza Driver");
21210e66f109SKrzysztof Kozlowski MODULE_LICENSE("GPL");
2122