xref: /openbmc/linux/drivers/clk/qcom/gcc-qcs404.c (revision ecc23d0a422a3118fcf6e4f0a46e17a6c2047b02)
1652f1813SShefali Jain // SPDX-License-Identifier: GPL-2.0
2652f1813SShefali Jain /*
3652f1813SShefali Jain  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
4652f1813SShefali Jain  */
5652f1813SShefali Jain 
6652f1813SShefali Jain #include <linux/kernel.h>
7652f1813SShefali Jain #include <linux/platform_device.h>
8652f1813SShefali Jain #include <linux/module.h>
9652f1813SShefali Jain #include <linux/of.h>
10652f1813SShefali Jain #include <linux/clk-provider.h>
11652f1813SShefali Jain #include <linux/regmap.h>
12652f1813SShefali Jain #include <linux/reset-controller.h>
13652f1813SShefali Jain 
14652f1813SShefali Jain #include <dt-bindings/clock/qcom,gcc-qcs404.h>
15652f1813SShefali Jain 
16652f1813SShefali Jain #include "clk-alpha-pll.h"
17652f1813SShefali Jain #include "clk-branch.h"
18652f1813SShefali Jain #include "clk-pll.h"
19652f1813SShefali Jain #include "clk-rcg.h"
20652f1813SShefali Jain #include "clk-regmap.h"
21652f1813SShefali Jain #include "common.h"
22230d4d81SDmitry Baryshkov #include "gdsc.h"
23652f1813SShefali Jain #include "reset.h"
24652f1813SShefali Jain 
25652f1813SShefali Jain enum {
269847a90cSDmitry Baryshkov 	DT_XO,
279847a90cSDmitry Baryshkov 	DT_SLEEP_CLK,
289847a90cSDmitry Baryshkov 	DT_PCIE_0_PIPE_CLK,
299847a90cSDmitry Baryshkov 	DT_DSI0_PHY_PLL_OUT_DSICLK,
309847a90cSDmitry Baryshkov 	DT_DSI0_PHY_PLL_OUT_BYTECLK,
319847a90cSDmitry Baryshkov 	DT_HDMI_PHY_PLL_CLK,
329847a90cSDmitry Baryshkov };
339847a90cSDmitry Baryshkov 
349847a90cSDmitry Baryshkov enum {
35652f1813SShefali Jain 	P_DSI0_PHY_PLL_OUT_BYTECLK,
36652f1813SShefali Jain 	P_DSI0_PHY_PLL_OUT_DSICLK,
37652f1813SShefali Jain 	P_GPLL0_OUT_MAIN,
38652f1813SShefali Jain 	P_GPLL1_OUT_MAIN,
39652f1813SShefali Jain 	P_GPLL3_OUT_MAIN,
40652f1813SShefali Jain 	P_GPLL4_OUT_MAIN,
41652f1813SShefali Jain 	P_GPLL6_OUT_AUX,
42652f1813SShefali Jain 	P_HDMI_PHY_PLL_CLK,
43652f1813SShefali Jain 	P_PCIE_0_PIPE_CLK,
44652f1813SShefali Jain 	P_SLEEP_CLK,
45652f1813SShefali Jain 	P_XO,
46652f1813SShefali Jain };
47652f1813SShefali Jain 
482ce81afaSDmitry Baryshkov static const struct parent_map gcc_parent_map_1[] = {
492ce81afaSDmitry Baryshkov 	{ P_XO, 0 },
502ce81afaSDmitry Baryshkov };
512ce81afaSDmitry Baryshkov 
522ce81afaSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_1[] = {
532ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
542ce81afaSDmitry Baryshkov };
552ce81afaSDmitry Baryshkov 
5675aed833SDmitry Baryshkov static struct clk_fixed_factor cxo = {
5775aed833SDmitry Baryshkov 	.mult = 1,
5875aed833SDmitry Baryshkov 	.div = 1,
5975aed833SDmitry Baryshkov 	.hw.init = &(struct clk_init_data){
6075aed833SDmitry Baryshkov 		.name = "cxo",
612ce81afaSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
622ce81afaSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
6375aed833SDmitry Baryshkov 		.ops = &clk_fixed_factor_ops,
6475aed833SDmitry Baryshkov 	},
6575aed833SDmitry Baryshkov };
6675aed833SDmitry Baryshkov 
6775aed833SDmitry Baryshkov static struct clk_alpha_pll gpll0_sleep_clk_src = {
6875aed833SDmitry Baryshkov 	.offset = 0x21000,
6975aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
7075aed833SDmitry Baryshkov 	.clkr = {
7175aed833SDmitry Baryshkov 		.enable_reg = 0x45008,
7275aed833SDmitry Baryshkov 		.enable_mask = BIT(23),
7375aed833SDmitry Baryshkov 		.enable_is_inverted = true,
7475aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
7575aed833SDmitry Baryshkov 			.name = "gpll0_sleep_clk_src",
762ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
772ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
7875aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_ops,
7975aed833SDmitry Baryshkov 		},
8075aed833SDmitry Baryshkov 	},
8175aed833SDmitry Baryshkov };
8275aed833SDmitry Baryshkov 
8375aed833SDmitry Baryshkov static struct clk_alpha_pll gpll0_out_main = {
8475aed833SDmitry Baryshkov 	.offset = 0x21000,
8575aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
8675aed833SDmitry Baryshkov 	.flags = SUPPORTS_FSM_MODE,
8775aed833SDmitry Baryshkov 	.clkr = {
8875aed833SDmitry Baryshkov 		.enable_reg = 0x45000,
8975aed833SDmitry Baryshkov 		.enable_mask = BIT(0),
9075aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
9175aed833SDmitry Baryshkov 			.name = "gpll0_out_main",
922ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
932ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9475aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_ops,
9575aed833SDmitry Baryshkov 		},
9675aed833SDmitry Baryshkov 	},
9775aed833SDmitry Baryshkov };
9875aed833SDmitry Baryshkov 
9975aed833SDmitry Baryshkov static struct clk_alpha_pll gpll0_ao_out_main = {
10075aed833SDmitry Baryshkov 	.offset = 0x21000,
10175aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
10275aed833SDmitry Baryshkov 	.flags = SUPPORTS_FSM_MODE,
10375aed833SDmitry Baryshkov 	.clkr = {
10475aed833SDmitry Baryshkov 		.enable_reg = 0x45000,
10575aed833SDmitry Baryshkov 		.enable_mask = BIT(0),
10675aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
10775aed833SDmitry Baryshkov 			.name = "gpll0_ao_out_main",
1082ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
1092ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
11075aed833SDmitry Baryshkov 			.flags = CLK_IS_CRITICAL,
11175aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_fixed_ops,
11275aed833SDmitry Baryshkov 		},
11375aed833SDmitry Baryshkov 	},
11475aed833SDmitry Baryshkov };
11575aed833SDmitry Baryshkov 
11675aed833SDmitry Baryshkov static struct clk_alpha_pll gpll1_out_main = {
11775aed833SDmitry Baryshkov 	.offset = 0x20000,
11875aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
11975aed833SDmitry Baryshkov 	.clkr = {
12075aed833SDmitry Baryshkov 		.enable_reg = 0x45000,
12175aed833SDmitry Baryshkov 		.enable_mask = BIT(1),
12275aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
12375aed833SDmitry Baryshkov 			.name = "gpll1_out_main",
1242ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
1252ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
12675aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_ops,
12775aed833SDmitry Baryshkov 		},
12875aed833SDmitry Baryshkov 	},
12975aed833SDmitry Baryshkov };
13075aed833SDmitry Baryshkov 
13175aed833SDmitry Baryshkov /* 930MHz configuration */
13275aed833SDmitry Baryshkov static const struct alpha_pll_config gpll3_config = {
13375aed833SDmitry Baryshkov 	.l = 48,
134*8bca39b9SGabor Juhos 	.alpha_hi = 0x70,
13575aed833SDmitry Baryshkov 	.alpha = 0x0,
13675aed833SDmitry Baryshkov 	.alpha_en_mask = BIT(24),
13775aed833SDmitry Baryshkov 	.post_div_mask = 0xf << 8,
13875aed833SDmitry Baryshkov 	.post_div_val = 0x1 << 8,
13975aed833SDmitry Baryshkov 	.vco_mask = 0x3 << 20,
14075aed833SDmitry Baryshkov 	.main_output_mask = 0x1,
14175aed833SDmitry Baryshkov 	.config_ctl_val = 0x4001055b,
14275aed833SDmitry Baryshkov };
14375aed833SDmitry Baryshkov 
14475aed833SDmitry Baryshkov static const struct pll_vco gpll3_vco[] = {
14575aed833SDmitry Baryshkov 	{ 700000000, 1400000000, 0 },
14675aed833SDmitry Baryshkov };
14775aed833SDmitry Baryshkov 
14875aed833SDmitry Baryshkov static struct clk_alpha_pll gpll3_out_main = {
14975aed833SDmitry Baryshkov 	.offset = 0x22000,
15075aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
15175aed833SDmitry Baryshkov 	.vco_table = gpll3_vco,
15275aed833SDmitry Baryshkov 	.num_vco = ARRAY_SIZE(gpll3_vco),
15375aed833SDmitry Baryshkov 	.clkr = {
15475aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
15575aed833SDmitry Baryshkov 			.name = "gpll3_out_main",
1562ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
1572ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
15875aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_ops,
15975aed833SDmitry Baryshkov 		},
16075aed833SDmitry Baryshkov 	},
16175aed833SDmitry Baryshkov };
16275aed833SDmitry Baryshkov 
16375aed833SDmitry Baryshkov static struct clk_alpha_pll gpll4_out_main = {
16475aed833SDmitry Baryshkov 	.offset = 0x24000,
16575aed833SDmitry Baryshkov 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
16675aed833SDmitry Baryshkov 	.clkr = {
16775aed833SDmitry Baryshkov 		.enable_reg = 0x45000,
16875aed833SDmitry Baryshkov 		.enable_mask = BIT(5),
16975aed833SDmitry Baryshkov 		.hw.init = &(struct clk_init_data){
17075aed833SDmitry Baryshkov 			.name = "gpll4_out_main",
1712ce81afaSDmitry Baryshkov 			.parent_data = gcc_parent_data_1,
1722ce81afaSDmitry Baryshkov 			.num_parents = ARRAY_SIZE(gcc_parent_data_1),
17375aed833SDmitry Baryshkov 			.ops = &clk_alpha_pll_ops,
17475aed833SDmitry Baryshkov 		},
17575aed833SDmitry Baryshkov 	},
17675aed833SDmitry Baryshkov };
17775aed833SDmitry Baryshkov 
17875aed833SDmitry Baryshkov static struct clk_pll gpll6 = {
17975aed833SDmitry Baryshkov 	.l_reg = 0x37004,
18075aed833SDmitry Baryshkov 	.m_reg = 0x37008,
18175aed833SDmitry Baryshkov 	.n_reg = 0x3700C,
18275aed833SDmitry Baryshkov 	.config_reg = 0x37014,
18375aed833SDmitry Baryshkov 	.mode_reg = 0x37000,
18475aed833SDmitry Baryshkov 	.status_reg = 0x3701C,
18575aed833SDmitry Baryshkov 	.status_bit = 17,
18675aed833SDmitry Baryshkov 	.clkr.hw.init = &(struct clk_init_data){
18775aed833SDmitry Baryshkov 		.name = "gpll6",
1882ce81afaSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
1892ce81afaSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
19075aed833SDmitry Baryshkov 		.ops = &clk_pll_ops,
19175aed833SDmitry Baryshkov 	},
19275aed833SDmitry Baryshkov };
19375aed833SDmitry Baryshkov 
19475aed833SDmitry Baryshkov static struct clk_regmap gpll6_out_aux = {
19575aed833SDmitry Baryshkov 	.enable_reg = 0x45000,
19675aed833SDmitry Baryshkov 	.enable_mask = BIT(7),
19775aed833SDmitry Baryshkov 	.hw.init = &(struct clk_init_data){
19875aed833SDmitry Baryshkov 		.name = "gpll6_out_aux",
1999847a90cSDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
2009847a90cSDmitry Baryshkov 			&gpll6.clkr.hw,
2019847a90cSDmitry Baryshkov 		},
20275aed833SDmitry Baryshkov 		.num_parents = 1,
20375aed833SDmitry Baryshkov 		.ops = &clk_pll_vote_ops,
20475aed833SDmitry Baryshkov 	},
20575aed833SDmitry Baryshkov };
20675aed833SDmitry Baryshkov 
207652f1813SShefali Jain static const struct parent_map gcc_parent_map_0[] = {
208652f1813SShefali Jain 	{ P_XO, 0 },
209652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
210652f1813SShefali Jain };
211652f1813SShefali Jain 
2129847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_0[] = {
2132ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2149847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
215652f1813SShefali Jain };
216652f1813SShefali Jain 
2179847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_ao_0[] = {
2182ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2199847a90cSDmitry Baryshkov 	{ .hw = &gpll0_ao_out_main.clkr.hw },
220652f1813SShefali Jain };
221652f1813SShefali Jain 
222652f1813SShefali Jain static const struct parent_map gcc_parent_map_2[] = {
223652f1813SShefali Jain 	{ P_XO, 0 },
224652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
225652f1813SShefali Jain 	{ P_GPLL6_OUT_AUX, 2 },
226652f1813SShefali Jain 	{ P_SLEEP_CLK, 6 },
227652f1813SShefali Jain };
228652f1813SShefali Jain 
2299847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_2[] = {
2302ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2319847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
2329847a90cSDmitry Baryshkov 	{ .hw = &gpll6_out_aux.hw },
2339847a90cSDmitry Baryshkov 	{ .index = DT_SLEEP_CLK, .name = "sleep_clk" },
234652f1813SShefali Jain };
235652f1813SShefali Jain 
236652f1813SShefali Jain static const struct parent_map gcc_parent_map_3[] = {
237652f1813SShefali Jain 	{ P_XO, 0 },
238652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
239652f1813SShefali Jain 	{ P_GPLL6_OUT_AUX, 2 },
240652f1813SShefali Jain };
241652f1813SShefali Jain 
2429847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_3[] = {
2432ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2449847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
2459847a90cSDmitry Baryshkov 	{ .hw = &gpll6_out_aux.hw },
246652f1813SShefali Jain };
247652f1813SShefali Jain 
248652f1813SShefali Jain static const struct parent_map gcc_parent_map_4[] = {
249652f1813SShefali Jain 	{ P_XO, 0 },
250652f1813SShefali Jain 	{ P_GPLL1_OUT_MAIN, 1 },
251652f1813SShefali Jain };
252652f1813SShefali Jain 
2539847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_4[] = {
2542ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2559847a90cSDmitry Baryshkov 	{ .hw = &gpll1_out_main.clkr.hw },
256652f1813SShefali Jain };
257652f1813SShefali Jain 
258652f1813SShefali Jain static const struct parent_map gcc_parent_map_5[] = {
259652f1813SShefali Jain 	{ P_XO, 0 },
260652f1813SShefali Jain 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 1 },
261652f1813SShefali Jain };
262652f1813SShefali Jain 
2639847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_5[] = {
2642ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2659847a90cSDmitry Baryshkov 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK, .name = "dsi0pllbyte" },
266652f1813SShefali Jain };
267652f1813SShefali Jain 
268652f1813SShefali Jain static const struct parent_map gcc_parent_map_6[] = {
269652f1813SShefali Jain 	{ P_XO, 0 },
270652f1813SShefali Jain 	{ P_DSI0_PHY_PLL_OUT_BYTECLK, 2 },
271652f1813SShefali Jain };
272652f1813SShefali Jain 
2739847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_6[] = {
2742ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2759847a90cSDmitry Baryshkov 	{ .index = DT_DSI0_PHY_PLL_OUT_BYTECLK, .name = "dsi0pllbyte" },
276652f1813SShefali Jain };
277652f1813SShefali Jain 
278652f1813SShefali Jain static const struct parent_map gcc_parent_map_7[] = {
279652f1813SShefali Jain 	{ P_XO, 0 },
280652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
281652f1813SShefali Jain 	{ P_GPLL3_OUT_MAIN, 2 },
282652f1813SShefali Jain 	{ P_GPLL6_OUT_AUX, 3 },
283652f1813SShefali Jain };
284652f1813SShefali Jain 
2859847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_7[] = {
2862ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2879847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
2889847a90cSDmitry Baryshkov 	{ .hw = &gpll3_out_main.clkr.hw },
2899847a90cSDmitry Baryshkov 	{ .hw = &gpll6_out_aux.hw },
290652f1813SShefali Jain };
291652f1813SShefali Jain 
292652f1813SShefali Jain static const struct parent_map gcc_parent_map_8[] = {
293652f1813SShefali Jain 	{ P_XO, 0 },
294652f1813SShefali Jain 	{ P_HDMI_PHY_PLL_CLK, 1 },
295652f1813SShefali Jain };
296652f1813SShefali Jain 
2979847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_8[] = {
2982ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
2999847a90cSDmitry Baryshkov 	{ .index = DT_HDMI_PHY_PLL_CLK, .name = "hdmi_pll" },
300652f1813SShefali Jain };
301652f1813SShefali Jain 
302652f1813SShefali Jain static const struct parent_map gcc_parent_map_9[] = {
303652f1813SShefali Jain 	{ P_XO, 0 },
304652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
305652f1813SShefali Jain 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 2 },
306652f1813SShefali Jain 	{ P_GPLL6_OUT_AUX, 3 },
307652f1813SShefali Jain };
308652f1813SShefali Jain 
3099847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_9[] = {
3102ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3119847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
3129847a90cSDmitry Baryshkov 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK, .name = "dsi0pll" },
3139847a90cSDmitry Baryshkov 	{ .hw = &gpll6_out_aux.hw },
314652f1813SShefali Jain };
315652f1813SShefali Jain 
316652f1813SShefali Jain static const struct parent_map gcc_parent_map_10[] = {
317652f1813SShefali Jain 	{ P_XO, 0 },
318652f1813SShefali Jain 	{ P_SLEEP_CLK, 1 },
319652f1813SShefali Jain };
320652f1813SShefali Jain 
3219847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_10[] = {
3222ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3239847a90cSDmitry Baryshkov 	{ .index = DT_SLEEP_CLK, .name = "sleep_clk" },
324652f1813SShefali Jain };
325652f1813SShefali Jain 
326652f1813SShefali Jain static const struct parent_map gcc_parent_map_11[] = {
327652f1813SShefali Jain 	{ P_XO, 0 },
328652f1813SShefali Jain 	{ P_PCIE_0_PIPE_CLK, 1 },
329652f1813SShefali Jain };
330652f1813SShefali Jain 
3319847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_11[] = {
3322ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3339847a90cSDmitry Baryshkov 	{ .fw_name = "pcie_0_pipe_clk", .name = "pcie_0_pipe_clk" },
334652f1813SShefali Jain };
335652f1813SShefali Jain 
336652f1813SShefali Jain static const struct parent_map gcc_parent_map_12[] = {
337652f1813SShefali Jain 	{ P_XO, 0 },
338652f1813SShefali Jain 	{ P_DSI0_PHY_PLL_OUT_DSICLK, 1 },
339652f1813SShefali Jain };
340652f1813SShefali Jain 
3419847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_12[] = {
3422ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3439847a90cSDmitry Baryshkov 	{ .index = DT_DSI0_PHY_PLL_OUT_DSICLK, .name = "dsi0pll" },
344652f1813SShefali Jain };
345652f1813SShefali Jain 
346652f1813SShefali Jain static const struct parent_map gcc_parent_map_13[] = {
347652f1813SShefali Jain 	{ P_XO, 0 },
348652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
349652f1813SShefali Jain 	{ P_GPLL4_OUT_MAIN, 2 },
350652f1813SShefali Jain 	{ P_GPLL6_OUT_AUX, 3 },
351652f1813SShefali Jain };
352652f1813SShefali Jain 
3539847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_13[] = {
3542ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3559847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
3569847a90cSDmitry Baryshkov 	{ .hw = &gpll4_out_main.clkr.hw },
3579847a90cSDmitry Baryshkov 	{ .hw = &gpll6_out_aux.hw },
358652f1813SShefali Jain };
359652f1813SShefali Jain 
360652f1813SShefali Jain static const struct parent_map gcc_parent_map_14[] = {
361652f1813SShefali Jain 	{ P_XO, 0 },
362652f1813SShefali Jain 	{ P_GPLL0_OUT_MAIN, 1 },
363652f1813SShefali Jain };
364652f1813SShefali Jain 
3659847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_14[] = {
3662ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3679847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
368652f1813SShefali Jain };
369652f1813SShefali Jain 
370652f1813SShefali Jain static const struct parent_map gcc_parent_map_15[] = {
371652f1813SShefali Jain 	{ P_XO, 0 },
372652f1813SShefali Jain };
373652f1813SShefali Jain 
3749847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_15[] = {
3752ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
376652f1813SShefali Jain };
377652f1813SShefali Jain 
3788bc7a04bSBjorn Andersson static const struct parent_map gcc_parent_map_16[] = {
3798bc7a04bSBjorn Andersson 	{ P_XO, 0 },
3808bc7a04bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
3818bc7a04bSBjorn Andersson };
3828bc7a04bSBjorn Andersson 
3839847a90cSDmitry Baryshkov static const struct clk_parent_data gcc_parent_data_16[] = {
3842ce81afaSDmitry Baryshkov 	{ .index = DT_XO, .name = "xo-board" },
3859847a90cSDmitry Baryshkov 	{ .hw = &gpll0_out_main.clkr.hw },
3868bc7a04bSBjorn Andersson };
3878bc7a04bSBjorn Andersson 
388652f1813SShefali Jain static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
389652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
390652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
391652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
392652f1813SShefali Jain 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
393652f1813SShefali Jain 	{ }
394652f1813SShefali Jain };
395652f1813SShefali Jain 
396652f1813SShefali Jain static struct clk_rcg2 apss_ahb_clk_src = {
397652f1813SShefali Jain 	.cmd_rcgr = 0x46000,
398652f1813SShefali Jain 	.mnd_width = 0,
399652f1813SShefali Jain 	.hid_width = 5,
400652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
401652f1813SShefali Jain 	.freq_tbl = ftbl_apss_ahb_clk_src,
402652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
403652f1813SShefali Jain 		.name = "apss_ahb_clk_src",
4049847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_ao_0,
4059847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_ao_0),
406652f1813SShefali Jain 		.flags = CLK_IS_CRITICAL,
407652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
408652f1813SShefali Jain 	},
409652f1813SShefali Jain };
410652f1813SShefali Jain 
411652f1813SShefali Jain static const struct freq_tbl ftbl_blsp1_qup0_i2c_apps_clk_src[] = {
412652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
413652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
414652f1813SShefali Jain 	{ }
415652f1813SShefali Jain };
416652f1813SShefali Jain 
417652f1813SShefali Jain static struct clk_rcg2 blsp1_qup0_i2c_apps_clk_src = {
418652f1813SShefali Jain 	.cmd_rcgr = 0x602c,
419652f1813SShefali Jain 	.mnd_width = 0,
420652f1813SShefali Jain 	.hid_width = 5,
421652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
422652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
423652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
424652f1813SShefali Jain 		.name = "blsp1_qup0_i2c_apps_clk_src",
4259847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
4269847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
427652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
428652f1813SShefali Jain 	},
429652f1813SShefali Jain };
430652f1813SShefali Jain 
431652f1813SShefali Jain static const struct freq_tbl ftbl_blsp1_qup0_spi_apps_clk_src[] = {
432652f1813SShefali Jain 	F(960000, P_XO, 10, 1, 2),
433652f1813SShefali Jain 	F(4800000, P_XO, 4, 0, 0),
434652f1813SShefali Jain 	F(9600000, P_XO, 2, 0, 0),
435652f1813SShefali Jain 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
436652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
437652f1813SShefali Jain 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
438652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
439652f1813SShefali Jain 	{ }
440652f1813SShefali Jain };
441652f1813SShefali Jain 
442652f1813SShefali Jain static struct clk_rcg2 blsp1_qup0_spi_apps_clk_src = {
443652f1813SShefali Jain 	.cmd_rcgr = 0x6034,
444652f1813SShefali Jain 	.mnd_width = 8,
445652f1813SShefali Jain 	.hid_width = 5,
446652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
447652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_spi_apps_clk_src,
448652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
449652f1813SShefali Jain 		.name = "blsp1_qup0_spi_apps_clk_src",
4509847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
4519847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
452652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
453652f1813SShefali Jain 	},
454652f1813SShefali Jain };
455652f1813SShefali Jain 
456652f1813SShefali Jain static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
457652f1813SShefali Jain 	.cmd_rcgr = 0x200c,
458652f1813SShefali Jain 	.mnd_width = 0,
459652f1813SShefali Jain 	.hid_width = 5,
460652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
461652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
462652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
463652f1813SShefali Jain 		.name = "blsp1_qup1_i2c_apps_clk_src",
4649847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
4659847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
466652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
467652f1813SShefali Jain 	},
468652f1813SShefali Jain };
469652f1813SShefali Jain 
470652f1813SShefali Jain static const struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
471652f1813SShefali Jain 	F(960000,   P_XO, 10, 1, 2),
472652f1813SShefali Jain 	F(4800000,  P_XO, 4, 0, 0),
473652f1813SShefali Jain 	F(9600000,  P_XO, 2, 0, 0),
474652f1813SShefali Jain 	F(10480000, P_GPLL0_OUT_MAIN, 1, 3, 229),
475652f1813SShefali Jain 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
476652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
477652f1813SShefali Jain 	F(20961000, P_GPLL0_OUT_MAIN, 1, 6, 229),
478652f1813SShefali Jain 	{ }
479652f1813SShefali Jain };
480652f1813SShefali Jain 
481652f1813SShefali Jain static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
482652f1813SShefali Jain 	.cmd_rcgr = 0x2024,
483652f1813SShefali Jain 	.mnd_width = 8,
484652f1813SShefali Jain 	.hid_width = 5,
485652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
486652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
487652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
488652f1813SShefali Jain 		.name = "blsp1_qup1_spi_apps_clk_src",
4899847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
4909847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
491652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
492652f1813SShefali Jain 	},
493652f1813SShefali Jain };
494652f1813SShefali Jain 
495652f1813SShefali Jain static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
496652f1813SShefali Jain 	.cmd_rcgr = 0x3000,
497652f1813SShefali Jain 	.mnd_width = 0,
498652f1813SShefali Jain 	.hid_width = 5,
499652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
500652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
501652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
502652f1813SShefali Jain 		.name = "blsp1_qup2_i2c_apps_clk_src",
5039847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5049847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
505652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
506652f1813SShefali Jain 	},
507652f1813SShefali Jain };
508652f1813SShefali Jain 
509652f1813SShefali Jain static const struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
510652f1813SShefali Jain 	F(960000,   P_XO, 10, 1, 2),
511652f1813SShefali Jain 	F(4800000,  P_XO, 4, 0, 0),
512652f1813SShefali Jain 	F(9600000,  P_XO, 2, 0, 0),
513652f1813SShefali Jain 	F(15000000, P_GPLL0_OUT_MAIN, 1,  3, 160),
514652f1813SShefali Jain 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
515652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
516652f1813SShefali Jain 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
517652f1813SShefali Jain 	F(30000000, P_GPLL0_OUT_MAIN, 1,  3, 80),
518652f1813SShefali Jain 	{ }
519652f1813SShefali Jain };
520652f1813SShefali Jain 
521652f1813SShefali Jain static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
522652f1813SShefali Jain 	.cmd_rcgr = 0x3014,
523652f1813SShefali Jain 	.mnd_width = 8,
524652f1813SShefali Jain 	.hid_width = 5,
525652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
526652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
527652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
528652f1813SShefali Jain 		.name = "blsp1_qup2_spi_apps_clk_src",
5299847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5309847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
531652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
532652f1813SShefali Jain 	},
533652f1813SShefali Jain };
534652f1813SShefali Jain 
535652f1813SShefali Jain static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
536652f1813SShefali Jain 	.cmd_rcgr = 0x4000,
537652f1813SShefali Jain 	.mnd_width = 0,
538652f1813SShefali Jain 	.hid_width = 5,
539652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
540652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
541652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
542652f1813SShefali Jain 		.name = "blsp1_qup3_i2c_apps_clk_src",
5439847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5449847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
545652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
546652f1813SShefali Jain 	},
547652f1813SShefali Jain };
548652f1813SShefali Jain 
549652f1813SShefali Jain static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
550652f1813SShefali Jain 	.cmd_rcgr = 0x4024,
551652f1813SShefali Jain 	.mnd_width = 8,
552652f1813SShefali Jain 	.hid_width = 5,
553652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
554652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_spi_apps_clk_src,
555652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
556652f1813SShefali Jain 		.name = "blsp1_qup3_spi_apps_clk_src",
5579847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5589847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
559652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
560652f1813SShefali Jain 	},
561652f1813SShefali Jain };
562652f1813SShefali Jain 
563652f1813SShefali Jain static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
564652f1813SShefali Jain 	.cmd_rcgr = 0x5000,
565652f1813SShefali Jain 	.mnd_width = 0,
566652f1813SShefali Jain 	.hid_width = 5,
567652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
568652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
569652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
570652f1813SShefali Jain 		.name = "blsp1_qup4_i2c_apps_clk_src",
5719847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5729847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
573652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
574652f1813SShefali Jain 	},
575652f1813SShefali Jain };
576652f1813SShefali Jain 
577652f1813SShefali Jain static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
578652f1813SShefali Jain 	.cmd_rcgr = 0x5024,
579652f1813SShefali Jain 	.mnd_width = 8,
580652f1813SShefali Jain 	.hid_width = 5,
581652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
582652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_spi_apps_clk_src,
583652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
584652f1813SShefali Jain 		.name = "blsp1_qup4_spi_apps_clk_src",
5859847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
5869847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
587652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
588652f1813SShefali Jain 	},
589652f1813SShefali Jain };
590652f1813SShefali Jain 
591652f1813SShefali Jain static const struct freq_tbl ftbl_blsp1_uart0_apps_clk_src[] = {
592652f1813SShefali Jain 	F(3686400, P_GPLL0_OUT_MAIN, 1, 72, 15625),
593652f1813SShefali Jain 	F(7372800, P_GPLL0_OUT_MAIN, 1, 144, 15625),
594652f1813SShefali Jain 	F(14745600, P_GPLL0_OUT_MAIN, 1, 288, 15625),
595652f1813SShefali Jain 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
596652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
597652f1813SShefali Jain 	F(24000000, P_GPLL0_OUT_MAIN, 1, 3, 100),
598652f1813SShefali Jain 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
599652f1813SShefali Jain 	F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
600652f1813SShefali Jain 	F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
601652f1813SShefali Jain 	F(46400000, P_GPLL0_OUT_MAIN, 1, 29, 500),
602652f1813SShefali Jain 	F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
603652f1813SShefali Jain 	F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
604652f1813SShefali Jain 	F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
605652f1813SShefali Jain 	F(58982400, P_GPLL0_OUT_MAIN, 1, 1152, 15625),
606652f1813SShefali Jain 	F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
607652f1813SShefali Jain 	F(64000000, P_GPLL0_OUT_MAIN, 1, 2, 25),
608652f1813SShefali Jain 	{ }
609652f1813SShefali Jain };
610652f1813SShefali Jain 
611652f1813SShefali Jain static struct clk_rcg2 blsp1_uart0_apps_clk_src = {
612652f1813SShefali Jain 	.cmd_rcgr = 0x600c,
613652f1813SShefali Jain 	.mnd_width = 16,
614652f1813SShefali Jain 	.hid_width = 5,
615652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
616652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_uart0_apps_clk_src,
617652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
618652f1813SShefali Jain 		.name = "blsp1_uart0_apps_clk_src",
6199847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6209847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
621652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
622652f1813SShefali Jain 	},
623652f1813SShefali Jain };
624652f1813SShefali Jain 
625652f1813SShefali Jain static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
626652f1813SShefali Jain 	.cmd_rcgr = 0x2044,
627652f1813SShefali Jain 	.mnd_width = 16,
628652f1813SShefali Jain 	.hid_width = 5,
629652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
630652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_uart0_apps_clk_src,
631652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
632652f1813SShefali Jain 		.name = "blsp1_uart1_apps_clk_src",
6339847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6349847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
635652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
636652f1813SShefali Jain 	},
637652f1813SShefali Jain };
638652f1813SShefali Jain 
639652f1813SShefali Jain static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
640652f1813SShefali Jain 	.cmd_rcgr = 0x3034,
641652f1813SShefali Jain 	.mnd_width = 16,
642652f1813SShefali Jain 	.hid_width = 5,
643652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
644652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_uart0_apps_clk_src,
645652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
646652f1813SShefali Jain 		.name = "blsp1_uart2_apps_clk_src",
6479847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6489847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
649652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
650652f1813SShefali Jain 	},
651652f1813SShefali Jain };
652652f1813SShefali Jain 
653652f1813SShefali Jain static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
654652f1813SShefali Jain 	.cmd_rcgr = 0x4014,
655652f1813SShefali Jain 	.mnd_width = 16,
656652f1813SShefali Jain 	.hid_width = 5,
6579d575719STaniya Das 	.cfg_off = 0x20,
658652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
659652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_uart0_apps_clk_src,
660652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
661652f1813SShefali Jain 		.name = "blsp1_uart3_apps_clk_src",
6629847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6639847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
664652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
665652f1813SShefali Jain 	},
666652f1813SShefali Jain };
667652f1813SShefali Jain 
668652f1813SShefali Jain static struct clk_rcg2 blsp2_qup0_i2c_apps_clk_src = {
669652f1813SShefali Jain 	.cmd_rcgr = 0xc00c,
670652f1813SShefali Jain 	.mnd_width = 0,
671652f1813SShefali Jain 	.hid_width = 5,
672652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
673652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_i2c_apps_clk_src,
674652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
675652f1813SShefali Jain 		.name = "blsp2_qup0_i2c_apps_clk_src",
6769847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6779847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
678652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
679652f1813SShefali Jain 	},
680652f1813SShefali Jain };
681652f1813SShefali Jain 
682652f1813SShefali Jain static struct clk_rcg2 blsp2_qup0_spi_apps_clk_src = {
683652f1813SShefali Jain 	.cmd_rcgr = 0xc024,
684652f1813SShefali Jain 	.mnd_width = 8,
685652f1813SShefali Jain 	.hid_width = 5,
686652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
687652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_qup0_spi_apps_clk_src,
688652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
689652f1813SShefali Jain 		.name = "blsp2_qup0_spi_apps_clk_src",
6909847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
6919847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
692652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
693652f1813SShefali Jain 	},
694652f1813SShefali Jain };
695652f1813SShefali Jain 
696652f1813SShefali Jain static struct clk_rcg2 blsp2_uart0_apps_clk_src = {
697652f1813SShefali Jain 	.cmd_rcgr = 0xc044,
698652f1813SShefali Jain 	.mnd_width = 16,
699652f1813SShefali Jain 	.hid_width = 5,
700652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
701652f1813SShefali Jain 	.freq_tbl = ftbl_blsp1_uart0_apps_clk_src,
702652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
703652f1813SShefali Jain 		.name = "blsp2_uart0_apps_clk_src",
7049847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
7059847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
706652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
707652f1813SShefali Jain 	},
708652f1813SShefali Jain };
709652f1813SShefali Jain 
710652f1813SShefali Jain static struct clk_rcg2 byte0_clk_src = {
711652f1813SShefali Jain 	.cmd_rcgr = 0x4d044,
712652f1813SShefali Jain 	.mnd_width = 0,
713652f1813SShefali Jain 	.hid_width = 5,
714652f1813SShefali Jain 	.parent_map = gcc_parent_map_5,
715652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
716652f1813SShefali Jain 		.name = "byte0_clk_src",
7179847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_5,
7189847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
719652f1813SShefali Jain 		.flags = CLK_SET_RATE_PARENT,
720652f1813SShefali Jain 		.ops = &clk_byte2_ops,
721652f1813SShefali Jain 	},
722652f1813SShefali Jain };
723652f1813SShefali Jain 
724652f1813SShefali Jain static const struct freq_tbl ftbl_emac_clk_src[] = {
725652f1813SShefali Jain 	F(5000000,   P_GPLL1_OUT_MAIN, 2, 1, 50),
726652f1813SShefali Jain 	F(50000000,  P_GPLL1_OUT_MAIN, 10, 0, 0),
727652f1813SShefali Jain 	F(125000000, P_GPLL1_OUT_MAIN, 4, 0, 0),
728652f1813SShefali Jain 	F(250000000, P_GPLL1_OUT_MAIN, 2, 0, 0),
729652f1813SShefali Jain 	{ }
730652f1813SShefali Jain };
731652f1813SShefali Jain 
732652f1813SShefali Jain static struct clk_rcg2 emac_clk_src = {
733652f1813SShefali Jain 	.cmd_rcgr = 0x4e01c,
734652f1813SShefali Jain 	.mnd_width = 8,
735652f1813SShefali Jain 	.hid_width = 5,
736652f1813SShefali Jain 	.parent_map = gcc_parent_map_4,
737652f1813SShefali Jain 	.freq_tbl = ftbl_emac_clk_src,
738652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
739652f1813SShefali Jain 		.name = "emac_clk_src",
7409847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_4,
7419847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
742652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
743652f1813SShefali Jain 	},
744652f1813SShefali Jain };
745652f1813SShefali Jain 
746652f1813SShefali Jain static const struct freq_tbl ftbl_emac_ptp_clk_src[] = {
747652f1813SShefali Jain 	F(50000000,  P_GPLL1_OUT_MAIN, 10, 0, 0),
748652f1813SShefali Jain 	F(125000000, P_GPLL1_OUT_MAIN, 4, 0, 0),
749652f1813SShefali Jain 	F(250000000, P_GPLL1_OUT_MAIN, 2, 0, 0),
750652f1813SShefali Jain 	{ }
751652f1813SShefali Jain };
752652f1813SShefali Jain 
753652f1813SShefali Jain static struct clk_rcg2 emac_ptp_clk_src = {
754652f1813SShefali Jain 	.cmd_rcgr = 0x4e014,
755652f1813SShefali Jain 	.mnd_width = 0,
756652f1813SShefali Jain 	.hid_width = 5,
757652f1813SShefali Jain 	.parent_map = gcc_parent_map_4,
758652f1813SShefali Jain 	.freq_tbl = ftbl_emac_ptp_clk_src,
759652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
760652f1813SShefali Jain 		.name = "emac_ptp_clk_src",
7619847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_4,
7629847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
763652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
764652f1813SShefali Jain 	},
765652f1813SShefali Jain };
766652f1813SShefali Jain 
767652f1813SShefali Jain static const struct freq_tbl ftbl_esc0_clk_src[] = {
768652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
769652f1813SShefali Jain 	{ }
770652f1813SShefali Jain };
771652f1813SShefali Jain 
772652f1813SShefali Jain static struct clk_rcg2 esc0_clk_src = {
773652f1813SShefali Jain 	.cmd_rcgr = 0x4d05c,
774652f1813SShefali Jain 	.mnd_width = 0,
775652f1813SShefali Jain 	.hid_width = 5,
776652f1813SShefali Jain 	.parent_map = gcc_parent_map_6,
777652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
778652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
779652f1813SShefali Jain 		.name = "esc0_clk_src",
7809847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_6,
7819847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
782652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
783652f1813SShefali Jain 	},
784652f1813SShefali Jain };
785652f1813SShefali Jain 
786652f1813SShefali Jain static const struct freq_tbl ftbl_gfx3d_clk_src[] = {
787652f1813SShefali Jain 	F(19200000,  P_XO, 1, 0, 0),
788652f1813SShefali Jain 	F(50000000,  P_GPLL0_OUT_MAIN, 16, 0, 0),
789652f1813SShefali Jain 	F(80000000,  P_GPLL0_OUT_MAIN, 10, 0, 0),
790652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
791652f1813SShefali Jain 	F(160000000, P_GPLL0_OUT_MAIN, 5, 0, 0),
792652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
793652f1813SShefali Jain 	F(228571429, P_GPLL0_OUT_MAIN, 3.5, 0, 0),
794652f1813SShefali Jain 	F(240000000, P_GPLL6_OUT_AUX,  4.5, 0, 0),
795652f1813SShefali Jain 	F(266666667, P_GPLL0_OUT_MAIN, 3, 0, 0),
796652f1813SShefali Jain 	F(270000000, P_GPLL6_OUT_AUX,  4, 0, 0),
797652f1813SShefali Jain 	F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
798652f1813SShefali Jain 	F(400000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
799652f1813SShefali Jain 	F(484800000, P_GPLL3_OUT_MAIN, 1, 0, 0),
800652f1813SShefali Jain 	F(523200000, P_GPLL3_OUT_MAIN, 1, 0, 0),
801652f1813SShefali Jain 	F(550000000, P_GPLL3_OUT_MAIN, 1, 0, 0),
802652f1813SShefali Jain 	F(598000000, P_GPLL3_OUT_MAIN, 1, 0, 0),
803652f1813SShefali Jain 	{ }
804652f1813SShefali Jain };
805652f1813SShefali Jain 
806652f1813SShefali Jain static struct clk_rcg2 gfx3d_clk_src = {
807652f1813SShefali Jain 	.cmd_rcgr = 0x59000,
808652f1813SShefali Jain 	.mnd_width = 0,
809652f1813SShefali Jain 	.hid_width = 5,
810652f1813SShefali Jain 	.parent_map = gcc_parent_map_7,
811652f1813SShefali Jain 	.freq_tbl = ftbl_gfx3d_clk_src,
812652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
813652f1813SShefali Jain 		.name = "gfx3d_clk_src",
8149847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_7,
8159847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
816652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
817652f1813SShefali Jain 	},
818652f1813SShefali Jain };
819652f1813SShefali Jain 
820652f1813SShefali Jain static const struct freq_tbl ftbl_gp1_clk_src[] = {
821652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
822652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
823652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
824652f1813SShefali Jain 	{ }
825652f1813SShefali Jain };
826652f1813SShefali Jain 
827652f1813SShefali Jain static struct clk_rcg2 gp1_clk_src = {
828652f1813SShefali Jain 	.cmd_rcgr = 0x8004,
829652f1813SShefali Jain 	.mnd_width = 8,
830652f1813SShefali Jain 	.hid_width = 5,
831652f1813SShefali Jain 	.parent_map = gcc_parent_map_2,
832652f1813SShefali Jain 	.freq_tbl = ftbl_gp1_clk_src,
833652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
834652f1813SShefali Jain 		.name = "gp1_clk_src",
8359847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_2,
8369847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
837652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
838652f1813SShefali Jain 	},
839652f1813SShefali Jain };
840652f1813SShefali Jain 
841652f1813SShefali Jain static struct clk_rcg2 gp2_clk_src = {
842652f1813SShefali Jain 	.cmd_rcgr = 0x9004,
843652f1813SShefali Jain 	.mnd_width = 8,
844652f1813SShefali Jain 	.hid_width = 5,
845652f1813SShefali Jain 	.parent_map = gcc_parent_map_2,
846652f1813SShefali Jain 	.freq_tbl = ftbl_gp1_clk_src,
847652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
848652f1813SShefali Jain 		.name = "gp2_clk_src",
8499847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_2,
8509847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
851652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
852652f1813SShefali Jain 	},
853652f1813SShefali Jain };
854652f1813SShefali Jain 
855652f1813SShefali Jain static struct clk_rcg2 gp3_clk_src = {
856652f1813SShefali Jain 	.cmd_rcgr = 0xa004,
857652f1813SShefali Jain 	.mnd_width = 8,
858652f1813SShefali Jain 	.hid_width = 5,
859652f1813SShefali Jain 	.parent_map = gcc_parent_map_2,
860652f1813SShefali Jain 	.freq_tbl = ftbl_gp1_clk_src,
861652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
862652f1813SShefali Jain 		.name = "gp3_clk_src",
8639847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_2,
8649847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
865652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
866652f1813SShefali Jain 	},
867652f1813SShefali Jain };
868652f1813SShefali Jain 
869652f1813SShefali Jain static struct clk_rcg2 hdmi_app_clk_src = {
870652f1813SShefali Jain 	.cmd_rcgr = 0x4d0e4,
871652f1813SShefali Jain 	.mnd_width = 0,
872652f1813SShefali Jain 	.hid_width = 5,
873652f1813SShefali Jain 	.parent_map = gcc_parent_map_1,
874652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
875652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
876652f1813SShefali Jain 		.name = "hdmi_app_clk_src",
8779847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
8789847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
879652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
880652f1813SShefali Jain 	},
881652f1813SShefali Jain };
882652f1813SShefali Jain 
883652f1813SShefali Jain static struct clk_rcg2 hdmi_pclk_clk_src = {
884652f1813SShefali Jain 	.cmd_rcgr = 0x4d0dc,
885652f1813SShefali Jain 	.mnd_width = 0,
886652f1813SShefali Jain 	.hid_width = 5,
887652f1813SShefali Jain 	.parent_map = gcc_parent_map_8,
888652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
889652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
890652f1813SShefali Jain 		.name = "hdmi_pclk_clk_src",
8919847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_8,
8929847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
893652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
894652f1813SShefali Jain 	},
895652f1813SShefali Jain };
896652f1813SShefali Jain 
897652f1813SShefali Jain static const struct freq_tbl ftbl_mdp_clk_src[] = {
898652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
899652f1813SShefali Jain 	F(80000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
900652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
901652f1813SShefali Jain 	F(145454545, P_GPLL0_OUT_MAIN, 5.5, 0, 0),
902652f1813SShefali Jain 	F(160000000, P_GPLL0_OUT_MAIN, 5, 0, 0),
903652f1813SShefali Jain 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
904652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
905652f1813SShefali Jain 	F(266666667, P_GPLL0_OUT_MAIN, 3, 0, 0),
906652f1813SShefali Jain 	F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
907652f1813SShefali Jain 	{ }
908652f1813SShefali Jain };
909652f1813SShefali Jain 
910652f1813SShefali Jain static struct clk_rcg2 mdp_clk_src = {
911652f1813SShefali Jain 	.cmd_rcgr = 0x4d014,
912652f1813SShefali Jain 	.mnd_width = 0,
913652f1813SShefali Jain 	.hid_width = 5,
914652f1813SShefali Jain 	.parent_map = gcc_parent_map_9,
915652f1813SShefali Jain 	.freq_tbl = ftbl_mdp_clk_src,
916652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
917652f1813SShefali Jain 		.name = "mdp_clk_src",
9189847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_9,
9199847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
920652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
921652f1813SShefali Jain 	},
922652f1813SShefali Jain };
923652f1813SShefali Jain 
924652f1813SShefali Jain static const struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
925652f1813SShefali Jain 	F(1200000, P_XO, 16, 0, 0),
926652f1813SShefali Jain 	{ }
927652f1813SShefali Jain };
928652f1813SShefali Jain 
929652f1813SShefali Jain static struct clk_rcg2 pcie_0_aux_clk_src = {
930652f1813SShefali Jain 	.cmd_rcgr = 0x3e024,
931652f1813SShefali Jain 	.mnd_width = 16,
932652f1813SShefali Jain 	.hid_width = 5,
933652f1813SShefali Jain 	.parent_map = gcc_parent_map_10,
934652f1813SShefali Jain 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
935652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
936652f1813SShefali Jain 		.name = "pcie_0_aux_clk_src",
9379847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_10,
9389847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
939652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
940652f1813SShefali Jain 	},
941652f1813SShefali Jain };
942652f1813SShefali Jain 
943652f1813SShefali Jain static const struct freq_tbl ftbl_pcie_0_pipe_clk_src[] = {
944652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
945652f1813SShefali Jain 	F(125000000, P_PCIE_0_PIPE_CLK, 2, 0, 0),
946652f1813SShefali Jain 	F(250000000, P_PCIE_0_PIPE_CLK, 1, 0, 0),
947652f1813SShefali Jain 	{ }
948652f1813SShefali Jain };
949652f1813SShefali Jain 
950652f1813SShefali Jain static struct clk_rcg2 pcie_0_pipe_clk_src = {
951652f1813SShefali Jain 	.cmd_rcgr = 0x3e01c,
952652f1813SShefali Jain 	.mnd_width = 0,
953652f1813SShefali Jain 	.hid_width = 5,
954652f1813SShefali Jain 	.parent_map = gcc_parent_map_11,
955652f1813SShefali Jain 	.freq_tbl = ftbl_pcie_0_pipe_clk_src,
956652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
957652f1813SShefali Jain 		.name = "pcie_0_pipe_clk_src",
9589847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_11,
9599847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
960652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
961652f1813SShefali Jain 	},
962652f1813SShefali Jain };
963652f1813SShefali Jain 
964652f1813SShefali Jain static struct clk_rcg2 pclk0_clk_src = {
965652f1813SShefali Jain 	.cmd_rcgr = 0x4d000,
966652f1813SShefali Jain 	.mnd_width = 8,
967652f1813SShefali Jain 	.hid_width = 5,
968652f1813SShefali Jain 	.parent_map = gcc_parent_map_12,
969652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
970652f1813SShefali Jain 		.name = "pclk0_clk_src",
9719847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_12,
9729847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
973652f1813SShefali Jain 		.flags = CLK_SET_RATE_PARENT,
974652f1813SShefali Jain 		.ops = &clk_pixel_ops,
975652f1813SShefali Jain 	},
976652f1813SShefali Jain };
977652f1813SShefali Jain 
978652f1813SShefali Jain static const struct freq_tbl ftbl_pdm2_clk_src[] = {
979652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
980652f1813SShefali Jain 	F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
981652f1813SShefali Jain 	{ }
982652f1813SShefali Jain };
983652f1813SShefali Jain 
984652f1813SShefali Jain static struct clk_rcg2 pdm2_clk_src = {
985652f1813SShefali Jain 	.cmd_rcgr = 0x44010,
986652f1813SShefali Jain 	.mnd_width = 0,
987652f1813SShefali Jain 	.hid_width = 5,
988652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
989652f1813SShefali Jain 	.freq_tbl = ftbl_pdm2_clk_src,
990652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
991652f1813SShefali Jain 		.name = "pdm2_clk_src",
9929847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
9939847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
994652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
995652f1813SShefali Jain 	},
996652f1813SShefali Jain };
997652f1813SShefali Jain 
998652f1813SShefali Jain static const struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
999652f1813SShefali Jain 	F(144000, P_XO, 16, 3, 25),
1000652f1813SShefali Jain 	F(400000, P_XO, 12, 1, 4),
1001652f1813SShefali Jain 	F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4),
1002652f1813SShefali Jain 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
1003652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
1004652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1005652f1813SShefali Jain 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1006652f1813SShefali Jain 	F(192000000, P_GPLL4_OUT_MAIN, 6, 0, 0),
1007652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1008652f1813SShefali Jain 	F(384000000, P_GPLL4_OUT_MAIN, 3, 0, 0),
1009652f1813SShefali Jain 	{ }
1010652f1813SShefali Jain };
1011652f1813SShefali Jain 
1012652f1813SShefali Jain static struct clk_rcg2 sdcc1_apps_clk_src = {
1013652f1813SShefali Jain 	.cmd_rcgr = 0x42004,
1014652f1813SShefali Jain 	.mnd_width = 8,
1015652f1813SShefali Jain 	.hid_width = 5,
1016652f1813SShefali Jain 	.parent_map = gcc_parent_map_13,
1017652f1813SShefali Jain 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
1018652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1019652f1813SShefali Jain 		.name = "sdcc1_apps_clk_src",
10209847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_13,
10219847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
102259302081SVinod Koul 		.ops = &clk_rcg2_floor_ops,
1023652f1813SShefali Jain 	},
1024652f1813SShefali Jain };
1025652f1813SShefali Jain 
1026652f1813SShefali Jain static const struct freq_tbl ftbl_sdcc1_ice_core_clk_src[] = {
1027652f1813SShefali Jain 	F(160000000, P_GPLL0_OUT_MAIN, 5, 0, 0),
1028652f1813SShefali Jain 	F(266666667, P_GPLL0_OUT_MAIN, 3, 0, 0),
1029652f1813SShefali Jain 	{ }
1030652f1813SShefali Jain };
1031652f1813SShefali Jain 
1032652f1813SShefali Jain static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1033652f1813SShefali Jain 	.cmd_rcgr = 0x5d000,
1034652f1813SShefali Jain 	.mnd_width = 8,
1035652f1813SShefali Jain 	.hid_width = 5,
1036652f1813SShefali Jain 	.parent_map = gcc_parent_map_3,
1037652f1813SShefali Jain 	.freq_tbl = ftbl_sdcc1_ice_core_clk_src,
1038652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1039652f1813SShefali Jain 		.name = "sdcc1_ice_core_clk_src",
10409847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_3,
10419847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1042652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1043652f1813SShefali Jain 	},
1044652f1813SShefali Jain };
1045652f1813SShefali Jain 
1046652f1813SShefali Jain static const struct freq_tbl ftbl_sdcc2_apps_clk_src[] = {
1047652f1813SShefali Jain 	F(144000, P_XO, 16, 3, 25),
1048652f1813SShefali Jain 	F(400000, P_XO, 12, 1, 4),
1049652f1813SShefali Jain 	F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4),
1050652f1813SShefali Jain 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
1051652f1813SShefali Jain 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
1052652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1053652f1813SShefali Jain 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1054652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1055652f1813SShefali Jain 	{ }
1056652f1813SShefali Jain };
1057652f1813SShefali Jain 
1058652f1813SShefali Jain static struct clk_rcg2 sdcc2_apps_clk_src = {
1059652f1813SShefali Jain 	.cmd_rcgr = 0x43004,
1060652f1813SShefali Jain 	.mnd_width = 8,
1061652f1813SShefali Jain 	.hid_width = 5,
1062652f1813SShefali Jain 	.parent_map = gcc_parent_map_14,
1063652f1813SShefali Jain 	.freq_tbl = ftbl_sdcc2_apps_clk_src,
1064652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1065652f1813SShefali Jain 		.name = "sdcc2_apps_clk_src",
10669847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_14,
10679847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_14),
106859302081SVinod Koul 		.ops = &clk_rcg2_floor_ops,
1069652f1813SShefali Jain 	},
1070652f1813SShefali Jain };
1071652f1813SShefali Jain 
1072652f1813SShefali Jain static struct clk_rcg2 usb20_mock_utmi_clk_src = {
1073652f1813SShefali Jain 	.cmd_rcgr = 0x41048,
1074652f1813SShefali Jain 	.mnd_width = 0,
1075652f1813SShefali Jain 	.hid_width = 5,
1076652f1813SShefali Jain 	.parent_map = gcc_parent_map_1,
1077652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
1078652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1079652f1813SShefali Jain 		.name = "usb20_mock_utmi_clk_src",
10809847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
10819847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1082652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1083652f1813SShefali Jain 	},
1084652f1813SShefali Jain };
1085652f1813SShefali Jain 
1086652f1813SShefali Jain static const struct freq_tbl ftbl_usb30_master_clk_src[] = {
1087652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
1088652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1089652f1813SShefali Jain 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1090652f1813SShefali Jain 	F(266666667, P_GPLL0_OUT_MAIN, 3, 0, 0),
1091652f1813SShefali Jain 	{ }
1092652f1813SShefali Jain };
1093652f1813SShefali Jain 
1094652f1813SShefali Jain static struct clk_rcg2 usb30_master_clk_src = {
1095652f1813SShefali Jain 	.cmd_rcgr = 0x39028,
1096652f1813SShefali Jain 	.mnd_width = 8,
1097652f1813SShefali Jain 	.hid_width = 5,
1098652f1813SShefali Jain 	.parent_map = gcc_parent_map_0,
1099652f1813SShefali Jain 	.freq_tbl = ftbl_usb30_master_clk_src,
1100652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1101652f1813SShefali Jain 		.name = "usb30_master_clk_src",
11029847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_0,
11039847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1104652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1105652f1813SShefali Jain 	},
1106652f1813SShefali Jain };
1107652f1813SShefali Jain 
1108652f1813SShefali Jain static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1109652f1813SShefali Jain 	.cmd_rcgr = 0x3901c,
1110652f1813SShefali Jain 	.mnd_width = 0,
1111652f1813SShefali Jain 	.hid_width = 5,
1112652f1813SShefali Jain 	.parent_map = gcc_parent_map_1,
1113652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
1114652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1115652f1813SShefali Jain 		.name = "usb30_mock_utmi_clk_src",
11169847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
11179847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1118652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1119652f1813SShefali Jain 	},
1120652f1813SShefali Jain };
1121652f1813SShefali Jain 
1122652f1813SShefali Jain static struct clk_rcg2 usb3_phy_aux_clk_src = {
1123652f1813SShefali Jain 	.cmd_rcgr = 0x3903c,
1124652f1813SShefali Jain 	.mnd_width = 0,
1125652f1813SShefali Jain 	.hid_width = 5,
1126652f1813SShefali Jain 	.parent_map = gcc_parent_map_1,
1127652f1813SShefali Jain 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
1128652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1129652f1813SShefali Jain 		.name = "usb3_phy_aux_clk_src",
11309847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_1,
11319847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1132652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1133652f1813SShefali Jain 	},
1134652f1813SShefali Jain };
1135652f1813SShefali Jain 
1136652f1813SShefali Jain static const struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1137652f1813SShefali Jain 	F(19200000, P_XO, 1, 0, 0),
1138652f1813SShefali Jain 	F(80000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
1139652f1813SShefali Jain 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1140652f1813SShefali Jain 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
1141652f1813SShefali Jain 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1142652f1813SShefali Jain 	{ }
1143652f1813SShefali Jain };
1144652f1813SShefali Jain 
1145652f1813SShefali Jain static struct clk_rcg2 usb_hs_system_clk_src = {
1146652f1813SShefali Jain 	.cmd_rcgr = 0x41010,
1147652f1813SShefali Jain 	.mnd_width = 0,
1148652f1813SShefali Jain 	.hid_width = 5,
1149652f1813SShefali Jain 	.parent_map = gcc_parent_map_3,
1150652f1813SShefali Jain 	.freq_tbl = ftbl_usb_hs_system_clk_src,
1151652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1152652f1813SShefali Jain 		.name = "usb_hs_system_clk_src",
11539847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_3,
11549847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1155652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1156652f1813SShefali Jain 	},
1157652f1813SShefali Jain };
1158652f1813SShefali Jain 
1159652f1813SShefali Jain static struct clk_rcg2 vsync_clk_src = {
1160652f1813SShefali Jain 	.cmd_rcgr = 0x4d02c,
1161652f1813SShefali Jain 	.mnd_width = 0,
1162652f1813SShefali Jain 	.hid_width = 5,
1163652f1813SShefali Jain 	.parent_map = gcc_parent_map_15,
1164652f1813SShefali Jain 	.freq_tbl = ftbl_esc0_clk_src,
1165652f1813SShefali Jain 	.clkr.hw.init = &(struct clk_init_data){
1166652f1813SShefali Jain 		.name = "vsync_clk_src",
11679847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_15,
11689847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_15),
1169652f1813SShefali Jain 		.ops = &clk_rcg2_ops,
1170652f1813SShefali Jain 	},
1171652f1813SShefali Jain };
1172652f1813SShefali Jain 
11738bc7a04bSBjorn Andersson static const struct freq_tbl ftbl_cdsp_bimc_clk_src[] = {
11748bc7a04bSBjorn Andersson 	F(19200000, P_XO, 1, 0, 0),
11758bc7a04bSBjorn Andersson 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
11768bc7a04bSBjorn Andersson 	F(266666667, P_GPLL0_OUT_MAIN, 3, 0, 0),
11778bc7a04bSBjorn Andersson 	F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
11788bc7a04bSBjorn Andersson 	{ }
11798bc7a04bSBjorn Andersson };
11808bc7a04bSBjorn Andersson 
11818bc7a04bSBjorn Andersson static struct clk_rcg2 cdsp_bimc_clk_src = {
11828bc7a04bSBjorn Andersson 	.cmd_rcgr = 0x5e010,
11838bc7a04bSBjorn Andersson 	.mnd_width = 0,
11848bc7a04bSBjorn Andersson 	.hid_width = 5,
11858bc7a04bSBjorn Andersson 	.parent_map = gcc_parent_map_16,
11868bc7a04bSBjorn Andersson 	.freq_tbl = ftbl_cdsp_bimc_clk_src,
11878bc7a04bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data) {
11888bc7a04bSBjorn Andersson 		.name = "cdsp_bimc_clk_src",
11899847a90cSDmitry Baryshkov 		.parent_data = gcc_parent_data_16,
11909847a90cSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parent_data_16),
11918bc7a04bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11928bc7a04bSBjorn Andersson 	},
11938bc7a04bSBjorn Andersson };
11948bc7a04bSBjorn Andersson 
1195652f1813SShefali Jain static struct clk_branch gcc_apss_ahb_clk = {
1196652f1813SShefali Jain 	.halt_reg = 0x4601c,
1197652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
1198652f1813SShefali Jain 	.clkr = {
1199652f1813SShefali Jain 		.enable_reg = 0x45004,
1200652f1813SShefali Jain 		.enable_mask = BIT(14),
1201652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1202652f1813SShefali Jain 			.name = "gcc_apss_ahb_clk",
12039847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
12049847a90cSDmitry Baryshkov 				&apss_ahb_clk_src.clkr.hw,
1205652f1813SShefali Jain 			},
1206652f1813SShefali Jain 			.num_parents = 1,
1207652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1208652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1209652f1813SShefali Jain 		},
1210652f1813SShefali Jain 	},
1211652f1813SShefali Jain };
1212652f1813SShefali Jain 
1213652f1813SShefali Jain static struct clk_branch gcc_apss_tcu_clk = {
1214652f1813SShefali Jain 	.halt_reg = 0x5b004,
1215652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1216652f1813SShefali Jain 	.clkr = {
1217652f1813SShefali Jain 		.enable_reg = 0x4500c,
1218652f1813SShefali Jain 		.enable_mask = BIT(1),
1219652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1220652f1813SShefali Jain 			.name = "gcc_apss_tcu_clk",
1221652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1222652f1813SShefali Jain 		},
1223652f1813SShefali Jain 	},
1224652f1813SShefali Jain };
1225652f1813SShefali Jain 
1226652f1813SShefali Jain static struct clk_branch gcc_bimc_gfx_clk = {
1227652f1813SShefali Jain 	.halt_reg = 0x59034,
1228652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1229652f1813SShefali Jain 	.clkr = {
1230652f1813SShefali Jain 		.enable_reg = 0x59034,
1231652f1813SShefali Jain 		.enable_mask = BIT(0),
1232652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1233652f1813SShefali Jain 			.name = "gcc_bimc_gfx_clk",
1234652f1813SShefali Jain 			.ops = &clk_branch2_ops,
12359847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
12369847a90cSDmitry Baryshkov 				&gcc_apss_tcu_clk.clkr.hw,
1237652f1813SShefali Jain 			},
1238652f1813SShefali Jain 
1239652f1813SShefali Jain 		},
1240652f1813SShefali Jain 	},
1241652f1813SShefali Jain };
1242652f1813SShefali Jain 
1243652f1813SShefali Jain static struct clk_branch gcc_bimc_gpu_clk = {
1244652f1813SShefali Jain 	.halt_reg = 0x59030,
1245652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1246652f1813SShefali Jain 	.clkr = {
1247652f1813SShefali Jain 		.enable_reg = 0x59030,
1248652f1813SShefali Jain 		.enable_mask = BIT(0),
1249652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1250652f1813SShefali Jain 			.name = "gcc_bimc_gpu_clk",
1251652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1252652f1813SShefali Jain 		},
1253652f1813SShefali Jain 	},
1254652f1813SShefali Jain };
1255652f1813SShefali Jain 
12568bc7a04bSBjorn Andersson static struct clk_branch gcc_bimc_cdsp_clk = {
12578bc7a04bSBjorn Andersson 	.halt_reg = 0x31030,
12588bc7a04bSBjorn Andersson 	.halt_check = BRANCH_HALT,
12598bc7a04bSBjorn Andersson 	.clkr = {
12608bc7a04bSBjorn Andersson 		.enable_reg = 0x31030,
12618bc7a04bSBjorn Andersson 		.enable_mask = BIT(0),
12628bc7a04bSBjorn Andersson 		.hw.init = &(struct clk_init_data) {
12638bc7a04bSBjorn Andersson 			.name = "gcc_bimc_cdsp_clk",
12649847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
12659847a90cSDmitry Baryshkov 				&cdsp_bimc_clk_src.clkr.hw
12668bc7a04bSBjorn Andersson 			},
12678bc7a04bSBjorn Andersson 			.num_parents = 1,
12688bc7a04bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
12698bc7a04bSBjorn Andersson 			.ops = &clk_branch2_ops,
12708bc7a04bSBjorn Andersson 		},
12718bc7a04bSBjorn Andersson 	},
12728bc7a04bSBjorn Andersson };
12738bc7a04bSBjorn Andersson 
1274652f1813SShefali Jain static struct clk_branch gcc_bimc_mdss_clk = {
1275652f1813SShefali Jain 	.halt_reg = 0x31038,
1276652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1277652f1813SShefali Jain 	.clkr = {
1278652f1813SShefali Jain 		.enable_reg = 0x31038,
1279652f1813SShefali Jain 		.enable_mask = BIT(0),
1280652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1281652f1813SShefali Jain 			.name = "gcc_bimc_mdss_clk",
1282652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1283652f1813SShefali Jain 		},
1284652f1813SShefali Jain 	},
1285652f1813SShefali Jain };
1286652f1813SShefali Jain 
1287652f1813SShefali Jain static struct clk_branch gcc_blsp1_ahb_clk = {
1288652f1813SShefali Jain 	.halt_reg = 0x1008,
1289652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
1290652f1813SShefali Jain 	.clkr = {
1291652f1813SShefali Jain 		.enable_reg = 0x45004,
1292652f1813SShefali Jain 		.enable_mask = BIT(10),
1293652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1294652f1813SShefali Jain 			.name = "gcc_blsp1_ahb_clk",
1295652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1296652f1813SShefali Jain 		},
1297652f1813SShefali Jain 	},
1298652f1813SShefali Jain };
1299652f1813SShefali Jain 
1300652f1813SShefali Jain static struct clk_branch gcc_dcc_clk = {
1301652f1813SShefali Jain 	.halt_reg = 0x77004,
1302652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1303652f1813SShefali Jain 	.clkr = {
1304652f1813SShefali Jain 		.enable_reg = 0x77004,
1305652f1813SShefali Jain 		.enable_mask = BIT(0),
1306652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1307652f1813SShefali Jain 			.name = "gcc_dcc_clk",
1308652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1309652f1813SShefali Jain 		},
1310652f1813SShefali Jain 	},
1311652f1813SShefali Jain };
1312652f1813SShefali Jain 
1313652f1813SShefali Jain static struct clk_branch gcc_dcc_xo_clk = {
1314652f1813SShefali Jain 	.halt_reg = 0x77008,
1315652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1316652f1813SShefali Jain 	.clkr = {
1317652f1813SShefali Jain 		.enable_reg = 0x77008,
1318652f1813SShefali Jain 		.enable_mask = BIT(0),
1319652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1320652f1813SShefali Jain 			.name = "gcc_dcc_xo_clk",
1321652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1322652f1813SShefali Jain 		},
1323652f1813SShefali Jain 	},
1324652f1813SShefali Jain };
1325652f1813SShefali Jain 
1326652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup0_i2c_apps_clk = {
1327652f1813SShefali Jain 	.halt_reg = 0x6028,
1328652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1329652f1813SShefali Jain 	.clkr = {
1330652f1813SShefali Jain 		.enable_reg = 0x6028,
1331652f1813SShefali Jain 		.enable_mask = BIT(0),
1332652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1333652f1813SShefali Jain 			.name = "gcc_blsp1_qup0_i2c_apps_clk",
13349847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
13359847a90cSDmitry Baryshkov 				&blsp1_qup0_i2c_apps_clk_src.clkr.hw,
1336652f1813SShefali Jain 			},
1337652f1813SShefali Jain 			.num_parents = 1,
1338652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1339652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1340652f1813SShefali Jain 		},
1341652f1813SShefali Jain 	},
1342652f1813SShefali Jain };
1343652f1813SShefali Jain 
1344652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup0_spi_apps_clk = {
1345652f1813SShefali Jain 	.halt_reg = 0x6024,
1346652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1347652f1813SShefali Jain 	.clkr = {
1348652f1813SShefali Jain 		.enable_reg = 0x6024,
1349652f1813SShefali Jain 		.enable_mask = BIT(0),
1350652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1351652f1813SShefali Jain 			.name = "gcc_blsp1_qup0_spi_apps_clk",
13529847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
13539847a90cSDmitry Baryshkov 				&blsp1_qup0_spi_apps_clk_src.clkr.hw,
1354652f1813SShefali Jain 			},
1355652f1813SShefali Jain 			.num_parents = 1,
1356652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1357652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1358652f1813SShefali Jain 		},
1359652f1813SShefali Jain 	},
1360652f1813SShefali Jain };
1361652f1813SShefali Jain 
1362652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1363652f1813SShefali Jain 	.halt_reg = 0x2008,
1364652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1365652f1813SShefali Jain 	.clkr = {
1366652f1813SShefali Jain 		.enable_reg = 0x2008,
1367652f1813SShefali Jain 		.enable_mask = BIT(0),
1368652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1369652f1813SShefali Jain 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
13709847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
13719847a90cSDmitry Baryshkov 				&blsp1_qup1_i2c_apps_clk_src.clkr.hw,
1372652f1813SShefali Jain 			},
1373652f1813SShefali Jain 			.num_parents = 1,
1374652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1375652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1376652f1813SShefali Jain 		},
1377652f1813SShefali Jain 	},
1378652f1813SShefali Jain };
1379652f1813SShefali Jain 
1380652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1381652f1813SShefali Jain 	.halt_reg = 0x2004,
1382652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1383652f1813SShefali Jain 	.clkr = {
1384652f1813SShefali Jain 		.enable_reg = 0x2004,
1385652f1813SShefali Jain 		.enable_mask = BIT(0),
1386652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1387652f1813SShefali Jain 			.name = "gcc_blsp1_qup1_spi_apps_clk",
13889847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
13899847a90cSDmitry Baryshkov 				&blsp1_qup1_spi_apps_clk_src.clkr.hw,
1390652f1813SShefali Jain 			},
1391652f1813SShefali Jain 			.num_parents = 1,
1392652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1393652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1394652f1813SShefali Jain 		},
1395652f1813SShefali Jain 	},
1396652f1813SShefali Jain };
1397652f1813SShefali Jain 
1398652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1399652f1813SShefali Jain 	.halt_reg = 0x3010,
1400652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1401652f1813SShefali Jain 	.clkr = {
1402652f1813SShefali Jain 		.enable_reg = 0x3010,
1403652f1813SShefali Jain 		.enable_mask = BIT(0),
1404652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1405652f1813SShefali Jain 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
14069847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14079847a90cSDmitry Baryshkov 				&blsp1_qup2_i2c_apps_clk_src.clkr.hw,
1408652f1813SShefali Jain 			},
1409652f1813SShefali Jain 			.num_parents = 1,
1410652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1411652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1412652f1813SShefali Jain 		},
1413652f1813SShefali Jain 	},
1414652f1813SShefali Jain };
1415652f1813SShefali Jain 
1416652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1417652f1813SShefali Jain 	.halt_reg = 0x300c,
1418652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1419652f1813SShefali Jain 	.clkr = {
1420652f1813SShefali Jain 		.enable_reg = 0x300c,
1421652f1813SShefali Jain 		.enable_mask = BIT(0),
1422652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1423652f1813SShefali Jain 			.name = "gcc_blsp1_qup2_spi_apps_clk",
14249847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14259847a90cSDmitry Baryshkov 				&blsp1_qup2_spi_apps_clk_src.clkr.hw,
1426652f1813SShefali Jain 			},
1427652f1813SShefali Jain 			.num_parents = 1,
1428652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1429652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1430652f1813SShefali Jain 		},
1431652f1813SShefali Jain 	},
1432652f1813SShefali Jain };
1433652f1813SShefali Jain 
1434652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1435652f1813SShefali Jain 	.halt_reg = 0x4020,
1436652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1437652f1813SShefali Jain 	.clkr = {
1438652f1813SShefali Jain 		.enable_reg = 0x4020,
1439652f1813SShefali Jain 		.enable_mask = BIT(0),
1440652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1441652f1813SShefali Jain 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
14429847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14439847a90cSDmitry Baryshkov 				&blsp1_qup3_i2c_apps_clk_src.clkr.hw,
1444652f1813SShefali Jain 			},
1445652f1813SShefali Jain 			.num_parents = 1,
1446652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1447652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1448652f1813SShefali Jain 		},
1449652f1813SShefali Jain 	},
1450652f1813SShefali Jain };
1451652f1813SShefali Jain 
1452652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1453652f1813SShefali Jain 	.halt_reg = 0x401c,
1454652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1455652f1813SShefali Jain 	.clkr = {
1456652f1813SShefali Jain 		.enable_reg = 0x401c,
1457652f1813SShefali Jain 		.enable_mask = BIT(0),
1458652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1459652f1813SShefali Jain 			.name = "gcc_blsp1_qup3_spi_apps_clk",
14609847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14619847a90cSDmitry Baryshkov 				&blsp1_qup3_spi_apps_clk_src.clkr.hw,
1462652f1813SShefali Jain 			},
1463652f1813SShefali Jain 			.num_parents = 1,
1464652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1465652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1466652f1813SShefali Jain 		},
1467652f1813SShefali Jain 	},
1468652f1813SShefali Jain };
1469652f1813SShefali Jain 
1470652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1471652f1813SShefali Jain 	.halt_reg = 0x5020,
1472652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1473652f1813SShefali Jain 	.clkr = {
1474652f1813SShefali Jain 		.enable_reg = 0x5020,
1475652f1813SShefali Jain 		.enable_mask = BIT(0),
1476652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1477652f1813SShefali Jain 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
14789847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14799847a90cSDmitry Baryshkov 				&blsp1_qup4_i2c_apps_clk_src.clkr.hw,
1480652f1813SShefali Jain 			},
1481652f1813SShefali Jain 			.num_parents = 1,
1482652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1483652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1484652f1813SShefali Jain 		},
1485652f1813SShefali Jain 	},
1486652f1813SShefali Jain };
1487652f1813SShefali Jain 
1488652f1813SShefali Jain static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1489652f1813SShefali Jain 	.halt_reg = 0x501c,
1490652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1491652f1813SShefali Jain 	.clkr = {
1492652f1813SShefali Jain 		.enable_reg = 0x501c,
1493652f1813SShefali Jain 		.enable_mask = BIT(0),
1494652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1495652f1813SShefali Jain 			.name = "gcc_blsp1_qup4_spi_apps_clk",
14969847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
14979847a90cSDmitry Baryshkov 				&blsp1_qup4_spi_apps_clk_src.clkr.hw,
1498652f1813SShefali Jain 			},
1499652f1813SShefali Jain 			.num_parents = 1,
1500652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1501652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1502652f1813SShefali Jain 		},
1503652f1813SShefali Jain 	},
1504652f1813SShefali Jain };
1505652f1813SShefali Jain 
1506652f1813SShefali Jain static struct clk_branch gcc_blsp1_uart0_apps_clk = {
1507652f1813SShefali Jain 	.halt_reg = 0x6004,
1508652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1509652f1813SShefali Jain 	.clkr = {
1510652f1813SShefali Jain 		.enable_reg = 0x6004,
1511652f1813SShefali Jain 		.enable_mask = BIT(0),
1512652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1513652f1813SShefali Jain 			.name = "gcc_blsp1_uart0_apps_clk",
15149847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
15159847a90cSDmitry Baryshkov 				&blsp1_uart0_apps_clk_src.clkr.hw,
1516652f1813SShefali Jain 			},
1517652f1813SShefali Jain 			.num_parents = 1,
1518652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1519652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1520652f1813SShefali Jain 		},
1521652f1813SShefali Jain 	},
1522652f1813SShefali Jain };
1523652f1813SShefali Jain 
1524652f1813SShefali Jain static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1525652f1813SShefali Jain 	.halt_reg = 0x203c,
1526652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1527652f1813SShefali Jain 	.clkr = {
1528652f1813SShefali Jain 		.enable_reg = 0x203c,
1529652f1813SShefali Jain 		.enable_mask = BIT(0),
1530652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1531652f1813SShefali Jain 			.name = "gcc_blsp1_uart1_apps_clk",
15329847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
15339847a90cSDmitry Baryshkov 				&blsp1_uart1_apps_clk_src.clkr.hw,
1534652f1813SShefali Jain 			},
1535652f1813SShefali Jain 			.num_parents = 1,
1536652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1537652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1538652f1813SShefali Jain 		},
1539652f1813SShefali Jain 	},
1540652f1813SShefali Jain };
1541652f1813SShefali Jain 
1542652f1813SShefali Jain static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1543652f1813SShefali Jain 	.halt_reg = 0x302c,
1544652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1545652f1813SShefali Jain 	.clkr = {
1546652f1813SShefali Jain 		.enable_reg = 0x302c,
1547652f1813SShefali Jain 		.enable_mask = BIT(0),
1548652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1549652f1813SShefali Jain 			.name = "gcc_blsp1_uart2_apps_clk",
15509847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
15519847a90cSDmitry Baryshkov 				&blsp1_uart2_apps_clk_src.clkr.hw,
1552652f1813SShefali Jain 			},
1553652f1813SShefali Jain 			.num_parents = 1,
1554652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1555652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1556652f1813SShefali Jain 		},
1557652f1813SShefali Jain 	},
1558652f1813SShefali Jain };
1559652f1813SShefali Jain 
1560652f1813SShefali Jain static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1561652f1813SShefali Jain 	.halt_reg = 0x400c,
1562652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1563652f1813SShefali Jain 	.clkr = {
1564652f1813SShefali Jain 		.enable_reg = 0x400c,
1565652f1813SShefali Jain 		.enable_mask = BIT(0),
1566652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1567652f1813SShefali Jain 			.name = "gcc_blsp1_uart3_apps_clk",
15689847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
15699847a90cSDmitry Baryshkov 				&blsp1_uart3_apps_clk_src.clkr.hw,
1570652f1813SShefali Jain 			},
1571652f1813SShefali Jain 			.num_parents = 1,
1572652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1573652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1574652f1813SShefali Jain 		},
1575652f1813SShefali Jain 	},
1576652f1813SShefali Jain };
1577652f1813SShefali Jain 
1578652f1813SShefali Jain static struct clk_branch gcc_blsp2_ahb_clk = {
1579652f1813SShefali Jain 	.halt_reg = 0xb008,
1580652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
1581652f1813SShefali Jain 	.clkr = {
1582652f1813SShefali Jain 		.enable_reg = 0x45004,
1583652f1813SShefali Jain 		.enable_mask = BIT(20),
1584652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1585652f1813SShefali Jain 			.name = "gcc_blsp2_ahb_clk",
1586652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1587652f1813SShefali Jain 		},
1588652f1813SShefali Jain 	},
1589652f1813SShefali Jain };
1590652f1813SShefali Jain 
1591652f1813SShefali Jain static struct clk_branch gcc_blsp2_qup0_i2c_apps_clk = {
1592652f1813SShefali Jain 	.halt_reg = 0xc008,
1593652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1594652f1813SShefali Jain 	.clkr = {
1595652f1813SShefali Jain 		.enable_reg = 0xc008,
1596652f1813SShefali Jain 		.enable_mask = BIT(0),
1597652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1598652f1813SShefali Jain 			.name = "gcc_blsp2_qup0_i2c_apps_clk",
15999847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
16009847a90cSDmitry Baryshkov 				&blsp2_qup0_i2c_apps_clk_src.clkr.hw,
1601652f1813SShefali Jain 			},
1602652f1813SShefali Jain 			.num_parents = 1,
1603652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1604652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1605652f1813SShefali Jain 		},
1606652f1813SShefali Jain 	},
1607652f1813SShefali Jain };
1608652f1813SShefali Jain 
1609652f1813SShefali Jain static struct clk_branch gcc_blsp2_qup0_spi_apps_clk = {
1610652f1813SShefali Jain 	.halt_reg = 0xc004,
1611652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1612652f1813SShefali Jain 	.clkr = {
1613652f1813SShefali Jain 		.enable_reg = 0xc004,
1614652f1813SShefali Jain 		.enable_mask = BIT(0),
1615652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1616652f1813SShefali Jain 			.name = "gcc_blsp2_qup0_spi_apps_clk",
16179847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
16189847a90cSDmitry Baryshkov 				&blsp2_qup0_spi_apps_clk_src.clkr.hw,
1619652f1813SShefali Jain 			},
1620652f1813SShefali Jain 			.num_parents = 1,
1621652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1622652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1623652f1813SShefali Jain 		},
1624652f1813SShefali Jain 	},
1625652f1813SShefali Jain };
1626652f1813SShefali Jain 
1627652f1813SShefali Jain static struct clk_branch gcc_blsp2_uart0_apps_clk = {
1628652f1813SShefali Jain 	.halt_reg = 0xc03c,
1629652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1630652f1813SShefali Jain 	.clkr = {
1631652f1813SShefali Jain 		.enable_reg = 0xc03c,
1632652f1813SShefali Jain 		.enable_mask = BIT(0),
1633652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1634652f1813SShefali Jain 			.name = "gcc_blsp2_uart0_apps_clk",
16359847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
16369847a90cSDmitry Baryshkov 				&blsp2_uart0_apps_clk_src.clkr.hw,
1637652f1813SShefali Jain 			},
1638652f1813SShefali Jain 			.num_parents = 1,
1639652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1640652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1641652f1813SShefali Jain 		},
1642652f1813SShefali Jain 	},
1643652f1813SShefali Jain };
1644652f1813SShefali Jain 
1645652f1813SShefali Jain static struct clk_branch gcc_boot_rom_ahb_clk = {
1646652f1813SShefali Jain 	.halt_reg = 0x1300c,
1647652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
1648652f1813SShefali Jain 	.clkr = {
1649652f1813SShefali Jain 		.enable_reg = 0x45004,
1650652f1813SShefali Jain 		.enable_mask = BIT(7),
1651652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1652652f1813SShefali Jain 			.name = "gcc_boot_rom_ahb_clk",
1653652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1654652f1813SShefali Jain 		},
1655652f1813SShefali Jain 	},
1656652f1813SShefali Jain };
1657652f1813SShefali Jain 
1658652f1813SShefali Jain static struct clk_branch gcc_crypto_ahb_clk = {
1659652f1813SShefali Jain 	.halt_reg = 0x16024,
1660652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1661652f1813SShefali Jain 	.clkr = {
1662652f1813SShefali Jain 		.enable_reg = 0x45004,
1663652f1813SShefali Jain 		.enable_mask = BIT(0),
1664652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1665652f1813SShefali Jain 			.name = "gcc_crypto_ahb_clk",
1666652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1667652f1813SShefali Jain 		},
1668652f1813SShefali Jain 	},
1669652f1813SShefali Jain };
1670652f1813SShefali Jain 
1671652f1813SShefali Jain static struct clk_branch gcc_crypto_axi_clk = {
1672652f1813SShefali Jain 	.halt_reg = 0x16020,
1673652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1674652f1813SShefali Jain 	.clkr = {
1675652f1813SShefali Jain 		.enable_reg = 0x45004,
1676652f1813SShefali Jain 		.enable_mask = BIT(1),
1677652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1678652f1813SShefali Jain 			.name = "gcc_crypto_axi_clk",
1679652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1680652f1813SShefali Jain 		},
1681652f1813SShefali Jain 	},
1682652f1813SShefali Jain };
1683652f1813SShefali Jain 
1684652f1813SShefali Jain static struct clk_branch gcc_crypto_clk = {
1685652f1813SShefali Jain 	.halt_reg = 0x1601c,
1686652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1687652f1813SShefali Jain 	.clkr = {
1688652f1813SShefali Jain 		.enable_reg = 0x45004,
1689652f1813SShefali Jain 		.enable_mask = BIT(2),
1690652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1691652f1813SShefali Jain 			.name = "gcc_crypto_clk",
1692652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1693652f1813SShefali Jain 		},
1694652f1813SShefali Jain 	},
1695652f1813SShefali Jain };
1696652f1813SShefali Jain 
1697652f1813SShefali Jain static struct clk_branch gcc_eth_axi_clk = {
1698652f1813SShefali Jain 	.halt_reg = 0x4e010,
1699652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1700652f1813SShefali Jain 	.clkr = {
1701652f1813SShefali Jain 		.enable_reg = 0x4e010,
1702652f1813SShefali Jain 		.enable_mask = BIT(0),
1703652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1704652f1813SShefali Jain 			.name = "gcc_eth_axi_clk",
1705652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1706652f1813SShefali Jain 		},
1707652f1813SShefali Jain 	},
1708652f1813SShefali Jain };
1709652f1813SShefali Jain 
1710652f1813SShefali Jain static struct clk_branch gcc_eth_ptp_clk = {
1711652f1813SShefali Jain 	.halt_reg = 0x4e004,
1712652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1713652f1813SShefali Jain 	.clkr = {
1714652f1813SShefali Jain 		.enable_reg = 0x4e004,
1715652f1813SShefali Jain 		.enable_mask = BIT(0),
1716652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1717652f1813SShefali Jain 			.name = "gcc_eth_ptp_clk",
17189847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
17199847a90cSDmitry Baryshkov 				&emac_ptp_clk_src.clkr.hw,
1720652f1813SShefali Jain 			},
1721652f1813SShefali Jain 			.num_parents = 1,
1722652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1723652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1724652f1813SShefali Jain 		},
1725652f1813SShefali Jain 	},
1726652f1813SShefali Jain };
1727652f1813SShefali Jain 
1728652f1813SShefali Jain static struct clk_branch gcc_eth_rgmii_clk = {
1729652f1813SShefali Jain 	.halt_reg = 0x4e008,
1730652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1731652f1813SShefali Jain 	.clkr = {
1732652f1813SShefali Jain 		.enable_reg = 0x4e008,
1733652f1813SShefali Jain 		.enable_mask = BIT(0),
1734652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1735652f1813SShefali Jain 			.name = "gcc_eth_rgmii_clk",
17369847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
17379847a90cSDmitry Baryshkov 				&emac_clk_src.clkr.hw,
1738652f1813SShefali Jain 			},
1739652f1813SShefali Jain 			.num_parents = 1,
1740652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1741652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1742652f1813SShefali Jain 		},
1743652f1813SShefali Jain 	},
1744652f1813SShefali Jain };
1745652f1813SShefali Jain 
1746652f1813SShefali Jain static struct clk_branch gcc_eth_slave_ahb_clk = {
1747652f1813SShefali Jain 	.halt_reg = 0x4e00c,
1748652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1749652f1813SShefali Jain 	.clkr = {
1750652f1813SShefali Jain 		.enable_reg = 0x4e00c,
1751652f1813SShefali Jain 		.enable_mask = BIT(0),
1752652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1753652f1813SShefali Jain 			.name = "gcc_eth_slave_ahb_clk",
1754652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1755652f1813SShefali Jain 		},
1756652f1813SShefali Jain 	},
1757652f1813SShefali Jain };
1758652f1813SShefali Jain 
1759652f1813SShefali Jain static struct clk_branch gcc_geni_ir_s_clk = {
1760652f1813SShefali Jain 	.halt_reg = 0xf008,
1761652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1762652f1813SShefali Jain 	.clkr = {
1763652f1813SShefali Jain 		.enable_reg = 0xf008,
1764652f1813SShefali Jain 		.enable_mask = BIT(0),
1765652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1766652f1813SShefali Jain 			.name = "gcc_geni_ir_s_clk",
1767652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1768652f1813SShefali Jain 		},
1769652f1813SShefali Jain 	},
1770652f1813SShefali Jain };
1771652f1813SShefali Jain 
1772652f1813SShefali Jain static struct clk_branch gcc_geni_ir_h_clk = {
1773652f1813SShefali Jain 	.halt_reg = 0xf004,
1774652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1775652f1813SShefali Jain 	.clkr = {
1776652f1813SShefali Jain 		.enable_reg = 0xf004,
1777652f1813SShefali Jain 		.enable_mask = BIT(0),
1778652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1779652f1813SShefali Jain 			.name = "gcc_geni_ir_h_clk",
1780652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1781652f1813SShefali Jain 		},
1782652f1813SShefali Jain 	},
1783652f1813SShefali Jain };
1784652f1813SShefali Jain 
1785652f1813SShefali Jain static struct clk_branch gcc_gfx_tcu_clk = {
1786652f1813SShefali Jain 	.halt_reg = 0x12020,
1787652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1788652f1813SShefali Jain 	.clkr = {
1789652f1813SShefali Jain 		.enable_reg = 0x4500C,
1790652f1813SShefali Jain 		.enable_mask = BIT(2),
1791652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1792652f1813SShefali Jain 			.name = "gcc_gfx_tcu_clk",
1793652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1794652f1813SShefali Jain 		},
1795652f1813SShefali Jain 	},
1796652f1813SShefali Jain };
1797652f1813SShefali Jain 
1798652f1813SShefali Jain static struct clk_branch gcc_gfx_tbu_clk = {
1799652f1813SShefali Jain 	.halt_reg = 0x12010,
1800652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1801652f1813SShefali Jain 	.clkr = {
1802652f1813SShefali Jain 		.enable_reg = 0x4500C,
1803652f1813SShefali Jain 		.enable_mask = BIT(3),
1804652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1805652f1813SShefali Jain 			.name = "gcc_gfx_tbu_clk",
1806652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1807652f1813SShefali Jain 		},
1808652f1813SShefali Jain 	},
1809652f1813SShefali Jain };
1810652f1813SShefali Jain 
18118bc7a04bSBjorn Andersson static struct clk_branch gcc_cdsp_tbu_clk = {
18128bc7a04bSBjorn Andersson 	.halt_reg = 0x1203c,
18138bc7a04bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
18148bc7a04bSBjorn Andersson 	.clkr = {
18158bc7a04bSBjorn Andersson 		.enable_reg = 0x13020,
18168bc7a04bSBjorn Andersson 		.enable_mask = BIT(9),
18178bc7a04bSBjorn Andersson 		.hw.init = &(struct clk_init_data) {
18188bc7a04bSBjorn Andersson 			.name = "gcc_cdsp_tbu_clk",
18199847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18209847a90cSDmitry Baryshkov 				&cdsp_bimc_clk_src.clkr.hw
18218bc7a04bSBjorn Andersson 			},
18228bc7a04bSBjorn Andersson 			.num_parents = 1,
18238bc7a04bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18248bc7a04bSBjorn Andersson 			.ops = &clk_branch2_ops,
18258bc7a04bSBjorn Andersson 		},
18268bc7a04bSBjorn Andersson 	},
18278bc7a04bSBjorn Andersson };
18288bc7a04bSBjorn Andersson 
1829652f1813SShefali Jain static struct clk_branch gcc_gp1_clk = {
1830652f1813SShefali Jain 	.halt_reg = 0x8000,
1831652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1832652f1813SShefali Jain 	.clkr = {
1833652f1813SShefali Jain 		.enable_reg = 0x8000,
1834652f1813SShefali Jain 		.enable_mask = BIT(0),
1835652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1836652f1813SShefali Jain 			.name = "gcc_gp1_clk",
18379847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18389847a90cSDmitry Baryshkov 				&gp1_clk_src.clkr.hw,
1839652f1813SShefali Jain 			},
1840652f1813SShefali Jain 			.num_parents = 1,
1841652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1842652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1843652f1813SShefali Jain 		},
1844652f1813SShefali Jain 	},
1845652f1813SShefali Jain };
1846652f1813SShefali Jain 
1847652f1813SShefali Jain static struct clk_branch gcc_gp2_clk = {
1848652f1813SShefali Jain 	.halt_reg = 0x9000,
1849652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1850652f1813SShefali Jain 	.clkr = {
1851652f1813SShefali Jain 		.enable_reg = 0x9000,
1852652f1813SShefali Jain 		.enable_mask = BIT(0),
1853652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1854652f1813SShefali Jain 			.name = "gcc_gp2_clk",
18559847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18569847a90cSDmitry Baryshkov 				&gp2_clk_src.clkr.hw,
1857652f1813SShefali Jain 			},
1858652f1813SShefali Jain 			.num_parents = 1,
1859652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1860652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1861652f1813SShefali Jain 		},
1862652f1813SShefali Jain 	},
1863652f1813SShefali Jain };
1864652f1813SShefali Jain 
1865652f1813SShefali Jain static struct clk_branch gcc_gp3_clk = {
1866652f1813SShefali Jain 	.halt_reg = 0xa000,
1867652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1868652f1813SShefali Jain 	.clkr = {
1869652f1813SShefali Jain 		.enable_reg = 0xa000,
1870652f1813SShefali Jain 		.enable_mask = BIT(0),
1871652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1872652f1813SShefali Jain 			.name = "gcc_gp3_clk",
18739847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18749847a90cSDmitry Baryshkov 				&gp3_clk_src.clkr.hw,
1875652f1813SShefali Jain 			},
1876652f1813SShefali Jain 			.num_parents = 1,
1877652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1878652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1879652f1813SShefali Jain 		},
1880652f1813SShefali Jain 	},
1881652f1813SShefali Jain };
1882652f1813SShefali Jain 
1883652f1813SShefali Jain static struct clk_branch gcc_gtcu_ahb_clk = {
1884652f1813SShefali Jain 	.halt_reg = 0x12044,
1885652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1886652f1813SShefali Jain 	.clkr = {
1887652f1813SShefali Jain 		.enable_reg = 0x4500c,
1888652f1813SShefali Jain 		.enable_mask = BIT(13),
1889652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1890652f1813SShefali Jain 			.name = "gcc_gtcu_ahb_clk",
1891652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1892652f1813SShefali Jain 		},
1893652f1813SShefali Jain 	},
1894652f1813SShefali Jain };
1895652f1813SShefali Jain 
1896652f1813SShefali Jain static struct clk_branch gcc_mdp_tbu_clk = {
1897652f1813SShefali Jain 	.halt_reg = 0x1201c,
1898652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
1899652f1813SShefali Jain 	.clkr = {
1900652f1813SShefali Jain 		.enable_reg = 0x4500c,
1901652f1813SShefali Jain 		.enable_mask = BIT(4),
1902652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1903652f1813SShefali Jain 			.name = "gcc_mdp_tbu_clk",
1904652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1905652f1813SShefali Jain 		},
1906652f1813SShefali Jain 	},
1907652f1813SShefali Jain };
1908652f1813SShefali Jain 
1909652f1813SShefali Jain static struct clk_branch gcc_mdss_ahb_clk = {
1910652f1813SShefali Jain 	.halt_reg = 0x4d07c,
1911652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1912652f1813SShefali Jain 	.clkr = {
1913652f1813SShefali Jain 		.enable_reg = 0x4d07c,
1914652f1813SShefali Jain 		.enable_mask = BIT(0),
1915652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1916652f1813SShefali Jain 			.name = "gcc_mdss_ahb_clk",
1917652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1918652f1813SShefali Jain 		},
1919652f1813SShefali Jain 	},
1920652f1813SShefali Jain };
1921652f1813SShefali Jain 
1922652f1813SShefali Jain static struct clk_branch gcc_mdss_axi_clk = {
1923652f1813SShefali Jain 	.halt_reg = 0x4d080,
1924652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1925652f1813SShefali Jain 	.clkr = {
1926652f1813SShefali Jain 		.enable_reg = 0x4d080,
1927652f1813SShefali Jain 		.enable_mask = BIT(0),
1928652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1929652f1813SShefali Jain 			.name = "gcc_mdss_axi_clk",
1930652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1931652f1813SShefali Jain 		},
1932652f1813SShefali Jain 	},
1933652f1813SShefali Jain };
1934652f1813SShefali Jain 
1935652f1813SShefali Jain static struct clk_branch gcc_mdss_byte0_clk = {
1936652f1813SShefali Jain 	.halt_reg = 0x4d094,
1937652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1938652f1813SShefali Jain 	.clkr = {
1939652f1813SShefali Jain 		.enable_reg = 0x4d094,
1940652f1813SShefali Jain 		.enable_mask = BIT(0),
1941652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1942652f1813SShefali Jain 			.name = "gcc_mdss_byte0_clk",
19439847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19449847a90cSDmitry Baryshkov 				&byte0_clk_src.clkr.hw,
1945652f1813SShefali Jain 			},
1946652f1813SShefali Jain 			.num_parents = 1,
1947652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1948652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1949652f1813SShefali Jain 		},
1950652f1813SShefali Jain 	},
1951652f1813SShefali Jain };
1952652f1813SShefali Jain 
1953652f1813SShefali Jain static struct clk_branch gcc_mdss_esc0_clk = {
1954652f1813SShefali Jain 	.halt_reg = 0x4d098,
1955652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1956652f1813SShefali Jain 	.clkr = {
1957652f1813SShefali Jain 		.enable_reg = 0x4d098,
1958652f1813SShefali Jain 		.enable_mask = BIT(0),
1959652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1960652f1813SShefali Jain 			.name = "gcc_mdss_esc0_clk",
19619847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19629847a90cSDmitry Baryshkov 				&esc0_clk_src.clkr.hw,
1963652f1813SShefali Jain 			},
1964652f1813SShefali Jain 			.num_parents = 1,
1965652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1966652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1967652f1813SShefali Jain 		},
1968652f1813SShefali Jain 	},
1969652f1813SShefali Jain };
1970652f1813SShefali Jain 
1971652f1813SShefali Jain static struct clk_branch gcc_mdss_hdmi_app_clk = {
1972652f1813SShefali Jain 	.halt_reg = 0x4d0d8,
1973652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1974652f1813SShefali Jain 	.clkr = {
1975652f1813SShefali Jain 		.enable_reg = 0x4d0d8,
1976652f1813SShefali Jain 		.enable_mask = BIT(0),
1977652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1978652f1813SShefali Jain 			.name = "gcc_mdss_hdmi_app_clk",
19799847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19809847a90cSDmitry Baryshkov 				&hdmi_app_clk_src.clkr.hw,
1981652f1813SShefali Jain 			},
1982652f1813SShefali Jain 			.num_parents = 1,
1983652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
1984652f1813SShefali Jain 			.ops = &clk_branch2_ops,
1985652f1813SShefali Jain 		},
1986652f1813SShefali Jain 	},
1987652f1813SShefali Jain };
1988652f1813SShefali Jain 
1989652f1813SShefali Jain static struct clk_branch gcc_mdss_hdmi_pclk_clk = {
1990652f1813SShefali Jain 	.halt_reg = 0x4d0d4,
1991652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
1992652f1813SShefali Jain 	.clkr = {
1993652f1813SShefali Jain 		.enable_reg = 0x4d0d4,
1994652f1813SShefali Jain 		.enable_mask = BIT(0),
1995652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
1996652f1813SShefali Jain 			.name = "gcc_mdss_hdmi_pclk_clk",
19979847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19989847a90cSDmitry Baryshkov 				&hdmi_pclk_clk_src.clkr.hw,
1999652f1813SShefali Jain 			},
2000652f1813SShefali Jain 			.num_parents = 1,
2001652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2002652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2003652f1813SShefali Jain 		},
2004652f1813SShefali Jain 	},
2005652f1813SShefali Jain };
2006652f1813SShefali Jain 
2007652f1813SShefali Jain static struct clk_branch gcc_mdss_mdp_clk = {
2008652f1813SShefali Jain 	.halt_reg = 0x4d088,
2009652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2010652f1813SShefali Jain 	.clkr = {
2011652f1813SShefali Jain 		.enable_reg = 0x4d088,
2012652f1813SShefali Jain 		.enable_mask = BIT(0),
2013652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2014652f1813SShefali Jain 			.name = "gcc_mdss_mdp_clk",
20159847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20169847a90cSDmitry Baryshkov 				&mdp_clk_src.clkr.hw,
2017652f1813SShefali Jain 			},
2018652f1813SShefali Jain 			.num_parents = 1,
2019652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2020652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2021652f1813SShefali Jain 		},
2022652f1813SShefali Jain 	},
2023652f1813SShefali Jain };
2024652f1813SShefali Jain 
2025652f1813SShefali Jain static struct clk_branch gcc_mdss_pclk0_clk = {
2026652f1813SShefali Jain 	.halt_reg = 0x4d084,
2027652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2028652f1813SShefali Jain 	.clkr = {
2029652f1813SShefali Jain 		.enable_reg = 0x4d084,
2030652f1813SShefali Jain 		.enable_mask = BIT(0),
2031652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2032652f1813SShefali Jain 			.name = "gcc_mdss_pclk0_clk",
20339847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20349847a90cSDmitry Baryshkov 				&pclk0_clk_src.clkr.hw,
2035652f1813SShefali Jain 			},
2036652f1813SShefali Jain 			.num_parents = 1,
2037652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2038652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2039652f1813SShefali Jain 		},
2040652f1813SShefali Jain 	},
2041652f1813SShefali Jain };
2042652f1813SShefali Jain 
2043652f1813SShefali Jain static struct clk_branch gcc_mdss_vsync_clk = {
2044652f1813SShefali Jain 	.halt_reg = 0x4d090,
2045652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2046652f1813SShefali Jain 	.clkr = {
2047652f1813SShefali Jain 		.enable_reg = 0x4d090,
2048652f1813SShefali Jain 		.enable_mask = BIT(0),
2049652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2050652f1813SShefali Jain 			.name = "gcc_mdss_vsync_clk",
20519847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20529847a90cSDmitry Baryshkov 				&vsync_clk_src.clkr.hw,
2053652f1813SShefali Jain 			},
2054652f1813SShefali Jain 			.num_parents = 1,
2055652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2056652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2057652f1813SShefali Jain 		},
2058652f1813SShefali Jain 	},
2059652f1813SShefali Jain };
2060652f1813SShefali Jain 
2061652f1813SShefali Jain static struct clk_branch gcc_oxili_ahb_clk = {
2062652f1813SShefali Jain 	.halt_reg = 0x59028,
2063652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2064652f1813SShefali Jain 	.clkr = {
2065652f1813SShefali Jain 		.enable_reg = 0x59028,
2066652f1813SShefali Jain 		.enable_mask = BIT(0),
2067652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2068652f1813SShefali Jain 			.name = "gcc_oxili_ahb_clk",
2069652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2070652f1813SShefali Jain 		},
2071652f1813SShefali Jain 	},
2072652f1813SShefali Jain };
2073652f1813SShefali Jain 
2074652f1813SShefali Jain static struct clk_branch gcc_oxili_gfx3d_clk = {
2075652f1813SShefali Jain 	.halt_reg = 0x59020,
2076652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2077652f1813SShefali Jain 	.clkr = {
2078652f1813SShefali Jain 		.enable_reg = 0x59020,
2079652f1813SShefali Jain 		.enable_mask = BIT(0),
2080652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2081652f1813SShefali Jain 			.name = "gcc_oxili_gfx3d_clk",
20829847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20839847a90cSDmitry Baryshkov 				&gfx3d_clk_src.clkr.hw,
2084652f1813SShefali Jain 			},
2085652f1813SShefali Jain 			.num_parents = 1,
2086652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2087652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2088652f1813SShefali Jain 		},
2089652f1813SShefali Jain 	},
2090652f1813SShefali Jain };
2091652f1813SShefali Jain 
2092652f1813SShefali Jain static struct clk_branch gcc_pcie_0_aux_clk = {
2093652f1813SShefali Jain 	.halt_reg = 0x3e014,
2094652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2095652f1813SShefali Jain 	.clkr = {
2096652f1813SShefali Jain 		.enable_reg = 0x45004,
2097652f1813SShefali Jain 		.enable_mask = BIT(27),
2098652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2099652f1813SShefali Jain 			.name = "gcc_pcie_0_aux_clk",
21009847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21019847a90cSDmitry Baryshkov 				&pcie_0_aux_clk_src.clkr.hw,
2102652f1813SShefali Jain 			},
2103652f1813SShefali Jain 			.num_parents = 1,
2104652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2105652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2106652f1813SShefali Jain 		},
2107652f1813SShefali Jain 	},
2108652f1813SShefali Jain };
2109652f1813SShefali Jain 
2110652f1813SShefali Jain static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2111652f1813SShefali Jain 	.halt_reg = 0x3e008,
2112652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2113652f1813SShefali Jain 	.clkr = {
2114652f1813SShefali Jain 		.enable_reg = 0x45004,
2115652f1813SShefali Jain 		.enable_mask = BIT(11),
2116652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2117652f1813SShefali Jain 			.name = "gcc_pcie_0_cfg_ahb_clk",
2118652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2119652f1813SShefali Jain 		},
2120652f1813SShefali Jain 	},
2121652f1813SShefali Jain };
2122652f1813SShefali Jain 
2123652f1813SShefali Jain static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2124652f1813SShefali Jain 	.halt_reg = 0x3e018,
2125652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2126652f1813SShefali Jain 	.clkr = {
2127652f1813SShefali Jain 		.enable_reg = 0x45004,
2128652f1813SShefali Jain 		.enable_mask = BIT(18),
2129652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2130652f1813SShefali Jain 			.name = "gcc_pcie_0_mstr_axi_clk",
2131652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2132652f1813SShefali Jain 		},
2133652f1813SShefali Jain 	},
2134652f1813SShefali Jain };
2135652f1813SShefali Jain 
2136652f1813SShefali Jain static struct clk_branch gcc_pcie_0_pipe_clk = {
2137652f1813SShefali Jain 	.halt_reg = 0x3e00c,
2138652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2139652f1813SShefali Jain 	.clkr = {
2140652f1813SShefali Jain 		.enable_reg = 0x45004,
2141652f1813SShefali Jain 		.enable_mask = BIT(28),
2142652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2143652f1813SShefali Jain 			.name = "gcc_pcie_0_pipe_clk",
21449847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21459847a90cSDmitry Baryshkov 				&pcie_0_pipe_clk_src.clkr.hw,
2146652f1813SShefali Jain 			},
2147652f1813SShefali Jain 			.num_parents = 1,
2148652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2149652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2150652f1813SShefali Jain 		},
2151652f1813SShefali Jain 	},
2152652f1813SShefali Jain };
2153652f1813SShefali Jain 
2154652f1813SShefali Jain static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2155652f1813SShefali Jain 	.halt_reg = 0x3e010,
2156652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2157652f1813SShefali Jain 	.clkr = {
2158652f1813SShefali Jain 		.enable_reg = 0x45004,
2159652f1813SShefali Jain 		.enable_mask = BIT(22),
2160652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2161652f1813SShefali Jain 			.name = "gcc_pcie_0_slv_axi_clk",
2162652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2163652f1813SShefali Jain 		},
2164652f1813SShefali Jain 	},
2165652f1813SShefali Jain };
2166652f1813SShefali Jain 
2167652f1813SShefali Jain static struct clk_branch gcc_pcnoc_usb2_clk = {
2168652f1813SShefali Jain 	.halt_reg = 0x27008,
2169652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2170652f1813SShefali Jain 	.clkr = {
2171652f1813SShefali Jain 		.enable_reg = 0x27008,
2172652f1813SShefali Jain 		.enable_mask = BIT(0),
2173652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2174652f1813SShefali Jain 			.name = "gcc_pcnoc_usb2_clk",
2175652f1813SShefali Jain 			.flags = CLK_IS_CRITICAL,
2176652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2177652f1813SShefali Jain 		},
2178652f1813SShefali Jain 	},
2179652f1813SShefali Jain };
2180652f1813SShefali Jain 
2181652f1813SShefali Jain static struct clk_branch gcc_pcnoc_usb3_clk = {
2182652f1813SShefali Jain 	.halt_reg = 0x2700c,
2183652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2184652f1813SShefali Jain 	.clkr = {
2185652f1813SShefali Jain 		.enable_reg = 0x2700c,
2186652f1813SShefali Jain 		.enable_mask = BIT(0),
2187652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2188652f1813SShefali Jain 			.name = "gcc_pcnoc_usb3_clk",
2189652f1813SShefali Jain 			.flags = CLK_IS_CRITICAL,
2190652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2191652f1813SShefali Jain 		},
2192652f1813SShefali Jain 	},
2193652f1813SShefali Jain };
2194652f1813SShefali Jain 
2195652f1813SShefali Jain static struct clk_branch gcc_pdm2_clk = {
2196652f1813SShefali Jain 	.halt_reg = 0x4400c,
2197652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2198652f1813SShefali Jain 	.clkr = {
2199652f1813SShefali Jain 		.enable_reg = 0x4400c,
2200652f1813SShefali Jain 		.enable_mask = BIT(0),
2201652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2202652f1813SShefali Jain 			.name = "gcc_pdm2_clk",
22039847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22049847a90cSDmitry Baryshkov 				&pdm2_clk_src.clkr.hw,
2205652f1813SShefali Jain 			},
2206652f1813SShefali Jain 			.num_parents = 1,
2207652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2208652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2209652f1813SShefali Jain 		},
2210652f1813SShefali Jain 	},
2211652f1813SShefali Jain };
2212652f1813SShefali Jain 
2213652f1813SShefali Jain static struct clk_branch gcc_pdm_ahb_clk = {
2214652f1813SShefali Jain 	.halt_reg = 0x44004,
2215652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2216652f1813SShefali Jain 	.clkr = {
2217652f1813SShefali Jain 		.enable_reg = 0x44004,
2218652f1813SShefali Jain 		.enable_mask = BIT(0),
2219652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2220652f1813SShefali Jain 			.name = "gcc_pdm_ahb_clk",
2221652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2222652f1813SShefali Jain 		},
2223652f1813SShefali Jain 	},
2224652f1813SShefali Jain };
2225652f1813SShefali Jain 
2226652f1813SShefali Jain static struct clk_branch gcc_prng_ahb_clk = {
2227652f1813SShefali Jain 	.halt_reg = 0x13004,
2228652f1813SShefali Jain 	.halt_check = BRANCH_HALT_VOTED,
2229652f1813SShefali Jain 	.clkr = {
2230652f1813SShefali Jain 		.enable_reg = 0x45004,
2231652f1813SShefali Jain 		.enable_mask = BIT(8),
2232652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2233652f1813SShefali Jain 			.name = "gcc_prng_ahb_clk",
2234652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2235652f1813SShefali Jain 		},
2236652f1813SShefali Jain 	},
2237652f1813SShefali Jain };
2238652f1813SShefali Jain 
2239652f1813SShefali Jain /* PWM clks do not have XO as parent as src clk is a balance root */
2240652f1813SShefali Jain static struct clk_branch gcc_pwm0_xo512_clk = {
2241652f1813SShefali Jain 	.halt_reg = 0x44018,
2242652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2243652f1813SShefali Jain 	.clkr = {
2244652f1813SShefali Jain 		.enable_reg = 0x44018,
2245652f1813SShefali Jain 		.enable_mask = BIT(0),
2246652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2247652f1813SShefali Jain 			.name = "gcc_pwm0_xo512_clk",
2248652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2249652f1813SShefali Jain 		},
2250652f1813SShefali Jain 	},
2251652f1813SShefali Jain };
2252652f1813SShefali Jain 
2253652f1813SShefali Jain static struct clk_branch gcc_pwm1_xo512_clk = {
2254652f1813SShefali Jain 	.halt_reg = 0x49004,
2255652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2256652f1813SShefali Jain 	.clkr = {
2257652f1813SShefali Jain 		.enable_reg = 0x49004,
2258652f1813SShefali Jain 		.enable_mask = BIT(0),
2259652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2260652f1813SShefali Jain 			.name = "gcc_pwm1_xo512_clk",
2261652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2262652f1813SShefali Jain 		},
2263652f1813SShefali Jain 	},
2264652f1813SShefali Jain };
2265652f1813SShefali Jain 
2266652f1813SShefali Jain static struct clk_branch gcc_pwm2_xo512_clk = {
2267652f1813SShefali Jain 	.halt_reg = 0x4a004,
2268652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2269652f1813SShefali Jain 	.clkr = {
2270652f1813SShefali Jain 		.enable_reg = 0x4a004,
2271652f1813SShefali Jain 		.enable_mask = BIT(0),
2272652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2273652f1813SShefali Jain 			.name = "gcc_pwm2_xo512_clk",
2274652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2275652f1813SShefali Jain 		},
2276652f1813SShefali Jain 	},
2277652f1813SShefali Jain };
2278652f1813SShefali Jain 
2279652f1813SShefali Jain static struct clk_branch gcc_qdss_dap_clk = {
2280652f1813SShefali Jain 	.halt_reg = 0x29084,
2281652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
2282652f1813SShefali Jain 	.clkr = {
2283652f1813SShefali Jain 		.enable_reg = 0x45004,
2284652f1813SShefali Jain 		.enable_mask = BIT(21),
2285652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2286652f1813SShefali Jain 			.name = "gcc_qdss_dap_clk",
2287652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2288652f1813SShefali Jain 		},
2289652f1813SShefali Jain 	},
2290652f1813SShefali Jain };
2291652f1813SShefali Jain 
2292652f1813SShefali Jain static struct clk_branch gcc_sdcc1_ahb_clk = {
2293652f1813SShefali Jain 	.halt_reg = 0x4201c,
2294652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2295652f1813SShefali Jain 	.clkr = {
2296652f1813SShefali Jain 		.enable_reg = 0x4201c,
2297652f1813SShefali Jain 		.enable_mask = BIT(0),
2298652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2299652f1813SShefali Jain 			.name = "gcc_sdcc1_ahb_clk",
2300652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2301652f1813SShefali Jain 		},
2302652f1813SShefali Jain 	},
2303652f1813SShefali Jain };
2304652f1813SShefali Jain 
2305652f1813SShefali Jain static struct clk_branch gcc_sdcc1_apps_clk = {
2306652f1813SShefali Jain 	.halt_reg = 0x42018,
2307652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2308652f1813SShefali Jain 	.clkr = {
2309652f1813SShefali Jain 		.enable_reg = 0x42018,
2310652f1813SShefali Jain 		.enable_mask = BIT(0),
2311652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2312652f1813SShefali Jain 			.name = "gcc_sdcc1_apps_clk",
23139847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
23149847a90cSDmitry Baryshkov 				&sdcc1_apps_clk_src.clkr.hw,
2315652f1813SShefali Jain 			},
2316652f1813SShefali Jain 			.num_parents = 1,
2317652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2318652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2319652f1813SShefali Jain 		},
2320652f1813SShefali Jain 	},
2321652f1813SShefali Jain };
2322652f1813SShefali Jain 
2323652f1813SShefali Jain static struct clk_branch gcc_sdcc1_ice_core_clk = {
2324652f1813SShefali Jain 	.halt_reg = 0x5d014,
2325652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2326652f1813SShefali Jain 	.clkr = {
2327652f1813SShefali Jain 		.enable_reg = 0x5d014,
2328652f1813SShefali Jain 		.enable_mask = BIT(0),
2329652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2330652f1813SShefali Jain 			.name = "gcc_sdcc1_ice_core_clk",
23319847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
23329847a90cSDmitry Baryshkov 				&sdcc1_ice_core_clk_src.clkr.hw,
2333652f1813SShefali Jain 			},
2334652f1813SShefali Jain 			.num_parents = 1,
2335652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2336652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2337652f1813SShefali Jain 		},
2338652f1813SShefali Jain 	},
2339652f1813SShefali Jain };
2340652f1813SShefali Jain 
23418bc7a04bSBjorn Andersson static struct clk_branch gcc_cdsp_cfg_ahb_clk = {
23428bc7a04bSBjorn Andersson 	.halt_reg = 0x5e004,
23438bc7a04bSBjorn Andersson 	.halt_check = BRANCH_HALT,
23448bc7a04bSBjorn Andersson 	.clkr = {
23458bc7a04bSBjorn Andersson 		.enable_reg = 0x5e004,
23468bc7a04bSBjorn Andersson 		.enable_mask = BIT(0),
23478bc7a04bSBjorn Andersson 		.hw.init = &(struct clk_init_data) {
23488bc7a04bSBjorn Andersson 			.name = "gcc_cdsp_cfg_ahb_cbcr",
23498bc7a04bSBjorn Andersson 			.ops = &clk_branch2_ops,
23508bc7a04bSBjorn Andersson 		},
23518bc7a04bSBjorn Andersson 	},
23528bc7a04bSBjorn Andersson };
23538bc7a04bSBjorn Andersson 
2354652f1813SShefali Jain static struct clk_branch gcc_sdcc2_ahb_clk = {
2355652f1813SShefali Jain 	.halt_reg = 0x4301c,
2356652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2357652f1813SShefali Jain 	.clkr = {
2358652f1813SShefali Jain 		.enable_reg = 0x4301c,
2359652f1813SShefali Jain 		.enable_mask = BIT(0),
2360652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2361652f1813SShefali Jain 			.name = "gcc_sdcc2_ahb_clk",
2362652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2363652f1813SShefali Jain 		},
2364652f1813SShefali Jain 	},
2365652f1813SShefali Jain };
2366652f1813SShefali Jain 
2367652f1813SShefali Jain static struct clk_branch gcc_sdcc2_apps_clk = {
2368652f1813SShefali Jain 	.halt_reg = 0x43018,
2369652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2370652f1813SShefali Jain 	.clkr = {
2371652f1813SShefali Jain 		.enable_reg = 0x43018,
2372652f1813SShefali Jain 		.enable_mask = BIT(0),
2373652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2374652f1813SShefali Jain 			.name = "gcc_sdcc2_apps_clk",
23759847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
23769847a90cSDmitry Baryshkov 				&sdcc2_apps_clk_src.clkr.hw,
2377652f1813SShefali Jain 			},
2378652f1813SShefali Jain 			.num_parents = 1,
2379652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2380652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2381652f1813SShefali Jain 		},
2382652f1813SShefali Jain 	},
2383652f1813SShefali Jain };
2384652f1813SShefali Jain 
2385652f1813SShefali Jain static struct clk_branch gcc_smmu_cfg_clk = {
2386652f1813SShefali Jain 	.halt_reg = 0x12038,
2387652f1813SShefali Jain 	.halt_check = BRANCH_VOTED,
2388652f1813SShefali Jain 	.clkr = {
2389652f1813SShefali Jain 		.enable_reg = 0x3600C,
2390652f1813SShefali Jain 		.enable_mask = BIT(12),
2391652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2392652f1813SShefali Jain 			.name = "gcc_smmu_cfg_clk",
2393652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2394652f1813SShefali Jain 		},
2395652f1813SShefali Jain 	},
2396652f1813SShefali Jain };
2397652f1813SShefali Jain 
2398652f1813SShefali Jain static struct clk_branch gcc_sys_noc_usb3_clk = {
2399652f1813SShefali Jain 	.halt_reg = 0x26014,
2400652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2401652f1813SShefali Jain 	.clkr = {
2402652f1813SShefali Jain 		.enable_reg = 0x26014,
2403652f1813SShefali Jain 		.enable_mask = BIT(0),
2404652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2405652f1813SShefali Jain 			.name = "gcc_sys_noc_usb3_clk",
24069847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24079847a90cSDmitry Baryshkov 				&usb30_master_clk_src.clkr.hw,
2408652f1813SShefali Jain 			},
2409652f1813SShefali Jain 			.num_parents = 1,
2410652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2411652f1813SShefali Jain 		},
2412652f1813SShefali Jain 	},
2413652f1813SShefali Jain };
2414652f1813SShefali Jain 
2415652f1813SShefali Jain static struct clk_branch gcc_usb_hs_inactivity_timers_clk = {
2416652f1813SShefali Jain 	.halt_reg = 0x4100C,
2417652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2418652f1813SShefali Jain 	.clkr = {
2419652f1813SShefali Jain 		.enable_reg = 0x4100C,
2420652f1813SShefali Jain 		.enable_mask = BIT(0),
2421652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2422652f1813SShefali Jain 			.name = "gcc_usb_hs_inactivity_timers_clk",
2423652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2424652f1813SShefali Jain 		},
2425652f1813SShefali Jain 	},
2426652f1813SShefali Jain };
2427652f1813SShefali Jain 
2428652f1813SShefali Jain static struct clk_branch gcc_usb20_mock_utmi_clk = {
2429652f1813SShefali Jain 	.halt_reg = 0x41044,
2430652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2431652f1813SShefali Jain 	.clkr = {
2432652f1813SShefali Jain 		.enable_reg = 0x41044,
2433652f1813SShefali Jain 		.enable_mask = BIT(0),
2434652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2435652f1813SShefali Jain 			.name = "gcc_usb20_mock_utmi_clk",
24369847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24379847a90cSDmitry Baryshkov 				&usb20_mock_utmi_clk_src.clkr.hw,
2438652f1813SShefali Jain 			},
2439652f1813SShefali Jain 			.num_parents = 1,
2440652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2441652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2442652f1813SShefali Jain 		},
2443652f1813SShefali Jain 	},
2444652f1813SShefali Jain };
2445652f1813SShefali Jain 
2446652f1813SShefali Jain static struct clk_branch gcc_usb2a_phy_sleep_clk = {
2447652f1813SShefali Jain 	.halt_reg = 0x4102c,
2448652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2449652f1813SShefali Jain 	.clkr = {
2450652f1813SShefali Jain 		.enable_reg = 0x4102c,
2451652f1813SShefali Jain 		.enable_mask = BIT(0),
2452652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2453652f1813SShefali Jain 			.name = "gcc_usb2a_phy_sleep_clk",
2454652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2455652f1813SShefali Jain 		},
2456652f1813SShefali Jain 	},
2457652f1813SShefali Jain };
2458652f1813SShefali Jain 
2459652f1813SShefali Jain static struct clk_branch gcc_usb30_master_clk = {
2460652f1813SShefali Jain 	.halt_reg = 0x3900c,
2461652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2462652f1813SShefali Jain 	.clkr = {
2463652f1813SShefali Jain 		.enable_reg = 0x3900c,
2464652f1813SShefali Jain 		.enable_mask = BIT(0),
2465652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2466652f1813SShefali Jain 			.name = "gcc_usb30_master_clk",
24679847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24689847a90cSDmitry Baryshkov 				&usb30_master_clk_src.clkr.hw,
2469652f1813SShefali Jain 			},
2470652f1813SShefali Jain 			.num_parents = 1,
2471652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2472652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2473652f1813SShefali Jain 		},
2474652f1813SShefali Jain 	},
2475652f1813SShefali Jain };
2476652f1813SShefali Jain 
2477652f1813SShefali Jain static struct clk_branch gcc_usb30_mock_utmi_clk = {
2478652f1813SShefali Jain 	.halt_reg = 0x39014,
2479652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2480652f1813SShefali Jain 	.clkr = {
2481652f1813SShefali Jain 		.enable_reg = 0x39014,
2482652f1813SShefali Jain 		.enable_mask = BIT(0),
2483652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2484652f1813SShefali Jain 			.name = "gcc_usb30_mock_utmi_clk",
24859847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24869847a90cSDmitry Baryshkov 				&usb30_mock_utmi_clk_src.clkr.hw,
2487652f1813SShefali Jain 			},
2488652f1813SShefali Jain 			.num_parents = 1,
2489652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2490652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2491652f1813SShefali Jain 		},
2492652f1813SShefali Jain 	},
2493652f1813SShefali Jain };
2494652f1813SShefali Jain 
2495652f1813SShefali Jain static struct clk_branch gcc_usb30_sleep_clk = {
2496652f1813SShefali Jain 	.halt_reg = 0x39010,
2497652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2498652f1813SShefali Jain 	.clkr = {
2499652f1813SShefali Jain 		.enable_reg = 0x39010,
2500652f1813SShefali Jain 		.enable_mask = BIT(0),
2501652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2502652f1813SShefali Jain 			.name = "gcc_usb30_sleep_clk",
2503652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2504652f1813SShefali Jain 		},
2505652f1813SShefali Jain 	},
2506652f1813SShefali Jain };
2507652f1813SShefali Jain 
2508652f1813SShefali Jain static struct clk_branch gcc_usb3_phy_aux_clk = {
2509652f1813SShefali Jain 	.halt_reg = 0x39044,
2510652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2511652f1813SShefali Jain 	.clkr = {
2512652f1813SShefali Jain 		.enable_reg = 0x39044,
2513652f1813SShefali Jain 		.enable_mask = BIT(0),
2514652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2515652f1813SShefali Jain 			.name = "gcc_usb3_phy_aux_clk",
25169847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
25179847a90cSDmitry Baryshkov 				&usb3_phy_aux_clk_src.clkr.hw,
2518652f1813SShefali Jain 			},
2519652f1813SShefali Jain 			.num_parents = 1,
2520652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2521652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2522652f1813SShefali Jain 		},
2523652f1813SShefali Jain 	},
2524652f1813SShefali Jain };
2525652f1813SShefali Jain 
2526652f1813SShefali Jain static struct clk_branch gcc_usb3_phy_pipe_clk = {
2527652f1813SShefali Jain 	.halt_check = BRANCH_HALT_SKIP,
2528652f1813SShefali Jain 	.clkr = {
2529652f1813SShefali Jain 		.enable_reg = 0x39018,
2530652f1813SShefali Jain 		.enable_mask = BIT(0),
2531652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2532652f1813SShefali Jain 			.name = "gcc_usb3_phy_pipe_clk",
2533652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2534652f1813SShefali Jain 		},
2535652f1813SShefali Jain 	},
2536652f1813SShefali Jain };
2537652f1813SShefali Jain 
2538652f1813SShefali Jain static struct clk_branch gcc_usb_hs_phy_cfg_ahb_clk = {
2539652f1813SShefali Jain 	.halt_reg = 0x41030,
2540652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2541652f1813SShefali Jain 	.clkr = {
2542652f1813SShefali Jain 		.enable_reg = 0x41030,
2543652f1813SShefali Jain 		.enable_mask = BIT(0),
2544652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2545652f1813SShefali Jain 			.name = "gcc_usb_hs_phy_cfg_ahb_clk",
2546652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2547652f1813SShefali Jain 		},
2548652f1813SShefali Jain 	},
2549652f1813SShefali Jain };
2550652f1813SShefali Jain 
2551652f1813SShefali Jain static struct clk_branch gcc_usb_hs_system_clk = {
2552652f1813SShefali Jain 	.halt_reg = 0x41004,
2553652f1813SShefali Jain 	.halt_check = BRANCH_HALT,
2554652f1813SShefali Jain 	.clkr = {
2555652f1813SShefali Jain 		.enable_reg = 0x41004,
2556652f1813SShefali Jain 		.enable_mask = BIT(0),
2557652f1813SShefali Jain 		.hw.init = &(struct clk_init_data){
2558652f1813SShefali Jain 			.name = "gcc_usb_hs_system_clk",
25599847a90cSDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
25609847a90cSDmitry Baryshkov 				&usb_hs_system_clk_src.clkr.hw,
2561652f1813SShefali Jain 			},
2562652f1813SShefali Jain 			.num_parents = 1,
2563652f1813SShefali Jain 			.flags = CLK_SET_RATE_PARENT,
2564652f1813SShefali Jain 			.ops = &clk_branch2_ops,
2565652f1813SShefali Jain 		},
2566652f1813SShefali Jain 	},
2567652f1813SShefali Jain };
2568652f1813SShefali Jain 
25697d0c76bdSGovind Singh static struct clk_branch gcc_wdsp_q6ss_ahbs_clk = {
25707d0c76bdSGovind Singh 	.halt_reg = 0x1e004,
25717d0c76bdSGovind Singh 	.halt_check = BRANCH_HALT,
25727d0c76bdSGovind Singh 	.clkr = {
25737d0c76bdSGovind Singh 		.enable_reg = 0x1e004,
25747d0c76bdSGovind Singh 		.enable_mask = BIT(0),
25757d0c76bdSGovind Singh 		.hw.init = &(struct clk_init_data){
25767d0c76bdSGovind Singh 			.name = "gcc_wdsp_q6ss_ahbs_clk",
25777d0c76bdSGovind Singh 			.ops = &clk_branch2_ops,
25787d0c76bdSGovind Singh 		},
25797d0c76bdSGovind Singh 	},
25807d0c76bdSGovind Singh };
25817d0c76bdSGovind Singh 
25827d0c76bdSGovind Singh static struct clk_branch gcc_wdsp_q6ss_axim_clk = {
25837d0c76bdSGovind Singh 	.halt_reg = 0x1e008,
25847d0c76bdSGovind Singh 	.halt_check = BRANCH_HALT,
25857d0c76bdSGovind Singh 	.clkr = {
25867d0c76bdSGovind Singh 		.enable_reg = 0x1e008,
25877d0c76bdSGovind Singh 		.enable_mask = BIT(0),
25887d0c76bdSGovind Singh 		.hw.init = &(struct clk_init_data){
25897d0c76bdSGovind Singh 			.name = "gcc_wdsp_q6ss_axim_clk",
25907d0c76bdSGovind Singh 			.ops = &clk_branch2_ops,
25917d0c76bdSGovind Singh 		},
25927d0c76bdSGovind Singh 	},
25937d0c76bdSGovind Singh };
25947d0c76bdSGovind Singh 
2595230d4d81SDmitry Baryshkov static struct gdsc mdss_gdsc = {
2596230d4d81SDmitry Baryshkov 	.gdscr = 0x4d078,
2597230d4d81SDmitry Baryshkov 	.pd = {
2598230d4d81SDmitry Baryshkov 		.name = "mdss",
2599230d4d81SDmitry Baryshkov 	},
2600230d4d81SDmitry Baryshkov 	.pwrsts = PWRSTS_OFF_ON,
2601230d4d81SDmitry Baryshkov };
2602230d4d81SDmitry Baryshkov 
2603230d4d81SDmitry Baryshkov static struct gdsc oxili_gdsc = {
2604230d4d81SDmitry Baryshkov 	.gdscr = 0x5901c,
2605230d4d81SDmitry Baryshkov 	.pd = {
2606230d4d81SDmitry Baryshkov 		.name = "oxili",
2607230d4d81SDmitry Baryshkov 	},
2608230d4d81SDmitry Baryshkov 	.pwrsts = PWRSTS_OFF_ON,
2609230d4d81SDmitry Baryshkov };
2610230d4d81SDmitry Baryshkov 
2611652f1813SShefali Jain static struct clk_hw *gcc_qcs404_hws[] = {
2612652f1813SShefali Jain 	&cxo.hw,
2613652f1813SShefali Jain };
2614652f1813SShefali Jain 
2615652f1813SShefali Jain static struct clk_regmap *gcc_qcs404_clocks[] = {
2616652f1813SShefali Jain 	[GCC_APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
2617652f1813SShefali Jain 	[GCC_BLSP1_QUP0_I2C_APPS_CLK_SRC] = &blsp1_qup0_i2c_apps_clk_src.clkr,
2618652f1813SShefali Jain 	[GCC_BLSP1_QUP0_SPI_APPS_CLK_SRC] = &blsp1_qup0_spi_apps_clk_src.clkr,
2619652f1813SShefali Jain 	[GCC_BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2620652f1813SShefali Jain 	[GCC_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2621652f1813SShefali Jain 	[GCC_BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2622652f1813SShefali Jain 	[GCC_BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2623652f1813SShefali Jain 	[GCC_BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2624652f1813SShefali Jain 	[GCC_BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2625652f1813SShefali Jain 	[GCC_BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2626652f1813SShefali Jain 	[GCC_BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2627652f1813SShefali Jain 	[GCC_BLSP1_UART0_APPS_CLK_SRC] = &blsp1_uart0_apps_clk_src.clkr,
2628652f1813SShefali Jain 	[GCC_BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2629652f1813SShefali Jain 	[GCC_BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2630652f1813SShefali Jain 	[GCC_BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2631652f1813SShefali Jain 	[GCC_BLSP2_QUP0_I2C_APPS_CLK_SRC] = &blsp2_qup0_i2c_apps_clk_src.clkr,
2632652f1813SShefali Jain 	[GCC_BLSP2_QUP0_SPI_APPS_CLK_SRC] = &blsp2_qup0_spi_apps_clk_src.clkr,
2633652f1813SShefali Jain 	[GCC_BLSP2_UART0_APPS_CLK_SRC] = &blsp2_uart0_apps_clk_src.clkr,
2634652f1813SShefali Jain 	[GCC_BYTE0_CLK_SRC] = &byte0_clk_src.clkr,
2635652f1813SShefali Jain 	[GCC_EMAC_CLK_SRC] = &emac_clk_src.clkr,
2636652f1813SShefali Jain 	[GCC_EMAC_PTP_CLK_SRC] = &emac_ptp_clk_src.clkr,
2637652f1813SShefali Jain 	[GCC_ESC0_CLK_SRC] = &esc0_clk_src.clkr,
2638652f1813SShefali Jain 	[GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
2639652f1813SShefali Jain 	[GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr,
26408bc7a04bSBjorn Andersson 	[GCC_BIMC_CDSP_CLK] = &gcc_bimc_cdsp_clk.clkr,
2641652f1813SShefali Jain 	[GCC_BIMC_MDSS_CLK] = &gcc_bimc_mdss_clk.clkr,
2642652f1813SShefali Jain 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2643652f1813SShefali Jain 	[GCC_BLSP1_QUP0_I2C_APPS_CLK] = &gcc_blsp1_qup0_i2c_apps_clk.clkr,
2644652f1813SShefali Jain 	[GCC_BLSP1_QUP0_SPI_APPS_CLK] = &gcc_blsp1_qup0_spi_apps_clk.clkr,
2645652f1813SShefali Jain 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2646652f1813SShefali Jain 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2647652f1813SShefali Jain 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2648652f1813SShefali Jain 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2649652f1813SShefali Jain 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2650652f1813SShefali Jain 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2651652f1813SShefali Jain 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2652652f1813SShefali Jain 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2653652f1813SShefali Jain 	[GCC_BLSP1_UART0_APPS_CLK] = &gcc_blsp1_uart0_apps_clk.clkr,
2654652f1813SShefali Jain 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2655652f1813SShefali Jain 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2656652f1813SShefali Jain 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2657652f1813SShefali Jain 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2658652f1813SShefali Jain 	[GCC_BLSP2_QUP0_I2C_APPS_CLK] = &gcc_blsp2_qup0_i2c_apps_clk.clkr,
2659652f1813SShefali Jain 	[GCC_BLSP2_QUP0_SPI_APPS_CLK] = &gcc_blsp2_qup0_spi_apps_clk.clkr,
2660652f1813SShefali Jain 	[GCC_BLSP2_UART0_APPS_CLK] = &gcc_blsp2_uart0_apps_clk.clkr,
2661652f1813SShefali Jain 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2662652f1813SShefali Jain 	[GCC_ETH_AXI_CLK] = &gcc_eth_axi_clk.clkr,
2663652f1813SShefali Jain 	[GCC_ETH_PTP_CLK] = &gcc_eth_ptp_clk.clkr,
2664652f1813SShefali Jain 	[GCC_ETH_RGMII_CLK] = &gcc_eth_rgmii_clk.clkr,
2665652f1813SShefali Jain 	[GCC_ETH_SLAVE_AHB_CLK] = &gcc_eth_slave_ahb_clk.clkr,
2666652f1813SShefali Jain 	[GCC_GENI_IR_S_CLK] = &gcc_geni_ir_s_clk.clkr,
2667652f1813SShefali Jain 	[GCC_GENI_IR_H_CLK] = &gcc_geni_ir_h_clk.clkr,
2668652f1813SShefali Jain 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2669652f1813SShefali Jain 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2670652f1813SShefali Jain 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2671652f1813SShefali Jain 	[GCC_MDSS_AHB_CLK] = &gcc_mdss_ahb_clk.clkr,
2672652f1813SShefali Jain 	[GCC_MDSS_AXI_CLK] = &gcc_mdss_axi_clk.clkr,
2673652f1813SShefali Jain 	[GCC_MDSS_BYTE0_CLK] = &gcc_mdss_byte0_clk.clkr,
2674652f1813SShefali Jain 	[GCC_MDSS_ESC0_CLK] = &gcc_mdss_esc0_clk.clkr,
2675652f1813SShefali Jain 	[GCC_MDSS_HDMI_APP_CLK] = &gcc_mdss_hdmi_app_clk.clkr,
2676652f1813SShefali Jain 	[GCC_MDSS_HDMI_PCLK_CLK] = &gcc_mdss_hdmi_pclk_clk.clkr,
2677652f1813SShefali Jain 	[GCC_MDSS_MDP_CLK] = &gcc_mdss_mdp_clk.clkr,
2678652f1813SShefali Jain 	[GCC_MDSS_PCLK0_CLK] = &gcc_mdss_pclk0_clk.clkr,
2679652f1813SShefali Jain 	[GCC_MDSS_VSYNC_CLK] = &gcc_mdss_vsync_clk.clkr,
2680652f1813SShefali Jain 	[GCC_OXILI_AHB_CLK] = &gcc_oxili_ahb_clk.clkr,
2681652f1813SShefali Jain 	[GCC_OXILI_GFX3D_CLK] = &gcc_oxili_gfx3d_clk.clkr,
2682652f1813SShefali Jain 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2683652f1813SShefali Jain 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2684652f1813SShefali Jain 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2685652f1813SShefali Jain 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2686652f1813SShefali Jain 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2687652f1813SShefali Jain 	[GCC_PCNOC_USB2_CLK] = &gcc_pcnoc_usb2_clk.clkr,
2688652f1813SShefali Jain 	[GCC_PCNOC_USB3_CLK] = &gcc_pcnoc_usb3_clk.clkr,
2689652f1813SShefali Jain 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2690652f1813SShefali Jain 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2691652f1813SShefali Jain 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2692652f1813SShefali Jain 	[GCC_PWM0_XO512_CLK] = &gcc_pwm0_xo512_clk.clkr,
2693652f1813SShefali Jain 	[GCC_PWM1_XO512_CLK] = &gcc_pwm1_xo512_clk.clkr,
2694652f1813SShefali Jain 	[GCC_PWM2_XO512_CLK] = &gcc_pwm2_xo512_clk.clkr,
2695652f1813SShefali Jain 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2696652f1813SShefali Jain 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2697652f1813SShefali Jain 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
26988bc7a04bSBjorn Andersson 	[GCC_CDSP_CFG_AHB_CLK] = &gcc_cdsp_cfg_ahb_clk.clkr,
2699652f1813SShefali Jain 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2700652f1813SShefali Jain 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2701652f1813SShefali Jain 	[GCC_SYS_NOC_USB3_CLK] = &gcc_sys_noc_usb3_clk.clkr,
2702652f1813SShefali Jain 	[GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,
2703652f1813SShefali Jain 	[GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr,
2704652f1813SShefali Jain 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2705652f1813SShefali Jain 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2706652f1813SShefali Jain 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2707652f1813SShefali Jain 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2708652f1813SShefali Jain 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2709652f1813SShefali Jain 	[GCC_USB_HS_PHY_CFG_AHB_CLK] = &gcc_usb_hs_phy_cfg_ahb_clk.clkr,
2710652f1813SShefali Jain 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2711652f1813SShefali Jain 	[GCC_GFX3D_CLK_SRC] = &gfx3d_clk_src.clkr,
2712652f1813SShefali Jain 	[GCC_GP1_CLK_SRC] = &gp1_clk_src.clkr,
2713652f1813SShefali Jain 	[GCC_GP2_CLK_SRC] = &gp2_clk_src.clkr,
2714652f1813SShefali Jain 	[GCC_GP3_CLK_SRC] = &gp3_clk_src.clkr,
2715652f1813SShefali Jain 	[GCC_GPLL0_OUT_MAIN] = &gpll0_out_main.clkr,
2716652f1813SShefali Jain 	[GCC_GPLL0_AO_OUT_MAIN] = &gpll0_ao_out_main.clkr,
2717652f1813SShefali Jain 	[GCC_GPLL0_SLEEP_CLK_SRC] = &gpll0_sleep_clk_src.clkr,
2718652f1813SShefali Jain 	[GCC_GPLL1_OUT_MAIN] = &gpll1_out_main.clkr,
2719652f1813SShefali Jain 	[GCC_GPLL3_OUT_MAIN] = &gpll3_out_main.clkr,
2720652f1813SShefali Jain 	[GCC_GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,
2721652f1813SShefali Jain 	[GCC_GPLL6] = &gpll6.clkr,
2722652f1813SShefali Jain 	[GCC_GPLL6_OUT_AUX] = &gpll6_out_aux,
2723652f1813SShefali Jain 	[GCC_HDMI_APP_CLK_SRC] = &hdmi_app_clk_src.clkr,
2724652f1813SShefali Jain 	[GCC_HDMI_PCLK_CLK_SRC] = &hdmi_pclk_clk_src.clkr,
2725652f1813SShefali Jain 	[GCC_MDP_CLK_SRC] = &mdp_clk_src.clkr,
2726652f1813SShefali Jain 	[GCC_PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2727652f1813SShefali Jain 	[GCC_PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2728652f1813SShefali Jain 	[GCC_PCLK0_CLK_SRC] = &pclk0_clk_src.clkr,
2729652f1813SShefali Jain 	[GCC_PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2730652f1813SShefali Jain 	[GCC_SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2731652f1813SShefali Jain 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
2732652f1813SShefali Jain 	[GCC_SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2733652f1813SShefali Jain 	[GCC_USB20_MOCK_UTMI_CLK_SRC] = &usb20_mock_utmi_clk_src.clkr,
2734652f1813SShefali Jain 	[GCC_USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2735652f1813SShefali Jain 	[GCC_USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2736652f1813SShefali Jain 	[GCC_USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2737652f1813SShefali Jain 	[GCC_USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2738652f1813SShefali Jain 	[GCC_VSYNC_CLK_SRC] = &vsync_clk_src.clkr,
27398bc7a04bSBjorn Andersson 	[GCC_CDSP_BIMC_CLK_SRC] = &cdsp_bimc_clk_src.clkr,
2740652f1813SShefali Jain 	[GCC_USB_HS_INACTIVITY_TIMERS_CLK] =
2741652f1813SShefali Jain 			&gcc_usb_hs_inactivity_timers_clk.clkr,
2742652f1813SShefali Jain 	[GCC_BIMC_GPU_CLK] = &gcc_bimc_gpu_clk.clkr,
2743652f1813SShefali Jain 	[GCC_GTCU_AHB_CLK] = &gcc_gtcu_ahb_clk.clkr,
2744652f1813SShefali Jain 	[GCC_GFX_TCU_CLK] = &gcc_gfx_tcu_clk.clkr,
2745652f1813SShefali Jain 	[GCC_GFX_TBU_CLK] = &gcc_gfx_tbu_clk.clkr,
2746652f1813SShefali Jain 	[GCC_SMMU_CFG_CLK] = &gcc_smmu_cfg_clk.clkr,
2747652f1813SShefali Jain 	[GCC_APSS_TCU_CLK] = &gcc_apss_tcu_clk.clkr,
27488bc7a04bSBjorn Andersson 	[GCC_CDSP_TBU_CLK] = &gcc_cdsp_tbu_clk.clkr,
2749652f1813SShefali Jain 	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
2750652f1813SShefali Jain 	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
2751652f1813SShefali Jain 	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
2752652f1813SShefali Jain 	[GCC_MDP_TBU_CLK] = &gcc_mdp_tbu_clk.clkr,
2753652f1813SShefali Jain 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
2754652f1813SShefali Jain 	[GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
2755652f1813SShefali Jain 	[GCC_DCC_XO_CLK] = &gcc_dcc_xo_clk.clkr,
27567d0c76bdSGovind Singh 	[GCC_WCSS_Q6_AHB_CLK] = &gcc_wdsp_q6ss_ahbs_clk.clkr,
27577d0c76bdSGovind Singh 	[GCC_WCSS_Q6_AXIM_CLK] =  &gcc_wdsp_q6ss_axim_clk.clkr,
27587d0c76bdSGovind Singh 
2759652f1813SShefali Jain };
2760652f1813SShefali Jain 
2761230d4d81SDmitry Baryshkov static struct gdsc *gcc_qcs404_gdscs[] = {
2762230d4d81SDmitry Baryshkov 	[MDSS_GDSC] = &mdss_gdsc,
2763230d4d81SDmitry Baryshkov 	[OXILI_GDSC] = &oxili_gdsc,
2764230d4d81SDmitry Baryshkov };
2765230d4d81SDmitry Baryshkov 
2766652f1813SShefali Jain static const struct qcom_reset_map gcc_qcs404_resets[] = {
2767652f1813SShefali Jain 	[GCC_GENI_IR_BCR] = { 0x0F000 },
27688bc7a04bSBjorn Andersson 	[GCC_CDSP_RESTART] = { 0x18000 },
2769652f1813SShefali Jain 	[GCC_USB_HS_BCR] = { 0x41000 },
2770652f1813SShefali Jain 	[GCC_USB2_HS_PHY_ONLY_BCR] = { 0x41034 },
2771652f1813SShefali Jain 	[GCC_QUSB2_PHY_BCR] = { 0x4103c },
2772652f1813SShefali Jain 	[GCC_USB_HS_PHY_CFG_AHB_BCR] = { 0x0000c, 1 },
2773652f1813SShefali Jain 	[GCC_USB2A_PHY_BCR] = { 0x0000c, 0 },
2774652f1813SShefali Jain 	[GCC_USB3_PHY_BCR] = { 0x39004 },
2775652f1813SShefali Jain 	[GCC_USB_30_BCR] = { 0x39000 },
2776652f1813SShefali Jain 	[GCC_USB3PHY_PHY_BCR] = { 0x39008 },
2777652f1813SShefali Jain 	[GCC_PCIE_0_BCR] = { 0x3e000 },
2778652f1813SShefali Jain 	[GCC_PCIE_0_PHY_BCR] = { 0x3e004 },
2779652f1813SShefali Jain 	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x3e038 },
2780652f1813SShefali Jain 	[GCC_PCIEPHY_0_PHY_BCR] = { 0x3e03c },
2781e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_AXI_MASTER_STICKY_ARES] = { 0x3e040, 6},
2782e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_AHB_ARES] = { 0x3e040, 5 },
2783e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_AXI_SLAVE_ARES] = { 0x3e040, 4 },
2784e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_AXI_MASTER_ARES] = { 0x3e040, 3 },
2785e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_CORE_STICKY_ARES] = { 0x3e040, 2 },
2786e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_SLEEP_ARES] = { 0x3e040, 1 },
2787e5bbbff5SBjorn Andersson 	[GCC_PCIE_0_PIPE_ARES] = { 0x3e040, 0 },
2788652f1813SShefali Jain 	[GCC_EMAC_BCR] = { 0x4e000 },
27897d0c76bdSGovind Singh 	[GCC_WDSP_RESTART] = {0x19000},
2790652f1813SShefali Jain };
2791652f1813SShefali Jain 
2792652f1813SShefali Jain static const struct regmap_config gcc_qcs404_regmap_config = {
2793652f1813SShefali Jain 	.reg_bits	= 32,
2794652f1813SShefali Jain 	.reg_stride	= 4,
2795652f1813SShefali Jain 	.val_bits	= 32,
2796652f1813SShefali Jain 	.max_register	= 0x7f000,
2797652f1813SShefali Jain 	.fast_io	= true,
2798652f1813SShefali Jain };
2799652f1813SShefali Jain 
2800652f1813SShefali Jain static const struct qcom_cc_desc gcc_qcs404_desc = {
2801652f1813SShefali Jain 	.config = &gcc_qcs404_regmap_config,
2802652f1813SShefali Jain 	.clks = gcc_qcs404_clocks,
2803652f1813SShefali Jain 	.num_clks = ARRAY_SIZE(gcc_qcs404_clocks),
2804652f1813SShefali Jain 	.resets = gcc_qcs404_resets,
2805652f1813SShefali Jain 	.num_resets = ARRAY_SIZE(gcc_qcs404_resets),
2806760be658SJeffrey Hugo 	.clk_hws = gcc_qcs404_hws,
2807760be658SJeffrey Hugo 	.num_clk_hws = ARRAY_SIZE(gcc_qcs404_hws),
2808230d4d81SDmitry Baryshkov 	.gdscs = gcc_qcs404_gdscs,
2809230d4d81SDmitry Baryshkov 	.num_gdscs = ARRAY_SIZE(gcc_qcs404_gdscs),
2810652f1813SShefali Jain };
2811652f1813SShefali Jain 
2812652f1813SShefali Jain static const struct of_device_id gcc_qcs404_match_table[] = {
2813652f1813SShefali Jain 	{ .compatible = "qcom,gcc-qcs404" },
2814652f1813SShefali Jain 	{ }
2815652f1813SShefali Jain };
2816652f1813SShefali Jain MODULE_DEVICE_TABLE(of, gcc_qcs404_match_table);
2817652f1813SShefali Jain 
gcc_qcs404_probe(struct platform_device * pdev)2818652f1813SShefali Jain static int gcc_qcs404_probe(struct platform_device *pdev)
2819652f1813SShefali Jain {
2820652f1813SShefali Jain 	struct regmap *regmap;
2821652f1813SShefali Jain 
2822652f1813SShefali Jain 	regmap = qcom_cc_map(pdev, &gcc_qcs404_desc);
2823652f1813SShefali Jain 	if (IS_ERR(regmap))
2824652f1813SShefali Jain 		return PTR_ERR(regmap);
2825652f1813SShefali Jain 
2826652f1813SShefali Jain 	clk_alpha_pll_configure(&gpll3_out_main, regmap, &gpll3_config);
2827652f1813SShefali Jain 
2828652f1813SShefali Jain 	return qcom_cc_really_probe(pdev, &gcc_qcs404_desc, regmap);
2829652f1813SShefali Jain }
2830652f1813SShefali Jain 
2831652f1813SShefali Jain static struct platform_driver gcc_qcs404_driver = {
2832652f1813SShefali Jain 	.probe = gcc_qcs404_probe,
2833652f1813SShefali Jain 	.driver = {
2834652f1813SShefali Jain 		.name = "gcc-qcs404",
2835652f1813SShefali Jain 		.of_match_table = gcc_qcs404_match_table,
2836652f1813SShefali Jain 	},
2837652f1813SShefali Jain };
2838652f1813SShefali Jain 
gcc_qcs404_init(void)2839652f1813SShefali Jain static int __init gcc_qcs404_init(void)
2840652f1813SShefali Jain {
2841652f1813SShefali Jain 	return platform_driver_register(&gcc_qcs404_driver);
2842652f1813SShefali Jain }
2843b418bab4SAmit Kucheria core_initcall(gcc_qcs404_init);
2844652f1813SShefali Jain 
gcc_qcs404_exit(void)2845652f1813SShefali Jain static void __exit gcc_qcs404_exit(void)
2846652f1813SShefali Jain {
2847652f1813SShefali Jain 	platform_driver_unregister(&gcc_qcs404_driver);
2848652f1813SShefali Jain }
2849652f1813SShefali Jain module_exit(gcc_qcs404_exit);
2850652f1813SShefali Jain 
2851652f1813SShefali Jain MODULE_DESCRIPTION("Qualcomm GCC QCS404 Driver");
2852652f1813SShefali Jain MODULE_LICENSE("GPL v2");
2853