xref: /linux/drivers/clk/qcom/gcc-sc8180x.c (revision e4036615fd652b480665e3eb99a9891c0f350c77)
14433594bSBjorn Andersson // SPDX-License-Identifier: GPL-2.0
24433594bSBjorn Andersson /*
34433594bSBjorn Andersson  * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
44433594bSBjorn Andersson  * Copyright (c) 2020-2021, Linaro Ltd.
54433594bSBjorn Andersson  */
64433594bSBjorn Andersson 
74433594bSBjorn Andersson #include <linux/bitops.h>
84433594bSBjorn Andersson #include <linux/clk-provider.h>
94433594bSBjorn Andersson #include <linux/err.h>
104433594bSBjorn Andersson #include <linux/kernel.h>
114433594bSBjorn Andersson #include <linux/module.h>
124433594bSBjorn Andersson #include <linux/of.h>
134433594bSBjorn Andersson #include <linux/platform_device.h>
144433594bSBjorn Andersson #include <linux/regmap.h>
154433594bSBjorn Andersson #include <linux/reset-controller.h>
164433594bSBjorn Andersson 
174433594bSBjorn Andersson #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
184433594bSBjorn Andersson 
194433594bSBjorn Andersson #include "common.h"
204433594bSBjorn Andersson #include "clk-alpha-pll.h"
214433594bSBjorn Andersson #include "clk-branch.h"
224433594bSBjorn Andersson #include "clk-pll.h"
234433594bSBjorn Andersson #include "clk-rcg.h"
244433594bSBjorn Andersson #include "clk-regmap.h"
254433594bSBjorn Andersson #include "gdsc.h"
264433594bSBjorn Andersson #include "reset.h"
274433594bSBjorn Andersson 
284433594bSBjorn Andersson enum {
294433594bSBjorn Andersson 	P_AUD_REF_CLK,
304433594bSBjorn Andersson 	P_BI_TCXO,
314433594bSBjorn Andersson 	P_GPLL0_OUT_EVEN,
324433594bSBjorn Andersson 	P_GPLL0_OUT_MAIN,
334433594bSBjorn Andersson 	P_GPLL1_OUT_MAIN,
344433594bSBjorn Andersson 	P_GPLL2_OUT_MAIN,
354433594bSBjorn Andersson 	P_GPLL4_OUT_MAIN,
364433594bSBjorn Andersson 	P_GPLL5_OUT_MAIN,
374433594bSBjorn Andersson 	P_GPLL7_OUT_MAIN,
384433594bSBjorn Andersson 	P_GPLL9_OUT_MAIN,
394433594bSBjorn Andersson 	P_SLEEP_CLK,
404433594bSBjorn Andersson };
414433594bSBjorn Andersson 
424433594bSBjorn Andersson static struct pll_vco trion_vco[] = {
434433594bSBjorn Andersson 	{ 249600000, 2000000000, 0 },
444433594bSBjorn Andersson };
454433594bSBjorn Andersson 
464433594bSBjorn Andersson static struct clk_alpha_pll gpll0 = {
474433594bSBjorn Andersson 	.offset = 0x0,
484433594bSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
494433594bSBjorn Andersson 	.vco_table = trion_vco,
504433594bSBjorn Andersson 	.num_vco = ARRAY_SIZE(trion_vco),
514433594bSBjorn Andersson 	.clkr = {
524433594bSBjorn Andersson 		.enable_reg = 0x52000,
534433594bSBjorn Andersson 		.enable_mask = BIT(0),
544433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
554433594bSBjorn Andersson 			.name = "gpll0",
564433594bSBjorn Andersson 			.parent_data = &(const struct clk_parent_data){
574433594bSBjorn Andersson 				.fw_name = "bi_tcxo",
584433594bSBjorn Andersson 			},
594433594bSBjorn Andersson 			.num_parents = 1,
604433594bSBjorn Andersson 			.ops = &clk_alpha_pll_fixed_trion_ops,
614433594bSBjorn Andersson 		},
624433594bSBjorn Andersson 	},
634433594bSBjorn Andersson };
644433594bSBjorn Andersson 
654433594bSBjorn Andersson static const struct clk_div_table post_div_table_trion_even[] = {
664433594bSBjorn Andersson 	{ 0x0, 1 },
674433594bSBjorn Andersson 	{ 0x1, 2 },
684433594bSBjorn Andersson 	{ 0x3, 4 },
694433594bSBjorn Andersson 	{ 0x7, 8 },
704433594bSBjorn Andersson 	{ }
714433594bSBjorn Andersson };
724433594bSBjorn Andersson 
734433594bSBjorn Andersson static struct clk_alpha_pll_postdiv gpll0_out_even = {
744433594bSBjorn Andersson 	.offset = 0x0,
754433594bSBjorn Andersson 	.post_div_shift = 8,
764433594bSBjorn Andersson 	.post_div_table = post_div_table_trion_even,
774433594bSBjorn Andersson 	.num_post_div = ARRAY_SIZE(post_div_table_trion_even),
784433594bSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
794433594bSBjorn Andersson 	.width = 4,
804433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
814433594bSBjorn Andersson 		.name = "gpll0_out_even",
824433594bSBjorn Andersson 		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
834433594bSBjorn Andersson 		.num_parents = 1,
844433594bSBjorn Andersson 		.ops = &clk_alpha_pll_postdiv_trion_ops,
854433594bSBjorn Andersson 	},
864433594bSBjorn Andersson };
874433594bSBjorn Andersson 
884433594bSBjorn Andersson static struct clk_alpha_pll gpll1 = {
894433594bSBjorn Andersson 	.offset = 0x1000,
904433594bSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
914433594bSBjorn Andersson 	.vco_table = trion_vco,
924433594bSBjorn Andersson 	.num_vco = ARRAY_SIZE(trion_vco),
934433594bSBjorn Andersson 	.clkr = {
944433594bSBjorn Andersson 		.enable_reg = 0x52000,
954433594bSBjorn Andersson 		.enable_mask = BIT(1),
964433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
974433594bSBjorn Andersson 			.name = "gpll1",
984433594bSBjorn Andersson 			.parent_data = &(const struct clk_parent_data){
994433594bSBjorn Andersson 				.fw_name = "bi_tcxo",
1004433594bSBjorn Andersson 			},
1014433594bSBjorn Andersson 			.num_parents = 1,
1024433594bSBjorn Andersson 			.ops = &clk_alpha_pll_fixed_trion_ops,
1034433594bSBjorn Andersson 		},
1044433594bSBjorn Andersson 	},
1054433594bSBjorn Andersson };
1064433594bSBjorn Andersson 
1074433594bSBjorn Andersson static struct clk_alpha_pll gpll4 = {
1084433594bSBjorn Andersson 	.offset = 0x76000,
1094433594bSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
1104433594bSBjorn Andersson 	.vco_table = trion_vco,
1114433594bSBjorn Andersson 	.num_vco = ARRAY_SIZE(trion_vco),
1124433594bSBjorn Andersson 	.clkr = {
1134433594bSBjorn Andersson 		.enable_reg = 0x52000,
1144433594bSBjorn Andersson 		.enable_mask = BIT(4),
1154433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
1164433594bSBjorn Andersson 			.name = "gpll4",
1174433594bSBjorn Andersson 			.parent_data = &(const struct clk_parent_data){
1184433594bSBjorn Andersson 				.fw_name = "bi_tcxo",
1194433594bSBjorn Andersson 			},
1204433594bSBjorn Andersson 			.num_parents = 1,
1214433594bSBjorn Andersson 			.ops = &clk_alpha_pll_fixed_trion_ops,
1224433594bSBjorn Andersson 		},
1234433594bSBjorn Andersson 	},
1244433594bSBjorn Andersson };
1254433594bSBjorn Andersson 
1264433594bSBjorn Andersson static struct clk_alpha_pll gpll7 = {
1274433594bSBjorn Andersson 	.offset = 0x1a000,
1284433594bSBjorn Andersson 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
1294433594bSBjorn Andersson 	.vco_table = trion_vco,
1304433594bSBjorn Andersson 	.num_vco = ARRAY_SIZE(trion_vco),
1314433594bSBjorn Andersson 	.clkr = {
1324433594bSBjorn Andersson 		.enable_reg = 0x52000,
1334433594bSBjorn Andersson 		.enable_mask = BIT(7),
1344433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
1354433594bSBjorn Andersson 			.name = "gpll7",
1364433594bSBjorn Andersson 			.parent_data = &(const struct clk_parent_data){
1374433594bSBjorn Andersson 				.fw_name = "bi_tcxo",
1384433594bSBjorn Andersson 			},
1394433594bSBjorn Andersson 			.num_parents = 1,
1404433594bSBjorn Andersson 			.ops = &clk_alpha_pll_fixed_trion_ops,
1414433594bSBjorn Andersson 		},
1424433594bSBjorn Andersson 	},
1434433594bSBjorn Andersson };
1444433594bSBjorn Andersson 
1454433594bSBjorn Andersson static const struct parent_map gcc_parent_map_0[] = {
1464433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
1474433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
1484433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
1494433594bSBjorn Andersson };
1504433594bSBjorn Andersson 
1514433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_0[] = {
1524433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo" },
1534433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
1544433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
1554433594bSBjorn Andersson };
1564433594bSBjorn Andersson 
1574433594bSBjorn Andersson static const struct parent_map gcc_parent_map_1[] = {
1584433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
1594433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
1604433594bSBjorn Andersson 	{ P_SLEEP_CLK, 5 },
1614433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
1624433594bSBjorn Andersson };
1634433594bSBjorn Andersson 
1644433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_1[] = {
1654433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
1664433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
1674433594bSBjorn Andersson 	{ .fw_name = "sleep_clk", },
1684433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
1694433594bSBjorn Andersson };
1704433594bSBjorn Andersson 
1714433594bSBjorn Andersson static const struct parent_map gcc_parent_map_2[] = {
1724433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
1734433594bSBjorn Andersson 	{ P_SLEEP_CLK, 5 },
1744433594bSBjorn Andersson };
1754433594bSBjorn Andersson 
1764433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_2[] = {
1774433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
1784433594bSBjorn Andersson 	{ .fw_name = "sleep_clk", },
1794433594bSBjorn Andersson };
1804433594bSBjorn Andersson 
1814433594bSBjorn Andersson static const struct parent_map gcc_parent_map_3[] = {
1824433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
1834433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
1844433594bSBjorn Andersson 	{ P_GPLL2_OUT_MAIN, 2 },
1854433594bSBjorn Andersson 	{ P_GPLL5_OUT_MAIN, 3 },
1864433594bSBjorn Andersson 	{ P_GPLL1_OUT_MAIN, 4 },
1874433594bSBjorn Andersson 	{ P_GPLL4_OUT_MAIN, 5 },
1884433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
1894433594bSBjorn Andersson };
1904433594bSBjorn Andersson 
1914433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_3[] = {
1924433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
1934433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
1944433594bSBjorn Andersson 	{ .name = "gpll2" },
1954433594bSBjorn Andersson 	{ .name = "gpll5" },
1964433594bSBjorn Andersson 	{ .hw = &gpll1.clkr.hw },
1974433594bSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
1984433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
1994433594bSBjorn Andersson };
2004433594bSBjorn Andersson 
2014433594bSBjorn Andersson static const struct parent_map gcc_parent_map_4[] = {
2024433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
2034433594bSBjorn Andersson };
2044433594bSBjorn Andersson 
2054433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_4[] = {
2064433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
2074433594bSBjorn Andersson };
2084433594bSBjorn Andersson 
2094433594bSBjorn Andersson static const struct parent_map gcc_parent_map_5[] = {
2104433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
2114433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
2124433594bSBjorn Andersson };
2134433594bSBjorn Andersson 
2144433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_5[] = {
2154433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
2164433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
2174433594bSBjorn Andersson };
2184433594bSBjorn Andersson 
2194433594bSBjorn Andersson static const struct parent_map gcc_parent_map_6[] = {
2204433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
2214433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
2224433594bSBjorn Andersson 	{ P_GPLL7_OUT_MAIN, 3 },
2234433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
2244433594bSBjorn Andersson };
2254433594bSBjorn Andersson 
2264433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_6[] = {
2274433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
2284433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
2294433594bSBjorn Andersson 	{ .hw = &gpll7.clkr.hw },
2304433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
2314433594bSBjorn Andersson };
2324433594bSBjorn Andersson 
2334433594bSBjorn Andersson static const struct parent_map gcc_parent_map_7[] = {
2344433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
2354433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
2364433594bSBjorn Andersson 	{ P_GPLL9_OUT_MAIN, 2 },
2374433594bSBjorn Andersson 	{ P_GPLL4_OUT_MAIN, 5 },
2384433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
2394433594bSBjorn Andersson };
2404433594bSBjorn Andersson 
2414433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_7[] = {
2424433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
2434433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
2444433594bSBjorn Andersson 	{ .name = "gppl9" },
2454433594bSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
2464433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
2474433594bSBjorn Andersson };
2484433594bSBjorn Andersson 
2494433594bSBjorn Andersson static const struct parent_map gcc_parent_map_8[] = {
2504433594bSBjorn Andersson 	{ P_BI_TCXO, 0 },
2514433594bSBjorn Andersson 	{ P_GPLL0_OUT_MAIN, 1 },
2524433594bSBjorn Andersson 	{ P_AUD_REF_CLK, 2 },
2534433594bSBjorn Andersson 	{ P_GPLL0_OUT_EVEN, 6 },
2544433594bSBjorn Andersson };
2554433594bSBjorn Andersson 
2564433594bSBjorn Andersson static const struct clk_parent_data gcc_parents_8[] = {
2574433594bSBjorn Andersson 	{ .fw_name = "bi_tcxo", },
2584433594bSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
2594433594bSBjorn Andersson 	{ .name = "aud_ref_clk" },
2604433594bSBjorn Andersson 	{ .hw = &gpll0_out_even.clkr.hw },
2614433594bSBjorn Andersson };
2624433594bSBjorn Andersson 
2634433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
2644433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
2654433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
2664433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
2674433594bSBjorn Andersson 	{ }
2684433594bSBjorn Andersson };
2694433594bSBjorn Andersson 
2704433594bSBjorn Andersson static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
2714433594bSBjorn Andersson 	.cmd_rcgr = 0x48014,
2724433594bSBjorn Andersson 	.mnd_width = 0,
2734433594bSBjorn Andersson 	.hid_width = 5,
2744433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
2754433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
2764433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
2774433594bSBjorn Andersson 		.name = "gcc_cpuss_ahb_clk_src",
2784433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
279b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
2804433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
2814433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
2824433594bSBjorn Andersson 	},
2834433594bSBjorn Andersson };
2844433594bSBjorn Andersson 
2854433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_emac_ptp_clk_src[] = {
2864433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
2874433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
2884433594bSBjorn Andersson 	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
2894433594bSBjorn Andersson 	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
2904433594bSBjorn Andersson 	{ }
2914433594bSBjorn Andersson };
2924433594bSBjorn Andersson 
2934433594bSBjorn Andersson static struct clk_rcg2 gcc_emac_ptp_clk_src = {
2944433594bSBjorn Andersson 	.cmd_rcgr = 0x6038,
2954433594bSBjorn Andersson 	.mnd_width = 0,
2964433594bSBjorn Andersson 	.hid_width = 5,
2974433594bSBjorn Andersson 	.parent_map = gcc_parent_map_6,
2984433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_emac_ptp_clk_src,
2994433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3004433594bSBjorn Andersson 		.name = "gcc_emac_ptp_clk_src",
3014433594bSBjorn Andersson 		.parent_data = gcc_parents_6,
302b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_6),
3034433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3044433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
3054433594bSBjorn Andersson 	},
3064433594bSBjorn Andersson };
3074433594bSBjorn Andersson 
3084433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_emac_rgmii_clk_src[] = {
3094433594bSBjorn Andersson 	F(2500000, P_BI_TCXO, 1, 25, 192),
3104433594bSBjorn Andersson 	F(5000000, P_BI_TCXO, 1, 25, 96),
3114433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
3124433594bSBjorn Andersson 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
3134433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
3144433594bSBjorn Andersson 	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
3154433594bSBjorn Andersson 	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
3164433594bSBjorn Andersson 	{ }
3174433594bSBjorn Andersson };
3184433594bSBjorn Andersson 
3194433594bSBjorn Andersson static struct clk_rcg2 gcc_emac_rgmii_clk_src = {
3204433594bSBjorn Andersson 	.cmd_rcgr = 0x601c,
3214433594bSBjorn Andersson 	.mnd_width = 8,
3224433594bSBjorn Andersson 	.hid_width = 5,
3234433594bSBjorn Andersson 	.parent_map = gcc_parent_map_6,
3244433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_emac_rgmii_clk_src,
3254433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3264433594bSBjorn Andersson 		.name = "gcc_emac_rgmii_clk_src",
3274433594bSBjorn Andersson 		.parent_data = gcc_parents_6,
328b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_6),
3294433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3304433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
3314433594bSBjorn Andersson 	},
3324433594bSBjorn Andersson };
3334433594bSBjorn Andersson 
3344433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
3354433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
3364433594bSBjorn Andersson 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
3374433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
3384433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
3394433594bSBjorn Andersson 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
3404433594bSBjorn Andersson 	{ }
3414433594bSBjorn Andersson };
3424433594bSBjorn Andersson 
3434433594bSBjorn Andersson static struct clk_rcg2 gcc_gp1_clk_src = {
3444433594bSBjorn Andersson 	.cmd_rcgr = 0x64004,
3454433594bSBjorn Andersson 	.mnd_width = 8,
3464433594bSBjorn Andersson 	.hid_width = 5,
3474433594bSBjorn Andersson 	.parent_map = gcc_parent_map_1,
3484433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_gp1_clk_src,
3494433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3504433594bSBjorn Andersson 		.name = "gcc_gp1_clk_src",
3514433594bSBjorn Andersson 		.parent_data = gcc_parents_1,
352b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_1),
3534433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3544433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
3554433594bSBjorn Andersson 	},
3564433594bSBjorn Andersson };
3574433594bSBjorn Andersson 
3584433594bSBjorn Andersson static struct clk_rcg2 gcc_gp2_clk_src = {
3594433594bSBjorn Andersson 	.cmd_rcgr = 0x65004,
3604433594bSBjorn Andersson 	.mnd_width = 8,
3614433594bSBjorn Andersson 	.hid_width = 5,
3624433594bSBjorn Andersson 	.parent_map = gcc_parent_map_1,
3634433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_gp1_clk_src,
3644433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3654433594bSBjorn Andersson 		.name = "gcc_gp2_clk_src",
3664433594bSBjorn Andersson 		.parent_data = gcc_parents_1,
367b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_1),
3684433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3694433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
3704433594bSBjorn Andersson 	},
3714433594bSBjorn Andersson };
3724433594bSBjorn Andersson 
3734433594bSBjorn Andersson static struct clk_rcg2 gcc_gp3_clk_src = {
3744433594bSBjorn Andersson 	.cmd_rcgr = 0x66004,
3754433594bSBjorn Andersson 	.mnd_width = 8,
3764433594bSBjorn Andersson 	.hid_width = 5,
3774433594bSBjorn Andersson 	.parent_map = gcc_parent_map_1,
3784433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_gp1_clk_src,
3794433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3804433594bSBjorn Andersson 		.name = "gcc_gp3_clk_src",
3814433594bSBjorn Andersson 		.parent_data = gcc_parents_1,
382b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_1),
3834433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3844433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
3854433594bSBjorn Andersson 	},
3864433594bSBjorn Andersson };
3874433594bSBjorn Andersson 
3884433594bSBjorn Andersson static struct clk_rcg2 gcc_gp4_clk_src = {
3894433594bSBjorn Andersson 	.cmd_rcgr = 0xbe004,
3904433594bSBjorn Andersson 	.mnd_width = 8,
3914433594bSBjorn Andersson 	.hid_width = 5,
3924433594bSBjorn Andersson 	.parent_map = gcc_parent_map_1,
3934433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_gp1_clk_src,
3944433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
3954433594bSBjorn Andersson 		.name = "gcc_gp4_clk_src",
3964433594bSBjorn Andersson 		.parent_data = gcc_parents_1,
397b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_1),
3984433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
3994433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4004433594bSBjorn Andersson 	},
4014433594bSBjorn Andersson };
4024433594bSBjorn Andersson 
4034433594bSBjorn Andersson static struct clk_rcg2 gcc_gp5_clk_src = {
4044433594bSBjorn Andersson 	.cmd_rcgr = 0xbf004,
4054433594bSBjorn Andersson 	.mnd_width = 8,
4064433594bSBjorn Andersson 	.hid_width = 5,
4074433594bSBjorn Andersson 	.parent_map = gcc_parent_map_1,
4084433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_gp1_clk_src,
4094433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
4104433594bSBjorn Andersson 		.name = "gcc_gp5_clk_src",
4114433594bSBjorn Andersson 		.parent_data = gcc_parents_1,
412b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_1),
4134433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4144433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4154433594bSBjorn Andersson 	},
4164433594bSBjorn Andersson };
4174433594bSBjorn Andersson 
4184433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_npu_axi_clk_src[] = {
4194433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
4204433594bSBjorn Andersson 	F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0),
4214433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
4224433594bSBjorn Andersson 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
4234433594bSBjorn Andersson 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
4244433594bSBjorn Andersson 	F(403000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
4254433594bSBjorn Andersson 	F(533000000, P_GPLL1_OUT_MAIN, 2, 0, 0),
4264433594bSBjorn Andersson 	{ }
4274433594bSBjorn Andersson };
4284433594bSBjorn Andersson 
4294433594bSBjorn Andersson static struct clk_rcg2 gcc_npu_axi_clk_src = {
4304433594bSBjorn Andersson 	.cmd_rcgr = 0x4d014,
4314433594bSBjorn Andersson 	.mnd_width = 0,
4324433594bSBjorn Andersson 	.hid_width = 5,
4334433594bSBjorn Andersson 	.parent_map = gcc_parent_map_3,
4344433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_npu_axi_clk_src,
4354433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
4364433594bSBjorn Andersson 		.name = "gcc_npu_axi_clk_src",
4374433594bSBjorn Andersson 		.parent_data = gcc_parents_3,
438b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_3),
4394433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4404433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4414433594bSBjorn Andersson 	},
4424433594bSBjorn Andersson };
4434433594bSBjorn Andersson 
4444433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
4454433594bSBjorn Andersson 	F(9600000, P_BI_TCXO, 2, 0, 0),
4464433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
4474433594bSBjorn Andersson 	{ }
4484433594bSBjorn Andersson };
4494433594bSBjorn Andersson 
4504433594bSBjorn Andersson static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
4514433594bSBjorn Andersson 	.cmd_rcgr = 0x6b02c,
4524433594bSBjorn Andersson 	.mnd_width = 16,
4534433594bSBjorn Andersson 	.hid_width = 5,
4544433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
4554433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
4564433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
4574433594bSBjorn Andersson 		.name = "gcc_pcie_0_aux_clk_src",
4584433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
459b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
4604433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4614433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4624433594bSBjorn Andersson 	},
4634433594bSBjorn Andersson };
4644433594bSBjorn Andersson 
4654433594bSBjorn Andersson static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
4664433594bSBjorn Andersson 	.cmd_rcgr = 0x8d02c,
4674433594bSBjorn Andersson 	.mnd_width = 16,
4684433594bSBjorn Andersson 	.hid_width = 5,
4694433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
4704433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
4714433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
4724433594bSBjorn Andersson 		.name = "gcc_pcie_1_aux_clk_src",
4734433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
474b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
4754433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4764433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4774433594bSBjorn Andersson 	},
4784433594bSBjorn Andersson };
4794433594bSBjorn Andersson 
4804433594bSBjorn Andersson static struct clk_rcg2 gcc_pcie_2_aux_clk_src = {
4814433594bSBjorn Andersson 	.cmd_rcgr = 0x9d02c,
4824433594bSBjorn Andersson 	.mnd_width = 16,
4834433594bSBjorn Andersson 	.hid_width = 5,
4844433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
4854433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
4864433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
4874433594bSBjorn Andersson 		.name = "gcc_pcie_2_aux_clk_src",
4884433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
489b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
4904433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
4914433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
4924433594bSBjorn Andersson 	},
4934433594bSBjorn Andersson };
4944433594bSBjorn Andersson 
4954433594bSBjorn Andersson static struct clk_rcg2 gcc_pcie_3_aux_clk_src = {
4964433594bSBjorn Andersson 	.cmd_rcgr = 0xa302c,
4974433594bSBjorn Andersson 	.mnd_width = 16,
4984433594bSBjorn Andersson 	.hid_width = 5,
4994433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
5004433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
5014433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
5024433594bSBjorn Andersson 		.name = "gcc_pcie_3_aux_clk_src",
5034433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
504b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
5054433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5064433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
5074433594bSBjorn Andersson 	},
5084433594bSBjorn Andersson };
5094433594bSBjorn Andersson 
5104433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
5114433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
5124433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
5134433594bSBjorn Andersson 	{ }
5144433594bSBjorn Andersson };
5154433594bSBjorn Andersson 
5164433594bSBjorn Andersson static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
5174433594bSBjorn Andersson 	.cmd_rcgr = 0x6f014,
5184433594bSBjorn Andersson 	.mnd_width = 0,
5194433594bSBjorn Andersson 	.hid_width = 5,
5204433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
5214433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
5224433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
5234433594bSBjorn Andersson 		.name = "gcc_pcie_phy_refgen_clk_src",
5244433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
525b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
5264433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5274433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
5284433594bSBjorn Andersson 	},
5294433594bSBjorn Andersson };
5304433594bSBjorn Andersson 
5314433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
5324433594bSBjorn Andersson 	F(9600000, P_BI_TCXO, 2, 0, 0),
5334433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
5344433594bSBjorn Andersson 	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
5354433594bSBjorn Andersson 	{ }
5364433594bSBjorn Andersson };
5374433594bSBjorn Andersson 
5384433594bSBjorn Andersson static struct clk_rcg2 gcc_pdm2_clk_src = {
5394433594bSBjorn Andersson 	.cmd_rcgr = 0x33010,
5404433594bSBjorn Andersson 	.mnd_width = 0,
5414433594bSBjorn Andersson 	.hid_width = 5,
5424433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
5434433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
5444433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
5454433594bSBjorn Andersson 		.name = "gcc_pdm2_clk_src",
5464433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
547b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
5484433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5494433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
5504433594bSBjorn Andersson 	},
5514433594bSBjorn Andersson };
5524433594bSBjorn Andersson 
5534433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_qspi_1_core_clk_src[] = {
5544433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
5554433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
5564433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
5574433594bSBjorn Andersson 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
5584433594bSBjorn Andersson 	{ }
5594433594bSBjorn Andersson };
5604433594bSBjorn Andersson 
5614433594bSBjorn Andersson static struct clk_rcg2 gcc_qspi_1_core_clk_src = {
5624433594bSBjorn Andersson 	.cmd_rcgr = 0x4a00c,
5634433594bSBjorn Andersson 	.mnd_width = 0,
5644433594bSBjorn Andersson 	.hid_width = 5,
5654433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
5664433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
5674433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
5684433594bSBjorn Andersson 		.name = "gcc_qspi_1_core_clk_src",
5694433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
570b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
5714433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5724433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
5734433594bSBjorn Andersson 	},
5744433594bSBjorn Andersson };
5754433594bSBjorn Andersson 
5764433594bSBjorn Andersson static struct clk_rcg2 gcc_qspi_core_clk_src = {
5774433594bSBjorn Andersson 	.cmd_rcgr = 0x4b008,
5784433594bSBjorn Andersson 	.mnd_width = 0,
5794433594bSBjorn Andersson 	.hid_width = 5,
5804433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
5814433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
5824433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
5834433594bSBjorn Andersson 		.name = "gcc_qspi_core_clk_src",
5844433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
585b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
5864433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
5874433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
5884433594bSBjorn Andersson 	},
5894433594bSBjorn Andersson };
5904433594bSBjorn Andersson 
5914433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
5924433594bSBjorn Andersson 	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
5934433594bSBjorn Andersson 	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
5944433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
5954433594bSBjorn Andersson 	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
5964433594bSBjorn Andersson 	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
5974433594bSBjorn Andersson 	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
5984433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
5994433594bSBjorn Andersson 	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
6004433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
6014433594bSBjorn Andersson 	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
6024433594bSBjorn Andersson 	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
6034433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
6044433594bSBjorn Andersson 	F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
6054433594bSBjorn Andersson 	F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
6064433594bSBjorn Andersson 	F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
6074433594bSBjorn Andersson 	F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
6084433594bSBjorn Andersson 	F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
6094433594bSBjorn Andersson 	{ }
6104433594bSBjorn Andersson };
6114433594bSBjorn Andersson 
6124433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
6134433594bSBjorn Andersson 	.cmd_rcgr = 0x17148,
6144433594bSBjorn Andersson 	.mnd_width = 16,
6154433594bSBjorn Andersson 	.hid_width = 5,
6164433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6174433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6184433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6194433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s0_clk_src",
6204433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
621b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6224433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6234433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6244433594bSBjorn Andersson 	},
6254433594bSBjorn Andersson };
6264433594bSBjorn Andersson 
6274433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
6284433594bSBjorn Andersson 	.cmd_rcgr = 0x17278,
6294433594bSBjorn Andersson 	.mnd_width = 16,
6304433594bSBjorn Andersson 	.hid_width = 5,
6314433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6324433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6334433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6344433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s1_clk_src",
6354433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
636b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6374433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6384433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6394433594bSBjorn Andersson 	},
6404433594bSBjorn Andersson };
6414433594bSBjorn Andersson 
6424433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
6434433594bSBjorn Andersson 	.cmd_rcgr = 0x173a8,
6444433594bSBjorn Andersson 	.mnd_width = 16,
6454433594bSBjorn Andersson 	.hid_width = 5,
6464433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6474433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6484433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6494433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s2_clk_src",
6504433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
651b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6524433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6534433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6544433594bSBjorn Andersson 	},
6554433594bSBjorn Andersson };
6564433594bSBjorn Andersson 
6574433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
6584433594bSBjorn Andersson 	.cmd_rcgr = 0x174d8,
6594433594bSBjorn Andersson 	.mnd_width = 16,
6604433594bSBjorn Andersson 	.hid_width = 5,
6614433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6624433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6634433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6644433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s3_clk_src",
6654433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
666b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6674433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6684433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6694433594bSBjorn Andersson 	},
6704433594bSBjorn Andersson };
6714433594bSBjorn Andersson 
6724433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
6734433594bSBjorn Andersson 	.cmd_rcgr = 0x17608,
6744433594bSBjorn Andersson 	.mnd_width = 16,
6754433594bSBjorn Andersson 	.hid_width = 5,
6764433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6774433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6784433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6794433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s4_clk_src",
6804433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
681b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6824433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6834433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6844433594bSBjorn Andersson 	},
6854433594bSBjorn Andersson };
6864433594bSBjorn Andersson 
6874433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
6884433594bSBjorn Andersson 	.cmd_rcgr = 0x17738,
6894433594bSBjorn Andersson 	.mnd_width = 16,
6904433594bSBjorn Andersson 	.hid_width = 5,
6914433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
6924433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6934433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
6944433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s5_clk_src",
6954433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
696b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
6974433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
6984433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
6994433594bSBjorn Andersson 	},
7004433594bSBjorn Andersson };
7014433594bSBjorn Andersson 
7024433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
7034433594bSBjorn Andersson 	.cmd_rcgr = 0x17868,
7044433594bSBjorn Andersson 	.mnd_width = 16,
7054433594bSBjorn Andersson 	.hid_width = 5,
7064433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7074433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7084433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7094433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s6_clk_src",
7104433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
711b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7124433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7134433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7144433594bSBjorn Andersson 	},
7154433594bSBjorn Andersson };
7164433594bSBjorn Andersson 
7174433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
7184433594bSBjorn Andersson 	.cmd_rcgr = 0x17998,
7194433594bSBjorn Andersson 	.mnd_width = 16,
7204433594bSBjorn Andersson 	.hid_width = 5,
7214433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7224433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7234433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7244433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap0_s7_clk_src",
7254433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
726b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7274433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7284433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7294433594bSBjorn Andersson 	},
7304433594bSBjorn Andersson };
7314433594bSBjorn Andersson 
7324433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
7334433594bSBjorn Andersson 	.cmd_rcgr = 0x18148,
7344433594bSBjorn Andersson 	.mnd_width = 16,
7354433594bSBjorn Andersson 	.hid_width = 5,
7364433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7374433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7384433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7394433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s0_clk_src",
7404433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
741b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7424433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7434433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7444433594bSBjorn Andersson 	},
7454433594bSBjorn Andersson };
7464433594bSBjorn Andersson 
7474433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
7484433594bSBjorn Andersson 	.cmd_rcgr = 0x18278,
7494433594bSBjorn Andersson 	.mnd_width = 16,
7504433594bSBjorn Andersson 	.hid_width = 5,
7514433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7524433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7534433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7544433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s1_clk_src",
7554433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
756b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7574433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7584433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7594433594bSBjorn Andersson 	},
7604433594bSBjorn Andersson };
7614433594bSBjorn Andersson 
7624433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
7634433594bSBjorn Andersson 	.cmd_rcgr = 0x183a8,
7644433594bSBjorn Andersson 	.mnd_width = 16,
7654433594bSBjorn Andersson 	.hid_width = 5,
7664433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7674433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7684433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7694433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s2_clk_src",
7704433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
771b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7724433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7734433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7744433594bSBjorn Andersson 	},
7754433594bSBjorn Andersson };
7764433594bSBjorn Andersson 
7774433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
7784433594bSBjorn Andersson 	.cmd_rcgr = 0x184d8,
7794433594bSBjorn Andersson 	.mnd_width = 16,
7804433594bSBjorn Andersson 	.hid_width = 5,
7814433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7824433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7834433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7844433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s3_clk_src",
7854433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
786b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
7874433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
7884433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
7894433594bSBjorn Andersson 	},
7904433594bSBjorn Andersson };
7914433594bSBjorn Andersson 
7924433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
7934433594bSBjorn Andersson 	.cmd_rcgr = 0x18608,
7944433594bSBjorn Andersson 	.mnd_width = 16,
7954433594bSBjorn Andersson 	.hid_width = 5,
7964433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
7974433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7984433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
7994433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s4_clk_src",
8004433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
801b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8024433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8034433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8044433594bSBjorn Andersson 	},
8054433594bSBjorn Andersson };
8064433594bSBjorn Andersson 
8074433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
8084433594bSBjorn Andersson 	.cmd_rcgr = 0x18738,
8094433594bSBjorn Andersson 	.mnd_width = 16,
8104433594bSBjorn Andersson 	.hid_width = 5,
8114433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8124433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8134433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8144433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap1_s5_clk_src",
8154433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
816b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8174433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8184433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8194433594bSBjorn Andersson 	},
8204433594bSBjorn Andersson };
8214433594bSBjorn Andersson 
8224433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
8234433594bSBjorn Andersson 	.cmd_rcgr = 0x1e148,
8244433594bSBjorn Andersson 	.mnd_width = 16,
8254433594bSBjorn Andersson 	.hid_width = 5,
8264433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8274433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8284433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8294433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s0_clk_src",
8304433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
831b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8324433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8334433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8344433594bSBjorn Andersson 	},
8354433594bSBjorn Andersson };
8364433594bSBjorn Andersson 
8374433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
8384433594bSBjorn Andersson 	.cmd_rcgr = 0x1e278,
8394433594bSBjorn Andersson 	.mnd_width = 16,
8404433594bSBjorn Andersson 	.hid_width = 5,
8414433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8424433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8434433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8444433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s1_clk_src",
8454433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
846b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8474433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8484433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8494433594bSBjorn Andersson 	},
8504433594bSBjorn Andersson };
8514433594bSBjorn Andersson 
8524433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
8534433594bSBjorn Andersson 	.cmd_rcgr = 0x1e3a8,
8544433594bSBjorn Andersson 	.mnd_width = 16,
8554433594bSBjorn Andersson 	.hid_width = 5,
8564433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8574433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8584433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8594433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s2_clk_src",
8604433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
861b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8624433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8634433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8644433594bSBjorn Andersson 	},
8654433594bSBjorn Andersson };
8664433594bSBjorn Andersson 
8674433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
8684433594bSBjorn Andersson 	.cmd_rcgr = 0x1e4d8,
8694433594bSBjorn Andersson 	.mnd_width = 16,
8704433594bSBjorn Andersson 	.hid_width = 5,
8714433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8724433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8734433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8744433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s3_clk_src",
8754433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
876b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8774433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8784433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8794433594bSBjorn Andersson 	},
8804433594bSBjorn Andersson };
8814433594bSBjorn Andersson 
8824433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
8834433594bSBjorn Andersson 	.cmd_rcgr = 0x1e608,
8844433594bSBjorn Andersson 	.mnd_width = 16,
8854433594bSBjorn Andersson 	.hid_width = 5,
8864433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
8874433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
8884433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
8894433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s4_clk_src",
8904433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
891b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
8924433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
8934433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
8944433594bSBjorn Andersson 	},
8954433594bSBjorn Andersson };
8964433594bSBjorn Andersson 
8974433594bSBjorn Andersson static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
8984433594bSBjorn Andersson 	.cmd_rcgr = 0x1e738,
8994433594bSBjorn Andersson 	.mnd_width = 16,
9004433594bSBjorn Andersson 	.hid_width = 5,
9014433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
9024433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
9034433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
9044433594bSBjorn Andersson 		.name = "gcc_qupv3_wrap2_s5_clk_src",
9054433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
906b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
9074433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
9084433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
9094433594bSBjorn Andersson 	},
9104433594bSBjorn Andersson };
9114433594bSBjorn Andersson 
9124433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
9134433594bSBjorn Andersson 	F(400000, P_BI_TCXO, 12, 1, 4),
9144433594bSBjorn Andersson 	F(9600000, P_BI_TCXO, 2, 0, 0),
9154433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
9164433594bSBjorn Andersson 	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
9174433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
9184433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
9194433594bSBjorn Andersson 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
9204433594bSBjorn Andersson 	{ }
9214433594bSBjorn Andersson };
9224433594bSBjorn Andersson 
9234433594bSBjorn Andersson static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
9244433594bSBjorn Andersson 	.cmd_rcgr = 0x1400c,
9254433594bSBjorn Andersson 	.mnd_width = 8,
9264433594bSBjorn Andersson 	.hid_width = 5,
9274433594bSBjorn Andersson 	.parent_map = gcc_parent_map_7,
9284433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
9294433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
9304433594bSBjorn Andersson 		.name = "gcc_sdcc2_apps_clk_src",
9314433594bSBjorn Andersson 		.parent_data = gcc_parents_7,
932b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_7),
9334433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
9344433594bSBjorn Andersson 		.ops = &clk_rcg2_floor_ops,
9354433594bSBjorn Andersson 	},
9364433594bSBjorn Andersson };
9374433594bSBjorn Andersson 
9384433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
9394433594bSBjorn Andersson 	F(400000, P_BI_TCXO, 12, 1, 4),
9404433594bSBjorn Andersson 	F(9600000, P_BI_TCXO, 2, 0, 0),
9414433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
9424433594bSBjorn Andersson 	F(37500000, P_GPLL0_OUT_MAIN, 16, 0, 0),
9434433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
9444433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
9454433594bSBjorn Andersson 	{ }
9464433594bSBjorn Andersson };
9474433594bSBjorn Andersson 
9484433594bSBjorn Andersson static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
9494433594bSBjorn Andersson 	.cmd_rcgr = 0x1600c,
9504433594bSBjorn Andersson 	.mnd_width = 8,
9514433594bSBjorn Andersson 	.hid_width = 5,
9524433594bSBjorn Andersson 	.parent_map = gcc_parent_map_5,
9534433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
9544433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
9554433594bSBjorn Andersson 		.name = "gcc_sdcc4_apps_clk_src",
9564433594bSBjorn Andersson 		.parent_data = gcc_parents_5,
957b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_5),
9584433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
9594433594bSBjorn Andersson 		.ops = &clk_rcg2_floor_ops,
9604433594bSBjorn Andersson 	},
9614433594bSBjorn Andersson };
9624433594bSBjorn Andersson 
9634433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
9644433594bSBjorn Andersson 	F(105495, P_BI_TCXO, 2, 1, 91),
9654433594bSBjorn Andersson 	{ }
9664433594bSBjorn Andersson };
9674433594bSBjorn Andersson 
9684433594bSBjorn Andersson static struct clk_rcg2 gcc_tsif_ref_clk_src = {
9694433594bSBjorn Andersson 	.cmd_rcgr = 0x36010,
9704433594bSBjorn Andersson 	.mnd_width = 8,
9714433594bSBjorn Andersson 	.hid_width = 5,
9724433594bSBjorn Andersson 	.parent_map = gcc_parent_map_8,
9734433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_tsif_ref_clk_src,
9744433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
9754433594bSBjorn Andersson 		.name = "gcc_tsif_ref_clk_src",
9764433594bSBjorn Andersson 		.parent_data = gcc_parents_8,
977b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_8),
9784433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
9794433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
9804433594bSBjorn Andersson 	},
9814433594bSBjorn Andersson };
9824433594bSBjorn Andersson 
9834433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_card_2_axi_clk_src[] = {
9844433594bSBjorn Andersson 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
9854433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
9864433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
9874433594bSBjorn Andersson 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
9884433594bSBjorn Andersson 	{ }
9894433594bSBjorn Andersson };
9904433594bSBjorn Andersson 
9914433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_2_axi_clk_src = {
9924433594bSBjorn Andersson 	.cmd_rcgr = 0xa2020,
9934433594bSBjorn Andersson 	.mnd_width = 8,
9944433594bSBjorn Andersson 	.hid_width = 5,
9954433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
9964433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
9974433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
9984433594bSBjorn Andersson 		.name = "gcc_ufs_card_2_axi_clk_src",
9994433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1000b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
10014433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10024433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10034433594bSBjorn Andersson 	},
10044433594bSBjorn Andersson };
10054433594bSBjorn Andersson 
10064433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_2_ice_core_clk_src = {
10074433594bSBjorn Andersson 	.cmd_rcgr = 0xa2060,
10084433594bSBjorn Andersson 	.mnd_width = 0,
10094433594bSBjorn Andersson 	.hid_width = 5,
10104433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
10114433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
10124433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
10134433594bSBjorn Andersson 		.name = "gcc_ufs_card_2_ice_core_clk_src",
10144433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1015b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
10164433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10174433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10184433594bSBjorn Andersson 	},
10194433594bSBjorn Andersson };
10204433594bSBjorn Andersson 
10214433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_card_2_phy_aux_clk_src[] = {
10224433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
10234433594bSBjorn Andersson 	{ }
10244433594bSBjorn Andersson };
10254433594bSBjorn Andersson 
10264433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_2_phy_aux_clk_src = {
10274433594bSBjorn Andersson 	.cmd_rcgr = 0xa2094,
10284433594bSBjorn Andersson 	.mnd_width = 0,
10294433594bSBjorn Andersson 	.hid_width = 5,
10304433594bSBjorn Andersson 	.parent_map = gcc_parent_map_4,
10314433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
10324433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
10334433594bSBjorn Andersson 		.name = "gcc_ufs_card_2_phy_aux_clk_src",
10344433594bSBjorn Andersson 		.parent_data = gcc_parents_4,
1035b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_4),
10364433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10374433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10384433594bSBjorn Andersson 	},
10394433594bSBjorn Andersson };
10404433594bSBjorn Andersson 
10414433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_2_unipro_core_clk_src = {
10424433594bSBjorn Andersson 	.cmd_rcgr = 0xa2078,
10434433594bSBjorn Andersson 	.mnd_width = 0,
10444433594bSBjorn Andersson 	.hid_width = 5,
10454433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
10464433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
10474433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
10484433594bSBjorn Andersson 		.name = "gcc_ufs_card_2_unipro_core_clk_src",
10494433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1050b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
10514433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10524433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10534433594bSBjorn Andersson 	},
10544433594bSBjorn Andersson };
10554433594bSBjorn Andersson 
10564433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
10574433594bSBjorn Andersson 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
10584433594bSBjorn Andersson 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
10594433594bSBjorn Andersson 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
10604433594bSBjorn Andersson 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
10614433594bSBjorn Andersson 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
10624433594bSBjorn Andersson 	{ }
10634433594bSBjorn Andersson };
10644433594bSBjorn Andersson 
10654433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
10664433594bSBjorn Andersson 	.cmd_rcgr = 0x75020,
10674433594bSBjorn Andersson 	.mnd_width = 8,
10684433594bSBjorn Andersson 	.hid_width = 5,
10694433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
10704433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
10714433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
10724433594bSBjorn Andersson 		.name = "gcc_ufs_card_axi_clk_src",
10734433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1074b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
10754433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10764433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10774433594bSBjorn Andersson 	},
10784433594bSBjorn Andersson };
10794433594bSBjorn Andersson 
10804433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
10814433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
10824433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
10834433594bSBjorn Andersson 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
10844433594bSBjorn Andersson 	{ }
10854433594bSBjorn Andersson };
10864433594bSBjorn Andersson 
10874433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
10884433594bSBjorn Andersson 	.cmd_rcgr = 0x75060,
10894433594bSBjorn Andersson 	.mnd_width = 0,
10904433594bSBjorn Andersson 	.hid_width = 5,
10914433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
10924433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
10934433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
10944433594bSBjorn Andersson 		.name = "gcc_ufs_card_ice_core_clk_src",
10954433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1096b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
10974433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
10984433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
10994433594bSBjorn Andersson 	},
11004433594bSBjorn Andersson };
11014433594bSBjorn Andersson 
11024433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
11034433594bSBjorn Andersson 	.cmd_rcgr = 0x75094,
11044433594bSBjorn Andersson 	.mnd_width = 0,
11054433594bSBjorn Andersson 	.hid_width = 5,
11064433594bSBjorn Andersson 	.parent_map = gcc_parent_map_4,
11074433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
11084433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
11094433594bSBjorn Andersson 		.name = "gcc_ufs_card_phy_aux_clk_src",
11104433594bSBjorn Andersson 		.parent_data = gcc_parents_4,
1111b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_4),
11124433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11134433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11144433594bSBjorn Andersson 	},
11154433594bSBjorn Andersson };
11164433594bSBjorn Andersson 
11174433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
11184433594bSBjorn Andersson 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
11194433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
11204433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
11214433594bSBjorn Andersson 	{ }
11224433594bSBjorn Andersson };
11234433594bSBjorn Andersson 
11244433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
11254433594bSBjorn Andersson 	.cmd_rcgr = 0x75078,
11264433594bSBjorn Andersson 	.mnd_width = 0,
11274433594bSBjorn Andersson 	.hid_width = 5,
11284433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
11294433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
11304433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
11314433594bSBjorn Andersson 		.name = "gcc_ufs_card_unipro_core_clk_src",
11324433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1133b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
11344433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11354433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11364433594bSBjorn Andersson 	},
11374433594bSBjorn Andersson };
11384433594bSBjorn Andersson 
11394433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
11404433594bSBjorn Andersson 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
11414433594bSBjorn Andersson 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
11424433594bSBjorn Andersson 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
11434433594bSBjorn Andersson 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
11444433594bSBjorn Andersson 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
11454433594bSBjorn Andersson 	{ }
11464433594bSBjorn Andersson };
11474433594bSBjorn Andersson 
11484433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
11494433594bSBjorn Andersson 	.cmd_rcgr = 0x77020,
11504433594bSBjorn Andersson 	.mnd_width = 8,
11514433594bSBjorn Andersson 	.hid_width = 5,
11524433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
11534433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
11544433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
11554433594bSBjorn Andersson 		.name = "gcc_ufs_phy_axi_clk_src",
11564433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1157b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
11584433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11594433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11604433594bSBjorn Andersson 	},
11614433594bSBjorn Andersson };
11624433594bSBjorn Andersson 
11634433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
11644433594bSBjorn Andersson 	.cmd_rcgr = 0x77060,
11654433594bSBjorn Andersson 	.mnd_width = 0,
11664433594bSBjorn Andersson 	.hid_width = 5,
11674433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
11684433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
11694433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
11704433594bSBjorn Andersson 		.name = "gcc_ufs_phy_ice_core_clk_src",
11714433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1172b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
11734433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11744433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11754433594bSBjorn Andersson 	},
11764433594bSBjorn Andersson };
11774433594bSBjorn Andersson 
11784433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
11794433594bSBjorn Andersson 	.cmd_rcgr = 0x77094,
11804433594bSBjorn Andersson 	.mnd_width = 0,
11814433594bSBjorn Andersson 	.hid_width = 5,
11824433594bSBjorn Andersson 	.parent_map = gcc_parent_map_4,
11834433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
11844433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
11854433594bSBjorn Andersson 		.name = "gcc_ufs_phy_phy_aux_clk_src",
11864433594bSBjorn Andersson 		.parent_data = gcc_parents_4,
1187b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_4),
11884433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
11894433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
11904433594bSBjorn Andersson 	},
11914433594bSBjorn Andersson };
11924433594bSBjorn Andersson 
11934433594bSBjorn Andersson static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
11944433594bSBjorn Andersson 	.cmd_rcgr = 0x77078,
11954433594bSBjorn Andersson 	.mnd_width = 0,
11964433594bSBjorn Andersson 	.hid_width = 5,
11974433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
11984433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
11994433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12004433594bSBjorn Andersson 		.name = "gcc_ufs_phy_unipro_core_clk_src",
12014433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1202b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12034433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12044433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12054433594bSBjorn Andersson 	},
12064433594bSBjorn Andersson };
12074433594bSBjorn Andersson 
12084433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
12094433594bSBjorn Andersson 	F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
12104433594bSBjorn Andersson 	F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
12114433594bSBjorn Andersson 	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
12124433594bSBjorn Andersson 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
12134433594bSBjorn Andersson 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
12144433594bSBjorn Andersson 	{ }
12154433594bSBjorn Andersson };
12164433594bSBjorn Andersson 
12174433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
12184433594bSBjorn Andersson 	.cmd_rcgr = 0xa601c,
12194433594bSBjorn Andersson 	.mnd_width = 8,
12204433594bSBjorn Andersson 	.hid_width = 5,
12214433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
12224433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
12234433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12244433594bSBjorn Andersson 		.name = "gcc_usb30_mp_master_clk_src",
12254433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1226b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12274433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12284433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12294433594bSBjorn Andersson 	},
12304433594bSBjorn Andersson };
12314433594bSBjorn Andersson 
12324433594bSBjorn Andersson static const struct freq_tbl ftbl_gcc_usb30_mp_mock_utmi_clk_src[] = {
12334433594bSBjorn Andersson 	F(19200000, P_BI_TCXO, 1, 0, 0),
12344433594bSBjorn Andersson 	F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
12354433594bSBjorn Andersson 	F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
12364433594bSBjorn Andersson 	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
12374433594bSBjorn Andersson 	{ }
12384433594bSBjorn Andersson };
12394433594bSBjorn Andersson 
12404433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
12414433594bSBjorn Andersson 	.cmd_rcgr = 0xa6034,
12424433594bSBjorn Andersson 	.mnd_width = 0,
12434433594bSBjorn Andersson 	.hid_width = 5,
12444433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
12454433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
12464433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12474433594bSBjorn Andersson 		.name = "gcc_usb30_mp_mock_utmi_clk_src",
12484433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1249b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12504433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12514433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12524433594bSBjorn Andersson 	},
12534433594bSBjorn Andersson };
12544433594bSBjorn Andersson 
12554433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
12564433594bSBjorn Andersson 	.cmd_rcgr = 0xf01c,
12574433594bSBjorn Andersson 	.mnd_width = 8,
12584433594bSBjorn Andersson 	.hid_width = 5,
12594433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
12604433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
12614433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12624433594bSBjorn Andersson 		.name = "gcc_usb30_prim_master_clk_src",
12634433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1264b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12654433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12664433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12674433594bSBjorn Andersson 	},
12684433594bSBjorn Andersson };
12694433594bSBjorn Andersson 
12704433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
12714433594bSBjorn Andersson 	.cmd_rcgr = 0xf034,
12724433594bSBjorn Andersson 	.mnd_width = 0,
12734433594bSBjorn Andersson 	.hid_width = 5,
12744433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
12754433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
12764433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12774433594bSBjorn Andersson 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
12784433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1279b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12804433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12814433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12824433594bSBjorn Andersson 	},
12834433594bSBjorn Andersson };
12844433594bSBjorn Andersson 
12854433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
12864433594bSBjorn Andersson 	.cmd_rcgr = 0x1001c,
12874433594bSBjorn Andersson 	.mnd_width = 8,
12884433594bSBjorn Andersson 	.hid_width = 5,
12894433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
12904433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
12914433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
12924433594bSBjorn Andersson 		.name = "gcc_usb30_sec_master_clk_src",
12934433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1294b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
12954433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
12964433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
12974433594bSBjorn Andersson 	},
12984433594bSBjorn Andersson };
12994433594bSBjorn Andersson 
13004433594bSBjorn Andersson static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
13014433594bSBjorn Andersson 	.cmd_rcgr = 0x10034,
13024433594bSBjorn Andersson 	.mnd_width = 0,
13034433594bSBjorn Andersson 	.hid_width = 5,
13044433594bSBjorn Andersson 	.parent_map = gcc_parent_map_0,
13054433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
13064433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
13074433594bSBjorn Andersson 		.name = "gcc_usb30_sec_mock_utmi_clk_src",
13084433594bSBjorn Andersson 		.parent_data = gcc_parents_0,
1309b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_0),
13104433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13114433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
13124433594bSBjorn Andersson 	},
13134433594bSBjorn Andersson };
13144433594bSBjorn Andersson 
13154433594bSBjorn Andersson static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
13164433594bSBjorn Andersson 	.cmd_rcgr = 0xa6068,
13174433594bSBjorn Andersson 	.mnd_width = 0,
13184433594bSBjorn Andersson 	.hid_width = 5,
13194433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
13204433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
13214433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
13224433594bSBjorn Andersson 		.name = "gcc_usb3_mp_phy_aux_clk_src",
13234433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
1324b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
13254433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13264433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
13274433594bSBjorn Andersson 	},
13284433594bSBjorn Andersson };
13294433594bSBjorn Andersson 
13304433594bSBjorn Andersson static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
13314433594bSBjorn Andersson 	.cmd_rcgr = 0xf060,
13324433594bSBjorn Andersson 	.mnd_width = 0,
13334433594bSBjorn Andersson 	.hid_width = 5,
13344433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
13354433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
13364433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
13374433594bSBjorn Andersson 		.name = "gcc_usb3_prim_phy_aux_clk_src",
13384433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
1339b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
13404433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13414433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
13424433594bSBjorn Andersson 	},
13434433594bSBjorn Andersson };
13444433594bSBjorn Andersson 
13454433594bSBjorn Andersson static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
13464433594bSBjorn Andersson 	.cmd_rcgr = 0x10060,
13474433594bSBjorn Andersson 	.mnd_width = 0,
13484433594bSBjorn Andersson 	.hid_width = 5,
13494433594bSBjorn Andersson 	.parent_map = gcc_parent_map_2,
13504433594bSBjorn Andersson 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
13514433594bSBjorn Andersson 	.clkr.hw.init = &(struct clk_init_data){
13524433594bSBjorn Andersson 		.name = "gcc_usb3_sec_phy_aux_clk_src",
13534433594bSBjorn Andersson 		.parent_data = gcc_parents_2,
1354b6cf77a7SDmitry Baryshkov 		.num_parents = ARRAY_SIZE(gcc_parents_2),
13554433594bSBjorn Andersson 		.flags = CLK_SET_RATE_PARENT,
13564433594bSBjorn Andersson 		.ops = &clk_rcg2_ops,
13574433594bSBjorn Andersson 	},
13584433594bSBjorn Andersson };
13594433594bSBjorn Andersson 
13604433594bSBjorn Andersson static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
13614433594bSBjorn Andersson 	.halt_reg = 0x90018,
13624433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
13634433594bSBjorn Andersson 	.clkr = {
13644433594bSBjorn Andersson 		.enable_reg = 0x90018,
13654433594bSBjorn Andersson 		.enable_mask = BIT(0),
13664433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
13674433594bSBjorn Andersson 			.name = "gcc_aggre_noc_pcie_tbu_clk",
13684433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
13694433594bSBjorn Andersson 		},
13704433594bSBjorn Andersson 	},
13714433594bSBjorn Andersson };
13724433594bSBjorn Andersson 
13734433594bSBjorn Andersson static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
13744433594bSBjorn Andersson 	.halt_reg = 0x750c0,
13754433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
13764433594bSBjorn Andersson 	.hwcg_reg = 0x750c0,
13774433594bSBjorn Andersson 	.hwcg_bit = 1,
13784433594bSBjorn Andersson 	.clkr = {
13794433594bSBjorn Andersson 		.enable_reg = 0x750c0,
13804433594bSBjorn Andersson 		.enable_mask = BIT(0),
13814433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
13824433594bSBjorn Andersson 			.name = "gcc_aggre_ufs_card_axi_clk",
13834433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
13844433594bSBjorn Andersson 				      &gcc_ufs_card_axi_clk_src.clkr.hw
13854433594bSBjorn Andersson 			},
13864433594bSBjorn Andersson 			.num_parents = 1,
13874433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
13884433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
13894433594bSBjorn Andersson 		},
13904433594bSBjorn Andersson 	},
13914433594bSBjorn Andersson };
13924433594bSBjorn Andersson 
13934433594bSBjorn Andersson static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
13944433594bSBjorn Andersson 	.halt_reg = 0x750c0,
13954433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
13964433594bSBjorn Andersson 	.hwcg_reg = 0x750c0,
13974433594bSBjorn Andersson 	.hwcg_bit = 1,
13984433594bSBjorn Andersson 	.clkr = {
13994433594bSBjorn Andersson 		.enable_reg = 0x750c0,
14004433594bSBjorn Andersson 		.enable_mask = BIT(1),
14014433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14024433594bSBjorn Andersson 			.name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
14034433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14044433594bSBjorn Andersson 				      &gcc_aggre_ufs_card_axi_clk.clkr.hw
14054433594bSBjorn Andersson 			},
14064433594bSBjorn Andersson 			.num_parents = 1,
14074433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14084433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
14094433594bSBjorn Andersson 		},
14104433594bSBjorn Andersson 	},
14114433594bSBjorn Andersson };
14124433594bSBjorn Andersson 
14134433594bSBjorn Andersson static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
14144433594bSBjorn Andersson 	.halt_reg = 0x770c0,
14154433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
14164433594bSBjorn Andersson 	.hwcg_reg = 0x770c0,
14174433594bSBjorn Andersson 	.hwcg_bit = 1,
14184433594bSBjorn Andersson 	.clkr = {
14194433594bSBjorn Andersson 		.enable_reg = 0x770c0,
14204433594bSBjorn Andersson 		.enable_mask = BIT(0),
14214433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14224433594bSBjorn Andersson 			.name = "gcc_aggre_ufs_phy_axi_clk",
14234433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14244433594bSBjorn Andersson 				      &gcc_ufs_phy_axi_clk_src.clkr.hw
14254433594bSBjorn Andersson 			},
14264433594bSBjorn Andersson 			.num_parents = 1,
14274433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
14294433594bSBjorn Andersson 		},
14304433594bSBjorn Andersson 	},
14314433594bSBjorn Andersson };
14324433594bSBjorn Andersson 
14334433594bSBjorn Andersson static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
14344433594bSBjorn Andersson 	.halt_reg = 0x770c0,
14354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
14364433594bSBjorn Andersson 	.hwcg_reg = 0x770c0,
14374433594bSBjorn Andersson 	.hwcg_bit = 1,
14384433594bSBjorn Andersson 	.clkr = {
14394433594bSBjorn Andersson 		.enable_reg = 0x770c0,
14404433594bSBjorn Andersson 		.enable_mask = BIT(1),
14414433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14424433594bSBjorn Andersson 			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
14434433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14444433594bSBjorn Andersson 				      &gcc_aggre_ufs_phy_axi_clk.clkr.hw
14454433594bSBjorn Andersson 			},
14464433594bSBjorn Andersson 			.num_parents = 1,
14474433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14484433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
14494433594bSBjorn Andersson 		},
14504433594bSBjorn Andersson 	},
14514433594bSBjorn Andersson };
14524433594bSBjorn Andersson 
14534433594bSBjorn Andersson static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
14544433594bSBjorn Andersson 	.halt_reg = 0xa6084,
14554433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
14564433594bSBjorn Andersson 	.clkr = {
14574433594bSBjorn Andersson 		.enable_reg = 0xa6084,
14584433594bSBjorn Andersson 		.enable_mask = BIT(0),
14594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14604433594bSBjorn Andersson 			.name = "gcc_aggre_usb3_mp_axi_clk",
14614433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14624433594bSBjorn Andersson 				      &gcc_usb30_mp_master_clk_src.clkr.hw
14634433594bSBjorn Andersson 			},
14644433594bSBjorn Andersson 			.num_parents = 1,
14654433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14664433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
14674433594bSBjorn Andersson 		},
14684433594bSBjorn Andersson 	},
14694433594bSBjorn Andersson };
14704433594bSBjorn Andersson 
14714433594bSBjorn Andersson static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
14724433594bSBjorn Andersson 	.halt_reg = 0xf07c,
14734433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
14744433594bSBjorn Andersson 	.clkr = {
14754433594bSBjorn Andersson 		.enable_reg = 0xf07c,
14764433594bSBjorn Andersson 		.enable_mask = BIT(0),
14774433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14784433594bSBjorn Andersson 			.name = "gcc_aggre_usb3_prim_axi_clk",
14794433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14804433594bSBjorn Andersson 				      &gcc_usb30_prim_master_clk_src.clkr.hw
14814433594bSBjorn Andersson 			},
14824433594bSBjorn Andersson 			.num_parents = 1,
14834433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
14844433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
14854433594bSBjorn Andersson 		},
14864433594bSBjorn Andersson 	},
14874433594bSBjorn Andersson };
14884433594bSBjorn Andersson 
14894433594bSBjorn Andersson static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
14904433594bSBjorn Andersson 	.halt_reg = 0x1007c,
14914433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
14924433594bSBjorn Andersson 	.clkr = {
14934433594bSBjorn Andersson 		.enable_reg = 0x1007c,
14944433594bSBjorn Andersson 		.enable_mask = BIT(0),
14954433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
14964433594bSBjorn Andersson 			.name = "gcc_aggre_usb3_sec_axi_clk",
14974433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
14984433594bSBjorn Andersson 				      &gcc_usb30_sec_master_clk_src.clkr.hw
14994433594bSBjorn Andersson 			},
15004433594bSBjorn Andersson 			.num_parents = 1,
15014433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15024433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15034433594bSBjorn Andersson 		},
15044433594bSBjorn Andersson 	},
15054433594bSBjorn Andersson };
15064433594bSBjorn Andersson 
15074433594bSBjorn Andersson static struct clk_branch gcc_boot_rom_ahb_clk = {
15084433594bSBjorn Andersson 	.halt_reg = 0x38004,
15094433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
15104433594bSBjorn Andersson 	.hwcg_reg = 0x38004,
15114433594bSBjorn Andersson 	.hwcg_bit = 1,
15124433594bSBjorn Andersson 	.clkr = {
15134433594bSBjorn Andersson 		.enable_reg = 0x52004,
15144433594bSBjorn Andersson 		.enable_mask = BIT(10),
15154433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15164433594bSBjorn Andersson 			.name = "gcc_boot_rom_ahb_clk",
15174433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15184433594bSBjorn Andersson 		},
15194433594bSBjorn Andersson 	},
15204433594bSBjorn Andersson };
15214433594bSBjorn Andersson 
15224433594bSBjorn Andersson static struct clk_branch gcc_camera_hf_axi_clk = {
15234433594bSBjorn Andersson 	.halt_reg = 0xb030,
15244433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
15254433594bSBjorn Andersson 	.clkr = {
15264433594bSBjorn Andersson 		.enable_reg = 0xb030,
15274433594bSBjorn Andersson 		.enable_mask = BIT(0),
15284433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15294433594bSBjorn Andersson 			.name = "gcc_camera_hf_axi_clk",
15304433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15314433594bSBjorn Andersson 		},
15324433594bSBjorn Andersson 	},
15334433594bSBjorn Andersson };
15344433594bSBjorn Andersson 
15354433594bSBjorn Andersson static struct clk_branch gcc_camera_sf_axi_clk = {
15364433594bSBjorn Andersson 	.halt_reg = 0xb034,
15374433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
15384433594bSBjorn Andersson 	.clkr = {
15394433594bSBjorn Andersson 		.enable_reg = 0xb034,
15404433594bSBjorn Andersson 		.enable_mask = BIT(0),
15414433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15424433594bSBjorn Andersson 			.name = "gcc_camera_sf_axi_clk",
15434433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15444433594bSBjorn Andersson 		},
15454433594bSBjorn Andersson 	},
15464433594bSBjorn Andersson };
15474433594bSBjorn Andersson 
15484433594bSBjorn Andersson static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
15494433594bSBjorn Andersson 	.halt_reg = 0xa609c,
15504433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
15514433594bSBjorn Andersson 	.clkr = {
15524433594bSBjorn Andersson 		.enable_reg = 0xa609c,
15534433594bSBjorn Andersson 		.enable_mask = BIT(0),
15544433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15554433594bSBjorn Andersson 			.name = "gcc_cfg_noc_usb3_mp_axi_clk",
15564433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
15574433594bSBjorn Andersson 				      &gcc_usb30_mp_master_clk_src.clkr.hw
15584433594bSBjorn Andersson 			},
15594433594bSBjorn Andersson 			.num_parents = 1,
15604433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15614433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15624433594bSBjorn Andersson 		},
15634433594bSBjorn Andersson 	},
15644433594bSBjorn Andersson };
15654433594bSBjorn Andersson 
15664433594bSBjorn Andersson static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
15674433594bSBjorn Andersson 	.halt_reg = 0xf078,
15684433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
15694433594bSBjorn Andersson 	.clkr = {
15704433594bSBjorn Andersson 		.enable_reg = 0xf078,
15714433594bSBjorn Andersson 		.enable_mask = BIT(0),
15724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15734433594bSBjorn Andersson 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
15744433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
15754433594bSBjorn Andersson 				      &gcc_usb30_prim_master_clk_src.clkr.hw
15764433594bSBjorn Andersson 			},
15774433594bSBjorn Andersson 			.num_parents = 1,
15784433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15794433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15804433594bSBjorn Andersson 		},
15814433594bSBjorn Andersson 	},
15824433594bSBjorn Andersson };
15834433594bSBjorn Andersson 
15844433594bSBjorn Andersson static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
15854433594bSBjorn Andersson 	.halt_reg = 0x10078,
15864433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
15874433594bSBjorn Andersson 	.clkr = {
15884433594bSBjorn Andersson 		.enable_reg = 0x10078,
15894433594bSBjorn Andersson 		.enable_mask = BIT(0),
15904433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
15914433594bSBjorn Andersson 			.name = "gcc_cfg_noc_usb3_sec_axi_clk",
15924433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
15934433594bSBjorn Andersson 				      &gcc_usb30_sec_master_clk_src.clkr.hw
15944433594bSBjorn Andersson 			},
15954433594bSBjorn Andersson 			.num_parents = 1,
15964433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
15974433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
15984433594bSBjorn Andersson 		},
15994433594bSBjorn Andersson 	},
16004433594bSBjorn Andersson };
16014433594bSBjorn Andersson 
16024433594bSBjorn Andersson /* For CPUSS functionality the AHB clock needs to be left enabled */
16034433594bSBjorn Andersson static struct clk_branch gcc_cpuss_ahb_clk = {
16044433594bSBjorn Andersson 	.halt_reg = 0x48000,
16054433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
16064433594bSBjorn Andersson 	.clkr = {
16074433594bSBjorn Andersson 		.enable_reg = 0x52004,
16084433594bSBjorn Andersson 		.enable_mask = BIT(21),
16094433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16104433594bSBjorn Andersson 			.name = "gcc_cpuss_ahb_clk",
16114433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
16124433594bSBjorn Andersson 				      &gcc_cpuss_ahb_clk_src.clkr.hw
16134433594bSBjorn Andersson 			},
16144433594bSBjorn Andersson 			.num_parents = 1,
16154433594bSBjorn Andersson 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
16164433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16174433594bSBjorn Andersson 		},
16184433594bSBjorn Andersson 	},
16194433594bSBjorn Andersson };
16204433594bSBjorn Andersson 
16214433594bSBjorn Andersson static struct clk_branch gcc_cpuss_rbcpr_clk = {
16224433594bSBjorn Andersson 	.halt_reg = 0x48008,
16234433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
16244433594bSBjorn Andersson 	.clkr = {
16254433594bSBjorn Andersson 		.enable_reg = 0x48008,
16264433594bSBjorn Andersson 		.enable_mask = BIT(0),
16274433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16284433594bSBjorn Andersson 			.name = "gcc_cpuss_rbcpr_clk",
16294433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16304433594bSBjorn Andersson 		},
16314433594bSBjorn Andersson 	},
16324433594bSBjorn Andersson };
16334433594bSBjorn Andersson 
16344433594bSBjorn Andersson static struct clk_branch gcc_ddrss_gpu_axi_clk = {
16354433594bSBjorn Andersson 	.halt_reg = 0x71154,
16364433594bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
16374433594bSBjorn Andersson 	.clkr = {
16384433594bSBjorn Andersson 		.enable_reg = 0x71154,
16394433594bSBjorn Andersson 		.enable_mask = BIT(0),
16404433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16414433594bSBjorn Andersson 			.name = "gcc_ddrss_gpu_axi_clk",
16424433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16434433594bSBjorn Andersson 		},
16444433594bSBjorn Andersson 	},
16454433594bSBjorn Andersson };
16464433594bSBjorn Andersson 
16474433594bSBjorn Andersson static struct clk_branch gcc_disp_hf_axi_clk = {
16484433594bSBjorn Andersson 	.halt_reg = 0xb038,
16494433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
16504433594bSBjorn Andersson 	.clkr = {
16514433594bSBjorn Andersson 		.enable_reg = 0xb038,
16524433594bSBjorn Andersson 		.enable_mask = BIT(0),
16534433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16544433594bSBjorn Andersson 			.name = "gcc_disp_hf_axi_clk",
16554433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16564433594bSBjorn Andersson 		},
16574433594bSBjorn Andersson 	},
16584433594bSBjorn Andersson };
16594433594bSBjorn Andersson 
16604433594bSBjorn Andersson static struct clk_branch gcc_disp_sf_axi_clk = {
16614433594bSBjorn Andersson 	.halt_reg = 0xb03c,
16624433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
16634433594bSBjorn Andersson 	.clkr = {
16644433594bSBjorn Andersson 		.enable_reg = 0xb03c,
16654433594bSBjorn Andersson 		.enable_mask = BIT(0),
16664433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16674433594bSBjorn Andersson 			.name = "gcc_disp_sf_axi_clk",
16684433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16694433594bSBjorn Andersson 		},
16704433594bSBjorn Andersson 	},
16714433594bSBjorn Andersson };
16724433594bSBjorn Andersson 
16734433594bSBjorn Andersson static struct clk_branch gcc_emac_axi_clk = {
16744433594bSBjorn Andersson 	.halt_reg = 0x6010,
16754433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
16764433594bSBjorn Andersson 	.clkr = {
16774433594bSBjorn Andersson 		.enable_reg = 0x6010,
16784433594bSBjorn Andersson 		.enable_mask = BIT(0),
16794433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16804433594bSBjorn Andersson 			.name = "gcc_emac_axi_clk",
16814433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
16824433594bSBjorn Andersson 		},
16834433594bSBjorn Andersson 	},
16844433594bSBjorn Andersson };
16854433594bSBjorn Andersson 
16864433594bSBjorn Andersson static struct clk_branch gcc_emac_ptp_clk = {
16874433594bSBjorn Andersson 	.halt_reg = 0x6034,
16884433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
16894433594bSBjorn Andersson 	.clkr = {
16904433594bSBjorn Andersson 		.enable_reg = 0x6034,
16914433594bSBjorn Andersson 		.enable_mask = BIT(0),
16924433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
16934433594bSBjorn Andersson 			.name = "gcc_emac_ptp_clk",
16944433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
16954433594bSBjorn Andersson 				      &gcc_emac_ptp_clk_src.clkr.hw
16964433594bSBjorn Andersson 			},
16974433594bSBjorn Andersson 			.num_parents = 1,
16984433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
16994433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17004433594bSBjorn Andersson 		},
17014433594bSBjorn Andersson 	},
17024433594bSBjorn Andersson };
17034433594bSBjorn Andersson 
17044433594bSBjorn Andersson static struct clk_branch gcc_emac_rgmii_clk = {
17054433594bSBjorn Andersson 	.halt_reg = 0x6018,
17064433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17074433594bSBjorn Andersson 	.clkr = {
17084433594bSBjorn Andersson 		.enable_reg = 0x6018,
17094433594bSBjorn Andersson 		.enable_mask = BIT(0),
17104433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17114433594bSBjorn Andersson 			.name = "gcc_emac_rgmii_clk",
17124433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
17134433594bSBjorn Andersson 				      &gcc_emac_rgmii_clk_src.clkr.hw
17144433594bSBjorn Andersson 			},
17154433594bSBjorn Andersson 			.num_parents = 1,
17164433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17174433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17184433594bSBjorn Andersson 		},
17194433594bSBjorn Andersson 	},
17204433594bSBjorn Andersson };
17214433594bSBjorn Andersson 
17224433594bSBjorn Andersson static struct clk_branch gcc_emac_slv_ahb_clk = {
17234433594bSBjorn Andersson 	.halt_reg = 0x6014,
17244433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17254433594bSBjorn Andersson 	.hwcg_reg = 0x6014,
17264433594bSBjorn Andersson 	.hwcg_bit = 1,
17274433594bSBjorn Andersson 	.clkr = {
17284433594bSBjorn Andersson 		.enable_reg = 0x6014,
17294433594bSBjorn Andersson 		.enable_mask = BIT(0),
17304433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17314433594bSBjorn Andersson 			.name = "gcc_emac_slv_ahb_clk",
17324433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17334433594bSBjorn Andersson 		},
17344433594bSBjorn Andersson 	},
17354433594bSBjorn Andersson };
17364433594bSBjorn Andersson 
17374433594bSBjorn Andersson static struct clk_branch gcc_gp1_clk = {
17384433594bSBjorn Andersson 	.halt_reg = 0x64000,
17394433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17404433594bSBjorn Andersson 	.clkr = {
17414433594bSBjorn Andersson 		.enable_reg = 0x64000,
17424433594bSBjorn Andersson 		.enable_mask = BIT(0),
17434433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17444433594bSBjorn Andersson 			.name = "gcc_gp1_clk",
17454433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
17464433594bSBjorn Andersson 				      &gcc_gp1_clk_src.clkr.hw
17474433594bSBjorn Andersson 			},
17484433594bSBjorn Andersson 			.num_parents = 1,
17494433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17504433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17514433594bSBjorn Andersson 		},
17524433594bSBjorn Andersson 	},
17534433594bSBjorn Andersson };
17544433594bSBjorn Andersson 
17554433594bSBjorn Andersson static struct clk_branch gcc_gp2_clk = {
17564433594bSBjorn Andersson 	.halt_reg = 0x65000,
17574433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17584433594bSBjorn Andersson 	.clkr = {
17594433594bSBjorn Andersson 		.enable_reg = 0x65000,
17604433594bSBjorn Andersson 		.enable_mask = BIT(0),
17614433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17624433594bSBjorn Andersson 			.name = "gcc_gp2_clk",
17634433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
17644433594bSBjorn Andersson 				      &gcc_gp2_clk_src.clkr.hw
17654433594bSBjorn Andersson 			},
17664433594bSBjorn Andersson 			.num_parents = 1,
17674433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17684433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17694433594bSBjorn Andersson 		},
17704433594bSBjorn Andersson 	},
17714433594bSBjorn Andersson };
17724433594bSBjorn Andersson 
17734433594bSBjorn Andersson static struct clk_branch gcc_gp3_clk = {
17744433594bSBjorn Andersson 	.halt_reg = 0x66000,
17754433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17764433594bSBjorn Andersson 	.clkr = {
17774433594bSBjorn Andersson 		.enable_reg = 0x66000,
17784433594bSBjorn Andersson 		.enable_mask = BIT(0),
17794433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17804433594bSBjorn Andersson 			.name = "gcc_gp3_clk",
17814433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
17824433594bSBjorn Andersson 				      &gcc_gp3_clk_src.clkr.hw
17834433594bSBjorn Andersson 			},
17844433594bSBjorn Andersson 			.num_parents = 1,
17854433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
17864433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
17874433594bSBjorn Andersson 		},
17884433594bSBjorn Andersson 	},
17894433594bSBjorn Andersson };
17904433594bSBjorn Andersson 
17914433594bSBjorn Andersson static struct clk_branch gcc_gp4_clk = {
17924433594bSBjorn Andersson 	.halt_reg = 0xbe000,
17934433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
17944433594bSBjorn Andersson 	.clkr = {
17954433594bSBjorn Andersson 		.enable_reg = 0xbe000,
17964433594bSBjorn Andersson 		.enable_mask = BIT(0),
17974433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
17984433594bSBjorn Andersson 			.name = "gcc_gp4_clk",
17994433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
18004433594bSBjorn Andersson 				      &gcc_gp4_clk_src.clkr.hw
18014433594bSBjorn Andersson 			},
18024433594bSBjorn Andersson 			.num_parents = 1,
18034433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18044433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18054433594bSBjorn Andersson 		},
18064433594bSBjorn Andersson 	},
18074433594bSBjorn Andersson };
18084433594bSBjorn Andersson 
18094433594bSBjorn Andersson static struct clk_branch gcc_gp5_clk = {
18104433594bSBjorn Andersson 	.halt_reg = 0xbf000,
18114433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
18124433594bSBjorn Andersson 	.clkr = {
18134433594bSBjorn Andersson 		.enable_reg = 0xbf000,
18144433594bSBjorn Andersson 		.enable_mask = BIT(0),
18154433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18164433594bSBjorn Andersson 			.name = "gcc_gp5_clk",
18174433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
18184433594bSBjorn Andersson 				      &gcc_gp5_clk_src.clkr.hw
18194433594bSBjorn Andersson 			},
18204433594bSBjorn Andersson 			.num_parents = 1,
18214433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18224433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18234433594bSBjorn Andersson 		},
18244433594bSBjorn Andersson 	},
18254433594bSBjorn Andersson };
18264433594bSBjorn Andersson 
18274433594bSBjorn Andersson static struct clk_branch gcc_gpu_gpll0_clk_src = {
18284433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
18294433594bSBjorn Andersson 	.clkr = {
18304433594bSBjorn Andersson 		.enable_reg = 0x52004,
18314433594bSBjorn Andersson 		.enable_mask = BIT(15),
18324433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18334433594bSBjorn Andersson 			.name = "gcc_gpu_gpll0_clk_src",
18344433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
18354433594bSBjorn Andersson 			.num_parents = 1,
18364433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18374433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18384433594bSBjorn Andersson 		},
18394433594bSBjorn Andersson 	},
18404433594bSBjorn Andersson };
18414433594bSBjorn Andersson 
18424433594bSBjorn Andersson static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
18434433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
18444433594bSBjorn Andersson 	.clkr = {
18454433594bSBjorn Andersson 		.enable_reg = 0x52004,
18464433594bSBjorn Andersson 		.enable_mask = BIT(16),
18474433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18484433594bSBjorn Andersson 			.name = "gcc_gpu_gpll0_div_clk_src",
18494433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
18504433594bSBjorn Andersson 				      &gpll0_out_even.clkr.hw
18514433594bSBjorn Andersson 			},
18524433594bSBjorn Andersson 			.num_parents = 1,
18534433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
18544433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18554433594bSBjorn Andersson 		},
18564433594bSBjorn Andersson 	},
18574433594bSBjorn Andersson };
18584433594bSBjorn Andersson 
18594433594bSBjorn Andersson static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
18604433594bSBjorn Andersson 	.halt_reg = 0x7100c,
18614433594bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
18624433594bSBjorn Andersson 	.clkr = {
18634433594bSBjorn Andersson 		.enable_reg = 0x7100c,
18644433594bSBjorn Andersson 		.enable_mask = BIT(0),
18654433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18664433594bSBjorn Andersson 			.name = "gcc_gpu_memnoc_gfx_clk",
18674433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18684433594bSBjorn Andersson 		},
18694433594bSBjorn Andersson 	},
18704433594bSBjorn Andersson };
18714433594bSBjorn Andersson 
18724433594bSBjorn Andersson static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
18734433594bSBjorn Andersson 	.halt_reg = 0x71018,
18744433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
18754433594bSBjorn Andersson 	.clkr = {
18764433594bSBjorn Andersson 		.enable_reg = 0x71018,
18774433594bSBjorn Andersson 		.enable_mask = BIT(0),
18784433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18794433594bSBjorn Andersson 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
18804433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18814433594bSBjorn Andersson 		},
18824433594bSBjorn Andersson 	},
18834433594bSBjorn Andersson };
18844433594bSBjorn Andersson 
18854433594bSBjorn Andersson static struct clk_branch gcc_npu_at_clk = {
18864433594bSBjorn Andersson 	.halt_reg = 0x4d010,
18874433594bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
18884433594bSBjorn Andersson 	.clkr = {
18894433594bSBjorn Andersson 		.enable_reg = 0x4d010,
18904433594bSBjorn Andersson 		.enable_mask = BIT(0),
18914433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
18924433594bSBjorn Andersson 			.name = "gcc_npu_at_clk",
18934433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
18944433594bSBjorn Andersson 		},
18954433594bSBjorn Andersson 	},
18964433594bSBjorn Andersson };
18974433594bSBjorn Andersson 
18984433594bSBjorn Andersson static struct clk_branch gcc_npu_axi_clk = {
18994433594bSBjorn Andersson 	.halt_reg = 0x4d008,
19004433594bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
19014433594bSBjorn Andersson 	.clkr = {
19024433594bSBjorn Andersson 		.enable_reg = 0x4d008,
19034433594bSBjorn Andersson 		.enable_mask = BIT(0),
19044433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19054433594bSBjorn Andersson 			.name = "gcc_npu_axi_clk",
19064433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
19074433594bSBjorn Andersson 				      &gcc_npu_axi_clk_src.clkr.hw
19084433594bSBjorn Andersson 			},
19094433594bSBjorn Andersson 			.num_parents = 1,
19104433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19114433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19124433594bSBjorn Andersson 		},
19134433594bSBjorn Andersson 	},
19144433594bSBjorn Andersson };
19154433594bSBjorn Andersson 
19164433594bSBjorn Andersson static struct clk_branch gcc_npu_gpll0_clk_src = {
19174433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
19184433594bSBjorn Andersson 	.clkr = {
19194433594bSBjorn Andersson 		.enable_reg = 0x52004,
19204433594bSBjorn Andersson 		.enable_mask = BIT(18),
19214433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19224433594bSBjorn Andersson 			.name = "gcc_npu_gpll0_clk_src",
19234433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
19244433594bSBjorn Andersson 			.num_parents = 1,
19254433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19264433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19274433594bSBjorn Andersson 		},
19284433594bSBjorn Andersson 	},
19294433594bSBjorn Andersson };
19304433594bSBjorn Andersson 
19314433594bSBjorn Andersson static struct clk_branch gcc_npu_gpll0_div_clk_src = {
19324433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
19334433594bSBjorn Andersson 	.clkr = {
19344433594bSBjorn Andersson 		.enable_reg = 0x52004,
19354433594bSBjorn Andersson 		.enable_mask = BIT(19),
19364433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19374433594bSBjorn Andersson 			.name = "gcc_npu_gpll0_div_clk_src",
19384433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
19394433594bSBjorn Andersson 				      &gpll0_out_even.clkr.hw
19404433594bSBjorn Andersson 			},
19414433594bSBjorn Andersson 			.num_parents = 1,
19424433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19434433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19444433594bSBjorn Andersson 		},
19454433594bSBjorn Andersson 	},
19464433594bSBjorn Andersson };
19474433594bSBjorn Andersson 
19484433594bSBjorn Andersson static struct clk_branch gcc_npu_trig_clk = {
19494433594bSBjorn Andersson 	.halt_reg = 0x4d00c,
19504433594bSBjorn Andersson 	.halt_check = BRANCH_VOTED,
19514433594bSBjorn Andersson 	.clkr = {
19524433594bSBjorn Andersson 		.enable_reg = 0x4d00c,
19534433594bSBjorn Andersson 		.enable_mask = BIT(0),
19544433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19554433594bSBjorn Andersson 			.name = "gcc_npu_trig_clk",
19564433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19574433594bSBjorn Andersson 		},
19584433594bSBjorn Andersson 	},
19594433594bSBjorn Andersson };
19604433594bSBjorn Andersson 
19614433594bSBjorn Andersson static struct clk_branch gcc_pcie0_phy_refgen_clk = {
19624433594bSBjorn Andersson 	.halt_reg = 0x6f02c,
19634433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
19644433594bSBjorn Andersson 	.clkr = {
19654433594bSBjorn Andersson 		.enable_reg = 0x6f02c,
19664433594bSBjorn Andersson 		.enable_mask = BIT(0),
19674433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19684433594bSBjorn Andersson 			.name = "gcc_pcie0_phy_refgen_clk",
19694433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
19704433594bSBjorn Andersson 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
19714433594bSBjorn Andersson 			},
19724433594bSBjorn Andersson 			.num_parents = 1,
19734433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19754433594bSBjorn Andersson 		},
19764433594bSBjorn Andersson 	},
19774433594bSBjorn Andersson };
19784433594bSBjorn Andersson 
19794433594bSBjorn Andersson static struct clk_branch gcc_pcie1_phy_refgen_clk = {
19804433594bSBjorn Andersson 	.halt_reg = 0x6f030,
19814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
19824433594bSBjorn Andersson 	.clkr = {
19834433594bSBjorn Andersson 		.enable_reg = 0x6f030,
19844433594bSBjorn Andersson 		.enable_mask = BIT(0),
19854433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
19864433594bSBjorn Andersson 			.name = "gcc_pcie1_phy_refgen_clk",
19874433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
19884433594bSBjorn Andersson 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
19894433594bSBjorn Andersson 			},
19904433594bSBjorn Andersson 			.num_parents = 1,
19914433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
19924433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
19934433594bSBjorn Andersson 		},
19944433594bSBjorn Andersson 	},
19954433594bSBjorn Andersson };
19964433594bSBjorn Andersson 
19974433594bSBjorn Andersson static struct clk_branch gcc_pcie2_phy_refgen_clk = {
19984433594bSBjorn Andersson 	.halt_reg = 0x6f034,
19994433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
20004433594bSBjorn Andersson 	.clkr = {
20014433594bSBjorn Andersson 		.enable_reg = 0x6f034,
20024433594bSBjorn Andersson 		.enable_mask = BIT(0),
20034433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20044433594bSBjorn Andersson 			.name = "gcc_pcie2_phy_refgen_clk",
20054433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
20064433594bSBjorn Andersson 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
20074433594bSBjorn Andersson 			},
20084433594bSBjorn Andersson 			.num_parents = 1,
20094433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20104433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20114433594bSBjorn Andersson 		},
20124433594bSBjorn Andersson 	},
20134433594bSBjorn Andersson };
20144433594bSBjorn Andersson 
20154433594bSBjorn Andersson static struct clk_branch gcc_pcie3_phy_refgen_clk = {
20164433594bSBjorn Andersson 	.halt_reg = 0x6f038,
20174433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
20184433594bSBjorn Andersson 	.clkr = {
20194433594bSBjorn Andersson 		.enable_reg = 0x6f038,
20204433594bSBjorn Andersson 		.enable_mask = BIT(0),
20214433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20224433594bSBjorn Andersson 			.name = "gcc_pcie3_phy_refgen_clk",
20234433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
20244433594bSBjorn Andersson 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
20254433594bSBjorn Andersson 			},
20264433594bSBjorn Andersson 			.num_parents = 1,
20274433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20294433594bSBjorn Andersson 		},
20304433594bSBjorn Andersson 	},
20314433594bSBjorn Andersson };
20324433594bSBjorn Andersson 
20334433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_aux_clk = {
20344433594bSBjorn Andersson 	.halt_reg = 0x6b020,
20354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
20364433594bSBjorn Andersson 	.clkr = {
20374433594bSBjorn Andersson 		.enable_reg = 0x5200c,
20384433594bSBjorn Andersson 		.enable_mask = BIT(3),
20394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20404433594bSBjorn Andersson 			.name = "gcc_pcie_0_aux_clk",
20414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
20424433594bSBjorn Andersson 				      &gcc_pcie_0_aux_clk_src.clkr.hw
20434433594bSBjorn Andersson 			},
20444433594bSBjorn Andersson 			.num_parents = 1,
20454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
20464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20474433594bSBjorn Andersson 		},
20484433594bSBjorn Andersson 	},
20494433594bSBjorn Andersson };
20504433594bSBjorn Andersson 
20514433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
20524433594bSBjorn Andersson 	.halt_reg = 0x6b01c,
20534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
20544433594bSBjorn Andersson 	.hwcg_reg = 0x6b01c,
20554433594bSBjorn Andersson 	.hwcg_bit = 1,
20564433594bSBjorn Andersson 	.clkr = {
20574433594bSBjorn Andersson 		.enable_reg = 0x5200c,
20584433594bSBjorn Andersson 		.enable_mask = BIT(2),
20594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20604433594bSBjorn Andersson 			.name = "gcc_pcie_0_cfg_ahb_clk",
20614433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20624433594bSBjorn Andersson 		},
20634433594bSBjorn Andersson 	},
20644433594bSBjorn Andersson };
20654433594bSBjorn Andersson 
20664433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_clkref_clk = {
20674433594bSBjorn Andersson 	.halt_reg = 0x8c00c,
20684433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
20694433594bSBjorn Andersson 	.clkr = {
20704433594bSBjorn Andersson 		.enable_reg = 0x8c00c,
20714433594bSBjorn Andersson 		.enable_mask = BIT(0),
20724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20734433594bSBjorn Andersson 			.name = "gcc_pcie_0_clkref_clk",
20744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20754433594bSBjorn Andersson 		},
20764433594bSBjorn Andersson 	},
20774433594bSBjorn Andersson };
20784433594bSBjorn Andersson 
20794433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
20804433594bSBjorn Andersson 	.halt_reg = 0x6b018,
20814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
20824433594bSBjorn Andersson 	.clkr = {
20834433594bSBjorn Andersson 		.enable_reg = 0x5200c,
20844433594bSBjorn Andersson 		.enable_mask = BIT(1),
20854433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20864433594bSBjorn Andersson 			.name = "gcc_pcie_0_mstr_axi_clk",
20874433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
20884433594bSBjorn Andersson 		},
20894433594bSBjorn Andersson 	},
20904433594bSBjorn Andersson };
20914433594bSBjorn Andersson 
20924433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_pipe_clk = {
20934433594bSBjorn Andersson 	.halt_reg = 0x6b024,
20944433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
20954433594bSBjorn Andersson 	.clkr = {
20964433594bSBjorn Andersson 		.enable_reg = 0x5200c,
20974433594bSBjorn Andersson 		.enable_mask = BIT(4),
20984433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
20994433594bSBjorn Andersson 			.name = "gcc_pcie_0_pipe_clk",
21004433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21014433594bSBjorn Andersson 		},
21024433594bSBjorn Andersson 	},
21034433594bSBjorn Andersson };
21044433594bSBjorn Andersson 
21054433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_slv_axi_clk = {
21064433594bSBjorn Andersson 	.halt_reg = 0x6b014,
21074433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
21084433594bSBjorn Andersson 	.hwcg_reg = 0x6b014,
21094433594bSBjorn Andersson 	.hwcg_bit = 1,
21104433594bSBjorn Andersson 	.clkr = {
21114433594bSBjorn Andersson 		.enable_reg = 0x5200c,
21124433594bSBjorn Andersson 		.enable_mask = BIT(0),
21134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21144433594bSBjorn Andersson 			.name = "gcc_pcie_0_slv_axi_clk",
21154433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21164433594bSBjorn Andersson 		},
21174433594bSBjorn Andersson 	},
21184433594bSBjorn Andersson };
21194433594bSBjorn Andersson 
21204433594bSBjorn Andersson static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
21214433594bSBjorn Andersson 	.halt_reg = 0x6b010,
21224433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
21234433594bSBjorn Andersson 	.clkr = {
21244433594bSBjorn Andersson 		.enable_reg = 0x5200c,
21254433594bSBjorn Andersson 		.enable_mask = BIT(5),
21264433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21274433594bSBjorn Andersson 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
21284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21294433594bSBjorn Andersson 		},
21304433594bSBjorn Andersson 	},
21314433594bSBjorn Andersson };
21324433594bSBjorn Andersson 
21334433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_aux_clk = {
21344433594bSBjorn Andersson 	.halt_reg = 0x8d020,
21354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
21364433594bSBjorn Andersson 	.clkr = {
21374433594bSBjorn Andersson 		.enable_reg = 0x52004,
21384433594bSBjorn Andersson 		.enable_mask = BIT(29),
21394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21404433594bSBjorn Andersson 			.name = "gcc_pcie_1_aux_clk",
21414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
21424433594bSBjorn Andersson 				&gcc_pcie_1_aux_clk_src.clkr.hw
21434433594bSBjorn Andersson 			},
21444433594bSBjorn Andersson 			.num_parents = 1,
21454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
21464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21474433594bSBjorn Andersson 		},
21484433594bSBjorn Andersson 	},
21494433594bSBjorn Andersson };
21504433594bSBjorn Andersson 
21514433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
21524433594bSBjorn Andersson 	.halt_reg = 0x8d01c,
21534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
21544433594bSBjorn Andersson 	.hwcg_reg = 0x8d01c,
21554433594bSBjorn Andersson 	.hwcg_bit = 1,
21564433594bSBjorn Andersson 	.clkr = {
21574433594bSBjorn Andersson 		.enable_reg = 0x52004,
21584433594bSBjorn Andersson 		.enable_mask = BIT(28),
21594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21604433594bSBjorn Andersson 			.name = "gcc_pcie_1_cfg_ahb_clk",
21614433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21624433594bSBjorn Andersson 		},
21634433594bSBjorn Andersson 	},
21644433594bSBjorn Andersson };
21654433594bSBjorn Andersson 
21664433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_clkref_clk = {
21674433594bSBjorn Andersson 	.halt_reg = 0x8c02c,
21684433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
21694433594bSBjorn Andersson 	.clkr = {
21704433594bSBjorn Andersson 		.enable_reg = 0x8c02c,
21714433594bSBjorn Andersson 		.enable_mask = BIT(0),
21724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21734433594bSBjorn Andersson 			.name = "gcc_pcie_1_clkref_clk",
21744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21754433594bSBjorn Andersson 		},
21764433594bSBjorn Andersson 	},
21774433594bSBjorn Andersson };
21784433594bSBjorn Andersson 
21794433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
21804433594bSBjorn Andersson 	.halt_reg = 0x8d018,
21814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
21824433594bSBjorn Andersson 	.clkr = {
21834433594bSBjorn Andersson 		.enable_reg = 0x52004,
21844433594bSBjorn Andersson 		.enable_mask = BIT(27),
21854433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21864433594bSBjorn Andersson 			.name = "gcc_pcie_1_mstr_axi_clk",
21874433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
21884433594bSBjorn Andersson 		},
21894433594bSBjorn Andersson 	},
21904433594bSBjorn Andersson };
21914433594bSBjorn Andersson 
21924433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_pipe_clk = {
21934433594bSBjorn Andersson 	.halt_reg = 0x8d024,
21944433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
21954433594bSBjorn Andersson 	.clkr = {
21964433594bSBjorn Andersson 		.enable_reg = 0x52004,
21974433594bSBjorn Andersson 		.enable_mask = BIT(30),
21984433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
21994433594bSBjorn Andersson 			.name = "gcc_pcie_1_pipe_clk",
22004433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22014433594bSBjorn Andersson 		},
22024433594bSBjorn Andersson 	},
22034433594bSBjorn Andersson };
22044433594bSBjorn Andersson 
22054433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_slv_axi_clk = {
22064433594bSBjorn Andersson 	.halt_reg = 0x8d014,
22074433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
22084433594bSBjorn Andersson 	.hwcg_reg = 0x8d014,
22094433594bSBjorn Andersson 	.hwcg_bit = 1,
22104433594bSBjorn Andersson 	.clkr = {
22114433594bSBjorn Andersson 		.enable_reg = 0x52004,
22124433594bSBjorn Andersson 		.enable_mask = BIT(26),
22134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22144433594bSBjorn Andersson 			.name = "gcc_pcie_1_slv_axi_clk",
22154433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22164433594bSBjorn Andersson 		},
22174433594bSBjorn Andersson 	},
22184433594bSBjorn Andersson };
22194433594bSBjorn Andersson 
22204433594bSBjorn Andersson static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
22214433594bSBjorn Andersson 	.halt_reg = 0x8d010,
22224433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
22234433594bSBjorn Andersson 	.clkr = {
22244433594bSBjorn Andersson 		.enable_reg = 0x52004,
22254433594bSBjorn Andersson 		.enable_mask = BIT(25),
22264433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22274433594bSBjorn Andersson 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
22284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22294433594bSBjorn Andersson 		},
22304433594bSBjorn Andersson 	},
22314433594bSBjorn Andersson };
22324433594bSBjorn Andersson 
22334433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_aux_clk = {
22344433594bSBjorn Andersson 	.halt_reg = 0x9d020,
22354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
22364433594bSBjorn Andersson 	.clkr = {
22374433594bSBjorn Andersson 		.enable_reg = 0x52014,
22384433594bSBjorn Andersson 		.enable_mask = BIT(14),
22394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22404433594bSBjorn Andersson 			.name = "gcc_pcie_2_aux_clk",
22414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
22424433594bSBjorn Andersson 				&gcc_pcie_2_aux_clk_src.clkr.hw
22434433594bSBjorn Andersson 			},
22444433594bSBjorn Andersson 			.num_parents = 1,
22454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
22464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22474433594bSBjorn Andersson 		},
22484433594bSBjorn Andersson 	},
22494433594bSBjorn Andersson };
22504433594bSBjorn Andersson 
22514433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
22524433594bSBjorn Andersson 	.halt_reg = 0x9d01c,
22534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
22544433594bSBjorn Andersson 	.hwcg_reg = 0x9d01c,
22554433594bSBjorn Andersson 	.hwcg_bit = 1,
22564433594bSBjorn Andersson 	.clkr = {
22574433594bSBjorn Andersson 		.enable_reg = 0x52014,
22584433594bSBjorn Andersson 		.enable_mask = BIT(13),
22594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22604433594bSBjorn Andersson 			.name = "gcc_pcie_2_cfg_ahb_clk",
22614433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22624433594bSBjorn Andersson 		},
22634433594bSBjorn Andersson 	},
22644433594bSBjorn Andersson };
22654433594bSBjorn Andersson 
22664433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_clkref_clk = {
22674433594bSBjorn Andersson 	.halt_reg = 0x8c014,
22684433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
22694433594bSBjorn Andersson 	.clkr = {
22704433594bSBjorn Andersson 		.enable_reg = 0x8c014,
22714433594bSBjorn Andersson 		.enable_mask = BIT(0),
22724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22734433594bSBjorn Andersson 			.name = "gcc_pcie_2_clkref_clk",
22744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22754433594bSBjorn Andersson 		},
22764433594bSBjorn Andersson 	},
22774433594bSBjorn Andersson };
22784433594bSBjorn Andersson 
22794433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
22804433594bSBjorn Andersson 	.halt_reg = 0x9d018,
22814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
22824433594bSBjorn Andersson 	.clkr = {
22834433594bSBjorn Andersson 		.enable_reg = 0x52014,
22844433594bSBjorn Andersson 		.enable_mask = BIT(12),
22854433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22864433594bSBjorn Andersson 			.name = "gcc_pcie_2_mstr_axi_clk",
22874433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
22884433594bSBjorn Andersson 		},
22894433594bSBjorn Andersson 	},
22904433594bSBjorn Andersson };
22914433594bSBjorn Andersson 
22924433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_pipe_clk = {
22934433594bSBjorn Andersson 	.halt_reg = 0x9d024,
22944433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
22954433594bSBjorn Andersson 	.clkr = {
22964433594bSBjorn Andersson 		.enable_reg = 0x52014,
22974433594bSBjorn Andersson 		.enable_mask = BIT(15),
22984433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
22994433594bSBjorn Andersson 			.name = "gcc_pcie_2_pipe_clk",
23004433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23014433594bSBjorn Andersson 		},
23024433594bSBjorn Andersson 	},
23034433594bSBjorn Andersson };
23044433594bSBjorn Andersson 
23054433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_slv_axi_clk = {
23064433594bSBjorn Andersson 	.halt_reg = 0x9d014,
23074433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
23084433594bSBjorn Andersson 	.hwcg_reg = 0x9d014,
23094433594bSBjorn Andersson 	.hwcg_bit = 1,
23104433594bSBjorn Andersson 	.clkr = {
23114433594bSBjorn Andersson 		.enable_reg = 0x52014,
23124433594bSBjorn Andersson 		.enable_mask = BIT(11),
23134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23144433594bSBjorn Andersson 			.name = "gcc_pcie_2_slv_axi_clk",
23154433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23164433594bSBjorn Andersson 		},
23174433594bSBjorn Andersson 	},
23184433594bSBjorn Andersson };
23194433594bSBjorn Andersson 
23204433594bSBjorn Andersson static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
23214433594bSBjorn Andersson 	.halt_reg = 0x9d010,
23224433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
23234433594bSBjorn Andersson 	.clkr = {
23244433594bSBjorn Andersson 		.enable_reg = 0x52014,
23254433594bSBjorn Andersson 		.enable_mask = BIT(10),
23264433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23274433594bSBjorn Andersson 			.name = "gcc_pcie_2_slv_q2a_axi_clk",
23284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23294433594bSBjorn Andersson 		},
23304433594bSBjorn Andersson 	},
23314433594bSBjorn Andersson };
23324433594bSBjorn Andersson 
23334433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_aux_clk = {
23344433594bSBjorn Andersson 	.halt_reg = 0xa3020,
23354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
23364433594bSBjorn Andersson 	.clkr = {
23374433594bSBjorn Andersson 		.enable_reg = 0x52014,
23384433594bSBjorn Andersson 		.enable_mask = BIT(20),
23394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23404433594bSBjorn Andersson 			.name = "gcc_pcie_3_aux_clk",
23414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
23424433594bSBjorn Andersson 				&gcc_pcie_3_aux_clk_src.clkr.hw
23434433594bSBjorn Andersson 			},
23444433594bSBjorn Andersson 			.num_parents = 1,
23454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
23464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23474433594bSBjorn Andersson 		},
23484433594bSBjorn Andersson 	},
23494433594bSBjorn Andersson };
23504433594bSBjorn Andersson 
23514433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_cfg_ahb_clk = {
23524433594bSBjorn Andersson 	.halt_reg = 0xa301c,
23534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
23544433594bSBjorn Andersson 	.hwcg_reg = 0xa301c,
23554433594bSBjorn Andersson 	.hwcg_bit = 1,
23564433594bSBjorn Andersson 	.clkr = {
23574433594bSBjorn Andersson 		.enable_reg = 0x52014,
23584433594bSBjorn Andersson 		.enable_mask = BIT(19),
23594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23604433594bSBjorn Andersson 			.name = "gcc_pcie_3_cfg_ahb_clk",
23614433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23624433594bSBjorn Andersson 		},
23634433594bSBjorn Andersson 	},
23644433594bSBjorn Andersson };
23654433594bSBjorn Andersson 
23664433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_clkref_clk = {
23674433594bSBjorn Andersson 	.halt_reg = 0x8c018,
23684433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
23694433594bSBjorn Andersson 	.clkr = {
23704433594bSBjorn Andersson 		.enable_reg = 0x8c018,
23714433594bSBjorn Andersson 		.enable_mask = BIT(0),
23724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23734433594bSBjorn Andersson 			.name = "gcc_pcie_3_clkref_clk",
23744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23754433594bSBjorn Andersson 		},
23764433594bSBjorn Andersson 	},
23774433594bSBjorn Andersson };
23784433594bSBjorn Andersson 
23794433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_mstr_axi_clk = {
23804433594bSBjorn Andersson 	.halt_reg = 0xa3018,
23814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
23824433594bSBjorn Andersson 	.clkr = {
23834433594bSBjorn Andersson 		.enable_reg = 0x52014,
23844433594bSBjorn Andersson 		.enable_mask = BIT(18),
23854433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23864433594bSBjorn Andersson 			.name = "gcc_pcie_3_mstr_axi_clk",
23874433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
23884433594bSBjorn Andersson 		},
23894433594bSBjorn Andersson 	},
23904433594bSBjorn Andersson };
23914433594bSBjorn Andersson 
23924433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_pipe_clk = {
23934433594bSBjorn Andersson 	.halt_reg = 0xa3024,
23944433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
23954433594bSBjorn Andersson 	.clkr = {
23964433594bSBjorn Andersson 		.enable_reg = 0x52014,
23974433594bSBjorn Andersson 		.enable_mask = BIT(21),
23984433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
23994433594bSBjorn Andersson 			.name = "gcc_pcie_3_pipe_clk",
24004433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24014433594bSBjorn Andersson 		},
24024433594bSBjorn Andersson 	},
24034433594bSBjorn Andersson };
24044433594bSBjorn Andersson 
24054433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_slv_axi_clk = {
24064433594bSBjorn Andersson 	.halt_reg = 0xa3014,
24074433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
24084433594bSBjorn Andersson 	.hwcg_reg = 0xa3014,
24094433594bSBjorn Andersson 	.hwcg_bit = 1,
24104433594bSBjorn Andersson 	.clkr = {
24114433594bSBjorn Andersson 		.enable_reg = 0x52014,
24124433594bSBjorn Andersson 		.enable_mask = BIT(17),
24134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24144433594bSBjorn Andersson 			.name = "gcc_pcie_3_slv_axi_clk",
24154433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24164433594bSBjorn Andersson 		},
24174433594bSBjorn Andersson 	},
24184433594bSBjorn Andersson };
24194433594bSBjorn Andersson 
24204433594bSBjorn Andersson static struct clk_branch gcc_pcie_3_slv_q2a_axi_clk = {
24214433594bSBjorn Andersson 	.halt_reg = 0xa3010,
24224433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
24234433594bSBjorn Andersson 	.clkr = {
24244433594bSBjorn Andersson 		.enable_reg = 0x52014,
24254433594bSBjorn Andersson 		.enable_mask = BIT(16),
24264433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24274433594bSBjorn Andersson 			.name = "gcc_pcie_3_slv_q2a_axi_clk",
24284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24294433594bSBjorn Andersson 		},
24304433594bSBjorn Andersson 	},
24314433594bSBjorn Andersson };
24324433594bSBjorn Andersson 
24334433594bSBjorn Andersson static struct clk_branch gcc_pcie_phy_aux_clk = {
24344433594bSBjorn Andersson 	.halt_reg = 0x6f004,
24354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
24364433594bSBjorn Andersson 	.clkr = {
24374433594bSBjorn Andersson 		.enable_reg = 0x6f004,
24384433594bSBjorn Andersson 		.enable_mask = BIT(0),
24394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24404433594bSBjorn Andersson 			.name = "gcc_pcie_phy_aux_clk",
24414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
24424433594bSBjorn Andersson 				      &gcc_pcie_0_aux_clk_src.clkr.hw
24434433594bSBjorn Andersson 			},
24444433594bSBjorn Andersson 			.num_parents = 1,
24454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24474433594bSBjorn Andersson 		},
24484433594bSBjorn Andersson 	},
24494433594bSBjorn Andersson };
24504433594bSBjorn Andersson 
24514433594bSBjorn Andersson static struct clk_branch gcc_pdm2_clk = {
24524433594bSBjorn Andersson 	.halt_reg = 0x3300c,
24534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
24544433594bSBjorn Andersson 	.clkr = {
24554433594bSBjorn Andersson 		.enable_reg = 0x3300c,
24564433594bSBjorn Andersson 		.enable_mask = BIT(0),
24574433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24584433594bSBjorn Andersson 			.name = "gcc_pdm2_clk",
24594433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
24604433594bSBjorn Andersson 				      &gcc_pdm2_clk_src.clkr.hw
24614433594bSBjorn Andersson 			},
24624433594bSBjorn Andersson 			.num_parents = 1,
24634433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
24644433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24654433594bSBjorn Andersson 		},
24664433594bSBjorn Andersson 	},
24674433594bSBjorn Andersson };
24684433594bSBjorn Andersson 
24694433594bSBjorn Andersson static struct clk_branch gcc_pdm_ahb_clk = {
24704433594bSBjorn Andersson 	.halt_reg = 0x33004,
24714433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
24724433594bSBjorn Andersson 	.hwcg_reg = 0x33004,
24734433594bSBjorn Andersson 	.hwcg_bit = 1,
24744433594bSBjorn Andersson 	.clkr = {
24754433594bSBjorn Andersson 		.enable_reg = 0x33004,
24764433594bSBjorn Andersson 		.enable_mask = BIT(0),
24774433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24784433594bSBjorn Andersson 			.name = "gcc_pdm_ahb_clk",
24794433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24804433594bSBjorn Andersson 		},
24814433594bSBjorn Andersson 	},
24824433594bSBjorn Andersson };
24834433594bSBjorn Andersson 
24844433594bSBjorn Andersson static struct clk_branch gcc_pdm_xo4_clk = {
24854433594bSBjorn Andersson 	.halt_reg = 0x33008,
24864433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
24874433594bSBjorn Andersson 	.clkr = {
24884433594bSBjorn Andersson 		.enable_reg = 0x33008,
24894433594bSBjorn Andersson 		.enable_mask = BIT(0),
24904433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
24914433594bSBjorn Andersson 			.name = "gcc_pdm_xo4_clk",
24924433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
24934433594bSBjorn Andersson 		},
24944433594bSBjorn Andersson 	},
24954433594bSBjorn Andersson };
24964433594bSBjorn Andersson 
24974433594bSBjorn Andersson static struct clk_branch gcc_prng_ahb_clk = {
24984433594bSBjorn Andersson 	.halt_reg = 0x34004,
24994433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
25004433594bSBjorn Andersson 	.clkr = {
25014433594bSBjorn Andersson 		.enable_reg = 0x52004,
25024433594bSBjorn Andersson 		.enable_mask = BIT(13),
25034433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25044433594bSBjorn Andersson 			.name = "gcc_prng_ahb_clk",
25054433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25064433594bSBjorn Andersson 		},
25074433594bSBjorn Andersson 	},
25084433594bSBjorn Andersson };
25094433594bSBjorn Andersson 
25104433594bSBjorn Andersson static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
25114433594bSBjorn Andersson 	.halt_reg = 0xb018,
25124433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25134433594bSBjorn Andersson 	.hwcg_reg = 0xb018,
25144433594bSBjorn Andersson 	.hwcg_bit = 1,
25154433594bSBjorn Andersson 	.clkr = {
25164433594bSBjorn Andersson 		.enable_reg = 0xb018,
25174433594bSBjorn Andersson 		.enable_mask = BIT(0),
25184433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25194433594bSBjorn Andersson 			.name = "gcc_qmip_camera_nrt_ahb_clk",
25204433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25214433594bSBjorn Andersson 		},
25224433594bSBjorn Andersson 	},
25234433594bSBjorn Andersson };
25244433594bSBjorn Andersson 
25254433594bSBjorn Andersson static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
25264433594bSBjorn Andersson 	.halt_reg = 0xb01c,
25274433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25284433594bSBjorn Andersson 	.hwcg_reg = 0xb01c,
25294433594bSBjorn Andersson 	.hwcg_bit = 1,
25304433594bSBjorn Andersson 	.clkr = {
25314433594bSBjorn Andersson 		.enable_reg = 0xb01c,
25324433594bSBjorn Andersson 		.enable_mask = BIT(0),
25334433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25344433594bSBjorn Andersson 			.name = "gcc_qmip_camera_rt_ahb_clk",
25354433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25364433594bSBjorn Andersson 		},
25374433594bSBjorn Andersson 	},
25384433594bSBjorn Andersson };
25394433594bSBjorn Andersson 
25404433594bSBjorn Andersson static struct clk_branch gcc_qmip_disp_ahb_clk = {
25414433594bSBjorn Andersson 	.halt_reg = 0xb020,
25424433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25434433594bSBjorn Andersson 	.hwcg_reg = 0xb020,
25444433594bSBjorn Andersson 	.hwcg_bit = 1,
25454433594bSBjorn Andersson 	.clkr = {
25464433594bSBjorn Andersson 		.enable_reg = 0xb020,
25474433594bSBjorn Andersson 		.enable_mask = BIT(0),
25484433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25494433594bSBjorn Andersson 			.name = "gcc_qmip_disp_ahb_clk",
25504433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25514433594bSBjorn Andersson 		},
25524433594bSBjorn Andersson 	},
25534433594bSBjorn Andersson };
25544433594bSBjorn Andersson 
25554433594bSBjorn Andersson static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
25564433594bSBjorn Andersson 	.halt_reg = 0xb010,
25574433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25584433594bSBjorn Andersson 	.hwcg_reg = 0xb010,
25594433594bSBjorn Andersson 	.hwcg_bit = 1,
25604433594bSBjorn Andersson 	.clkr = {
25614433594bSBjorn Andersson 		.enable_reg = 0xb010,
25624433594bSBjorn Andersson 		.enable_mask = BIT(0),
25634433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25644433594bSBjorn Andersson 			.name = "gcc_qmip_video_cvp_ahb_clk",
25654433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25664433594bSBjorn Andersson 		},
25674433594bSBjorn Andersson 	},
25684433594bSBjorn Andersson };
25694433594bSBjorn Andersson 
25704433594bSBjorn Andersson static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
25714433594bSBjorn Andersson 	.halt_reg = 0xb014,
25724433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25734433594bSBjorn Andersson 	.hwcg_reg = 0xb014,
25744433594bSBjorn Andersson 	.hwcg_bit = 1,
25754433594bSBjorn Andersson 	.clkr = {
25764433594bSBjorn Andersson 		.enable_reg = 0xb014,
25774433594bSBjorn Andersson 		.enable_mask = BIT(0),
25784433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25794433594bSBjorn Andersson 			.name = "gcc_qmip_video_vcodec_ahb_clk",
25804433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25814433594bSBjorn Andersson 		},
25824433594bSBjorn Andersson 	},
25834433594bSBjorn Andersson };
25844433594bSBjorn Andersson 
25854433594bSBjorn Andersson static struct clk_branch gcc_qspi_1_cnoc_periph_ahb_clk = {
25864433594bSBjorn Andersson 	.halt_reg = 0x4a004,
25874433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
25884433594bSBjorn Andersson 	.clkr = {
25894433594bSBjorn Andersson 		.enable_reg = 0x4a004,
25904433594bSBjorn Andersson 		.enable_mask = BIT(0),
25914433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
25924433594bSBjorn Andersson 			.name = "gcc_qspi_1_cnoc_periph_ahb_clk",
25934433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
25944433594bSBjorn Andersson 		},
25954433594bSBjorn Andersson 	},
25964433594bSBjorn Andersson };
25974433594bSBjorn Andersson 
25984433594bSBjorn Andersson static struct clk_branch gcc_qspi_1_core_clk = {
25994433594bSBjorn Andersson 	.halt_reg = 0x4a008,
26004433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
26014433594bSBjorn Andersson 	.clkr = {
26024433594bSBjorn Andersson 		.enable_reg = 0x4a008,
26034433594bSBjorn Andersson 		.enable_mask = BIT(0),
26044433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26054433594bSBjorn Andersson 			.name = "gcc_qspi_1_core_clk",
26064433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
26074433594bSBjorn Andersson 				      &gcc_qspi_1_core_clk_src.clkr.hw
26084433594bSBjorn Andersson 			},
26094433594bSBjorn Andersson 			.num_parents = 1,
26104433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26114433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26124433594bSBjorn Andersson 		},
26134433594bSBjorn Andersson 	},
26144433594bSBjorn Andersson };
26154433594bSBjorn Andersson 
26164433594bSBjorn Andersson static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {
26174433594bSBjorn Andersson 	.halt_reg = 0x4b000,
26184433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
26194433594bSBjorn Andersson 	.clkr = {
26204433594bSBjorn Andersson 		.enable_reg = 0x4b000,
26214433594bSBjorn Andersson 		.enable_mask = BIT(0),
26224433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26234433594bSBjorn Andersson 			.name = "gcc_qspi_cnoc_periph_ahb_clk",
26244433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26254433594bSBjorn Andersson 		},
26264433594bSBjorn Andersson 	},
26274433594bSBjorn Andersson };
26284433594bSBjorn Andersson 
26294433594bSBjorn Andersson static struct clk_branch gcc_qspi_core_clk = {
26304433594bSBjorn Andersson 	.halt_reg = 0x4b004,
26314433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
26324433594bSBjorn Andersson 	.clkr = {
26334433594bSBjorn Andersson 		.enable_reg = 0x4b004,
26344433594bSBjorn Andersson 		.enable_mask = BIT(0),
26354433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26364433594bSBjorn Andersson 			.name = "gcc_qspi_core_clk",
26374433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
26384433594bSBjorn Andersson 				      &gcc_qspi_core_clk_src.clkr.hw
26394433594bSBjorn Andersson 			},
26404433594bSBjorn Andersson 			.num_parents = 1,
26414433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26424433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26434433594bSBjorn Andersson 		},
26444433594bSBjorn Andersson 	},
26454433594bSBjorn Andersson };
26464433594bSBjorn Andersson 
26474433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
26484433594bSBjorn Andersson 	.halt_reg = 0x17144,
26494433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
26504433594bSBjorn Andersson 	.clkr = {
26514433594bSBjorn Andersson 		.enable_reg = 0x5200c,
26524433594bSBjorn Andersson 		.enable_mask = BIT(10),
26534433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26544433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s0_clk",
26554433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
26564433594bSBjorn Andersson 				      &gcc_qupv3_wrap0_s0_clk_src.clkr.hw
26574433594bSBjorn Andersson 			},
26584433594bSBjorn Andersson 			.num_parents = 1,
26594433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26604433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26614433594bSBjorn Andersson 		},
26624433594bSBjorn Andersson 	},
26634433594bSBjorn Andersson };
26644433594bSBjorn Andersson 
26654433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
26664433594bSBjorn Andersson 	.halt_reg = 0x17274,
26674433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
26684433594bSBjorn Andersson 	.clkr = {
26694433594bSBjorn Andersson 		.enable_reg = 0x5200c,
26704433594bSBjorn Andersson 		.enable_mask = BIT(11),
26714433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26724433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s1_clk",
26734433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
26744433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw
26754433594bSBjorn Andersson 			},
26764433594bSBjorn Andersson 			.num_parents = 1,
26774433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26784433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26794433594bSBjorn Andersson 		},
26804433594bSBjorn Andersson 	},
26814433594bSBjorn Andersson };
26824433594bSBjorn Andersson 
26834433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
26844433594bSBjorn Andersson 	.halt_reg = 0x173a4,
26854433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
26864433594bSBjorn Andersson 	.clkr = {
26874433594bSBjorn Andersson 		.enable_reg = 0x5200c,
26884433594bSBjorn Andersson 		.enable_mask = BIT(12),
26894433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
26904433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s2_clk",
26914433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
26924433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw
26934433594bSBjorn Andersson 			},
26944433594bSBjorn Andersson 			.num_parents = 1,
26954433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
26964433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
26974433594bSBjorn Andersson 		},
26984433594bSBjorn Andersson 	},
26994433594bSBjorn Andersson };
27004433594bSBjorn Andersson 
27014433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
27024433594bSBjorn Andersson 	.halt_reg = 0x174d4,
27034433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27044433594bSBjorn Andersson 	.clkr = {
27054433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27064433594bSBjorn Andersson 		.enable_mask = BIT(13),
27074433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27084433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s3_clk",
27094433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
27104433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw
27114433594bSBjorn Andersson 			},
27124433594bSBjorn Andersson 			.num_parents = 1,
27134433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27144433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
27154433594bSBjorn Andersson 		},
27164433594bSBjorn Andersson 	},
27174433594bSBjorn Andersson };
27184433594bSBjorn Andersson 
27194433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
27204433594bSBjorn Andersson 	.halt_reg = 0x17604,
27214433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27224433594bSBjorn Andersson 	.clkr = {
27234433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27244433594bSBjorn Andersson 		.enable_mask = BIT(14),
27254433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27264433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s4_clk",
27274433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
27284433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw
27294433594bSBjorn Andersson 			},
27304433594bSBjorn Andersson 			.num_parents = 1,
27314433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27324433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
27334433594bSBjorn Andersson 		},
27344433594bSBjorn Andersson 	},
27354433594bSBjorn Andersson };
27364433594bSBjorn Andersson 
27374433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
27384433594bSBjorn Andersson 	.halt_reg = 0x17734,
27394433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27404433594bSBjorn Andersson 	.clkr = {
27414433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27424433594bSBjorn Andersson 		.enable_mask = BIT(15),
27434433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27444433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s5_clk",
27454433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
27464433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw
27474433594bSBjorn Andersson 			},
27484433594bSBjorn Andersson 			.num_parents = 1,
27494433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27504433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
27514433594bSBjorn Andersson 		},
27524433594bSBjorn Andersson 	},
27534433594bSBjorn Andersson };
27544433594bSBjorn Andersson 
27554433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
27564433594bSBjorn Andersson 	.halt_reg = 0x17864,
27574433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27584433594bSBjorn Andersson 	.clkr = {
27594433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27604433594bSBjorn Andersson 		.enable_mask = BIT(16),
27614433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27624433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s6_clk",
27634433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
27644433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw
27654433594bSBjorn Andersson 			},
27664433594bSBjorn Andersson 			.num_parents = 1,
27674433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27684433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
27694433594bSBjorn Andersson 		},
27704433594bSBjorn Andersson 	},
27714433594bSBjorn Andersson };
27724433594bSBjorn Andersson 
27734433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
27744433594bSBjorn Andersson 	.halt_reg = 0x17994,
27754433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27764433594bSBjorn Andersson 	.clkr = {
27774433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27784433594bSBjorn Andersson 		.enable_mask = BIT(17),
27794433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27804433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap0_s7_clk",
27814433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
27824433594bSBjorn Andersson 				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw
27834433594bSBjorn Andersson 			},
27844433594bSBjorn Andersson 			.num_parents = 1,
27854433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
27864433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
27874433594bSBjorn Andersson 		},
27884433594bSBjorn Andersson 	},
27894433594bSBjorn Andersson };
27904433594bSBjorn Andersson 
27914433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
27924433594bSBjorn Andersson 	.halt_reg = 0x18144,
27934433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
27944433594bSBjorn Andersson 	.clkr = {
27954433594bSBjorn Andersson 		.enable_reg = 0x5200c,
27964433594bSBjorn Andersson 		.enable_mask = BIT(22),
27974433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
27984433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s0_clk",
27994433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28004433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw
28014433594bSBjorn Andersson 			},
28024433594bSBjorn Andersson 			.num_parents = 1,
28034433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28044433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28054433594bSBjorn Andersson 		},
28064433594bSBjorn Andersson 	},
28074433594bSBjorn Andersson };
28084433594bSBjorn Andersson 
28094433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
28104433594bSBjorn Andersson 	.halt_reg = 0x18274,
28114433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
28124433594bSBjorn Andersson 	.clkr = {
28134433594bSBjorn Andersson 		.enable_reg = 0x5200c,
28144433594bSBjorn Andersson 		.enable_mask = BIT(23),
28154433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
28164433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s1_clk",
28174433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28184433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw
28194433594bSBjorn Andersson 			},
28204433594bSBjorn Andersson 			.num_parents = 1,
28214433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28224433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28234433594bSBjorn Andersson 		},
28244433594bSBjorn Andersson 	},
28254433594bSBjorn Andersson };
28264433594bSBjorn Andersson 
28274433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
28284433594bSBjorn Andersson 	.halt_reg = 0x183a4,
28294433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
28304433594bSBjorn Andersson 	.clkr = {
28314433594bSBjorn Andersson 		.enable_reg = 0x5200c,
28324433594bSBjorn Andersson 		.enable_mask = BIT(24),
28334433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
28344433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s2_clk",
28354433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28364433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw
28374433594bSBjorn Andersson 			},
28384433594bSBjorn Andersson 			.num_parents = 1,
28394433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28404433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28414433594bSBjorn Andersson 		},
28424433594bSBjorn Andersson 	},
28434433594bSBjorn Andersson };
28444433594bSBjorn Andersson 
28454433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
28464433594bSBjorn Andersson 	.halt_reg = 0x184d4,
28474433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
28484433594bSBjorn Andersson 	.clkr = {
28494433594bSBjorn Andersson 		.enable_reg = 0x5200c,
28504433594bSBjorn Andersson 		.enable_mask = BIT(25),
28514433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
28524433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s3_clk",
28534433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28544433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw
28554433594bSBjorn Andersson 			},
28564433594bSBjorn Andersson 			.num_parents = 1,
28574433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28584433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28594433594bSBjorn Andersson 		},
28604433594bSBjorn Andersson 	},
28614433594bSBjorn Andersson };
28624433594bSBjorn Andersson 
28634433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
28644433594bSBjorn Andersson 	.halt_reg = 0x18604,
28654433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
28664433594bSBjorn Andersson 	.clkr = {
28674433594bSBjorn Andersson 		.enable_reg = 0x5200c,
28684433594bSBjorn Andersson 		.enable_mask = BIT(26),
28694433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
28704433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s4_clk",
28714433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28724433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw
28734433594bSBjorn Andersson 			},
28744433594bSBjorn Andersson 			.num_parents = 1,
28754433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28764433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28774433594bSBjorn Andersson 		},
28784433594bSBjorn Andersson 	},
28794433594bSBjorn Andersson };
28804433594bSBjorn Andersson 
28814433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
28824433594bSBjorn Andersson 	.halt_reg = 0x18734,
28834433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
28844433594bSBjorn Andersson 	.clkr = {
28854433594bSBjorn Andersson 		.enable_reg = 0x5200c,
28864433594bSBjorn Andersson 		.enable_mask = BIT(27),
28874433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
28884433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap1_s5_clk",
28894433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
28904433594bSBjorn Andersson 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw
28914433594bSBjorn Andersson 			},
28924433594bSBjorn Andersson 			.num_parents = 1,
28934433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
28944433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
28954433594bSBjorn Andersson 		},
28964433594bSBjorn Andersson 	},
28974433594bSBjorn Andersson };
28984433594bSBjorn Andersson 
28994433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
29004433594bSBjorn Andersson 	.halt_reg = 0x1e144,
29014433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29024433594bSBjorn Andersson 	.clkr = {
29034433594bSBjorn Andersson 		.enable_reg = 0x52014,
29044433594bSBjorn Andersson 		.enable_mask = BIT(4),
29054433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29064433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s0_clk",
29074433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29084433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw
29094433594bSBjorn Andersson 			},
29104433594bSBjorn Andersson 			.num_parents = 1,
29114433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
29124433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
29134433594bSBjorn Andersson 		},
29144433594bSBjorn Andersson 	},
29154433594bSBjorn Andersson };
29164433594bSBjorn Andersson 
29174433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
29184433594bSBjorn Andersson 	.halt_reg = 0x1e274,
29194433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29204433594bSBjorn Andersson 	.clkr = {
29214433594bSBjorn Andersson 		.enable_reg = 0x52014,
29224433594bSBjorn Andersson 		.enable_mask = BIT(5),
29234433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29244433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s1_clk",
29254433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29264433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw
29274433594bSBjorn Andersson 			},
29284433594bSBjorn Andersson 			.num_parents = 1,
29294433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
29304433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
29314433594bSBjorn Andersson 		},
29324433594bSBjorn Andersson 	},
29334433594bSBjorn Andersson };
29344433594bSBjorn Andersson 
29354433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
29364433594bSBjorn Andersson 	.halt_reg = 0x1e3a4,
29374433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29384433594bSBjorn Andersson 	.clkr = {
29394433594bSBjorn Andersson 		.enable_reg = 0x52014,
29404433594bSBjorn Andersson 		.enable_mask = BIT(6),
29414433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29424433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s2_clk",
29434433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29444433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw
29454433594bSBjorn Andersson 			},
29464433594bSBjorn Andersson 			.num_parents = 1,
29474433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
29484433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
29494433594bSBjorn Andersson 		},
29504433594bSBjorn Andersson 	},
29514433594bSBjorn Andersson };
29524433594bSBjorn Andersson 
29534433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
29544433594bSBjorn Andersson 	.halt_reg = 0x1e4d4,
29554433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29564433594bSBjorn Andersson 	.clkr = {
29574433594bSBjorn Andersson 		.enable_reg = 0x52014,
29584433594bSBjorn Andersson 		.enable_mask = BIT(7),
29594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29604433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s3_clk",
29614433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29624433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw
29634433594bSBjorn Andersson 			},
29644433594bSBjorn Andersson 			.num_parents = 1,
29654433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
29664433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
29674433594bSBjorn Andersson 		},
29684433594bSBjorn Andersson 	},
29694433594bSBjorn Andersson };
29704433594bSBjorn Andersson 
29714433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
29724433594bSBjorn Andersson 	.halt_reg = 0x1e604,
29734433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29744433594bSBjorn Andersson 	.clkr = {
29754433594bSBjorn Andersson 		.enable_reg = 0x52014,
29764433594bSBjorn Andersson 		.enable_mask = BIT(8),
29774433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29784433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s4_clk",
29794433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29804433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw
29814433594bSBjorn Andersson 			},
29824433594bSBjorn Andersson 			.num_parents = 1,
29834433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
29844433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
29854433594bSBjorn Andersson 		},
29864433594bSBjorn Andersson 	},
29874433594bSBjorn Andersson };
29884433594bSBjorn Andersson 
29894433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
29904433594bSBjorn Andersson 	.halt_reg = 0x1e734,
29914433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
29924433594bSBjorn Andersson 	.clkr = {
29934433594bSBjorn Andersson 		.enable_reg = 0x52014,
29944433594bSBjorn Andersson 		.enable_mask = BIT(9),
29954433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
29964433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap2_s5_clk",
29974433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
29984433594bSBjorn Andersson 				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw
29994433594bSBjorn Andersson 			},
30004433594bSBjorn Andersson 			.num_parents = 1,
30014433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
30024433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30034433594bSBjorn Andersson 		},
30044433594bSBjorn Andersson 	},
30054433594bSBjorn Andersson };
30064433594bSBjorn Andersson 
30074433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
30084433594bSBjorn Andersson 	.halt_reg = 0x17004,
30094433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30104433594bSBjorn Andersson 	.clkr = {
30114433594bSBjorn Andersson 		.enable_reg = 0x5200c,
30124433594bSBjorn Andersson 		.enable_mask = BIT(6),
30134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30144433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
30154433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30164433594bSBjorn Andersson 		},
30174433594bSBjorn Andersson 	},
30184433594bSBjorn Andersson };
30194433594bSBjorn Andersson 
30204433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
30214433594bSBjorn Andersson 	.halt_reg = 0x17008,
30224433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30234433594bSBjorn Andersson 	.hwcg_reg = 0x17008,
30244433594bSBjorn Andersson 	.hwcg_bit = 1,
30254433594bSBjorn Andersson 	.clkr = {
30264433594bSBjorn Andersson 		.enable_reg = 0x5200c,
30274433594bSBjorn Andersson 		.enable_mask = BIT(7),
30284433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30294433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
30304433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30314433594bSBjorn Andersson 		},
30324433594bSBjorn Andersson 	},
30334433594bSBjorn Andersson };
30344433594bSBjorn Andersson 
30354433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
30364433594bSBjorn Andersson 	.halt_reg = 0x18004,
30374433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30384433594bSBjorn Andersson 	.clkr = {
30394433594bSBjorn Andersson 		.enable_reg = 0x5200c,
30404433594bSBjorn Andersson 		.enable_mask = BIT(20),
30414433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30424433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
30434433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30444433594bSBjorn Andersson 		},
30454433594bSBjorn Andersson 	},
30464433594bSBjorn Andersson };
30474433594bSBjorn Andersson 
30484433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
30494433594bSBjorn Andersson 	.halt_reg = 0x18008,
30504433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30514433594bSBjorn Andersson 	.hwcg_reg = 0x18008,
30524433594bSBjorn Andersson 	.hwcg_bit = 1,
30534433594bSBjorn Andersson 	.clkr = {
30544433594bSBjorn Andersson 		.enable_reg = 0x5200c,
30554433594bSBjorn Andersson 		.enable_mask = BIT(21),
30564433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30574433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
30584433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30594433594bSBjorn Andersson 		},
30604433594bSBjorn Andersson 	},
30614433594bSBjorn Andersson };
30624433594bSBjorn Andersson 
30634433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
30644433594bSBjorn Andersson 	.halt_reg = 0x1e004,
30654433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30664433594bSBjorn Andersson 	.clkr = {
30674433594bSBjorn Andersson 		.enable_reg = 0x52014,
30684433594bSBjorn Andersson 		.enable_mask = BIT(2),
30694433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30704433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
30714433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30724433594bSBjorn Andersson 		},
30734433594bSBjorn Andersson 	},
30744433594bSBjorn Andersson };
30754433594bSBjorn Andersson 
30764433594bSBjorn Andersson static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
30774433594bSBjorn Andersson 	.halt_reg = 0x1e008,
30784433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
30794433594bSBjorn Andersson 	.hwcg_reg = 0x1e008,
30804433594bSBjorn Andersson 	.hwcg_bit = 1,
30814433594bSBjorn Andersson 	.clkr = {
30824433594bSBjorn Andersson 		.enable_reg = 0x52014,
30834433594bSBjorn Andersson 		.enable_mask = BIT(1),
30844433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30854433594bSBjorn Andersson 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
30864433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
30874433594bSBjorn Andersson 		},
30884433594bSBjorn Andersson 	},
30894433594bSBjorn Andersson };
30904433594bSBjorn Andersson 
30914433594bSBjorn Andersson static struct clk_branch gcc_sdcc2_ahb_clk = {
30924433594bSBjorn Andersson 	.halt_reg = 0x14008,
30934433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
30944433594bSBjorn Andersson 	.clkr = {
30954433594bSBjorn Andersson 		.enable_reg = 0x14008,
30964433594bSBjorn Andersson 		.enable_mask = BIT(0),
30974433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
30984433594bSBjorn Andersson 			.name = "gcc_sdcc2_ahb_clk",
30994433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31004433594bSBjorn Andersson 		},
31014433594bSBjorn Andersson 	},
31024433594bSBjorn Andersson };
31034433594bSBjorn Andersson 
31044433594bSBjorn Andersson static struct clk_branch gcc_sdcc2_apps_clk = {
31054433594bSBjorn Andersson 	.halt_reg = 0x14004,
31064433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
31074433594bSBjorn Andersson 	.clkr = {
31084433594bSBjorn Andersson 		.enable_reg = 0x14004,
31094433594bSBjorn Andersson 		.enable_mask = BIT(0),
31104433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31114433594bSBjorn Andersson 			.name = "gcc_sdcc2_apps_clk",
31124433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
31134433594bSBjorn Andersson 				&gcc_sdcc2_apps_clk_src.clkr.hw
31144433594bSBjorn Andersson 			},
31154433594bSBjorn Andersson 			.num_parents = 1,
31164433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
31174433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31184433594bSBjorn Andersson 		},
31194433594bSBjorn Andersson 	},
31204433594bSBjorn Andersson };
31214433594bSBjorn Andersson 
31224433594bSBjorn Andersson static struct clk_branch gcc_sdcc4_ahb_clk = {
31234433594bSBjorn Andersson 	.halt_reg = 0x16008,
31244433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
31254433594bSBjorn Andersson 	.clkr = {
31264433594bSBjorn Andersson 		.enable_reg = 0x16008,
31274433594bSBjorn Andersson 		.enable_mask = BIT(0),
31284433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31294433594bSBjorn Andersson 			.name = "gcc_sdcc4_ahb_clk",
31304433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31314433594bSBjorn Andersson 		},
31324433594bSBjorn Andersson 	},
31334433594bSBjorn Andersson };
31344433594bSBjorn Andersson 
31354433594bSBjorn Andersson static struct clk_branch gcc_sdcc4_apps_clk = {
31364433594bSBjorn Andersson 	.halt_reg = 0x16004,
31374433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
31384433594bSBjorn Andersson 	.clkr = {
31394433594bSBjorn Andersson 		.enable_reg = 0x16004,
31404433594bSBjorn Andersson 		.enable_mask = BIT(0),
31414433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31424433594bSBjorn Andersson 			.name = "gcc_sdcc4_apps_clk",
31434433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
31444433594bSBjorn Andersson 				&gcc_sdcc4_apps_clk_src.clkr.hw
31454433594bSBjorn Andersson 			},
31464433594bSBjorn Andersson 			.num_parents = 1,
31474433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
31484433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31494433594bSBjorn Andersson 		},
31504433594bSBjorn Andersson 	},
31514433594bSBjorn Andersson };
31524433594bSBjorn Andersson 
31534433594bSBjorn Andersson /* For CPUSS functionality the SYS NOC clock needs to be left enabled */
31544433594bSBjorn Andersson static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
31554433594bSBjorn Andersson 	.halt_reg = 0x4819c,
31564433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_VOTED,
31574433594bSBjorn Andersson 	.clkr = {
31584433594bSBjorn Andersson 		.enable_reg = 0x52004,
31594433594bSBjorn Andersson 		.enable_mask = BIT(0),
31604433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31614433594bSBjorn Andersson 			.name = "gcc_sys_noc_cpuss_ahb_clk",
31624433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
31634433594bSBjorn Andersson 				      &gcc_cpuss_ahb_clk_src.clkr.hw
31644433594bSBjorn Andersson 			},
31654433594bSBjorn Andersson 			.num_parents = 1,
31664433594bSBjorn Andersson 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
31674433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31684433594bSBjorn Andersson 		},
31694433594bSBjorn Andersson 	},
31704433594bSBjorn Andersson };
31714433594bSBjorn Andersson 
31724433594bSBjorn Andersson static struct clk_branch gcc_tsif_ahb_clk = {
31734433594bSBjorn Andersson 	.halt_reg = 0x36004,
31744433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
31754433594bSBjorn Andersson 	.clkr = {
31764433594bSBjorn Andersson 		.enable_reg = 0x36004,
31774433594bSBjorn Andersson 		.enable_mask = BIT(0),
31784433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31794433594bSBjorn Andersson 			.name = "gcc_tsif_ahb_clk",
31804433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31814433594bSBjorn Andersson 		},
31824433594bSBjorn Andersson 	},
31834433594bSBjorn Andersson };
31844433594bSBjorn Andersson 
31854433594bSBjorn Andersson static struct clk_branch gcc_tsif_inactivity_timers_clk = {
31864433594bSBjorn Andersson 	.halt_reg = 0x3600c,
31874433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
31884433594bSBjorn Andersson 	.clkr = {
31894433594bSBjorn Andersson 		.enable_reg = 0x3600c,
31904433594bSBjorn Andersson 		.enable_mask = BIT(0),
31914433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
31924433594bSBjorn Andersson 			.name = "gcc_tsif_inactivity_timers_clk",
31934433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
31944433594bSBjorn Andersson 		},
31954433594bSBjorn Andersson 	},
31964433594bSBjorn Andersson };
31974433594bSBjorn Andersson 
31984433594bSBjorn Andersson static struct clk_branch gcc_tsif_ref_clk = {
31994433594bSBjorn Andersson 	.halt_reg = 0x36008,
32004433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32014433594bSBjorn Andersson 	.clkr = {
32024433594bSBjorn Andersson 		.enable_reg = 0x36008,
32034433594bSBjorn Andersson 		.enable_mask = BIT(0),
32044433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32054433594bSBjorn Andersson 			.name = "gcc_tsif_ref_clk",
32064433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
32074433594bSBjorn Andersson 				&gcc_tsif_ref_clk_src.clkr.hw
32084433594bSBjorn Andersson 			},
32094433594bSBjorn Andersson 			.num_parents = 1,
32104433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
32114433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
32124433594bSBjorn Andersson 		},
32134433594bSBjorn Andersson 	},
32144433594bSBjorn Andersson };
32154433594bSBjorn Andersson 
32164433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_ahb_clk = {
32174433594bSBjorn Andersson 	.halt_reg = 0xa2014,
32184433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32194433594bSBjorn Andersson 	.hwcg_reg = 0xa2014,
32204433594bSBjorn Andersson 	.hwcg_bit = 1,
32214433594bSBjorn Andersson 	.clkr = {
32224433594bSBjorn Andersson 		.enable_reg = 0xa2014,
32234433594bSBjorn Andersson 		.enable_mask = BIT(0),
32244433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32254433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_ahb_clk",
32264433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
32274433594bSBjorn Andersson 		},
32284433594bSBjorn Andersson 	},
32294433594bSBjorn Andersson };
32304433594bSBjorn Andersson 
32314433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_axi_clk = {
32324433594bSBjorn Andersson 	.halt_reg = 0xa2010,
32334433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32344433594bSBjorn Andersson 	.hwcg_reg = 0xa2010,
32354433594bSBjorn Andersson 	.hwcg_bit = 1,
32364433594bSBjorn Andersson 	.clkr = {
32374433594bSBjorn Andersson 		.enable_reg = 0xa2010,
32384433594bSBjorn Andersson 		.enable_mask = BIT(0),
32394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32404433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_axi_clk",
32414433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
32424433594bSBjorn Andersson 				&gcc_ufs_card_2_axi_clk_src.clkr.hw
32434433594bSBjorn Andersson 			},
32444433594bSBjorn Andersson 			.num_parents = 1,
32454433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
32464433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
32474433594bSBjorn Andersson 		},
32484433594bSBjorn Andersson 	},
32494433594bSBjorn Andersson };
32504433594bSBjorn Andersson 
32514433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_ice_core_clk = {
32524433594bSBjorn Andersson 	.halt_reg = 0xa205c,
32534433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32544433594bSBjorn Andersson 	.hwcg_reg = 0xa205c,
32554433594bSBjorn Andersson 	.hwcg_bit = 1,
32564433594bSBjorn Andersson 	.clkr = {
32574433594bSBjorn Andersson 		.enable_reg = 0xa205c,
32584433594bSBjorn Andersson 		.enable_mask = BIT(0),
32594433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32604433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_ice_core_clk",
32614433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
32624433594bSBjorn Andersson 				&gcc_ufs_card_2_ice_core_clk_src.clkr.hw
32634433594bSBjorn Andersson 			},
32644433594bSBjorn Andersson 			.num_parents = 1,
32654433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
32664433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
32674433594bSBjorn Andersson 		},
32684433594bSBjorn Andersson 	},
32694433594bSBjorn Andersson };
32704433594bSBjorn Andersson 
32714433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_phy_aux_clk = {
32724433594bSBjorn Andersson 	.halt_reg = 0xa2090,
32734433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32744433594bSBjorn Andersson 	.hwcg_reg = 0xa2090,
32754433594bSBjorn Andersson 	.hwcg_bit = 1,
32764433594bSBjorn Andersson 	.clkr = {
32774433594bSBjorn Andersson 		.enable_reg = 0xa2090,
32784433594bSBjorn Andersson 		.enable_mask = BIT(0),
32794433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32804433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_phy_aux_clk",
32814433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
32824433594bSBjorn Andersson 				&gcc_ufs_card_2_phy_aux_clk_src.clkr.hw
32834433594bSBjorn Andersson 			},
32844433594bSBjorn Andersson 			.num_parents = 1,
32854433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
32864433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
32874433594bSBjorn Andersson 		},
32884433594bSBjorn Andersson 	},
32894433594bSBjorn Andersson };
32904433594bSBjorn Andersson 
32914433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_rx_symbol_0_clk = {
32924433594bSBjorn Andersson 	.halt_reg = 0xa201c,
32934433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
32944433594bSBjorn Andersson 	.clkr = {
32954433594bSBjorn Andersson 		.enable_reg = 0xa201c,
32964433594bSBjorn Andersson 		.enable_mask = BIT(0),
32974433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
32984433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_rx_symbol_0_clk",
32994433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33004433594bSBjorn Andersson 		},
33014433594bSBjorn Andersson 	},
33024433594bSBjorn Andersson };
33034433594bSBjorn Andersson 
33044433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_rx_symbol_1_clk = {
33054433594bSBjorn Andersson 	.halt_reg = 0xa20ac,
33064433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33074433594bSBjorn Andersson 	.clkr = {
33084433594bSBjorn Andersson 		.enable_reg = 0xa20ac,
33094433594bSBjorn Andersson 		.enable_mask = BIT(0),
33104433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33114433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_rx_symbol_1_clk",
33124433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33134433594bSBjorn Andersson 		},
33144433594bSBjorn Andersson 	},
33154433594bSBjorn Andersson };
33164433594bSBjorn Andersson 
33174433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_tx_symbol_0_clk = {
33184433594bSBjorn Andersson 	.halt_reg = 0xa2018,
33194433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33204433594bSBjorn Andersson 	.clkr = {
33214433594bSBjorn Andersson 		.enable_reg = 0xa2018,
33224433594bSBjorn Andersson 		.enable_mask = BIT(0),
33234433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33244433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_tx_symbol_0_clk",
33254433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33264433594bSBjorn Andersson 		},
33274433594bSBjorn Andersson 	},
33284433594bSBjorn Andersson };
33294433594bSBjorn Andersson 
33304433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_2_unipro_core_clk = {
33314433594bSBjorn Andersson 	.halt_reg = 0xa2058,
33324433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33334433594bSBjorn Andersson 	.hwcg_reg = 0xa2058,
33344433594bSBjorn Andersson 	.hwcg_bit = 1,
33354433594bSBjorn Andersson 	.clkr = {
33364433594bSBjorn Andersson 		.enable_reg = 0xa2058,
33374433594bSBjorn Andersson 		.enable_mask = BIT(0),
33384433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33394433594bSBjorn Andersson 			.name = "gcc_ufs_card_2_unipro_core_clk",
33404433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
33414433594bSBjorn Andersson 				&gcc_ufs_card_2_unipro_core_clk_src.clkr.hw
33424433594bSBjorn Andersson 			},
33434433594bSBjorn Andersson 			.num_parents = 1,
33444433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
33454433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33464433594bSBjorn Andersson 		},
33474433594bSBjorn Andersson 	},
33484433594bSBjorn Andersson };
33494433594bSBjorn Andersson 
33504433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_ahb_clk = {
33514433594bSBjorn Andersson 	.halt_reg = 0x75014,
33524433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33534433594bSBjorn Andersson 	.hwcg_reg = 0x75014,
33544433594bSBjorn Andersson 	.hwcg_bit = 1,
33554433594bSBjorn Andersson 	.clkr = {
33564433594bSBjorn Andersson 		.enable_reg = 0x75014,
33574433594bSBjorn Andersson 		.enable_mask = BIT(0),
33584433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33594433594bSBjorn Andersson 			.name = "gcc_ufs_card_ahb_clk",
33604433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33614433594bSBjorn Andersson 		},
33624433594bSBjorn Andersson 	},
33634433594bSBjorn Andersson };
33644433594bSBjorn Andersson 
33654433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_axi_clk = {
33664433594bSBjorn Andersson 	.halt_reg = 0x75010,
33674433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33684433594bSBjorn Andersson 	.hwcg_reg = 0x75010,
33694433594bSBjorn Andersson 	.hwcg_bit = 1,
33704433594bSBjorn Andersson 	.clkr = {
33714433594bSBjorn Andersson 		.enable_reg = 0x75010,
33724433594bSBjorn Andersson 		.enable_mask = BIT(0),
33734433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33744433594bSBjorn Andersson 			.name = "gcc_ufs_card_axi_clk",
33754433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
33764433594bSBjorn Andersson 				      &gcc_ufs_card_axi_clk_src.clkr.hw
33774433594bSBjorn Andersson 			},
33784433594bSBjorn Andersson 			.num_parents = 1,
33794433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
33804433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
33814433594bSBjorn Andersson 		},
33824433594bSBjorn Andersson 	},
33834433594bSBjorn Andersson };
33844433594bSBjorn Andersson 
33854433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
33864433594bSBjorn Andersson 	.halt_reg = 0x75010,
33874433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
33884433594bSBjorn Andersson 	.hwcg_reg = 0x75010,
33894433594bSBjorn Andersson 	.hwcg_bit = 1,
33904433594bSBjorn Andersson 	.clkr = {
33914433594bSBjorn Andersson 		.enable_reg = 0x75010,
33924433594bSBjorn Andersson 		.enable_mask = BIT(1),
33934433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
33944433594bSBjorn Andersson 			.name = "gcc_ufs_card_axi_hw_ctl_clk",
33954433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
33964433594bSBjorn Andersson 				      &gcc_ufs_card_axi_clk.clkr.hw
33974433594bSBjorn Andersson 			},
33984433594bSBjorn Andersson 			.num_parents = 1,
33994433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
34004433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
34014433594bSBjorn Andersson 		},
34024433594bSBjorn Andersson 	},
34034433594bSBjorn Andersson };
34044433594bSBjorn Andersson 
34054433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_ice_core_clk = {
34064433594bSBjorn Andersson 	.halt_reg = 0x7505c,
34074433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
34084433594bSBjorn Andersson 	.hwcg_reg = 0x7505c,
34094433594bSBjorn Andersson 	.hwcg_bit = 1,
34104433594bSBjorn Andersson 	.clkr = {
34114433594bSBjorn Andersson 		.enable_reg = 0x7505c,
34124433594bSBjorn Andersson 		.enable_mask = BIT(0),
34134433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
34144433594bSBjorn Andersson 			.name = "gcc_ufs_card_ice_core_clk",
34154433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
34164433594bSBjorn Andersson 				      &gcc_ufs_card_ice_core_clk_src.clkr.hw
34174433594bSBjorn Andersson 			},
34184433594bSBjorn Andersson 			.num_parents = 1,
34194433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
34204433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
34214433594bSBjorn Andersson 		},
34224433594bSBjorn Andersson 	},
34234433594bSBjorn Andersson };
34244433594bSBjorn Andersson 
34254433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
34264433594bSBjorn Andersson 	.halt_reg = 0x7505c,
34274433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
34284433594bSBjorn Andersson 	.hwcg_reg = 0x7505c,
34294433594bSBjorn Andersson 	.hwcg_bit = 1,
34304433594bSBjorn Andersson 	.clkr = {
34314433594bSBjorn Andersson 		.enable_reg = 0x7505c,
34324433594bSBjorn Andersson 		.enable_mask = BIT(1),
34334433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
34344433594bSBjorn Andersson 			.name = "gcc_ufs_card_ice_core_hw_ctl_clk",
34354433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
34364433594bSBjorn Andersson 				      &gcc_ufs_card_ice_core_clk.clkr.hw
34374433594bSBjorn Andersson 			},
34384433594bSBjorn Andersson 			.num_parents = 1,
34394433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
34404433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
34414433594bSBjorn Andersson 		},
34424433594bSBjorn Andersson 	},
34434433594bSBjorn Andersson };
34444433594bSBjorn Andersson 
34454433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_phy_aux_clk = {
34464433594bSBjorn Andersson 	.halt_reg = 0x75090,
34474433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
34484433594bSBjorn Andersson 	.hwcg_reg = 0x75090,
34494433594bSBjorn Andersson 	.hwcg_bit = 1,
34504433594bSBjorn Andersson 	.clkr = {
34514433594bSBjorn Andersson 		.enable_reg = 0x75090,
34524433594bSBjorn Andersson 		.enable_mask = BIT(0),
34534433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
34544433594bSBjorn Andersson 			.name = "gcc_ufs_card_phy_aux_clk",
34554433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
34564433594bSBjorn Andersson 				      &gcc_ufs_card_phy_aux_clk_src.clkr.hw
34574433594bSBjorn Andersson 			},
34584433594bSBjorn Andersson 			.num_parents = 1,
34594433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
34604433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
34614433594bSBjorn Andersson 		},
34624433594bSBjorn Andersson 	},
34634433594bSBjorn Andersson };
34644433594bSBjorn Andersson 
34654433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
34664433594bSBjorn Andersson 	.halt_reg = 0x75090,
34674433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
34684433594bSBjorn Andersson 	.hwcg_reg = 0x75090,
34694433594bSBjorn Andersson 	.hwcg_bit = 1,
34704433594bSBjorn Andersson 	.clkr = {
34714433594bSBjorn Andersson 		.enable_reg = 0x75090,
34724433594bSBjorn Andersson 		.enable_mask = BIT(1),
34734433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
34744433594bSBjorn Andersson 			.name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
34754433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
34764433594bSBjorn Andersson 				      &gcc_ufs_card_phy_aux_clk.clkr.hw
34774433594bSBjorn Andersson 			},
34784433594bSBjorn Andersson 			.num_parents = 1,
34794433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
34804433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
34814433594bSBjorn Andersson 		},
34824433594bSBjorn Andersson 	},
34834433594bSBjorn Andersson };
34844433594bSBjorn Andersson 
34854433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
34864433594bSBjorn Andersson 	.halt_reg = 0x7501c,
34874433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
34884433594bSBjorn Andersson 	.clkr = {
34894433594bSBjorn Andersson 		.enable_reg = 0x7501c,
34904433594bSBjorn Andersson 		.enable_mask = BIT(0),
34914433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
34924433594bSBjorn Andersson 			.name = "gcc_ufs_card_rx_symbol_0_clk",
34934433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
34944433594bSBjorn Andersson 		},
34954433594bSBjorn Andersson 	},
34964433594bSBjorn Andersson };
34974433594bSBjorn Andersson 
34984433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
34994433594bSBjorn Andersson 	.halt_reg = 0x750ac,
35004433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
35014433594bSBjorn Andersson 	.clkr = {
35024433594bSBjorn Andersson 		.enable_reg = 0x750ac,
35034433594bSBjorn Andersson 		.enable_mask = BIT(0),
35044433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35054433594bSBjorn Andersson 			.name = "gcc_ufs_card_rx_symbol_1_clk",
35064433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
35074433594bSBjorn Andersson 		},
35084433594bSBjorn Andersson 	},
35094433594bSBjorn Andersson };
35104433594bSBjorn Andersson 
35114433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
35124433594bSBjorn Andersson 	.halt_reg = 0x75018,
35134433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_DELAY,
35144433594bSBjorn Andersson 	.clkr = {
35154433594bSBjorn Andersson 		.enable_reg = 0x75018,
35164433594bSBjorn Andersson 		.enable_mask = BIT(0),
35174433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35184433594bSBjorn Andersson 			.name = "gcc_ufs_card_tx_symbol_0_clk",
35194433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
35204433594bSBjorn Andersson 		},
35214433594bSBjorn Andersson 	},
35224433594bSBjorn Andersson };
35234433594bSBjorn Andersson 
35244433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_unipro_core_clk = {
35254433594bSBjorn Andersson 	.halt_reg = 0x75058,
35264433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
35274433594bSBjorn Andersson 	.hwcg_reg = 0x75058,
35284433594bSBjorn Andersson 	.hwcg_bit = 1,
35294433594bSBjorn Andersson 	.clkr = {
35304433594bSBjorn Andersson 		.enable_reg = 0x75058,
35314433594bSBjorn Andersson 		.enable_mask = BIT(0),
35324433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35334433594bSBjorn Andersson 			.name = "gcc_ufs_card_unipro_core_clk",
35344433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
35354433594bSBjorn Andersson 				      &gcc_ufs_card_unipro_core_clk_src.clkr.hw
35364433594bSBjorn Andersson 			},
35374433594bSBjorn Andersson 			.num_parents = 1,
35384433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
35394433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
35404433594bSBjorn Andersson 		},
35414433594bSBjorn Andersson 	},
35424433594bSBjorn Andersson };
35434433594bSBjorn Andersson 
35444433594bSBjorn Andersson static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
35454433594bSBjorn Andersson 	.halt_reg = 0x75058,
35464433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
35474433594bSBjorn Andersson 	.hwcg_reg = 0x75058,
35484433594bSBjorn Andersson 	.hwcg_bit = 1,
35494433594bSBjorn Andersson 	.clkr = {
35504433594bSBjorn Andersson 		.enable_reg = 0x75058,
35514433594bSBjorn Andersson 		.enable_mask = BIT(1),
35524433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35534433594bSBjorn Andersson 			.name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
35544433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
35554433594bSBjorn Andersson 				      &gcc_ufs_card_unipro_core_clk.clkr.hw
35564433594bSBjorn Andersson 			},
35574433594bSBjorn Andersson 			.num_parents = 1,
35584433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
35594433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
35604433594bSBjorn Andersson 		},
35614433594bSBjorn Andersson 	},
35624433594bSBjorn Andersson };
35634433594bSBjorn Andersson 
35644433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_ahb_clk = {
35654433594bSBjorn Andersson 	.halt_reg = 0x77014,
35664433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
35674433594bSBjorn Andersson 	.hwcg_reg = 0x77014,
35684433594bSBjorn Andersson 	.hwcg_bit = 1,
35694433594bSBjorn Andersson 	.clkr = {
35704433594bSBjorn Andersson 		.enable_reg = 0x77014,
35714433594bSBjorn Andersson 		.enable_mask = BIT(0),
35724433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35734433594bSBjorn Andersson 			.name = "gcc_ufs_phy_ahb_clk",
35744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
35754433594bSBjorn Andersson 		},
35764433594bSBjorn Andersson 	},
35774433594bSBjorn Andersson };
35784433594bSBjorn Andersson 
35794433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_axi_clk = {
35804433594bSBjorn Andersson 	.halt_reg = 0x77010,
35814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
35824433594bSBjorn Andersson 	.hwcg_reg = 0x77010,
35834433594bSBjorn Andersson 	.hwcg_bit = 1,
35844433594bSBjorn Andersson 	.clkr = {
35854433594bSBjorn Andersson 		.enable_reg = 0x77010,
35864433594bSBjorn Andersson 		.enable_mask = BIT(0),
35874433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
35884433594bSBjorn Andersson 			.name = "gcc_ufs_phy_axi_clk",
35894433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
35904433594bSBjorn Andersson 				      &gcc_ufs_phy_axi_clk_src.clkr.hw
35914433594bSBjorn Andersson 			},
35924433594bSBjorn Andersson 			.num_parents = 1,
35934433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
35944433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
35954433594bSBjorn Andersson 		},
35964433594bSBjorn Andersson 	},
35974433594bSBjorn Andersson };
35984433594bSBjorn Andersson 
35994433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
36004433594bSBjorn Andersson 	.halt_reg = 0x77010,
36014433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
36024433594bSBjorn Andersson 	.hwcg_reg = 0x77010,
36034433594bSBjorn Andersson 	.hwcg_bit = 1,
36044433594bSBjorn Andersson 	.clkr = {
36054433594bSBjorn Andersson 		.enable_reg = 0x77010,
36064433594bSBjorn Andersson 		.enable_mask = BIT(1),
36074433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
36084433594bSBjorn Andersson 			.name = "gcc_ufs_phy_axi_hw_ctl_clk",
36094433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
36104433594bSBjorn Andersson 				      &gcc_ufs_phy_axi_clk.clkr.hw
36114433594bSBjorn Andersson 			},
36124433594bSBjorn Andersson 			.num_parents = 1,
36134433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
36144433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
36154433594bSBjorn Andersson 		},
36164433594bSBjorn Andersson 	},
36174433594bSBjorn Andersson };
36184433594bSBjorn Andersson 
36194433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_ice_core_clk = {
36204433594bSBjorn Andersson 	.halt_reg = 0x7705c,
36214433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
36224433594bSBjorn Andersson 	.hwcg_reg = 0x7705c,
36234433594bSBjorn Andersson 	.hwcg_bit = 1,
36244433594bSBjorn Andersson 	.clkr = {
36254433594bSBjorn Andersson 		.enable_reg = 0x7705c,
36264433594bSBjorn Andersson 		.enable_mask = BIT(0),
36274433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
36284433594bSBjorn Andersson 			.name = "gcc_ufs_phy_ice_core_clk",
36294433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
36304433594bSBjorn Andersson 				      &gcc_ufs_phy_ice_core_clk_src.clkr.hw
36314433594bSBjorn Andersson 			},
36324433594bSBjorn Andersson 			.num_parents = 1,
36334433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
36344433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
36354433594bSBjorn Andersson 		},
36364433594bSBjorn Andersson 	},
36374433594bSBjorn Andersson };
36384433594bSBjorn Andersson 
36394433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
36404433594bSBjorn Andersson 	.halt_reg = 0x7705c,
36414433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
36424433594bSBjorn Andersson 	.hwcg_reg = 0x7705c,
36434433594bSBjorn Andersson 	.hwcg_bit = 1,
36444433594bSBjorn Andersson 	.clkr = {
36454433594bSBjorn Andersson 		.enable_reg = 0x7705c,
36464433594bSBjorn Andersson 		.enable_mask = BIT(1),
36474433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
36484433594bSBjorn Andersson 			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
36494433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
36504433594bSBjorn Andersson 				      &gcc_ufs_phy_ice_core_clk.clkr.hw
36514433594bSBjorn Andersson 			},
36524433594bSBjorn Andersson 			.num_parents = 1,
36534433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
36544433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
36554433594bSBjorn Andersson 		},
36564433594bSBjorn Andersson 	},
36574433594bSBjorn Andersson };
36584433594bSBjorn Andersson 
36594433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
36604433594bSBjorn Andersson 	.halt_reg = 0x77090,
36614433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
36624433594bSBjorn Andersson 	.hwcg_reg = 0x77090,
36634433594bSBjorn Andersson 	.hwcg_bit = 1,
36644433594bSBjorn Andersson 	.clkr = {
36654433594bSBjorn Andersson 		.enable_reg = 0x77090,
36664433594bSBjorn Andersson 		.enable_mask = BIT(0),
36674433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
36684433594bSBjorn Andersson 			.name = "gcc_ufs_phy_phy_aux_clk",
36694433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
36704433594bSBjorn Andersson 				      &gcc_ufs_phy_phy_aux_clk_src.clkr.hw
36714433594bSBjorn Andersson 			},
36724433594bSBjorn Andersson 			.num_parents = 1,
36734433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
36744433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
36754433594bSBjorn Andersson 		},
36764433594bSBjorn Andersson 	},
36774433594bSBjorn Andersson };
36784433594bSBjorn Andersson 
36794433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
36804433594bSBjorn Andersson 	.halt_reg = 0x77090,
36814433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
36824433594bSBjorn Andersson 	.hwcg_reg = 0x77090,
36834433594bSBjorn Andersson 	.hwcg_bit = 1,
36844433594bSBjorn Andersson 	.clkr = {
36854433594bSBjorn Andersson 		.enable_reg = 0x77090,
36864433594bSBjorn Andersson 		.enable_mask = BIT(1),
36874433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
36884433594bSBjorn Andersson 			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
36894433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
36904433594bSBjorn Andersson 				      &gcc_ufs_phy_phy_aux_clk.clkr.hw
36914433594bSBjorn Andersson 			},
36924433594bSBjorn Andersson 			.num_parents = 1,
36934433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
36944433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
36954433594bSBjorn Andersson 		},
36964433594bSBjorn Andersson 	},
36974433594bSBjorn Andersson };
36984433594bSBjorn Andersson 
36994433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
37004433594bSBjorn Andersson 	.halt_reg = 0x7701c,
37014433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
37024433594bSBjorn Andersson 	.clkr = {
37034433594bSBjorn Andersson 		.enable_reg = 0x7701c,
37044433594bSBjorn Andersson 		.enable_mask = BIT(0),
37054433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37064433594bSBjorn Andersson 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
37074433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
37084433594bSBjorn Andersson 		},
37094433594bSBjorn Andersson 	},
37104433594bSBjorn Andersson };
37114433594bSBjorn Andersson 
37124433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
37134433594bSBjorn Andersson 	.halt_reg = 0x770ac,
37144433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
37154433594bSBjorn Andersson 	.clkr = {
37164433594bSBjorn Andersson 		.enable_reg = 0x770ac,
37174433594bSBjorn Andersson 		.enable_mask = BIT(0),
37184433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37194433594bSBjorn Andersson 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
37204433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
37214433594bSBjorn Andersson 		},
37224433594bSBjorn Andersson 	},
37234433594bSBjorn Andersson };
37244433594bSBjorn Andersson 
37254433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
37264433594bSBjorn Andersson 	.halt_reg = 0x77018,
37274433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
37284433594bSBjorn Andersson 	.clkr = {
37294433594bSBjorn Andersson 		.enable_reg = 0x77018,
37304433594bSBjorn Andersson 		.enable_mask = BIT(0),
37314433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37324433594bSBjorn Andersson 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
37334433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
37344433594bSBjorn Andersson 		},
37354433594bSBjorn Andersson 	},
37364433594bSBjorn Andersson };
37374433594bSBjorn Andersson 
37384433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
37394433594bSBjorn Andersson 	.halt_reg = 0x77058,
37404433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
37414433594bSBjorn Andersson 	.hwcg_reg = 0x77058,
37424433594bSBjorn Andersson 	.hwcg_bit = 1,
37434433594bSBjorn Andersson 	.clkr = {
37444433594bSBjorn Andersson 		.enable_reg = 0x77058,
37454433594bSBjorn Andersson 		.enable_mask = BIT(0),
37464433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37474433594bSBjorn Andersson 			.name = "gcc_ufs_phy_unipro_core_clk",
37484433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
37494433594bSBjorn Andersson 				      &gcc_ufs_phy_unipro_core_clk_src.clkr.hw
37504433594bSBjorn Andersson 			},
37514433594bSBjorn Andersson 			.num_parents = 1,
37524433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
37534433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
37544433594bSBjorn Andersson 		},
37554433594bSBjorn Andersson 	},
37564433594bSBjorn Andersson };
37574433594bSBjorn Andersson 
37584433594bSBjorn Andersson static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
37594433594bSBjorn Andersson 	.halt_reg = 0x77058,
37604433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
37614433594bSBjorn Andersson 	.hwcg_reg = 0x77058,
37624433594bSBjorn Andersson 	.hwcg_bit = 1,
37634433594bSBjorn Andersson 	.clkr = {
37644433594bSBjorn Andersson 		.enable_reg = 0x77058,
37654433594bSBjorn Andersson 		.enable_mask = BIT(1),
37664433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37674433594bSBjorn Andersson 			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
37684433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
37694433594bSBjorn Andersson 				      &gcc_ufs_phy_unipro_core_clk.clkr.hw
37704433594bSBjorn Andersson 			},
37714433594bSBjorn Andersson 			.num_parents = 1,
37724433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
37734433594bSBjorn Andersson 			.ops = &clk_branch_simple_ops,
37744433594bSBjorn Andersson 		},
37754433594bSBjorn Andersson 	},
37764433594bSBjorn Andersson };
37774433594bSBjorn Andersson 
37784433594bSBjorn Andersson static struct clk_branch gcc_usb30_mp_master_clk = {
37794433594bSBjorn Andersson 	.halt_reg = 0xa6010,
37804433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
37814433594bSBjorn Andersson 	.clkr = {
37824433594bSBjorn Andersson 		.enable_reg = 0xa6010,
37834433594bSBjorn Andersson 		.enable_mask = BIT(0),
37844433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
37854433594bSBjorn Andersson 			.name = "gcc_usb30_mp_master_clk",
37864433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
37874433594bSBjorn Andersson 				      &gcc_usb30_mp_master_clk_src.clkr.hw },
37884433594bSBjorn Andersson 			.num_parents = 1,
37894433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
37904433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
37914433594bSBjorn Andersson 		},
37924433594bSBjorn Andersson 	},
37934433594bSBjorn Andersson };
37944433594bSBjorn Andersson 
37954433594bSBjorn Andersson static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
37964433594bSBjorn Andersson 	.halt_reg = 0xa6018,
37974433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
37984433594bSBjorn Andersson 	.clkr = {
37994433594bSBjorn Andersson 		.enable_reg = 0xa6018,
38004433594bSBjorn Andersson 		.enable_mask = BIT(0),
38014433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38024433594bSBjorn Andersson 			.name = "gcc_usb30_mp_mock_utmi_clk",
38034433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
38044433594bSBjorn Andersson 				      &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw
38054433594bSBjorn Andersson 			},
38064433594bSBjorn Andersson 			.num_parents = 1,
38074433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
38084433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38094433594bSBjorn Andersson 		},
38104433594bSBjorn Andersson 	},
38114433594bSBjorn Andersson };
38124433594bSBjorn Andersson 
38134433594bSBjorn Andersson static struct clk_branch gcc_usb30_mp_sleep_clk = {
38144433594bSBjorn Andersson 	.halt_reg = 0xa6014,
38154433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38164433594bSBjorn Andersson 	.clkr = {
38174433594bSBjorn Andersson 		.enable_reg = 0xa6014,
38184433594bSBjorn Andersson 		.enable_mask = BIT(0),
38194433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38204433594bSBjorn Andersson 			.name = "gcc_usb30_mp_sleep_clk",
38214433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38224433594bSBjorn Andersson 		},
38234433594bSBjorn Andersson 	},
38244433594bSBjorn Andersson };
38254433594bSBjorn Andersson 
38264433594bSBjorn Andersson static struct clk_branch gcc_usb30_prim_master_clk = {
38274433594bSBjorn Andersson 	.halt_reg = 0xf010,
38284433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38294433594bSBjorn Andersson 	.clkr = {
38304433594bSBjorn Andersson 		.enable_reg = 0xf010,
38314433594bSBjorn Andersson 		.enable_mask = BIT(0),
38324433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38334433594bSBjorn Andersson 			.name = "gcc_usb30_prim_master_clk",
38344433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
38354433594bSBjorn Andersson 				      &gcc_usb30_prim_master_clk_src.clkr.hw },
38364433594bSBjorn Andersson 			.num_parents = 1,
38374433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
38384433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38394433594bSBjorn Andersson 		},
38404433594bSBjorn Andersson 	},
38414433594bSBjorn Andersson };
38424433594bSBjorn Andersson 
38434433594bSBjorn Andersson static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
38444433594bSBjorn Andersson 	.halt_reg = 0xf018,
38454433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38464433594bSBjorn Andersson 	.clkr = {
38474433594bSBjorn Andersson 		.enable_reg = 0xf018,
38484433594bSBjorn Andersson 		.enable_mask = BIT(0),
38494433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38504433594bSBjorn Andersson 			.name = "gcc_usb30_prim_mock_utmi_clk",
38514433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
38524433594bSBjorn Andersson 				      &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw
38534433594bSBjorn Andersson 			},
38544433594bSBjorn Andersson 			.num_parents = 1,
38554433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
38564433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38574433594bSBjorn Andersson 		},
38584433594bSBjorn Andersson 	},
38594433594bSBjorn Andersson };
38604433594bSBjorn Andersson 
38614433594bSBjorn Andersson static struct clk_branch gcc_usb30_prim_sleep_clk = {
38624433594bSBjorn Andersson 	.halt_reg = 0xf014,
38634433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38644433594bSBjorn Andersson 	.clkr = {
38654433594bSBjorn Andersson 		.enable_reg = 0xf014,
38664433594bSBjorn Andersson 		.enable_mask = BIT(0),
38674433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38684433594bSBjorn Andersson 			.name = "gcc_usb30_prim_sleep_clk",
38694433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38704433594bSBjorn Andersson 		},
38714433594bSBjorn Andersson 	},
38724433594bSBjorn Andersson };
38734433594bSBjorn Andersson 
38744433594bSBjorn Andersson static struct clk_branch gcc_usb30_sec_master_clk = {
38754433594bSBjorn Andersson 	.halt_reg = 0x10010,
38764433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38774433594bSBjorn Andersson 	.clkr = {
38784433594bSBjorn Andersson 		.enable_reg = 0x10010,
38794433594bSBjorn Andersson 		.enable_mask = BIT(0),
38804433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38814433594bSBjorn Andersson 			.name = "gcc_usb30_sec_master_clk",
38824433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
38834433594bSBjorn Andersson 				      &gcc_usb30_sec_master_clk_src.clkr.hw },
38844433594bSBjorn Andersson 			.num_parents = 1,
38854433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
38864433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
38874433594bSBjorn Andersson 		},
38884433594bSBjorn Andersson 	},
38894433594bSBjorn Andersson };
38904433594bSBjorn Andersson 
38914433594bSBjorn Andersson static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
38924433594bSBjorn Andersson 	.halt_reg = 0x10018,
38934433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
38944433594bSBjorn Andersson 	.clkr = {
38954433594bSBjorn Andersson 		.enable_reg = 0x10018,
38964433594bSBjorn Andersson 		.enable_mask = BIT(0),
38974433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
38984433594bSBjorn Andersson 			.name = "gcc_usb30_sec_mock_utmi_clk",
38994433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
39004433594bSBjorn Andersson 				      &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw
39014433594bSBjorn Andersson 			},
39024433594bSBjorn Andersson 			.num_parents = 1,
39034433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
39044433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39054433594bSBjorn Andersson 		},
39064433594bSBjorn Andersson 	},
39074433594bSBjorn Andersson };
39084433594bSBjorn Andersson 
39094433594bSBjorn Andersson static struct clk_branch gcc_usb30_sec_sleep_clk = {
39104433594bSBjorn Andersson 	.halt_reg = 0x10014,
39114433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
39124433594bSBjorn Andersson 	.clkr = {
39134433594bSBjorn Andersson 		.enable_reg = 0x10014,
39144433594bSBjorn Andersson 		.enable_mask = BIT(0),
39154433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39164433594bSBjorn Andersson 			.name = "gcc_usb30_sec_sleep_clk",
39174433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39184433594bSBjorn Andersson 		},
39194433594bSBjorn Andersson 	},
39204433594bSBjorn Andersson };
39214433594bSBjorn Andersson 
39224433594bSBjorn Andersson static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
39234433594bSBjorn Andersson 	.halt_reg = 0xa6050,
39244433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
39254433594bSBjorn Andersson 	.clkr = {
39264433594bSBjorn Andersson 		.enable_reg = 0xa6050,
39274433594bSBjorn Andersson 		.enable_mask = BIT(0),
39284433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39294433594bSBjorn Andersson 			.name = "gcc_usb3_mp_phy_aux_clk",
39304433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
39314433594bSBjorn Andersson 				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
39324433594bSBjorn Andersson 			},
39334433594bSBjorn Andersson 			.num_parents = 1,
39344433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
39354433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39364433594bSBjorn Andersson 		},
39374433594bSBjorn Andersson 	},
39384433594bSBjorn Andersson };
39394433594bSBjorn Andersson 
39404433594bSBjorn Andersson static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
39414433594bSBjorn Andersson 	.halt_reg = 0xa6054,
39424433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
39434433594bSBjorn Andersson 	.clkr = {
39444433594bSBjorn Andersson 		.enable_reg = 0xa6054,
39454433594bSBjorn Andersson 		.enable_mask = BIT(0),
39464433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39474433594bSBjorn Andersson 			.name = "gcc_usb3_mp_phy_com_aux_clk",
39484433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
39494433594bSBjorn Andersson 				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
39504433594bSBjorn Andersson 			},
39514433594bSBjorn Andersson 			.num_parents = 1,
39524433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
39534433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39544433594bSBjorn Andersson 		},
39554433594bSBjorn Andersson 	},
39564433594bSBjorn Andersson };
39574433594bSBjorn Andersson 
39584433594bSBjorn Andersson static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
39594433594bSBjorn Andersson 	.halt_reg = 0xa6058,
39604433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
39614433594bSBjorn Andersson 	.clkr = {
39624433594bSBjorn Andersson 		.enable_reg = 0xa6058,
39634433594bSBjorn Andersson 		.enable_mask = BIT(0),
39644433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39654433594bSBjorn Andersson 			.name = "gcc_usb3_mp_phy_pipe_0_clk",
39664433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39674433594bSBjorn Andersson 		},
39684433594bSBjorn Andersson 	},
39694433594bSBjorn Andersson };
39704433594bSBjorn Andersson 
39714433594bSBjorn Andersson static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
39724433594bSBjorn Andersson 	.halt_reg = 0xa605c,
39734433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
39744433594bSBjorn Andersson 	.clkr = {
39754433594bSBjorn Andersson 		.enable_reg = 0xa605c,
39764433594bSBjorn Andersson 		.enable_mask = BIT(0),
39774433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39784433594bSBjorn Andersson 			.name = "gcc_usb3_mp_phy_pipe_1_clk",
39794433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39804433594bSBjorn Andersson 		},
39814433594bSBjorn Andersson 	},
39824433594bSBjorn Andersson };
39834433594bSBjorn Andersson 
39844433594bSBjorn Andersson static struct clk_branch gcc_usb3_prim_clkref_clk = {
39854433594bSBjorn Andersson 	.halt_reg = 0x8c008,
39864433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
39874433594bSBjorn Andersson 	.clkr = {
39884433594bSBjorn Andersson 		.enable_reg = 0x8c008,
39894433594bSBjorn Andersson 		.enable_mask = BIT(0),
39904433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
39914433594bSBjorn Andersson 			.name = "gcc_usb3_prim_clkref_clk",
39924433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
39934433594bSBjorn Andersson 		},
39944433594bSBjorn Andersson 	},
39954433594bSBjorn Andersson };
39964433594bSBjorn Andersson 
39974433594bSBjorn Andersson static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
39984433594bSBjorn Andersson 	.halt_reg = 0xf050,
39994433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
40004433594bSBjorn Andersson 	.clkr = {
40014433594bSBjorn Andersson 		.enable_reg = 0xf050,
40024433594bSBjorn Andersson 		.enable_mask = BIT(0),
40034433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40044433594bSBjorn Andersson 			.name = "gcc_usb3_prim_phy_aux_clk",
40054433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
40064433594bSBjorn Andersson 				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
40074433594bSBjorn Andersson 			},
40084433594bSBjorn Andersson 			.num_parents = 1,
40094433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
40104433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40114433594bSBjorn Andersson 		},
40124433594bSBjorn Andersson 	},
40134433594bSBjorn Andersson };
40144433594bSBjorn Andersson 
40154433594bSBjorn Andersson static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
40164433594bSBjorn Andersson 	.halt_reg = 0xf054,
40174433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
40184433594bSBjorn Andersson 	.clkr = {
40194433594bSBjorn Andersson 		.enable_reg = 0xf054,
40204433594bSBjorn Andersson 		.enable_mask = BIT(0),
40214433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40224433594bSBjorn Andersson 			.name = "gcc_usb3_prim_phy_com_aux_clk",
40234433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
40244433594bSBjorn Andersson 				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
40254433594bSBjorn Andersson 			},
40264433594bSBjorn Andersson 			.num_parents = 1,
40274433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
40284433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40294433594bSBjorn Andersson 		},
40304433594bSBjorn Andersson 	},
40314433594bSBjorn Andersson };
40324433594bSBjorn Andersson 
40334433594bSBjorn Andersson static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
40344433594bSBjorn Andersson 	.halt_reg = 0xf058,
40354433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
40364433594bSBjorn Andersson 	.clkr = {
40374433594bSBjorn Andersson 		.enable_reg = 0xf058,
40384433594bSBjorn Andersson 		.enable_mask = BIT(0),
40394433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40404433594bSBjorn Andersson 			.name = "gcc_usb3_prim_phy_pipe_clk",
40414433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40424433594bSBjorn Andersson 		},
40434433594bSBjorn Andersson 	},
40444433594bSBjorn Andersson };
40454433594bSBjorn Andersson 
40464433594bSBjorn Andersson static struct clk_branch gcc_usb3_sec_clkref_clk = {
40474433594bSBjorn Andersson 	.halt_reg = 0x8c028,
40484433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
40494433594bSBjorn Andersson 	.clkr = {
40504433594bSBjorn Andersson 		.enable_reg = 0x8c028,
40514433594bSBjorn Andersson 		.enable_mask = BIT(0),
40524433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40534433594bSBjorn Andersson 			.name = "gcc_usb3_sec_clkref_clk",
40544433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40554433594bSBjorn Andersson 		},
40564433594bSBjorn Andersson 	},
40574433594bSBjorn Andersson };
40584433594bSBjorn Andersson 
40594433594bSBjorn Andersson static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
40604433594bSBjorn Andersson 	.halt_reg = 0x10050,
40614433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
40624433594bSBjorn Andersson 	.clkr = {
40634433594bSBjorn Andersson 		.enable_reg = 0x10050,
40644433594bSBjorn Andersson 		.enable_mask = BIT(0),
40654433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40664433594bSBjorn Andersson 			.name = "gcc_usb3_sec_phy_aux_clk",
40674433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
40684433594bSBjorn Andersson 				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
40694433594bSBjorn Andersson 			},
40704433594bSBjorn Andersson 			.num_parents = 1,
40714433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
40724433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40734433594bSBjorn Andersson 		},
40744433594bSBjorn Andersson 	},
40754433594bSBjorn Andersson };
40764433594bSBjorn Andersson 
40774433594bSBjorn Andersson static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
40784433594bSBjorn Andersson 	.halt_reg = 0x10054,
40794433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
40804433594bSBjorn Andersson 	.clkr = {
40814433594bSBjorn Andersson 		.enable_reg = 0x10054,
40824433594bSBjorn Andersson 		.enable_mask = BIT(0),
40834433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
40844433594bSBjorn Andersson 			.name = "gcc_usb3_sec_phy_com_aux_clk",
40854433594bSBjorn Andersson 			.parent_hws = (const struct clk_hw *[]){
40864433594bSBjorn Andersson 				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
40874433594bSBjorn Andersson 			},
40884433594bSBjorn Andersson 			.num_parents = 1,
40894433594bSBjorn Andersson 			.flags = CLK_SET_RATE_PARENT,
40904433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
40914433594bSBjorn Andersson 		},
40924433594bSBjorn Andersson 	},
40934433594bSBjorn Andersson };
40944433594bSBjorn Andersson 
40954433594bSBjorn Andersson static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
40964433594bSBjorn Andersson 	.halt_reg = 0x10058,
40974433594bSBjorn Andersson 	.halt_check = BRANCH_HALT_SKIP,
40984433594bSBjorn Andersson 	.clkr = {
40994433594bSBjorn Andersson 		.enable_reg = 0x10058,
41004433594bSBjorn Andersson 		.enable_mask = BIT(0),
41014433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
41024433594bSBjorn Andersson 			.name = "gcc_usb3_sec_phy_pipe_clk",
41034433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
41044433594bSBjorn Andersson 		},
41054433594bSBjorn Andersson 	},
41064433594bSBjorn Andersson };
41074433594bSBjorn Andersson 
41084433594bSBjorn Andersson static struct clk_branch gcc_video_axi0_clk = {
41094433594bSBjorn Andersson 	.halt_reg = 0xb024,
41104433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
41114433594bSBjorn Andersson 	.clkr = {
41124433594bSBjorn Andersson 		.enable_reg = 0xb024,
41134433594bSBjorn Andersson 		.enable_mask = BIT(0),
41144433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
41154433594bSBjorn Andersson 			.name = "gcc_video_axi0_clk",
41164433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
41174433594bSBjorn Andersson 		},
41184433594bSBjorn Andersson 	},
41194433594bSBjorn Andersson };
41204433594bSBjorn Andersson 
41214433594bSBjorn Andersson static struct clk_branch gcc_video_axi1_clk = {
41224433594bSBjorn Andersson 	.halt_reg = 0xb028,
41234433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
41244433594bSBjorn Andersson 	.clkr = {
41254433594bSBjorn Andersson 		.enable_reg = 0xb028,
41264433594bSBjorn Andersson 		.enable_mask = BIT(0),
41274433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
41284433594bSBjorn Andersson 			.name = "gcc_video_axi1_clk",
41294433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
41304433594bSBjorn Andersson 		},
41314433594bSBjorn Andersson 	},
41324433594bSBjorn Andersson };
41334433594bSBjorn Andersson 
41344433594bSBjorn Andersson static struct clk_branch gcc_video_axic_clk = {
41354433594bSBjorn Andersson 	.halt_reg = 0xb02c,
41364433594bSBjorn Andersson 	.halt_check = BRANCH_HALT,
41374433594bSBjorn Andersson 	.clkr = {
41384433594bSBjorn Andersson 		.enable_reg = 0xb02c,
41394433594bSBjorn Andersson 		.enable_mask = BIT(0),
41404433594bSBjorn Andersson 		.hw.init = &(struct clk_init_data){
41414433594bSBjorn Andersson 			.name = "gcc_video_axic_clk",
41424433594bSBjorn Andersson 			.ops = &clk_branch2_ops,
41434433594bSBjorn Andersson 		},
41444433594bSBjorn Andersson 	},
41454433594bSBjorn Andersson };
41464433594bSBjorn Andersson 
41474433594bSBjorn Andersson static struct gdsc usb30_sec_gdsc = {
41484433594bSBjorn Andersson 	.gdscr = 0x10004,
41494433594bSBjorn Andersson 	.pd = {
41504433594bSBjorn Andersson 		.name = "usb30_sec_gdsc",
41514433594bSBjorn Andersson 	},
41524433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41534433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41544433594bSBjorn Andersson };
41554433594bSBjorn Andersson 
41564433594bSBjorn Andersson static struct gdsc emac_gdsc = {
41574433594bSBjorn Andersson 	.gdscr = 0x6004,
41584433594bSBjorn Andersson 	.pd = {
41594433594bSBjorn Andersson 		.name = "emac_gdsc",
41604433594bSBjorn Andersson 	},
41614433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41624433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41634433594bSBjorn Andersson };
41644433594bSBjorn Andersson 
41654433594bSBjorn Andersson static struct gdsc usb30_prim_gdsc = {
41664433594bSBjorn Andersson 	.gdscr = 0xf004,
41674433594bSBjorn Andersson 	.pd = {
41684433594bSBjorn Andersson 		.name = "usb30_prim_gdsc",
41694433594bSBjorn Andersson 	},
41704433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41714433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41724433594bSBjorn Andersson };
41734433594bSBjorn Andersson 
41744433594bSBjorn Andersson static struct gdsc pcie_0_gdsc = {
41754433594bSBjorn Andersson 	.gdscr = 0x6b004,
41764433594bSBjorn Andersson 	.pd = {
41774433594bSBjorn Andersson 		.name = "pcie_0_gdsc",
41784433594bSBjorn Andersson 	},
41794433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41804433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41814433594bSBjorn Andersson };
41824433594bSBjorn Andersson 
41834433594bSBjorn Andersson static struct gdsc ufs_card_gdsc = {
41844433594bSBjorn Andersson 	.gdscr = 0x75004,
41854433594bSBjorn Andersson 	.pd = {
41864433594bSBjorn Andersson 		.name = "ufs_card_gdsc",
41874433594bSBjorn Andersson 	},
41884433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41894433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41904433594bSBjorn Andersson };
41914433594bSBjorn Andersson 
41924433594bSBjorn Andersson static struct gdsc ufs_phy_gdsc = {
41934433594bSBjorn Andersson 	.gdscr = 0x77004,
41944433594bSBjorn Andersson 	.pd = {
41954433594bSBjorn Andersson 		.name = "ufs_phy_gdsc",
41964433594bSBjorn Andersson 	},
41974433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
41984433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
41994433594bSBjorn Andersson };
42004433594bSBjorn Andersson 
42014433594bSBjorn Andersson static struct gdsc pcie_1_gdsc = {
42024433594bSBjorn Andersson 	.gdscr = 0x8d004,
42034433594bSBjorn Andersson 	.pd = {
42044433594bSBjorn Andersson 		.name = "pcie_1_gdsc",
42054433594bSBjorn Andersson 	},
42064433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
42074433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
42084433594bSBjorn Andersson };
42094433594bSBjorn Andersson 
42104433594bSBjorn Andersson static struct gdsc pcie_2_gdsc = {
42114433594bSBjorn Andersson 	.gdscr = 0x9d004,
42124433594bSBjorn Andersson 	.pd = {
42134433594bSBjorn Andersson 		.name = "pcie_2_gdsc",
42144433594bSBjorn Andersson 	},
42154433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
42164433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
42174433594bSBjorn Andersson };
42184433594bSBjorn Andersson 
42194433594bSBjorn Andersson static struct gdsc ufs_card_2_gdsc = {
42204433594bSBjorn Andersson 	.gdscr = 0xa2004,
42214433594bSBjorn Andersson 	.pd = {
42224433594bSBjorn Andersson 		.name = "ufs_card_2_gdsc",
42234433594bSBjorn Andersson 	},
42244433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
42254433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
42264433594bSBjorn Andersson };
42274433594bSBjorn Andersson 
42284433594bSBjorn Andersson static struct gdsc pcie_3_gdsc = {
42294433594bSBjorn Andersson 	.gdscr = 0xa3004,
42304433594bSBjorn Andersson 	.pd = {
42314433594bSBjorn Andersson 		.name = "pcie_3_gdsc",
42324433594bSBjorn Andersson 	},
42334433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
42344433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
42354433594bSBjorn Andersson };
42364433594bSBjorn Andersson 
42374433594bSBjorn Andersson static struct gdsc usb30_mp_gdsc = {
42384433594bSBjorn Andersson 	.gdscr = 0xa6004,
42394433594bSBjorn Andersson 	.pd = {
42404433594bSBjorn Andersson 		.name = "usb30_mp_gdsc",
42414433594bSBjorn Andersson 	},
42424433594bSBjorn Andersson 	.pwrsts = PWRSTS_OFF_ON,
42434433594bSBjorn Andersson 	.flags = POLL_CFG_GDSCR,
42444433594bSBjorn Andersson };
42454433594bSBjorn Andersson 
42464433594bSBjorn Andersson static struct clk_regmap *gcc_sc8180x_clocks[] = {
42474433594bSBjorn Andersson 	[GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
42484433594bSBjorn Andersson 	[GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
42494433594bSBjorn Andersson 	[GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
42504433594bSBjorn Andersson 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
42514433594bSBjorn Andersson 	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
42524433594bSBjorn Andersson 	[GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
42534433594bSBjorn Andersson 	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
42544433594bSBjorn Andersson 	[GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
42554433594bSBjorn Andersson 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
42564433594bSBjorn Andersson 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
42574433594bSBjorn Andersson 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
42584433594bSBjorn Andersson 	[GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
42594433594bSBjorn Andersson 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
42604433594bSBjorn Andersson 	[GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
42614433594bSBjorn Andersson 	[GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
42624433594bSBjorn Andersson 	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
42634433594bSBjorn Andersson 	[GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
42644433594bSBjorn Andersson 	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
42654433594bSBjorn Andersson 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
42664433594bSBjorn Andersson 	[GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
42674433594bSBjorn Andersson 	[GCC_EMAC_AXI_CLK] = &gcc_emac_axi_clk.clkr,
42684433594bSBjorn Andersson 	[GCC_EMAC_PTP_CLK] = &gcc_emac_ptp_clk.clkr,
42694433594bSBjorn Andersson 	[GCC_EMAC_PTP_CLK_SRC] = &gcc_emac_ptp_clk_src.clkr,
42704433594bSBjorn Andersson 	[GCC_EMAC_RGMII_CLK] = &gcc_emac_rgmii_clk.clkr,
42714433594bSBjorn Andersson 	[GCC_EMAC_RGMII_CLK_SRC] = &gcc_emac_rgmii_clk_src.clkr,
42724433594bSBjorn Andersson 	[GCC_EMAC_SLV_AHB_CLK] = &gcc_emac_slv_ahb_clk.clkr,
42734433594bSBjorn Andersson 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
42744433594bSBjorn Andersson 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
42754433594bSBjorn Andersson 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
42764433594bSBjorn Andersson 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
42774433594bSBjorn Andersson 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
42784433594bSBjorn Andersson 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
42794433594bSBjorn Andersson 	[GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
42804433594bSBjorn Andersson 	[GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
42814433594bSBjorn Andersson 	[GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
42824433594bSBjorn Andersson 	[GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
42834433594bSBjorn Andersson 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
42844433594bSBjorn Andersson 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
42854433594bSBjorn Andersson 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
42864433594bSBjorn Andersson 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
42874433594bSBjorn Andersson 	[GCC_NPU_AT_CLK] = &gcc_npu_at_clk.clkr,
42884433594bSBjorn Andersson 	[GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr,
42894433594bSBjorn Andersson 	[GCC_NPU_AXI_CLK_SRC] = &gcc_npu_axi_clk_src.clkr,
42904433594bSBjorn Andersson 	[GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr,
42914433594bSBjorn Andersson 	[GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr,
42924433594bSBjorn Andersson 	[GCC_NPU_TRIG_CLK] = &gcc_npu_trig_clk.clkr,
42934433594bSBjorn Andersson 	[GCC_PCIE0_PHY_REFGEN_CLK] = &gcc_pcie0_phy_refgen_clk.clkr,
42944433594bSBjorn Andersson 	[GCC_PCIE1_PHY_REFGEN_CLK] = &gcc_pcie1_phy_refgen_clk.clkr,
42954433594bSBjorn Andersson 	[GCC_PCIE2_PHY_REFGEN_CLK] = &gcc_pcie2_phy_refgen_clk.clkr,
42964433594bSBjorn Andersson 	[GCC_PCIE3_PHY_REFGEN_CLK] = &gcc_pcie3_phy_refgen_clk.clkr,
42974433594bSBjorn Andersson 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
42984433594bSBjorn Andersson 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
42994433594bSBjorn Andersson 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
43004433594bSBjorn Andersson 	[GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
43014433594bSBjorn Andersson 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
43024433594bSBjorn Andersson 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
43034433594bSBjorn Andersson 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
43044433594bSBjorn Andersson 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
43054433594bSBjorn Andersson 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
43064433594bSBjorn Andersson 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
43074433594bSBjorn Andersson 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
43084433594bSBjorn Andersson 	[GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
43094433594bSBjorn Andersson 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
43104433594bSBjorn Andersson 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
43114433594bSBjorn Andersson 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
43124433594bSBjorn Andersson 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
43134433594bSBjorn Andersson 	[GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
43144433594bSBjorn Andersson 	[GCC_PCIE_2_AUX_CLK_SRC] = &gcc_pcie_2_aux_clk_src.clkr,
43154433594bSBjorn Andersson 	[GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
43164433594bSBjorn Andersson 	[GCC_PCIE_2_CLKREF_CLK] = &gcc_pcie_2_clkref_clk.clkr,
43174433594bSBjorn Andersson 	[GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
43184433594bSBjorn Andersson 	[GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
43194433594bSBjorn Andersson 	[GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
43204433594bSBjorn Andersson 	[GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
43214433594bSBjorn Andersson 	[GCC_PCIE_3_AUX_CLK] = &gcc_pcie_3_aux_clk.clkr,
43224433594bSBjorn Andersson 	[GCC_PCIE_3_AUX_CLK_SRC] = &gcc_pcie_3_aux_clk_src.clkr,
43234433594bSBjorn Andersson 	[GCC_PCIE_3_CFG_AHB_CLK] = &gcc_pcie_3_cfg_ahb_clk.clkr,
43244433594bSBjorn Andersson 	[GCC_PCIE_3_CLKREF_CLK] = &gcc_pcie_3_clkref_clk.clkr,
43254433594bSBjorn Andersson 	[GCC_PCIE_3_MSTR_AXI_CLK] = &gcc_pcie_3_mstr_axi_clk.clkr,
43264433594bSBjorn Andersson 	[GCC_PCIE_3_PIPE_CLK] = &gcc_pcie_3_pipe_clk.clkr,
43274433594bSBjorn Andersson 	[GCC_PCIE_3_SLV_AXI_CLK] = &gcc_pcie_3_slv_axi_clk.clkr,
43284433594bSBjorn Andersson 	[GCC_PCIE_3_SLV_Q2A_AXI_CLK] = &gcc_pcie_3_slv_q2a_axi_clk.clkr,
43294433594bSBjorn Andersson 	[GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
43304433594bSBjorn Andersson 	[GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
43314433594bSBjorn Andersson 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
43324433594bSBjorn Andersson 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
43334433594bSBjorn Andersson 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
43344433594bSBjorn Andersson 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
43354433594bSBjorn Andersson 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
43364433594bSBjorn Andersson 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
43374433594bSBjorn Andersson 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
43384433594bSBjorn Andersson 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
43394433594bSBjorn Andersson 	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
43404433594bSBjorn Andersson 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
43414433594bSBjorn Andersson 	[GCC_QSPI_1_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_1_cnoc_periph_ahb_clk.clkr,
43424433594bSBjorn Andersson 	[GCC_QSPI_1_CORE_CLK] = &gcc_qspi_1_core_clk.clkr,
43434433594bSBjorn Andersson 	[GCC_QSPI_1_CORE_CLK_SRC] = &gcc_qspi_1_core_clk_src.clkr,
43444433594bSBjorn Andersson 	[GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
43454433594bSBjorn Andersson 	[GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
43464433594bSBjorn Andersson 	[GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
43474433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
43484433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
43494433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
43504433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
43514433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
43524433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
43534433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
43544433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
43554433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
43564433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
43574433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
43584433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
43594433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
43604433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
43614433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
43624433594bSBjorn Andersson 	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
43634433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
43644433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
43654433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
43664433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
43674433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
43684433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
43694433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
43704433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
43714433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
43724433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
43734433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
43744433594bSBjorn Andersson 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
43754433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
43764433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
43774433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
43784433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
43794433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
43804433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
43814433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
43824433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
43834433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
43844433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
43854433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
43864433594bSBjorn Andersson 	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
43874433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
43884433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
43894433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
43904433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
43914433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
43924433594bSBjorn Andersson 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
43934433594bSBjorn Andersson 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
43944433594bSBjorn Andersson 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
43954433594bSBjorn Andersson 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
43964433594bSBjorn Andersson 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
43974433594bSBjorn Andersson 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
43984433594bSBjorn Andersson 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
43994433594bSBjorn Andersson 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
44004433594bSBjorn Andersson 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
44014433594bSBjorn Andersson 	[GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
44024433594bSBjorn Andersson 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
44034433594bSBjorn Andersson 	[GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
44044433594bSBjorn Andersson 	[GCC_UFS_CARD_2_AHB_CLK] = &gcc_ufs_card_2_ahb_clk.clkr,
44054433594bSBjorn Andersson 	[GCC_UFS_CARD_2_AXI_CLK] = &gcc_ufs_card_2_axi_clk.clkr,
44064433594bSBjorn Andersson 	[GCC_UFS_CARD_2_AXI_CLK_SRC] = &gcc_ufs_card_2_axi_clk_src.clkr,
44074433594bSBjorn Andersson 	[GCC_UFS_CARD_2_ICE_CORE_CLK] = &gcc_ufs_card_2_ice_core_clk.clkr,
44084433594bSBjorn Andersson 	[GCC_UFS_CARD_2_ICE_CORE_CLK_SRC] = &gcc_ufs_card_2_ice_core_clk_src.clkr,
44094433594bSBjorn Andersson 	[GCC_UFS_CARD_2_PHY_AUX_CLK] = &gcc_ufs_card_2_phy_aux_clk.clkr,
44104433594bSBjorn Andersson 	[GCC_UFS_CARD_2_PHY_AUX_CLK_SRC] = &gcc_ufs_card_2_phy_aux_clk_src.clkr,
44114433594bSBjorn Andersson 	[GCC_UFS_CARD_2_RX_SYMBOL_0_CLK] = &gcc_ufs_card_2_rx_symbol_0_clk.clkr,
44124433594bSBjorn Andersson 	[GCC_UFS_CARD_2_RX_SYMBOL_1_CLK] = &gcc_ufs_card_2_rx_symbol_1_clk.clkr,
44134433594bSBjorn Andersson 	[GCC_UFS_CARD_2_TX_SYMBOL_0_CLK] = &gcc_ufs_card_2_tx_symbol_0_clk.clkr,
44144433594bSBjorn Andersson 	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK] = &gcc_ufs_card_2_unipro_core_clk.clkr,
44154433594bSBjorn Andersson 	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_2_unipro_core_clk_src.clkr,
44164433594bSBjorn Andersson 	[GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
44174433594bSBjorn Andersson 	[GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
44184433594bSBjorn Andersson 	[GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
44194433594bSBjorn Andersson 	[GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
44204433594bSBjorn Andersson 	[GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
44214433594bSBjorn Andersson 	[GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
44224433594bSBjorn Andersson 	[GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
44234433594bSBjorn Andersson 	[GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
44244433594bSBjorn Andersson 	[GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
44254433594bSBjorn Andersson 	[GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
44264433594bSBjorn Andersson 	[GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
44274433594bSBjorn Andersson 	[GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
44284433594bSBjorn Andersson 	[GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
44294433594bSBjorn Andersson 	[GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
44304433594bSBjorn Andersson 	[GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
44314433594bSBjorn Andersson 	[GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
44324433594bSBjorn Andersson 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
44334433594bSBjorn Andersson 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
44344433594bSBjorn Andersson 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
44354433594bSBjorn Andersson 	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
44364433594bSBjorn Andersson 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
44374433594bSBjorn Andersson 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
44384433594bSBjorn Andersson 	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
44394433594bSBjorn Andersson 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
44404433594bSBjorn Andersson 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
44414433594bSBjorn Andersson 	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
44424433594bSBjorn Andersson 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
44434433594bSBjorn Andersson 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
44444433594bSBjorn Andersson 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
44454433594bSBjorn Andersson 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
44464433594bSBjorn Andersson 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
44474433594bSBjorn Andersson 	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
44484433594bSBjorn Andersson 	[GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
44494433594bSBjorn Andersson 	[GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
44504433594bSBjorn Andersson 	[GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
44514433594bSBjorn Andersson 	[GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
44524433594bSBjorn Andersson 	[GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
44534433594bSBjorn Andersson 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
44544433594bSBjorn Andersson 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
44554433594bSBjorn Andersson 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
44564433594bSBjorn Andersson 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
44574433594bSBjorn Andersson 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
44584433594bSBjorn Andersson 	[GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
44594433594bSBjorn Andersson 	[GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
44604433594bSBjorn Andersson 	[GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
44614433594bSBjorn Andersson 	[GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
44624433594bSBjorn Andersson 	[GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
44634433594bSBjorn Andersson 	[GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
44644433594bSBjorn Andersson 	[GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
44654433594bSBjorn Andersson 	[GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
44664433594bSBjorn Andersson 	[GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
44674433594bSBjorn Andersson 	[GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
44684433594bSBjorn Andersson 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
44694433594bSBjorn Andersson 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
44704433594bSBjorn Andersson 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
44714433594bSBjorn Andersson 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
44724433594bSBjorn Andersson 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
44734433594bSBjorn Andersson 	[GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
44744433594bSBjorn Andersson 	[GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
44754433594bSBjorn Andersson 	[GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
44764433594bSBjorn Andersson 	[GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
44774433594bSBjorn Andersson 	[GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
44784433594bSBjorn Andersson 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
44794433594bSBjorn Andersson 	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
44804433594bSBjorn Andersson 	[GCC_VIDEO_AXIC_CLK] = &gcc_video_axic_clk.clkr,
44814433594bSBjorn Andersson 	[GPLL0] = &gpll0.clkr,
44824433594bSBjorn Andersson 	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
44834433594bSBjorn Andersson 	[GPLL1] = &gpll1.clkr,
44844433594bSBjorn Andersson 	[GPLL4] = &gpll4.clkr,
44854433594bSBjorn Andersson 	[GPLL7] = &gpll7.clkr,
44864433594bSBjorn Andersson };
44874433594bSBjorn Andersson 
44884433594bSBjorn Andersson static const struct qcom_reset_map gcc_sc8180x_resets[] = {
44894433594bSBjorn Andersson 	[GCC_EMAC_BCR] = { 0x6000 },
44904433594bSBjorn Andersson 	[GCC_GPU_BCR] = { 0x71000 },
44914433594bSBjorn Andersson 	[GCC_MMSS_BCR] = { 0xb000 },
44924433594bSBjorn Andersson 	[GCC_NPU_BCR] = { 0x4d000 },
44934433594bSBjorn Andersson 	[GCC_PCIE_0_BCR] = { 0x6b000 },
44944433594bSBjorn Andersson 	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
44954433594bSBjorn Andersson 	[GCC_PCIE_1_BCR] = { 0x8d000 },
44964433594bSBjorn Andersson 	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
44974433594bSBjorn Andersson 	[GCC_PCIE_2_BCR] = { 0x9d000 },
44984433594bSBjorn Andersson 	[GCC_PCIE_2_PHY_BCR] = { 0xa701c },
44994433594bSBjorn Andersson 	[GCC_PCIE_3_BCR] = { 0xa3000 },
45004433594bSBjorn Andersson 	[GCC_PCIE_3_PHY_BCR] = { 0xa801c },
45014433594bSBjorn Andersson 	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
45024433594bSBjorn Andersson 	[GCC_PDM_BCR] = { 0x33000 },
45034433594bSBjorn Andersson 	[GCC_PRNG_BCR] = { 0x34000 },
45044433594bSBjorn Andersson 	[GCC_QSPI_1_BCR] = { 0x4a000 },
45054433594bSBjorn Andersson 	[GCC_QSPI_BCR] = { 0x24008 },
45064433594bSBjorn Andersson 	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
45074433594bSBjorn Andersson 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
45084433594bSBjorn Andersson 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
45094433594bSBjorn Andersson 	[GCC_QUSB2PHY_5_BCR] = { 0x12010 },
45104433594bSBjorn Andersson 	[GCC_QUSB2PHY_MP0_BCR] = { 0x12008 },
45114433594bSBjorn Andersson 	[GCC_QUSB2PHY_MP1_BCR] = { 0x1200c },
45124433594bSBjorn Andersson 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
45134433594bSBjorn Andersson 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
45144433594bSBjorn Andersson 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x50000 },
45154433594bSBjorn Andersson 	[GCC_USB3_PHY_PRIM_SP1_BCR] = { 0x50004 },
45164433594bSBjorn Andersson 	[GCC_USB3_DP_PHY_PRIM_SP0_BCR] = { 0x50010 },
45174433594bSBjorn Andersson 	[GCC_USB3_DP_PHY_PRIM_SP1_BCR] = { 0x50014 },
45184433594bSBjorn Andersson 	[GCC_USB3_PHY_SEC_BCR] = { 0x50018 },
45194433594bSBjorn Andersson 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x5001c },
45204433594bSBjorn Andersson 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50020 },
45214433594bSBjorn Andersson 	[GCC_SDCC2_BCR] = { 0x14000 },
45224433594bSBjorn Andersson 	[GCC_SDCC4_BCR] = { 0x16000 },
45234433594bSBjorn Andersson 	[GCC_TSIF_BCR] = { 0x36000 },
45244433594bSBjorn Andersson 	[GCC_UFS_CARD_2_BCR] = { 0xa2000 },
45254433594bSBjorn Andersson 	[GCC_UFS_CARD_BCR] = { 0x75000 },
45264433594bSBjorn Andersson 	[GCC_UFS_PHY_BCR] = { 0x77000 },
45274433594bSBjorn Andersson 	[GCC_USB30_MP_BCR] = { 0xa6000 },
45284433594bSBjorn Andersson 	[GCC_USB30_PRIM_BCR] = { 0xf000 },
45294433594bSBjorn Andersson 	[GCC_USB30_SEC_BCR] = { 0x10000 },
45304433594bSBjorn Andersson 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
4531*e4036615SKonrad Dybcio 	[GCC_VIDEO_AXIC_CLK_BCR] = { .reg = 0xb02c, .bit = 2, .udelay = 150 },
4532*e4036615SKonrad Dybcio 	[GCC_VIDEO_AXI0_CLK_BCR] = { .reg = 0xb024, .bit = 2, .udelay = 150 },
4533*e4036615SKonrad Dybcio 	[GCC_VIDEO_AXI1_CLK_BCR] = { .reg = 0xb028, .bit = 2, .udelay = 150 },
45344433594bSBjorn Andersson };
45354433594bSBjorn Andersson 
45364433594bSBjorn Andersson static struct gdsc *gcc_sc8180x_gdscs[] = {
45374433594bSBjorn Andersson 	[EMAC_GDSC] = &emac_gdsc,
45384433594bSBjorn Andersson 	[PCIE_0_GDSC] = &pcie_0_gdsc,
45394433594bSBjorn Andersson 	[PCIE_1_GDSC] = &pcie_1_gdsc,
45404433594bSBjorn Andersson 	[PCIE_2_GDSC] = &pcie_2_gdsc,
45414433594bSBjorn Andersson 	[PCIE_3_GDSC] = &pcie_3_gdsc,
45424433594bSBjorn Andersson 	[UFS_CARD_GDSC] = &ufs_card_gdsc,
45434433594bSBjorn Andersson 	[UFS_CARD_2_GDSC] = &ufs_card_2_gdsc,
45444433594bSBjorn Andersson 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
45454433594bSBjorn Andersson 	[USB30_MP_GDSC] = &usb30_mp_gdsc,
45464433594bSBjorn Andersson 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
45474433594bSBjorn Andersson 	[USB30_SEC_GDSC] = &usb30_sec_gdsc,
45484433594bSBjorn Andersson };
45494433594bSBjorn Andersson 
45504433594bSBjorn Andersson static const struct regmap_config gcc_sc8180x_regmap_config = {
45514433594bSBjorn Andersson 	.reg_bits	= 32,
45524433594bSBjorn Andersson 	.reg_stride	= 4,
45534433594bSBjorn Andersson 	.val_bits	= 32,
45544433594bSBjorn Andersson 	.max_register	= 0xc0004,
45554433594bSBjorn Andersson 	.fast_io	= true,
45564433594bSBjorn Andersson };
45574433594bSBjorn Andersson 
45584433594bSBjorn Andersson static const struct qcom_cc_desc gcc_sc8180x_desc = {
45594433594bSBjorn Andersson 	.config = &gcc_sc8180x_regmap_config,
45604433594bSBjorn Andersson 	.clks = gcc_sc8180x_clocks,
45614433594bSBjorn Andersson 	.num_clks = ARRAY_SIZE(gcc_sc8180x_clocks),
45624433594bSBjorn Andersson 	.resets = gcc_sc8180x_resets,
45634433594bSBjorn Andersson 	.num_resets = ARRAY_SIZE(gcc_sc8180x_resets),
45644433594bSBjorn Andersson 	.gdscs = gcc_sc8180x_gdscs,
45654433594bSBjorn Andersson 	.num_gdscs = ARRAY_SIZE(gcc_sc8180x_gdscs),
45664433594bSBjorn Andersson };
45674433594bSBjorn Andersson 
45684433594bSBjorn Andersson static const struct of_device_id gcc_sc8180x_match_table[] = {
45694433594bSBjorn Andersson 	{ .compatible = "qcom,gcc-sc8180x" },
45704433594bSBjorn Andersson 	{ }
45714433594bSBjorn Andersson };
45724433594bSBjorn Andersson MODULE_DEVICE_TABLE(of, gcc_sc8180x_match_table);
45734433594bSBjorn Andersson 
45744433594bSBjorn Andersson static int gcc_sc8180x_probe(struct platform_device *pdev)
45754433594bSBjorn Andersson {
45764433594bSBjorn Andersson 	struct regmap *regmap;
45774433594bSBjorn Andersson 
45784433594bSBjorn Andersson 	regmap = qcom_cc_map(pdev, &gcc_sc8180x_desc);
45794433594bSBjorn Andersson 	if (IS_ERR(regmap))
45804433594bSBjorn Andersson 		return PTR_ERR(regmap);
45814433594bSBjorn Andersson 
45824433594bSBjorn Andersson 	/*
45834433594bSBjorn Andersson 	 * Enable the following always-on clocks:
45844433594bSBjorn Andersson 	 * GCC_VIDEO_AHB_CLK, GCC_CAMERA_AHB_CLK, GCC_DISP_AHB_CLK,
45854433594bSBjorn Andersson 	 * GCC_VIDEO_XO_CLK, GCC_CAMERA_XO_CLK, GCC_DISP_XO_CLK,
45864433594bSBjorn Andersson 	 * GCC_CPUSS_GNOC_CLK, GCC_CPUSS_DVM_BUS_CLK, GCC_NPU_CFG_AHB_CLK and
45874433594bSBjorn Andersson 	 * GCC_GPU_CFG_AHB_CLK
45884433594bSBjorn Andersson 	 */
45894433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb004, BIT(0), BIT(0));
45904433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb008, BIT(0), BIT(0));
45914433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb00c, BIT(0), BIT(0));
45924433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb040, BIT(0), BIT(0));
45934433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb044, BIT(0), BIT(0));
45944433594bSBjorn Andersson 	regmap_update_bits(regmap, 0xb048, BIT(0), BIT(0));
45954433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x48004, BIT(0), BIT(0));
45964433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x48190, BIT(0), BIT(0));
45974433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x4d004, BIT(0), BIT(0));
45984433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
45994433594bSBjorn Andersson 
46004433594bSBjorn Andersson 	/* Disable the GPLL0 active input to NPU and GPU via MISC registers */
46014433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
46024433594bSBjorn Andersson 	regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
46034433594bSBjorn Andersson 
46044433594bSBjorn Andersson 	return qcom_cc_really_probe(pdev, &gcc_sc8180x_desc, regmap);
46054433594bSBjorn Andersson }
46064433594bSBjorn Andersson 
46074433594bSBjorn Andersson static struct platform_driver gcc_sc8180x_driver = {
46084433594bSBjorn Andersson 	.probe		= gcc_sc8180x_probe,
46094433594bSBjorn Andersson 	.driver		= {
46104433594bSBjorn Andersson 		.name	= "gcc-sc8180x",
46114433594bSBjorn Andersson 		.of_match_table = gcc_sc8180x_match_table,
46124433594bSBjorn Andersson 	},
46134433594bSBjorn Andersson };
46144433594bSBjorn Andersson 
46154433594bSBjorn Andersson static int __init gcc_sc8180x_init(void)
46164433594bSBjorn Andersson {
46174433594bSBjorn Andersson 	return platform_driver_register(&gcc_sc8180x_driver);
46184433594bSBjorn Andersson }
46194433594bSBjorn Andersson core_initcall(gcc_sc8180x_init);
46204433594bSBjorn Andersson 
46214433594bSBjorn Andersson static void __exit gcc_sc8180x_exit(void)
46224433594bSBjorn Andersson {
46234433594bSBjorn Andersson 	platform_driver_unregister(&gcc_sc8180x_driver);
46244433594bSBjorn Andersson }
46254433594bSBjorn Andersson module_exit(gcc_sc8180x_exit);
46264433594bSBjorn Andersson 
46274433594bSBjorn Andersson MODULE_DESCRIPTION("QTI GCC SC8180x driver");
46284433594bSBjorn Andersson MODULE_LICENSE("GPL v2");
4629