xref: /openbmc/linux/drivers/clk/qcom/gcc-sm6125.c (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
14b8d6ae5SKonrad Dybcio // SPDX-License-Identifier: GPL-2.0-only
24b8d6ae5SKonrad Dybcio /*
34b8d6ae5SKonrad Dybcio  * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
44b8d6ae5SKonrad Dybcio  */
54b8d6ae5SKonrad Dybcio 
64b8d6ae5SKonrad Dybcio #include <linux/kernel.h>
74b8d6ae5SKonrad Dybcio #include <linux/err.h>
84b8d6ae5SKonrad Dybcio #include <linux/module.h>
94b8d6ae5SKonrad Dybcio #include <linux/platform_device.h>
104b8d6ae5SKonrad Dybcio #include <linux/of.h>
114b8d6ae5SKonrad Dybcio #include <linux/clk-provider.h>
124b8d6ae5SKonrad Dybcio #include <linux/regmap.h>
134b8d6ae5SKonrad Dybcio #include <linux/reset-controller.h>
144b8d6ae5SKonrad Dybcio 
154b8d6ae5SKonrad Dybcio #include <dt-bindings/clock/qcom,gcc-sm6125.h>
164b8d6ae5SKonrad Dybcio 
174b8d6ae5SKonrad Dybcio #include "clk-alpha-pll.h"
184b8d6ae5SKonrad Dybcio #include "clk-branch.h"
194b8d6ae5SKonrad Dybcio #include "clk-rcg.h"
204b8d6ae5SKonrad Dybcio #include "clk-regmap.h"
214b8d6ae5SKonrad Dybcio #include "common.h"
224b8d6ae5SKonrad Dybcio #include "gdsc.h"
234b8d6ae5SKonrad Dybcio #include "reset.h"
244b8d6ae5SKonrad Dybcio 
254b8d6ae5SKonrad Dybcio enum {
264b8d6ae5SKonrad Dybcio 	P_BI_TCXO,
274b8d6ae5SKonrad Dybcio 	P_GPLL0_OUT_AUX2,
284b8d6ae5SKonrad Dybcio 	P_GPLL0_OUT_EARLY,
294b8d6ae5SKonrad Dybcio 	P_GPLL3_OUT_EARLY,
304b8d6ae5SKonrad Dybcio 	P_GPLL4_OUT_MAIN,
314b8d6ae5SKonrad Dybcio 	P_GPLL5_OUT_MAIN,
324b8d6ae5SKonrad Dybcio 	P_GPLL6_OUT_EARLY,
334b8d6ae5SKonrad Dybcio 	P_GPLL6_OUT_MAIN,
344b8d6ae5SKonrad Dybcio 	P_GPLL7_OUT_MAIN,
354b8d6ae5SKonrad Dybcio 	P_GPLL8_OUT_EARLY,
364b8d6ae5SKonrad Dybcio 	P_GPLL8_OUT_MAIN,
374b8d6ae5SKonrad Dybcio 	P_GPLL9_OUT_MAIN,
384b8d6ae5SKonrad Dybcio 	P_SLEEP_CLK,
394b8d6ae5SKonrad Dybcio };
404b8d6ae5SKonrad Dybcio 
414b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll0_out_early = {
424b8d6ae5SKonrad Dybcio 	.offset = 0x0,
434b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
444b8d6ae5SKonrad Dybcio 	.clkr = {
454b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
464b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
474b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
484b8d6ae5SKonrad Dybcio 			.name = "gpll0_out_early",
494b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
504b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
514b8d6ae5SKonrad Dybcio 			},
524b8d6ae5SKonrad Dybcio 			.num_parents = 1,
534b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
544b8d6ae5SKonrad Dybcio 		},
554b8d6ae5SKonrad Dybcio 	},
564b8d6ae5SKonrad Dybcio };
574b8d6ae5SKonrad Dybcio 
584b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll0_out_aux2 = {
594b8d6ae5SKonrad Dybcio 	.mult = 1,
604b8d6ae5SKonrad Dybcio 	.div = 2,
614b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
624b8d6ae5SKonrad Dybcio 		.name = "gpll0_out_aux2",
634b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
644b8d6ae5SKonrad Dybcio 			&gpll0_out_early.clkr.hw,
654b8d6ae5SKonrad Dybcio 		},
664b8d6ae5SKonrad Dybcio 		.num_parents = 1,
674b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
684b8d6ae5SKonrad Dybcio 	},
694b8d6ae5SKonrad Dybcio };
704b8d6ae5SKonrad Dybcio 
714b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll0_out_main = {
724b8d6ae5SKonrad Dybcio 	.mult = 1,
734b8d6ae5SKonrad Dybcio 	.div = 2,
744b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
754b8d6ae5SKonrad Dybcio 		.name = "gpll0_out_main",
764b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
774b8d6ae5SKonrad Dybcio 			&gpll0_out_early.clkr.hw,
784b8d6ae5SKonrad Dybcio 		},
794b8d6ae5SKonrad Dybcio 		.num_parents = 1,
804b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
814b8d6ae5SKonrad Dybcio 	},
824b8d6ae5SKonrad Dybcio };
834b8d6ae5SKonrad Dybcio 
844b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll3_out_early = {
854b8d6ae5SKonrad Dybcio 	.offset = 0x3000,
864b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
874b8d6ae5SKonrad Dybcio 	.clkr = {
884b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
894b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(3),
904b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
914b8d6ae5SKonrad Dybcio 			.name = "gpll3_out_early",
924b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
934b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
944b8d6ae5SKonrad Dybcio 			},
954b8d6ae5SKonrad Dybcio 			.num_parents = 1,
964b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
974b8d6ae5SKonrad Dybcio 		},
984b8d6ae5SKonrad Dybcio 	},
994b8d6ae5SKonrad Dybcio };
1004b8d6ae5SKonrad Dybcio 
1014b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll4_out_main = {
1024b8d6ae5SKonrad Dybcio 	.offset = 0x4000,
1034b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
1044b8d6ae5SKonrad Dybcio 	.clkr = {
1054b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
1064b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(4),
1074b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1084b8d6ae5SKonrad Dybcio 			.name = "gpll4_out_main",
1094b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
1104b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
1114b8d6ae5SKonrad Dybcio 			},
1124b8d6ae5SKonrad Dybcio 			.num_parents = 1,
1134b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
1144b8d6ae5SKonrad Dybcio 		},
1154b8d6ae5SKonrad Dybcio 	},
1164b8d6ae5SKonrad Dybcio };
1174b8d6ae5SKonrad Dybcio 
1184b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll5_out_main = {
1194b8d6ae5SKonrad Dybcio 	.offset = 0x5000,
1204b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
1214b8d6ae5SKonrad Dybcio 	.clkr = {
1224b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
1234b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(5),
1244b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1254b8d6ae5SKonrad Dybcio 			.name = "gpll5_out_main",
1264b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
1274b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
1284b8d6ae5SKonrad Dybcio 			},
1294b8d6ae5SKonrad Dybcio 			.num_parents = 1,
1304b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
1314b8d6ae5SKonrad Dybcio 		},
1324b8d6ae5SKonrad Dybcio 	},
1334b8d6ae5SKonrad Dybcio };
1344b8d6ae5SKonrad Dybcio 
1354b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll6_out_early = {
1364b8d6ae5SKonrad Dybcio 	.offset = 0x6000,
1374b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
1384b8d6ae5SKonrad Dybcio 	.clkr = {
1394b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
1404b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(6),
1414b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1424b8d6ae5SKonrad Dybcio 			.name = "gpll6_out_early",
1434b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
1444b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
1454b8d6ae5SKonrad Dybcio 			},
1464b8d6ae5SKonrad Dybcio 			.num_parents = 1,
1474b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
1484b8d6ae5SKonrad Dybcio 		},
1494b8d6ae5SKonrad Dybcio 	},
1504b8d6ae5SKonrad Dybcio };
1514b8d6ae5SKonrad Dybcio 
1524b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll6_out_main = {
1534b8d6ae5SKonrad Dybcio 	.mult = 1,
1544b8d6ae5SKonrad Dybcio 	.div = 2,
1554b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
1564b8d6ae5SKonrad Dybcio 		.name = "gpll6_out_main",
1574b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
1584b8d6ae5SKonrad Dybcio 			&gpll6_out_early.clkr.hw,
1594b8d6ae5SKonrad Dybcio 		},
1604b8d6ae5SKonrad Dybcio 		.num_parents = 1,
1614b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
1624b8d6ae5SKonrad Dybcio 	},
1634b8d6ae5SKonrad Dybcio };
1644b8d6ae5SKonrad Dybcio 
1654b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll7_out_early = {
1664b8d6ae5SKonrad Dybcio 	.offset = 0x7000,
1674b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
1684b8d6ae5SKonrad Dybcio 	.clkr = {
1694b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
1704b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(7),
1714b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1724b8d6ae5SKonrad Dybcio 			.name = "gpll7_out_early",
1734b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
1744b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
1754b8d6ae5SKonrad Dybcio 			},
1764b8d6ae5SKonrad Dybcio 			.num_parents = 1,
1774b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
1784b8d6ae5SKonrad Dybcio 		},
1794b8d6ae5SKonrad Dybcio 	},
1804b8d6ae5SKonrad Dybcio };
1814b8d6ae5SKonrad Dybcio 
1824b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll7_out_main = {
1834b8d6ae5SKonrad Dybcio 	.mult = 1,
1844b8d6ae5SKonrad Dybcio 	.div = 2,
1854b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
1864b8d6ae5SKonrad Dybcio 		.name = "gpll7_out_main",
1874b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
1884b8d6ae5SKonrad Dybcio 			&gpll7_out_early.clkr.hw,
1894b8d6ae5SKonrad Dybcio 		},
1904b8d6ae5SKonrad Dybcio 		.num_parents = 1,
1914b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
1924b8d6ae5SKonrad Dybcio 	},
1934b8d6ae5SKonrad Dybcio };
1944b8d6ae5SKonrad Dybcio 
1954b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll8_out_early = {
1964b8d6ae5SKonrad Dybcio 	.offset = 0x8000,
1974b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
1984b8d6ae5SKonrad Dybcio 	.clkr = {
1994b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
2004b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(8),
2014b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2024b8d6ae5SKonrad Dybcio 			.name = "gpll8_out_early",
2034b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
2044b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
2054b8d6ae5SKonrad Dybcio 			},
2064b8d6ae5SKonrad Dybcio 			.num_parents = 1,
2074b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
2084b8d6ae5SKonrad Dybcio 		},
2094b8d6ae5SKonrad Dybcio 	},
2104b8d6ae5SKonrad Dybcio };
2114b8d6ae5SKonrad Dybcio 
2124b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll8_out_main = {
2134b8d6ae5SKonrad Dybcio 	.mult = 1,
2144b8d6ae5SKonrad Dybcio 	.div = 2,
2154b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
2164b8d6ae5SKonrad Dybcio 		.name = "gpll8_out_main",
2174b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
2184b8d6ae5SKonrad Dybcio 			&gpll8_out_early.clkr.hw,
2194b8d6ae5SKonrad Dybcio 		},
2204b8d6ae5SKonrad Dybcio 		.num_parents = 1,
2214b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
2224b8d6ae5SKonrad Dybcio 	},
2234b8d6ae5SKonrad Dybcio };
2244b8d6ae5SKonrad Dybcio 
2254b8d6ae5SKonrad Dybcio static struct clk_alpha_pll gpll9_out_early = {
2264b8d6ae5SKonrad Dybcio 	.offset = 0x9000,
2274b8d6ae5SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
2284b8d6ae5SKonrad Dybcio 	.clkr = {
2294b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79000,
2304b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(9),
2314b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2324b8d6ae5SKonrad Dybcio 			.name = "gpll9_out_early",
2334b8d6ae5SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
2344b8d6ae5SKonrad Dybcio 				.fw_name = "bi_tcxo",
2354b8d6ae5SKonrad Dybcio 			},
2364b8d6ae5SKonrad Dybcio 			.num_parents = 1,
2374b8d6ae5SKonrad Dybcio 			.ops = &clk_alpha_pll_ops,
2384b8d6ae5SKonrad Dybcio 		},
2394b8d6ae5SKonrad Dybcio 	},
2404b8d6ae5SKonrad Dybcio };
2414b8d6ae5SKonrad Dybcio 
2424b8d6ae5SKonrad Dybcio static struct clk_fixed_factor gpll9_out_main = {
2434b8d6ae5SKonrad Dybcio 	.mult = 1,
2444b8d6ae5SKonrad Dybcio 	.div = 2,
2454b8d6ae5SKonrad Dybcio 	.hw.init = &(struct clk_init_data){
2464b8d6ae5SKonrad Dybcio 		.name = "gpll9_out_main",
2474b8d6ae5SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
2484b8d6ae5SKonrad Dybcio 			&gpll9_out_early.clkr.hw,
2494b8d6ae5SKonrad Dybcio 		},
2504b8d6ae5SKonrad Dybcio 		.num_parents = 1,
2514b8d6ae5SKonrad Dybcio 		.ops = &clk_fixed_factor_ops,
2524b8d6ae5SKonrad Dybcio 	},
2534b8d6ae5SKonrad Dybcio };
2544b8d6ae5SKonrad Dybcio 
2554b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_0[] = {
2564b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
2574b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
2584b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_AUX2, 2 },
2594b8d6ae5SKonrad Dybcio };
2604b8d6ae5SKonrad Dybcio 
2614b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_0[] = {
2624b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
2634b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
2644b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_aux2.hw },
2654b8d6ae5SKonrad Dybcio };
2664b8d6ae5SKonrad Dybcio 
2674b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_1[] = {
2684b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
2694b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
2704b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_AUX2, 2 },
2714b8d6ae5SKonrad Dybcio 	{ P_GPLL6_OUT_MAIN, 4 },
2724b8d6ae5SKonrad Dybcio };
2734b8d6ae5SKonrad Dybcio 
2744b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_1[] = {
2754b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
2764b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
2774b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_aux2.hw },
2784b8d6ae5SKonrad Dybcio 	{ .hw = &gpll6_out_main.hw },
2794b8d6ae5SKonrad Dybcio };
2804b8d6ae5SKonrad Dybcio 
2814b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_2[] = {
2824b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
2834b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
2844b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_AUX2, 2 },
2854b8d6ae5SKonrad Dybcio 	{ P_SLEEP_CLK, 5 },
2864b8d6ae5SKonrad Dybcio };
2874b8d6ae5SKonrad Dybcio 
2884b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_2[] = {
2894b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
2904b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
2914b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_aux2.hw },
2924b8d6ae5SKonrad Dybcio 	{ .fw_name = "sleep_clk" },
2934b8d6ae5SKonrad Dybcio };
2944b8d6ae5SKonrad Dybcio 
2954b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_3[] = {
2964b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
2974b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
2984b8d6ae5SKonrad Dybcio 	{ P_GPLL5_OUT_MAIN, 3 },
2994b8d6ae5SKonrad Dybcio 	{ P_GPLL4_OUT_MAIN, 5 },
3004b8d6ae5SKonrad Dybcio };
3014b8d6ae5SKonrad Dybcio 
3024b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_3[] = {
3034b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3044b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3054b8d6ae5SKonrad Dybcio 	{ .hw = &gpll5_out_main.clkr.hw },
3064b8d6ae5SKonrad Dybcio 	{ .hw = &gpll4_out_main.clkr.hw },
3074b8d6ae5SKonrad Dybcio };
3084b8d6ae5SKonrad Dybcio 
3094b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_4[] = {
3104b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3114b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3124b8d6ae5SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 2 },
3134b8d6ae5SKonrad Dybcio };
3144b8d6ae5SKonrad Dybcio 
3154b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_4[] = {
3164b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3174b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3184b8d6ae5SKonrad Dybcio 	{ .hw = &gpll9_out_main.hw },
3194b8d6ae5SKonrad Dybcio };
3204b8d6ae5SKonrad Dybcio 
3214b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_5[] = {
3224b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3234b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3244b8d6ae5SKonrad Dybcio };
3254b8d6ae5SKonrad Dybcio 
3264b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_5[] = {
3274b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3284b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3294b8d6ae5SKonrad Dybcio };
3304b8d6ae5SKonrad Dybcio 
3314b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_6[] = {
3324b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3334b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3344b8d6ae5SKonrad Dybcio 	{ P_GPLL4_OUT_MAIN, 5 },
3354b8d6ae5SKonrad Dybcio };
3364b8d6ae5SKonrad Dybcio 
3374b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_6[] = {
3384b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3394b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3404b8d6ae5SKonrad Dybcio 	{ .hw = &gpll4_out_main.clkr.hw },
3414b8d6ae5SKonrad Dybcio };
3424b8d6ae5SKonrad Dybcio 
3434b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_7[] = {
3444b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3454b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3464b8d6ae5SKonrad Dybcio 	{ P_SLEEP_CLK, 5 },
3474b8d6ae5SKonrad Dybcio };
3484b8d6ae5SKonrad Dybcio 
3494b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_7[] = {
3504b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3514b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3524b8d6ae5SKonrad Dybcio 	{ .fw_name = "sleep_clk" },
3534b8d6ae5SKonrad Dybcio };
3544b8d6ae5SKonrad Dybcio 
3554b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_8[] = {
3564b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3574b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3584b8d6ae5SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 2 },
3594b8d6ae5SKonrad Dybcio 	{ P_GPLL6_OUT_EARLY, 3 },
3604b8d6ae5SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 4 },
3614b8d6ae5SKonrad Dybcio 	{ P_GPLL4_OUT_MAIN, 5 },
3624b8d6ae5SKonrad Dybcio 	{ P_GPLL3_OUT_EARLY, 6 },
3634b8d6ae5SKonrad Dybcio };
3644b8d6ae5SKonrad Dybcio 
3654b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_8[] = {
3664b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3674b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3684b8d6ae5SKonrad Dybcio 	{ .hw = &gpll9_out_main.hw },
3694b8d6ae5SKonrad Dybcio 	{ .hw = &gpll6_out_early.clkr.hw },
3704b8d6ae5SKonrad Dybcio 	{ .hw = &gpll8_out_main.hw },
3714b8d6ae5SKonrad Dybcio 	{ .hw = &gpll4_out_main.clkr.hw },
3724b8d6ae5SKonrad Dybcio 	{ .hw = &gpll3_out_early.clkr.hw },
3734b8d6ae5SKonrad Dybcio };
3744b8d6ae5SKonrad Dybcio 
3754b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_9[] = {
3764b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3774b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3784b8d6ae5SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 4 },
3794b8d6ae5SKonrad Dybcio };
3804b8d6ae5SKonrad Dybcio 
3814b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_9[] = {
3824b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3834b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3844b8d6ae5SKonrad Dybcio 	{ .hw = &gpll8_out_main.hw },
3854b8d6ae5SKonrad Dybcio };
3864b8d6ae5SKonrad Dybcio 
3874b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_10[] = {
3884b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
3894b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
3904b8d6ae5SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 2 },
3914b8d6ae5SKonrad Dybcio 	{ P_GPLL6_OUT_EARLY, 3 },
3924b8d6ae5SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 4 },
3934b8d6ae5SKonrad Dybcio 	{ P_GPLL3_OUT_EARLY, 6 },
3944b8d6ae5SKonrad Dybcio };
3954b8d6ae5SKonrad Dybcio 
3964b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_10[] = {
3974b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
3984b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
3994b8d6ae5SKonrad Dybcio 	{ .hw = &gpll9_out_main.hw },
4004b8d6ae5SKonrad Dybcio 	{ .hw = &gpll6_out_early.clkr.hw },
4014b8d6ae5SKonrad Dybcio 	{ .hw = &gpll8_out_main.hw },
4024b8d6ae5SKonrad Dybcio 	{ .hw = &gpll3_out_early.clkr.hw },
4034b8d6ae5SKonrad Dybcio };
4044b8d6ae5SKonrad Dybcio 
4054b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_11[] = {
4064b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
4074b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
4084b8d6ae5SKonrad Dybcio 	{ P_GPLL8_OUT_EARLY, 4 },
4094b8d6ae5SKonrad Dybcio 	{ P_GPLL4_OUT_MAIN, 5 },
4104b8d6ae5SKonrad Dybcio };
4114b8d6ae5SKonrad Dybcio 
4124b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_11[] = {
4134b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
4144b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
4154b8d6ae5SKonrad Dybcio 	{ .hw = &gpll8_out_early.clkr.hw },
4164b8d6ae5SKonrad Dybcio 	{ .hw = &gpll4_out_main.clkr.hw },
4174b8d6ae5SKonrad Dybcio };
4184b8d6ae5SKonrad Dybcio 
4194b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_12[] = {
4204b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
4214b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
4224b8d6ae5SKonrad Dybcio 	{ P_GPLL6_OUT_EARLY, 3 },
4234b8d6ae5SKonrad Dybcio 	{ P_GPLL8_OUT_EARLY, 4 },
4244b8d6ae5SKonrad Dybcio };
4254b8d6ae5SKonrad Dybcio 
4264b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_12[] = {
4274b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
4284b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
4294b8d6ae5SKonrad Dybcio 	{ .hw = &gpll6_out_early.clkr.hw },
4304b8d6ae5SKonrad Dybcio 	{ .hw = &gpll8_out_early.clkr.hw },
4314b8d6ae5SKonrad Dybcio };
4324b8d6ae5SKonrad Dybcio 
4334b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_13[] = {
4344b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
4354b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_EARLY, 1 },
4364b8d6ae5SKonrad Dybcio 	{ P_GPLL0_OUT_AUX2, 2 },
4374b8d6ae5SKonrad Dybcio 	{ P_GPLL7_OUT_MAIN, 3 },
4384b8d6ae5SKonrad Dybcio 	{ P_GPLL4_OUT_MAIN, 5 },
4394b8d6ae5SKonrad Dybcio };
4404b8d6ae5SKonrad Dybcio 
4414b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_13[] = {
4424b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
4434b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_early.clkr.hw },
4444b8d6ae5SKonrad Dybcio 	{ .hw = &gpll0_out_aux2.hw },
4454b8d6ae5SKonrad Dybcio 	{ .hw = &gpll7_out_main.hw },
4464b8d6ae5SKonrad Dybcio 	{ .hw = &gpll4_out_main.clkr.hw },
4474b8d6ae5SKonrad Dybcio };
4484b8d6ae5SKonrad Dybcio 
4494b8d6ae5SKonrad Dybcio static const struct parent_map gcc_parent_map_14[] = {
4504b8d6ae5SKonrad Dybcio 	{ P_BI_TCXO, 0 },
4514b8d6ae5SKonrad Dybcio 	{ P_SLEEP_CLK, 5 },
4524b8d6ae5SKonrad Dybcio };
4534b8d6ae5SKonrad Dybcio 
4544b8d6ae5SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_14[] = {
4554b8d6ae5SKonrad Dybcio 	{ .fw_name = "bi_tcxo" },
4564b8d6ae5SKonrad Dybcio 	{ .fw_name = "sleep_clk" },
4574b8d6ae5SKonrad Dybcio };
4584b8d6ae5SKonrad Dybcio 
4594b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_ahb_clk_src[] = {
4604b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
4614b8d6ae5SKonrad Dybcio 	F(40000000, P_GPLL8_OUT_MAIN, 12, 0, 0),
4624b8d6ae5SKonrad Dybcio 	F(80000000, P_GPLL8_OUT_MAIN, 6, 0, 0),
4634b8d6ae5SKonrad Dybcio 	{ }
4644b8d6ae5SKonrad Dybcio };
4654b8d6ae5SKonrad Dybcio 
4664b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_ahb_clk_src = {
4674b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x56088,
4684b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
4694b8d6ae5SKonrad Dybcio 	.hid_width = 5,
4704b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_9,
4714b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_ahb_clk_src,
4724b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
4734b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_ahb_clk_src",
4744b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_9,
4754b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
4764b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
4774b8d6ae5SKonrad Dybcio 	},
4784b8d6ae5SKonrad Dybcio };
4794b8d6ae5SKonrad Dybcio 
4804b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_cci_clk_src[] = {
4814b8d6ae5SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_EARLY, 16, 0, 0),
4824b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),
4834b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
4844b8d6ae5SKonrad Dybcio 	{ }
4854b8d6ae5SKonrad Dybcio };
4864b8d6ae5SKonrad Dybcio 
4874b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_cci_clk_src = {
4884b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x52004,
4894b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
4904b8d6ae5SKonrad Dybcio 	.hid_width = 5,
4914b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
4924b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_cci_clk_src,
4934b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
4944b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_cci_clk_src",
4954b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
4964b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
4974b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
4984b8d6ae5SKonrad Dybcio 	},
4994b8d6ae5SKonrad Dybcio };
5004b8d6ae5SKonrad Dybcio 
5014b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_cpp_clk_src[] = {
5024b8d6ae5SKonrad Dybcio 	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),
5034b8d6ae5SKonrad Dybcio 	F(240000000, P_GPLL8_OUT_MAIN, 2, 0, 0),
5044b8d6ae5SKonrad Dybcio 	F(320000000, P_GPLL8_OUT_MAIN, 1.5, 0, 0),
5054b8d6ae5SKonrad Dybcio 	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),
5064b8d6ae5SKonrad Dybcio 	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),
5074b8d6ae5SKonrad Dybcio 	{ }
5084b8d6ae5SKonrad Dybcio };
5094b8d6ae5SKonrad Dybcio 
5104b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_cpp_clk_src = {
5114b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x560c8,
5124b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5134b8d6ae5SKonrad Dybcio 	.hid_width = 5,
5144b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_10,
5154b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_cpp_clk_src,
5164b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
5174b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_cpp_clk_src",
5184b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_10,
5194b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
5204b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
5214b8d6ae5SKonrad Dybcio 	},
5224b8d6ae5SKonrad Dybcio };
5234b8d6ae5SKonrad Dybcio 
5244b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_csi0_clk_src[] = {
5254b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
5264b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
5274b8d6ae5SKonrad Dybcio 	F(311000000, P_GPLL5_OUT_MAIN, 3, 0, 0),
5284b8d6ae5SKonrad Dybcio 	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),
5294b8d6ae5SKonrad Dybcio 	F(466500000, P_GPLL5_OUT_MAIN, 2, 0, 0),
5304b8d6ae5SKonrad Dybcio 	{ }
5314b8d6ae5SKonrad Dybcio };
5324b8d6ae5SKonrad Dybcio 
5334b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi0_clk_src = {
5344b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x55030,
5354b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5364b8d6ae5SKonrad Dybcio 	.hid_width = 5,
5374b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
5384b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
5394b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
5404b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi0_clk_src",
5414b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
5424b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
5434b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
5444b8d6ae5SKonrad Dybcio 	},
5454b8d6ae5SKonrad Dybcio };
5464b8d6ae5SKonrad Dybcio 
5474b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {
5484b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
5494b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
5504b8d6ae5SKonrad Dybcio 	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),
5514b8d6ae5SKonrad Dybcio 	{ }
5524b8d6ae5SKonrad Dybcio };
5534b8d6ae5SKonrad Dybcio 
5544b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {
5554b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x53004,
5564b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5574b8d6ae5SKonrad Dybcio 	.hid_width = 5,
5584b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
5594b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
5604b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
5614b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi0phytimer_clk_src",
5624b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
5634b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
5644b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
5654b8d6ae5SKonrad Dybcio 	},
5664b8d6ae5SKonrad Dybcio };
5674b8d6ae5SKonrad Dybcio 
5684b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi1_clk_src = {
5694b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x5506c,
5704b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5714b8d6ae5SKonrad Dybcio 	.hid_width = 5,
5724b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
5734b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
5744b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
5754b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi1_clk_src",
5764b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
5774b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
5784b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
5794b8d6ae5SKonrad Dybcio 	},
5804b8d6ae5SKonrad Dybcio };
5814b8d6ae5SKonrad Dybcio 
5824b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {
5834b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x53024,
5844b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5854b8d6ae5SKonrad Dybcio 	.hid_width = 5,
5864b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
5874b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
5884b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
5894b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi1phytimer_clk_src",
5904b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
5914b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
5924b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
5934b8d6ae5SKonrad Dybcio 	},
5944b8d6ae5SKonrad Dybcio };
5954b8d6ae5SKonrad Dybcio 
5964b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi2_clk_src = {
5974b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x550a4,
5984b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
5994b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6004b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
6014b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
6024b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6034b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi2_clk_src",
6044b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
6054b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
6064b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6074b8d6ae5SKonrad Dybcio 	},
6084b8d6ae5SKonrad Dybcio };
6094b8d6ae5SKonrad Dybcio 
6104b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {
6114b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x53044,
6124b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
6134b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6144b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
6154b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
6164b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6174b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi2phytimer_clk_src",
6184b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
6194b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
6204b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6214b8d6ae5SKonrad Dybcio 	},
6224b8d6ae5SKonrad Dybcio };
6234b8d6ae5SKonrad Dybcio 
6244b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi3_clk_src = {
6254b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x550e0,
6264b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
6274b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6284b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
6294b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
6304b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6314b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csi3_clk_src",
6324b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
6334b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
6344b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6354b8d6ae5SKonrad Dybcio 	},
6364b8d6ae5SKonrad Dybcio };
6374b8d6ae5SKonrad Dybcio 
6384b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_csiphy_clk_src[] = {
6394b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
6404b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
6414b8d6ae5SKonrad Dybcio 	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),
6424b8d6ae5SKonrad Dybcio 	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),
6434b8d6ae5SKonrad Dybcio 	{ }
6444b8d6ae5SKonrad Dybcio };
6454b8d6ae5SKonrad Dybcio 
6464b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_csiphy_clk_src = {
6474b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x55000,
6484b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
6494b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6504b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_11,
6514b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csiphy_clk_src,
6524b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6534b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_csiphy_clk_src",
6544b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_11,
6554b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
6564b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6574b8d6ae5SKonrad Dybcio 	},
6584b8d6ae5SKonrad Dybcio };
6594b8d6ae5SKonrad Dybcio 
6604b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_gp0_clk_src[] = {
6614b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),
6624b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
6634b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
6644b8d6ae5SKonrad Dybcio 	{ }
6654b8d6ae5SKonrad Dybcio };
6664b8d6ae5SKonrad Dybcio 
6674b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_gp0_clk_src = {
6684b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x50000,
6694b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
6704b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6714b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_7,
6724b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,
6734b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6744b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_gp0_clk_src",
6754b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_7,
6764b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
6774b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6784b8d6ae5SKonrad Dybcio 	},
6794b8d6ae5SKonrad Dybcio };
6804b8d6ae5SKonrad Dybcio 
6814b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_gp1_clk_src = {
6824b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x5001c,
6834b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
6844b8d6ae5SKonrad Dybcio 	.hid_width = 5,
6854b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_7,
6864b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,
6874b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
6884b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_gp1_clk_src",
6894b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_7,
6904b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
6914b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
6924b8d6ae5SKonrad Dybcio 	},
6934b8d6ae5SKonrad Dybcio };
6944b8d6ae5SKonrad Dybcio 
6954b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_jpeg_clk_src[] = {
6964b8d6ae5SKonrad Dybcio 	F(66666667, P_GPLL0_OUT_EARLY, 9, 0, 0),
6974b8d6ae5SKonrad Dybcio 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
6984b8d6ae5SKonrad Dybcio 	F(219428571, P_GPLL6_OUT_EARLY, 3.5, 0, 0),
6994b8d6ae5SKonrad Dybcio 	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),
7004b8d6ae5SKonrad Dybcio 	F(480000000, P_GPLL8_OUT_EARLY, 2, 0, 0),
7014b8d6ae5SKonrad Dybcio 	{ }
7024b8d6ae5SKonrad Dybcio };
7034b8d6ae5SKonrad Dybcio 
7044b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_jpeg_clk_src = {
7054b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x52028,
7064b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
7074b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7084b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_12,
7094b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_jpeg_clk_src,
7104b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7114b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_jpeg_clk_src",
7124b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_12,
7134b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
7144b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
7154b8d6ae5SKonrad Dybcio 	},
7164b8d6ae5SKonrad Dybcio };
7174b8d6ae5SKonrad Dybcio 
7184b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {
7194b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
7204b8d6ae5SKonrad Dybcio 	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 24),
7214b8d6ae5SKonrad Dybcio 	F(64000000, P_GPLL9_OUT_MAIN, 1, 1, 9),
7224b8d6ae5SKonrad Dybcio 	{ }
7234b8d6ae5SKonrad Dybcio };
7244b8d6ae5SKonrad Dybcio 
7254b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk0_clk_src = {
7264b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x51000,
7274b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
7284b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7294b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
7304b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
7314b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7324b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_mclk0_clk_src",
7334b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
7344b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
7354b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
7364b8d6ae5SKonrad Dybcio 	},
7374b8d6ae5SKonrad Dybcio };
7384b8d6ae5SKonrad Dybcio 
7394b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk1_clk_src = {
7404b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x5101c,
7414b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
7424b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7434b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
7444b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
7454b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7464b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_mclk1_clk_src",
7474b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
7484b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
7494b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
7504b8d6ae5SKonrad Dybcio 	},
7514b8d6ae5SKonrad Dybcio };
7524b8d6ae5SKonrad Dybcio 
7534b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk2_clk_src = {
7544b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x51038,
7554b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
7564b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7574b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
7584b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
7594b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7604b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_mclk2_clk_src",
7614b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
7624b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
7634b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
7644b8d6ae5SKonrad Dybcio 	},
7654b8d6ae5SKonrad Dybcio };
7664b8d6ae5SKonrad Dybcio 
7674b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk3_clk_src = {
7684b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x51054,
7694b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
7704b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7714b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
7724b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
7734b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7744b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_mclk3_clk_src",
7754b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
7764b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
7774b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
7784b8d6ae5SKonrad Dybcio 	},
7794b8d6ae5SKonrad Dybcio };
7804b8d6ae5SKonrad Dybcio 
7814b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_vfe0_clk_src[] = {
7824b8d6ae5SKonrad Dybcio 	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),
7834b8d6ae5SKonrad Dybcio 	F(256000000, P_GPLL6_OUT_EARLY, 3, 0, 0),
7844b8d6ae5SKonrad Dybcio 	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),
7854b8d6ae5SKonrad Dybcio 	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),
7864b8d6ae5SKonrad Dybcio 	F(533000000, P_GPLL3_OUT_EARLY, 2, 0, 0),
7874b8d6ae5SKonrad Dybcio 	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),
7884b8d6ae5SKonrad Dybcio 	{ }
7894b8d6ae5SKonrad Dybcio };
7904b8d6ae5SKonrad Dybcio 
7914b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_vfe0_clk_src = {
7924b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x54010,
7934b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
7944b8d6ae5SKonrad Dybcio 	.hid_width = 5,
7954b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_8,
7964b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,
7974b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
7984b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_vfe0_clk_src",
7994b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_8,
8004b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
8014b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8024b8d6ae5SKonrad Dybcio 	},
8034b8d6ae5SKonrad Dybcio };
8044b8d6ae5SKonrad Dybcio 
8054b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_camss_vfe1_clk_src = {
8064b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x54048,
8074b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
8084b8d6ae5SKonrad Dybcio 	.hid_width = 5,
8094b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_8,
8104b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,
8114b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
8124b8d6ae5SKonrad Dybcio 		.name = "gcc_camss_vfe1_clk_src",
8134b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_8,
8144b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
8154b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8164b8d6ae5SKonrad Dybcio 	},
8174b8d6ae5SKonrad Dybcio };
8184b8d6ae5SKonrad Dybcio 
8194b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
8204b8d6ae5SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
8214b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
8224b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
8234b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
8244b8d6ae5SKonrad Dybcio 	{ }
8254b8d6ae5SKonrad Dybcio };
8264b8d6ae5SKonrad Dybcio 
8274b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_gp1_clk_src = {
8284b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x4d004,
8294b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
8304b8d6ae5SKonrad Dybcio 	.hid_width = 5,
8314b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
8324b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
8334b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
8344b8d6ae5SKonrad Dybcio 		.name = "gcc_gp1_clk_src",
8354b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_2,
8364b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
8374b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8384b8d6ae5SKonrad Dybcio 	},
8394b8d6ae5SKonrad Dybcio };
8404b8d6ae5SKonrad Dybcio 
8414b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_gp2_clk_src = {
8424b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x4e004,
8434b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
8444b8d6ae5SKonrad Dybcio 	.hid_width = 5,
8454b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
8464b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
8474b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
8484b8d6ae5SKonrad Dybcio 		.name = "gcc_gp2_clk_src",
8494b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_2,
8504b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
8514b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8524b8d6ae5SKonrad Dybcio 	},
8534b8d6ae5SKonrad Dybcio };
8544b8d6ae5SKonrad Dybcio 
8554b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_gp3_clk_src = {
8564b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x4f004,
8574b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
8584b8d6ae5SKonrad Dybcio 	.hid_width = 5,
8594b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
8604b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
8614b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
8624b8d6ae5SKonrad Dybcio 		.name = "gcc_gp3_clk_src",
8634b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_2,
8644b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
8654b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8664b8d6ae5SKonrad Dybcio 	},
8674b8d6ae5SKonrad Dybcio };
8684b8d6ae5SKonrad Dybcio 
8694b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
8704b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
8714b8d6ae5SKonrad Dybcio 	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),
8724b8d6ae5SKonrad Dybcio 	{ }
8734b8d6ae5SKonrad Dybcio };
8744b8d6ae5SKonrad Dybcio 
8754b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_pdm2_clk_src = {
8764b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x20010,
8774b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
8784b8d6ae5SKonrad Dybcio 	.hid_width = 5,
8794b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
8804b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
8814b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
8824b8d6ae5SKonrad Dybcio 		.name = "gcc_pdm2_clk_src",
8834b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
8844b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
8854b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
8864b8d6ae5SKonrad Dybcio 	},
8874b8d6ae5SKonrad Dybcio };
8884b8d6ae5SKonrad Dybcio 
8894b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
8904b8d6ae5SKonrad Dybcio 	F(7372800, P_GPLL0_OUT_AUX2, 1, 384, 15625),
8914b8d6ae5SKonrad Dybcio 	F(14745600, P_GPLL0_OUT_AUX2, 1, 768, 15625),
8924b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
8934b8d6ae5SKonrad Dybcio 	F(29491200, P_GPLL0_OUT_AUX2, 1, 1536, 15625),
8944b8d6ae5SKonrad Dybcio 	F(32000000, P_GPLL0_OUT_AUX2, 1, 8, 75),
8954b8d6ae5SKonrad Dybcio 	F(48000000, P_GPLL0_OUT_AUX2, 1, 4, 25),
8964b8d6ae5SKonrad Dybcio 	F(64000000, P_GPLL0_OUT_AUX2, 1, 16, 75),
8974b8d6ae5SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
8984b8d6ae5SKonrad Dybcio 	F(80000000, P_GPLL0_OUT_AUX2, 1, 4, 15),
8994b8d6ae5SKonrad Dybcio 	F(96000000, P_GPLL0_OUT_AUX2, 1, 8, 25),
9004b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
9014b8d6ae5SKonrad Dybcio 	F(102400000, P_GPLL0_OUT_AUX2, 1, 128, 375),
9024b8d6ae5SKonrad Dybcio 	F(112000000, P_GPLL0_OUT_AUX2, 1, 28, 75),
9034b8d6ae5SKonrad Dybcio 	F(117964800, P_GPLL0_OUT_AUX2, 1, 6144, 15625),
9044b8d6ae5SKonrad Dybcio 	F(120000000, P_GPLL0_OUT_AUX2, 2.5, 0, 0),
9054b8d6ae5SKonrad Dybcio 	F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0),
9064b8d6ae5SKonrad Dybcio 	{ }
9074b8d6ae5SKonrad Dybcio };
9084b8d6ae5SKonrad Dybcio 
9094b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
9104b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s0_clk_src",
9114b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9124b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9134b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9144b8d6ae5SKonrad Dybcio };
9154b8d6ae5SKonrad Dybcio 
9164b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
9174b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f148,
9184b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9194b8d6ae5SKonrad Dybcio 	.hid_width = 5,
9204b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
9214b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9224b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
9234b8d6ae5SKonrad Dybcio };
9244b8d6ae5SKonrad Dybcio 
9254b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
9264b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s1_clk_src",
9274b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9284b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9294b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9304b8d6ae5SKonrad Dybcio };
9314b8d6ae5SKonrad Dybcio 
9324b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
9334b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f278,
9344b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9354b8d6ae5SKonrad Dybcio 	.hid_width = 5,
9364b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
9374b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9384b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
9394b8d6ae5SKonrad Dybcio };
9404b8d6ae5SKonrad Dybcio 
9414b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
9424b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s2_clk_src",
9434b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9444b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9454b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9464b8d6ae5SKonrad Dybcio };
9474b8d6ae5SKonrad Dybcio 
9484b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
9494b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f3a8,
9504b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9514b8d6ae5SKonrad Dybcio 	.hid_width = 5,
9524b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
9534b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9544b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
9554b8d6ae5SKonrad Dybcio };
9564b8d6ae5SKonrad Dybcio 
9574b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
9584b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s3_clk_src",
9594b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9604b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9614b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9624b8d6ae5SKonrad Dybcio };
9634b8d6ae5SKonrad Dybcio 
9644b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
9654b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f4d8,
9664b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9674b8d6ae5SKonrad Dybcio 	.hid_width = 5,
9684b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
9694b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9704b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
9714b8d6ae5SKonrad Dybcio };
9724b8d6ae5SKonrad Dybcio 
9734b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
9744b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s4_clk_src",
9754b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9764b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9774b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9784b8d6ae5SKonrad Dybcio };
9794b8d6ae5SKonrad Dybcio 
9804b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
9814b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f608,
9824b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9834b8d6ae5SKonrad Dybcio 	.hid_width = 5,
9844b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
9854b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9864b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
9874b8d6ae5SKonrad Dybcio };
9884b8d6ae5SKonrad Dybcio 
9894b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
9904b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s5_clk_src",
9914b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
9924b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
9934b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
9944b8d6ae5SKonrad Dybcio };
9954b8d6ae5SKonrad Dybcio 
9964b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
9974b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1f738,
9984b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
9994b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10004b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10014b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10024b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
10034b8d6ae5SKonrad Dybcio };
10044b8d6ae5SKonrad Dybcio 
10054b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
10064b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s0_clk_src",
10074b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10084b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10094b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10104b8d6ae5SKonrad Dybcio };
10114b8d6ae5SKonrad Dybcio 
10124b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
10134b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x39148,
10144b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10154b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10164b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10174b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10184b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
10194b8d6ae5SKonrad Dybcio };
10204b8d6ae5SKonrad Dybcio 
10214b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
10224b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s1_clk_src",
10234b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10244b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10254b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10264b8d6ae5SKonrad Dybcio };
10274b8d6ae5SKonrad Dybcio 
10284b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
10294b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x39278,
10304b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10314b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10324b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10334b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10344b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
10354b8d6ae5SKonrad Dybcio };
10364b8d6ae5SKonrad Dybcio 
10374b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
10384b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s2_clk_src",
10394b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10404b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10414b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10424b8d6ae5SKonrad Dybcio };
10434b8d6ae5SKonrad Dybcio 
10444b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
10454b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x393a8,
10464b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10474b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10484b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10494b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10504b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
10514b8d6ae5SKonrad Dybcio };
10524b8d6ae5SKonrad Dybcio 
10534b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
10544b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s3_clk_src",
10554b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10564b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10574b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10584b8d6ae5SKonrad Dybcio };
10594b8d6ae5SKonrad Dybcio 
10604b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
10614b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x394d8,
10624b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10634b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10644b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10654b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10664b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
10674b8d6ae5SKonrad Dybcio };
10684b8d6ae5SKonrad Dybcio 
10694b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
10704b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s4_clk_src",
10714b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10724b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10734b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10744b8d6ae5SKonrad Dybcio };
10754b8d6ae5SKonrad Dybcio 
10764b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
10774b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x39608,
10784b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10794b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10804b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10814b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10824b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
10834b8d6ae5SKonrad Dybcio };
10844b8d6ae5SKonrad Dybcio 
10854b8d6ae5SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
10864b8d6ae5SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s5_clk_src",
10874b8d6ae5SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
10884b8d6ae5SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
10894b8d6ae5SKonrad Dybcio 	.ops = &clk_rcg2_ops,
10904b8d6ae5SKonrad Dybcio };
10914b8d6ae5SKonrad Dybcio 
10924b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
10934b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x39738,
10944b8d6ae5SKonrad Dybcio 	.mnd_width = 16,
10954b8d6ae5SKonrad Dybcio 	.hid_width = 5,
10964b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
10974b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
10984b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
10994b8d6ae5SKonrad Dybcio };
11004b8d6ae5SKonrad Dybcio 
11014b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
11024b8d6ae5SKonrad Dybcio 	F(144000, P_BI_TCXO, 16, 3, 25),
11034b8d6ae5SKonrad Dybcio 	F(400000, P_BI_TCXO, 12, 1, 4),
11044b8d6ae5SKonrad Dybcio 	F(20000000, P_GPLL0_OUT_AUX2, 5, 1, 3),
11054b8d6ae5SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_AUX2, 6, 1, 2),
11064b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
11074b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
11084b8d6ae5SKonrad Dybcio 	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
11094b8d6ae5SKonrad Dybcio 	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
11104b8d6ae5SKonrad Dybcio 	{ }
11114b8d6ae5SKonrad Dybcio };
11124b8d6ae5SKonrad Dybcio 
11134b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
11144b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x38028,
11154b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
11164b8d6ae5SKonrad Dybcio 	.hid_width = 5,
11174b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
11184b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
11194b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11204b8d6ae5SKonrad Dybcio 		.name = "gcc_sdcc1_apps_clk_src",
11214b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_1,
11224b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1123e53f2086SMartin Botka 		.ops = &clk_rcg2_floor_ops,
11244b8d6ae5SKonrad Dybcio 	},
11254b8d6ae5SKonrad Dybcio };
11264b8d6ae5SKonrad Dybcio 
11274b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
11284b8d6ae5SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
11294b8d6ae5SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
11304b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
11314b8d6ae5SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),
11324b8d6ae5SKonrad Dybcio 	{ }
11334b8d6ae5SKonrad Dybcio };
11344b8d6ae5SKonrad Dybcio 
11354b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
11364b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x38010,
11374b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
11384b8d6ae5SKonrad Dybcio 	.hid_width = 5,
11394b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
11404b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
11414b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11424b8d6ae5SKonrad Dybcio 		.name = "gcc_sdcc1_ice_core_clk_src",
11434b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
11444b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1145e53f2086SMartin Botka 		.ops = &clk_rcg2_ops,
11464b8d6ae5SKonrad Dybcio 	},
11474b8d6ae5SKonrad Dybcio };
11484b8d6ae5SKonrad Dybcio 
11494b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
11504b8d6ae5SKonrad Dybcio 	F(400000, P_BI_TCXO, 12, 1, 4),
11514b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
11524b8d6ae5SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
11534b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
11544b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
11554b8d6ae5SKonrad Dybcio 	{ }
11564b8d6ae5SKonrad Dybcio };
11574b8d6ae5SKonrad Dybcio 
11584b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
11594b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1e00c,
11604b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
11614b8d6ae5SKonrad Dybcio 	.hid_width = 5,
11624b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_13,
11634b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
11644b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11654b8d6ae5SKonrad Dybcio 		.name = "gcc_sdcc2_apps_clk_src",
11664b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_13,
11674b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
11684b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_floor_ops,
11694b8d6ae5SKonrad Dybcio 	},
11704b8d6ae5SKonrad Dybcio };
11714b8d6ae5SKonrad Dybcio 
11724b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
11734b8d6ae5SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
11744b8d6ae5SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
11754b8d6ae5SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
11764b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
11774b8d6ae5SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
11784b8d6ae5SKonrad Dybcio 	{ }
11794b8d6ae5SKonrad Dybcio };
11804b8d6ae5SKonrad Dybcio 
11814b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
11824b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x45020,
11834b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
11844b8d6ae5SKonrad Dybcio 	.hid_width = 5,
11854b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
11864b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
11874b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11884b8d6ae5SKonrad Dybcio 		.name = "gcc_ufs_phy_axi_clk_src",
11894b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
11904b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
11914b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
11924b8d6ae5SKonrad Dybcio 	},
11934b8d6ae5SKonrad Dybcio };
11944b8d6ae5SKonrad Dybcio 
11954b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
11964b8d6ae5SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
11974b8d6ae5SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
11984b8d6ae5SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
11994b8d6ae5SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),
12004b8d6ae5SKonrad Dybcio 	{ }
12014b8d6ae5SKonrad Dybcio };
12024b8d6ae5SKonrad Dybcio 
12034b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
12044b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x45048,
12054b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
12064b8d6ae5SKonrad Dybcio 	.hid_width = 5,
12074b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
12084b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
12094b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12104b8d6ae5SKonrad Dybcio 		.name = "gcc_ufs_phy_ice_core_clk_src",
12114b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
12124b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
12134b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
12144b8d6ae5SKonrad Dybcio 	},
12154b8d6ae5SKonrad Dybcio };
12164b8d6ae5SKonrad Dybcio 
12174b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
12184b8d6ae5SKonrad Dybcio 	F(9600000, P_BI_TCXO, 2, 0, 0),
12194b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
12204b8d6ae5SKonrad Dybcio 	{ }
12214b8d6ae5SKonrad Dybcio };
12224b8d6ae5SKonrad Dybcio 
12234b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
12244b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x4507c,
12254b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
12264b8d6ae5SKonrad Dybcio 	.hid_width = 5,
12274b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
12284b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
12294b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12304b8d6ae5SKonrad Dybcio 		.name = "gcc_ufs_phy_phy_aux_clk_src",
12314b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
12324b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
12334b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
12344b8d6ae5SKonrad Dybcio 	},
12354b8d6ae5SKonrad Dybcio };
12364b8d6ae5SKonrad Dybcio 
12374b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
12384b8d6ae5SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
12394b8d6ae5SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_EARLY, 8, 0, 0),
12404b8d6ae5SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
12414b8d6ae5SKonrad Dybcio 	{ }
12424b8d6ae5SKonrad Dybcio };
12434b8d6ae5SKonrad Dybcio 
12444b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
12454b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x45060,
12464b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
12474b8d6ae5SKonrad Dybcio 	.hid_width = 5,
12484b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
12494b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
12504b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12514b8d6ae5SKonrad Dybcio 		.name = "gcc_ufs_phy_unipro_core_clk_src",
12524b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
12534b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
12544b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
12554b8d6ae5SKonrad Dybcio 	},
12564b8d6ae5SKonrad Dybcio };
12574b8d6ae5SKonrad Dybcio 
12584b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
12594b8d6ae5SKonrad Dybcio 	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),
12604b8d6ae5SKonrad Dybcio 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
12614b8d6ae5SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
12624b8d6ae5SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
12634b8d6ae5SKonrad Dybcio 	{ }
12644b8d6ae5SKonrad Dybcio };
12654b8d6ae5SKonrad Dybcio 
12664b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
12674b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1a01c,
12684b8d6ae5SKonrad Dybcio 	.mnd_width = 8,
12694b8d6ae5SKonrad Dybcio 	.hid_width = 5,
12704b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
12714b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
12724b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12734b8d6ae5SKonrad Dybcio 		.name = "gcc_usb30_prim_master_clk_src",
12744b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
12754b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
12764b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
12774b8d6ae5SKonrad Dybcio 	},
12784b8d6ae5SKonrad Dybcio };
12794b8d6ae5SKonrad Dybcio 
12804b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
12814b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
12824b8d6ae5SKonrad Dybcio 	F(20000000, P_GPLL0_OUT_AUX2, 15, 0, 0),
12834b8d6ae5SKonrad Dybcio 	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),
12844b8d6ae5SKonrad Dybcio 	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),
12854b8d6ae5SKonrad Dybcio 	{ }
12864b8d6ae5SKonrad Dybcio };
12874b8d6ae5SKonrad Dybcio 
12884b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
12894b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1a034,
12904b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
12914b8d6ae5SKonrad Dybcio 	.hid_width = 5,
12924b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
12934b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
12944b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12954b8d6ae5SKonrad Dybcio 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
12964b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
12974b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
12984b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
12994b8d6ae5SKonrad Dybcio 	},
13004b8d6ae5SKonrad Dybcio };
13014b8d6ae5SKonrad Dybcio 
13024b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_usb3_prim_phy_aux_clk_src[] = {
13034b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
13044b8d6ae5SKonrad Dybcio 	{ }
13054b8d6ae5SKonrad Dybcio };
13064b8d6ae5SKonrad Dybcio 
13074b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
13084b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x1a060,
13094b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
13104b8d6ae5SKonrad Dybcio 	.hid_width = 5,
13114b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_14,
13124b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
13134b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
13144b8d6ae5SKonrad Dybcio 		.name = "gcc_usb3_prim_phy_aux_clk_src",
13154b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_14,
13164b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_14),
13174b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
13184b8d6ae5SKonrad Dybcio 	},
13194b8d6ae5SKonrad Dybcio };
13204b8d6ae5SKonrad Dybcio 
13214b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_vs_ctrl_clk_src = {
13224b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x42030,
13234b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
13244b8d6ae5SKonrad Dybcio 	.hid_width = 5,
13254b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
13264b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
13274b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
13284b8d6ae5SKonrad Dybcio 		.name = "gcc_vs_ctrl_clk_src",
13294b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
13304b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
13314b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
13324b8d6ae5SKonrad Dybcio 	},
13334b8d6ae5SKonrad Dybcio };
13344b8d6ae5SKonrad Dybcio 
13354b8d6ae5SKonrad Dybcio static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {
13364b8d6ae5SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
13374b8d6ae5SKonrad Dybcio 	F(400000000, P_GPLL0_OUT_EARLY, 1.5, 0, 0),
13384b8d6ae5SKonrad Dybcio 	F(600000000, P_GPLL0_OUT_EARLY, 1, 0, 0),
13394b8d6ae5SKonrad Dybcio 	{ }
13404b8d6ae5SKonrad Dybcio };
13414b8d6ae5SKonrad Dybcio 
13424b8d6ae5SKonrad Dybcio static struct clk_rcg2 gcc_vsensor_clk_src = {
13434b8d6ae5SKonrad Dybcio 	.cmd_rcgr = 0x42018,
13444b8d6ae5SKonrad Dybcio 	.mnd_width = 0,
13454b8d6ae5SKonrad Dybcio 	.hid_width = 5,
13464b8d6ae5SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
13474b8d6ae5SKonrad Dybcio 	.freq_tbl = ftbl_gcc_vsensor_clk_src,
13484b8d6ae5SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
13494b8d6ae5SKonrad Dybcio 		.name = "gcc_vsensor_clk_src",
13504b8d6ae5SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
13514b8d6ae5SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
13524b8d6ae5SKonrad Dybcio 		.ops = &clk_rcg2_ops,
13534b8d6ae5SKonrad Dybcio 	},
13544b8d6ae5SKonrad Dybcio };
13554b8d6ae5SKonrad Dybcio 
13564b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ahb2phy_csi_clk = {
13574b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1d004,
13584b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
13594b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x1d004,
13604b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
13614b8d6ae5SKonrad Dybcio 	.clkr = {
13624b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1d004,
13634b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
13644b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
13654b8d6ae5SKonrad Dybcio 			.name = "gcc_ahb2phy_csi_clk",
13664b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
13674b8d6ae5SKonrad Dybcio 		},
13684b8d6ae5SKonrad Dybcio 	},
13694b8d6ae5SKonrad Dybcio };
13704b8d6ae5SKonrad Dybcio 
13714b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ahb2phy_usb_clk = {
13724b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1d008,
13734b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
13744b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x1d008,
13754b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
13764b8d6ae5SKonrad Dybcio 	.clkr = {
13774b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1d008,
13784b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
13794b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
13804b8d6ae5SKonrad Dybcio 			.name = "gcc_ahb2phy_usb_clk",
13814b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
13824b8d6ae5SKonrad Dybcio 		},
13834b8d6ae5SKonrad Dybcio 	},
13844b8d6ae5SKonrad Dybcio };
13854b8d6ae5SKonrad Dybcio 
13864b8d6ae5SKonrad Dybcio static struct clk_branch gcc_apc_vs_clk = {
13874b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4204c,
13884b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
13894b8d6ae5SKonrad Dybcio 	.clkr = {
13904b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4204c,
13914b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
13924b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
13934b8d6ae5SKonrad Dybcio 			.name = "gcc_apc_vs_clk",
13944b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
13954b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
13964b8d6ae5SKonrad Dybcio 			},
13974b8d6ae5SKonrad Dybcio 			.num_parents = 1,
13984b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
13994b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14004b8d6ae5SKonrad Dybcio 		},
14014b8d6ae5SKonrad Dybcio 	},
14024b8d6ae5SKonrad Dybcio };
14034b8d6ae5SKonrad Dybcio 
14044b8d6ae5SKonrad Dybcio static struct clk_branch gcc_bimc_gpu_axi_clk = {
14054b8d6ae5SKonrad Dybcio 	.halt_reg = 0x71154,
14064b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
14074b8d6ae5SKonrad Dybcio 	.clkr = {
14084b8d6ae5SKonrad Dybcio 		.enable_reg = 0x71154,
14094b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
14104b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14114b8d6ae5SKonrad Dybcio 			.name = "gcc_bimc_gpu_axi_clk",
14124b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14134b8d6ae5SKonrad Dybcio 		},
14144b8d6ae5SKonrad Dybcio 	},
14154b8d6ae5SKonrad Dybcio };
14164b8d6ae5SKonrad Dybcio 
14174b8d6ae5SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
14184b8d6ae5SKonrad Dybcio 	.halt_reg = 0x23004,
14194b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
14204b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x23004,
14214b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
14224b8d6ae5SKonrad Dybcio 	.clkr = {
14234b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
14244b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(10),
14254b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14264b8d6ae5SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
14274b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14284b8d6ae5SKonrad Dybcio 		},
14294b8d6ae5SKonrad Dybcio 	},
14304b8d6ae5SKonrad Dybcio };
14314b8d6ae5SKonrad Dybcio 
14324b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camera_ahb_clk = {
14334b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17008,
14344b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
14354b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17008,
14364b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
14374b8d6ae5SKonrad Dybcio 	.clkr = {
14384b8d6ae5SKonrad Dybcio 		.enable_reg = 0x17008,
14394b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
14404b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14414b8d6ae5SKonrad Dybcio 			.name = "gcc_camera_ahb_clk",
14424b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
14434b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14444b8d6ae5SKonrad Dybcio 		},
14454b8d6ae5SKonrad Dybcio 	},
14464b8d6ae5SKonrad Dybcio };
14474b8d6ae5SKonrad Dybcio 
14484b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camera_xo_clk = {
14494b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17028,
14504b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
14514b8d6ae5SKonrad Dybcio 	.clkr = {
14524b8d6ae5SKonrad Dybcio 		.enable_reg = 0x17028,
14534b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
14544b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14554b8d6ae5SKonrad Dybcio 			.name = "gcc_camera_xo_clk",
14564b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
14574b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14584b8d6ae5SKonrad Dybcio 		},
14594b8d6ae5SKonrad Dybcio 	},
14604b8d6ae5SKonrad Dybcio };
14614b8d6ae5SKonrad Dybcio 
14624b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cci_ahb_clk = {
14634b8d6ae5SKonrad Dybcio 	.halt_reg = 0x52020,
14644b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
14654b8d6ae5SKonrad Dybcio 	.clkr = {
14664b8d6ae5SKonrad Dybcio 		.enable_reg = 0x52020,
14674b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
14684b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14694b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cci_ahb_clk",
14704b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
14714b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
14724b8d6ae5SKonrad Dybcio 			},
14734b8d6ae5SKonrad Dybcio 			.num_parents = 1,
14744b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
14754b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14764b8d6ae5SKonrad Dybcio 		},
14774b8d6ae5SKonrad Dybcio 	},
14784b8d6ae5SKonrad Dybcio };
14794b8d6ae5SKonrad Dybcio 
14804b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cci_clk = {
14814b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5201c,
14824b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
14834b8d6ae5SKonrad Dybcio 	.clkr = {
14844b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5201c,
14854b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
14864b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
14874b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cci_clk",
14884b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
14894b8d6ae5SKonrad Dybcio 				&gcc_camss_cci_clk_src.clkr.hw,
14904b8d6ae5SKonrad Dybcio 			},
14914b8d6ae5SKonrad Dybcio 			.num_parents = 1,
14924b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
14934b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
14944b8d6ae5SKonrad Dybcio 		},
14954b8d6ae5SKonrad Dybcio 	},
14964b8d6ae5SKonrad Dybcio };
14974b8d6ae5SKonrad Dybcio 
14984b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cphy_csid0_clk = {
14994b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5504c,
15004b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15014b8d6ae5SKonrad Dybcio 	.clkr = {
15024b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5504c,
15034b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15044b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15054b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cphy_csid0_clk",
15064b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
15074b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
15084b8d6ae5SKonrad Dybcio 			},
15094b8d6ae5SKonrad Dybcio 			.num_parents = 1,
15104b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
15114b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15124b8d6ae5SKonrad Dybcio 		},
15134b8d6ae5SKonrad Dybcio 	},
15144b8d6ae5SKonrad Dybcio };
15154b8d6ae5SKonrad Dybcio 
15164b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cphy_csid1_clk = {
15174b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55088,
15184b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15194b8d6ae5SKonrad Dybcio 	.clkr = {
15204b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55088,
15214b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15224b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15234b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cphy_csid1_clk",
15244b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
15254b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
15264b8d6ae5SKonrad Dybcio 			},
15274b8d6ae5SKonrad Dybcio 			.num_parents = 1,
15284b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
15294b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15304b8d6ae5SKonrad Dybcio 		},
15314b8d6ae5SKonrad Dybcio 	},
15324b8d6ae5SKonrad Dybcio };
15334b8d6ae5SKonrad Dybcio 
15344b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cphy_csid2_clk = {
15354b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550c0,
15364b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15374b8d6ae5SKonrad Dybcio 	.clkr = {
15384b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550c0,
15394b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15404b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15414b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cphy_csid2_clk",
15424b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
15434b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
15444b8d6ae5SKonrad Dybcio 			},
15454b8d6ae5SKonrad Dybcio 			.num_parents = 1,
15464b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
15474b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15484b8d6ae5SKonrad Dybcio 		},
15494b8d6ae5SKonrad Dybcio 	},
15504b8d6ae5SKonrad Dybcio };
15514b8d6ae5SKonrad Dybcio 
15524b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cphy_csid3_clk = {
15534b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550fc,
15544b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15554b8d6ae5SKonrad Dybcio 	.clkr = {
15564b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550fc,
15574b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15584b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15594b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cphy_csid3_clk",
15604b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
15614b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
15624b8d6ae5SKonrad Dybcio 			},
15634b8d6ae5SKonrad Dybcio 			.num_parents = 1,
15644b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
15654b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15664b8d6ae5SKonrad Dybcio 		},
15674b8d6ae5SKonrad Dybcio 	},
15684b8d6ae5SKonrad Dybcio };
15694b8d6ae5SKonrad Dybcio 
15704b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cpp_ahb_clk = {
15714b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560e8,
15724b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15734b8d6ae5SKonrad Dybcio 	.clkr = {
15744b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560e8,
15754b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15764b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15774b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cpp_ahb_clk",
15784b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
15794b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
15804b8d6ae5SKonrad Dybcio 			},
15814b8d6ae5SKonrad Dybcio 			.num_parents = 1,
15824b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
15834b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15844b8d6ae5SKonrad Dybcio 		},
15854b8d6ae5SKonrad Dybcio 	},
15864b8d6ae5SKonrad Dybcio };
15874b8d6ae5SKonrad Dybcio 
15884b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cpp_axi_clk = {
15894b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560f4,
15904b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
15914b8d6ae5SKonrad Dybcio 	.clkr = {
15924b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560f4,
15934b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
15944b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
15954b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cpp_axi_clk",
15964b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
15974b8d6ae5SKonrad Dybcio 		},
15984b8d6ae5SKonrad Dybcio 	},
15994b8d6ae5SKonrad Dybcio };
16004b8d6ae5SKonrad Dybcio 
16014b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cpp_clk = {
16024b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560e0,
16034b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16044b8d6ae5SKonrad Dybcio 	.clkr = {
16054b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560e0,
16064b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16074b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16084b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cpp_clk",
16094b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
16104b8d6ae5SKonrad Dybcio 				&gcc_camss_cpp_clk_src.clkr.hw,
16114b8d6ae5SKonrad Dybcio 			},
16124b8d6ae5SKonrad Dybcio 			.num_parents = 1,
16134b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
16144b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
16154b8d6ae5SKonrad Dybcio 		},
16164b8d6ae5SKonrad Dybcio 	},
16174b8d6ae5SKonrad Dybcio };
16184b8d6ae5SKonrad Dybcio 
16194b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_cpp_vbif_ahb_clk = {
16204b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560f0,
16214b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16224b8d6ae5SKonrad Dybcio 	.clkr = {
16234b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560f0,
16244b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16254b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16264b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_cpp_vbif_ahb_clk",
16274b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
16284b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
16294b8d6ae5SKonrad Dybcio 			},
16304b8d6ae5SKonrad Dybcio 			.num_parents = 1,
16314b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
16324b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
16334b8d6ae5SKonrad Dybcio 		},
16344b8d6ae5SKonrad Dybcio 	},
16354b8d6ae5SKonrad Dybcio };
16364b8d6ae5SKonrad Dybcio 
16374b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi0_ahb_clk = {
16384b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55050,
16394b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16404b8d6ae5SKonrad Dybcio 	.clkr = {
16414b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55050,
16424b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16434b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16444b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi0_ahb_clk",
16454b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
16464b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
16474b8d6ae5SKonrad Dybcio 			},
16484b8d6ae5SKonrad Dybcio 			.num_parents = 1,
16494b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
16504b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
16514b8d6ae5SKonrad Dybcio 		},
16524b8d6ae5SKonrad Dybcio 	},
16534b8d6ae5SKonrad Dybcio };
16544b8d6ae5SKonrad Dybcio 
16554b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi0_clk = {
16564b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55048,
16574b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16584b8d6ae5SKonrad Dybcio 	.clkr = {
16594b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55048,
16604b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16614b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16624b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi0_clk",
16634b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
16644b8d6ae5SKonrad Dybcio 				&gcc_camss_csi0_clk_src.clkr.hw,
16654b8d6ae5SKonrad Dybcio 			},
16664b8d6ae5SKonrad Dybcio 			.num_parents = 1,
16674b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
16684b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
16694b8d6ae5SKonrad Dybcio 		},
16704b8d6ae5SKonrad Dybcio 	},
16714b8d6ae5SKonrad Dybcio };
16724b8d6ae5SKonrad Dybcio 
16734b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi0phytimer_clk = {
16744b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5301c,
16754b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16764b8d6ae5SKonrad Dybcio 	.clkr = {
16774b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5301c,
16784b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16794b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16804b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi0phytimer_clk",
16814b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
16824b8d6ae5SKonrad Dybcio 				&gcc_camss_csi0phytimer_clk_src.clkr.hw,
16834b8d6ae5SKonrad Dybcio 			},
16844b8d6ae5SKonrad Dybcio 			.num_parents = 1,
16854b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
16864b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
16874b8d6ae5SKonrad Dybcio 		},
16884b8d6ae5SKonrad Dybcio 	},
16894b8d6ae5SKonrad Dybcio };
16904b8d6ae5SKonrad Dybcio 
16914b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi0pix_clk = {
16924b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55060,
16934b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
16944b8d6ae5SKonrad Dybcio 	.clkr = {
16954b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55060,
16964b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
16974b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16984b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi0pix_clk",
16994b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17004b8d6ae5SKonrad Dybcio 				&gcc_camss_csi0_clk_src.clkr.hw,
17014b8d6ae5SKonrad Dybcio 			},
17024b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17034b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17044b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17054b8d6ae5SKonrad Dybcio 		},
17064b8d6ae5SKonrad Dybcio 	},
17074b8d6ae5SKonrad Dybcio };
17084b8d6ae5SKonrad Dybcio 
17094b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi0rdi_clk = {
17104b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55058,
17114b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
17124b8d6ae5SKonrad Dybcio 	.clkr = {
17134b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55058,
17144b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
17154b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17164b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi0rdi_clk",
17174b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17184b8d6ae5SKonrad Dybcio 				&gcc_camss_csi0_clk_src.clkr.hw,
17194b8d6ae5SKonrad Dybcio 			},
17204b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17214b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17224b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17234b8d6ae5SKonrad Dybcio 		},
17244b8d6ae5SKonrad Dybcio 	},
17254b8d6ae5SKonrad Dybcio };
17264b8d6ae5SKonrad Dybcio 
17274b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi1_ahb_clk = {
17284b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5508c,
17294b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
17304b8d6ae5SKonrad Dybcio 	.clkr = {
17314b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5508c,
17324b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
17334b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17344b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi1_ahb_clk",
17354b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17364b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
17374b8d6ae5SKonrad Dybcio 			},
17384b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17394b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17404b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17414b8d6ae5SKonrad Dybcio 		},
17424b8d6ae5SKonrad Dybcio 	},
17434b8d6ae5SKonrad Dybcio };
17444b8d6ae5SKonrad Dybcio 
17454b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi1_clk = {
17464b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55084,
17474b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
17484b8d6ae5SKonrad Dybcio 	.clkr = {
17494b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55084,
17504b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
17514b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17524b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi1_clk",
17534b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17544b8d6ae5SKonrad Dybcio 				&gcc_camss_csi1_clk_src.clkr.hw,
17554b8d6ae5SKonrad Dybcio 			},
17564b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17574b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17584b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17594b8d6ae5SKonrad Dybcio 		},
17604b8d6ae5SKonrad Dybcio 	},
17614b8d6ae5SKonrad Dybcio };
17624b8d6ae5SKonrad Dybcio 
17634b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi1phytimer_clk = {
17644b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5303c,
17654b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
17664b8d6ae5SKonrad Dybcio 	.clkr = {
17674b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5303c,
17684b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
17694b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17704b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi1phytimer_clk",
17714b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17724b8d6ae5SKonrad Dybcio 				&gcc_camss_csi1phytimer_clk_src.clkr.hw,
17734b8d6ae5SKonrad Dybcio 			},
17744b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17754b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17764b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17774b8d6ae5SKonrad Dybcio 		},
17784b8d6ae5SKonrad Dybcio 	},
17794b8d6ae5SKonrad Dybcio };
17804b8d6ae5SKonrad Dybcio 
17814b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi1pix_clk = {
17824b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5509c,
17834b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
17844b8d6ae5SKonrad Dybcio 	.clkr = {
17854b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5509c,
17864b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
17874b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17884b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi1pix_clk",
17894b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
17904b8d6ae5SKonrad Dybcio 				&gcc_camss_csi1_clk_src.clkr.hw,
17914b8d6ae5SKonrad Dybcio 			},
17924b8d6ae5SKonrad Dybcio 			.num_parents = 1,
17934b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17944b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
17954b8d6ae5SKonrad Dybcio 		},
17964b8d6ae5SKonrad Dybcio 	},
17974b8d6ae5SKonrad Dybcio };
17984b8d6ae5SKonrad Dybcio 
17994b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi1rdi_clk = {
18004b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55094,
18014b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18024b8d6ae5SKonrad Dybcio 	.clkr = {
18034b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55094,
18044b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18054b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18064b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi1rdi_clk",
18074b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18084b8d6ae5SKonrad Dybcio 				&gcc_camss_csi1_clk_src.clkr.hw,
18094b8d6ae5SKonrad Dybcio 			},
18104b8d6ae5SKonrad Dybcio 			.num_parents = 1,
18114b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18124b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
18134b8d6ae5SKonrad Dybcio 		},
18144b8d6ae5SKonrad Dybcio 	},
18154b8d6ae5SKonrad Dybcio };
18164b8d6ae5SKonrad Dybcio 
18174b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi2_ahb_clk = {
18184b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550c4,
18194b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18204b8d6ae5SKonrad Dybcio 	.clkr = {
18214b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550c4,
18224b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18234b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18244b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi2_ahb_clk",
18254b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18264b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
18274b8d6ae5SKonrad Dybcio 			},
18284b8d6ae5SKonrad Dybcio 			.num_parents = 1,
18294b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18304b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
18314b8d6ae5SKonrad Dybcio 		},
18324b8d6ae5SKonrad Dybcio 	},
18334b8d6ae5SKonrad Dybcio };
18344b8d6ae5SKonrad Dybcio 
18354b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi2_clk = {
18364b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550bc,
18374b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18384b8d6ae5SKonrad Dybcio 	.clkr = {
18394b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550bc,
18404b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18414b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18424b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi2_clk",
18434b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18444b8d6ae5SKonrad Dybcio 				&gcc_camss_csi2_clk_src.clkr.hw,
18454b8d6ae5SKonrad Dybcio 			},
18464b8d6ae5SKonrad Dybcio 			.num_parents = 1,
18474b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18484b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
18494b8d6ae5SKonrad Dybcio 		},
18504b8d6ae5SKonrad Dybcio 	},
18514b8d6ae5SKonrad Dybcio };
18524b8d6ae5SKonrad Dybcio 
18534b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi2phytimer_clk = {
18544b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5305c,
18554b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18564b8d6ae5SKonrad Dybcio 	.clkr = {
18574b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5305c,
18584b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18594b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18604b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi2phytimer_clk",
18614b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18624b8d6ae5SKonrad Dybcio 				&gcc_camss_csi2phytimer_clk_src.clkr.hw,
18634b8d6ae5SKonrad Dybcio 			},
18644b8d6ae5SKonrad Dybcio 			.num_parents = 1,
18654b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18664b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
18674b8d6ae5SKonrad Dybcio 		},
18684b8d6ae5SKonrad Dybcio 	},
18694b8d6ae5SKonrad Dybcio };
18704b8d6ae5SKonrad Dybcio 
18714b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi2pix_clk = {
18724b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550d4,
18734b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18744b8d6ae5SKonrad Dybcio 	.clkr = {
18754b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550d4,
18764b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18774b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18784b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi2pix_clk",
18794b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18804b8d6ae5SKonrad Dybcio 				&gcc_camss_csi2_clk_src.clkr.hw,
18814b8d6ae5SKonrad Dybcio 			},
18824b8d6ae5SKonrad Dybcio 			.num_parents = 1,
18834b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18844b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
18854b8d6ae5SKonrad Dybcio 		},
18864b8d6ae5SKonrad Dybcio 	},
18874b8d6ae5SKonrad Dybcio };
18884b8d6ae5SKonrad Dybcio 
18894b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi2rdi_clk = {
18904b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550cc,
18914b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
18924b8d6ae5SKonrad Dybcio 	.clkr = {
18934b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550cc,
18944b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
18954b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18964b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi2rdi_clk",
18974b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
18984b8d6ae5SKonrad Dybcio 				&gcc_camss_csi2_clk_src.clkr.hw,
18994b8d6ae5SKonrad Dybcio 			},
19004b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19014b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19024b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19034b8d6ae5SKonrad Dybcio 		},
19044b8d6ae5SKonrad Dybcio 	},
19054b8d6ae5SKonrad Dybcio };
19064b8d6ae5SKonrad Dybcio 
19074b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi3_ahb_clk = {
19084b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55100,
19094b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
19104b8d6ae5SKonrad Dybcio 	.clkr = {
19114b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55100,
19124b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
19134b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19144b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi3_ahb_clk",
19154b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
19164b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
19174b8d6ae5SKonrad Dybcio 			},
19184b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19194b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19204b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19214b8d6ae5SKonrad Dybcio 		},
19224b8d6ae5SKonrad Dybcio 	},
19234b8d6ae5SKonrad Dybcio };
19244b8d6ae5SKonrad Dybcio 
19254b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi3_clk = {
19264b8d6ae5SKonrad Dybcio 	.halt_reg = 0x550f8,
19274b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
19284b8d6ae5SKonrad Dybcio 	.clkr = {
19294b8d6ae5SKonrad Dybcio 		.enable_reg = 0x550f8,
19304b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
19314b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19324b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi3_clk",
19334b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
19344b8d6ae5SKonrad Dybcio 				&gcc_camss_csi3_clk_src.clkr.hw,
19354b8d6ae5SKonrad Dybcio 			},
19364b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19374b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19384b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19394b8d6ae5SKonrad Dybcio 		},
19404b8d6ae5SKonrad Dybcio 	},
19414b8d6ae5SKonrad Dybcio };
19424b8d6ae5SKonrad Dybcio 
19434b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi3pix_clk = {
19444b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55110,
19454b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
19464b8d6ae5SKonrad Dybcio 	.clkr = {
19474b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55110,
19484b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
19494b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19504b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi3pix_clk",
19514b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
19524b8d6ae5SKonrad Dybcio 				&gcc_camss_csi3_clk_src.clkr.hw,
19534b8d6ae5SKonrad Dybcio 			},
19544b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19554b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19564b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19574b8d6ae5SKonrad Dybcio 		},
19584b8d6ae5SKonrad Dybcio 	},
19594b8d6ae5SKonrad Dybcio };
19604b8d6ae5SKonrad Dybcio 
19614b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi3rdi_clk = {
19624b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55108,
19634b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
19644b8d6ae5SKonrad Dybcio 	.clkr = {
19654b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55108,
19664b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
19674b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19684b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi3rdi_clk",
19694b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
19704b8d6ae5SKonrad Dybcio 				&gcc_camss_csi3_clk_src.clkr.hw,
19714b8d6ae5SKonrad Dybcio 			},
19724b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19734b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19744b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19754b8d6ae5SKonrad Dybcio 		},
19764b8d6ae5SKonrad Dybcio 	},
19774b8d6ae5SKonrad Dybcio };
19784b8d6ae5SKonrad Dybcio 
19794b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi_vfe0_clk = {
19804b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54074,
19814b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
19824b8d6ae5SKonrad Dybcio 	.clkr = {
19834b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54074,
19844b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
19854b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19864b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi_vfe0_clk",
19874b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
19884b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe0_clk_src.clkr.hw,
19894b8d6ae5SKonrad Dybcio 			},
19904b8d6ae5SKonrad Dybcio 			.num_parents = 1,
19914b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19924b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
19934b8d6ae5SKonrad Dybcio 		},
19944b8d6ae5SKonrad Dybcio 	},
19954b8d6ae5SKonrad Dybcio };
19964b8d6ae5SKonrad Dybcio 
19974b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csi_vfe1_clk = {
19984b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54080,
19994b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20004b8d6ae5SKonrad Dybcio 	.clkr = {
20014b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54080,
20024b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20034b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20044b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csi_vfe1_clk",
20054b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20064b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe1_clk_src.clkr.hw,
20074b8d6ae5SKonrad Dybcio 			},
20084b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20094b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20104b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
20114b8d6ae5SKonrad Dybcio 		},
20124b8d6ae5SKonrad Dybcio 	},
20134b8d6ae5SKonrad Dybcio };
20144b8d6ae5SKonrad Dybcio 
20154b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csiphy0_clk = {
20164b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55018,
20174b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20184b8d6ae5SKonrad Dybcio 	.clkr = {
20194b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55018,
20204b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20214b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20224b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csiphy0_clk",
20234b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20244b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
20254b8d6ae5SKonrad Dybcio 			},
20264b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20274b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20284b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
20294b8d6ae5SKonrad Dybcio 		},
20304b8d6ae5SKonrad Dybcio 	},
20314b8d6ae5SKonrad Dybcio };
20324b8d6ae5SKonrad Dybcio 
20334b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csiphy1_clk = {
20344b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5501c,
20354b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20364b8d6ae5SKonrad Dybcio 	.clkr = {
20374b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5501c,
20384b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20394b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20404b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csiphy1_clk",
20414b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20424b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
20434b8d6ae5SKonrad Dybcio 			},
20444b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20454b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20464b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
20474b8d6ae5SKonrad Dybcio 		},
20484b8d6ae5SKonrad Dybcio 	},
20494b8d6ae5SKonrad Dybcio };
20504b8d6ae5SKonrad Dybcio 
20514b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_csiphy2_clk = {
20524b8d6ae5SKonrad Dybcio 	.halt_reg = 0x55020,
20534b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20544b8d6ae5SKonrad Dybcio 	.clkr = {
20554b8d6ae5SKonrad Dybcio 		.enable_reg = 0x55020,
20564b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20574b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20584b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_csiphy2_clk",
20594b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20604b8d6ae5SKonrad Dybcio 				&gcc_camss_csiphy_clk_src.clkr.hw,
20614b8d6ae5SKonrad Dybcio 			},
20624b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20634b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20644b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
20654b8d6ae5SKonrad Dybcio 		},
20664b8d6ae5SKonrad Dybcio 	},
20674b8d6ae5SKonrad Dybcio };
20684b8d6ae5SKonrad Dybcio 
20694b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_gp0_clk = {
20704b8d6ae5SKonrad Dybcio 	.halt_reg = 0x50018,
20714b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20724b8d6ae5SKonrad Dybcio 	.clkr = {
20734b8d6ae5SKonrad Dybcio 		.enable_reg = 0x50018,
20744b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20754b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20764b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_gp0_clk",
20774b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20784b8d6ae5SKonrad Dybcio 				&gcc_camss_gp0_clk_src.clkr.hw,
20794b8d6ae5SKonrad Dybcio 			},
20804b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20814b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20824b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
20834b8d6ae5SKonrad Dybcio 		},
20844b8d6ae5SKonrad Dybcio 	},
20854b8d6ae5SKonrad Dybcio };
20864b8d6ae5SKonrad Dybcio 
20874b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_gp1_clk = {
20884b8d6ae5SKonrad Dybcio 	.halt_reg = 0x50034,
20894b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
20904b8d6ae5SKonrad Dybcio 	.clkr = {
20914b8d6ae5SKonrad Dybcio 		.enable_reg = 0x50034,
20924b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
20934b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20944b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_gp1_clk",
20954b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
20964b8d6ae5SKonrad Dybcio 				&gcc_camss_gp1_clk_src.clkr.hw,
20974b8d6ae5SKonrad Dybcio 			},
20984b8d6ae5SKonrad Dybcio 			.num_parents = 1,
20994b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
21004b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21014b8d6ae5SKonrad Dybcio 		},
21024b8d6ae5SKonrad Dybcio 	},
21034b8d6ae5SKonrad Dybcio };
21044b8d6ae5SKonrad Dybcio 
21054b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_ispif_ahb_clk = {
21064b8d6ae5SKonrad Dybcio 	.halt_reg = 0x540a4,
21074b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21084b8d6ae5SKonrad Dybcio 	.clkr = {
21094b8d6ae5SKonrad Dybcio 		.enable_reg = 0x540a4,
21104b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21114b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21124b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_ispif_ahb_clk",
21134b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
21144b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
21154b8d6ae5SKonrad Dybcio 			},
21164b8d6ae5SKonrad Dybcio 			.num_parents = 1,
21174b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
21184b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21194b8d6ae5SKonrad Dybcio 		},
21204b8d6ae5SKonrad Dybcio 	},
21214b8d6ae5SKonrad Dybcio };
21224b8d6ae5SKonrad Dybcio 
21234b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_jpeg_ahb_clk = {
21244b8d6ae5SKonrad Dybcio 	.halt_reg = 0x52048,
21254b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21264b8d6ae5SKonrad Dybcio 	.clkr = {
21274b8d6ae5SKonrad Dybcio 		.enable_reg = 0x52048,
21284b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21294b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21304b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_jpeg_ahb_clk",
21314b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
21324b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
21334b8d6ae5SKonrad Dybcio 			},
21344b8d6ae5SKonrad Dybcio 			.num_parents = 1,
21354b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
21364b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21374b8d6ae5SKonrad Dybcio 		},
21384b8d6ae5SKonrad Dybcio 	},
21394b8d6ae5SKonrad Dybcio };
21404b8d6ae5SKonrad Dybcio 
21414b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_jpeg_axi_clk = {
21424b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5204c,
21434b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21444b8d6ae5SKonrad Dybcio 	.clkr = {
21454b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5204c,
21464b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21474b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21484b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_jpeg_axi_clk",
21494b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21504b8d6ae5SKonrad Dybcio 		},
21514b8d6ae5SKonrad Dybcio 	},
21524b8d6ae5SKonrad Dybcio };
21534b8d6ae5SKonrad Dybcio 
21544b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_jpeg_clk = {
21554b8d6ae5SKonrad Dybcio 	.halt_reg = 0x52040,
21564b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21574b8d6ae5SKonrad Dybcio 	.clkr = {
21584b8d6ae5SKonrad Dybcio 		.enable_reg = 0x52040,
21594b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21604b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21614b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_jpeg_clk",
21624b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
21634b8d6ae5SKonrad Dybcio 				&gcc_camss_jpeg_clk_src.clkr.hw,
21644b8d6ae5SKonrad Dybcio 			},
21654b8d6ae5SKonrad Dybcio 			.num_parents = 1,
21664b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
21674b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21684b8d6ae5SKonrad Dybcio 		},
21694b8d6ae5SKonrad Dybcio 	},
21704b8d6ae5SKonrad Dybcio };
21714b8d6ae5SKonrad Dybcio 
21724b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_mclk0_clk = {
21734b8d6ae5SKonrad Dybcio 	.halt_reg = 0x51018,
21744b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21754b8d6ae5SKonrad Dybcio 	.clkr = {
21764b8d6ae5SKonrad Dybcio 		.enable_reg = 0x51018,
21774b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21784b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21794b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_mclk0_clk",
21804b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
21814b8d6ae5SKonrad Dybcio 				&gcc_camss_mclk0_clk_src.clkr.hw,
21824b8d6ae5SKonrad Dybcio 			},
21834b8d6ae5SKonrad Dybcio 			.num_parents = 1,
21844b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
21854b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
21864b8d6ae5SKonrad Dybcio 		},
21874b8d6ae5SKonrad Dybcio 	},
21884b8d6ae5SKonrad Dybcio };
21894b8d6ae5SKonrad Dybcio 
21904b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_mclk1_clk = {
21914b8d6ae5SKonrad Dybcio 	.halt_reg = 0x51034,
21924b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
21934b8d6ae5SKonrad Dybcio 	.clkr = {
21944b8d6ae5SKonrad Dybcio 		.enable_reg = 0x51034,
21954b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
21964b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21974b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_mclk1_clk",
21984b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
21994b8d6ae5SKonrad Dybcio 				&gcc_camss_mclk1_clk_src.clkr.hw,
22004b8d6ae5SKonrad Dybcio 			},
22014b8d6ae5SKonrad Dybcio 			.num_parents = 1,
22024b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
22034b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22044b8d6ae5SKonrad Dybcio 		},
22054b8d6ae5SKonrad Dybcio 	},
22064b8d6ae5SKonrad Dybcio };
22074b8d6ae5SKonrad Dybcio 
22084b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_mclk2_clk = {
22094b8d6ae5SKonrad Dybcio 	.halt_reg = 0x51050,
22104b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
22114b8d6ae5SKonrad Dybcio 	.clkr = {
22124b8d6ae5SKonrad Dybcio 		.enable_reg = 0x51050,
22134b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
22144b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22154b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_mclk2_clk",
22164b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
22174b8d6ae5SKonrad Dybcio 				&gcc_camss_mclk2_clk_src.clkr.hw,
22184b8d6ae5SKonrad Dybcio 			},
22194b8d6ae5SKonrad Dybcio 			.num_parents = 1,
22204b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
22214b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22224b8d6ae5SKonrad Dybcio 		},
22234b8d6ae5SKonrad Dybcio 	},
22244b8d6ae5SKonrad Dybcio };
22254b8d6ae5SKonrad Dybcio 
22264b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_mclk3_clk = {
22274b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5106c,
22284b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
22294b8d6ae5SKonrad Dybcio 	.clkr = {
22304b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5106c,
22314b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
22324b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22334b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_mclk3_clk",
22344b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
22354b8d6ae5SKonrad Dybcio 				&gcc_camss_mclk3_clk_src.clkr.hw,
22364b8d6ae5SKonrad Dybcio 			},
22374b8d6ae5SKonrad Dybcio 			.num_parents = 1,
22384b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
22394b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22404b8d6ae5SKonrad Dybcio 		},
22414b8d6ae5SKonrad Dybcio 	},
22424b8d6ae5SKonrad Dybcio };
22434b8d6ae5SKonrad Dybcio 
22444b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_micro_ahb_clk = {
22454b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560b0,
22464b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
22474b8d6ae5SKonrad Dybcio 	.clkr = {
22484b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560b0,
22494b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
22504b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22514b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_micro_ahb_clk",
22524b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
22534b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
22544b8d6ae5SKonrad Dybcio 			},
22554b8d6ae5SKonrad Dybcio 			.num_parents = 1,
22564b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
22574b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22584b8d6ae5SKonrad Dybcio 		},
22594b8d6ae5SKonrad Dybcio 	},
22604b8d6ae5SKonrad Dybcio };
22614b8d6ae5SKonrad Dybcio 
22624b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_throttle_nrt_axi_clk = {
22634b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560a4,
22644b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
22654b8d6ae5SKonrad Dybcio 	.clkr = {
22664b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
22674b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(27),
22684b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22694b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_throttle_nrt_axi_clk",
22704b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22714b8d6ae5SKonrad Dybcio 		},
22724b8d6ae5SKonrad Dybcio 	},
22734b8d6ae5SKonrad Dybcio };
22744b8d6ae5SKonrad Dybcio 
22754b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_throttle_rt_axi_clk = {
22764b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560a8,
22774b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
22784b8d6ae5SKonrad Dybcio 	.clkr = {
22794b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
22804b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(26),
22814b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22824b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_throttle_rt_axi_clk",
22834b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
22844b8d6ae5SKonrad Dybcio 		},
22854b8d6ae5SKonrad Dybcio 	},
22864b8d6ae5SKonrad Dybcio };
22874b8d6ae5SKonrad Dybcio 
22884b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_top_ahb_clk = {
22894b8d6ae5SKonrad Dybcio 	.halt_reg = 0x560a0,
22904b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
22914b8d6ae5SKonrad Dybcio 	.clkr = {
22924b8d6ae5SKonrad Dybcio 		.enable_reg = 0x560a0,
22934b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
22944b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22954b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_top_ahb_clk",
22964b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
22974b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
22984b8d6ae5SKonrad Dybcio 			},
22994b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23004b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23014b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23024b8d6ae5SKonrad Dybcio 		},
23034b8d6ae5SKonrad Dybcio 	},
23044b8d6ae5SKonrad Dybcio };
23054b8d6ae5SKonrad Dybcio 
23064b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe0_ahb_clk = {
23074b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54034,
23084b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23094b8d6ae5SKonrad Dybcio 	.clkr = {
23104b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54034,
23114b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
23124b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23134b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe0_ahb_clk",
23144b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
23154b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
23164b8d6ae5SKonrad Dybcio 			},
23174b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23184b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23194b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23204b8d6ae5SKonrad Dybcio 		},
23214b8d6ae5SKonrad Dybcio 	},
23224b8d6ae5SKonrad Dybcio };
23234b8d6ae5SKonrad Dybcio 
23244b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe0_clk = {
23254b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54028,
23264b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23274b8d6ae5SKonrad Dybcio 	.clkr = {
23284b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54028,
23294b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
23304b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23314b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe0_clk",
23324b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
23334b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe0_clk_src.clkr.hw,
23344b8d6ae5SKonrad Dybcio 			},
23354b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23364b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23374b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23384b8d6ae5SKonrad Dybcio 		},
23394b8d6ae5SKonrad Dybcio 	},
23404b8d6ae5SKonrad Dybcio };
23414b8d6ae5SKonrad Dybcio 
23424b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe0_stream_clk = {
23434b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54030,
23444b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23454b8d6ae5SKonrad Dybcio 	.clkr = {
23464b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54030,
23474b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
23484b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23494b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe0_stream_clk",
23504b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
23514b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe0_clk_src.clkr.hw,
23524b8d6ae5SKonrad Dybcio 			},
23534b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23544b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23554b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23564b8d6ae5SKonrad Dybcio 		},
23574b8d6ae5SKonrad Dybcio 	},
23584b8d6ae5SKonrad Dybcio };
23594b8d6ae5SKonrad Dybcio 
23604b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe1_ahb_clk = {
23614b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5406c,
23624b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23634b8d6ae5SKonrad Dybcio 	.clkr = {
23644b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5406c,
23654b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
23664b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23674b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe1_ahb_clk",
23684b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
23694b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
23704b8d6ae5SKonrad Dybcio 			},
23714b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23724b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23734b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23744b8d6ae5SKonrad Dybcio 		},
23754b8d6ae5SKonrad Dybcio 	},
23764b8d6ae5SKonrad Dybcio };
23774b8d6ae5SKonrad Dybcio 
23784b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe1_clk = {
23794b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54060,
23804b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23814b8d6ae5SKonrad Dybcio 	.clkr = {
23824b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54060,
23834b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
23844b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23854b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe1_clk",
23864b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
23874b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe1_clk_src.clkr.hw,
23884b8d6ae5SKonrad Dybcio 			},
23894b8d6ae5SKonrad Dybcio 			.num_parents = 1,
23904b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
23914b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
23924b8d6ae5SKonrad Dybcio 		},
23934b8d6ae5SKonrad Dybcio 	},
23944b8d6ae5SKonrad Dybcio };
23954b8d6ae5SKonrad Dybcio 
23964b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe1_stream_clk = {
23974b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54068,
23984b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
23994b8d6ae5SKonrad Dybcio 	.clkr = {
24004b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54068,
24014b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
24024b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24034b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe1_stream_clk",
24044b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
24054b8d6ae5SKonrad Dybcio 				&gcc_camss_vfe1_clk_src.clkr.hw,
24064b8d6ae5SKonrad Dybcio 			},
24074b8d6ae5SKonrad Dybcio 			.num_parents = 1,
24084b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
24094b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24104b8d6ae5SKonrad Dybcio 		},
24114b8d6ae5SKonrad Dybcio 	},
24124b8d6ae5SKonrad Dybcio };
24134b8d6ae5SKonrad Dybcio 
24144b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe_tsctr_clk = {
24154b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5409c,
24164b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
24174b8d6ae5SKonrad Dybcio 	.clkr = {
24184b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5409c,
24194b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
24204b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24214b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe_tsctr_clk",
24224b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24234b8d6ae5SKonrad Dybcio 		},
24244b8d6ae5SKonrad Dybcio 	},
24254b8d6ae5SKonrad Dybcio };
24264b8d6ae5SKonrad Dybcio 
24274b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe_vbif_ahb_clk = {
24284b8d6ae5SKonrad Dybcio 	.halt_reg = 0x5408c,
24294b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
24304b8d6ae5SKonrad Dybcio 	.clkr = {
24314b8d6ae5SKonrad Dybcio 		.enable_reg = 0x5408c,
24324b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
24334b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24344b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe_vbif_ahb_clk",
24354b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
24364b8d6ae5SKonrad Dybcio 				&gcc_camss_ahb_clk_src.clkr.hw,
24374b8d6ae5SKonrad Dybcio 			},
24384b8d6ae5SKonrad Dybcio 			.num_parents = 1,
24394b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
24404b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24414b8d6ae5SKonrad Dybcio 		},
24424b8d6ae5SKonrad Dybcio 	},
24434b8d6ae5SKonrad Dybcio };
24444b8d6ae5SKonrad Dybcio 
24454b8d6ae5SKonrad Dybcio static struct clk_branch gcc_camss_vfe_vbif_axi_clk = {
24464b8d6ae5SKonrad Dybcio 	.halt_reg = 0x54090,
24474b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
24484b8d6ae5SKonrad Dybcio 	.clkr = {
24494b8d6ae5SKonrad Dybcio 		.enable_reg = 0x54090,
24504b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
24514b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24524b8d6ae5SKonrad Dybcio 			.name = "gcc_camss_vfe_vbif_axi_clk",
24534b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24544b8d6ae5SKonrad Dybcio 		},
24554b8d6ae5SKonrad Dybcio 	},
24564b8d6ae5SKonrad Dybcio };
24574b8d6ae5SKonrad Dybcio 
24584b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ce1_ahb_clk = {
24594b8d6ae5SKonrad Dybcio 	.halt_reg = 0x2700c,
24604b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
24614b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x2700c,
24624b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
24634b8d6ae5SKonrad Dybcio 	.clkr = {
24644b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
24654b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(3),
24664b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24674b8d6ae5SKonrad Dybcio 			.name = "gcc_ce1_ahb_clk",
24684b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24694b8d6ae5SKonrad Dybcio 		},
24704b8d6ae5SKonrad Dybcio 	},
24714b8d6ae5SKonrad Dybcio };
24724b8d6ae5SKonrad Dybcio 
24734b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ce1_axi_clk = {
24744b8d6ae5SKonrad Dybcio 	.halt_reg = 0x27008,
24754b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
24764b8d6ae5SKonrad Dybcio 	.clkr = {
24774b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
24784b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(4),
24794b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24804b8d6ae5SKonrad Dybcio 			.name = "gcc_ce1_axi_clk",
24814b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24824b8d6ae5SKonrad Dybcio 		},
24834b8d6ae5SKonrad Dybcio 	},
24844b8d6ae5SKonrad Dybcio };
24854b8d6ae5SKonrad Dybcio 
24864b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ce1_clk = {
24874b8d6ae5SKonrad Dybcio 	.halt_reg = 0x27004,
24884b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
24894b8d6ae5SKonrad Dybcio 	.clkr = {
24904b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
24914b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(5),
24924b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
24934b8d6ae5SKonrad Dybcio 			.name = "gcc_ce1_clk",
24944b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
24954b8d6ae5SKonrad Dybcio 		},
24964b8d6ae5SKonrad Dybcio 	},
24974b8d6ae5SKonrad Dybcio };
24984b8d6ae5SKonrad Dybcio 
24994b8d6ae5SKonrad Dybcio static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
25004b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a084,
25014b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
25024b8d6ae5SKonrad Dybcio 	.clkr = {
25034b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a084,
25044b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
25054b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25064b8d6ae5SKonrad Dybcio 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
25074b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
25084b8d6ae5SKonrad Dybcio 				&gcc_usb30_prim_master_clk_src.clkr.hw,
25094b8d6ae5SKonrad Dybcio 			},
25104b8d6ae5SKonrad Dybcio 			.num_parents = 1,
25114b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
25124b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25134b8d6ae5SKonrad Dybcio 		},
25144b8d6ae5SKonrad Dybcio 	},
25154b8d6ae5SKonrad Dybcio };
25164b8d6ae5SKonrad Dybcio 
25174b8d6ae5SKonrad Dybcio static struct clk_branch gcc_cpuss_gnoc_clk = {
25184b8d6ae5SKonrad Dybcio 	.halt_reg = 0x2b004,
25194b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
25204b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x2b004,
25214b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
25224b8d6ae5SKonrad Dybcio 	.clkr = {
25234b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
25244b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(22),
25254b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25264b8d6ae5SKonrad Dybcio 			.name = "gcc_cpuss_gnoc_clk",
25274b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
25284b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25294b8d6ae5SKonrad Dybcio 		},
25304b8d6ae5SKonrad Dybcio 	},
25314b8d6ae5SKonrad Dybcio };
25324b8d6ae5SKonrad Dybcio 
25334b8d6ae5SKonrad Dybcio static struct clk_branch gcc_disp_ahb_clk = {
25344b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1700c,
25354b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
25364b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x1700c,
25374b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
25384b8d6ae5SKonrad Dybcio 	.clkr = {
25394b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1700c,
25404b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
25414b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25424b8d6ae5SKonrad Dybcio 			.name = "gcc_disp_ahb_clk",
25434b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
25444b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25454b8d6ae5SKonrad Dybcio 		},
25464b8d6ae5SKonrad Dybcio 	},
25474b8d6ae5SKonrad Dybcio };
25484b8d6ae5SKonrad Dybcio 
25494b8d6ae5SKonrad Dybcio static struct clk_branch gcc_disp_gpll0_div_clk_src = {
25504b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
25514b8d6ae5SKonrad Dybcio 	.clkr = {
25524b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
25534b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(20),
25544b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25554b8d6ae5SKonrad Dybcio 			.name = "gcc_disp_gpll0_div_clk_src",
25564b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
25574b8d6ae5SKonrad Dybcio 				&gpll0_out_early.clkr.hw,
25584b8d6ae5SKonrad Dybcio 			},
25594b8d6ae5SKonrad Dybcio 			.num_parents = 1,
25604b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25614b8d6ae5SKonrad Dybcio 		},
25624b8d6ae5SKonrad Dybcio 	},
25634b8d6ae5SKonrad Dybcio };
25644b8d6ae5SKonrad Dybcio 
25654b8d6ae5SKonrad Dybcio static struct clk_branch gcc_disp_hf_axi_clk = {
25664b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17020,
25674b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
25684b8d6ae5SKonrad Dybcio 	.clkr = {
25694b8d6ae5SKonrad Dybcio 		.enable_reg = 0x17020,
25704b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
25714b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25724b8d6ae5SKonrad Dybcio 			.name = "gcc_disp_hf_axi_clk",
25734b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25744b8d6ae5SKonrad Dybcio 		},
25754b8d6ae5SKonrad Dybcio 	},
25764b8d6ae5SKonrad Dybcio };
25774b8d6ae5SKonrad Dybcio 
25784b8d6ae5SKonrad Dybcio static struct clk_branch gcc_disp_throttle_core_clk = {
25794b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17064,
25804b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
25814b8d6ae5SKonrad Dybcio 	.clkr = {
25824b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
25834b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(5),
25844b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25854b8d6ae5SKonrad Dybcio 			.name = "gcc_disp_throttle_core_clk",
25864b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
25874b8d6ae5SKonrad Dybcio 		},
25884b8d6ae5SKonrad Dybcio 	},
25894b8d6ae5SKonrad Dybcio };
25904b8d6ae5SKonrad Dybcio 
25914b8d6ae5SKonrad Dybcio static struct clk_branch gcc_disp_xo_clk = {
25924b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1702c,
25934b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
25944b8d6ae5SKonrad Dybcio 	.clkr = {
25954b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1702c,
25964b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
25974b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
25984b8d6ae5SKonrad Dybcio 			.name = "gcc_disp_xo_clk",
25994b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
26004b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26014b8d6ae5SKonrad Dybcio 		},
26024b8d6ae5SKonrad Dybcio 	},
26034b8d6ae5SKonrad Dybcio };
26044b8d6ae5SKonrad Dybcio 
26054b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gp1_clk = {
26064b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4d000,
26074b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
26084b8d6ae5SKonrad Dybcio 	.clkr = {
26094b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4d000,
26104b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
26114b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26124b8d6ae5SKonrad Dybcio 			.name = "gcc_gp1_clk",
26134b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
26144b8d6ae5SKonrad Dybcio 				&gcc_gp1_clk_src.clkr.hw,
26154b8d6ae5SKonrad Dybcio 			},
26164b8d6ae5SKonrad Dybcio 			.num_parents = 1,
26174b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
26184b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26194b8d6ae5SKonrad Dybcio 		},
26204b8d6ae5SKonrad Dybcio 	},
26214b8d6ae5SKonrad Dybcio };
26224b8d6ae5SKonrad Dybcio 
26234b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gp2_clk = {
26244b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4e000,
26254b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
26264b8d6ae5SKonrad Dybcio 	.clkr = {
26274b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4e000,
26284b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
26294b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26304b8d6ae5SKonrad Dybcio 			.name = "gcc_gp2_clk",
26314b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
26324b8d6ae5SKonrad Dybcio 				&gcc_gp2_clk_src.clkr.hw,
26334b8d6ae5SKonrad Dybcio 			},
26344b8d6ae5SKonrad Dybcio 			.num_parents = 1,
26354b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
26364b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26374b8d6ae5SKonrad Dybcio 		},
26384b8d6ae5SKonrad Dybcio 	},
26394b8d6ae5SKonrad Dybcio };
26404b8d6ae5SKonrad Dybcio 
26414b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gp3_clk = {
26424b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4f000,
26434b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
26444b8d6ae5SKonrad Dybcio 	.clkr = {
26454b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4f000,
26464b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
26474b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26484b8d6ae5SKonrad Dybcio 			.name = "gcc_gp3_clk",
26494b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
26504b8d6ae5SKonrad Dybcio 				&gcc_gp3_clk_src.clkr.hw,
26514b8d6ae5SKonrad Dybcio 			},
26524b8d6ae5SKonrad Dybcio 			.num_parents = 1,
26534b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
26544b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26554b8d6ae5SKonrad Dybcio 		},
26564b8d6ae5SKonrad Dybcio 	},
26574b8d6ae5SKonrad Dybcio };
26584b8d6ae5SKonrad Dybcio 
26594b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_cfg_ahb_clk = {
26604b8d6ae5SKonrad Dybcio 	.halt_reg = 0x36004,
26614b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
26624b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x36004,
26634b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
26644b8d6ae5SKonrad Dybcio 	.clkr = {
26654b8d6ae5SKonrad Dybcio 		.enable_reg = 0x36004,
26664b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
26674b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26684b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_cfg_ahb_clk",
26694b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
26704b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26714b8d6ae5SKonrad Dybcio 		},
26724b8d6ae5SKonrad Dybcio 	},
26734b8d6ae5SKonrad Dybcio };
26744b8d6ae5SKonrad Dybcio 
26754b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_gpll0_clk_src = {
26764b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
26774b8d6ae5SKonrad Dybcio 	.clkr = {
26784b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
26794b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(15),
26804b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26814b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_gpll0_clk_src",
26824b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
26834b8d6ae5SKonrad Dybcio 				&gpll0_out_early.clkr.hw,
26844b8d6ae5SKonrad Dybcio 			},
26854b8d6ae5SKonrad Dybcio 			.num_parents = 1,
26864b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
26874b8d6ae5SKonrad Dybcio 		},
26884b8d6ae5SKonrad Dybcio 	},
26894b8d6ae5SKonrad Dybcio };
26904b8d6ae5SKonrad Dybcio 
26914b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
26924b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
26934b8d6ae5SKonrad Dybcio 	.clkr = {
26944b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
26954b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(16),
26964b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
26974b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_gpll0_div_clk_src",
26984b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
26994b8d6ae5SKonrad Dybcio 				&gpll0_out_aux2.hw,
27004b8d6ae5SKonrad Dybcio 			},
27014b8d6ae5SKonrad Dybcio 			.num_parents = 1,
27024b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27034b8d6ae5SKonrad Dybcio 		},
27044b8d6ae5SKonrad Dybcio 	},
27054b8d6ae5SKonrad Dybcio };
27064b8d6ae5SKonrad Dybcio 
27074b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
27084b8d6ae5SKonrad Dybcio 	.halt_reg = 0x3600c,
27094b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_VOTED,
27104b8d6ae5SKonrad Dybcio 	.clkr = {
27114b8d6ae5SKonrad Dybcio 		.enable_reg = 0x3600c,
27124b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
27134b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27144b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_memnoc_gfx_clk",
27154b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27164b8d6ae5SKonrad Dybcio 		},
27174b8d6ae5SKonrad Dybcio 	},
27184b8d6ae5SKonrad Dybcio };
27194b8d6ae5SKonrad Dybcio 
27204b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
27214b8d6ae5SKonrad Dybcio 	.halt_reg = 0x36018,
27224b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
27234b8d6ae5SKonrad Dybcio 	.clkr = {
27244b8d6ae5SKonrad Dybcio 		.enable_reg = 0x36018,
27254b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
27264b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27274b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
27284b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27294b8d6ae5SKonrad Dybcio 		},
27304b8d6ae5SKonrad Dybcio 	},
27314b8d6ae5SKonrad Dybcio };
27324b8d6ae5SKonrad Dybcio 
27334b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_throttle_core_clk = {
27344b8d6ae5SKonrad Dybcio 	.halt_reg = 0x36048,
27354b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
27364b8d6ae5SKonrad Dybcio 	.clkr = {
27374b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
27384b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(31),
27394b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27404b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_throttle_core_clk",
27414b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27424b8d6ae5SKonrad Dybcio 		},
27434b8d6ae5SKonrad Dybcio 	},
27444b8d6ae5SKonrad Dybcio };
27454b8d6ae5SKonrad Dybcio 
27464b8d6ae5SKonrad Dybcio static struct clk_branch gcc_gpu_throttle_xo_clk = {
27474b8d6ae5SKonrad Dybcio 	.halt_reg = 0x36044,
27484b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
27494b8d6ae5SKonrad Dybcio 	.clkr = {
27504b8d6ae5SKonrad Dybcio 		.enable_reg = 0x36044,
27514b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
27524b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27534b8d6ae5SKonrad Dybcio 			.name = "gcc_gpu_throttle_xo_clk",
27544b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27554b8d6ae5SKonrad Dybcio 		},
27564b8d6ae5SKonrad Dybcio 	},
27574b8d6ae5SKonrad Dybcio };
27584b8d6ae5SKonrad Dybcio 
27594b8d6ae5SKonrad Dybcio static struct clk_branch gcc_mss_vs_clk = {
27604b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42048,
27614b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
27624b8d6ae5SKonrad Dybcio 	.clkr = {
27634b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42048,
27644b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
27654b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27664b8d6ae5SKonrad Dybcio 			.name = "gcc_mss_vs_clk",
27674b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
27684b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
27694b8d6ae5SKonrad Dybcio 			},
27704b8d6ae5SKonrad Dybcio 			.num_parents = 1,
27714b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
27724b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27734b8d6ae5SKonrad Dybcio 		},
27744b8d6ae5SKonrad Dybcio 	},
27754b8d6ae5SKonrad Dybcio };
27764b8d6ae5SKonrad Dybcio 
27774b8d6ae5SKonrad Dybcio static struct clk_branch gcc_pdm2_clk = {
27784b8d6ae5SKonrad Dybcio 	.halt_reg = 0x2000c,
27794b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
27804b8d6ae5SKonrad Dybcio 	.clkr = {
27814b8d6ae5SKonrad Dybcio 		.enable_reg = 0x2000c,
27824b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
27834b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
27844b8d6ae5SKonrad Dybcio 			.name = "gcc_pdm2_clk",
27854b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
27864b8d6ae5SKonrad Dybcio 				&gcc_pdm2_clk_src.clkr.hw,
27874b8d6ae5SKonrad Dybcio 			},
27884b8d6ae5SKonrad Dybcio 			.num_parents = 1,
27894b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
27904b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
27914b8d6ae5SKonrad Dybcio 		},
27924b8d6ae5SKonrad Dybcio 	},
27934b8d6ae5SKonrad Dybcio };
27944b8d6ae5SKonrad Dybcio 
27954b8d6ae5SKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
27964b8d6ae5SKonrad Dybcio 	.halt_reg = 0x20004,
27974b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
27984b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x20004,
27994b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28004b8d6ae5SKonrad Dybcio 	.clkr = {
28014b8d6ae5SKonrad Dybcio 		.enable_reg = 0x20004,
28024b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
28034b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28044b8d6ae5SKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
28054b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28064b8d6ae5SKonrad Dybcio 		},
28074b8d6ae5SKonrad Dybcio 	},
28084b8d6ae5SKonrad Dybcio };
28094b8d6ae5SKonrad Dybcio 
28104b8d6ae5SKonrad Dybcio static struct clk_branch gcc_pdm_xo4_clk = {
28114b8d6ae5SKonrad Dybcio 	.halt_reg = 0x20008,
28124b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
28134b8d6ae5SKonrad Dybcio 	.clkr = {
28144b8d6ae5SKonrad Dybcio 		.enable_reg = 0x20008,
28154b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
28164b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28174b8d6ae5SKonrad Dybcio 			.name = "gcc_pdm_xo4_clk",
28184b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28194b8d6ae5SKonrad Dybcio 		},
28204b8d6ae5SKonrad Dybcio 	},
28214b8d6ae5SKonrad Dybcio };
28224b8d6ae5SKonrad Dybcio 
28234b8d6ae5SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
28244b8d6ae5SKonrad Dybcio 	.halt_reg = 0x21004,
28254b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
28264b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x21004,
28274b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28284b8d6ae5SKonrad Dybcio 	.clkr = {
28294b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
28304b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(13),
28314b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28324b8d6ae5SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
28334b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28344b8d6ae5SKonrad Dybcio 		},
28354b8d6ae5SKonrad Dybcio 	},
28364b8d6ae5SKonrad Dybcio };
28374b8d6ae5SKonrad Dybcio 
28384b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
28394b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17014,
28404b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
28414b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17014,
28424b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28434b8d6ae5SKonrad Dybcio 	.clkr = {
28444b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
28454b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
28464b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28474b8d6ae5SKonrad Dybcio 			.name = "gcc_qmip_camera_nrt_ahb_clk",
28484b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28494b8d6ae5SKonrad Dybcio 		},
28504b8d6ae5SKonrad Dybcio 	},
28514b8d6ae5SKonrad Dybcio };
28524b8d6ae5SKonrad Dybcio 
28534b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
28544b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17060,
28554b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
28564b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17060,
28574b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28584b8d6ae5SKonrad Dybcio 	.clkr = {
28594b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
28604b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(2),
28614b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28624b8d6ae5SKonrad Dybcio 			.name = "gcc_qmip_camera_rt_ahb_clk",
28634b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28644b8d6ae5SKonrad Dybcio 		},
28654b8d6ae5SKonrad Dybcio 	},
28664b8d6ae5SKonrad Dybcio };
28674b8d6ae5SKonrad Dybcio 
28684b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qmip_disp_ahb_clk = {
28694b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17018,
28704b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
28714b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17018,
28724b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28734b8d6ae5SKonrad Dybcio 	.clkr = {
28744b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
28754b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(1),
28764b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28774b8d6ae5SKonrad Dybcio 			.name = "gcc_qmip_disp_ahb_clk",
28784b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28794b8d6ae5SKonrad Dybcio 		},
28804b8d6ae5SKonrad Dybcio 	},
28814b8d6ae5SKonrad Dybcio };
28824b8d6ae5SKonrad Dybcio 
28834b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {
28844b8d6ae5SKonrad Dybcio 	.halt_reg = 0x36040,
28854b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
28864b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x36040,
28874b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
28884b8d6ae5SKonrad Dybcio 	.clkr = {
28894b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
28904b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(4),
28914b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
28924b8d6ae5SKonrad Dybcio 			.name = "gcc_qmip_gpu_cfg_ahb_clk",
28934b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
28944b8d6ae5SKonrad Dybcio 		},
28954b8d6ae5SKonrad Dybcio 	},
28964b8d6ae5SKonrad Dybcio };
28974b8d6ae5SKonrad Dybcio 
28984b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
28994b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17010,
29004b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
29014b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17010,
29024b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
29034b8d6ae5SKonrad Dybcio 	.clkr = {
29044b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
29054b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(25),
29064b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29074b8d6ae5SKonrad Dybcio 			.name = "gcc_qmip_video_vcodec_ahb_clk",
29084b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29094b8d6ae5SKonrad Dybcio 		},
29104b8d6ae5SKonrad Dybcio 	},
29114b8d6ae5SKonrad Dybcio };
29124b8d6ae5SKonrad Dybcio 
29134b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
29144b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f014,
29154b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29164b8d6ae5SKonrad Dybcio 	.clkr = {
29174b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29184b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(9),
29194b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29204b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_core_2x_clk",
29214b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29224b8d6ae5SKonrad Dybcio 		},
29234b8d6ae5SKonrad Dybcio 	},
29244b8d6ae5SKonrad Dybcio };
29254b8d6ae5SKonrad Dybcio 
29264b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_core_clk = {
29274b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f00c,
29284b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29294b8d6ae5SKonrad Dybcio 	.clkr = {
29304b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29314b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(8),
29324b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29334b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_core_clk",
29344b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29354b8d6ae5SKonrad Dybcio 		},
29364b8d6ae5SKonrad Dybcio 	},
29374b8d6ae5SKonrad Dybcio };
29384b8d6ae5SKonrad Dybcio 
29394b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
29404b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f144,
29414b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29424b8d6ae5SKonrad Dybcio 	.clkr = {
29434b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29444b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(10),
29454b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29464b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s0_clk",
29474b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
29484b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
29494b8d6ae5SKonrad Dybcio 			},
29504b8d6ae5SKonrad Dybcio 			.num_parents = 1,
29514b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
29524b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29534b8d6ae5SKonrad Dybcio 		},
29544b8d6ae5SKonrad Dybcio 	},
29554b8d6ae5SKonrad Dybcio };
29564b8d6ae5SKonrad Dybcio 
29574b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
29584b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f274,
29594b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29604b8d6ae5SKonrad Dybcio 	.clkr = {
29614b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29624b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(11),
29634b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29644b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s1_clk",
29654b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
29664b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
29674b8d6ae5SKonrad Dybcio 			},
29684b8d6ae5SKonrad Dybcio 			.num_parents = 1,
29694b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
29704b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29714b8d6ae5SKonrad Dybcio 		},
29724b8d6ae5SKonrad Dybcio 	},
29734b8d6ae5SKonrad Dybcio };
29744b8d6ae5SKonrad Dybcio 
29754b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
29764b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f3a4,
29774b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29784b8d6ae5SKonrad Dybcio 	.clkr = {
29794b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29804b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(12),
29814b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
29824b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s2_clk",
29834b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
29844b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
29854b8d6ae5SKonrad Dybcio 			},
29864b8d6ae5SKonrad Dybcio 			.num_parents = 1,
29874b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
29884b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
29894b8d6ae5SKonrad Dybcio 		},
29904b8d6ae5SKonrad Dybcio 	},
29914b8d6ae5SKonrad Dybcio };
29924b8d6ae5SKonrad Dybcio 
29934b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
29944b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f4d4,
29954b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
29964b8d6ae5SKonrad Dybcio 	.clkr = {
29974b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
29984b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(13),
29994b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30004b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s3_clk",
30014b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
30024b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
30034b8d6ae5SKonrad Dybcio 			},
30044b8d6ae5SKonrad Dybcio 			.num_parents = 1,
30054b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
30064b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30074b8d6ae5SKonrad Dybcio 		},
30084b8d6ae5SKonrad Dybcio 	},
30094b8d6ae5SKonrad Dybcio };
30104b8d6ae5SKonrad Dybcio 
30114b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
30124b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f604,
30134b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30144b8d6ae5SKonrad Dybcio 	.clkr = {
30154b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30164b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(14),
30174b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30184b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s4_clk",
30194b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
30204b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
30214b8d6ae5SKonrad Dybcio 			},
30224b8d6ae5SKonrad Dybcio 			.num_parents = 1,
30234b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
30244b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30254b8d6ae5SKonrad Dybcio 		},
30264b8d6ae5SKonrad Dybcio 	},
30274b8d6ae5SKonrad Dybcio };
30284b8d6ae5SKonrad Dybcio 
30294b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
30304b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f734,
30314b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30324b8d6ae5SKonrad Dybcio 	.clkr = {
30334b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30344b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(15),
30354b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30364b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s5_clk",
30374b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
30384b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
30394b8d6ae5SKonrad Dybcio 			},
30404b8d6ae5SKonrad Dybcio 			.num_parents = 1,
30414b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
30424b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30434b8d6ae5SKonrad Dybcio 		},
30444b8d6ae5SKonrad Dybcio 	},
30454b8d6ae5SKonrad Dybcio };
30464b8d6ae5SKonrad Dybcio 
30474b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
30484b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39014,
30494b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30504b8d6ae5SKonrad Dybcio 	.clkr = {
30514b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30524b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(18),
30534b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30544b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_core_2x_clk",
30554b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30564b8d6ae5SKonrad Dybcio 		},
30574b8d6ae5SKonrad Dybcio 	},
30584b8d6ae5SKonrad Dybcio };
30594b8d6ae5SKonrad Dybcio 
30604b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_core_clk = {
30614b8d6ae5SKonrad Dybcio 	.halt_reg = 0x3900c,
30624b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30634b8d6ae5SKonrad Dybcio 	.clkr = {
30644b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30654b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(19),
30664b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30674b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_core_clk",
30684b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30694b8d6ae5SKonrad Dybcio 		},
30704b8d6ae5SKonrad Dybcio 	},
30714b8d6ae5SKonrad Dybcio };
30724b8d6ae5SKonrad Dybcio 
30734b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
30744b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39144,
30754b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30764b8d6ae5SKonrad Dybcio 	.clkr = {
30774b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30784b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(22),
30794b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30804b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s0_clk",
30814b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
30824b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
30834b8d6ae5SKonrad Dybcio 			},
30844b8d6ae5SKonrad Dybcio 			.num_parents = 1,
30854b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
30864b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
30874b8d6ae5SKonrad Dybcio 		},
30884b8d6ae5SKonrad Dybcio 	},
30894b8d6ae5SKonrad Dybcio };
30904b8d6ae5SKonrad Dybcio 
30914b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
30924b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39274,
30934b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
30944b8d6ae5SKonrad Dybcio 	.clkr = {
30954b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
30964b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(23),
30974b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
30984b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s1_clk",
30994b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
31004b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
31014b8d6ae5SKonrad Dybcio 			},
31024b8d6ae5SKonrad Dybcio 			.num_parents = 1,
31034b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
31044b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31054b8d6ae5SKonrad Dybcio 		},
31064b8d6ae5SKonrad Dybcio 	},
31074b8d6ae5SKonrad Dybcio };
31084b8d6ae5SKonrad Dybcio 
31094b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
31104b8d6ae5SKonrad Dybcio 	.halt_reg = 0x393a4,
31114b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31124b8d6ae5SKonrad Dybcio 	.clkr = {
31134b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
31144b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(24),
31154b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
31164b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s2_clk",
31174b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
31184b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
31194b8d6ae5SKonrad Dybcio 			},
31204b8d6ae5SKonrad Dybcio 			.num_parents = 1,
31214b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
31224b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31234b8d6ae5SKonrad Dybcio 		},
31244b8d6ae5SKonrad Dybcio 	},
31254b8d6ae5SKonrad Dybcio };
31264b8d6ae5SKonrad Dybcio 
31274b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
31284b8d6ae5SKonrad Dybcio 	.halt_reg = 0x394d4,
31294b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31304b8d6ae5SKonrad Dybcio 	.clkr = {
31314b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
31324b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(25),
31334b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
31344b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s3_clk",
31354b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
31364b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
31374b8d6ae5SKonrad Dybcio 			},
31384b8d6ae5SKonrad Dybcio 			.num_parents = 1,
31394b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
31404b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31414b8d6ae5SKonrad Dybcio 		},
31424b8d6ae5SKonrad Dybcio 	},
31434b8d6ae5SKonrad Dybcio };
31444b8d6ae5SKonrad Dybcio 
31454b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
31464b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39604,
31474b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31484b8d6ae5SKonrad Dybcio 	.clkr = {
31494b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
31504b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(26),
31514b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
31524b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s4_clk",
31534b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
31544b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
31554b8d6ae5SKonrad Dybcio 			},
31564b8d6ae5SKonrad Dybcio 			.num_parents = 1,
31574b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
31584b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31594b8d6ae5SKonrad Dybcio 		},
31604b8d6ae5SKonrad Dybcio 	},
31614b8d6ae5SKonrad Dybcio };
31624b8d6ae5SKonrad Dybcio 
31634b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
31644b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39734,
31654b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31664b8d6ae5SKonrad Dybcio 	.clkr = {
31674b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
31684b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(27),
31694b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
31704b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s5_clk",
31714b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
31724b8d6ae5SKonrad Dybcio 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
31734b8d6ae5SKonrad Dybcio 			},
31744b8d6ae5SKonrad Dybcio 			.num_parents = 1,
31754b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
31764b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31774b8d6ae5SKonrad Dybcio 		},
31784b8d6ae5SKonrad Dybcio 	},
31794b8d6ae5SKonrad Dybcio };
31804b8d6ae5SKonrad Dybcio 
31814b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
31824b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f004,
31834b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31844b8d6ae5SKonrad Dybcio 	.clkr = {
31854b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
31864b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(6),
31874b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
31884b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
31894b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
31904b8d6ae5SKonrad Dybcio 		},
31914b8d6ae5SKonrad Dybcio 	},
31924b8d6ae5SKonrad Dybcio };
31934b8d6ae5SKonrad Dybcio 
31944b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
31954b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1f008,
31964b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
31974b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x1f008,
31984b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
31994b8d6ae5SKonrad Dybcio 	.clkr = {
32004b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
32014b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(7),
32024b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32034b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
32044b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32054b8d6ae5SKonrad Dybcio 		},
32064b8d6ae5SKonrad Dybcio 	},
32074b8d6ae5SKonrad Dybcio };
32084b8d6ae5SKonrad Dybcio 
32094b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
32104b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39004,
32114b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
32124b8d6ae5SKonrad Dybcio 	.clkr = {
32134b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
32144b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(20),
32154b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32164b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
32174b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32184b8d6ae5SKonrad Dybcio 		},
32194b8d6ae5SKonrad Dybcio 	},
32204b8d6ae5SKonrad Dybcio };
32214b8d6ae5SKonrad Dybcio 
32224b8d6ae5SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
32234b8d6ae5SKonrad Dybcio 	.halt_reg = 0x39008,
32244b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
32254b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x39008,
32264b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
32274b8d6ae5SKonrad Dybcio 	.clkr = {
32284b8d6ae5SKonrad Dybcio 		.enable_reg = 0x7900c,
32294b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(21),
32304b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32314b8d6ae5SKonrad Dybcio 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
32324b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32334b8d6ae5SKonrad Dybcio 		},
32344b8d6ae5SKonrad Dybcio 	},
32354b8d6ae5SKonrad Dybcio };
32364b8d6ae5SKonrad Dybcio 
32374b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sdcc1_ahb_clk = {
32384b8d6ae5SKonrad Dybcio 	.halt_reg = 0x38008,
32394b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
32404b8d6ae5SKonrad Dybcio 	.clkr = {
32414b8d6ae5SKonrad Dybcio 		.enable_reg = 0x38008,
32424b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
32434b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32444b8d6ae5SKonrad Dybcio 			.name = "gcc_sdcc1_ahb_clk",
32454b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32464b8d6ae5SKonrad Dybcio 		},
32474b8d6ae5SKonrad Dybcio 	},
32484b8d6ae5SKonrad Dybcio };
32494b8d6ae5SKonrad Dybcio 
32504b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sdcc1_apps_clk = {
32514b8d6ae5SKonrad Dybcio 	.halt_reg = 0x38004,
32524b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
32534b8d6ae5SKonrad Dybcio 	.clkr = {
32544b8d6ae5SKonrad Dybcio 		.enable_reg = 0x38004,
32554b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
32564b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32574b8d6ae5SKonrad Dybcio 			.name = "gcc_sdcc1_apps_clk",
32584b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
32594b8d6ae5SKonrad Dybcio 				&gcc_sdcc1_apps_clk_src.clkr.hw,
32604b8d6ae5SKonrad Dybcio 			},
32614b8d6ae5SKonrad Dybcio 			.num_parents = 1,
32624b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
32634b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32644b8d6ae5SKonrad Dybcio 		},
32654b8d6ae5SKonrad Dybcio 	},
32664b8d6ae5SKonrad Dybcio };
32674b8d6ae5SKonrad Dybcio 
32684b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sdcc1_ice_core_clk = {
32694b8d6ae5SKonrad Dybcio 	.halt_reg = 0x3800c,
32704b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
32714b8d6ae5SKonrad Dybcio 	.clkr = {
32724b8d6ae5SKonrad Dybcio 		.enable_reg = 0x3800c,
32734b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
32744b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32754b8d6ae5SKonrad Dybcio 			.name = "gcc_sdcc1_ice_core_clk",
32764b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
32774b8d6ae5SKonrad Dybcio 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
32784b8d6ae5SKonrad Dybcio 			},
32794b8d6ae5SKonrad Dybcio 			.num_parents = 1,
32804b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
32814b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32824b8d6ae5SKonrad Dybcio 		},
32834b8d6ae5SKonrad Dybcio 	},
32844b8d6ae5SKonrad Dybcio };
32854b8d6ae5SKonrad Dybcio 
32864b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
32874b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1e008,
32884b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
32894b8d6ae5SKonrad Dybcio 	.clkr = {
32904b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1e008,
32914b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
32924b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
32934b8d6ae5SKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
32944b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
32954b8d6ae5SKonrad Dybcio 		},
32964b8d6ae5SKonrad Dybcio 	},
32974b8d6ae5SKonrad Dybcio };
32984b8d6ae5SKonrad Dybcio 
32994b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sdcc2_apps_clk = {
33004b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1e004,
33014b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33024b8d6ae5SKonrad Dybcio 	.clkr = {
33034b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1e004,
33044b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33054b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33064b8d6ae5SKonrad Dybcio 			.name = "gcc_sdcc2_apps_clk",
33074b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
33084b8d6ae5SKonrad Dybcio 				&gcc_sdcc2_apps_clk_src.clkr.hw,
33094b8d6ae5SKonrad Dybcio 			},
33104b8d6ae5SKonrad Dybcio 			.num_parents = 1,
33114b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
33124b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33134b8d6ae5SKonrad Dybcio 		},
33144b8d6ae5SKonrad Dybcio 	},
33154b8d6ae5SKonrad Dybcio };
33164b8d6ae5SKonrad Dybcio 
33174b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sys_noc_compute_sf_axi_clk = {
33184b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1050c,
33194b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33204b8d6ae5SKonrad Dybcio 	.clkr = {
33214b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1050c,
33224b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33234b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33244b8d6ae5SKonrad Dybcio 			.name = "gcc_sys_noc_compute_sf_axi_clk",
33254b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
33264b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33274b8d6ae5SKonrad Dybcio 		},
33284b8d6ae5SKonrad Dybcio 	},
33294b8d6ae5SKonrad Dybcio };
33304b8d6ae5SKonrad Dybcio 
33314b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
33324b8d6ae5SKonrad Dybcio 	.halt_reg = 0x2b06c,
33334b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
33344b8d6ae5SKonrad Dybcio 	.clkr = {
33354b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
33364b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33374b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33384b8d6ae5SKonrad Dybcio 			.name = "gcc_sys_noc_cpuss_ahb_clk",
33394b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
33404b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33414b8d6ae5SKonrad Dybcio 		},
33424b8d6ae5SKonrad Dybcio 	},
33434b8d6ae5SKonrad Dybcio };
33444b8d6ae5SKonrad Dybcio 
33454b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {
33464b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45098,
33474b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33484b8d6ae5SKonrad Dybcio 	.clkr = {
33494b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45098,
33504b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33514b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33524b8d6ae5SKonrad Dybcio 			.name = "gcc_sys_noc_ufs_phy_axi_clk",
33534b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
33544b8d6ae5SKonrad Dybcio 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
33554b8d6ae5SKonrad Dybcio 			},
33564b8d6ae5SKonrad Dybcio 			.num_parents = 1,
33574b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
33584b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33594b8d6ae5SKonrad Dybcio 		},
33604b8d6ae5SKonrad Dybcio 	},
33614b8d6ae5SKonrad Dybcio };
33624b8d6ae5SKonrad Dybcio 
33634b8d6ae5SKonrad Dybcio static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {
33644b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a080,
33654b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33664b8d6ae5SKonrad Dybcio 	.clkr = {
33674b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a080,
33684b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33694b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33704b8d6ae5SKonrad Dybcio 			.name = "gcc_sys_noc_usb3_prim_axi_clk",
33714b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
33724b8d6ae5SKonrad Dybcio 				&gcc_usb30_prim_master_clk_src.clkr.hw,
33734b8d6ae5SKonrad Dybcio 			},
33744b8d6ae5SKonrad Dybcio 			.num_parents = 1,
33754b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
33764b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33774b8d6ae5SKonrad Dybcio 		},
33784b8d6ae5SKonrad Dybcio 	},
33794b8d6ae5SKonrad Dybcio };
33804b8d6ae5SKonrad Dybcio 
33814b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_mem_clkref_clk = {
33824b8d6ae5SKonrad Dybcio 	.halt_reg = 0x8c000,
33834b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33844b8d6ae5SKonrad Dybcio 	.clkr = {
33854b8d6ae5SKonrad Dybcio 		.enable_reg = 0x8c000,
33864b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
33874b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
33884b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_mem_clkref_clk",
33894b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
33904b8d6ae5SKonrad Dybcio 		},
33914b8d6ae5SKonrad Dybcio 	},
33924b8d6ae5SKonrad Dybcio };
33934b8d6ae5SKonrad Dybcio 
33944b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_ahb_clk = {
33954b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45014,
33964b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
33974b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x45014,
33984b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
33994b8d6ae5SKonrad Dybcio 	.clkr = {
34004b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45014,
34014b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34024b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34034b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_ahb_clk",
34044b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34054b8d6ae5SKonrad Dybcio 		},
34064b8d6ae5SKonrad Dybcio 	},
34074b8d6ae5SKonrad Dybcio };
34084b8d6ae5SKonrad Dybcio 
34094b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_axi_clk = {
34104b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45010,
34114b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
34124b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x45010,
34134b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
34144b8d6ae5SKonrad Dybcio 	.clkr = {
34154b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45010,
34164b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34174b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34184b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_axi_clk",
34194b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
34204b8d6ae5SKonrad Dybcio 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
34214b8d6ae5SKonrad Dybcio 			},
34224b8d6ae5SKonrad Dybcio 			.num_parents = 1,
34234b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
34244b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34254b8d6ae5SKonrad Dybcio 		},
34264b8d6ae5SKonrad Dybcio 	},
34274b8d6ae5SKonrad Dybcio };
34284b8d6ae5SKonrad Dybcio 
34294b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_ice_core_clk = {
34304b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45044,
34314b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
34324b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x45044,
34334b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
34344b8d6ae5SKonrad Dybcio 	.clkr = {
34354b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45044,
34364b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34374b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34384b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_ice_core_clk",
34394b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
34404b8d6ae5SKonrad Dybcio 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
34414b8d6ae5SKonrad Dybcio 			},
34424b8d6ae5SKonrad Dybcio 			.num_parents = 1,
34434b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
34444b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34454b8d6ae5SKonrad Dybcio 		},
34464b8d6ae5SKonrad Dybcio 	},
34474b8d6ae5SKonrad Dybcio };
34484b8d6ae5SKonrad Dybcio 
34494b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
34504b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45078,
34514b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
34524b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x45078,
34534b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
34544b8d6ae5SKonrad Dybcio 	.clkr = {
34554b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45078,
34564b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34574b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34584b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_phy_aux_clk",
34594b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
34604b8d6ae5SKonrad Dybcio 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
34614b8d6ae5SKonrad Dybcio 			},
34624b8d6ae5SKonrad Dybcio 			.num_parents = 1,
34634b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
34644b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34654b8d6ae5SKonrad Dybcio 		},
34664b8d6ae5SKonrad Dybcio 	},
34674b8d6ae5SKonrad Dybcio };
34684b8d6ae5SKonrad Dybcio 
34694b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
34704b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4501c,
34714b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
34724b8d6ae5SKonrad Dybcio 	.clkr = {
34734b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4501c,
34744b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34754b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34764b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
34774b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34784b8d6ae5SKonrad Dybcio 		},
34794b8d6ae5SKonrad Dybcio 	},
34804b8d6ae5SKonrad Dybcio };
34814b8d6ae5SKonrad Dybcio 
34824b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
34834b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45018,
34844b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
34854b8d6ae5SKonrad Dybcio 	.clkr = {
34864b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45018,
34874b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
34884b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
34894b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
34904b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
34914b8d6ae5SKonrad Dybcio 		},
34924b8d6ae5SKonrad Dybcio 	},
34934b8d6ae5SKonrad Dybcio };
34944b8d6ae5SKonrad Dybcio 
34954b8d6ae5SKonrad Dybcio static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
34964b8d6ae5SKonrad Dybcio 	.halt_reg = 0x45040,
34974b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
34984b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x45040,
34994b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
35004b8d6ae5SKonrad Dybcio 	.clkr = {
35014b8d6ae5SKonrad Dybcio 		.enable_reg = 0x45040,
35024b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35034b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35044b8d6ae5SKonrad Dybcio 			.name = "gcc_ufs_phy_unipro_core_clk",
35054b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
35064b8d6ae5SKonrad Dybcio 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
35074b8d6ae5SKonrad Dybcio 			},
35084b8d6ae5SKonrad Dybcio 			.num_parents = 1,
35094b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
35104b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35114b8d6ae5SKonrad Dybcio 		},
35124b8d6ae5SKonrad Dybcio 	},
35134b8d6ae5SKonrad Dybcio };
35144b8d6ae5SKonrad Dybcio 
35154b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb30_prim_master_clk = {
35164b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a010,
35174b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
35184b8d6ae5SKonrad Dybcio 	.clkr = {
35194b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a010,
35204b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35214b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35224b8d6ae5SKonrad Dybcio 			.name = "gcc_usb30_prim_master_clk",
35234b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
35244b8d6ae5SKonrad Dybcio 				&gcc_usb30_prim_master_clk_src.clkr.hw,
35254b8d6ae5SKonrad Dybcio 			},
35264b8d6ae5SKonrad Dybcio 			.num_parents = 1,
35274b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
35284b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35294b8d6ae5SKonrad Dybcio 		},
35304b8d6ae5SKonrad Dybcio 	},
35314b8d6ae5SKonrad Dybcio };
35324b8d6ae5SKonrad Dybcio 
35334b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
35344b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a018,
35354b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
35364b8d6ae5SKonrad Dybcio 	.clkr = {
35374b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a018,
35384b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35394b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35404b8d6ae5SKonrad Dybcio 			.name = "gcc_usb30_prim_mock_utmi_clk",
35414b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
35424b8d6ae5SKonrad Dybcio 				&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
35434b8d6ae5SKonrad Dybcio 			},
35444b8d6ae5SKonrad Dybcio 			.num_parents = 1,
35454b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
35464b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35474b8d6ae5SKonrad Dybcio 		},
35484b8d6ae5SKonrad Dybcio 	},
35494b8d6ae5SKonrad Dybcio };
35504b8d6ae5SKonrad Dybcio 
35514b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb30_prim_sleep_clk = {
35524b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a014,
35534b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
35544b8d6ae5SKonrad Dybcio 	.clkr = {
35554b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a014,
35564b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35574b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35584b8d6ae5SKonrad Dybcio 			.name = "gcc_usb30_prim_sleep_clk",
35594b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35604b8d6ae5SKonrad Dybcio 		},
35614b8d6ae5SKonrad Dybcio 	},
35624b8d6ae5SKonrad Dybcio };
35634b8d6ae5SKonrad Dybcio 
35644b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb3_prim_clkref_clk = {
35654b8d6ae5SKonrad Dybcio 	.halt_reg = 0x80278,
35664b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
35674b8d6ae5SKonrad Dybcio 	.clkr = {
35684b8d6ae5SKonrad Dybcio 		.enable_reg = 0x80278,
35694b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35704b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35714b8d6ae5SKonrad Dybcio 			.name = "gcc_usb3_prim_clkref_clk",
35724b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35734b8d6ae5SKonrad Dybcio 		},
35744b8d6ae5SKonrad Dybcio 	},
35754b8d6ae5SKonrad Dybcio };
35764b8d6ae5SKonrad Dybcio 
35774b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
35784b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1a054,
35794b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
35804b8d6ae5SKonrad Dybcio 	.clkr = {
35814b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a054,
35824b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
35834b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
35844b8d6ae5SKonrad Dybcio 			.name = "gcc_usb3_prim_phy_com_aux_clk",
35854b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
35864b8d6ae5SKonrad Dybcio 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
35874b8d6ae5SKonrad Dybcio 			},
35884b8d6ae5SKonrad Dybcio 			.num_parents = 1,
35894b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
35904b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
35914b8d6ae5SKonrad Dybcio 		},
35924b8d6ae5SKonrad Dybcio 	},
35934b8d6ae5SKonrad Dybcio };
35944b8d6ae5SKonrad Dybcio 
35954b8d6ae5SKonrad Dybcio static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
35964b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
35974b8d6ae5SKonrad Dybcio 	.clkr = {
35984b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1a058,
35994b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36004b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36014b8d6ae5SKonrad Dybcio 			.name = "gcc_usb3_prim_phy_pipe_clk",
36024b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36034b8d6ae5SKonrad Dybcio 		},
36044b8d6ae5SKonrad Dybcio 	},
36054b8d6ae5SKonrad Dybcio };
36064b8d6ae5SKonrad Dybcio 
36074b8d6ae5SKonrad Dybcio static struct clk_branch gcc_vdda_vs_clk = {
36084b8d6ae5SKonrad Dybcio 	.halt_reg = 0x4200c,
36094b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
36104b8d6ae5SKonrad Dybcio 	.clkr = {
36114b8d6ae5SKonrad Dybcio 		.enable_reg = 0x4200c,
36124b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36134b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36144b8d6ae5SKonrad Dybcio 			.name = "gcc_vdda_vs_clk",
36154b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
36164b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
36174b8d6ae5SKonrad Dybcio 			},
36184b8d6ae5SKonrad Dybcio 			.num_parents = 1,
36194b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
36204b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36214b8d6ae5SKonrad Dybcio 		},
36224b8d6ae5SKonrad Dybcio 	},
36234b8d6ae5SKonrad Dybcio };
36244b8d6ae5SKonrad Dybcio 
36254b8d6ae5SKonrad Dybcio static struct clk_branch gcc_vddcx_vs_clk = {
36264b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42004,
36274b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
36284b8d6ae5SKonrad Dybcio 	.clkr = {
36294b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42004,
36304b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36314b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36324b8d6ae5SKonrad Dybcio 			.name = "gcc_vddcx_vs_clk",
36334b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
36344b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
36354b8d6ae5SKonrad Dybcio 			},
36364b8d6ae5SKonrad Dybcio 			.num_parents = 1,
36374b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
36384b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36394b8d6ae5SKonrad Dybcio 		},
36404b8d6ae5SKonrad Dybcio 	},
36414b8d6ae5SKonrad Dybcio };
36424b8d6ae5SKonrad Dybcio 
36434b8d6ae5SKonrad Dybcio static struct clk_branch gcc_vddmx_vs_clk = {
36444b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42008,
36454b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
36464b8d6ae5SKonrad Dybcio 	.clkr = {
36474b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42008,
36484b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36494b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36504b8d6ae5SKonrad Dybcio 			.name = "gcc_vddmx_vs_clk",
36514b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
36524b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
36534b8d6ae5SKonrad Dybcio 			},
36544b8d6ae5SKonrad Dybcio 			.num_parents = 1,
36554b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
36564b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36574b8d6ae5SKonrad Dybcio 		},
36584b8d6ae5SKonrad Dybcio 	},
36594b8d6ae5SKonrad Dybcio };
36604b8d6ae5SKonrad Dybcio 
36614b8d6ae5SKonrad Dybcio static struct clk_branch gcc_video_ahb_clk = {
36624b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17004,
36634b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
36644b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x17004,
36654b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
36664b8d6ae5SKonrad Dybcio 	.clkr = {
36674b8d6ae5SKonrad Dybcio 		.enable_reg = 0x17004,
36684b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36694b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36704b8d6ae5SKonrad Dybcio 			.name = "gcc_video_ahb_clk",
36714b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
36724b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36734b8d6ae5SKonrad Dybcio 		},
36744b8d6ae5SKonrad Dybcio 	},
36754b8d6ae5SKonrad Dybcio };
36764b8d6ae5SKonrad Dybcio 
36774b8d6ae5SKonrad Dybcio static struct clk_branch gcc_video_axi0_clk = {
36784b8d6ae5SKonrad Dybcio 	.halt_reg = 0x1701c,
36794b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
36804b8d6ae5SKonrad Dybcio 	.clkr = {
36814b8d6ae5SKonrad Dybcio 		.enable_reg = 0x1701c,
36824b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
36834b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36844b8d6ae5SKonrad Dybcio 			.name = "gcc_video_axi0_clk",
36854b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36864b8d6ae5SKonrad Dybcio 		},
36874b8d6ae5SKonrad Dybcio 	},
36884b8d6ae5SKonrad Dybcio };
36894b8d6ae5SKonrad Dybcio 
36904b8d6ae5SKonrad Dybcio static struct clk_branch gcc_video_throttle_core_clk = {
36914b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17068,
36924b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
36934b8d6ae5SKonrad Dybcio 	.clkr = {
36944b8d6ae5SKonrad Dybcio 		.enable_reg = 0x79004,
36954b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(28),
36964b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
36974b8d6ae5SKonrad Dybcio 			.name = "gcc_video_throttle_core_clk",
36984b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
36994b8d6ae5SKonrad Dybcio 		},
37004b8d6ae5SKonrad Dybcio 	},
37014b8d6ae5SKonrad Dybcio };
37024b8d6ae5SKonrad Dybcio 
37034b8d6ae5SKonrad Dybcio static struct clk_branch gcc_video_xo_clk = {
37044b8d6ae5SKonrad Dybcio 	.halt_reg = 0x17024,
37054b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
37064b8d6ae5SKonrad Dybcio 	.clkr = {
37074b8d6ae5SKonrad Dybcio 		.enable_reg = 0x17024,
37084b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
37094b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
37104b8d6ae5SKonrad Dybcio 			.name = "gcc_video_xo_clk",
37114b8d6ae5SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
37124b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
37134b8d6ae5SKonrad Dybcio 		},
37144b8d6ae5SKonrad Dybcio 	},
37154b8d6ae5SKonrad Dybcio };
37164b8d6ae5SKonrad Dybcio 
37174b8d6ae5SKonrad Dybcio static struct clk_branch gcc_vs_ctrl_ahb_clk = {
37184b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42014,
37194b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
37204b8d6ae5SKonrad Dybcio 	.hwcg_reg = 0x42014,
37214b8d6ae5SKonrad Dybcio 	.hwcg_bit = 1,
37224b8d6ae5SKonrad Dybcio 	.clkr = {
37234b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42014,
37244b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
37254b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
37264b8d6ae5SKonrad Dybcio 			.name = "gcc_vs_ctrl_ahb_clk",
37274b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
37284b8d6ae5SKonrad Dybcio 		},
37294b8d6ae5SKonrad Dybcio 	},
37304b8d6ae5SKonrad Dybcio };
37314b8d6ae5SKonrad Dybcio 
37324b8d6ae5SKonrad Dybcio static struct clk_branch gcc_vs_ctrl_clk = {
37334b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42010,
37344b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
37354b8d6ae5SKonrad Dybcio 	.clkr = {
37364b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42010,
37374b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
37384b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
37394b8d6ae5SKonrad Dybcio 			.name = "gcc_vs_ctrl_clk",
37404b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
37414b8d6ae5SKonrad Dybcio 				&gcc_vs_ctrl_clk_src.clkr.hw,
37424b8d6ae5SKonrad Dybcio 			},
37434b8d6ae5SKonrad Dybcio 			.num_parents = 1,
37444b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
37454b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
37464b8d6ae5SKonrad Dybcio 		},
37474b8d6ae5SKonrad Dybcio 	},
37484b8d6ae5SKonrad Dybcio };
37494b8d6ae5SKonrad Dybcio 
37504b8d6ae5SKonrad Dybcio static struct clk_branch gcc_wcss_vs_clk = {
37514b8d6ae5SKonrad Dybcio 	.halt_reg = 0x42050,
37524b8d6ae5SKonrad Dybcio 	.halt_check = BRANCH_HALT,
37534b8d6ae5SKonrad Dybcio 	.clkr = {
37544b8d6ae5SKonrad Dybcio 		.enable_reg = 0x42050,
37554b8d6ae5SKonrad Dybcio 		.enable_mask = BIT(0),
37564b8d6ae5SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
37574b8d6ae5SKonrad Dybcio 			.name = "gcc_wcss_vs_clk",
37584b8d6ae5SKonrad Dybcio 			.parent_hws = (const struct clk_hw*[]){
37594b8d6ae5SKonrad Dybcio 				&gcc_vsensor_clk_src.clkr.hw,
37604b8d6ae5SKonrad Dybcio 			},
37614b8d6ae5SKonrad Dybcio 			.num_parents = 1,
37624b8d6ae5SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
37634b8d6ae5SKonrad Dybcio 			.ops = &clk_branch2_ops,
37644b8d6ae5SKonrad Dybcio 		},
37654b8d6ae5SKonrad Dybcio 	},
37664b8d6ae5SKonrad Dybcio };
37674b8d6ae5SKonrad Dybcio 
37684b8d6ae5SKonrad Dybcio static struct gdsc usb30_prim_gdsc = {
37694b8d6ae5SKonrad Dybcio 	.gdscr = 0x1a004,
37704b8d6ae5SKonrad Dybcio 	.pd = {
37714b8d6ae5SKonrad Dybcio 		.name = "usb30_prim_gdsc",
37724b8d6ae5SKonrad Dybcio 	},
37734b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
37744b8d6ae5SKonrad Dybcio };
37754b8d6ae5SKonrad Dybcio 
37764b8d6ae5SKonrad Dybcio static struct gdsc ufs_phy_gdsc = {
37774b8d6ae5SKonrad Dybcio 	.gdscr = 0x45004,
37784b8d6ae5SKonrad Dybcio 	.pd = {
37794b8d6ae5SKonrad Dybcio 		.name = "ufs_phy_gdsc",
37804b8d6ae5SKonrad Dybcio 	},
37814b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
37824b8d6ae5SKonrad Dybcio };
37834b8d6ae5SKonrad Dybcio 
37844b8d6ae5SKonrad Dybcio static struct gdsc camss_vfe0_gdsc = {
37854b8d6ae5SKonrad Dybcio 	.gdscr = 0x54004,
37864b8d6ae5SKonrad Dybcio 	.pd = {
37874b8d6ae5SKonrad Dybcio 		.name = "camss_vfe0_gdsc",
37884b8d6ae5SKonrad Dybcio 	},
37894b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
37904b8d6ae5SKonrad Dybcio };
37914b8d6ae5SKonrad Dybcio 
37924b8d6ae5SKonrad Dybcio static struct gdsc camss_vfe1_gdsc = {
37934b8d6ae5SKonrad Dybcio 	.gdscr = 0x5403c,
37944b8d6ae5SKonrad Dybcio 	.pd = {
37954b8d6ae5SKonrad Dybcio 		.name = "camss_vfe1_gdsc",
37964b8d6ae5SKonrad Dybcio 	},
37974b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
37984b8d6ae5SKonrad Dybcio };
37994b8d6ae5SKonrad Dybcio 
38004b8d6ae5SKonrad Dybcio static struct gdsc camss_top_gdsc = {
38014b8d6ae5SKonrad Dybcio 	.gdscr = 0x5607c,
38024b8d6ae5SKonrad Dybcio 	.pd = {
38034b8d6ae5SKonrad Dybcio 		.name = "camss_top_gdsc",
38044b8d6ae5SKonrad Dybcio 	},
38054b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38064b8d6ae5SKonrad Dybcio };
38074b8d6ae5SKonrad Dybcio 
38084b8d6ae5SKonrad Dybcio static struct gdsc cam_cpp_gdsc = {
38094b8d6ae5SKonrad Dybcio 	.gdscr = 0x560bc,
38104b8d6ae5SKonrad Dybcio 	.pd = {
38114b8d6ae5SKonrad Dybcio 		.name = "cam_cpp_gdsc",
38124b8d6ae5SKonrad Dybcio 	},
38134b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38144b8d6ae5SKonrad Dybcio };
38154b8d6ae5SKonrad Dybcio 
38164b8d6ae5SKonrad Dybcio static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
38174b8d6ae5SKonrad Dybcio 	.gdscr = 0x7d060,
38184b8d6ae5SKonrad Dybcio 	.pd = {
38194b8d6ae5SKonrad Dybcio 		.name = "hlos1_vote_turing_mmu_tbu1_gdsc",
38204b8d6ae5SKonrad Dybcio 	},
38214b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38224b8d6ae5SKonrad Dybcio 	.flags = VOTABLE,
38234b8d6ae5SKonrad Dybcio };
38244b8d6ae5SKonrad Dybcio 
38254b8d6ae5SKonrad Dybcio static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {
38264b8d6ae5SKonrad Dybcio 	.gdscr = 0x80074,
38274b8d6ae5SKonrad Dybcio 	.pd = {
38284b8d6ae5SKonrad Dybcio 		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc",
38294b8d6ae5SKonrad Dybcio 	},
38304b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38314b8d6ae5SKonrad Dybcio 	.flags = VOTABLE,
38324b8d6ae5SKonrad Dybcio };
38334b8d6ae5SKonrad Dybcio 
38344b8d6ae5SKonrad Dybcio static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {
38354b8d6ae5SKonrad Dybcio 	.gdscr = 0x80084,
38364b8d6ae5SKonrad Dybcio 	.pd = {
38374b8d6ae5SKonrad Dybcio 		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc",
38384b8d6ae5SKonrad Dybcio 	},
38394b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38404b8d6ae5SKonrad Dybcio 	.flags = VOTABLE,
38414b8d6ae5SKonrad Dybcio };
38424b8d6ae5SKonrad Dybcio 
38434b8d6ae5SKonrad Dybcio 
38444b8d6ae5SKonrad Dybcio static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
38454b8d6ae5SKonrad Dybcio 	.gdscr = 0x80094,
38464b8d6ae5SKonrad Dybcio 	.pd = {
38474b8d6ae5SKonrad Dybcio 		.name = "hlos1_vote_turing_mmu_tbu0_gdsc",
38484b8d6ae5SKonrad Dybcio 	},
38494b8d6ae5SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
38504b8d6ae5SKonrad Dybcio 	.flags = VOTABLE,
38514b8d6ae5SKonrad Dybcio };
38524b8d6ae5SKonrad Dybcio 
38534b8d6ae5SKonrad Dybcio static struct gdsc *gcc_sm6125_gdscs[] = {
38544b8d6ae5SKonrad Dybcio 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
38554b8d6ae5SKonrad Dybcio 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
38564b8d6ae5SKonrad Dybcio 	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,
38574b8d6ae5SKonrad Dybcio 	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,
38584b8d6ae5SKonrad Dybcio 	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
38594b8d6ae5SKonrad Dybcio 	[CAM_CPP_GDSC] = &cam_cpp_gdsc,
38604b8d6ae5SKonrad Dybcio 	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
38614b8d6ae5SKonrad Dybcio 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,
38624b8d6ae5SKonrad Dybcio 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,
38634b8d6ae5SKonrad Dybcio 	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
38644b8d6ae5SKonrad Dybcio };
38654b8d6ae5SKonrad Dybcio 
38664b8d6ae5SKonrad Dybcio static struct clk_hw *gcc_sm6125_hws[] = {
38674b8d6ae5SKonrad Dybcio 	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.hw,
38684b8d6ae5SKonrad Dybcio 	[GPLL0_OUT_MAIN] = &gpll0_out_main.hw,
38694b8d6ae5SKonrad Dybcio 	[GPLL6_OUT_MAIN] = &gpll6_out_main.hw,
38704b8d6ae5SKonrad Dybcio 	[GPLL7_OUT_MAIN] = &gpll7_out_main.hw,
38714b8d6ae5SKonrad Dybcio 	[GPLL8_OUT_MAIN] = &gpll8_out_main.hw,
38724b8d6ae5SKonrad Dybcio 	[GPLL9_OUT_MAIN] = &gpll9_out_main.hw,
38734b8d6ae5SKonrad Dybcio };
38744b8d6ae5SKonrad Dybcio 
38754b8d6ae5SKonrad Dybcio static struct clk_regmap *gcc_sm6125_clocks[] = {
38764b8d6ae5SKonrad Dybcio 	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,
38774b8d6ae5SKonrad Dybcio 	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,
38784b8d6ae5SKonrad Dybcio 	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
38794b8d6ae5SKonrad Dybcio 	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,
38804b8d6ae5SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
38814b8d6ae5SKonrad Dybcio 	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
38824b8d6ae5SKonrad Dybcio 	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
38834b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_AHB_CLK_SRC] = &gcc_camss_ahb_clk_src.clkr,
38844b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr,
38854b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr,
38864b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,
38874b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPHY_CSID0_CLK] = &gcc_camss_cphy_csid0_clk.clkr,
38884b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPHY_CSID1_CLK] = &gcc_camss_cphy_csid1_clk.clkr,
38894b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPHY_CSID2_CLK] = &gcc_camss_cphy_csid2_clk.clkr,
38904b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPHY_CSID3_CLK] = &gcc_camss_cphy_csid3_clk.clkr,
38914b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr,
38924b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPP_AXI_CLK] = &gcc_camss_cpp_axi_clk.clkr,
38934b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr,
38944b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPP_CLK_SRC] = &gcc_camss_cpp_clk_src.clkr,
38954b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CPP_VBIF_AHB_CLK] = &gcc_camss_cpp_vbif_ahb_clk.clkr,
38964b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr,
38974b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr,
38984b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0_CLK_SRC] = &gcc_camss_csi0_clk_src.clkr,
38994b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
39004b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,
39014b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr,
39024b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr,
39034b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr,
39044b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr,
39054b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1_CLK_SRC] = &gcc_camss_csi1_clk_src.clkr,
39064b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
39074b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,
39084b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr,
39094b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr,
39104b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr,
39114b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr,
39124b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2_CLK_SRC] = &gcc_camss_csi2_clk_src.clkr,
39134b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,
39144b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,
39154b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr,
39164b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr,
39174b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI3_AHB_CLK] = &gcc_camss_csi3_ahb_clk.clkr,
39184b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI3_CLK] = &gcc_camss_csi3_clk.clkr,
39194b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI3_CLK_SRC] = &gcc_camss_csi3_clk_src.clkr,
39204b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI3PIX_CLK] = &gcc_camss_csi3pix_clk.clkr,
39214b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI3RDI_CLK] = &gcc_camss_csi3rdi_clk.clkr,
39224b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr,
39234b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr,
39244b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSIPHY0_CLK] = &gcc_camss_csiphy0_clk.clkr,
39254b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSIPHY1_CLK] = &gcc_camss_csiphy1_clk.clkr,
39264b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSIPHY2_CLK] = &gcc_camss_csiphy2_clk.clkr,
39274b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_CSIPHY_CLK_SRC] = &gcc_camss_csiphy_clk_src.clkr,
39284b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr,
39294b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_GP0_CLK_SRC] = &gcc_camss_gp0_clk_src.clkr,
39304b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr,
39314b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_GP1_CLK_SRC] = &gcc_camss_gp1_clk_src.clkr,
39324b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr,
39334b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr,
39344b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr,
39354b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_JPEG_CLK] = &gcc_camss_jpeg_clk.clkr,
39364b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_JPEG_CLK_SRC] = &gcc_camss_jpeg_clk_src.clkr,
39374b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
39384b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,
39394b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
39404b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,
39414b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,
39424b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,
39434b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,
39444b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,
39454b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr,
39464b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_THROTTLE_NRT_AXI_CLK] = &gcc_camss_throttle_nrt_axi_clk.clkr,
39474b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_THROTTLE_RT_AXI_CLK] = &gcc_camss_throttle_rt_axi_clk.clkr,
39484b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
39494b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr,
39504b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr,
39514b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE0_CLK_SRC] = &gcc_camss_vfe0_clk_src.clkr,
39524b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE0_STREAM_CLK] = &gcc_camss_vfe0_stream_clk.clkr,
39534b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr,
39544b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr,
39554b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE1_CLK_SRC] = &gcc_camss_vfe1_clk_src.clkr,
39564b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE1_STREAM_CLK] = &gcc_camss_vfe1_stream_clk.clkr,
39574b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE_TSCTR_CLK] = &gcc_camss_vfe_tsctr_clk.clkr,
39584b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE_VBIF_AHB_CLK] = &gcc_camss_vfe_vbif_ahb_clk.clkr,
39594b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_VFE_VBIF_AXI_CLK] = &gcc_camss_vfe_vbif_axi_clk.clkr,
39604b8d6ae5SKonrad Dybcio 	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
39614b8d6ae5SKonrad Dybcio 	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
39624b8d6ae5SKonrad Dybcio 	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
39634b8d6ae5SKonrad Dybcio 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
39644b8d6ae5SKonrad Dybcio 	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
39654b8d6ae5SKonrad Dybcio 	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
39664b8d6ae5SKonrad Dybcio 	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
39674b8d6ae5SKonrad Dybcio 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
39684b8d6ae5SKonrad Dybcio 	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,
39694b8d6ae5SKonrad Dybcio 	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
39704b8d6ae5SKonrad Dybcio 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
39714b8d6ae5SKonrad Dybcio 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
39724b8d6ae5SKonrad Dybcio 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
39734b8d6ae5SKonrad Dybcio 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
39744b8d6ae5SKonrad Dybcio 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
39754b8d6ae5SKonrad Dybcio 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
39764b8d6ae5SKonrad Dybcio 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
39774b8d6ae5SKonrad Dybcio 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
39784b8d6ae5SKonrad Dybcio 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
39794b8d6ae5SKonrad Dybcio 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
39804b8d6ae5SKonrad Dybcio 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
39814b8d6ae5SKonrad Dybcio 	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,
39824b8d6ae5SKonrad Dybcio 	[GCC_GPU_THROTTLE_XO_CLK] = &gcc_gpu_throttle_xo_clk.clkr,
39834b8d6ae5SKonrad Dybcio 	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
39844b8d6ae5SKonrad Dybcio 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
39854b8d6ae5SKonrad Dybcio 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
39864b8d6ae5SKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
39874b8d6ae5SKonrad Dybcio 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
39884b8d6ae5SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
39894b8d6ae5SKonrad Dybcio 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
39904b8d6ae5SKonrad Dybcio 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
39914b8d6ae5SKonrad Dybcio 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
39924b8d6ae5SKonrad Dybcio 	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,
39934b8d6ae5SKonrad Dybcio 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
39944b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
39954b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
39964b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
39974b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
39984b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
39994b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
40004b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
40014b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
40024b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
40034b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
40044b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
40054b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
40064b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
40074b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
40084b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
40094b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
40104b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
40114b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
40124b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
40134b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
40144b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
40154b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
40164b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
40174b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
40184b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
40194b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
40204b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
40214b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
40224b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
40234b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
40244b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
40254b8d6ae5SKonrad Dybcio 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
40264b8d6ae5SKonrad Dybcio 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
40274b8d6ae5SKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
40284b8d6ae5SKonrad Dybcio 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
40294b8d6ae5SKonrad Dybcio 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
40304b8d6ae5SKonrad Dybcio 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
40314b8d6ae5SKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
40324b8d6ae5SKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
40334b8d6ae5SKonrad Dybcio 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
40344b8d6ae5SKonrad Dybcio 	[GCC_SYS_NOC_COMPUTE_SF_AXI_CLK] = &gcc_sys_noc_compute_sf_axi_clk.clkr,
40354b8d6ae5SKonrad Dybcio 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
40364b8d6ae5SKonrad Dybcio 	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,
40374b8d6ae5SKonrad Dybcio 	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,
40384b8d6ae5SKonrad Dybcio 	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
40394b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
40404b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
40414b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
40424b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
40434b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
40444b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
40454b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
40464b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
40474b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
40484b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
40494b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
40504b8d6ae5SKonrad Dybcio 		&gcc_ufs_phy_unipro_core_clk_src.clkr,
40514b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
40524b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
40534b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
40544b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
40554b8d6ae5SKonrad Dybcio 		&gcc_usb30_prim_mock_utmi_clk_src.clkr,
40564b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
40574b8d6ae5SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
40584b8d6ae5SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
40594b8d6ae5SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
40604b8d6ae5SKonrad Dybcio 	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
40614b8d6ae5SKonrad Dybcio 	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
40624b8d6ae5SKonrad Dybcio 	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
40634b8d6ae5SKonrad Dybcio 	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
40644b8d6ae5SKonrad Dybcio 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
40654b8d6ae5SKonrad Dybcio 	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,
40664b8d6ae5SKonrad Dybcio 	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
40674b8d6ae5SKonrad Dybcio 	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
40684b8d6ae5SKonrad Dybcio 	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
40694b8d6ae5SKonrad Dybcio 	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
40704b8d6ae5SKonrad Dybcio 	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
40714b8d6ae5SKonrad Dybcio 	[GCC_WCSS_VS_CLK] = &gcc_wcss_vs_clk.clkr,
40724b8d6ae5SKonrad Dybcio 	[GPLL0_OUT_EARLY] = &gpll0_out_early.clkr,
40734b8d6ae5SKonrad Dybcio 	[GPLL3_OUT_EARLY] = &gpll3_out_early.clkr,
40744b8d6ae5SKonrad Dybcio 	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,
40754b8d6ae5SKonrad Dybcio 	[GPLL5_OUT_MAIN] = &gpll5_out_main.clkr,
40764b8d6ae5SKonrad Dybcio 	[GPLL6_OUT_EARLY] = &gpll6_out_early.clkr,
40774b8d6ae5SKonrad Dybcio 	[GPLL7_OUT_EARLY] = &gpll7_out_early.clkr,
40784b8d6ae5SKonrad Dybcio 	[GPLL8_OUT_EARLY] = &gpll8_out_early.clkr,
40794b8d6ae5SKonrad Dybcio 	[GPLL9_OUT_EARLY] = &gpll9_out_early.clkr,
40804b8d6ae5SKonrad Dybcio 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
40814b8d6ae5SKonrad Dybcio };
40824b8d6ae5SKonrad Dybcio 
40834b8d6ae5SKonrad Dybcio static const struct qcom_reset_map gcc_sm6125_resets[] = {
40844b8d6ae5SKonrad Dybcio 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },
40854b8d6ae5SKonrad Dybcio 	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },
40864b8d6ae5SKonrad Dybcio 	[GCC_UFS_PHY_BCR] = { 0x45000 },
40874b8d6ae5SKonrad Dybcio 	[GCC_USB30_PRIM_BCR] = { 0x1a000 },
40884b8d6ae5SKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },
40894b8d6ae5SKonrad Dybcio 	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },
40904b8d6ae5SKonrad Dybcio 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },
40914b8d6ae5SKonrad Dybcio 	[GCC_CAMSS_MICRO_BCR] = { 0x560ac },
40924b8d6ae5SKonrad Dybcio };
40934b8d6ae5SKonrad Dybcio 
40944b8d6ae5SKonrad Dybcio static struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
40954b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
40964b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
40974b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
40984b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
40994b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
41004b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
41014b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
41024b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
41034b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
41044b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
41054b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
41064b8d6ae5SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
41074b8d6ae5SKonrad Dybcio };
41084b8d6ae5SKonrad Dybcio 
41094b8d6ae5SKonrad Dybcio static const struct regmap_config gcc_sm6125_regmap_config = {
41104b8d6ae5SKonrad Dybcio 	.reg_bits = 32,
41114b8d6ae5SKonrad Dybcio 	.reg_stride = 4,
41124b8d6ae5SKonrad Dybcio 	.val_bits = 32,
41134b8d6ae5SKonrad Dybcio 	.max_register = 0xc7000,
41144b8d6ae5SKonrad Dybcio 	.fast_io = true,
41154b8d6ae5SKonrad Dybcio };
41164b8d6ae5SKonrad Dybcio 
41174b8d6ae5SKonrad Dybcio static const struct qcom_cc_desc gcc_sm6125_desc = {
41184b8d6ae5SKonrad Dybcio 	.config = &gcc_sm6125_regmap_config,
41194b8d6ae5SKonrad Dybcio 	.clks = gcc_sm6125_clocks,
41204b8d6ae5SKonrad Dybcio 	.num_clks = ARRAY_SIZE(gcc_sm6125_clocks),
41214b8d6ae5SKonrad Dybcio 	.clk_hws = gcc_sm6125_hws,
41224b8d6ae5SKonrad Dybcio 	.num_clk_hws = ARRAY_SIZE(gcc_sm6125_hws),
41234b8d6ae5SKonrad Dybcio 	.resets = gcc_sm6125_resets,
41244b8d6ae5SKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_sm6125_resets),
41254b8d6ae5SKonrad Dybcio 	.gdscs = gcc_sm6125_gdscs,
41264b8d6ae5SKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_sm6125_gdscs),
41274b8d6ae5SKonrad Dybcio };
41284b8d6ae5SKonrad Dybcio 
41294b8d6ae5SKonrad Dybcio static const struct of_device_id gcc_sm6125_match_table[] = {
41304b8d6ae5SKonrad Dybcio 	{ .compatible = "qcom,gcc-sm6125" },
41314b8d6ae5SKonrad Dybcio 	{ }
41324b8d6ae5SKonrad Dybcio };
41334b8d6ae5SKonrad Dybcio MODULE_DEVICE_TABLE(of, gcc_sm6125_match_table);
41344b8d6ae5SKonrad Dybcio 
gcc_sm6125_probe(struct platform_device * pdev)41354b8d6ae5SKonrad Dybcio static int gcc_sm6125_probe(struct platform_device *pdev)
41364b8d6ae5SKonrad Dybcio {
41374b8d6ae5SKonrad Dybcio 	struct regmap *regmap;
41384b8d6ae5SKonrad Dybcio 	int ret;
41394b8d6ae5SKonrad Dybcio 
41404b8d6ae5SKonrad Dybcio 	regmap = qcom_cc_map(pdev, &gcc_sm6125_desc);
41414b8d6ae5SKonrad Dybcio 	if (IS_ERR(regmap))
41424b8d6ae5SKonrad Dybcio 		return PTR_ERR(regmap);
41434b8d6ae5SKonrad Dybcio 
41444b8d6ae5SKonrad Dybcio 	/*
41454b8d6ae5SKonrad Dybcio 	 * Disable the GPLL0 active input to video block via
41464b8d6ae5SKonrad Dybcio 	 * MISC registers.
41474b8d6ae5SKonrad Dybcio 	 */
41484b8d6ae5SKonrad Dybcio 	regmap_update_bits(regmap, 0x80258, 0x1, 0x1);
41494b8d6ae5SKonrad Dybcio 
41504b8d6ae5SKonrad Dybcio 	/*
41514b8d6ae5SKonrad Dybcio 	 * Enable DUAL_EDGE mode for MCLK RCGs
4152*bb7f4b8cSJulia Lawall 	 * This is required to enable MND divider mode
41534b8d6ae5SKonrad Dybcio 	 */
41544b8d6ae5SKonrad Dybcio 	regmap_update_bits(regmap, 0x51004, 0x3000, 0x2000);
41554b8d6ae5SKonrad Dybcio 	regmap_update_bits(regmap, 0x51020, 0x3000, 0x2000);
41564b8d6ae5SKonrad Dybcio 	regmap_update_bits(regmap, 0x5103c, 0x3000, 0x2000);
41574b8d6ae5SKonrad Dybcio 	regmap_update_bits(regmap, 0x51058, 0x3000, 0x2000);
41584b8d6ae5SKonrad Dybcio 
41594b8d6ae5SKonrad Dybcio 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
41604b8d6ae5SKonrad Dybcio 						ARRAY_SIZE(gcc_dfs_clocks));
41614b8d6ae5SKonrad Dybcio 	if (ret)
41624b8d6ae5SKonrad Dybcio 		return ret;
41634b8d6ae5SKonrad Dybcio 
41644b8d6ae5SKonrad Dybcio 	return qcom_cc_really_probe(pdev, &gcc_sm6125_desc, regmap);
41654b8d6ae5SKonrad Dybcio }
41664b8d6ae5SKonrad Dybcio 
41674b8d6ae5SKonrad Dybcio static struct platform_driver gcc_sm6125_driver = {
41684b8d6ae5SKonrad Dybcio 	.probe = gcc_sm6125_probe,
41694b8d6ae5SKonrad Dybcio 	.driver = {
41704b8d6ae5SKonrad Dybcio 		.name = "gcc-sm6125",
41714b8d6ae5SKonrad Dybcio 		.of_match_table = gcc_sm6125_match_table,
41724b8d6ae5SKonrad Dybcio 	},
41734b8d6ae5SKonrad Dybcio };
41744b8d6ae5SKonrad Dybcio 
gcc_sm6125_init(void)41754b8d6ae5SKonrad Dybcio static int __init gcc_sm6125_init(void)
41764b8d6ae5SKonrad Dybcio {
41774b8d6ae5SKonrad Dybcio 	return platform_driver_register(&gcc_sm6125_driver);
41784b8d6ae5SKonrad Dybcio }
41794b8d6ae5SKonrad Dybcio subsys_initcall(gcc_sm6125_init);
41804b8d6ae5SKonrad Dybcio 
gcc_sm6125_exit(void)41814b8d6ae5SKonrad Dybcio static void __exit gcc_sm6125_exit(void)
41824b8d6ae5SKonrad Dybcio {
41834b8d6ae5SKonrad Dybcio 	platform_driver_unregister(&gcc_sm6125_driver);
41844b8d6ae5SKonrad Dybcio }
41854b8d6ae5SKonrad Dybcio module_exit(gcc_sm6125_exit);
41864b8d6ae5SKonrad Dybcio 
41874b8d6ae5SKonrad Dybcio MODULE_DESCRIPTION("QTI GCC SM6125 Driver");
41884b8d6ae5SKonrad Dybcio MODULE_LICENSE("GPL v2");
4189