brintos

brintos / linux-shallow public Read only

0
0
Text · 90.5 KiB · 4c38047 Raw
3542 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.4 */5 6#include <linux/err.h>7#include <linux/kernel.h>8#include <linux/module.h>9#include <linux/of.h>10#include <linux/platform_device.h>11#include <linux/clk-provider.h>12#include <linux/regmap.h>13#include <linux/reset-controller.h>14 15#include <dt-bindings/clock/qcom,gcc-sm6115.h>16 17#include "clk-alpha-pll.h"18#include "clk-branch.h"19#include "clk-pll.h"20#include "clk-rcg.h"21#include "clk-regmap.h"22#include "clk-regmap-divider.h"23#include "common.h"24#include "gdsc.h"25#include "reset.h"26 27enum {28	P_BI_TCXO,29	P_GPLL0_OUT_AUX2,30	P_GPLL0_OUT_EARLY,31	P_GPLL10_OUT_MAIN,32	P_GPLL11_OUT_MAIN,33	P_GPLL3_OUT_EARLY,34	P_GPLL4_OUT_MAIN,35	P_GPLL6_OUT_EARLY,36	P_GPLL6_OUT_MAIN,37	P_GPLL7_OUT_MAIN,38	P_GPLL8_OUT_EARLY,39	P_GPLL8_OUT_MAIN,40	P_GPLL9_OUT_EARLY,41	P_GPLL9_OUT_MAIN,42	P_SLEEP_CLK,43};44 45static const struct pll_vco default_vco[] = {46	{ 500000000, 1000000000, 2 },47};48 49static const struct pll_vco gpll9_vco[] = {50	{ 500000000, 1250000000, 0 },51};52 53static const struct pll_vco gpll10_vco[] = {54	{ 750000000, 1500000000, 1 },55};56 57static struct clk_alpha_pll gpll0 = {58	.offset = 0x0,59	.vco_table = default_vco,60	.num_vco = ARRAY_SIZE(default_vco),61	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],62	.clkr = {63		.enable_reg = 0x79000,64		.enable_mask = BIT(0),65		.hw.init = &(struct clk_init_data){66			.name = "gpll0",67			.parent_data = &(const struct clk_parent_data){68				.fw_name = "bi_tcxo",69			},70			.num_parents = 1,71			.ops = &clk_alpha_pll_ops,72		},73	},74};75 76static const struct clk_div_table post_div_table_gpll0_out_aux2[] = {77	{ 0x1, 2 },78	{ }79};80 81static struct clk_alpha_pll_postdiv gpll0_out_aux2 = {82	.offset = 0x0,83	.post_div_shift = 8,84	.post_div_table = post_div_table_gpll0_out_aux2,85	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_aux2),86	.width = 4,87	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],88	.clkr.hw.init = &(struct clk_init_data){89		.name = "gpll0_out_aux2",90		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },91		.num_parents = 1,92		.ops = &clk_alpha_pll_postdiv_ro_ops,93	},94};95 96static const struct clk_div_table post_div_table_gpll0_out_main[] = {97	{ 0x0, 1 },98	{ }99};100 101static struct clk_alpha_pll_postdiv gpll0_out_main = {102	.offset = 0x0,103	.post_div_shift = 8,104	.post_div_table = post_div_table_gpll0_out_main,105	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_main),106	.width = 4,107	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],108	.clkr.hw.init = &(struct clk_init_data){109		.name = "gpll0_out_main",110		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },111		.num_parents = 1,112		.ops = &clk_alpha_pll_postdiv_ro_ops,113	},114};115 116/* 1152MHz configuration */117static const struct alpha_pll_config gpll10_config = {118	.l = 0x3c,119	.vco_val = 0x1 << 20,120	.vco_mask = GENMASK(21, 20),121	.main_output_mask = BIT(0),122	.config_ctl_val = 0x4001055b,123	.test_ctl_hi1_val = 0x1,124	.test_ctl_hi_mask = 0x1,125};126 127static struct clk_alpha_pll gpll10 = {128	.offset = 0xa000,129	.vco_table = gpll10_vco,130	.num_vco = ARRAY_SIZE(gpll10_vco),131	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],132	.clkr = {133		.enable_reg = 0x79000,134		.enable_mask = BIT(10),135		.hw.init = &(struct clk_init_data){136			.name = "gpll10",137			.parent_data = &(const struct clk_parent_data){138				.fw_name = "bi_tcxo",139			},140			.num_parents = 1,141			.ops = &clk_alpha_pll_ops,142		},143	},144};145 146static const struct clk_div_table post_div_table_gpll10_out_main[] = {147	{ 0x0, 1 },148	{ }149};150 151static struct clk_alpha_pll_postdiv gpll10_out_main = {152	.offset = 0xa000,153	.post_div_shift = 8,154	.post_div_table = post_div_table_gpll10_out_main,155	.num_post_div = ARRAY_SIZE(post_div_table_gpll10_out_main),156	.width = 4,157	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],158	.clkr.hw.init = &(struct clk_init_data){159		.name = "gpll10_out_main",160		.parent_hws = (const struct clk_hw *[]){ &gpll10.clkr.hw },161		.num_parents = 1,162		.flags = CLK_SET_RATE_PARENT,163		.ops = &clk_alpha_pll_postdiv_ops,164	},165};166 167/* 600MHz configuration */168static const struct alpha_pll_config gpll11_config = {169	.l = 0x1F,170	.alpha = 0x0,171	.alpha_hi = 0x40,172	.alpha_en_mask = BIT(24),173	.vco_val = 0x2 << 20,174	.vco_mask = GENMASK(21, 20),175	.config_ctl_val = 0x4001055b,176	.test_ctl_hi1_val = 0x1,177	.test_ctl_hi_mask = 0x1,178};179 180static struct clk_alpha_pll gpll11 = {181	.offset = 0xb000,182	.vco_table = default_vco,183	.num_vco = ARRAY_SIZE(default_vco),184	.flags = SUPPORTS_DYNAMIC_UPDATE,185	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],186	.clkr = {187		.enable_reg = 0x79000,188		.enable_mask = BIT(11),189		.hw.init = &(struct clk_init_data){190			.name = "gpll11",191			.parent_data = &(const struct clk_parent_data){192				.fw_name = "bi_tcxo",193			},194			.num_parents = 1,195			.ops = &clk_alpha_pll_ops,196		},197	},198};199 200static const struct clk_div_table post_div_table_gpll11_out_main[] = {201	{ 0x0, 1 },202	{ }203};204 205static struct clk_alpha_pll_postdiv gpll11_out_main = {206	.offset = 0xb000,207	.post_div_shift = 8,208	.post_div_table = post_div_table_gpll11_out_main,209	.num_post_div = ARRAY_SIZE(post_div_table_gpll11_out_main),210	.width = 4,211	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],212	.clkr.hw.init = &(struct clk_init_data){213		.name = "gpll11_out_main",214		.parent_hws = (const struct clk_hw *[]){ &gpll11.clkr.hw },215		.num_parents = 1,216		.flags = CLK_SET_RATE_PARENT,217		.ops = &clk_alpha_pll_postdiv_ops,218	},219};220 221static struct clk_alpha_pll gpll3 = {222	.offset = 0x3000,223	.vco_table = default_vco,224	.num_vco = ARRAY_SIZE(default_vco),225	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],226	.clkr = {227		.enable_reg = 0x79000,228		.enable_mask = BIT(3),229		.hw.init = &(struct clk_init_data){230			.name = "gpll3",231			.parent_data = &(const struct clk_parent_data){232				.fw_name = "bi_tcxo",233			},234			.num_parents = 1,235			.ops = &clk_alpha_pll_ops,236		},237	},238};239 240static struct clk_alpha_pll gpll4 = {241	.offset = 0x4000,242	.vco_table = default_vco,243	.num_vco = ARRAY_SIZE(default_vco),244	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],245	.clkr = {246		.enable_reg = 0x79000,247		.enable_mask = BIT(4),248		.hw.init = &(struct clk_init_data){249			.name = "gpll4",250			.parent_data = &(const struct clk_parent_data){251				.fw_name = "bi_tcxo",252			},253			.num_parents = 1,254			.ops = &clk_alpha_pll_ops,255		},256	},257};258 259static const struct clk_div_table post_div_table_gpll4_out_main[] = {260	{ 0x0, 1 },261	{ }262};263 264static struct clk_alpha_pll_postdiv gpll4_out_main = {265	.offset = 0x4000,266	.post_div_shift = 8,267	.post_div_table = post_div_table_gpll4_out_main,268	.num_post_div = ARRAY_SIZE(post_div_table_gpll4_out_main),269	.width = 4,270	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],271	.clkr.hw.init = &(struct clk_init_data){272		.name = "gpll4_out_main",273		.parent_hws = (const struct clk_hw *[]){ &gpll4.clkr.hw },274		.num_parents = 1,275		.ops = &clk_alpha_pll_postdiv_ro_ops,276	},277};278 279static struct clk_alpha_pll gpll6 = {280	.offset = 0x6000,281	.vco_table = default_vco,282	.num_vco = ARRAY_SIZE(default_vco),283	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],284	.clkr = {285		.enable_reg = 0x79000,286		.enable_mask = BIT(6),287		.hw.init = &(struct clk_init_data){288			.name = "gpll6",289			.parent_data = &(const struct clk_parent_data){290				.fw_name = "bi_tcxo",291			},292			.num_parents = 1,293			.ops = &clk_alpha_pll_ops,294		},295	},296};297 298static const struct clk_div_table post_div_table_gpll6_out_main[] = {299	{ 0x1, 2 },300	{ }301};302 303static struct clk_alpha_pll_postdiv gpll6_out_main = {304	.offset = 0x6000,305	.post_div_shift = 8,306	.post_div_table = post_div_table_gpll6_out_main,307	.num_post_div = ARRAY_SIZE(post_div_table_gpll6_out_main),308	.width = 4,309	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],310	.clkr.hw.init = &(struct clk_init_data){311		.name = "gpll6_out_main",312		.parent_hws = (const struct clk_hw *[]){ &gpll6.clkr.hw },313		.num_parents = 1,314		.ops = &clk_alpha_pll_postdiv_ro_ops,315	},316};317 318static struct clk_alpha_pll gpll7 = {319	.offset = 0x7000,320	.vco_table = default_vco,321	.num_vco = ARRAY_SIZE(default_vco),322	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],323	.clkr = {324		.enable_reg = 0x79000,325		.enable_mask = BIT(7),326		.hw.init = &(struct clk_init_data){327			.name = "gpll7",328			.parent_data = &(const struct clk_parent_data){329				.fw_name = "bi_tcxo",330			},331			.num_parents = 1,332			.ops = &clk_alpha_pll_ops,333		},334	},335};336 337static const struct clk_div_table post_div_table_gpll7_out_main[] = {338	{ 0x0, 1 },339	{ }340};341 342static struct clk_alpha_pll_postdiv gpll7_out_main = {343	.offset = 0x7000,344	.post_div_shift = 8,345	.post_div_table = post_div_table_gpll7_out_main,346	.num_post_div = ARRAY_SIZE(post_div_table_gpll7_out_main),347	.width = 4,348	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],349	.clkr.hw.init = &(struct clk_init_data){350		.name = "gpll7_out_main",351		.parent_hws = (const struct clk_hw *[]){ &gpll7.clkr.hw },352		.num_parents = 1,353		.ops = &clk_alpha_pll_postdiv_ro_ops,354	},355};356 357/* 800MHz configuration */358static const struct alpha_pll_config gpll8_config = {359	.l = 0x29,360	.alpha = 0xAAAAAAAA,361	.alpha_hi = 0xAA,362	.alpha_en_mask = BIT(24),363	.vco_val = 0x2 << 20,364	.vco_mask = GENMASK(21, 20),365	.main_output_mask = BIT(0),366	.early_output_mask = BIT(3),367	.post_div_val = 0x1 << 8,368	.post_div_mask = GENMASK(11, 8),369	.config_ctl_val = 0x4001055b,370	.test_ctl_hi1_val = 0x1,371	.test_ctl_hi_mask = 0x1,372};373 374static struct clk_alpha_pll gpll8 = {375	.offset = 0x8000,376	.vco_table = default_vco,377	.num_vco = ARRAY_SIZE(default_vco),378	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],379	.flags = SUPPORTS_DYNAMIC_UPDATE,380	.clkr = {381		.enable_reg = 0x79000,382		.enable_mask = BIT(8),383		.hw.init = &(struct clk_init_data){384			.name = "gpll8",385			.parent_data = &(const struct clk_parent_data){386				.fw_name = "bi_tcxo",387			},388			.num_parents = 1,389			.ops = &clk_alpha_pll_ops,390		},391	},392};393 394static const struct clk_div_table post_div_table_gpll8_out_main[] = {395	{ 0x1, 2 },396	{ }397};398 399static struct clk_alpha_pll_postdiv gpll8_out_main = {400	.offset = 0x8000,401	.post_div_shift = 8,402	.post_div_table = post_div_table_gpll8_out_main,403	.num_post_div = ARRAY_SIZE(post_div_table_gpll8_out_main),404	.width = 4,405	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],406	.clkr.hw.init = &(struct clk_init_data){407		.name = "gpll8_out_main",408		.parent_hws = (const struct clk_hw *[]){ &gpll8.clkr.hw },409		.num_parents = 1,410		.flags = CLK_SET_RATE_PARENT,411		.ops = &clk_alpha_pll_postdiv_ro_ops,412	},413};414 415/* 1152MHz configuration */416static const struct alpha_pll_config gpll9_config = {417	.l = 0x3C,418	.alpha = 0x0,419	.post_div_val = 0x1 << 8,420	.post_div_mask = GENMASK(9, 8),421	.main_output_mask = BIT(0),422	.config_ctl_val = 0x00004289,423	.test_ctl_mask = GENMASK(31, 0),424	.test_ctl_val = 0x08000000,425};426 427static struct clk_alpha_pll gpll9 = {428	.offset = 0x9000,429	.vco_table = gpll9_vco,430	.num_vco = ARRAY_SIZE(gpll9_vco),431	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO_EVO],432	.clkr = {433		.enable_reg = 0x79000,434		.enable_mask = BIT(9),435		.hw.init = &(struct clk_init_data){436			.name = "gpll9",437			.parent_data = &(const struct clk_parent_data){438				.fw_name = "bi_tcxo",439			},440			.num_parents = 1,441			.ops = &clk_alpha_pll_ops,442		},443	},444};445 446static const struct clk_div_table post_div_table_gpll9_out_main[] = {447	{ 0x1, 2 },448	{ }449};450 451static struct clk_alpha_pll_postdiv gpll9_out_main = {452	.offset = 0x9000,453	.post_div_shift = 8,454	.post_div_table = post_div_table_gpll9_out_main,455	.num_post_div = ARRAY_SIZE(post_div_table_gpll9_out_main),456	.width = 2,457	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO_EVO],458	.clkr.hw.init = &(struct clk_init_data){459		.name = "gpll9_out_main",460		.parent_hws = (const struct clk_hw *[]){ &gpll9.clkr.hw },461		.num_parents = 1,462		.flags = CLK_SET_RATE_PARENT,463		.ops = &clk_alpha_pll_postdiv_ops,464	},465};466 467static const struct parent_map gcc_parent_map_0[] = {468	{ P_BI_TCXO, 0 },469	{ P_GPLL0_OUT_EARLY, 1 },470	{ P_GPLL0_OUT_AUX2, 2 },471};472 473static const struct clk_parent_data gcc_parents_0[] = {474	{ .fw_name = "bi_tcxo" },475	{ .hw = &gpll0.clkr.hw },476	{ .hw = &gpll0_out_aux2.clkr.hw },477};478 479static const struct parent_map gcc_parent_map_1[] = {480	{ P_BI_TCXO, 0 },481	{ P_GPLL0_OUT_EARLY, 1 },482	{ P_GPLL0_OUT_AUX2, 2 },483	{ P_GPLL6_OUT_MAIN, 4 },484};485 486static const struct clk_parent_data gcc_parents_1[] = {487	{ .fw_name = "bi_tcxo" },488	{ .hw = &gpll0.clkr.hw },489	{ .hw = &gpll0_out_aux2.clkr.hw },490	{ .hw = &gpll6_out_main.clkr.hw },491};492 493static const struct parent_map gcc_parent_map_2[] = {494	{ P_BI_TCXO, 0 },495	{ P_GPLL0_OUT_EARLY, 1 },496	{ P_GPLL0_OUT_AUX2, 2 },497	{ P_SLEEP_CLK, 5 },498};499 500static const struct clk_parent_data gcc_parents_2[] = {501	{ .fw_name = "bi_tcxo" },502	{ .hw = &gpll0.clkr.hw },503	{ .hw = &gpll0_out_aux2.clkr.hw },504	{ .fw_name = "sleep_clk" },505};506 507static const struct parent_map gcc_parent_map_3[] = {508	{ P_BI_TCXO, 0 },509	{ P_GPLL0_OUT_EARLY, 1 },510	{ P_GPLL9_OUT_EARLY, 2 },511	{ P_GPLL10_OUT_MAIN, 3 },512	{ P_GPLL9_OUT_MAIN, 5 },513};514 515static const struct clk_parent_data gcc_parents_3[] = {516	{ .fw_name = "bi_tcxo" },517	{ .hw = &gpll0.clkr.hw },518	{ .hw = &gpll9.clkr.hw },519	{ .hw = &gpll10_out_main.clkr.hw },520	{ .hw = &gpll9_out_main.clkr.hw },521};522 523static const struct parent_map gcc_parent_map_4[] = {524	{ P_BI_TCXO, 0 },525	{ P_GPLL0_OUT_EARLY, 1 },526	{ P_GPLL0_OUT_AUX2, 2 },527	{ P_GPLL4_OUT_MAIN, 5 },528};529 530static const struct clk_parent_data gcc_parents_4[] = {531	{ .fw_name = "bi_tcxo" },532	{ .hw = &gpll0.clkr.hw },533	{ .hw = &gpll0_out_aux2.clkr.hw },534	{ .hw = &gpll4_out_main.clkr.hw },535};536 537static const struct parent_map gcc_parent_map_5[] = {538	{ P_BI_TCXO, 0 },539	{ P_GPLL0_OUT_EARLY, 1 },540	{ P_GPLL8_OUT_EARLY, 2 },541	{ P_GPLL10_OUT_MAIN, 3 },542	{ P_GPLL8_OUT_MAIN, 4 },543	{ P_GPLL9_OUT_MAIN, 5 },544};545 546static const struct clk_parent_data gcc_parents_5[] = {547	{ .fw_name = "bi_tcxo" },548	{ .hw = &gpll0.clkr.hw },549	{ .hw = &gpll8.clkr.hw },550	{ .hw = &gpll10_out_main.clkr.hw },551	{ .hw = &gpll8_out_main.clkr.hw },552	{ .hw = &gpll9_out_main.clkr.hw },553};554 555static const struct parent_map gcc_parent_map_6[] = {556	{ P_BI_TCXO, 0 },557	{ P_GPLL0_OUT_EARLY, 1 },558	{ P_GPLL8_OUT_EARLY, 2 },559	{ P_GPLL10_OUT_MAIN, 3 },560	{ P_GPLL6_OUT_MAIN, 4 },561	{ P_GPLL9_OUT_MAIN, 5 },562	{ P_GPLL3_OUT_EARLY, 6 },563};564 565static const struct clk_parent_data gcc_parents_6[] = {566	{ .fw_name = "bi_tcxo" },567	{ .hw = &gpll0.clkr.hw },568	{ .hw = &gpll8.clkr.hw },569	{ .hw = &gpll10_out_main.clkr.hw },570	{ .hw = &gpll6_out_main.clkr.hw },571	{ .hw = &gpll9_out_main.clkr.hw },572	{ .hw = &gpll3.clkr.hw },573};574 575static const struct parent_map gcc_parent_map_7[] = {576	{ P_BI_TCXO, 0 },577	{ P_GPLL0_OUT_EARLY, 1 },578	{ P_GPLL0_OUT_AUX2, 2 },579	{ P_GPLL10_OUT_MAIN, 3 },580	{ P_GPLL4_OUT_MAIN, 5 },581	{ P_GPLL3_OUT_EARLY, 6 },582};583 584static const struct clk_parent_data gcc_parents_7[] = {585	{ .fw_name = "bi_tcxo" },586	{ .hw = &gpll0.clkr.hw },587	{ .hw = &gpll0_out_aux2.clkr.hw },588	{ .hw = &gpll10_out_main.clkr.hw },589	{ .hw = &gpll4_out_main.clkr.hw },590	{ .hw = &gpll3.clkr.hw },591};592 593static const struct parent_map gcc_parent_map_8[] = {594	{ P_BI_TCXO, 0 },595	{ P_GPLL0_OUT_EARLY, 1 },596	{ P_GPLL8_OUT_EARLY, 2 },597	{ P_GPLL10_OUT_MAIN, 3 },598	{ P_GPLL8_OUT_MAIN, 4 },599	{ P_GPLL9_OUT_MAIN, 5 },600	{ P_GPLL3_OUT_EARLY, 6 },601};602 603static const struct clk_parent_data gcc_parents_8[] = {604	{ .fw_name = "bi_tcxo" },605	{ .hw = &gpll0.clkr.hw },606	{ .hw = &gpll8.clkr.hw },607	{ .hw = &gpll10_out_main.clkr.hw },608	{ .hw = &gpll8_out_main.clkr.hw },609	{ .hw = &gpll9_out_main.clkr.hw },610	{ .hw = &gpll3.clkr.hw },611};612 613static const struct parent_map gcc_parent_map_9[] = {614	{ P_BI_TCXO, 0 },615	{ P_GPLL0_OUT_EARLY, 1 },616	{ P_GPLL0_OUT_AUX2, 2 },617	{ P_GPLL10_OUT_MAIN, 3 },618	{ P_GPLL8_OUT_MAIN, 4 },619	{ P_GPLL9_OUT_MAIN, 5 },620	{ P_GPLL3_OUT_EARLY, 6 },621};622 623static const struct clk_parent_data gcc_parents_9[] = {624	{ .fw_name = "bi_tcxo" },625	{ .hw = &gpll0.clkr.hw },626	{ .hw = &gpll0_out_aux2.clkr.hw },627	{ .hw = &gpll10_out_main.clkr.hw },628	{ .hw = &gpll8_out_main.clkr.hw },629	{ .hw = &gpll9_out_main.clkr.hw },630	{ .hw = &gpll3.clkr.hw },631};632 633static const struct parent_map gcc_parent_map_10[] = {634	{ P_BI_TCXO, 0 },635	{ P_GPLL0_OUT_EARLY, 1 },636	{ P_GPLL8_OUT_EARLY, 2 },637	{ P_GPLL10_OUT_MAIN, 3 },638	{ P_GPLL6_OUT_EARLY, 4 },639	{ P_GPLL9_OUT_MAIN, 5 },640};641 642static const struct clk_parent_data gcc_parents_10[] = {643	{ .fw_name = "bi_tcxo" },644	{ .hw = &gpll0.clkr.hw },645	{ .hw = &gpll8.clkr.hw },646	{ .hw = &gpll10_out_main.clkr.hw },647	{ .hw = &gpll6.clkr.hw },648	{ .hw = &gpll9_out_main.clkr.hw },649};650 651static const struct parent_map gcc_parent_map_11[] = {652	{ P_BI_TCXO, 0 },653	{ P_GPLL0_OUT_EARLY, 1 },654	{ P_GPLL0_OUT_AUX2, 2 },655	{ P_GPLL7_OUT_MAIN, 3 },656	{ P_GPLL4_OUT_MAIN, 5 },657};658 659static const struct clk_parent_data gcc_parents_11[] = {660	{ .fw_name = "bi_tcxo" },661	{ .hw = &gpll0.clkr.hw },662	{ .hw = &gpll0_out_aux2.clkr.hw },663	{ .hw = &gpll7_out_main.clkr.hw },664	{ .hw = &gpll4_out_main.clkr.hw },665};666 667static const struct parent_map gcc_parent_map_12[] = {668	{ P_BI_TCXO, 0 },669	{ P_SLEEP_CLK, 5 },670};671 672static const struct clk_parent_data gcc_parents_12[] = {673	{ .fw_name = "bi_tcxo" },674	{ .fw_name = "sleep_clk" },675};676 677static const struct parent_map gcc_parent_map_13[] = {678	{ P_BI_TCXO, 0 },679	{ P_GPLL11_OUT_MAIN, 1 },680};681 682static const struct clk_parent_data gcc_parents_13[] = {683	{ .fw_name = "bi_tcxo" },684	{ .hw = &gpll11_out_main.clkr.hw },685};686 687static const struct freq_tbl ftbl_gcc_camss_axi_clk_src[] = {688	F(19200000, P_BI_TCXO, 1, 0, 0),689	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),690	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),691	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),692	{ }693};694 695static struct clk_rcg2 gcc_camss_axi_clk_src = {696	.cmd_rcgr = 0x5802c,697	.mnd_width = 0,698	.hid_width = 5,699	.parent_map = gcc_parent_map_7,700	.freq_tbl = ftbl_gcc_camss_axi_clk_src,701	.clkr.hw.init = &(struct clk_init_data){702		.name = "gcc_camss_axi_clk_src",703		.parent_data = gcc_parents_7,704		.num_parents = ARRAY_SIZE(gcc_parents_7),705		.flags = CLK_SET_RATE_PARENT,706		.ops = &clk_rcg2_shared_ops,707	},708};709 710static const struct freq_tbl ftbl_gcc_camss_cci_clk_src[] = {711	F(19200000, P_BI_TCXO, 1, 0, 0),712	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),713	{ }714};715 716static struct clk_rcg2 gcc_camss_cci_clk_src = {717	.cmd_rcgr = 0x56000,718	.mnd_width = 0,719	.hid_width = 5,720	.parent_map = gcc_parent_map_9,721	.freq_tbl = ftbl_gcc_camss_cci_clk_src,722	.clkr.hw.init = &(struct clk_init_data){723		.name = "gcc_camss_cci_clk_src",724		.parent_data = gcc_parents_9,725		.num_parents = ARRAY_SIZE(gcc_parents_9),726		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,727		.ops = &clk_rcg2_shared_ops,728	},729};730 731static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {732	F(19200000, P_BI_TCXO, 1, 0, 0),733	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),734	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),735	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),736	{ }737};738 739static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {740	.cmd_rcgr = 0x59000,741	.mnd_width = 0,742	.hid_width = 5,743	.parent_map = gcc_parent_map_4,744	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,745	.clkr.hw.init = &(struct clk_init_data){746		.name = "gcc_camss_csi0phytimer_clk_src",747		.parent_data = gcc_parents_4,748		.num_parents = ARRAY_SIZE(gcc_parents_4),749		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,750		.ops = &clk_rcg2_shared_ops,751	},752};753 754static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {755	.cmd_rcgr = 0x5901c,756	.mnd_width = 0,757	.hid_width = 5,758	.parent_map = gcc_parent_map_4,759	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,760	.clkr.hw.init = &(struct clk_init_data){761		.name = "gcc_camss_csi1phytimer_clk_src",762		.parent_data = gcc_parents_4,763		.num_parents = ARRAY_SIZE(gcc_parents_4),764		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,765		.ops = &clk_rcg2_shared_ops,766	},767};768 769static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {770	.cmd_rcgr = 0x59038,771	.mnd_width = 0,772	.hid_width = 5,773	.parent_map = gcc_parent_map_4,774	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,775	.clkr.hw.init = &(struct clk_init_data){776		.name = "gcc_camss_csi2phytimer_clk_src",777		.parent_data = gcc_parents_4,778		.num_parents = ARRAY_SIZE(gcc_parents_4),779		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,780		.ops = &clk_rcg2_shared_ops,781	},782};783 784static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {785	F(19200000, P_BI_TCXO, 1, 0, 0),786	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 24),787	F(64000000, P_GPLL9_OUT_MAIN, 1, 1, 9),788	{ }789};790 791static struct clk_rcg2 gcc_camss_mclk0_clk_src = {792	.cmd_rcgr = 0x51000,793	.mnd_width = 8,794	.hid_width = 5,795	.parent_map = gcc_parent_map_3,796	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,797	.clkr.hw.init = &(struct clk_init_data){798		.name = "gcc_camss_mclk0_clk_src",799		.parent_data = gcc_parents_3,800		.num_parents = ARRAY_SIZE(gcc_parents_3),801		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,802		.ops = &clk_rcg2_shared_ops,803	},804};805 806static struct clk_rcg2 gcc_camss_mclk1_clk_src = {807	.cmd_rcgr = 0x5101c,808	.mnd_width = 8,809	.hid_width = 5,810	.parent_map = gcc_parent_map_3,811	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,812	.clkr.hw.init = &(struct clk_init_data){813		.name = "gcc_camss_mclk1_clk_src",814		.parent_data = gcc_parents_3,815		.num_parents = ARRAY_SIZE(gcc_parents_3),816		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,817		.ops = &clk_rcg2_shared_ops,818	},819};820 821static struct clk_rcg2 gcc_camss_mclk2_clk_src = {822	.cmd_rcgr = 0x51038,823	.mnd_width = 8,824	.hid_width = 5,825	.parent_map = gcc_parent_map_3,826	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,827	.clkr.hw.init = &(struct clk_init_data){828		.name = "gcc_camss_mclk2_clk_src",829		.parent_data = gcc_parents_3,830		.num_parents = ARRAY_SIZE(gcc_parents_3),831		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,832		.ops = &clk_rcg2_shared_ops,833	},834};835 836static struct clk_rcg2 gcc_camss_mclk3_clk_src = {837	.cmd_rcgr = 0x51054,838	.mnd_width = 8,839	.hid_width = 5,840	.parent_map = gcc_parent_map_3,841	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,842	.clkr.hw.init = &(struct clk_init_data){843		.name = "gcc_camss_mclk3_clk_src",844		.parent_data = gcc_parents_3,845		.num_parents = ARRAY_SIZE(gcc_parents_3),846		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,847		.ops = &clk_rcg2_shared_ops,848	},849};850 851static const struct freq_tbl ftbl_gcc_camss_ope_ahb_clk_src[] = {852	F(19200000, P_BI_TCXO, 1, 0, 0),853	F(171428571, P_GPLL0_OUT_EARLY, 3.5, 0, 0),854	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),855	{ }856};857 858static struct clk_rcg2 gcc_camss_ope_ahb_clk_src = {859	.cmd_rcgr = 0x55024,860	.mnd_width = 0,861	.hid_width = 5,862	.parent_map = gcc_parent_map_8,863	.freq_tbl = ftbl_gcc_camss_ope_ahb_clk_src,864	.clkr.hw.init = &(struct clk_init_data){865		.name = "gcc_camss_ope_ahb_clk_src",866		.parent_data = gcc_parents_8,867		.num_parents = ARRAY_SIZE(gcc_parents_8),868		.flags = CLK_SET_RATE_PARENT,869		.ops = &clk_rcg2_shared_ops,870	},871};872 873static const struct freq_tbl ftbl_gcc_camss_ope_clk_src[] = {874	F(19200000, P_BI_TCXO, 1, 0, 0),875	F(200000000, P_GPLL8_OUT_MAIN, 2, 0, 0),876	F(266600000, P_GPLL8_OUT_MAIN, 1, 0, 0),877	F(465000000, P_GPLL8_OUT_MAIN, 1, 0, 0),878	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),879	{ }880};881 882static struct clk_rcg2 gcc_camss_ope_clk_src = {883	.cmd_rcgr = 0x55004,884	.mnd_width = 0,885	.hid_width = 5,886	.parent_map = gcc_parent_map_8,887	.freq_tbl = ftbl_gcc_camss_ope_clk_src,888	.clkr.hw.init = &(struct clk_init_data){889		.name = "gcc_camss_ope_clk_src",890		.parent_data = gcc_parents_8,891		.num_parents = ARRAY_SIZE(gcc_parents_8),892		.flags = CLK_SET_RATE_PARENT,893		.ops = &clk_rcg2_shared_ops,894	},895};896 897static const struct freq_tbl ftbl_gcc_camss_tfe_0_clk_src[] = {898	F(19200000, P_BI_TCXO, 1, 0, 0),899	F(128000000, P_GPLL10_OUT_MAIN, 9, 0, 0),900	F(135529412, P_GPLL10_OUT_MAIN, 8.5, 0, 0),901	F(144000000, P_GPLL10_OUT_MAIN, 8, 0, 0),902	F(153600000, P_GPLL10_OUT_MAIN, 7.5, 0, 0),903	F(164571429, P_GPLL10_OUT_MAIN, 7, 0, 0),904	F(177230769, P_GPLL10_OUT_MAIN, 6.5, 0, 0),905	F(192000000, P_GPLL10_OUT_MAIN, 6, 0, 0),906	F(209454545, P_GPLL10_OUT_MAIN, 5.5, 0, 0),907	F(230400000, P_GPLL10_OUT_MAIN, 5, 0, 0),908	F(256000000, P_GPLL10_OUT_MAIN, 4.5, 0, 0),909	F(288000000, P_GPLL10_OUT_MAIN, 4, 0, 0),910	F(329142857, P_GPLL10_OUT_MAIN, 3.5, 0, 0),911	F(384000000, P_GPLL10_OUT_MAIN, 3, 0, 0),912	F(460800000, P_GPLL10_OUT_MAIN, 2.5, 0, 0),913	F(576000000, P_GPLL10_OUT_MAIN, 2, 0, 0),914	{ }915};916 917static struct clk_rcg2 gcc_camss_tfe_0_clk_src = {918	.cmd_rcgr = 0x52004,919	.mnd_width = 8,920	.hid_width = 5,921	.parent_map = gcc_parent_map_5,922	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,923	.clkr.hw.init = &(struct clk_init_data){924		.name = "gcc_camss_tfe_0_clk_src",925		.parent_data = gcc_parents_5,926		.num_parents = ARRAY_SIZE(gcc_parents_5),927		.flags = CLK_SET_RATE_PARENT,928		.ops = &clk_rcg2_shared_ops,929	},930};931 932static const struct freq_tbl ftbl_gcc_camss_tfe_0_csid_clk_src[] = {933	F(19200000, P_BI_TCXO, 1, 0, 0),934	F(120000000, P_GPLL0_OUT_EARLY, 5, 0, 0),935	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),936	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),937	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),938	F(426400000, P_GPLL3_OUT_EARLY, 2.5, 0, 0),939	{ }940};941 942static struct clk_rcg2 gcc_camss_tfe_0_csid_clk_src = {943	.cmd_rcgr = 0x52094,944	.mnd_width = 0,945	.hid_width = 5,946	.parent_map = gcc_parent_map_6,947	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,948	.clkr.hw.init = &(struct clk_init_data){949		.name = "gcc_camss_tfe_0_csid_clk_src",950		.parent_data = gcc_parents_6,951		.num_parents = ARRAY_SIZE(gcc_parents_6),952		.flags = CLK_SET_RATE_PARENT,953		.ops = &clk_rcg2_shared_ops,954	},955};956 957static struct clk_rcg2 gcc_camss_tfe_1_clk_src = {958	.cmd_rcgr = 0x52024,959	.mnd_width = 8,960	.hid_width = 5,961	.parent_map = gcc_parent_map_5,962	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,963	.clkr.hw.init = &(struct clk_init_data){964		.name = "gcc_camss_tfe_1_clk_src",965		.parent_data = gcc_parents_5,966		.num_parents = ARRAY_SIZE(gcc_parents_5),967		.flags = CLK_SET_RATE_PARENT,968		.ops = &clk_rcg2_shared_ops,969	},970};971 972static struct clk_rcg2 gcc_camss_tfe_1_csid_clk_src = {973	.cmd_rcgr = 0x520b4,974	.mnd_width = 0,975	.hid_width = 5,976	.parent_map = gcc_parent_map_6,977	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,978	.clkr.hw.init = &(struct clk_init_data){979		.name = "gcc_camss_tfe_1_csid_clk_src",980		.parent_data = gcc_parents_6,981		.num_parents = ARRAY_SIZE(gcc_parents_6),982		.flags = CLK_SET_RATE_PARENT,983		.ops = &clk_rcg2_shared_ops,984	},985};986 987static struct clk_rcg2 gcc_camss_tfe_2_clk_src = {988	.cmd_rcgr = 0x52044,989	.mnd_width = 8,990	.hid_width = 5,991	.parent_map = gcc_parent_map_5,992	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,993	.clkr.hw.init = &(struct clk_init_data){994		.name = "gcc_camss_tfe_2_clk_src",995		.parent_data = gcc_parents_5,996		.num_parents = ARRAY_SIZE(gcc_parents_5),997		.flags = CLK_SET_RATE_PARENT,998		.ops = &clk_rcg2_shared_ops,999	},1000};1001 1002static struct clk_rcg2 gcc_camss_tfe_2_csid_clk_src = {1003	.cmd_rcgr = 0x520d4,1004	.mnd_width = 0,1005	.hid_width = 5,1006	.parent_map = gcc_parent_map_6,1007	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,1008	.clkr.hw.init = &(struct clk_init_data){1009		.name = "gcc_camss_tfe_2_csid_clk_src",1010		.parent_data = gcc_parents_6,1011		.num_parents = ARRAY_SIZE(gcc_parents_6),1012		.flags = CLK_SET_RATE_PARENT,1013		.ops = &clk_rcg2_shared_ops,1014	},1015};1016 1017static const struct freq_tbl ftbl_gcc_camss_tfe_cphy_rx_clk_src[] = {1018	F(19200000, P_BI_TCXO, 1, 0, 0),1019	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),1020	F(341333333, P_GPLL6_OUT_EARLY, 1, 4, 9),1021	F(384000000, P_GPLL6_OUT_EARLY, 2, 0, 0),1022	{ }1023};1024 1025static struct clk_rcg2 gcc_camss_tfe_cphy_rx_clk_src = {1026	.cmd_rcgr = 0x52064,1027	.mnd_width = 16,1028	.hid_width = 5,1029	.parent_map = gcc_parent_map_10,1030	.freq_tbl = ftbl_gcc_camss_tfe_cphy_rx_clk_src,1031	.clkr.hw.init = &(struct clk_init_data){1032		.name = "gcc_camss_tfe_cphy_rx_clk_src",1033		.parent_data = gcc_parents_10,1034		.num_parents = ARRAY_SIZE(gcc_parents_10),1035		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,1036		.ops = &clk_rcg2_shared_ops,1037	},1038};1039 1040static const struct freq_tbl ftbl_gcc_camss_top_ahb_clk_src[] = {1041	F(19200000, P_BI_TCXO, 1, 0, 0),1042	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),1043	F(80000000, P_GPLL0_OUT_EARLY, 7.5, 0, 0),1044	{ }1045};1046 1047static struct clk_rcg2 gcc_camss_top_ahb_clk_src = {1048	.cmd_rcgr = 0x58010,1049	.mnd_width = 0,1050	.hid_width = 5,1051	.parent_map = gcc_parent_map_7,1052	.freq_tbl = ftbl_gcc_camss_top_ahb_clk_src,1053	.clkr.hw.init = &(struct clk_init_data){1054		.name = "gcc_camss_top_ahb_clk_src",1055		.parent_data = gcc_parents_7,1056		.num_parents = ARRAY_SIZE(gcc_parents_7),1057		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,1058		.ops = &clk_rcg2_shared_ops,1059	},1060};1061 1062static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {1063	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),1064	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1065	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1066	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),1067	{ }1068};1069 1070static struct clk_rcg2 gcc_gp1_clk_src = {1071	.cmd_rcgr = 0x4d004,1072	.mnd_width = 8,1073	.hid_width = 5,1074	.parent_map = gcc_parent_map_2,1075	.freq_tbl = ftbl_gcc_gp1_clk_src,1076	.clkr.hw.init = &(struct clk_init_data){1077		.name = "gcc_gp1_clk_src",1078		.parent_data = gcc_parents_2,1079		.num_parents = ARRAY_SIZE(gcc_parents_2),1080		.ops = &clk_rcg2_ops,1081	},1082};1083 1084static struct clk_rcg2 gcc_gp2_clk_src = {1085	.cmd_rcgr = 0x4e004,1086	.mnd_width = 8,1087	.hid_width = 5,1088	.parent_map = gcc_parent_map_2,1089	.freq_tbl = ftbl_gcc_gp1_clk_src,1090	.clkr.hw.init = &(struct clk_init_data){1091		.name = "gcc_gp2_clk_src",1092		.parent_data = gcc_parents_2,1093		.num_parents = ARRAY_SIZE(gcc_parents_2),1094		.ops = &clk_rcg2_ops,1095	},1096};1097 1098static struct clk_rcg2 gcc_gp3_clk_src = {1099	.cmd_rcgr = 0x4f004,1100	.mnd_width = 8,1101	.hid_width = 5,1102	.parent_map = gcc_parent_map_2,1103	.freq_tbl = ftbl_gcc_gp1_clk_src,1104	.clkr.hw.init = &(struct clk_init_data){1105		.name = "gcc_gp3_clk_src",1106		.parent_data = gcc_parents_2,1107		.num_parents = ARRAY_SIZE(gcc_parents_2),1108		.ops = &clk_rcg2_ops,1109	},1110};1111 1112static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {1113	F(19200000, P_BI_TCXO, 1, 0, 0),1114	F(60000000, P_GPLL0_OUT_AUX2, 5, 0, 0),1115	{ }1116};1117 1118static struct clk_rcg2 gcc_pdm2_clk_src = {1119	.cmd_rcgr = 0x20010,1120	.mnd_width = 0,1121	.hid_width = 5,1122	.parent_map = gcc_parent_map_0,1123	.freq_tbl = ftbl_gcc_pdm2_clk_src,1124	.clkr.hw.init = &(struct clk_init_data){1125		.name = "gcc_pdm2_clk_src",1126		.parent_data = gcc_parents_0,1127		.num_parents = ARRAY_SIZE(gcc_parents_0),1128		.ops = &clk_rcg2_shared_ops,1129	},1130};1131 1132static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {1133	F(7372800, P_GPLL0_OUT_AUX2, 1, 384, 15625),1134	F(14745600, P_GPLL0_OUT_AUX2, 1, 768, 15625),1135	F(19200000, P_BI_TCXO, 1, 0, 0),1136	F(29491200, P_GPLL0_OUT_AUX2, 1, 1536, 15625),1137	F(32000000, P_GPLL0_OUT_AUX2, 1, 8, 75),1138	F(48000000, P_GPLL0_OUT_AUX2, 1, 4, 25),1139	F(64000000, P_GPLL0_OUT_AUX2, 1, 16, 75),1140	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1141	F(80000000, P_GPLL0_OUT_AUX2, 1, 4, 15),1142	F(96000000, P_GPLL0_OUT_AUX2, 1, 8, 25),1143	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1144	F(102400000, P_GPLL0_OUT_AUX2, 1, 128, 375),1145	F(112000000, P_GPLL0_OUT_AUX2, 1, 28, 75),1146	F(117964800, P_GPLL0_OUT_AUX2, 1, 6144, 15625),1147	F(120000000, P_GPLL0_OUT_AUX2, 2.5, 0, 0),1148	F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0),1149	{ }1150};1151 1152static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {1153	.name = "gcc_qupv3_wrap0_s0_clk_src",1154	.parent_data = gcc_parents_1,1155	.num_parents = ARRAY_SIZE(gcc_parents_1),1156	.ops = &clk_rcg2_ops,1157};1158 1159static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {1160	.cmd_rcgr = 0x1f148,1161	.mnd_width = 16,1162	.hid_width = 5,1163	.parent_map = gcc_parent_map_1,1164	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1165	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,1166};1167 1168static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {1169	.name = "gcc_qupv3_wrap0_s1_clk_src",1170	.parent_data = gcc_parents_1,1171	.num_parents = ARRAY_SIZE(gcc_parents_1),1172	.ops = &clk_rcg2_ops,1173};1174 1175static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {1176	.cmd_rcgr = 0x1f278,1177	.mnd_width = 16,1178	.hid_width = 5,1179	.parent_map = gcc_parent_map_1,1180	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1181	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,1182};1183 1184static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {1185	.name = "gcc_qupv3_wrap0_s2_clk_src",1186	.parent_data = gcc_parents_1,1187	.num_parents = ARRAY_SIZE(gcc_parents_1),1188	.ops = &clk_rcg2_ops,1189};1190 1191static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {1192	.cmd_rcgr = 0x1f3a8,1193	.mnd_width = 16,1194	.hid_width = 5,1195	.parent_map = gcc_parent_map_1,1196	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1197	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,1198};1199 1200static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {1201	.name = "gcc_qupv3_wrap0_s3_clk_src",1202	.parent_data = gcc_parents_1,1203	.num_parents = ARRAY_SIZE(gcc_parents_1),1204	.ops = &clk_rcg2_ops,1205};1206 1207static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {1208	.cmd_rcgr = 0x1f4d8,1209	.mnd_width = 16,1210	.hid_width = 5,1211	.parent_map = gcc_parent_map_1,1212	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1213	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,1214};1215 1216static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {1217	.name = "gcc_qupv3_wrap0_s4_clk_src",1218	.parent_data = gcc_parents_1,1219	.num_parents = ARRAY_SIZE(gcc_parents_1),1220	.ops = &clk_rcg2_ops,1221};1222 1223static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {1224	.cmd_rcgr = 0x1f608,1225	.mnd_width = 16,1226	.hid_width = 5,1227	.parent_map = gcc_parent_map_1,1228	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1229	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,1230};1231 1232static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {1233	.name = "gcc_qupv3_wrap0_s5_clk_src",1234	.parent_data = gcc_parents_1,1235	.num_parents = ARRAY_SIZE(gcc_parents_1),1236	.ops = &clk_rcg2_ops,1237};1238 1239static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {1240	.cmd_rcgr = 0x1f738,1241	.mnd_width = 16,1242	.hid_width = 5,1243	.parent_map = gcc_parent_map_1,1244	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1245	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,1246};1247 1248static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {1249	F(144000, P_BI_TCXO, 16, 3, 25),1250	F(400000, P_BI_TCXO, 12, 1, 4),1251	F(20000000, P_GPLL0_OUT_AUX2, 5, 1, 3),1252	F(25000000, P_GPLL0_OUT_AUX2, 6, 1, 2),1253	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1254	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1255	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),1256	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),1257	{ }1258};1259 1260static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {1261	.cmd_rcgr = 0x38028,1262	.mnd_width = 8,1263	.hid_width = 5,1264	.parent_map = gcc_parent_map_1,1265	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,1266	.clkr.hw.init = &(struct clk_init_data){1267		.name = "gcc_sdcc1_apps_clk_src",1268		.parent_data = gcc_parents_1,1269		.num_parents = ARRAY_SIZE(gcc_parents_1),1270		.ops = &clk_rcg2_floor_ops,1271	},1272};1273 1274static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {1275	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1276	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1277	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),1278	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1279	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),1280	{ }1281};1282 1283static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {1284	.cmd_rcgr = 0x38010,1285	.mnd_width = 0,1286	.hid_width = 5,1287	.parent_map = gcc_parent_map_0,1288	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,1289	.clkr.hw.init = &(struct clk_init_data){1290		.name = "gcc_sdcc1_ice_core_clk_src",1291		.parent_data = gcc_parents_0,1292		.num_parents = ARRAY_SIZE(gcc_parents_0),1293		.ops = &clk_rcg2_ops,1294	},1295};1296 1297static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {1298	F(400000, P_BI_TCXO, 12, 1, 4),1299	F(19200000, P_BI_TCXO, 1, 0, 0),1300	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),1301	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1302	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1303	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1304	{ }1305};1306 1307static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {1308	.cmd_rcgr = 0x1e00c,1309	.mnd_width = 8,1310	.hid_width = 5,1311	.parent_map = gcc_parent_map_11,1312	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,1313	.clkr.hw.init = &(struct clk_init_data){1314		.name = "gcc_sdcc2_apps_clk_src",1315		.parent_data = gcc_parents_11,1316		.num_parents = ARRAY_SIZE(gcc_parents_11),1317		.ops = &clk_rcg2_floor_ops,1318		.flags = CLK_OPS_PARENT_ENABLE,1319	},1320};1321 1322static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {1323	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),1324	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1325	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1326	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1327	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),1328	{ }1329};1330 1331static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {1332	.cmd_rcgr = 0x45020,1333	.mnd_width = 8,1334	.hid_width = 5,1335	.parent_map = gcc_parent_map_0,1336	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,1337	.clkr.hw.init = &(struct clk_init_data){1338		.name = "gcc_ufs_phy_axi_clk_src",1339		.parent_data = gcc_parents_0,1340		.num_parents = ARRAY_SIZE(gcc_parents_0),1341		.ops = &clk_rcg2_shared_ops,1342	},1343};1344 1345static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {1346	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),1347	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1348	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),1349	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),1350	{ }1351};1352 1353static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {1354	.cmd_rcgr = 0x45048,1355	.mnd_width = 0,1356	.hid_width = 5,1357	.parent_map = gcc_parent_map_0,1358	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,1359	.clkr.hw.init = &(struct clk_init_data){1360		.name = "gcc_ufs_phy_ice_core_clk_src",1361		.parent_data = gcc_parents_0,1362		.num_parents = ARRAY_SIZE(gcc_parents_0),1363		.ops = &clk_rcg2_shared_ops,1364	},1365};1366 1367static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {1368	F(9600000, P_BI_TCXO, 2, 0, 0),1369	F(19200000, P_BI_TCXO, 1, 0, 0),1370	{ }1371};1372 1373static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {1374	.cmd_rcgr = 0x4507c,1375	.mnd_width = 0,1376	.hid_width = 5,1377	.parent_map = gcc_parent_map_0,1378	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,1379	.clkr.hw.init = &(struct clk_init_data){1380		.name = "gcc_ufs_phy_phy_aux_clk_src",1381		.parent_data = gcc_parents_0,1382		.num_parents = ARRAY_SIZE(gcc_parents_0),1383		.ops = &clk_rcg2_ops,1384	},1385};1386 1387static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {1388	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),1389	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1390	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),1391	{ }1392};1393 1394static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {1395	.cmd_rcgr = 0x45060,1396	.mnd_width = 0,1397	.hid_width = 5,1398	.parent_map = gcc_parent_map_0,1399	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,1400	.clkr.hw.init = &(struct clk_init_data){1401		.name = "gcc_ufs_phy_unipro_core_clk_src",1402		.parent_data = gcc_parents_0,1403		.num_parents = ARRAY_SIZE(gcc_parents_0),1404		.ops = &clk_rcg2_shared_ops,1405	},1406};1407 1408static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {1409	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),1410	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),1411	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1412	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),1413	{ }1414};1415 1416static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1417	.cmd_rcgr = 0x1a01c,1418	.mnd_width = 8,1419	.hid_width = 5,1420	.parent_map = gcc_parent_map_0,1421	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1422	.clkr.hw.init = &(struct clk_init_data){1423		.name = "gcc_usb30_prim_master_clk_src",1424		.parent_data = gcc_parents_0,1425		.num_parents = ARRAY_SIZE(gcc_parents_0),1426		.ops = &clk_rcg2_shared_ops,1427	},1428};1429 1430static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {1431	F(19200000, P_BI_TCXO, 1, 0, 0),1432	{ }1433};1434 1435static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1436	.cmd_rcgr = 0x1a034,1437	.mnd_width = 0,1438	.hid_width = 5,1439	.parent_map = gcc_parent_map_0,1440	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,1441	.clkr.hw.init = &(struct clk_init_data){1442		.name = "gcc_usb30_prim_mock_utmi_clk_src",1443		.parent_data = gcc_parents_0,1444		.num_parents = ARRAY_SIZE(gcc_parents_0),1445		.ops = &clk_rcg2_ops,1446	},1447};1448 1449static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {1450	.reg = 0x1a04c,1451	.shift = 0,1452	.width = 2,1453	.clkr.hw.init = &(struct clk_init_data) {1454		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",1455		.parent_hws = (const struct clk_hw *[]) {1456			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw },1457		.num_parents = 1,1458		.ops = &clk_regmap_div_ro_ops,1459	},1460};1461 1462static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1463	.cmd_rcgr = 0x1a060,1464	.mnd_width = 0,1465	.hid_width = 5,1466	.parent_map = gcc_parent_map_12,1467	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,1468	.clkr.hw.init = &(struct clk_init_data){1469		.name = "gcc_usb3_prim_phy_aux_clk_src",1470		.parent_data = gcc_parents_12,1471		.num_parents = ARRAY_SIZE(gcc_parents_12),1472		.ops = &clk_rcg2_ops,1473	},1474};1475 1476static const struct freq_tbl ftbl_gcc_video_venus_clk_src[] = {1477	F(133333333, P_GPLL11_OUT_MAIN, 4.5, 0, 0),1478	F(240000000, P_GPLL11_OUT_MAIN, 2.5, 0, 0),1479	F(300000000, P_GPLL11_OUT_MAIN, 2, 0, 0),1480	F(384000000, P_GPLL11_OUT_MAIN, 2, 0, 0),1481	{ }1482};1483 1484static struct clk_rcg2 gcc_video_venus_clk_src = {1485	.cmd_rcgr = 0x58060,1486	.mnd_width = 0,1487	.hid_width = 5,1488	.parent_map = gcc_parent_map_13,1489	.freq_tbl = ftbl_gcc_video_venus_clk_src,1490	.clkr.hw.init = &(struct clk_init_data){1491		.name = "gcc_video_venus_clk_src",1492		.parent_data = gcc_parents_13,1493		.num_parents = ARRAY_SIZE(gcc_parents_13),1494		.flags = CLK_SET_RATE_PARENT,1495		.ops = &clk_rcg2_shared_ops,1496	},1497};1498 1499static struct clk_branch gcc_ahb2phy_csi_clk = {1500	.halt_reg = 0x1d004,1501	.halt_check = BRANCH_HALT,1502	.hwcg_reg = 0x1d004,1503	.hwcg_bit = 1,1504	.clkr = {1505		.enable_reg = 0x1d004,1506		.enable_mask = BIT(0),1507		.hw.init = &(struct clk_init_data){1508			.name = "gcc_ahb2phy_csi_clk",1509			.ops = &clk_branch2_ops,1510		},1511	},1512};1513 1514static struct clk_branch gcc_ahb2phy_usb_clk = {1515	.halt_reg = 0x1d008,1516	.halt_check = BRANCH_HALT,1517	.hwcg_reg = 0x1d008,1518	.hwcg_bit = 1,1519	.clkr = {1520		.enable_reg = 0x1d008,1521		.enable_mask = BIT(0),1522		.hw.init = &(struct clk_init_data){1523			.name = "gcc_ahb2phy_usb_clk",1524			.ops = &clk_branch2_ops,1525		},1526	},1527};1528 1529static struct clk_branch gcc_bimc_gpu_axi_clk = {1530	.halt_reg = 0x71154,1531	.halt_check = BRANCH_HALT_DELAY,1532	.hwcg_reg = 0x71154,1533	.hwcg_bit = 1,1534	.clkr = {1535		.enable_reg = 0x71154,1536		.enable_mask = BIT(0),1537		.hw.init = &(struct clk_init_data){1538			.name = "gcc_bimc_gpu_axi_clk",1539			.ops = &clk_branch2_ops,1540		},1541	},1542};1543 1544static struct clk_branch gcc_boot_rom_ahb_clk = {1545	.halt_reg = 0x23004,1546	.halt_check = BRANCH_HALT_VOTED,1547	.hwcg_reg = 0x23004,1548	.hwcg_bit = 1,1549	.clkr = {1550		.enable_reg = 0x79004,1551		.enable_mask = BIT(10),1552		.hw.init = &(struct clk_init_data){1553			.name = "gcc_boot_rom_ahb_clk",1554			.ops = &clk_branch2_ops,1555		},1556	},1557};1558 1559static struct clk_branch gcc_cam_throttle_nrt_clk = {1560	.halt_reg = 0x17070,1561	.halt_check = BRANCH_HALT_VOTED,1562	.hwcg_reg = 0x17070,1563	.hwcg_bit = 1,1564	.clkr = {1565		.enable_reg = 0x79004,1566		.enable_mask = BIT(27),1567		.hw.init = &(struct clk_init_data){1568			.name = "gcc_cam_throttle_nrt_clk",1569			.ops = &clk_branch2_ops,1570		},1571	},1572};1573 1574static struct clk_branch gcc_cam_throttle_rt_clk = {1575	.halt_reg = 0x1706c,1576	.halt_check = BRANCH_HALT_VOTED,1577	.hwcg_reg = 0x1706c,1578	.hwcg_bit = 1,1579	.clkr = {1580		.enable_reg = 0x79004,1581		.enable_mask = BIT(26),1582		.hw.init = &(struct clk_init_data){1583			.name = "gcc_cam_throttle_rt_clk",1584			.ops = &clk_branch2_ops,1585		},1586	},1587};1588 1589static struct clk_branch gcc_camera_ahb_clk = {1590	.halt_reg = 0x17008,1591	.halt_check = BRANCH_HALT_DELAY,1592	.hwcg_reg = 0x17008,1593	.hwcg_bit = 1,1594	.clkr = {1595		.enable_reg = 0x17008,1596		.enable_mask = BIT(0),1597		.hw.init = &(struct clk_init_data){1598			.name = "gcc_camera_ahb_clk",1599			.flags = CLK_IS_CRITICAL,1600			.ops = &clk_branch2_ops,1601		},1602	},1603};1604 1605static struct clk_branch gcc_camera_xo_clk = {1606	.halt_reg = 0x17028,1607	.halt_check = BRANCH_HALT,1608	.clkr = {1609		.enable_reg = 0x17028,1610		.enable_mask = BIT(0),1611		.hw.init = &(struct clk_init_data){1612			.name = "gcc_camera_xo_clk",1613			.flags = CLK_IS_CRITICAL,1614			.ops = &clk_branch2_ops,1615		},1616	},1617};1618 1619static struct clk_branch gcc_camss_axi_clk = {1620	.halt_reg = 0x58044,1621	.halt_check = BRANCH_HALT,1622	.clkr = {1623		.enable_reg = 0x58044,1624		.enable_mask = BIT(0),1625		.hw.init = &(struct clk_init_data){1626			.name = "gcc_camss_axi_clk",1627			.parent_hws = (const struct clk_hw *[]){1628				&gcc_camss_axi_clk_src.clkr.hw,1629			},1630			.num_parents = 1,1631			.flags = CLK_SET_RATE_PARENT,1632			.ops = &clk_branch2_ops,1633		},1634	},1635};1636 1637static struct clk_branch gcc_camss_camnoc_atb_clk = {1638	.halt_reg = 0x5804c,1639	.halt_check = BRANCH_HALT_DELAY,1640	.hwcg_reg = 0x5804c,1641	.hwcg_bit = 1,1642	.clkr = {1643		.enable_reg = 0x5804c,1644		.enable_mask = BIT(0),1645		.hw.init = &(struct clk_init_data){1646			.name = "gcc_camss_camnoc_atb_clk",1647			.ops = &clk_branch2_ops,1648		},1649	},1650};1651 1652static struct clk_branch gcc_camss_camnoc_nts_xo_clk = {1653	.halt_reg = 0x58050,1654	.halt_check = BRANCH_HALT_DELAY,1655	.hwcg_reg = 0x58050,1656	.hwcg_bit = 1,1657	.clkr = {1658		.enable_reg = 0x58050,1659		.enable_mask = BIT(0),1660		.hw.init = &(struct clk_init_data){1661			.name = "gcc_camss_camnoc_nts_xo_clk",1662			.ops = &clk_branch2_ops,1663		},1664	},1665};1666 1667static struct clk_branch gcc_camss_cci_0_clk = {1668	.halt_reg = 0x56018,1669	.halt_check = BRANCH_HALT,1670	.clkr = {1671		.enable_reg = 0x56018,1672		.enable_mask = BIT(0),1673		.hw.init = &(struct clk_init_data){1674			.name = "gcc_camss_cci_0_clk",1675			.parent_hws = (const struct clk_hw *[]){1676				&gcc_camss_cci_clk_src.clkr.hw,1677			},1678			.num_parents = 1,1679			.flags = CLK_SET_RATE_PARENT,1680			.ops = &clk_branch2_ops,1681		},1682	},1683};1684 1685static struct clk_branch gcc_camss_cphy_0_clk = {1686	.halt_reg = 0x52088,1687	.halt_check = BRANCH_HALT,1688	.clkr = {1689		.enable_reg = 0x52088,1690		.enable_mask = BIT(0),1691		.hw.init = &(struct clk_init_data){1692			.name = "gcc_camss_cphy_0_clk",1693			.parent_hws = (const struct clk_hw *[]){1694				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,1695			},1696			.num_parents = 1,1697			.flags = CLK_SET_RATE_PARENT,1698			.ops = &clk_branch2_ops,1699		},1700	},1701};1702 1703static struct clk_branch gcc_camss_cphy_1_clk = {1704	.halt_reg = 0x5208c,1705	.halt_check = BRANCH_HALT,1706	.clkr = {1707		.enable_reg = 0x5208c,1708		.enable_mask = BIT(0),1709		.hw.init = &(struct clk_init_data){1710			.name = "gcc_camss_cphy_1_clk",1711			.parent_hws = (const struct clk_hw *[]){1712				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,1713			},1714			.num_parents = 1,1715			.flags = CLK_SET_RATE_PARENT,1716			.ops = &clk_branch2_ops,1717		},1718	},1719};1720 1721static struct clk_branch gcc_camss_cphy_2_clk = {1722	.halt_reg = 0x52090,1723	.halt_check = BRANCH_HALT,1724	.clkr = {1725		.enable_reg = 0x52090,1726		.enable_mask = BIT(0),1727		.hw.init = &(struct clk_init_data){1728			.name = "gcc_camss_cphy_2_clk",1729			.parent_hws = (const struct clk_hw *[]){1730				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,1731			},1732			.num_parents = 1,1733			.flags = CLK_SET_RATE_PARENT,1734			.ops = &clk_branch2_ops,1735		},1736	},1737};1738 1739static struct clk_branch gcc_camss_csi0phytimer_clk = {1740	.halt_reg = 0x59018,1741	.halt_check = BRANCH_HALT,1742	.clkr = {1743		.enable_reg = 0x59018,1744		.enable_mask = BIT(0),1745		.hw.init = &(struct clk_init_data){1746			.name = "gcc_camss_csi0phytimer_clk",1747			.parent_hws = (const struct clk_hw *[]){1748				&gcc_camss_csi0phytimer_clk_src.clkr.hw,1749			},1750			.num_parents = 1,1751			.flags = CLK_SET_RATE_PARENT,1752			.ops = &clk_branch2_ops,1753		},1754	},1755};1756 1757static struct clk_branch gcc_camss_csi1phytimer_clk = {1758	.halt_reg = 0x59034,1759	.halt_check = BRANCH_HALT,1760	.clkr = {1761		.enable_reg = 0x59034,1762		.enable_mask = BIT(0),1763		.hw.init = &(struct clk_init_data){1764			.name = "gcc_camss_csi1phytimer_clk",1765			.parent_hws = (const struct clk_hw *[]){1766				&gcc_camss_csi1phytimer_clk_src.clkr.hw,1767			},1768			.num_parents = 1,1769			.flags = CLK_SET_RATE_PARENT,1770			.ops = &clk_branch2_ops,1771		},1772	},1773};1774 1775static struct clk_branch gcc_camss_csi2phytimer_clk = {1776	.halt_reg = 0x59050,1777	.halt_check = BRANCH_HALT,1778	.clkr = {1779		.enable_reg = 0x59050,1780		.enable_mask = BIT(0),1781		.hw.init = &(struct clk_init_data){1782			.name = "gcc_camss_csi2phytimer_clk",1783			.parent_hws = (const struct clk_hw *[]){1784				&gcc_camss_csi2phytimer_clk_src.clkr.hw,1785			},1786			.num_parents = 1,1787			.flags = CLK_SET_RATE_PARENT,1788			.ops = &clk_branch2_ops,1789		},1790	},1791};1792 1793static struct clk_branch gcc_camss_mclk0_clk = {1794	.halt_reg = 0x51018,1795	.halt_check = BRANCH_HALT,1796	.clkr = {1797		.enable_reg = 0x51018,1798		.enable_mask = BIT(0),1799		.hw.init = &(struct clk_init_data){1800			.name = "gcc_camss_mclk0_clk",1801			.parent_hws = (const struct clk_hw *[]){1802				&gcc_camss_mclk0_clk_src.clkr.hw,1803			},1804			.num_parents = 1,1805			.flags = CLK_SET_RATE_PARENT,1806			.ops = &clk_branch2_ops,1807		},1808	},1809};1810 1811static struct clk_branch gcc_camss_mclk1_clk = {1812	.halt_reg = 0x51034,1813	.halt_check = BRANCH_HALT,1814	.clkr = {1815		.enable_reg = 0x51034,1816		.enable_mask = BIT(0),1817		.hw.init = &(struct clk_init_data){1818			.name = "gcc_camss_mclk1_clk",1819			.parent_hws = (const struct clk_hw *[]){1820				&gcc_camss_mclk1_clk_src.clkr.hw,1821			},1822			.num_parents = 1,1823			.flags = CLK_SET_RATE_PARENT,1824			.ops = &clk_branch2_ops,1825		},1826	},1827};1828 1829static struct clk_branch gcc_camss_mclk2_clk = {1830	.halt_reg = 0x51050,1831	.halt_check = BRANCH_HALT,1832	.clkr = {1833		.enable_reg = 0x51050,1834		.enable_mask = BIT(0),1835		.hw.init = &(struct clk_init_data){1836			.name = "gcc_camss_mclk2_clk",1837			.parent_hws = (const struct clk_hw *[]){1838				&gcc_camss_mclk2_clk_src.clkr.hw,1839			},1840			.num_parents = 1,1841			.flags = CLK_SET_RATE_PARENT,1842			.ops = &clk_branch2_ops,1843		},1844	},1845};1846 1847static struct clk_branch gcc_camss_mclk3_clk = {1848	.halt_reg = 0x5106c,1849	.halt_check = BRANCH_HALT,1850	.clkr = {1851		.enable_reg = 0x5106c,1852		.enable_mask = BIT(0),1853		.hw.init = &(struct clk_init_data){1854			.name = "gcc_camss_mclk3_clk",1855			.parent_hws = (const struct clk_hw *[]){1856				&gcc_camss_mclk3_clk_src.clkr.hw,1857			},1858			.num_parents = 1,1859			.flags = CLK_SET_RATE_PARENT,1860			.ops = &clk_branch2_ops,1861		},1862	},1863};1864 1865static struct clk_branch gcc_camss_nrt_axi_clk = {1866	.halt_reg = 0x58054,1867	.halt_check = BRANCH_HALT,1868	.clkr = {1869		.enable_reg = 0x58054,1870		.enable_mask = BIT(0),1871		.hw.init = &(struct clk_init_data){1872			.name = "gcc_camss_nrt_axi_clk",1873			.ops = &clk_branch2_ops,1874		},1875	},1876};1877 1878static struct clk_branch gcc_camss_ope_ahb_clk = {1879	.halt_reg = 0x5503c,1880	.halt_check = BRANCH_HALT,1881	.clkr = {1882		.enable_reg = 0x5503c,1883		.enable_mask = BIT(0),1884		.hw.init = &(struct clk_init_data){1885			.name = "gcc_camss_ope_ahb_clk",1886			.parent_hws = (const struct clk_hw *[]){1887				&gcc_camss_ope_ahb_clk_src.clkr.hw,1888			},1889			.num_parents = 1,1890			.flags = CLK_SET_RATE_PARENT,1891			.ops = &clk_branch2_ops,1892		},1893	},1894};1895 1896static struct clk_branch gcc_camss_ope_clk = {1897	.halt_reg = 0x5501c,1898	.halt_check = BRANCH_HALT,1899	.clkr = {1900		.enable_reg = 0x5501c,1901		.enable_mask = BIT(0),1902		.hw.init = &(struct clk_init_data){1903			.name = "gcc_camss_ope_clk",1904			.parent_hws = (const struct clk_hw *[]){1905				&gcc_camss_ope_clk_src.clkr.hw,1906			},1907			.num_parents = 1,1908			.flags = CLK_SET_RATE_PARENT,1909			.ops = &clk_branch2_ops,1910		},1911	},1912};1913 1914static struct clk_branch gcc_camss_rt_axi_clk = {1915	.halt_reg = 0x5805c,1916	.halt_check = BRANCH_HALT,1917	.clkr = {1918		.enable_reg = 0x5805c,1919		.enable_mask = BIT(0),1920		.hw.init = &(struct clk_init_data){1921			.name = "gcc_camss_rt_axi_clk",1922			.ops = &clk_branch2_ops,1923		},1924	},1925};1926 1927static struct clk_branch gcc_camss_tfe_0_clk = {1928	.halt_reg = 0x5201c,1929	.halt_check = BRANCH_HALT,1930	.clkr = {1931		.enable_reg = 0x5201c,1932		.enable_mask = BIT(0),1933		.hw.init = &(struct clk_init_data){1934			.name = "gcc_camss_tfe_0_clk",1935			.parent_hws = (const struct clk_hw *[]){1936				&gcc_camss_tfe_0_clk_src.clkr.hw,1937			},1938			.num_parents = 1,1939			.flags = CLK_SET_RATE_PARENT,1940			.ops = &clk_branch2_ops,1941		},1942	},1943};1944 1945static struct clk_branch gcc_camss_tfe_0_cphy_rx_clk = {1946	.halt_reg = 0x5207c,1947	.halt_check = BRANCH_HALT,1948	.clkr = {1949		.enable_reg = 0x5207c,1950		.enable_mask = BIT(0),1951		.hw.init = &(struct clk_init_data){1952			.name = "gcc_camss_tfe_0_cphy_rx_clk",1953			.parent_hws = (const struct clk_hw *[]){1954				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,1955			},1956			.num_parents = 1,1957			.flags = CLK_SET_RATE_PARENT,1958			.ops = &clk_branch2_ops,1959		},1960	},1961};1962 1963static struct clk_branch gcc_camss_tfe_0_csid_clk = {1964	.halt_reg = 0x520ac,1965	.halt_check = BRANCH_HALT,1966	.clkr = {1967		.enable_reg = 0x520ac,1968		.enable_mask = BIT(0),1969		.hw.init = &(struct clk_init_data){1970			.name = "gcc_camss_tfe_0_csid_clk",1971			.parent_hws = (const struct clk_hw *[]){1972				&gcc_camss_tfe_0_csid_clk_src.clkr.hw,1973			},1974			.num_parents = 1,1975			.flags = CLK_SET_RATE_PARENT,1976			.ops = &clk_branch2_ops,1977		},1978	},1979};1980 1981static struct clk_branch gcc_camss_tfe_1_clk = {1982	.halt_reg = 0x5203c,1983	.halt_check = BRANCH_HALT,1984	.clkr = {1985		.enable_reg = 0x5203c,1986		.enable_mask = BIT(0),1987		.hw.init = &(struct clk_init_data){1988			.name = "gcc_camss_tfe_1_clk",1989			.parent_hws = (const struct clk_hw *[]){1990				&gcc_camss_tfe_1_clk_src.clkr.hw,1991			},1992			.num_parents = 1,1993			.flags = CLK_SET_RATE_PARENT,1994			.ops = &clk_branch2_ops,1995		},1996	},1997};1998 1999static struct clk_branch gcc_camss_tfe_1_cphy_rx_clk = {2000	.halt_reg = 0x52080,2001	.halt_check = BRANCH_HALT,2002	.clkr = {2003		.enable_reg = 0x52080,2004		.enable_mask = BIT(0),2005		.hw.init = &(struct clk_init_data){2006			.name = "gcc_camss_tfe_1_cphy_rx_clk",2007			.parent_hws = (const struct clk_hw *[]){2008				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,2009			},2010			.num_parents = 1,2011			.flags = CLK_SET_RATE_PARENT,2012			.ops = &clk_branch2_ops,2013		},2014	},2015};2016 2017static struct clk_branch gcc_camss_tfe_1_csid_clk = {2018	.halt_reg = 0x520cc,2019	.halt_check = BRANCH_HALT,2020	.clkr = {2021		.enable_reg = 0x520cc,2022		.enable_mask = BIT(0),2023		.hw.init = &(struct clk_init_data){2024			.name = "gcc_camss_tfe_1_csid_clk",2025			.parent_hws = (const struct clk_hw *[]){2026				&gcc_camss_tfe_1_csid_clk_src.clkr.hw,2027			},2028			.num_parents = 1,2029			.flags = CLK_SET_RATE_PARENT,2030			.ops = &clk_branch2_ops,2031		},2032	},2033};2034 2035static struct clk_branch gcc_camss_tfe_2_clk = {2036	.halt_reg = 0x5205c,2037	.halt_check = BRANCH_HALT,2038	.clkr = {2039		.enable_reg = 0x5205c,2040		.enable_mask = BIT(0),2041		.hw.init = &(struct clk_init_data){2042			.name = "gcc_camss_tfe_2_clk",2043			.parent_hws = (const struct clk_hw *[]){2044				&gcc_camss_tfe_2_clk_src.clkr.hw,2045			},2046			.num_parents = 1,2047			.flags = CLK_SET_RATE_PARENT,2048			.ops = &clk_branch2_ops,2049		},2050	},2051};2052 2053static struct clk_branch gcc_camss_tfe_2_cphy_rx_clk = {2054	.halt_reg = 0x52084,2055	.halt_check = BRANCH_HALT,2056	.clkr = {2057		.enable_reg = 0x52084,2058		.enable_mask = BIT(0),2059		.hw.init = &(struct clk_init_data){2060			.name = "gcc_camss_tfe_2_cphy_rx_clk",2061			.parent_hws = (const struct clk_hw *[]){2062				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,2063			},2064			.num_parents = 1,2065			.flags = CLK_SET_RATE_PARENT,2066			.ops = &clk_branch2_ops,2067		},2068	},2069};2070 2071static struct clk_branch gcc_camss_tfe_2_csid_clk = {2072	.halt_reg = 0x520ec,2073	.halt_check = BRANCH_HALT,2074	.clkr = {2075		.enable_reg = 0x520ec,2076		.enable_mask = BIT(0),2077		.hw.init = &(struct clk_init_data){2078			.name = "gcc_camss_tfe_2_csid_clk",2079			.parent_hws = (const struct clk_hw *[]){2080				&gcc_camss_tfe_2_csid_clk_src.clkr.hw,2081			},2082			.num_parents = 1,2083			.flags = CLK_SET_RATE_PARENT,2084			.ops = &clk_branch2_ops,2085		},2086	},2087};2088 2089static struct clk_branch gcc_camss_top_ahb_clk = {2090	.halt_reg = 0x58028,2091	.halt_check = BRANCH_HALT,2092	.clkr = {2093		.enable_reg = 0x58028,2094		.enable_mask = BIT(0),2095		.hw.init = &(struct clk_init_data){2096			.name = "gcc_camss_top_ahb_clk",2097			.parent_hws = (const struct clk_hw *[]){2098				&gcc_camss_top_ahb_clk_src.clkr.hw,2099			},2100			.num_parents = 1,2101			.flags = CLK_SET_RATE_PARENT,2102			.ops = &clk_branch2_ops,2103		},2104	},2105};2106 2107static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {2108	.halt_reg = 0x1a084,2109	.halt_check = BRANCH_HALT,2110	.hwcg_reg = 0x1a084,2111	.hwcg_bit = 1,2112	.clkr = {2113		.enable_reg = 0x1a084,2114		.enable_mask = BIT(0),2115		.hw.init = &(struct clk_init_data){2116			.name = "gcc_cfg_noc_usb3_prim_axi_clk",2117			.parent_hws = (const struct clk_hw *[]){2118				&gcc_usb30_prim_master_clk_src.clkr.hw,2119			},2120			.num_parents = 1,2121			.flags = CLK_SET_RATE_PARENT,2122			.ops = &clk_branch2_ops,2123		},2124	},2125};2126 2127static struct clk_branch gcc_cpuss_gnoc_clk = {2128	.halt_reg = 0x2b004,2129	.halt_check = BRANCH_HALT_VOTED,2130	.hwcg_reg = 0x2b004,2131	.hwcg_bit = 1,2132	.clkr = {2133		.enable_reg = 0x79004,2134		.enable_mask = BIT(22),2135		.hw.init = &(struct clk_init_data){2136			.name = "gcc_cpuss_gnoc_clk",2137			.flags = CLK_IS_CRITICAL,2138			.ops = &clk_branch2_ops,2139		},2140	},2141};2142 2143static struct clk_branch gcc_disp_ahb_clk = {2144	.halt_reg = 0x1700c,2145	.halt_check = BRANCH_HALT,2146	.hwcg_reg = 0x1700c,2147	.hwcg_bit = 1,2148	.clkr = {2149		.enable_reg = 0x1700c,2150		.enable_mask = BIT(0),2151		.hw.init = &(struct clk_init_data){2152			.name = "gcc_disp_ahb_clk",2153			.flags = CLK_IS_CRITICAL,2154			.ops = &clk_branch2_ops,2155		},2156	},2157};2158 2159static struct clk_regmap_div gcc_disp_gpll0_clk_src = {2160	.reg = 0x17058,2161	.shift = 0,2162	.width = 2,2163	.clkr.hw.init = &(struct clk_init_data) {2164		.name = "gcc_disp_gpll0_clk_src",2165		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },2166		.num_parents = 1,2167		.ops = &clk_regmap_div_ops,2168	},2169};2170 2171static struct clk_branch gcc_disp_gpll0_div_clk_src = {2172	.halt_check = BRANCH_HALT_DELAY,2173	.clkr = {2174		.enable_reg = 0x79004,2175		.enable_mask = BIT(20),2176		.hw.init = &(struct clk_init_data){2177			.name = "gcc_disp_gpll0_div_clk_src",2178			.parent_hws = (const struct clk_hw *[]){2179				&gcc_disp_gpll0_clk_src.clkr.hw,2180			},2181			.num_parents = 1,2182			.flags = CLK_SET_RATE_PARENT,2183			.ops = &clk_branch2_ops,2184		},2185	},2186};2187 2188static struct clk_branch gcc_disp_hf_axi_clk = {2189	.halt_reg = 0x17020,2190	.halt_check = BRANCH_HALT,2191	.hwcg_reg = 0x17020,2192	.hwcg_bit = 1,2193	.clkr = {2194		.enable_reg = 0x17020,2195		.enable_mask = BIT(0),2196		.hw.init = &(struct clk_init_data){2197			.name = "gcc_disp_hf_axi_clk",2198			.ops = &clk_branch2_ops,2199		},2200	},2201};2202 2203static struct clk_branch gcc_disp_throttle_core_clk = {2204	.halt_reg = 0x17064,2205	.halt_check = BRANCH_HALT_VOTED,2206	.hwcg_reg = 0x17064,2207	.hwcg_bit = 1,2208	.clkr = {2209		.enable_reg = 0x7900c,2210		.enable_mask = BIT(5),2211		.hw.init = &(struct clk_init_data){2212			.name = "gcc_disp_throttle_core_clk",2213			.ops = &clk_branch2_ops,2214		},2215	},2216};2217 2218static struct clk_branch gcc_disp_xo_clk = {2219	.halt_reg = 0x1702c,2220	.halt_check = BRANCH_HALT,2221	.clkr = {2222		.enable_reg = 0x1702c,2223		.enable_mask = BIT(0),2224		.hw.init = &(struct clk_init_data){2225			.name = "gcc_disp_xo_clk",2226			.flags = CLK_IS_CRITICAL,2227			.ops = &clk_branch2_ops,2228		},2229	},2230};2231 2232static struct clk_branch gcc_gp1_clk = {2233	.halt_reg = 0x4d000,2234	.halt_check = BRANCH_HALT,2235	.clkr = {2236		.enable_reg = 0x4d000,2237		.enable_mask = BIT(0),2238		.hw.init = &(struct clk_init_data){2239			.name = "gcc_gp1_clk",2240			.parent_hws = (const struct clk_hw *[]){2241				&gcc_gp1_clk_src.clkr.hw,2242			},2243			.num_parents = 1,2244			.flags = CLK_SET_RATE_PARENT,2245			.ops = &clk_branch2_ops,2246		},2247	},2248};2249 2250static struct clk_branch gcc_gp2_clk = {2251	.halt_reg = 0x4e000,2252	.halt_check = BRANCH_HALT,2253	.clkr = {2254		.enable_reg = 0x4e000,2255		.enable_mask = BIT(0),2256		.hw.init = &(struct clk_init_data){2257			.name = "gcc_gp2_clk",2258			.parent_hws = (const struct clk_hw *[]){2259				&gcc_gp2_clk_src.clkr.hw,2260			},2261			.num_parents = 1,2262			.flags = CLK_SET_RATE_PARENT,2263			.ops = &clk_branch2_ops,2264		},2265	},2266};2267 2268static struct clk_branch gcc_gp3_clk = {2269	.halt_reg = 0x4f000,2270	.halt_check = BRANCH_HALT,2271	.clkr = {2272		.enable_reg = 0x4f000,2273		.enable_mask = BIT(0),2274		.hw.init = &(struct clk_init_data){2275			.name = "gcc_gp3_clk",2276			.parent_hws = (const struct clk_hw *[]){2277				&gcc_gp3_clk_src.clkr.hw,2278			},2279			.num_parents = 1,2280			.flags = CLK_SET_RATE_PARENT,2281			.ops = &clk_branch2_ops,2282		},2283	},2284};2285 2286static struct clk_branch gcc_gpu_cfg_ahb_clk = {2287	.halt_reg = 0x36004,2288	.halt_check = BRANCH_HALT,2289	.hwcg_reg = 0x36004,2290	.hwcg_bit = 1,2291	.clkr = {2292		.enable_reg = 0x36004,2293		.enable_mask = BIT(0),2294		.hw.init = &(struct clk_init_data){2295			.name = "gcc_gpu_cfg_ahb_clk",2296			.flags = CLK_IS_CRITICAL,2297			.ops = &clk_branch2_ops,2298		},2299	},2300};2301 2302static struct clk_branch gcc_gpu_gpll0_clk_src = {2303	.halt_check = BRANCH_HALT_DELAY,2304	.clkr = {2305		.enable_reg = 0x79004,2306		.enable_mask = BIT(15),2307		.hw.init = &(struct clk_init_data){2308			.name = "gcc_gpu_gpll0_clk_src",2309			.parent_hws = (const struct clk_hw *[]){2310				&gpll0.clkr.hw,2311			},2312			.num_parents = 1,2313			.flags = CLK_SET_RATE_PARENT,2314			.ops = &clk_branch2_ops,2315		},2316	},2317};2318 2319static struct clk_branch gcc_gpu_gpll0_div_clk_src = {2320	.halt_check = BRANCH_HALT_DELAY,2321	.clkr = {2322		.enable_reg = 0x79004,2323		.enable_mask = BIT(16),2324		.hw.init = &(struct clk_init_data){2325			.name = "gcc_gpu_gpll0_div_clk_src",2326			.parent_hws = (const struct clk_hw *[]){2327				&gpll0_out_aux2.clkr.hw,2328			},2329			.num_parents = 1,2330			.flags = CLK_SET_RATE_PARENT,2331			.ops = &clk_branch2_ops,2332		},2333	},2334};2335 2336static struct clk_branch gcc_gpu_iref_clk = {2337	.halt_reg = 0x36100,2338	.halt_check = BRANCH_HALT_DELAY,2339	.clkr = {2340		.enable_reg = 0x36100,2341		.enable_mask = BIT(0),2342		.hw.init = &(struct clk_init_data){2343			.name = "gcc_gpu_iref_clk",2344			.ops = &clk_branch2_ops,2345		},2346	},2347};2348 2349static struct clk_branch gcc_gpu_memnoc_gfx_clk = {2350	.halt_reg = 0x3600c,2351	.halt_check = BRANCH_VOTED,2352	.hwcg_reg = 0x3600c,2353	.hwcg_bit = 1,2354	.clkr = {2355		.enable_reg = 0x3600c,2356		.enable_mask = BIT(0),2357		.hw.init = &(struct clk_init_data){2358			.name = "gcc_gpu_memnoc_gfx_clk",2359			.ops = &clk_branch2_ops,2360		},2361	},2362};2363 2364static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {2365	.halt_reg = 0x36018,2366	.halt_check = BRANCH_HALT,2367	.clkr = {2368		.enable_reg = 0x36018,2369		.enable_mask = BIT(0),2370		.hw.init = &(struct clk_init_data){2371			.name = "gcc_gpu_snoc_dvm_gfx_clk",2372			.ops = &clk_branch2_ops,2373		},2374	},2375};2376 2377static struct clk_branch gcc_gpu_throttle_core_clk = {2378	.halt_reg = 0x36048,2379	.halt_check = BRANCH_HALT_VOTED,2380	.hwcg_reg = 0x36048,2381	.hwcg_bit = 1,2382	.clkr = {2383		.enable_reg = 0x79004,2384		.enable_mask = BIT(31),2385		.hw.init = &(struct clk_init_data){2386			.name = "gcc_gpu_throttle_core_clk",2387			.ops = &clk_branch2_ops,2388		},2389	},2390};2391 2392static struct clk_branch gcc_pdm2_clk = {2393	.halt_reg = 0x2000c,2394	.halt_check = BRANCH_HALT,2395	.clkr = {2396		.enable_reg = 0x2000c,2397		.enable_mask = BIT(0),2398		.hw.init = &(struct clk_init_data){2399			.name = "gcc_pdm2_clk",2400			.parent_hws = (const struct clk_hw *[]){2401				&gcc_pdm2_clk_src.clkr.hw,2402			},2403			.num_parents = 1,2404			.flags = CLK_SET_RATE_PARENT,2405			.ops = &clk_branch2_ops,2406		},2407	},2408};2409 2410static struct clk_branch gcc_pdm_ahb_clk = {2411	.halt_reg = 0x20004,2412	.halt_check = BRANCH_HALT,2413	.hwcg_reg = 0x20004,2414	.hwcg_bit = 1,2415	.clkr = {2416		.enable_reg = 0x20004,2417		.enable_mask = BIT(0),2418		.hw.init = &(struct clk_init_data){2419			.name = "gcc_pdm_ahb_clk",2420			.ops = &clk_branch2_ops,2421		},2422	},2423};2424 2425static struct clk_branch gcc_pdm_xo4_clk = {2426	.halt_reg = 0x20008,2427	.halt_check = BRANCH_HALT,2428	.clkr = {2429		.enable_reg = 0x20008,2430		.enable_mask = BIT(0),2431		.hw.init = &(struct clk_init_data){2432			.name = "gcc_pdm_xo4_clk",2433			.ops = &clk_branch2_ops,2434		},2435	},2436};2437 2438static struct clk_branch gcc_prng_ahb_clk = {2439	.halt_reg = 0x21004,2440	.halt_check = BRANCH_HALT_VOTED,2441	.hwcg_reg = 0x21004,2442	.hwcg_bit = 1,2443	.clkr = {2444		.enable_reg = 0x79004,2445		.enable_mask = BIT(13),2446		.hw.init = &(struct clk_init_data){2447			.name = "gcc_prng_ahb_clk",2448			.ops = &clk_branch2_ops,2449		},2450	},2451};2452 2453static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {2454	.halt_reg = 0x17014,2455	.halt_check = BRANCH_HALT_VOTED,2456	.hwcg_reg = 0x17014,2457	.hwcg_bit = 1,2458	.clkr = {2459		.enable_reg = 0x7900c,2460		.enable_mask = BIT(0),2461		.hw.init = &(struct clk_init_data){2462			.name = "gcc_qmip_camera_nrt_ahb_clk",2463			.ops = &clk_branch2_ops,2464		},2465	},2466};2467 2468static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {2469	.halt_reg = 0x17060,2470	.halt_check = BRANCH_HALT_VOTED,2471	.hwcg_reg = 0x17060,2472	.hwcg_bit = 1,2473	.clkr = {2474		.enable_reg = 0x7900c,2475		.enable_mask = BIT(2),2476		.hw.init = &(struct clk_init_data){2477			.name = "gcc_qmip_camera_rt_ahb_clk",2478			.ops = &clk_branch2_ops,2479		},2480	},2481};2482 2483static struct clk_branch gcc_qmip_disp_ahb_clk = {2484	.halt_reg = 0x17018,2485	.halt_check = BRANCH_HALT_VOTED,2486	.hwcg_reg = 0x17018,2487	.hwcg_bit = 1,2488	.clkr = {2489		.enable_reg = 0x7900c,2490		.enable_mask = BIT(1),2491		.hw.init = &(struct clk_init_data){2492			.name = "gcc_qmip_disp_ahb_clk",2493			.ops = &clk_branch2_ops,2494		},2495	},2496};2497 2498static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {2499	.halt_reg = 0x36040,2500	.halt_check = BRANCH_HALT_VOTED,2501	.hwcg_reg = 0x36040,2502	.hwcg_bit = 1,2503	.clkr = {2504		.enable_reg = 0x7900c,2505		.enable_mask = BIT(4),2506		.hw.init = &(struct clk_init_data){2507			.name = "gcc_qmip_gpu_cfg_ahb_clk",2508			.ops = &clk_branch2_ops,2509		},2510	},2511};2512 2513static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {2514	.halt_reg = 0x17010,2515	.halt_check = BRANCH_HALT_VOTED,2516	.hwcg_reg = 0x17010,2517	.hwcg_bit = 1,2518	.clkr = {2519		.enable_reg = 0x79004,2520		.enable_mask = BIT(25),2521		.hw.init = &(struct clk_init_data){2522			.name = "gcc_qmip_video_vcodec_ahb_clk",2523			.ops = &clk_branch2_ops,2524		},2525	},2526};2527 2528static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {2529	.halt_reg = 0x1f014,2530	.halt_check = BRANCH_HALT_VOTED,2531	.clkr = {2532		.enable_reg = 0x7900c,2533		.enable_mask = BIT(9),2534		.hw.init = &(struct clk_init_data){2535			.name = "gcc_qupv3_wrap0_core_2x_clk",2536			.ops = &clk_branch2_ops,2537		},2538	},2539};2540 2541static struct clk_branch gcc_qupv3_wrap0_core_clk = {2542	.halt_reg = 0x1f00c,2543	.halt_check = BRANCH_HALT_VOTED,2544	.clkr = {2545		.enable_reg = 0x7900c,2546		.enable_mask = BIT(8),2547		.hw.init = &(struct clk_init_data){2548			.name = "gcc_qupv3_wrap0_core_clk",2549			.ops = &clk_branch2_ops,2550		},2551	},2552};2553 2554static struct clk_branch gcc_qupv3_wrap0_s0_clk = {2555	.halt_reg = 0x1f144,2556	.halt_check = BRANCH_HALT_VOTED,2557	.clkr = {2558		.enable_reg = 0x7900c,2559		.enable_mask = BIT(10),2560		.hw.init = &(struct clk_init_data){2561			.name = "gcc_qupv3_wrap0_s0_clk",2562			.parent_hws = (const struct clk_hw *[]){2563				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,2564			},2565			.num_parents = 1,2566			.flags = CLK_SET_RATE_PARENT,2567			.ops = &clk_branch2_ops,2568		},2569	},2570};2571 2572static struct clk_branch gcc_qupv3_wrap0_s1_clk = {2573	.halt_reg = 0x1f274,2574	.halt_check = BRANCH_HALT_VOTED,2575	.clkr = {2576		.enable_reg = 0x7900c,2577		.enable_mask = BIT(11),2578		.hw.init = &(struct clk_init_data){2579			.name = "gcc_qupv3_wrap0_s1_clk",2580			.parent_hws = (const struct clk_hw *[]){2581				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,2582			},2583			.num_parents = 1,2584			.flags = CLK_SET_RATE_PARENT,2585			.ops = &clk_branch2_ops,2586		},2587	},2588};2589 2590static struct clk_branch gcc_qupv3_wrap0_s2_clk = {2591	.halt_reg = 0x1f3a4,2592	.halt_check = BRANCH_HALT_VOTED,2593	.clkr = {2594		.enable_reg = 0x7900c,2595		.enable_mask = BIT(12),2596		.hw.init = &(struct clk_init_data){2597			.name = "gcc_qupv3_wrap0_s2_clk",2598			.parent_hws = (const struct clk_hw *[]){2599				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,2600			},2601			.num_parents = 1,2602			.flags = CLK_SET_RATE_PARENT,2603			.ops = &clk_branch2_ops,2604		},2605	},2606};2607 2608static struct clk_branch gcc_qupv3_wrap0_s3_clk = {2609	.halt_reg = 0x1f4d4,2610	.halt_check = BRANCH_HALT_VOTED,2611	.clkr = {2612		.enable_reg = 0x7900c,2613		.enable_mask = BIT(13),2614		.hw.init = &(struct clk_init_data){2615			.name = "gcc_qupv3_wrap0_s3_clk",2616			.parent_hws = (const struct clk_hw *[]){2617				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,2618			},2619			.num_parents = 1,2620			.flags = CLK_SET_RATE_PARENT,2621			.ops = &clk_branch2_ops,2622		},2623	},2624};2625 2626static struct clk_branch gcc_qupv3_wrap0_s4_clk = {2627	.halt_reg = 0x1f604,2628	.halt_check = BRANCH_HALT_VOTED,2629	.clkr = {2630		.enable_reg = 0x7900c,2631		.enable_mask = BIT(14),2632		.hw.init = &(struct clk_init_data){2633			.name = "gcc_qupv3_wrap0_s4_clk",2634			.parent_hws = (const struct clk_hw *[]){2635				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,2636			},2637			.num_parents = 1,2638			.flags = CLK_SET_RATE_PARENT,2639			.ops = &clk_branch2_ops,2640		},2641	},2642};2643 2644static struct clk_branch gcc_qupv3_wrap0_s5_clk = {2645	.halt_reg = 0x1f734,2646	.halt_check = BRANCH_HALT_VOTED,2647	.clkr = {2648		.enable_reg = 0x7900c,2649		.enable_mask = BIT(15),2650		.hw.init = &(struct clk_init_data){2651			.name = "gcc_qupv3_wrap0_s5_clk",2652			.parent_hws = (const struct clk_hw *[]){2653				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,2654			},2655			.num_parents = 1,2656			.flags = CLK_SET_RATE_PARENT,2657			.ops = &clk_branch2_ops,2658		},2659	},2660};2661 2662static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {2663	.halt_reg = 0x1f004,2664	.halt_check = BRANCH_HALT_VOTED,2665	.hwcg_reg = 0x1f004,2666	.hwcg_bit = 1,2667	.clkr = {2668		.enable_reg = 0x7900c,2669		.enable_mask = BIT(6),2670		.hw.init = &(struct clk_init_data){2671			.name = "gcc_qupv3_wrap_0_m_ahb_clk",2672			.ops = &clk_branch2_ops,2673		},2674	},2675};2676 2677static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {2678	.halt_reg = 0x1f008,2679	.halt_check = BRANCH_HALT_VOTED,2680	.hwcg_reg = 0x1f008,2681	.hwcg_bit = 1,2682	.clkr = {2683		.enable_reg = 0x7900c,2684		.enable_mask = BIT(7),2685		.hw.init = &(struct clk_init_data){2686			.name = "gcc_qupv3_wrap_0_s_ahb_clk",2687			.ops = &clk_branch2_ops,2688		},2689	},2690};2691 2692static struct clk_branch gcc_sdcc1_ahb_clk = {2693	.halt_reg = 0x38008,2694	.halt_check = BRANCH_HALT,2695	.clkr = {2696		.enable_reg = 0x38008,2697		.enable_mask = BIT(0),2698		.hw.init = &(struct clk_init_data){2699			.name = "gcc_sdcc1_ahb_clk",2700			.ops = &clk_branch2_ops,2701		},2702	},2703};2704 2705static struct clk_branch gcc_sdcc1_apps_clk = {2706	.halt_reg = 0x38004,2707	.halt_check = BRANCH_HALT,2708	.clkr = {2709		.enable_reg = 0x38004,2710		.enable_mask = BIT(0),2711		.hw.init = &(struct clk_init_data){2712			.name = "gcc_sdcc1_apps_clk",2713			.parent_hws = (const struct clk_hw *[]){2714				&gcc_sdcc1_apps_clk_src.clkr.hw,2715			},2716			.num_parents = 1,2717			.flags = CLK_SET_RATE_PARENT /* | CLK_ENABLE_HAND_OFF */,2718			.ops = &clk_branch2_ops,2719		},2720	},2721};2722 2723static struct clk_branch gcc_sdcc1_ice_core_clk = {2724	.halt_reg = 0x3800c,2725	.halt_check = BRANCH_HALT,2726	.hwcg_reg = 0x3800c,2727	.hwcg_bit = 1,2728	.clkr = {2729		.enable_reg = 0x3800c,2730		.enable_mask = BIT(0),2731		.hw.init = &(struct clk_init_data){2732			.name = "gcc_sdcc1_ice_core_clk",2733			.parent_hws = (const struct clk_hw *[]){2734				&gcc_sdcc1_ice_core_clk_src.clkr.hw,2735			},2736			.num_parents = 1,2737			.flags = CLK_SET_RATE_PARENT,2738			.ops = &clk_branch2_ops,2739		},2740	},2741};2742 2743static struct clk_branch gcc_sdcc2_ahb_clk = {2744	.halt_reg = 0x1e008,2745	.halt_check = BRANCH_HALT,2746	.clkr = {2747		.enable_reg = 0x1e008,2748		.enable_mask = BIT(0),2749		.hw.init = &(struct clk_init_data){2750			.name = "gcc_sdcc2_ahb_clk",2751			.ops = &clk_branch2_ops,2752		},2753	},2754};2755 2756static struct clk_branch gcc_sdcc2_apps_clk = {2757	.halt_reg = 0x1e004,2758	.halt_check = BRANCH_HALT,2759	.clkr = {2760		.enable_reg = 0x1e004,2761		.enable_mask = BIT(0),2762		.hw.init = &(struct clk_init_data){2763			.name = "gcc_sdcc2_apps_clk",2764			.parent_hws = (const struct clk_hw *[]){2765				&gcc_sdcc2_apps_clk_src.clkr.hw,2766			},2767			.num_parents = 1,2768			.flags = CLK_SET_RATE_PARENT,2769			.ops = &clk_branch2_ops,2770		},2771	},2772};2773 2774static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {2775	.halt_reg = 0x2b06c,2776	.halt_check = BRANCH_HALT_VOTED,2777	.hwcg_reg = 0x2b06c,2778	.hwcg_bit = 1,2779	.clkr = {2780		.enable_reg = 0x79004,2781		.enable_mask = BIT(0),2782		.hw.init = &(struct clk_init_data){2783			.name = "gcc_sys_noc_cpuss_ahb_clk",2784			.flags = CLK_IS_CRITICAL,2785			.ops = &clk_branch2_ops,2786		},2787	},2788};2789 2790static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {2791	.halt_reg = 0x45098,2792	.halt_check = BRANCH_HALT,2793	.clkr = {2794		.enable_reg = 0x45098,2795		.enable_mask = BIT(0),2796		.hw.init = &(struct clk_init_data){2797			.name = "gcc_sys_noc_ufs_phy_axi_clk",2798			.parent_hws = (const struct clk_hw *[]){2799				&gcc_ufs_phy_axi_clk_src.clkr.hw,2800			},2801			.num_parents = 1,2802			.flags = CLK_SET_RATE_PARENT,2803			.ops = &clk_branch2_ops,2804		},2805	},2806};2807 2808static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {2809	.halt_reg = 0x1a080,2810	.halt_check = BRANCH_HALT,2811	.hwcg_reg = 0x1a080,2812	.hwcg_bit = 1,2813	.clkr = {2814		.enable_reg = 0x1a080,2815		.enable_mask = BIT(0),2816		.hw.init = &(struct clk_init_data){2817			.name = "gcc_sys_noc_usb3_prim_axi_clk",2818			.parent_hws = (const struct clk_hw *[]){2819				&gcc_usb30_prim_master_clk_src.clkr.hw,2820			},2821			.num_parents = 1,2822			.flags = CLK_SET_RATE_PARENT,2823			.ops = &clk_branch2_ops,2824		},2825	},2826};2827 2828static struct clk_branch gcc_ufs_clkref_clk = {2829	.halt_reg = 0x8c000,2830	.halt_check = BRANCH_HALT,2831	.clkr = {2832		.enable_reg = 0x8c000,2833		.enable_mask = BIT(0),2834		.hw.init = &(struct clk_init_data){2835			.name = "gcc_ufs_clkref_clk",2836			.ops = &clk_branch2_ops,2837		},2838	},2839};2840 2841static struct clk_branch gcc_ufs_phy_ahb_clk = {2842	.halt_reg = 0x45014,2843	.halt_check = BRANCH_HALT,2844	.hwcg_reg = 0x45014,2845	.hwcg_bit = 1,2846	.clkr = {2847		.enable_reg = 0x45014,2848		.enable_mask = BIT(0),2849		.hw.init = &(struct clk_init_data){2850			.name = "gcc_ufs_phy_ahb_clk",2851			.ops = &clk_branch2_ops,2852		},2853	},2854};2855 2856static struct clk_branch gcc_ufs_phy_axi_clk = {2857	.halt_reg = 0x45010,2858	.halt_check = BRANCH_HALT,2859	.hwcg_reg = 0x45010,2860	.hwcg_bit = 1,2861	.clkr = {2862		.enable_reg = 0x45010,2863		.enable_mask = BIT(0),2864		.hw.init = &(struct clk_init_data){2865			.name = "gcc_ufs_phy_axi_clk",2866			.parent_hws = (const struct clk_hw *[]){2867				&gcc_ufs_phy_axi_clk_src.clkr.hw,2868			},2869			.num_parents = 1,2870			.flags = CLK_SET_RATE_PARENT,2871			.ops = &clk_branch2_ops,2872		},2873	},2874};2875 2876static struct clk_branch gcc_ufs_phy_ice_core_clk = {2877	.halt_reg = 0x45044,2878	.halt_check = BRANCH_HALT,2879	.hwcg_reg = 0x45044,2880	.hwcg_bit = 1,2881	.clkr = {2882		.enable_reg = 0x45044,2883		.enable_mask = BIT(0),2884		.hw.init = &(struct clk_init_data){2885			.name = "gcc_ufs_phy_ice_core_clk",2886			.parent_hws = (const struct clk_hw *[]){2887				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,2888			},2889			.num_parents = 1,2890			.flags = CLK_SET_RATE_PARENT,2891			.ops = &clk_branch2_ops,2892		},2893	},2894};2895 2896static struct clk_branch gcc_ufs_phy_phy_aux_clk = {2897	.halt_reg = 0x45078,2898	.halt_check = BRANCH_HALT,2899	.hwcg_reg = 0x45078,2900	.hwcg_bit = 1,2901	.clkr = {2902		.enable_reg = 0x45078,2903		.enable_mask = BIT(0),2904		.hw.init = &(struct clk_init_data){2905			.name = "gcc_ufs_phy_phy_aux_clk",2906			.parent_hws = (const struct clk_hw *[]){2907				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,2908			},2909			.num_parents = 1,2910			.flags = CLK_SET_RATE_PARENT,2911			.ops = &clk_branch2_ops,2912		},2913	},2914};2915 2916static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {2917	.halt_reg = 0x4501c,2918	.halt_check = BRANCH_HALT_SKIP,2919	.clkr = {2920		.enable_reg = 0x4501c,2921		.enable_mask = BIT(0),2922		.hw.init = &(struct clk_init_data){2923			.name = "gcc_ufs_phy_rx_symbol_0_clk",2924			.ops = &clk_branch2_ops,2925		},2926	},2927};2928 2929static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {2930	.halt_reg = 0x45018,2931	.halt_check = BRANCH_HALT_SKIP,2932	.clkr = {2933		.enable_reg = 0x45018,2934		.enable_mask = BIT(0),2935		.hw.init = &(struct clk_init_data){2936			.name = "gcc_ufs_phy_tx_symbol_0_clk",2937			.ops = &clk_branch2_ops,2938		},2939	},2940};2941 2942static struct clk_branch gcc_ufs_phy_unipro_core_clk = {2943	.halt_reg = 0x45040,2944	.halt_check = BRANCH_HALT,2945	.hwcg_reg = 0x45040,2946	.hwcg_bit = 1,2947	.clkr = {2948		.enable_reg = 0x45040,2949		.enable_mask = BIT(0),2950		.hw.init = &(struct clk_init_data){2951			.name = "gcc_ufs_phy_unipro_core_clk",2952			.parent_hws = (const struct clk_hw *[]){2953				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,2954			},2955			.num_parents = 1,2956			.flags = CLK_SET_RATE_PARENT,2957			.ops = &clk_branch2_ops,2958		},2959	},2960};2961 2962static struct clk_branch gcc_usb30_prim_master_clk = {2963	.halt_reg = 0x1a010,2964	.halt_check = BRANCH_HALT,2965	.clkr = {2966		.enable_reg = 0x1a010,2967		.enable_mask = BIT(0),2968		.hw.init = &(struct clk_init_data){2969			.name = "gcc_usb30_prim_master_clk",2970			.parent_hws = (const struct clk_hw *[]){2971				&gcc_usb30_prim_master_clk_src.clkr.hw,2972			},2973			.num_parents = 1,2974			.flags = CLK_SET_RATE_PARENT,2975			.ops = &clk_branch2_ops,2976		},2977	},2978};2979 2980static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {2981	.halt_reg = 0x1a018,2982	.halt_check = BRANCH_HALT,2983	.clkr = {2984		.enable_reg = 0x1a018,2985		.enable_mask = BIT(0),2986		.hw.init = &(struct clk_init_data){2987			.name = "gcc_usb30_prim_mock_utmi_clk",2988			.parent_hws = (const struct clk_hw *[]){2989				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,2990			},2991			.num_parents = 1,2992			.flags = CLK_SET_RATE_PARENT,2993			.ops = &clk_branch2_ops,2994		},2995	},2996};2997 2998static struct clk_branch gcc_usb30_prim_sleep_clk = {2999	.halt_reg = 0x1a014,3000	.halt_check = BRANCH_HALT,3001	.clkr = {3002		.enable_reg = 0x1a014,3003		.enable_mask = BIT(0),3004		.hw.init = &(struct clk_init_data){3005			.name = "gcc_usb30_prim_sleep_clk",3006			.ops = &clk_branch2_ops,3007		},3008	},3009};3010 3011static struct clk_branch gcc_usb3_prim_clkref_clk = {3012	.halt_reg = 0x9f000,3013	.halt_check = BRANCH_HALT,3014	.clkr = {3015		.enable_reg = 0x9f000,3016		.enable_mask = BIT(0),3017		.hw.init = &(struct clk_init_data){3018			.name = "gcc_usb3_prim_clkref_clk",3019			.ops = &clk_branch2_ops,3020		},3021	},3022};3023 3024static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {3025	.halt_reg = 0x1a054,3026	.halt_check = BRANCH_HALT,3027	.clkr = {3028		.enable_reg = 0x1a054,3029		.enable_mask = BIT(0),3030		.hw.init = &(struct clk_init_data){3031			.name = "gcc_usb3_prim_phy_com_aux_clk",3032			.parent_hws = (const struct clk_hw *[]){3033				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3034			},3035			.num_parents = 1,3036			.flags = CLK_SET_RATE_PARENT,3037			.ops = &clk_branch2_ops,3038		},3039	},3040};3041 3042static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {3043	.halt_reg = 0x1a058,3044	.halt_check = BRANCH_HALT_SKIP,3045	.hwcg_reg = 0x1a058,3046	.hwcg_bit = 1,3047	.clkr = {3048		.enable_reg = 0x1a058,3049		.enable_mask = BIT(0),3050		.hw.init = &(struct clk_init_data){3051			.name = "gcc_usb3_prim_phy_pipe_clk",3052			.ops = &clk_branch2_ops,3053		},3054	},3055};3056 3057static struct clk_branch gcc_vcodec0_axi_clk = {3058	.halt_reg = 0x6e008,3059	.halt_check = BRANCH_HALT,3060	.clkr = {3061		.enable_reg = 0x6e008,3062		.enable_mask = BIT(0),3063		.hw.init = &(struct clk_init_data){3064			.name = "gcc_vcodec0_axi_clk",3065			.ops = &clk_branch2_ops,3066		},3067	},3068};3069 3070static struct clk_branch gcc_venus_ahb_clk = {3071	.halt_reg = 0x6e010,3072	.halt_check = BRANCH_HALT,3073	.clkr = {3074		.enable_reg = 0x6e010,3075		.enable_mask = BIT(0),3076		.hw.init = &(struct clk_init_data){3077			.name = "gcc_venus_ahb_clk",3078			.ops = &clk_branch2_ops,3079		},3080	},3081};3082 3083static struct clk_branch gcc_venus_ctl_axi_clk = {3084	.halt_reg = 0x6e004,3085	.halt_check = BRANCH_HALT,3086	.clkr = {3087		.enable_reg = 0x6e004,3088		.enable_mask = BIT(0),3089		.hw.init = &(struct clk_init_data){3090			.name = "gcc_venus_ctl_axi_clk",3091			.ops = &clk_branch2_ops,3092		},3093	},3094};3095 3096static struct clk_branch gcc_video_ahb_clk = {3097	.halt_reg = 0x17004,3098	.halt_check = BRANCH_HALT,3099	.hwcg_reg = 0x17004,3100	.hwcg_bit = 1,3101	.clkr = {3102		.enable_reg = 0x17004,3103		.enable_mask = BIT(0),3104		.hw.init = &(struct clk_init_data){3105			.name = "gcc_video_ahb_clk",3106			.ops = &clk_branch2_ops,3107		},3108	},3109};3110 3111static struct clk_branch gcc_video_axi0_clk = {3112	.halt_reg = 0x1701c,3113	.halt_check = BRANCH_HALT,3114	.hwcg_reg = 0x1701c,3115	.hwcg_bit = 1,3116	.clkr = {3117		.enable_reg = 0x1701c,3118		.enable_mask = BIT(0),3119		.hw.init = &(struct clk_init_data){3120			.name = "gcc_video_axi0_clk",3121			.ops = &clk_branch2_ops,3122		},3123	},3124};3125 3126static struct clk_branch gcc_video_throttle_core_clk = {3127	.halt_reg = 0x17068,3128	.halt_check = BRANCH_HALT_VOTED,3129	.hwcg_reg = 0x17068,3130	.hwcg_bit = 1,3131	.clkr = {3132		.enable_reg = 0x79004,3133		.enable_mask = BIT(28),3134		.hw.init = &(struct clk_init_data){3135			.name = "gcc_video_throttle_core_clk",3136			.ops = &clk_branch2_ops,3137		},3138	},3139};3140 3141static struct clk_branch gcc_video_vcodec0_sys_clk = {3142	.halt_reg = 0x580a4,3143	.halt_check = BRANCH_HALT_DELAY,3144	.hwcg_reg = 0x580a4,3145	.hwcg_bit = 1,3146	.clkr = {3147		.enable_reg = 0x580a4,3148		.enable_mask = BIT(0),3149		.hw.init = &(struct clk_init_data){3150			.name = "gcc_video_vcodec0_sys_clk",3151			.parent_hws = (const struct clk_hw *[]){3152				&gcc_video_venus_clk_src.clkr.hw,3153			},3154			.num_parents = 1,3155			.flags = CLK_SET_RATE_PARENT,3156			.ops = &clk_branch2_ops,3157		},3158	},3159};3160 3161static struct clk_branch gcc_video_venus_ctl_clk = {3162	.halt_reg = 0x5808c,3163	.halt_check = BRANCH_HALT,3164	.clkr = {3165		.enable_reg = 0x5808c,3166		.enable_mask = BIT(0),3167		.hw.init = &(struct clk_init_data){3168			.name = "gcc_video_venus_ctl_clk",3169			.parent_hws = (const struct clk_hw *[]){3170				&gcc_video_venus_clk_src.clkr.hw,3171			},3172			.num_parents = 1,3173			.flags = CLK_SET_RATE_PARENT,3174			.ops = &clk_branch2_ops,3175		},3176	},3177};3178 3179static struct clk_branch gcc_video_xo_clk = {3180	.halt_reg = 0x17024,3181	.halt_check = BRANCH_HALT,3182	.clkr = {3183		.enable_reg = 0x17024,3184		.enable_mask = BIT(0),3185		.hw.init = &(struct clk_init_data){3186			.name = "gcc_video_xo_clk",3187			.ops = &clk_branch2_ops,3188		},3189	},3190};3191 3192static struct gdsc gcc_camss_top_gdsc = {3193	.gdscr = 0x58004,3194	.pd = {3195		.name = "gcc_camss_top",3196	},3197	.pwrsts = PWRSTS_OFF_ON,3198};3199 3200static struct gdsc gcc_ufs_phy_gdsc = {3201	.gdscr = 0x45004,3202	.pd = {3203		.name = "gcc_ufs_phy",3204	},3205	.pwrsts = PWRSTS_OFF_ON,3206};3207 3208static struct gdsc gcc_usb30_prim_gdsc = {3209	.gdscr = 0x1a004,3210	.pd = {3211		.name = "gcc_usb30_prim",3212	},3213	.pwrsts = PWRSTS_OFF_ON,3214};3215 3216static struct gdsc gcc_vcodec0_gdsc = {3217	.gdscr = 0x58098,3218	.pd = {3219		.name = "gcc_vcodec0",3220	},3221	.pwrsts = PWRSTS_OFF_ON,3222};3223 3224static struct gdsc gcc_venus_gdsc = {3225	.gdscr = 0x5807c,3226	.pd = {3227		.name = "gcc_venus",3228	},3229	.pwrsts = PWRSTS_OFF_ON,3230};3231 3232static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {3233	.gdscr = 0x7d060,3234	.pd = {3235		.name = "hlos1_vote_turing_mmu_tbu1",3236	},3237	.pwrsts = PWRSTS_OFF_ON,3238	.flags = VOTABLE,3239};3240 3241static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {3242	.gdscr = 0x7d07c,3243	.pd = {3244		.name = "hlos1_vote_turing_mmu_tbu0",3245	},3246	.pwrsts = PWRSTS_OFF_ON,3247	.flags = VOTABLE,3248};3249 3250static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {3251	.gdscr = 0x7d074,3252	.pd = {3253		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt",3254	},3255	.pwrsts = PWRSTS_OFF_ON,3256	.flags = VOTABLE,3257};3258 3259static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {3260	.gdscr = 0x7d078,3261	.pd = {3262		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt",3263	},3264	.pwrsts = PWRSTS_OFF_ON,3265	.flags = VOTABLE,3266};3267 3268static struct clk_regmap *gcc_sm6115_clocks[] = {3269	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,3270	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,3271	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,3272	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3273	[GCC_CAM_THROTTLE_NRT_CLK] = &gcc_cam_throttle_nrt_clk.clkr,3274	[GCC_CAM_THROTTLE_RT_CLK] = &gcc_cam_throttle_rt_clk.clkr,3275	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,3276	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,3277	[GCC_CAMSS_AXI_CLK] = &gcc_camss_axi_clk.clkr,3278	[GCC_CAMSS_AXI_CLK_SRC] = &gcc_camss_axi_clk_src.clkr,3279	[GCC_CAMSS_CAMNOC_ATB_CLK] = &gcc_camss_camnoc_atb_clk.clkr,3280	[GCC_CAMSS_CAMNOC_NTS_XO_CLK] = &gcc_camss_camnoc_nts_xo_clk.clkr,3281	[GCC_CAMSS_CCI_0_CLK] = &gcc_camss_cci_0_clk.clkr,3282	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,3283	[GCC_CAMSS_CPHY_0_CLK] = &gcc_camss_cphy_0_clk.clkr,3284	[GCC_CAMSS_CPHY_1_CLK] = &gcc_camss_cphy_1_clk.clkr,3285	[GCC_CAMSS_CPHY_2_CLK] = &gcc_camss_cphy_2_clk.clkr,3286	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,3287	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,3288	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,3289	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,3290	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,3291	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,3292	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,3293	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,3294	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,3295	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,3296	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,3297	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,3298	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,3299	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,3300	[GCC_CAMSS_NRT_AXI_CLK] = &gcc_camss_nrt_axi_clk.clkr,3301	[GCC_CAMSS_OPE_AHB_CLK] = &gcc_camss_ope_ahb_clk.clkr,3302	[GCC_CAMSS_OPE_AHB_CLK_SRC] = &gcc_camss_ope_ahb_clk_src.clkr,3303	[GCC_CAMSS_OPE_CLK] = &gcc_camss_ope_clk.clkr,3304	[GCC_CAMSS_OPE_CLK_SRC] = &gcc_camss_ope_clk_src.clkr,3305	[GCC_CAMSS_RT_AXI_CLK] = &gcc_camss_rt_axi_clk.clkr,3306	[GCC_CAMSS_TFE_0_CLK] = &gcc_camss_tfe_0_clk.clkr,3307	[GCC_CAMSS_TFE_0_CLK_SRC] = &gcc_camss_tfe_0_clk_src.clkr,3308	[GCC_CAMSS_TFE_0_CPHY_RX_CLK] = &gcc_camss_tfe_0_cphy_rx_clk.clkr,3309	[GCC_CAMSS_TFE_0_CSID_CLK] = &gcc_camss_tfe_0_csid_clk.clkr,3310	[GCC_CAMSS_TFE_0_CSID_CLK_SRC] = &gcc_camss_tfe_0_csid_clk_src.clkr,3311	[GCC_CAMSS_TFE_1_CLK] = &gcc_camss_tfe_1_clk.clkr,3312	[GCC_CAMSS_TFE_1_CLK_SRC] = &gcc_camss_tfe_1_clk_src.clkr,3313	[GCC_CAMSS_TFE_1_CPHY_RX_CLK] = &gcc_camss_tfe_1_cphy_rx_clk.clkr,3314	[GCC_CAMSS_TFE_1_CSID_CLK] = &gcc_camss_tfe_1_csid_clk.clkr,3315	[GCC_CAMSS_TFE_1_CSID_CLK_SRC] = &gcc_camss_tfe_1_csid_clk_src.clkr,3316	[GCC_CAMSS_TFE_2_CLK] = &gcc_camss_tfe_2_clk.clkr,3317	[GCC_CAMSS_TFE_2_CLK_SRC] = &gcc_camss_tfe_2_clk_src.clkr,3318	[GCC_CAMSS_TFE_2_CPHY_RX_CLK] = &gcc_camss_tfe_2_cphy_rx_clk.clkr,3319	[GCC_CAMSS_TFE_2_CSID_CLK] = &gcc_camss_tfe_2_csid_clk.clkr,3320	[GCC_CAMSS_TFE_2_CSID_CLK_SRC] = &gcc_camss_tfe_2_csid_clk_src.clkr,3321	[GCC_CAMSS_TFE_CPHY_RX_CLK_SRC] = &gcc_camss_tfe_cphy_rx_clk_src.clkr,3322	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,3323	[GCC_CAMSS_TOP_AHB_CLK_SRC] = &gcc_camss_top_ahb_clk_src.clkr,3324	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3325	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,3326	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,3327	[GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,3328	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,3329	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,3330	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,3331	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,3332	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3333	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3334	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3335	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3336	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3337	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3338	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,3339	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3340	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3341	[GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,3342	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3343	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3344	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,3345	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3346	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3347	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3348	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3349	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,3350	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,3351	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,3352	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3353	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,3354	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,3355	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,3356	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,3357	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,3358	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,3359	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,3360	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,3361	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,3362	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,3363	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,3364	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,3365	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,3366	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,3367	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,3368	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,3369	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,3370	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,3371	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,3372	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,3373	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,3374	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,3375	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,3376	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,3377	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,3378	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,3379	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,3380	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,3381	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,3382	[GCC_UFS_CLKREF_CLK] = &gcc_ufs_clkref_clk.clkr,3383	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,3384	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,3385	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,3386	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,3387	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,3388	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,3389	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,3390	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,3391	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,3392	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,3393	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =3394		&gcc_ufs_phy_unipro_core_clk_src.clkr,3395	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,3396	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,3397	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,3398	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =3399		&gcc_usb30_prim_mock_utmi_clk_src.clkr,3400	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] =3401		&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,3402	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,3403	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,3404	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,3405	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,3406	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,3407	[GCC_VCODEC0_AXI_CLK] = &gcc_vcodec0_axi_clk.clkr,3408	[GCC_VENUS_AHB_CLK] = &gcc_venus_ahb_clk.clkr,3409	[GCC_VENUS_CTL_AXI_CLK] = &gcc_venus_ctl_axi_clk.clkr,3410	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,3411	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,3412	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,3413	[GCC_VIDEO_VCODEC0_SYS_CLK] = &gcc_video_vcodec0_sys_clk.clkr,3414	[GCC_VIDEO_VENUS_CLK_SRC] = &gcc_video_venus_clk_src.clkr,3415	[GCC_VIDEO_VENUS_CTL_CLK] = &gcc_video_venus_ctl_clk.clkr,3416	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,3417	[GPLL0] = &gpll0.clkr,3418	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.clkr,3419	[GPLL0_OUT_MAIN] = &gpll0_out_main.clkr,3420	[GPLL10] = &gpll10.clkr,3421	[GPLL10_OUT_MAIN] = &gpll10_out_main.clkr,3422	[GPLL11] = &gpll11.clkr,3423	[GPLL11_OUT_MAIN] = &gpll11_out_main.clkr,3424	[GPLL3] = &gpll3.clkr,3425	[GPLL4] = &gpll4.clkr,3426	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,3427	[GPLL6] = &gpll6.clkr,3428	[GPLL6_OUT_MAIN] = &gpll6_out_main.clkr,3429	[GPLL7] = &gpll7.clkr,3430	[GPLL7_OUT_MAIN] = &gpll7_out_main.clkr,3431	[GPLL8] = &gpll8.clkr,3432	[GPLL8_OUT_MAIN] = &gpll8_out_main.clkr,3433	[GPLL9] = &gpll9.clkr,3434	[GPLL9_OUT_MAIN] = &gpll9_out_main.clkr,3435};3436 3437static const struct qcom_reset_map gcc_sm6115_resets[] = {3438	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },3439	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },3440	[GCC_SDCC1_BCR] = { 0x38000 },3441	[GCC_SDCC2_BCR] = { 0x1e000 },3442	[GCC_UFS_PHY_BCR] = { 0x45000 },3443	[GCC_USB30_PRIM_BCR] = { 0x1a000 },3444	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },3445	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },3446	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },3447	[GCC_VCODEC0_BCR] = { 0x58094 },3448	[GCC_VENUS_BCR] = { 0x58078 },3449	[GCC_VIDEO_INTERFACE_BCR] = { 0x6e000 },3450};3451 3452static struct gdsc *gcc_sm6115_gdscs[] = {3453	[GCC_CAMSS_TOP_GDSC] = &gcc_camss_top_gdsc,3454	[GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,3455	[GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,3456	[GCC_VCODEC0_GDSC] = &gcc_vcodec0_gdsc,3457	[GCC_VENUS_GDSC] = &gcc_venus_gdsc,3458	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,3459	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,3460	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,3461	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,3462};3463 3464static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {3465	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),3466	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),3467	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),3468	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),3469	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),3470	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),3471};3472 3473static const struct regmap_config gcc_sm6115_regmap_config = {3474	.reg_bits = 32,3475	.reg_stride = 4,3476	.val_bits = 32,3477	.max_register = 0xc7000,3478	.fast_io = true,3479};3480 3481static const struct qcom_cc_desc gcc_sm6115_desc = {3482	.config = &gcc_sm6115_regmap_config,3483	.clks = gcc_sm6115_clocks,3484	.num_clks = ARRAY_SIZE(gcc_sm6115_clocks),3485	.resets = gcc_sm6115_resets,3486	.num_resets = ARRAY_SIZE(gcc_sm6115_resets),3487	.gdscs = gcc_sm6115_gdscs,3488	.num_gdscs = ARRAY_SIZE(gcc_sm6115_gdscs),3489};3490 3491static const struct of_device_id gcc_sm6115_match_table[] = {3492	{ .compatible = "qcom,gcc-sm6115" },3493	{ }3494};3495MODULE_DEVICE_TABLE(of, gcc_sm6115_match_table);3496 3497static int gcc_sm6115_probe(struct platform_device *pdev)3498{3499	struct regmap *regmap;3500	int ret;3501 3502	regmap = qcom_cc_map(pdev, &gcc_sm6115_desc);3503	if (IS_ERR(regmap))3504		return PTR_ERR(regmap);3505 3506	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,3507			ARRAY_SIZE(gcc_dfs_clocks));3508	if (ret)3509		return ret;3510 3511	clk_alpha_pll_configure(&gpll8, regmap, &gpll8_config);3512	clk_alpha_pll_configure(&gpll9, regmap, &gpll9_config);3513	clk_alpha_pll_configure(&gpll10, regmap, &gpll10_config);3514	clk_alpha_pll_configure(&gpll11, regmap, &gpll11_config);3515 3516	return qcom_cc_really_probe(&pdev->dev, &gcc_sm6115_desc, regmap);3517}3518 3519static struct platform_driver gcc_sm6115_driver = {3520	.probe = gcc_sm6115_probe,3521	.driver = {3522		.name = "gcc-sm6115",3523		.of_match_table = gcc_sm6115_match_table,3524	},3525};3526 3527static int __init gcc_sm6115_init(void)3528{3529	return platform_driver_register(&gcc_sm6115_driver);3530}3531subsys_initcall(gcc_sm6115_init);3532 3533static void __exit gcc_sm6115_exit(void)3534{3535	platform_driver_unregister(&gcc_sm6115_driver);3536}3537module_exit(gcc_sm6115_exit);3538 3539MODULE_DESCRIPTION("QTI GCC SM6115 and SM4250 Driver");3540MODULE_LICENSE("GPL v2");3541MODULE_ALIAS("platform:gcc-sm6115");3542