brintos

brintos / linux-shallow public Read only

0
0
Text · 105.3 KiB · 07bb1e5 Raw
4189 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>4 */5 6#include <linux/kernel.h>7#include <linux/err.h>8#include <linux/module.h>9#include <linux/platform_device.h>10#include <linux/of.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-sm6125.h>16 17#include "clk-alpha-pll.h"18#include "clk-branch.h"19#include "clk-rcg.h"20#include "clk-regmap.h"21#include "common.h"22#include "gdsc.h"23#include "reset.h"24 25enum {26	P_BI_TCXO,27	P_GPLL0_OUT_AUX2,28	P_GPLL0_OUT_EARLY,29	P_GPLL3_OUT_EARLY,30	P_GPLL4_OUT_MAIN,31	P_GPLL5_OUT_MAIN,32	P_GPLL6_OUT_EARLY,33	P_GPLL6_OUT_MAIN,34	P_GPLL7_OUT_MAIN,35	P_GPLL8_OUT_EARLY,36	P_GPLL8_OUT_MAIN,37	P_GPLL9_OUT_MAIN,38	P_SLEEP_CLK,39};40 41static struct clk_alpha_pll gpll0_out_early = {42	.offset = 0x0,43	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],44	.clkr = {45		.enable_reg = 0x79000,46		.enable_mask = BIT(0),47		.hw.init = &(struct clk_init_data){48			.name = "gpll0_out_early",49			.parent_data = &(const struct clk_parent_data){50				.fw_name = "bi_tcxo",51			},52			.num_parents = 1,53			.ops = &clk_alpha_pll_ops,54		},55	},56};57 58static struct clk_fixed_factor gpll0_out_aux2 = {59	.mult = 1,60	.div = 2,61	.hw.init = &(struct clk_init_data){62		.name = "gpll0_out_aux2",63		.parent_hws = (const struct clk_hw*[]){64			&gpll0_out_early.clkr.hw,65		},66		.num_parents = 1,67		.ops = &clk_fixed_factor_ops,68	},69};70 71static struct clk_fixed_factor gpll0_out_main = {72	.mult = 1,73	.div = 2,74	.hw.init = &(struct clk_init_data){75		.name = "gpll0_out_main",76		.parent_hws = (const struct clk_hw*[]){77			&gpll0_out_early.clkr.hw,78		},79		.num_parents = 1,80		.ops = &clk_fixed_factor_ops,81	},82};83 84static struct clk_alpha_pll gpll3_out_early = {85	.offset = 0x3000,86	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],87	.clkr = {88		.enable_reg = 0x79000,89		.enable_mask = BIT(3),90		.hw.init = &(struct clk_init_data){91			.name = "gpll3_out_early",92			.parent_data = &(const struct clk_parent_data){93				.fw_name = "bi_tcxo",94			},95			.num_parents = 1,96			.ops = &clk_alpha_pll_ops,97		},98	},99};100 101static struct clk_alpha_pll gpll4_out_main = {102	.offset = 0x4000,103	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],104	.clkr = {105		.enable_reg = 0x79000,106		.enable_mask = BIT(4),107		.hw.init = &(struct clk_init_data){108			.name = "gpll4_out_main",109			.parent_data = &(const struct clk_parent_data){110				.fw_name = "bi_tcxo",111			},112			.num_parents = 1,113			.ops = &clk_alpha_pll_ops,114		},115	},116};117 118static struct clk_alpha_pll gpll5_out_main = {119	.offset = 0x5000,120	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],121	.clkr = {122		.enable_reg = 0x79000,123		.enable_mask = BIT(5),124		.hw.init = &(struct clk_init_data){125			.name = "gpll5_out_main",126			.parent_data = &(const struct clk_parent_data){127				.fw_name = "bi_tcxo",128			},129			.num_parents = 1,130			.ops = &clk_alpha_pll_ops,131		},132	},133};134 135static struct clk_alpha_pll gpll6_out_early = {136	.offset = 0x6000,137	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],138	.clkr = {139		.enable_reg = 0x79000,140		.enable_mask = BIT(6),141		.hw.init = &(struct clk_init_data){142			.name = "gpll6_out_early",143			.parent_data = &(const struct clk_parent_data){144				.fw_name = "bi_tcxo",145			},146			.num_parents = 1,147			.ops = &clk_alpha_pll_ops,148		},149	},150};151 152static struct clk_fixed_factor gpll6_out_main = {153	.mult = 1,154	.div = 2,155	.hw.init = &(struct clk_init_data){156		.name = "gpll6_out_main",157		.parent_hws = (const struct clk_hw*[]){158			&gpll6_out_early.clkr.hw,159		},160		.num_parents = 1,161		.ops = &clk_fixed_factor_ops,162	},163};164 165static struct clk_alpha_pll gpll7_out_early = {166	.offset = 0x7000,167	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],168	.clkr = {169		.enable_reg = 0x79000,170		.enable_mask = BIT(7),171		.hw.init = &(struct clk_init_data){172			.name = "gpll7_out_early",173			.parent_data = &(const struct clk_parent_data){174				.fw_name = "bi_tcxo",175			},176			.num_parents = 1,177			.ops = &clk_alpha_pll_ops,178		},179	},180};181 182static struct clk_fixed_factor gpll7_out_main = {183	.mult = 1,184	.div = 2,185	.hw.init = &(struct clk_init_data){186		.name = "gpll7_out_main",187		.parent_hws = (const struct clk_hw*[]){188			&gpll7_out_early.clkr.hw,189		},190		.num_parents = 1,191		.ops = &clk_fixed_factor_ops,192	},193};194 195static struct clk_alpha_pll gpll8_out_early = {196	.offset = 0x8000,197	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],198	.clkr = {199		.enable_reg = 0x79000,200		.enable_mask = BIT(8),201		.hw.init = &(struct clk_init_data){202			.name = "gpll8_out_early",203			.parent_data = &(const struct clk_parent_data){204				.fw_name = "bi_tcxo",205			},206			.num_parents = 1,207			.ops = &clk_alpha_pll_ops,208		},209	},210};211 212static struct clk_fixed_factor gpll8_out_main = {213	.mult = 1,214	.div = 2,215	.hw.init = &(struct clk_init_data){216		.name = "gpll8_out_main",217		.parent_hws = (const struct clk_hw*[]){218			&gpll8_out_early.clkr.hw,219		},220		.num_parents = 1,221		.ops = &clk_fixed_factor_ops,222	},223};224 225static struct clk_alpha_pll gpll9_out_early = {226	.offset = 0x9000,227	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],228	.clkr = {229		.enable_reg = 0x79000,230		.enable_mask = BIT(9),231		.hw.init = &(struct clk_init_data){232			.name = "gpll9_out_early",233			.parent_data = &(const struct clk_parent_data){234				.fw_name = "bi_tcxo",235			},236			.num_parents = 1,237			.ops = &clk_alpha_pll_ops,238		},239	},240};241 242static struct clk_fixed_factor gpll9_out_main = {243	.mult = 1,244	.div = 2,245	.hw.init = &(struct clk_init_data){246		.name = "gpll9_out_main",247		.parent_hws = (const struct clk_hw*[]){248			&gpll9_out_early.clkr.hw,249		},250		.num_parents = 1,251		.ops = &clk_fixed_factor_ops,252	},253};254 255static const struct parent_map gcc_parent_map_0[] = {256	{ P_BI_TCXO, 0 },257	{ P_GPLL0_OUT_EARLY, 1 },258	{ P_GPLL0_OUT_AUX2, 2 },259};260 261static const struct clk_parent_data gcc_parent_data_0[] = {262	{ .fw_name = "bi_tcxo" },263	{ .hw = &gpll0_out_early.clkr.hw },264	{ .hw = &gpll0_out_aux2.hw },265};266 267static const struct parent_map gcc_parent_map_1[] = {268	{ P_BI_TCXO, 0 },269	{ P_GPLL0_OUT_EARLY, 1 },270	{ P_GPLL0_OUT_AUX2, 2 },271	{ P_GPLL6_OUT_MAIN, 4 },272};273 274static const struct clk_parent_data gcc_parent_data_1[] = {275	{ .fw_name = "bi_tcxo" },276	{ .hw = &gpll0_out_early.clkr.hw },277	{ .hw = &gpll0_out_aux2.hw },278	{ .hw = &gpll6_out_main.hw },279};280 281static const struct parent_map gcc_parent_map_2[] = {282	{ P_BI_TCXO, 0 },283	{ P_GPLL0_OUT_EARLY, 1 },284	{ P_GPLL0_OUT_AUX2, 2 },285	{ P_SLEEP_CLK, 5 },286};287 288static const struct clk_parent_data gcc_parent_data_2[] = {289	{ .fw_name = "bi_tcxo" },290	{ .hw = &gpll0_out_early.clkr.hw },291	{ .hw = &gpll0_out_aux2.hw },292	{ .fw_name = "sleep_clk" },293};294 295static const struct parent_map gcc_parent_map_3[] = {296	{ P_BI_TCXO, 0 },297	{ P_GPLL0_OUT_EARLY, 1 },298	{ P_GPLL5_OUT_MAIN, 3 },299	{ P_GPLL4_OUT_MAIN, 5 },300};301 302static const struct clk_parent_data gcc_parent_data_3[] = {303	{ .fw_name = "bi_tcxo" },304	{ .hw = &gpll0_out_early.clkr.hw },305	{ .hw = &gpll5_out_main.clkr.hw },306	{ .hw = &gpll4_out_main.clkr.hw },307};308 309static const struct parent_map gcc_parent_map_4[] = {310	{ P_BI_TCXO, 0 },311	{ P_GPLL0_OUT_EARLY, 1 },312	{ P_GPLL9_OUT_MAIN, 2 },313};314 315static const struct clk_parent_data gcc_parent_data_4[] = {316	{ .fw_name = "bi_tcxo" },317	{ .hw = &gpll0_out_early.clkr.hw },318	{ .hw = &gpll9_out_main.hw },319};320 321static const struct parent_map gcc_parent_map_5[] = {322	{ P_BI_TCXO, 0 },323	{ P_GPLL0_OUT_EARLY, 1 },324};325 326static const struct clk_parent_data gcc_parent_data_5[] = {327	{ .fw_name = "bi_tcxo" },328	{ .hw = &gpll0_out_early.clkr.hw },329};330 331static const struct parent_map gcc_parent_map_6[] = {332	{ P_BI_TCXO, 0 },333	{ P_GPLL0_OUT_EARLY, 1 },334	{ P_GPLL4_OUT_MAIN, 5 },335};336 337static const struct clk_parent_data gcc_parent_data_6[] = {338	{ .fw_name = "bi_tcxo" },339	{ .hw = &gpll0_out_early.clkr.hw },340	{ .hw = &gpll4_out_main.clkr.hw },341};342 343static const struct parent_map gcc_parent_map_7[] = {344	{ P_BI_TCXO, 0 },345	{ P_GPLL0_OUT_EARLY, 1 },346	{ P_SLEEP_CLK, 5 },347};348 349static const struct clk_parent_data gcc_parent_data_7[] = {350	{ .fw_name = "bi_tcxo" },351	{ .hw = &gpll0_out_early.clkr.hw },352	{ .fw_name = "sleep_clk" },353};354 355static const struct parent_map gcc_parent_map_8[] = {356	{ P_BI_TCXO, 0 },357	{ P_GPLL0_OUT_EARLY, 1 },358	{ P_GPLL9_OUT_MAIN, 2 },359	{ P_GPLL6_OUT_EARLY, 3 },360	{ P_GPLL8_OUT_MAIN, 4 },361	{ P_GPLL4_OUT_MAIN, 5 },362	{ P_GPLL3_OUT_EARLY, 6 },363};364 365static const struct clk_parent_data gcc_parent_data_8[] = {366	{ .fw_name = "bi_tcxo" },367	{ .hw = &gpll0_out_early.clkr.hw },368	{ .hw = &gpll9_out_main.hw },369	{ .hw = &gpll6_out_early.clkr.hw },370	{ .hw = &gpll8_out_main.hw },371	{ .hw = &gpll4_out_main.clkr.hw },372	{ .hw = &gpll3_out_early.clkr.hw },373};374 375static const struct parent_map gcc_parent_map_9[] = {376	{ P_BI_TCXO, 0 },377	{ P_GPLL0_OUT_EARLY, 1 },378	{ P_GPLL8_OUT_MAIN, 4 },379};380 381static const struct clk_parent_data gcc_parent_data_9[] = {382	{ .fw_name = "bi_tcxo" },383	{ .hw = &gpll0_out_early.clkr.hw },384	{ .hw = &gpll8_out_main.hw },385};386 387static const struct parent_map gcc_parent_map_10[] = {388	{ P_BI_TCXO, 0 },389	{ P_GPLL0_OUT_EARLY, 1 },390	{ P_GPLL9_OUT_MAIN, 2 },391	{ P_GPLL6_OUT_EARLY, 3 },392	{ P_GPLL8_OUT_MAIN, 4 },393	{ P_GPLL3_OUT_EARLY, 6 },394};395 396static const struct clk_parent_data gcc_parent_data_10[] = {397	{ .fw_name = "bi_tcxo" },398	{ .hw = &gpll0_out_early.clkr.hw },399	{ .hw = &gpll9_out_main.hw },400	{ .hw = &gpll6_out_early.clkr.hw },401	{ .hw = &gpll8_out_main.hw },402	{ .hw = &gpll3_out_early.clkr.hw },403};404 405static const struct parent_map gcc_parent_map_11[] = {406	{ P_BI_TCXO, 0 },407	{ P_GPLL0_OUT_EARLY, 1 },408	{ P_GPLL8_OUT_EARLY, 4 },409	{ P_GPLL4_OUT_MAIN, 5 },410};411 412static const struct clk_parent_data gcc_parent_data_11[] = {413	{ .fw_name = "bi_tcxo" },414	{ .hw = &gpll0_out_early.clkr.hw },415	{ .hw = &gpll8_out_early.clkr.hw },416	{ .hw = &gpll4_out_main.clkr.hw },417};418 419static const struct parent_map gcc_parent_map_12[] = {420	{ P_BI_TCXO, 0 },421	{ P_GPLL0_OUT_EARLY, 1 },422	{ P_GPLL6_OUT_EARLY, 3 },423	{ P_GPLL8_OUT_EARLY, 4 },424};425 426static const struct clk_parent_data gcc_parent_data_12[] = {427	{ .fw_name = "bi_tcxo" },428	{ .hw = &gpll0_out_early.clkr.hw },429	{ .hw = &gpll6_out_early.clkr.hw },430	{ .hw = &gpll8_out_early.clkr.hw },431};432 433static const struct parent_map gcc_parent_map_13[] = {434	{ P_BI_TCXO, 0 },435	{ P_GPLL0_OUT_EARLY, 1 },436	{ P_GPLL0_OUT_AUX2, 2 },437	{ P_GPLL7_OUT_MAIN, 3 },438	{ P_GPLL4_OUT_MAIN, 5 },439};440 441static const struct clk_parent_data gcc_parent_data_13[] = {442	{ .fw_name = "bi_tcxo" },443	{ .hw = &gpll0_out_early.clkr.hw },444	{ .hw = &gpll0_out_aux2.hw },445	{ .hw = &gpll7_out_main.hw },446	{ .hw = &gpll4_out_main.clkr.hw },447};448 449static const struct parent_map gcc_parent_map_14[] = {450	{ P_BI_TCXO, 0 },451	{ P_SLEEP_CLK, 5 },452};453 454static const struct clk_parent_data gcc_parent_data_14[] = {455	{ .fw_name = "bi_tcxo" },456	{ .fw_name = "sleep_clk" },457};458 459static const struct freq_tbl ftbl_gcc_camss_ahb_clk_src[] = {460	F(19200000, P_BI_TCXO, 1, 0, 0),461	F(40000000, P_GPLL8_OUT_MAIN, 12, 0, 0),462	F(80000000, P_GPLL8_OUT_MAIN, 6, 0, 0),463	{ }464};465 466static struct clk_rcg2 gcc_camss_ahb_clk_src = {467	.cmd_rcgr = 0x56088,468	.mnd_width = 0,469	.hid_width = 5,470	.parent_map = gcc_parent_map_9,471	.freq_tbl = ftbl_gcc_camss_ahb_clk_src,472	.clkr.hw.init = &(struct clk_init_data){473		.name = "gcc_camss_ahb_clk_src",474		.parent_data = gcc_parent_data_9,475		.num_parents = ARRAY_SIZE(gcc_parent_data_9),476		.ops = &clk_rcg2_ops,477	},478};479 480static const struct freq_tbl ftbl_gcc_camss_cci_clk_src[] = {481	F(37500000, P_GPLL0_OUT_EARLY, 16, 0, 0),482	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),483	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),484	{ }485};486 487static struct clk_rcg2 gcc_camss_cci_clk_src = {488	.cmd_rcgr = 0x52004,489	.mnd_width = 8,490	.hid_width = 5,491	.parent_map = gcc_parent_map_5,492	.freq_tbl = ftbl_gcc_camss_cci_clk_src,493	.clkr.hw.init = &(struct clk_init_data){494		.name = "gcc_camss_cci_clk_src",495		.parent_data = gcc_parent_data_5,496		.num_parents = ARRAY_SIZE(gcc_parent_data_5),497		.ops = &clk_rcg2_ops,498	},499};500 501static const struct freq_tbl ftbl_gcc_camss_cpp_clk_src[] = {502	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),503	F(240000000, P_GPLL8_OUT_MAIN, 2, 0, 0),504	F(320000000, P_GPLL8_OUT_MAIN, 1.5, 0, 0),505	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),506	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),507	{ }508};509 510static struct clk_rcg2 gcc_camss_cpp_clk_src = {511	.cmd_rcgr = 0x560c8,512	.mnd_width = 0,513	.hid_width = 5,514	.parent_map = gcc_parent_map_10,515	.freq_tbl = ftbl_gcc_camss_cpp_clk_src,516	.clkr.hw.init = &(struct clk_init_data){517		.name = "gcc_camss_cpp_clk_src",518		.parent_data = gcc_parent_data_10,519		.num_parents = ARRAY_SIZE(gcc_parent_data_10),520		.ops = &clk_rcg2_ops,521	},522};523 524static const struct freq_tbl ftbl_gcc_camss_csi0_clk_src[] = {525	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),526	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),527	F(311000000, P_GPLL5_OUT_MAIN, 3, 0, 0),528	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),529	F(466500000, P_GPLL5_OUT_MAIN, 2, 0, 0),530	{ }531};532 533static struct clk_rcg2 gcc_camss_csi0_clk_src = {534	.cmd_rcgr = 0x55030,535	.mnd_width = 0,536	.hid_width = 5,537	.parent_map = gcc_parent_map_3,538	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,539	.clkr.hw.init = &(struct clk_init_data){540		.name = "gcc_camss_csi0_clk_src",541		.parent_data = gcc_parent_data_3,542		.num_parents = ARRAY_SIZE(gcc_parent_data_3),543		.ops = &clk_rcg2_ops,544	},545};546 547static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {548	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),549	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),550	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),551	{ }552};553 554static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {555	.cmd_rcgr = 0x53004,556	.mnd_width = 0,557	.hid_width = 5,558	.parent_map = gcc_parent_map_6,559	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,560	.clkr.hw.init = &(struct clk_init_data){561		.name = "gcc_camss_csi0phytimer_clk_src",562		.parent_data = gcc_parent_data_6,563		.num_parents = ARRAY_SIZE(gcc_parent_data_6),564		.ops = &clk_rcg2_ops,565	},566};567 568static struct clk_rcg2 gcc_camss_csi1_clk_src = {569	.cmd_rcgr = 0x5506c,570	.mnd_width = 0,571	.hid_width = 5,572	.parent_map = gcc_parent_map_3,573	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,574	.clkr.hw.init = &(struct clk_init_data){575		.name = "gcc_camss_csi1_clk_src",576		.parent_data = gcc_parent_data_3,577		.num_parents = ARRAY_SIZE(gcc_parent_data_3),578		.ops = &clk_rcg2_ops,579	},580};581 582static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {583	.cmd_rcgr = 0x53024,584	.mnd_width = 0,585	.hid_width = 5,586	.parent_map = gcc_parent_map_6,587	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,588	.clkr.hw.init = &(struct clk_init_data){589		.name = "gcc_camss_csi1phytimer_clk_src",590		.parent_data = gcc_parent_data_6,591		.num_parents = ARRAY_SIZE(gcc_parent_data_6),592		.ops = &clk_rcg2_ops,593	},594};595 596static struct clk_rcg2 gcc_camss_csi2_clk_src = {597	.cmd_rcgr = 0x550a4,598	.mnd_width = 0,599	.hid_width = 5,600	.parent_map = gcc_parent_map_3,601	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,602	.clkr.hw.init = &(struct clk_init_data){603		.name = "gcc_camss_csi2_clk_src",604		.parent_data = gcc_parent_data_3,605		.num_parents = ARRAY_SIZE(gcc_parent_data_3),606		.ops = &clk_rcg2_ops,607	},608};609 610static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {611	.cmd_rcgr = 0x53044,612	.mnd_width = 0,613	.hid_width = 5,614	.parent_map = gcc_parent_map_6,615	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,616	.clkr.hw.init = &(struct clk_init_data){617		.name = "gcc_camss_csi2phytimer_clk_src",618		.parent_data = gcc_parent_data_6,619		.num_parents = ARRAY_SIZE(gcc_parent_data_6),620		.ops = &clk_rcg2_ops,621	},622};623 624static struct clk_rcg2 gcc_camss_csi3_clk_src = {625	.cmd_rcgr = 0x550e0,626	.mnd_width = 0,627	.hid_width = 5,628	.parent_map = gcc_parent_map_3,629	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,630	.clkr.hw.init = &(struct clk_init_data){631		.name = "gcc_camss_csi3_clk_src",632		.parent_data = gcc_parent_data_3,633		.num_parents = ARRAY_SIZE(gcc_parent_data_3),634		.ops = &clk_rcg2_ops,635	},636};637 638static const struct freq_tbl ftbl_gcc_camss_csiphy_clk_src[] = {639	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),640	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),641	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),642	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),643	{ }644};645 646static struct clk_rcg2 gcc_camss_csiphy_clk_src = {647	.cmd_rcgr = 0x55000,648	.mnd_width = 0,649	.hid_width = 5,650	.parent_map = gcc_parent_map_11,651	.freq_tbl = ftbl_gcc_camss_csiphy_clk_src,652	.clkr.hw.init = &(struct clk_init_data){653		.name = "gcc_camss_csiphy_clk_src",654		.parent_data = gcc_parent_data_11,655		.num_parents = ARRAY_SIZE(gcc_parent_data_11),656		.ops = &clk_rcg2_ops,657	},658};659 660static const struct freq_tbl ftbl_gcc_camss_gp0_clk_src[] = {661	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),662	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),663	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),664	{ }665};666 667static struct clk_rcg2 gcc_camss_gp0_clk_src = {668	.cmd_rcgr = 0x50000,669	.mnd_width = 8,670	.hid_width = 5,671	.parent_map = gcc_parent_map_7,672	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,673	.clkr.hw.init = &(struct clk_init_data){674		.name = "gcc_camss_gp0_clk_src",675		.parent_data = gcc_parent_data_7,676		.num_parents = ARRAY_SIZE(gcc_parent_data_7),677		.ops = &clk_rcg2_ops,678	},679};680 681static struct clk_rcg2 gcc_camss_gp1_clk_src = {682	.cmd_rcgr = 0x5001c,683	.mnd_width = 8,684	.hid_width = 5,685	.parent_map = gcc_parent_map_7,686	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,687	.clkr.hw.init = &(struct clk_init_data){688		.name = "gcc_camss_gp1_clk_src",689		.parent_data = gcc_parent_data_7,690		.num_parents = ARRAY_SIZE(gcc_parent_data_7),691		.ops = &clk_rcg2_ops,692	},693};694 695static const struct freq_tbl ftbl_gcc_camss_jpeg_clk_src[] = {696	F(66666667, P_GPLL0_OUT_EARLY, 9, 0, 0),697	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),698	F(219428571, P_GPLL6_OUT_EARLY, 3.5, 0, 0),699	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),700	F(480000000, P_GPLL8_OUT_EARLY, 2, 0, 0),701	{ }702};703 704static struct clk_rcg2 gcc_camss_jpeg_clk_src = {705	.cmd_rcgr = 0x52028,706	.mnd_width = 0,707	.hid_width = 5,708	.parent_map = gcc_parent_map_12,709	.freq_tbl = ftbl_gcc_camss_jpeg_clk_src,710	.clkr.hw.init = &(struct clk_init_data){711		.name = "gcc_camss_jpeg_clk_src",712		.parent_data = gcc_parent_data_12,713		.num_parents = ARRAY_SIZE(gcc_parent_data_12),714		.ops = &clk_rcg2_ops,715	},716};717 718static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {719	F(19200000, P_BI_TCXO, 1, 0, 0),720	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 24),721	F(64000000, P_GPLL9_OUT_MAIN, 1, 1, 9),722	{ }723};724 725static struct clk_rcg2 gcc_camss_mclk0_clk_src = {726	.cmd_rcgr = 0x51000,727	.mnd_width = 8,728	.hid_width = 5,729	.parent_map = gcc_parent_map_4,730	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,731	.clkr.hw.init = &(struct clk_init_data){732		.name = "gcc_camss_mclk0_clk_src",733		.parent_data = gcc_parent_data_4,734		.num_parents = ARRAY_SIZE(gcc_parent_data_4),735		.ops = &clk_rcg2_ops,736	},737};738 739static struct clk_rcg2 gcc_camss_mclk1_clk_src = {740	.cmd_rcgr = 0x5101c,741	.mnd_width = 8,742	.hid_width = 5,743	.parent_map = gcc_parent_map_4,744	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,745	.clkr.hw.init = &(struct clk_init_data){746		.name = "gcc_camss_mclk1_clk_src",747		.parent_data = gcc_parent_data_4,748		.num_parents = ARRAY_SIZE(gcc_parent_data_4),749		.ops = &clk_rcg2_ops,750	},751};752 753static struct clk_rcg2 gcc_camss_mclk2_clk_src = {754	.cmd_rcgr = 0x51038,755	.mnd_width = 8,756	.hid_width = 5,757	.parent_map = gcc_parent_map_4,758	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,759	.clkr.hw.init = &(struct clk_init_data){760		.name = "gcc_camss_mclk2_clk_src",761		.parent_data = gcc_parent_data_4,762		.num_parents = ARRAY_SIZE(gcc_parent_data_4),763		.ops = &clk_rcg2_ops,764	},765};766 767static struct clk_rcg2 gcc_camss_mclk3_clk_src = {768	.cmd_rcgr = 0x51054,769	.mnd_width = 8,770	.hid_width = 5,771	.parent_map = gcc_parent_map_4,772	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,773	.clkr.hw.init = &(struct clk_init_data){774		.name = "gcc_camss_mclk3_clk_src",775		.parent_data = gcc_parent_data_4,776		.num_parents = ARRAY_SIZE(gcc_parent_data_4),777		.ops = &clk_rcg2_ops,778	},779};780 781static const struct freq_tbl ftbl_gcc_camss_vfe0_clk_src[] = {782	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),783	F(256000000, P_GPLL6_OUT_EARLY, 3, 0, 0),784	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),785	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),786	F(533000000, P_GPLL3_OUT_EARLY, 2, 0, 0),787	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),788	{ }789};790 791static struct clk_rcg2 gcc_camss_vfe0_clk_src = {792	.cmd_rcgr = 0x54010,793	.mnd_width = 0,794	.hid_width = 5,795	.parent_map = gcc_parent_map_8,796	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,797	.clkr.hw.init = &(struct clk_init_data){798		.name = "gcc_camss_vfe0_clk_src",799		.parent_data = gcc_parent_data_8,800		.num_parents = ARRAY_SIZE(gcc_parent_data_8),801		.ops = &clk_rcg2_ops,802	},803};804 805static struct clk_rcg2 gcc_camss_vfe1_clk_src = {806	.cmd_rcgr = 0x54048,807	.mnd_width = 0,808	.hid_width = 5,809	.parent_map = gcc_parent_map_8,810	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,811	.clkr.hw.init = &(struct clk_init_data){812		.name = "gcc_camss_vfe1_clk_src",813		.parent_data = gcc_parent_data_8,814		.num_parents = ARRAY_SIZE(gcc_parent_data_8),815		.ops = &clk_rcg2_ops,816	},817};818 819static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {820	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),821	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),822	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),823	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),824	{ }825};826 827static struct clk_rcg2 gcc_gp1_clk_src = {828	.cmd_rcgr = 0x4d004,829	.mnd_width = 8,830	.hid_width = 5,831	.parent_map = gcc_parent_map_2,832	.freq_tbl = ftbl_gcc_gp1_clk_src,833	.clkr.hw.init = &(struct clk_init_data){834		.name = "gcc_gp1_clk_src",835		.parent_data = gcc_parent_data_2,836		.num_parents = ARRAY_SIZE(gcc_parent_data_2),837		.ops = &clk_rcg2_ops,838	},839};840 841static struct clk_rcg2 gcc_gp2_clk_src = {842	.cmd_rcgr = 0x4e004,843	.mnd_width = 8,844	.hid_width = 5,845	.parent_map = gcc_parent_map_2,846	.freq_tbl = ftbl_gcc_gp1_clk_src,847	.clkr.hw.init = &(struct clk_init_data){848		.name = "gcc_gp2_clk_src",849		.parent_data = gcc_parent_data_2,850		.num_parents = ARRAY_SIZE(gcc_parent_data_2),851		.ops = &clk_rcg2_ops,852	},853};854 855static struct clk_rcg2 gcc_gp3_clk_src = {856	.cmd_rcgr = 0x4f004,857	.mnd_width = 8,858	.hid_width = 5,859	.parent_map = gcc_parent_map_2,860	.freq_tbl = ftbl_gcc_gp1_clk_src,861	.clkr.hw.init = &(struct clk_init_data){862		.name = "gcc_gp3_clk_src",863		.parent_data = gcc_parent_data_2,864		.num_parents = ARRAY_SIZE(gcc_parent_data_2),865		.ops = &clk_rcg2_ops,866	},867};868 869static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {870	F(19200000, P_BI_TCXO, 1, 0, 0),871	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),872	{ }873};874 875static struct clk_rcg2 gcc_pdm2_clk_src = {876	.cmd_rcgr = 0x20010,877	.mnd_width = 0,878	.hid_width = 5,879	.parent_map = gcc_parent_map_0,880	.freq_tbl = ftbl_gcc_pdm2_clk_src,881	.clkr.hw.init = &(struct clk_init_data){882		.name = "gcc_pdm2_clk_src",883		.parent_data = gcc_parent_data_0,884		.num_parents = ARRAY_SIZE(gcc_parent_data_0),885		.ops = &clk_rcg2_ops,886	},887};888 889static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {890	F(7372800, P_GPLL0_OUT_AUX2, 1, 384, 15625),891	F(14745600, P_GPLL0_OUT_AUX2, 1, 768, 15625),892	F(19200000, P_BI_TCXO, 1, 0, 0),893	F(29491200, P_GPLL0_OUT_AUX2, 1, 1536, 15625),894	F(32000000, P_GPLL0_OUT_AUX2, 1, 8, 75),895	F(48000000, P_GPLL0_OUT_AUX2, 1, 4, 25),896	F(64000000, P_GPLL0_OUT_AUX2, 1, 16, 75),897	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),898	F(80000000, P_GPLL0_OUT_AUX2, 1, 4, 15),899	F(96000000, P_GPLL0_OUT_AUX2, 1, 8, 25),900	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),901	F(102400000, P_GPLL0_OUT_AUX2, 1, 128, 375),902	F(112000000, P_GPLL0_OUT_AUX2, 1, 28, 75),903	F(117964800, P_GPLL0_OUT_AUX2, 1, 6144, 15625),904	F(120000000, P_GPLL0_OUT_AUX2, 2.5, 0, 0),905	F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0),906	{ }907};908 909static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {910	.name = "gcc_qupv3_wrap0_s0_clk_src",911	.parent_data = gcc_parent_data_1,912	.num_parents = ARRAY_SIZE(gcc_parent_data_1),913	.ops = &clk_rcg2_ops,914};915 916static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {917	.cmd_rcgr = 0x1f148,918	.mnd_width = 16,919	.hid_width = 5,920	.parent_map = gcc_parent_map_1,921	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,922	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,923};924 925static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {926	.name = "gcc_qupv3_wrap0_s1_clk_src",927	.parent_data = gcc_parent_data_1,928	.num_parents = ARRAY_SIZE(gcc_parent_data_1),929	.ops = &clk_rcg2_ops,930};931 932static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {933	.cmd_rcgr = 0x1f278,934	.mnd_width = 16,935	.hid_width = 5,936	.parent_map = gcc_parent_map_1,937	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,938	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,939};940 941static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {942	.name = "gcc_qupv3_wrap0_s2_clk_src",943	.parent_data = gcc_parent_data_1,944	.num_parents = ARRAY_SIZE(gcc_parent_data_1),945	.ops = &clk_rcg2_ops,946};947 948static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {949	.cmd_rcgr = 0x1f3a8,950	.mnd_width = 16,951	.hid_width = 5,952	.parent_map = gcc_parent_map_1,953	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,954	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,955};956 957static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {958	.name = "gcc_qupv3_wrap0_s3_clk_src",959	.parent_data = gcc_parent_data_1,960	.num_parents = ARRAY_SIZE(gcc_parent_data_1),961	.ops = &clk_rcg2_ops,962};963 964static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {965	.cmd_rcgr = 0x1f4d8,966	.mnd_width = 16,967	.hid_width = 5,968	.parent_map = gcc_parent_map_1,969	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,970	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,971};972 973static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {974	.name = "gcc_qupv3_wrap0_s4_clk_src",975	.parent_data = gcc_parent_data_1,976	.num_parents = ARRAY_SIZE(gcc_parent_data_1),977	.ops = &clk_rcg2_ops,978};979 980static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {981	.cmd_rcgr = 0x1f608,982	.mnd_width = 16,983	.hid_width = 5,984	.parent_map = gcc_parent_map_1,985	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,986	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,987};988 989static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {990	.name = "gcc_qupv3_wrap0_s5_clk_src",991	.parent_data = gcc_parent_data_1,992	.num_parents = ARRAY_SIZE(gcc_parent_data_1),993	.ops = &clk_rcg2_ops,994};995 996static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {997	.cmd_rcgr = 0x1f738,998	.mnd_width = 16,999	.hid_width = 5,1000	.parent_map = gcc_parent_map_1,1001	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1002	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,1003};1004 1005static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {1006	.name = "gcc_qupv3_wrap1_s0_clk_src",1007	.parent_data = gcc_parent_data_1,1008	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1009	.ops = &clk_rcg2_ops,1010};1011 1012static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {1013	.cmd_rcgr = 0x39148,1014	.mnd_width = 16,1015	.hid_width = 5,1016	.parent_map = gcc_parent_map_1,1017	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1018	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,1019};1020 1021static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {1022	.name = "gcc_qupv3_wrap1_s1_clk_src",1023	.parent_data = gcc_parent_data_1,1024	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1025	.ops = &clk_rcg2_ops,1026};1027 1028static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {1029	.cmd_rcgr = 0x39278,1030	.mnd_width = 16,1031	.hid_width = 5,1032	.parent_map = gcc_parent_map_1,1033	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1034	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,1035};1036 1037static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {1038	.name = "gcc_qupv3_wrap1_s2_clk_src",1039	.parent_data = gcc_parent_data_1,1040	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1041	.ops = &clk_rcg2_ops,1042};1043 1044static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {1045	.cmd_rcgr = 0x393a8,1046	.mnd_width = 16,1047	.hid_width = 5,1048	.parent_map = gcc_parent_map_1,1049	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1050	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,1051};1052 1053static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {1054	.name = "gcc_qupv3_wrap1_s3_clk_src",1055	.parent_data = gcc_parent_data_1,1056	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1057	.ops = &clk_rcg2_ops,1058};1059 1060static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {1061	.cmd_rcgr = 0x394d8,1062	.mnd_width = 16,1063	.hid_width = 5,1064	.parent_map = gcc_parent_map_1,1065	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1066	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,1067};1068 1069static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {1070	.name = "gcc_qupv3_wrap1_s4_clk_src",1071	.parent_data = gcc_parent_data_1,1072	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1073	.ops = &clk_rcg2_ops,1074};1075 1076static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {1077	.cmd_rcgr = 0x39608,1078	.mnd_width = 16,1079	.hid_width = 5,1080	.parent_map = gcc_parent_map_1,1081	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1082	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,1083};1084 1085static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {1086	.name = "gcc_qupv3_wrap1_s5_clk_src",1087	.parent_data = gcc_parent_data_1,1088	.num_parents = ARRAY_SIZE(gcc_parent_data_1),1089	.ops = &clk_rcg2_ops,1090};1091 1092static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {1093	.cmd_rcgr = 0x39738,1094	.mnd_width = 16,1095	.hid_width = 5,1096	.parent_map = gcc_parent_map_1,1097	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1098	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,1099};1100 1101static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {1102	F(144000, P_BI_TCXO, 16, 3, 25),1103	F(400000, P_BI_TCXO, 12, 1, 4),1104	F(20000000, P_GPLL0_OUT_AUX2, 5, 1, 3),1105	F(25000000, P_GPLL0_OUT_AUX2, 6, 1, 2),1106	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1107	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1108	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),1109	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),1110	{ }1111};1112 1113static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {1114	.cmd_rcgr = 0x38028,1115	.mnd_width = 8,1116	.hid_width = 5,1117	.parent_map = gcc_parent_map_1,1118	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,1119	.clkr.hw.init = &(struct clk_init_data){1120		.name = "gcc_sdcc1_apps_clk_src",1121		.parent_data = gcc_parent_data_1,1122		.num_parents = ARRAY_SIZE(gcc_parent_data_1),1123		.ops = &clk_rcg2_floor_ops,1124	},1125};1126 1127static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {1128	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1129	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),1130	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1131	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),1132	{ }1133};1134 1135static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {1136	.cmd_rcgr = 0x38010,1137	.mnd_width = 0,1138	.hid_width = 5,1139	.parent_map = gcc_parent_map_0,1140	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,1141	.clkr.hw.init = &(struct clk_init_data){1142		.name = "gcc_sdcc1_ice_core_clk_src",1143		.parent_data = gcc_parent_data_0,1144		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1145		.ops = &clk_rcg2_ops,1146	},1147};1148 1149static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {1150	F(400000, P_BI_TCXO, 12, 1, 4),1151	F(19200000, P_BI_TCXO, 1, 0, 0),1152	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),1153	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1154	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),1155	{ }1156};1157 1158static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {1159	.cmd_rcgr = 0x1e00c,1160	.mnd_width = 8,1161	.hid_width = 5,1162	.parent_map = gcc_parent_map_13,1163	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,1164	.clkr.hw.init = &(struct clk_init_data){1165		.name = "gcc_sdcc2_apps_clk_src",1166		.parent_data = gcc_parent_data_13,1167		.num_parents = ARRAY_SIZE(gcc_parent_data_13),1168		.ops = &clk_rcg2_floor_ops,1169	},1170};1171 1172static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {1173	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),1174	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),1175	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),1176	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1177	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),1178	{ }1179};1180 1181static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {1182	.cmd_rcgr = 0x45020,1183	.mnd_width = 8,1184	.hid_width = 5,1185	.parent_map = gcc_parent_map_0,1186	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,1187	.clkr.hw.init = &(struct clk_init_data){1188		.name = "gcc_ufs_phy_axi_clk_src",1189		.parent_data = gcc_parent_data_0,1190		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1191		.ops = &clk_rcg2_ops,1192	},1193};1194 1195static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {1196	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),1197	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),1198	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),1199	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),1200	{ }1201};1202 1203static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {1204	.cmd_rcgr = 0x45048,1205	.mnd_width = 0,1206	.hid_width = 5,1207	.parent_map = gcc_parent_map_0,1208	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,1209	.clkr.hw.init = &(struct clk_init_data){1210		.name = "gcc_ufs_phy_ice_core_clk_src",1211		.parent_data = gcc_parent_data_0,1212		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1213		.ops = &clk_rcg2_ops,1214	},1215};1216 1217static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {1218	F(9600000, P_BI_TCXO, 2, 0, 0),1219	F(19200000, P_BI_TCXO, 1, 0, 0),1220	{ }1221};1222 1223static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {1224	.cmd_rcgr = 0x4507c,1225	.mnd_width = 0,1226	.hid_width = 5,1227	.parent_map = gcc_parent_map_0,1228	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,1229	.clkr.hw.init = &(struct clk_init_data){1230		.name = "gcc_ufs_phy_phy_aux_clk_src",1231		.parent_data = gcc_parent_data_0,1232		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1233		.ops = &clk_rcg2_ops,1234	},1235};1236 1237static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {1238	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),1239	F(75000000, P_GPLL0_OUT_EARLY, 8, 0, 0),1240	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),1241	{ }1242};1243 1244static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {1245	.cmd_rcgr = 0x45060,1246	.mnd_width = 0,1247	.hid_width = 5,1248	.parent_map = gcc_parent_map_0,1249	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,1250	.clkr.hw.init = &(struct clk_init_data){1251		.name = "gcc_ufs_phy_unipro_core_clk_src",1252		.parent_data = gcc_parent_data_0,1253		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1254		.ops = &clk_rcg2_ops,1255	},1256};1257 1258static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {1259	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),1260	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),1261	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),1262	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),1263	{ }1264};1265 1266static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1267	.cmd_rcgr = 0x1a01c,1268	.mnd_width = 8,1269	.hid_width = 5,1270	.parent_map = gcc_parent_map_0,1271	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1272	.clkr.hw.init = &(struct clk_init_data){1273		.name = "gcc_usb30_prim_master_clk_src",1274		.parent_data = gcc_parent_data_0,1275		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1276		.ops = &clk_rcg2_ops,1277	},1278};1279 1280static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {1281	F(19200000, P_BI_TCXO, 1, 0, 0),1282	F(20000000, P_GPLL0_OUT_AUX2, 15, 0, 0),1283	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),1284	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),1285	{ }1286};1287 1288static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1289	.cmd_rcgr = 0x1a034,1290	.mnd_width = 0,1291	.hid_width = 5,1292	.parent_map = gcc_parent_map_0,1293	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,1294	.clkr.hw.init = &(struct clk_init_data){1295		.name = "gcc_usb30_prim_mock_utmi_clk_src",1296		.parent_data = gcc_parent_data_0,1297		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1298		.ops = &clk_rcg2_ops,1299	},1300};1301 1302static const struct freq_tbl ftbl_gcc_usb3_prim_phy_aux_clk_src[] = {1303	F(19200000, P_BI_TCXO, 1, 0, 0),1304	{ }1305};1306 1307static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1308	.cmd_rcgr = 0x1a060,1309	.mnd_width = 0,1310	.hid_width = 5,1311	.parent_map = gcc_parent_map_14,1312	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,1313	.clkr.hw.init = &(struct clk_init_data){1314		.name = "gcc_usb3_prim_phy_aux_clk_src",1315		.parent_data = gcc_parent_data_14,1316		.num_parents = ARRAY_SIZE(gcc_parent_data_14),1317		.ops = &clk_rcg2_ops,1318	},1319};1320 1321static struct clk_rcg2 gcc_vs_ctrl_clk_src = {1322	.cmd_rcgr = 0x42030,1323	.mnd_width = 0,1324	.hid_width = 5,1325	.parent_map = gcc_parent_map_5,1326	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,1327	.clkr.hw.init = &(struct clk_init_data){1328		.name = "gcc_vs_ctrl_clk_src",1329		.parent_data = gcc_parent_data_5,1330		.num_parents = ARRAY_SIZE(gcc_parent_data_5),1331		.ops = &clk_rcg2_ops,1332	},1333};1334 1335static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {1336	F(19200000, P_BI_TCXO, 1, 0, 0),1337	F(400000000, P_GPLL0_OUT_EARLY, 1.5, 0, 0),1338	F(600000000, P_GPLL0_OUT_EARLY, 1, 0, 0),1339	{ }1340};1341 1342static struct clk_rcg2 gcc_vsensor_clk_src = {1343	.cmd_rcgr = 0x42018,1344	.mnd_width = 0,1345	.hid_width = 5,1346	.parent_map = gcc_parent_map_5,1347	.freq_tbl = ftbl_gcc_vsensor_clk_src,1348	.clkr.hw.init = &(struct clk_init_data){1349		.name = "gcc_vsensor_clk_src",1350		.parent_data = gcc_parent_data_5,1351		.num_parents = ARRAY_SIZE(gcc_parent_data_5),1352		.ops = &clk_rcg2_ops,1353	},1354};1355 1356static struct clk_branch gcc_ahb2phy_csi_clk = {1357	.halt_reg = 0x1d004,1358	.halt_check = BRANCH_HALT,1359	.hwcg_reg = 0x1d004,1360	.hwcg_bit = 1,1361	.clkr = {1362		.enable_reg = 0x1d004,1363		.enable_mask = BIT(0),1364		.hw.init = &(struct clk_init_data){1365			.name = "gcc_ahb2phy_csi_clk",1366			.ops = &clk_branch2_ops,1367		},1368	},1369};1370 1371static struct clk_branch gcc_ahb2phy_usb_clk = {1372	.halt_reg = 0x1d008,1373	.halt_check = BRANCH_HALT,1374	.hwcg_reg = 0x1d008,1375	.hwcg_bit = 1,1376	.clkr = {1377		.enable_reg = 0x1d008,1378		.enable_mask = BIT(0),1379		.hw.init = &(struct clk_init_data){1380			.name = "gcc_ahb2phy_usb_clk",1381			.ops = &clk_branch2_ops,1382		},1383	},1384};1385 1386static struct clk_branch gcc_apc_vs_clk = {1387	.halt_reg = 0x4204c,1388	.halt_check = BRANCH_HALT,1389	.clkr = {1390		.enable_reg = 0x4204c,1391		.enable_mask = BIT(0),1392		.hw.init = &(struct clk_init_data){1393			.name = "gcc_apc_vs_clk",1394			.parent_hws = (const struct clk_hw*[]){1395				&gcc_vsensor_clk_src.clkr.hw,1396			},1397			.num_parents = 1,1398			.flags = CLK_SET_RATE_PARENT,1399			.ops = &clk_branch2_ops,1400		},1401	},1402};1403 1404static struct clk_branch gcc_bimc_gpu_axi_clk = {1405	.halt_reg = 0x71154,1406	.halt_check = BRANCH_HALT_DELAY,1407	.clkr = {1408		.enable_reg = 0x71154,1409		.enable_mask = BIT(0),1410		.hw.init = &(struct clk_init_data){1411			.name = "gcc_bimc_gpu_axi_clk",1412			.ops = &clk_branch2_ops,1413		},1414	},1415};1416 1417static struct clk_branch gcc_boot_rom_ahb_clk = {1418	.halt_reg = 0x23004,1419	.halt_check = BRANCH_HALT_VOTED,1420	.hwcg_reg = 0x23004,1421	.hwcg_bit = 1,1422	.clkr = {1423		.enable_reg = 0x79004,1424		.enable_mask = BIT(10),1425		.hw.init = &(struct clk_init_data){1426			.name = "gcc_boot_rom_ahb_clk",1427			.ops = &clk_branch2_ops,1428		},1429	},1430};1431 1432static struct clk_branch gcc_camera_ahb_clk = {1433	.halt_reg = 0x17008,1434	.halt_check = BRANCH_HALT_DELAY,1435	.hwcg_reg = 0x17008,1436	.hwcg_bit = 1,1437	.clkr = {1438		.enable_reg = 0x17008,1439		.enable_mask = BIT(0),1440		.hw.init = &(struct clk_init_data){1441			.name = "gcc_camera_ahb_clk",1442			.flags = CLK_IS_CRITICAL,1443			.ops = &clk_branch2_ops,1444		},1445	},1446};1447 1448static struct clk_branch gcc_camera_xo_clk = {1449	.halt_reg = 0x17028,1450	.halt_check = BRANCH_HALT,1451	.clkr = {1452		.enable_reg = 0x17028,1453		.enable_mask = BIT(0),1454		.hw.init = &(struct clk_init_data){1455			.name = "gcc_camera_xo_clk",1456			.flags = CLK_IS_CRITICAL,1457			.ops = &clk_branch2_ops,1458		},1459	},1460};1461 1462static struct clk_branch gcc_camss_cci_ahb_clk = {1463	.halt_reg = 0x52020,1464	.halt_check = BRANCH_HALT,1465	.clkr = {1466		.enable_reg = 0x52020,1467		.enable_mask = BIT(0),1468		.hw.init = &(struct clk_init_data){1469			.name = "gcc_camss_cci_ahb_clk",1470			.parent_hws = (const struct clk_hw*[]){1471				&gcc_camss_ahb_clk_src.clkr.hw,1472			},1473			.num_parents = 1,1474			.flags = CLK_SET_RATE_PARENT,1475			.ops = &clk_branch2_ops,1476		},1477	},1478};1479 1480static struct clk_branch gcc_camss_cci_clk = {1481	.halt_reg = 0x5201c,1482	.halt_check = BRANCH_HALT,1483	.clkr = {1484		.enable_reg = 0x5201c,1485		.enable_mask = BIT(0),1486		.hw.init = &(struct clk_init_data){1487			.name = "gcc_camss_cci_clk",1488			.parent_hws = (const struct clk_hw*[]){1489				&gcc_camss_cci_clk_src.clkr.hw,1490			},1491			.num_parents = 1,1492			.flags = CLK_SET_RATE_PARENT,1493			.ops = &clk_branch2_ops,1494		},1495	},1496};1497 1498static struct clk_branch gcc_camss_cphy_csid0_clk = {1499	.halt_reg = 0x5504c,1500	.halt_check = BRANCH_HALT,1501	.clkr = {1502		.enable_reg = 0x5504c,1503		.enable_mask = BIT(0),1504		.hw.init = &(struct clk_init_data){1505			.name = "gcc_camss_cphy_csid0_clk",1506			.parent_hws = (const struct clk_hw*[]){1507				&gcc_camss_csiphy_clk_src.clkr.hw,1508			},1509			.num_parents = 1,1510			.flags = CLK_SET_RATE_PARENT,1511			.ops = &clk_branch2_ops,1512		},1513	},1514};1515 1516static struct clk_branch gcc_camss_cphy_csid1_clk = {1517	.halt_reg = 0x55088,1518	.halt_check = BRANCH_HALT,1519	.clkr = {1520		.enable_reg = 0x55088,1521		.enable_mask = BIT(0),1522		.hw.init = &(struct clk_init_data){1523			.name = "gcc_camss_cphy_csid1_clk",1524			.parent_hws = (const struct clk_hw*[]){1525				&gcc_camss_csiphy_clk_src.clkr.hw,1526			},1527			.num_parents = 1,1528			.flags = CLK_SET_RATE_PARENT,1529			.ops = &clk_branch2_ops,1530		},1531	},1532};1533 1534static struct clk_branch gcc_camss_cphy_csid2_clk = {1535	.halt_reg = 0x550c0,1536	.halt_check = BRANCH_HALT,1537	.clkr = {1538		.enable_reg = 0x550c0,1539		.enable_mask = BIT(0),1540		.hw.init = &(struct clk_init_data){1541			.name = "gcc_camss_cphy_csid2_clk",1542			.parent_hws = (const struct clk_hw*[]){1543				&gcc_camss_csiphy_clk_src.clkr.hw,1544			},1545			.num_parents = 1,1546			.flags = CLK_SET_RATE_PARENT,1547			.ops = &clk_branch2_ops,1548		},1549	},1550};1551 1552static struct clk_branch gcc_camss_cphy_csid3_clk = {1553	.halt_reg = 0x550fc,1554	.halt_check = BRANCH_HALT,1555	.clkr = {1556		.enable_reg = 0x550fc,1557		.enable_mask = BIT(0),1558		.hw.init = &(struct clk_init_data){1559			.name = "gcc_camss_cphy_csid3_clk",1560			.parent_hws = (const struct clk_hw*[]){1561				&gcc_camss_csiphy_clk_src.clkr.hw,1562			},1563			.num_parents = 1,1564			.flags = CLK_SET_RATE_PARENT,1565			.ops = &clk_branch2_ops,1566		},1567	},1568};1569 1570static struct clk_branch gcc_camss_cpp_ahb_clk = {1571	.halt_reg = 0x560e8,1572	.halt_check = BRANCH_HALT,1573	.clkr = {1574		.enable_reg = 0x560e8,1575		.enable_mask = BIT(0),1576		.hw.init = &(struct clk_init_data){1577			.name = "gcc_camss_cpp_ahb_clk",1578			.parent_hws = (const struct clk_hw*[]){1579				&gcc_camss_ahb_clk_src.clkr.hw,1580			},1581			.num_parents = 1,1582			.flags = CLK_SET_RATE_PARENT,1583			.ops = &clk_branch2_ops,1584		},1585	},1586};1587 1588static struct clk_branch gcc_camss_cpp_axi_clk = {1589	.halt_reg = 0x560f4,1590	.halt_check = BRANCH_HALT,1591	.clkr = {1592		.enable_reg = 0x560f4,1593		.enable_mask = BIT(0),1594		.hw.init = &(struct clk_init_data){1595			.name = "gcc_camss_cpp_axi_clk",1596			.ops = &clk_branch2_ops,1597		},1598	},1599};1600 1601static struct clk_branch gcc_camss_cpp_clk = {1602	.halt_reg = 0x560e0,1603	.halt_check = BRANCH_HALT,1604	.clkr = {1605		.enable_reg = 0x560e0,1606		.enable_mask = BIT(0),1607		.hw.init = &(struct clk_init_data){1608			.name = "gcc_camss_cpp_clk",1609			.parent_hws = (const struct clk_hw*[]){1610				&gcc_camss_cpp_clk_src.clkr.hw,1611			},1612			.num_parents = 1,1613			.flags = CLK_SET_RATE_PARENT,1614			.ops = &clk_branch2_ops,1615		},1616	},1617};1618 1619static struct clk_branch gcc_camss_cpp_vbif_ahb_clk = {1620	.halt_reg = 0x560f0,1621	.halt_check = BRANCH_HALT,1622	.clkr = {1623		.enable_reg = 0x560f0,1624		.enable_mask = BIT(0),1625		.hw.init = &(struct clk_init_data){1626			.name = "gcc_camss_cpp_vbif_ahb_clk",1627			.parent_hws = (const struct clk_hw*[]){1628				&gcc_camss_ahb_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_csi0_ahb_clk = {1638	.halt_reg = 0x55050,1639	.halt_check = BRANCH_HALT,1640	.clkr = {1641		.enable_reg = 0x55050,1642		.enable_mask = BIT(0),1643		.hw.init = &(struct clk_init_data){1644			.name = "gcc_camss_csi0_ahb_clk",1645			.parent_hws = (const struct clk_hw*[]){1646				&gcc_camss_ahb_clk_src.clkr.hw,1647			},1648			.num_parents = 1,1649			.flags = CLK_SET_RATE_PARENT,1650			.ops = &clk_branch2_ops,1651		},1652	},1653};1654 1655static struct clk_branch gcc_camss_csi0_clk = {1656	.halt_reg = 0x55048,1657	.halt_check = BRANCH_HALT,1658	.clkr = {1659		.enable_reg = 0x55048,1660		.enable_mask = BIT(0),1661		.hw.init = &(struct clk_init_data){1662			.name = "gcc_camss_csi0_clk",1663			.parent_hws = (const struct clk_hw*[]){1664				&gcc_camss_csi0_clk_src.clkr.hw,1665			},1666			.num_parents = 1,1667			.flags = CLK_SET_RATE_PARENT,1668			.ops = &clk_branch2_ops,1669		},1670	},1671};1672 1673static struct clk_branch gcc_camss_csi0phytimer_clk = {1674	.halt_reg = 0x5301c,1675	.halt_check = BRANCH_HALT,1676	.clkr = {1677		.enable_reg = 0x5301c,1678		.enable_mask = BIT(0),1679		.hw.init = &(struct clk_init_data){1680			.name = "gcc_camss_csi0phytimer_clk",1681			.parent_hws = (const struct clk_hw*[]){1682				&gcc_camss_csi0phytimer_clk_src.clkr.hw,1683			},1684			.num_parents = 1,1685			.flags = CLK_SET_RATE_PARENT,1686			.ops = &clk_branch2_ops,1687		},1688	},1689};1690 1691static struct clk_branch gcc_camss_csi0pix_clk = {1692	.halt_reg = 0x55060,1693	.halt_check = BRANCH_HALT,1694	.clkr = {1695		.enable_reg = 0x55060,1696		.enable_mask = BIT(0),1697		.hw.init = &(struct clk_init_data){1698			.name = "gcc_camss_csi0pix_clk",1699			.parent_hws = (const struct clk_hw*[]){1700				&gcc_camss_csi0_clk_src.clkr.hw,1701			},1702			.num_parents = 1,1703			.flags = CLK_SET_RATE_PARENT,1704			.ops = &clk_branch2_ops,1705		},1706	},1707};1708 1709static struct clk_branch gcc_camss_csi0rdi_clk = {1710	.halt_reg = 0x55058,1711	.halt_check = BRANCH_HALT,1712	.clkr = {1713		.enable_reg = 0x55058,1714		.enable_mask = BIT(0),1715		.hw.init = &(struct clk_init_data){1716			.name = "gcc_camss_csi0rdi_clk",1717			.parent_hws = (const struct clk_hw*[]){1718				&gcc_camss_csi0_clk_src.clkr.hw,1719			},1720			.num_parents = 1,1721			.flags = CLK_SET_RATE_PARENT,1722			.ops = &clk_branch2_ops,1723		},1724	},1725};1726 1727static struct clk_branch gcc_camss_csi1_ahb_clk = {1728	.halt_reg = 0x5508c,1729	.halt_check = BRANCH_HALT,1730	.clkr = {1731		.enable_reg = 0x5508c,1732		.enable_mask = BIT(0),1733		.hw.init = &(struct clk_init_data){1734			.name = "gcc_camss_csi1_ahb_clk",1735			.parent_hws = (const struct clk_hw*[]){1736				&gcc_camss_ahb_clk_src.clkr.hw,1737			},1738			.num_parents = 1,1739			.flags = CLK_SET_RATE_PARENT,1740			.ops = &clk_branch2_ops,1741		},1742	},1743};1744 1745static struct clk_branch gcc_camss_csi1_clk = {1746	.halt_reg = 0x55084,1747	.halt_check = BRANCH_HALT,1748	.clkr = {1749		.enable_reg = 0x55084,1750		.enable_mask = BIT(0),1751		.hw.init = &(struct clk_init_data){1752			.name = "gcc_camss_csi1_clk",1753			.parent_hws = (const struct clk_hw*[]){1754				&gcc_camss_csi1_clk_src.clkr.hw,1755			},1756			.num_parents = 1,1757			.flags = CLK_SET_RATE_PARENT,1758			.ops = &clk_branch2_ops,1759		},1760	},1761};1762 1763static struct clk_branch gcc_camss_csi1phytimer_clk = {1764	.halt_reg = 0x5303c,1765	.halt_check = BRANCH_HALT,1766	.clkr = {1767		.enable_reg = 0x5303c,1768		.enable_mask = BIT(0),1769		.hw.init = &(struct clk_init_data){1770			.name = "gcc_camss_csi1phytimer_clk",1771			.parent_hws = (const struct clk_hw*[]){1772				&gcc_camss_csi1phytimer_clk_src.clkr.hw,1773			},1774			.num_parents = 1,1775			.flags = CLK_SET_RATE_PARENT,1776			.ops = &clk_branch2_ops,1777		},1778	},1779};1780 1781static struct clk_branch gcc_camss_csi1pix_clk = {1782	.halt_reg = 0x5509c,1783	.halt_check = BRANCH_HALT,1784	.clkr = {1785		.enable_reg = 0x5509c,1786		.enable_mask = BIT(0),1787		.hw.init = &(struct clk_init_data){1788			.name = "gcc_camss_csi1pix_clk",1789			.parent_hws = (const struct clk_hw*[]){1790				&gcc_camss_csi1_clk_src.clkr.hw,1791			},1792			.num_parents = 1,1793			.flags = CLK_SET_RATE_PARENT,1794			.ops = &clk_branch2_ops,1795		},1796	},1797};1798 1799static struct clk_branch gcc_camss_csi1rdi_clk = {1800	.halt_reg = 0x55094,1801	.halt_check = BRANCH_HALT,1802	.clkr = {1803		.enable_reg = 0x55094,1804		.enable_mask = BIT(0),1805		.hw.init = &(struct clk_init_data){1806			.name = "gcc_camss_csi1rdi_clk",1807			.parent_hws = (const struct clk_hw*[]){1808				&gcc_camss_csi1_clk_src.clkr.hw,1809			},1810			.num_parents = 1,1811			.flags = CLK_SET_RATE_PARENT,1812			.ops = &clk_branch2_ops,1813		},1814	},1815};1816 1817static struct clk_branch gcc_camss_csi2_ahb_clk = {1818	.halt_reg = 0x550c4,1819	.halt_check = BRANCH_HALT,1820	.clkr = {1821		.enable_reg = 0x550c4,1822		.enable_mask = BIT(0),1823		.hw.init = &(struct clk_init_data){1824			.name = "gcc_camss_csi2_ahb_clk",1825			.parent_hws = (const struct clk_hw*[]){1826				&gcc_camss_ahb_clk_src.clkr.hw,1827			},1828			.num_parents = 1,1829			.flags = CLK_SET_RATE_PARENT,1830			.ops = &clk_branch2_ops,1831		},1832	},1833};1834 1835static struct clk_branch gcc_camss_csi2_clk = {1836	.halt_reg = 0x550bc,1837	.halt_check = BRANCH_HALT,1838	.clkr = {1839		.enable_reg = 0x550bc,1840		.enable_mask = BIT(0),1841		.hw.init = &(struct clk_init_data){1842			.name = "gcc_camss_csi2_clk",1843			.parent_hws = (const struct clk_hw*[]){1844				&gcc_camss_csi2_clk_src.clkr.hw,1845			},1846			.num_parents = 1,1847			.flags = CLK_SET_RATE_PARENT,1848			.ops = &clk_branch2_ops,1849		},1850	},1851};1852 1853static struct clk_branch gcc_camss_csi2phytimer_clk = {1854	.halt_reg = 0x5305c,1855	.halt_check = BRANCH_HALT,1856	.clkr = {1857		.enable_reg = 0x5305c,1858		.enable_mask = BIT(0),1859		.hw.init = &(struct clk_init_data){1860			.name = "gcc_camss_csi2phytimer_clk",1861			.parent_hws = (const struct clk_hw*[]){1862				&gcc_camss_csi2phytimer_clk_src.clkr.hw,1863			},1864			.num_parents = 1,1865			.flags = CLK_SET_RATE_PARENT,1866			.ops = &clk_branch2_ops,1867		},1868	},1869};1870 1871static struct clk_branch gcc_camss_csi2pix_clk = {1872	.halt_reg = 0x550d4,1873	.halt_check = BRANCH_HALT,1874	.clkr = {1875		.enable_reg = 0x550d4,1876		.enable_mask = BIT(0),1877		.hw.init = &(struct clk_init_data){1878			.name = "gcc_camss_csi2pix_clk",1879			.parent_hws = (const struct clk_hw*[]){1880				&gcc_camss_csi2_clk_src.clkr.hw,1881			},1882			.num_parents = 1,1883			.flags = CLK_SET_RATE_PARENT,1884			.ops = &clk_branch2_ops,1885		},1886	},1887};1888 1889static struct clk_branch gcc_camss_csi2rdi_clk = {1890	.halt_reg = 0x550cc,1891	.halt_check = BRANCH_HALT,1892	.clkr = {1893		.enable_reg = 0x550cc,1894		.enable_mask = BIT(0),1895		.hw.init = &(struct clk_init_data){1896			.name = "gcc_camss_csi2rdi_clk",1897			.parent_hws = (const struct clk_hw*[]){1898				&gcc_camss_csi2_clk_src.clkr.hw,1899			},1900			.num_parents = 1,1901			.flags = CLK_SET_RATE_PARENT,1902			.ops = &clk_branch2_ops,1903		},1904	},1905};1906 1907static struct clk_branch gcc_camss_csi3_ahb_clk = {1908	.halt_reg = 0x55100,1909	.halt_check = BRANCH_HALT,1910	.clkr = {1911		.enable_reg = 0x55100,1912		.enable_mask = BIT(0),1913		.hw.init = &(struct clk_init_data){1914			.name = "gcc_camss_csi3_ahb_clk",1915			.parent_hws = (const struct clk_hw*[]){1916				&gcc_camss_ahb_clk_src.clkr.hw,1917			},1918			.num_parents = 1,1919			.flags = CLK_SET_RATE_PARENT,1920			.ops = &clk_branch2_ops,1921		},1922	},1923};1924 1925static struct clk_branch gcc_camss_csi3_clk = {1926	.halt_reg = 0x550f8,1927	.halt_check = BRANCH_HALT,1928	.clkr = {1929		.enable_reg = 0x550f8,1930		.enable_mask = BIT(0),1931		.hw.init = &(struct clk_init_data){1932			.name = "gcc_camss_csi3_clk",1933			.parent_hws = (const struct clk_hw*[]){1934				&gcc_camss_csi3_clk_src.clkr.hw,1935			},1936			.num_parents = 1,1937			.flags = CLK_SET_RATE_PARENT,1938			.ops = &clk_branch2_ops,1939		},1940	},1941};1942 1943static struct clk_branch gcc_camss_csi3pix_clk = {1944	.halt_reg = 0x55110,1945	.halt_check = BRANCH_HALT,1946	.clkr = {1947		.enable_reg = 0x55110,1948		.enable_mask = BIT(0),1949		.hw.init = &(struct clk_init_data){1950			.name = "gcc_camss_csi3pix_clk",1951			.parent_hws = (const struct clk_hw*[]){1952				&gcc_camss_csi3_clk_src.clkr.hw,1953			},1954			.num_parents = 1,1955			.flags = CLK_SET_RATE_PARENT,1956			.ops = &clk_branch2_ops,1957		},1958	},1959};1960 1961static struct clk_branch gcc_camss_csi3rdi_clk = {1962	.halt_reg = 0x55108,1963	.halt_check = BRANCH_HALT,1964	.clkr = {1965		.enable_reg = 0x55108,1966		.enable_mask = BIT(0),1967		.hw.init = &(struct clk_init_data){1968			.name = "gcc_camss_csi3rdi_clk",1969			.parent_hws = (const struct clk_hw*[]){1970				&gcc_camss_csi3_clk_src.clkr.hw,1971			},1972			.num_parents = 1,1973			.flags = CLK_SET_RATE_PARENT,1974			.ops = &clk_branch2_ops,1975		},1976	},1977};1978 1979static struct clk_branch gcc_camss_csi_vfe0_clk = {1980	.halt_reg = 0x54074,1981	.halt_check = BRANCH_HALT,1982	.clkr = {1983		.enable_reg = 0x54074,1984		.enable_mask = BIT(0),1985		.hw.init = &(struct clk_init_data){1986			.name = "gcc_camss_csi_vfe0_clk",1987			.parent_hws = (const struct clk_hw*[]){1988				&gcc_camss_vfe0_clk_src.clkr.hw,1989			},1990			.num_parents = 1,1991			.flags = CLK_SET_RATE_PARENT,1992			.ops = &clk_branch2_ops,1993		},1994	},1995};1996 1997static struct clk_branch gcc_camss_csi_vfe1_clk = {1998	.halt_reg = 0x54080,1999	.halt_check = BRANCH_HALT,2000	.clkr = {2001		.enable_reg = 0x54080,2002		.enable_mask = BIT(0),2003		.hw.init = &(struct clk_init_data){2004			.name = "gcc_camss_csi_vfe1_clk",2005			.parent_hws = (const struct clk_hw*[]){2006				&gcc_camss_vfe1_clk_src.clkr.hw,2007			},2008			.num_parents = 1,2009			.flags = CLK_SET_RATE_PARENT,2010			.ops = &clk_branch2_ops,2011		},2012	},2013};2014 2015static struct clk_branch gcc_camss_csiphy0_clk = {2016	.halt_reg = 0x55018,2017	.halt_check = BRANCH_HALT,2018	.clkr = {2019		.enable_reg = 0x55018,2020		.enable_mask = BIT(0),2021		.hw.init = &(struct clk_init_data){2022			.name = "gcc_camss_csiphy0_clk",2023			.parent_hws = (const struct clk_hw*[]){2024				&gcc_camss_csiphy_clk_src.clkr.hw,2025			},2026			.num_parents = 1,2027			.flags = CLK_SET_RATE_PARENT,2028			.ops = &clk_branch2_ops,2029		},2030	},2031};2032 2033static struct clk_branch gcc_camss_csiphy1_clk = {2034	.halt_reg = 0x5501c,2035	.halt_check = BRANCH_HALT,2036	.clkr = {2037		.enable_reg = 0x5501c,2038		.enable_mask = BIT(0),2039		.hw.init = &(struct clk_init_data){2040			.name = "gcc_camss_csiphy1_clk",2041			.parent_hws = (const struct clk_hw*[]){2042				&gcc_camss_csiphy_clk_src.clkr.hw,2043			},2044			.num_parents = 1,2045			.flags = CLK_SET_RATE_PARENT,2046			.ops = &clk_branch2_ops,2047		},2048	},2049};2050 2051static struct clk_branch gcc_camss_csiphy2_clk = {2052	.halt_reg = 0x55020,2053	.halt_check = BRANCH_HALT,2054	.clkr = {2055		.enable_reg = 0x55020,2056		.enable_mask = BIT(0),2057		.hw.init = &(struct clk_init_data){2058			.name = "gcc_camss_csiphy2_clk",2059			.parent_hws = (const struct clk_hw*[]){2060				&gcc_camss_csiphy_clk_src.clkr.hw,2061			},2062			.num_parents = 1,2063			.flags = CLK_SET_RATE_PARENT,2064			.ops = &clk_branch2_ops,2065		},2066	},2067};2068 2069static struct clk_branch gcc_camss_gp0_clk = {2070	.halt_reg = 0x50018,2071	.halt_check = BRANCH_HALT,2072	.clkr = {2073		.enable_reg = 0x50018,2074		.enable_mask = BIT(0),2075		.hw.init = &(struct clk_init_data){2076			.name = "gcc_camss_gp0_clk",2077			.parent_hws = (const struct clk_hw*[]){2078				&gcc_camss_gp0_clk_src.clkr.hw,2079			},2080			.num_parents = 1,2081			.flags = CLK_SET_RATE_PARENT,2082			.ops = &clk_branch2_ops,2083		},2084	},2085};2086 2087static struct clk_branch gcc_camss_gp1_clk = {2088	.halt_reg = 0x50034,2089	.halt_check = BRANCH_HALT,2090	.clkr = {2091		.enable_reg = 0x50034,2092		.enable_mask = BIT(0),2093		.hw.init = &(struct clk_init_data){2094			.name = "gcc_camss_gp1_clk",2095			.parent_hws = (const struct clk_hw*[]){2096				&gcc_camss_gp1_clk_src.clkr.hw,2097			},2098			.num_parents = 1,2099			.flags = CLK_SET_RATE_PARENT,2100			.ops = &clk_branch2_ops,2101		},2102	},2103};2104 2105static struct clk_branch gcc_camss_ispif_ahb_clk = {2106	.halt_reg = 0x540a4,2107	.halt_check = BRANCH_HALT,2108	.clkr = {2109		.enable_reg = 0x540a4,2110		.enable_mask = BIT(0),2111		.hw.init = &(struct clk_init_data){2112			.name = "gcc_camss_ispif_ahb_clk",2113			.parent_hws = (const struct clk_hw*[]){2114				&gcc_camss_ahb_clk_src.clkr.hw,2115			},2116			.num_parents = 1,2117			.flags = CLK_SET_RATE_PARENT,2118			.ops = &clk_branch2_ops,2119		},2120	},2121};2122 2123static struct clk_branch gcc_camss_jpeg_ahb_clk = {2124	.halt_reg = 0x52048,2125	.halt_check = BRANCH_HALT,2126	.clkr = {2127		.enable_reg = 0x52048,2128		.enable_mask = BIT(0),2129		.hw.init = &(struct clk_init_data){2130			.name = "gcc_camss_jpeg_ahb_clk",2131			.parent_hws = (const struct clk_hw*[]){2132				&gcc_camss_ahb_clk_src.clkr.hw,2133			},2134			.num_parents = 1,2135			.flags = CLK_SET_RATE_PARENT,2136			.ops = &clk_branch2_ops,2137		},2138	},2139};2140 2141static struct clk_branch gcc_camss_jpeg_axi_clk = {2142	.halt_reg = 0x5204c,2143	.halt_check = BRANCH_HALT,2144	.clkr = {2145		.enable_reg = 0x5204c,2146		.enable_mask = BIT(0),2147		.hw.init = &(struct clk_init_data){2148			.name = "gcc_camss_jpeg_axi_clk",2149			.ops = &clk_branch2_ops,2150		},2151	},2152};2153 2154static struct clk_branch gcc_camss_jpeg_clk = {2155	.halt_reg = 0x52040,2156	.halt_check = BRANCH_HALT,2157	.clkr = {2158		.enable_reg = 0x52040,2159		.enable_mask = BIT(0),2160		.hw.init = &(struct clk_init_data){2161			.name = "gcc_camss_jpeg_clk",2162			.parent_hws = (const struct clk_hw*[]){2163				&gcc_camss_jpeg_clk_src.clkr.hw,2164			},2165			.num_parents = 1,2166			.flags = CLK_SET_RATE_PARENT,2167			.ops = &clk_branch2_ops,2168		},2169	},2170};2171 2172static struct clk_branch gcc_camss_mclk0_clk = {2173	.halt_reg = 0x51018,2174	.halt_check = BRANCH_HALT,2175	.clkr = {2176		.enable_reg = 0x51018,2177		.enable_mask = BIT(0),2178		.hw.init = &(struct clk_init_data){2179			.name = "gcc_camss_mclk0_clk",2180			.parent_hws = (const struct clk_hw*[]){2181				&gcc_camss_mclk0_clk_src.clkr.hw,2182			},2183			.num_parents = 1,2184			.flags = CLK_SET_RATE_PARENT,2185			.ops = &clk_branch2_ops,2186		},2187	},2188};2189 2190static struct clk_branch gcc_camss_mclk1_clk = {2191	.halt_reg = 0x51034,2192	.halt_check = BRANCH_HALT,2193	.clkr = {2194		.enable_reg = 0x51034,2195		.enable_mask = BIT(0),2196		.hw.init = &(struct clk_init_data){2197			.name = "gcc_camss_mclk1_clk",2198			.parent_hws = (const struct clk_hw*[]){2199				&gcc_camss_mclk1_clk_src.clkr.hw,2200			},2201			.num_parents = 1,2202			.flags = CLK_SET_RATE_PARENT,2203			.ops = &clk_branch2_ops,2204		},2205	},2206};2207 2208static struct clk_branch gcc_camss_mclk2_clk = {2209	.halt_reg = 0x51050,2210	.halt_check = BRANCH_HALT,2211	.clkr = {2212		.enable_reg = 0x51050,2213		.enable_mask = BIT(0),2214		.hw.init = &(struct clk_init_data){2215			.name = "gcc_camss_mclk2_clk",2216			.parent_hws = (const struct clk_hw*[]){2217				&gcc_camss_mclk2_clk_src.clkr.hw,2218			},2219			.num_parents = 1,2220			.flags = CLK_SET_RATE_PARENT,2221			.ops = &clk_branch2_ops,2222		},2223	},2224};2225 2226static struct clk_branch gcc_camss_mclk3_clk = {2227	.halt_reg = 0x5106c,2228	.halt_check = BRANCH_HALT,2229	.clkr = {2230		.enable_reg = 0x5106c,2231		.enable_mask = BIT(0),2232		.hw.init = &(struct clk_init_data){2233			.name = "gcc_camss_mclk3_clk",2234			.parent_hws = (const struct clk_hw*[]){2235				&gcc_camss_mclk3_clk_src.clkr.hw,2236			},2237			.num_parents = 1,2238			.flags = CLK_SET_RATE_PARENT,2239			.ops = &clk_branch2_ops,2240		},2241	},2242};2243 2244static struct clk_branch gcc_camss_micro_ahb_clk = {2245	.halt_reg = 0x560b0,2246	.halt_check = BRANCH_HALT,2247	.clkr = {2248		.enable_reg = 0x560b0,2249		.enable_mask = BIT(0),2250		.hw.init = &(struct clk_init_data){2251			.name = "gcc_camss_micro_ahb_clk",2252			.parent_hws = (const struct clk_hw*[]){2253				&gcc_camss_ahb_clk_src.clkr.hw,2254			},2255			.num_parents = 1,2256			.flags = CLK_SET_RATE_PARENT,2257			.ops = &clk_branch2_ops,2258		},2259	},2260};2261 2262static struct clk_branch gcc_camss_throttle_nrt_axi_clk = {2263	.halt_reg = 0x560a4,2264	.halt_check = BRANCH_HALT_VOTED,2265	.clkr = {2266		.enable_reg = 0x79004,2267		.enable_mask = BIT(27),2268		.hw.init = &(struct clk_init_data){2269			.name = "gcc_camss_throttle_nrt_axi_clk",2270			.ops = &clk_branch2_ops,2271		},2272	},2273};2274 2275static struct clk_branch gcc_camss_throttle_rt_axi_clk = {2276	.halt_reg = 0x560a8,2277	.halt_check = BRANCH_HALT_VOTED,2278	.clkr = {2279		.enable_reg = 0x79004,2280		.enable_mask = BIT(26),2281		.hw.init = &(struct clk_init_data){2282			.name = "gcc_camss_throttle_rt_axi_clk",2283			.ops = &clk_branch2_ops,2284		},2285	},2286};2287 2288static struct clk_branch gcc_camss_top_ahb_clk = {2289	.halt_reg = 0x560a0,2290	.halt_check = BRANCH_HALT,2291	.clkr = {2292		.enable_reg = 0x560a0,2293		.enable_mask = BIT(0),2294		.hw.init = &(struct clk_init_data){2295			.name = "gcc_camss_top_ahb_clk",2296			.parent_hws = (const struct clk_hw*[]){2297				&gcc_camss_ahb_clk_src.clkr.hw,2298			},2299			.num_parents = 1,2300			.flags = CLK_SET_RATE_PARENT,2301			.ops = &clk_branch2_ops,2302		},2303	},2304};2305 2306static struct clk_branch gcc_camss_vfe0_ahb_clk = {2307	.halt_reg = 0x54034,2308	.halt_check = BRANCH_HALT,2309	.clkr = {2310		.enable_reg = 0x54034,2311		.enable_mask = BIT(0),2312		.hw.init = &(struct clk_init_data){2313			.name = "gcc_camss_vfe0_ahb_clk",2314			.parent_hws = (const struct clk_hw*[]){2315				&gcc_camss_ahb_clk_src.clkr.hw,2316			},2317			.num_parents = 1,2318			.flags = CLK_SET_RATE_PARENT,2319			.ops = &clk_branch2_ops,2320		},2321	},2322};2323 2324static struct clk_branch gcc_camss_vfe0_clk = {2325	.halt_reg = 0x54028,2326	.halt_check = BRANCH_HALT,2327	.clkr = {2328		.enable_reg = 0x54028,2329		.enable_mask = BIT(0),2330		.hw.init = &(struct clk_init_data){2331			.name = "gcc_camss_vfe0_clk",2332			.parent_hws = (const struct clk_hw*[]){2333				&gcc_camss_vfe0_clk_src.clkr.hw,2334			},2335			.num_parents = 1,2336			.flags = CLK_SET_RATE_PARENT,2337			.ops = &clk_branch2_ops,2338		},2339	},2340};2341 2342static struct clk_branch gcc_camss_vfe0_stream_clk = {2343	.halt_reg = 0x54030,2344	.halt_check = BRANCH_HALT,2345	.clkr = {2346		.enable_reg = 0x54030,2347		.enable_mask = BIT(0),2348		.hw.init = &(struct clk_init_data){2349			.name = "gcc_camss_vfe0_stream_clk",2350			.parent_hws = (const struct clk_hw*[]){2351				&gcc_camss_vfe0_clk_src.clkr.hw,2352			},2353			.num_parents = 1,2354			.flags = CLK_SET_RATE_PARENT,2355			.ops = &clk_branch2_ops,2356		},2357	},2358};2359 2360static struct clk_branch gcc_camss_vfe1_ahb_clk = {2361	.halt_reg = 0x5406c,2362	.halt_check = BRANCH_HALT,2363	.clkr = {2364		.enable_reg = 0x5406c,2365		.enable_mask = BIT(0),2366		.hw.init = &(struct clk_init_data){2367			.name = "gcc_camss_vfe1_ahb_clk",2368			.parent_hws = (const struct clk_hw*[]){2369				&gcc_camss_ahb_clk_src.clkr.hw,2370			},2371			.num_parents = 1,2372			.flags = CLK_SET_RATE_PARENT,2373			.ops = &clk_branch2_ops,2374		},2375	},2376};2377 2378static struct clk_branch gcc_camss_vfe1_clk = {2379	.halt_reg = 0x54060,2380	.halt_check = BRANCH_HALT,2381	.clkr = {2382		.enable_reg = 0x54060,2383		.enable_mask = BIT(0),2384		.hw.init = &(struct clk_init_data){2385			.name = "gcc_camss_vfe1_clk",2386			.parent_hws = (const struct clk_hw*[]){2387				&gcc_camss_vfe1_clk_src.clkr.hw,2388			},2389			.num_parents = 1,2390			.flags = CLK_SET_RATE_PARENT,2391			.ops = &clk_branch2_ops,2392		},2393	},2394};2395 2396static struct clk_branch gcc_camss_vfe1_stream_clk = {2397	.halt_reg = 0x54068,2398	.halt_check = BRANCH_HALT,2399	.clkr = {2400		.enable_reg = 0x54068,2401		.enable_mask = BIT(0),2402		.hw.init = &(struct clk_init_data){2403			.name = "gcc_camss_vfe1_stream_clk",2404			.parent_hws = (const struct clk_hw*[]){2405				&gcc_camss_vfe1_clk_src.clkr.hw,2406			},2407			.num_parents = 1,2408			.flags = CLK_SET_RATE_PARENT,2409			.ops = &clk_branch2_ops,2410		},2411	},2412};2413 2414static struct clk_branch gcc_camss_vfe_tsctr_clk = {2415	.halt_reg = 0x5409c,2416	.halt_check = BRANCH_HALT,2417	.clkr = {2418		.enable_reg = 0x5409c,2419		.enable_mask = BIT(0),2420		.hw.init = &(struct clk_init_data){2421			.name = "gcc_camss_vfe_tsctr_clk",2422			.ops = &clk_branch2_ops,2423		},2424	},2425};2426 2427static struct clk_branch gcc_camss_vfe_vbif_ahb_clk = {2428	.halt_reg = 0x5408c,2429	.halt_check = BRANCH_HALT,2430	.clkr = {2431		.enable_reg = 0x5408c,2432		.enable_mask = BIT(0),2433		.hw.init = &(struct clk_init_data){2434			.name = "gcc_camss_vfe_vbif_ahb_clk",2435			.parent_hws = (const struct clk_hw*[]){2436				&gcc_camss_ahb_clk_src.clkr.hw,2437			},2438			.num_parents = 1,2439			.flags = CLK_SET_RATE_PARENT,2440			.ops = &clk_branch2_ops,2441		},2442	},2443};2444 2445static struct clk_branch gcc_camss_vfe_vbif_axi_clk = {2446	.halt_reg = 0x54090,2447	.halt_check = BRANCH_HALT,2448	.clkr = {2449		.enable_reg = 0x54090,2450		.enable_mask = BIT(0),2451		.hw.init = &(struct clk_init_data){2452			.name = "gcc_camss_vfe_vbif_axi_clk",2453			.ops = &clk_branch2_ops,2454		},2455	},2456};2457 2458static struct clk_branch gcc_ce1_ahb_clk = {2459	.halt_reg = 0x2700c,2460	.halt_check = BRANCH_HALT_VOTED,2461	.hwcg_reg = 0x2700c,2462	.hwcg_bit = 1,2463	.clkr = {2464		.enable_reg = 0x79004,2465		.enable_mask = BIT(3),2466		.hw.init = &(struct clk_init_data){2467			.name = "gcc_ce1_ahb_clk",2468			.ops = &clk_branch2_ops,2469		},2470	},2471};2472 2473static struct clk_branch gcc_ce1_axi_clk = {2474	.halt_reg = 0x27008,2475	.halt_check = BRANCH_HALT_VOTED,2476	.clkr = {2477		.enable_reg = 0x79004,2478		.enable_mask = BIT(4),2479		.hw.init = &(struct clk_init_data){2480			.name = "gcc_ce1_axi_clk",2481			.ops = &clk_branch2_ops,2482		},2483	},2484};2485 2486static struct clk_branch gcc_ce1_clk = {2487	.halt_reg = 0x27004,2488	.halt_check = BRANCH_HALT_VOTED,2489	.clkr = {2490		.enable_reg = 0x79004,2491		.enable_mask = BIT(5),2492		.hw.init = &(struct clk_init_data){2493			.name = "gcc_ce1_clk",2494			.ops = &clk_branch2_ops,2495		},2496	},2497};2498 2499static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {2500	.halt_reg = 0x1a084,2501	.halt_check = BRANCH_HALT,2502	.clkr = {2503		.enable_reg = 0x1a084,2504		.enable_mask = BIT(0),2505		.hw.init = &(struct clk_init_data){2506			.name = "gcc_cfg_noc_usb3_prim_axi_clk",2507			.parent_hws = (const struct clk_hw*[]){2508				&gcc_usb30_prim_master_clk_src.clkr.hw,2509			},2510			.num_parents = 1,2511			.flags = CLK_SET_RATE_PARENT,2512			.ops = &clk_branch2_ops,2513		},2514	},2515};2516 2517static struct clk_branch gcc_cpuss_gnoc_clk = {2518	.halt_reg = 0x2b004,2519	.halt_check = BRANCH_HALT_VOTED,2520	.hwcg_reg = 0x2b004,2521	.hwcg_bit = 1,2522	.clkr = {2523		.enable_reg = 0x79004,2524		.enable_mask = BIT(22),2525		.hw.init = &(struct clk_init_data){2526			.name = "gcc_cpuss_gnoc_clk",2527			.flags = CLK_IS_CRITICAL,2528			.ops = &clk_branch2_ops,2529		},2530	},2531};2532 2533static struct clk_branch gcc_disp_ahb_clk = {2534	.halt_reg = 0x1700c,2535	.halt_check = BRANCH_HALT,2536	.hwcg_reg = 0x1700c,2537	.hwcg_bit = 1,2538	.clkr = {2539		.enable_reg = 0x1700c,2540		.enable_mask = BIT(0),2541		.hw.init = &(struct clk_init_data){2542			.name = "gcc_disp_ahb_clk",2543			.flags = CLK_IS_CRITICAL,2544			.ops = &clk_branch2_ops,2545		},2546	},2547};2548 2549static struct clk_branch gcc_disp_gpll0_div_clk_src = {2550	.halt_check = BRANCH_HALT_DELAY,2551	.clkr = {2552		.enable_reg = 0x79004,2553		.enable_mask = BIT(20),2554		.hw.init = &(struct clk_init_data){2555			.name = "gcc_disp_gpll0_div_clk_src",2556			.parent_hws = (const struct clk_hw*[]){2557				&gpll0_out_early.clkr.hw,2558			},2559			.num_parents = 1,2560			.ops = &clk_branch2_ops,2561		},2562	},2563};2564 2565static struct clk_branch gcc_disp_hf_axi_clk = {2566	.halt_reg = 0x17020,2567	.halt_check = BRANCH_HALT,2568	.clkr = {2569		.enable_reg = 0x17020,2570		.enable_mask = BIT(0),2571		.hw.init = &(struct clk_init_data){2572			.name = "gcc_disp_hf_axi_clk",2573			.ops = &clk_branch2_ops,2574		},2575	},2576};2577 2578static struct clk_branch gcc_disp_throttle_core_clk = {2579	.halt_reg = 0x17064,2580	.halt_check = BRANCH_HALT_VOTED,2581	.clkr = {2582		.enable_reg = 0x7900c,2583		.enable_mask = BIT(5),2584		.hw.init = &(struct clk_init_data){2585			.name = "gcc_disp_throttle_core_clk",2586			.ops = &clk_branch2_ops,2587		},2588	},2589};2590 2591static struct clk_branch gcc_disp_xo_clk = {2592	.halt_reg = 0x1702c,2593	.halt_check = BRANCH_HALT,2594	.clkr = {2595		.enable_reg = 0x1702c,2596		.enable_mask = BIT(0),2597		.hw.init = &(struct clk_init_data){2598			.name = "gcc_disp_xo_clk",2599			.flags = CLK_IS_CRITICAL,2600			.ops = &clk_branch2_ops,2601		},2602	},2603};2604 2605static struct clk_branch gcc_gp1_clk = {2606	.halt_reg = 0x4d000,2607	.halt_check = BRANCH_HALT,2608	.clkr = {2609		.enable_reg = 0x4d000,2610		.enable_mask = BIT(0),2611		.hw.init = &(struct clk_init_data){2612			.name = "gcc_gp1_clk",2613			.parent_hws = (const struct clk_hw*[]){2614				&gcc_gp1_clk_src.clkr.hw,2615			},2616			.num_parents = 1,2617			.flags = CLK_SET_RATE_PARENT,2618			.ops = &clk_branch2_ops,2619		},2620	},2621};2622 2623static struct clk_branch gcc_gp2_clk = {2624	.halt_reg = 0x4e000,2625	.halt_check = BRANCH_HALT,2626	.clkr = {2627		.enable_reg = 0x4e000,2628		.enable_mask = BIT(0),2629		.hw.init = &(struct clk_init_data){2630			.name = "gcc_gp2_clk",2631			.parent_hws = (const struct clk_hw*[]){2632				&gcc_gp2_clk_src.clkr.hw,2633			},2634			.num_parents = 1,2635			.flags = CLK_SET_RATE_PARENT,2636			.ops = &clk_branch2_ops,2637		},2638	},2639};2640 2641static struct clk_branch gcc_gp3_clk = {2642	.halt_reg = 0x4f000,2643	.halt_check = BRANCH_HALT,2644	.clkr = {2645		.enable_reg = 0x4f000,2646		.enable_mask = BIT(0),2647		.hw.init = &(struct clk_init_data){2648			.name = "gcc_gp3_clk",2649			.parent_hws = (const struct clk_hw*[]){2650				&gcc_gp3_clk_src.clkr.hw,2651			},2652			.num_parents = 1,2653			.flags = CLK_SET_RATE_PARENT,2654			.ops = &clk_branch2_ops,2655		},2656	},2657};2658 2659static struct clk_branch gcc_gpu_cfg_ahb_clk = {2660	.halt_reg = 0x36004,2661	.halt_check = BRANCH_HALT,2662	.hwcg_reg = 0x36004,2663	.hwcg_bit = 1,2664	.clkr = {2665		.enable_reg = 0x36004,2666		.enable_mask = BIT(0),2667		.hw.init = &(struct clk_init_data){2668			.name = "gcc_gpu_cfg_ahb_clk",2669			.flags = CLK_IS_CRITICAL,2670			.ops = &clk_branch2_ops,2671		},2672	},2673};2674 2675static struct clk_branch gcc_gpu_gpll0_clk_src = {2676	.halt_check = BRANCH_HALT_DELAY,2677	.clkr = {2678		.enable_reg = 0x79004,2679		.enable_mask = BIT(15),2680		.hw.init = &(struct clk_init_data){2681			.name = "gcc_gpu_gpll0_clk_src",2682			.parent_hws = (const struct clk_hw*[]){2683				&gpll0_out_early.clkr.hw,2684			},2685			.num_parents = 1,2686			.ops = &clk_branch2_ops,2687		},2688	},2689};2690 2691static struct clk_branch gcc_gpu_gpll0_div_clk_src = {2692	.halt_check = BRANCH_HALT_DELAY,2693	.clkr = {2694		.enable_reg = 0x79004,2695		.enable_mask = BIT(16),2696		.hw.init = &(struct clk_init_data){2697			.name = "gcc_gpu_gpll0_div_clk_src",2698			.parent_hws = (const struct clk_hw*[]){2699				&gpll0_out_aux2.hw,2700			},2701			.num_parents = 1,2702			.ops = &clk_branch2_ops,2703		},2704	},2705};2706 2707static struct clk_branch gcc_gpu_memnoc_gfx_clk = {2708	.halt_reg = 0x3600c,2709	.halt_check = BRANCH_VOTED,2710	.clkr = {2711		.enable_reg = 0x3600c,2712		.enable_mask = BIT(0),2713		.hw.init = &(struct clk_init_data){2714			.name = "gcc_gpu_memnoc_gfx_clk",2715			.ops = &clk_branch2_ops,2716		},2717	},2718};2719 2720static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {2721	.halt_reg = 0x36018,2722	.halt_check = BRANCH_HALT,2723	.clkr = {2724		.enable_reg = 0x36018,2725		.enable_mask = BIT(0),2726		.hw.init = &(struct clk_init_data){2727			.name = "gcc_gpu_snoc_dvm_gfx_clk",2728			.ops = &clk_branch2_ops,2729		},2730	},2731};2732 2733static struct clk_branch gcc_gpu_throttle_core_clk = {2734	.halt_reg = 0x36048,2735	.halt_check = BRANCH_HALT_VOTED,2736	.clkr = {2737		.enable_reg = 0x79004,2738		.enable_mask = BIT(31),2739		.hw.init = &(struct clk_init_data){2740			.name = "gcc_gpu_throttle_core_clk",2741			.ops = &clk_branch2_ops,2742		},2743	},2744};2745 2746static struct clk_branch gcc_gpu_throttle_xo_clk = {2747	.halt_reg = 0x36044,2748	.halt_check = BRANCH_HALT,2749	.clkr = {2750		.enable_reg = 0x36044,2751		.enable_mask = BIT(0),2752		.hw.init = &(struct clk_init_data){2753			.name = "gcc_gpu_throttle_xo_clk",2754			.ops = &clk_branch2_ops,2755		},2756	},2757};2758 2759static struct clk_branch gcc_mss_vs_clk = {2760	.halt_reg = 0x42048,2761	.halt_check = BRANCH_HALT,2762	.clkr = {2763		.enable_reg = 0x42048,2764		.enable_mask = BIT(0),2765		.hw.init = &(struct clk_init_data){2766			.name = "gcc_mss_vs_clk",2767			.parent_hws = (const struct clk_hw*[]){2768				&gcc_vsensor_clk_src.clkr.hw,2769			},2770			.num_parents = 1,2771			.flags = CLK_SET_RATE_PARENT,2772			.ops = &clk_branch2_ops,2773		},2774	},2775};2776 2777static struct clk_branch gcc_pdm2_clk = {2778	.halt_reg = 0x2000c,2779	.halt_check = BRANCH_HALT,2780	.clkr = {2781		.enable_reg = 0x2000c,2782		.enable_mask = BIT(0),2783		.hw.init = &(struct clk_init_data){2784			.name = "gcc_pdm2_clk",2785			.parent_hws = (const struct clk_hw*[]){2786				&gcc_pdm2_clk_src.clkr.hw,2787			},2788			.num_parents = 1,2789			.flags = CLK_SET_RATE_PARENT,2790			.ops = &clk_branch2_ops,2791		},2792	},2793};2794 2795static struct clk_branch gcc_pdm_ahb_clk = {2796	.halt_reg = 0x20004,2797	.halt_check = BRANCH_HALT,2798	.hwcg_reg = 0x20004,2799	.hwcg_bit = 1,2800	.clkr = {2801		.enable_reg = 0x20004,2802		.enable_mask = BIT(0),2803		.hw.init = &(struct clk_init_data){2804			.name = "gcc_pdm_ahb_clk",2805			.ops = &clk_branch2_ops,2806		},2807	},2808};2809 2810static struct clk_branch gcc_pdm_xo4_clk = {2811	.halt_reg = 0x20008,2812	.halt_check = BRANCH_HALT,2813	.clkr = {2814		.enable_reg = 0x20008,2815		.enable_mask = BIT(0),2816		.hw.init = &(struct clk_init_data){2817			.name = "gcc_pdm_xo4_clk",2818			.ops = &clk_branch2_ops,2819		},2820	},2821};2822 2823static struct clk_branch gcc_prng_ahb_clk = {2824	.halt_reg = 0x21004,2825	.halt_check = BRANCH_HALT_VOTED,2826	.hwcg_reg = 0x21004,2827	.hwcg_bit = 1,2828	.clkr = {2829		.enable_reg = 0x79004,2830		.enable_mask = BIT(13),2831		.hw.init = &(struct clk_init_data){2832			.name = "gcc_prng_ahb_clk",2833			.ops = &clk_branch2_ops,2834		},2835	},2836};2837 2838static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {2839	.halt_reg = 0x17014,2840	.halt_check = BRANCH_HALT,2841	.hwcg_reg = 0x17014,2842	.hwcg_bit = 1,2843	.clkr = {2844		.enable_reg = 0x7900c,2845		.enable_mask = BIT(0),2846		.hw.init = &(struct clk_init_data){2847			.name = "gcc_qmip_camera_nrt_ahb_clk",2848			.ops = &clk_branch2_ops,2849		},2850	},2851};2852 2853static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {2854	.halt_reg = 0x17060,2855	.halt_check = BRANCH_HALT_VOTED,2856	.hwcg_reg = 0x17060,2857	.hwcg_bit = 1,2858	.clkr = {2859		.enable_reg = 0x7900c,2860		.enable_mask = BIT(2),2861		.hw.init = &(struct clk_init_data){2862			.name = "gcc_qmip_camera_rt_ahb_clk",2863			.ops = &clk_branch2_ops,2864		},2865	},2866};2867 2868static struct clk_branch gcc_qmip_disp_ahb_clk = {2869	.halt_reg = 0x17018,2870	.halt_check = BRANCH_HALT,2871	.hwcg_reg = 0x17018,2872	.hwcg_bit = 1,2873	.clkr = {2874		.enable_reg = 0x7900c,2875		.enable_mask = BIT(1),2876		.hw.init = &(struct clk_init_data){2877			.name = "gcc_qmip_disp_ahb_clk",2878			.ops = &clk_branch2_ops,2879		},2880	},2881};2882 2883static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {2884	.halt_reg = 0x36040,2885	.halt_check = BRANCH_HALT_VOTED,2886	.hwcg_reg = 0x36040,2887	.hwcg_bit = 1,2888	.clkr = {2889		.enable_reg = 0x7900c,2890		.enable_mask = BIT(4),2891		.hw.init = &(struct clk_init_data){2892			.name = "gcc_qmip_gpu_cfg_ahb_clk",2893			.ops = &clk_branch2_ops,2894		},2895	},2896};2897 2898static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {2899	.halt_reg = 0x17010,2900	.halt_check = BRANCH_HALT,2901	.hwcg_reg = 0x17010,2902	.hwcg_bit = 1,2903	.clkr = {2904		.enable_reg = 0x79004,2905		.enable_mask = BIT(25),2906		.hw.init = &(struct clk_init_data){2907			.name = "gcc_qmip_video_vcodec_ahb_clk",2908			.ops = &clk_branch2_ops,2909		},2910	},2911};2912 2913static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {2914	.halt_reg = 0x1f014,2915	.halt_check = BRANCH_HALT_VOTED,2916	.clkr = {2917		.enable_reg = 0x7900c,2918		.enable_mask = BIT(9),2919		.hw.init = &(struct clk_init_data){2920			.name = "gcc_qupv3_wrap0_core_2x_clk",2921			.ops = &clk_branch2_ops,2922		},2923	},2924};2925 2926static struct clk_branch gcc_qupv3_wrap0_core_clk = {2927	.halt_reg = 0x1f00c,2928	.halt_check = BRANCH_HALT_VOTED,2929	.clkr = {2930		.enable_reg = 0x7900c,2931		.enable_mask = BIT(8),2932		.hw.init = &(struct clk_init_data){2933			.name = "gcc_qupv3_wrap0_core_clk",2934			.ops = &clk_branch2_ops,2935		},2936	},2937};2938 2939static struct clk_branch gcc_qupv3_wrap0_s0_clk = {2940	.halt_reg = 0x1f144,2941	.halt_check = BRANCH_HALT_VOTED,2942	.clkr = {2943		.enable_reg = 0x7900c,2944		.enable_mask = BIT(10),2945		.hw.init = &(struct clk_init_data){2946			.name = "gcc_qupv3_wrap0_s0_clk",2947			.parent_hws = (const struct clk_hw*[]){2948				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,2949			},2950			.num_parents = 1,2951			.flags = CLK_SET_RATE_PARENT,2952			.ops = &clk_branch2_ops,2953		},2954	},2955};2956 2957static struct clk_branch gcc_qupv3_wrap0_s1_clk = {2958	.halt_reg = 0x1f274,2959	.halt_check = BRANCH_HALT_VOTED,2960	.clkr = {2961		.enable_reg = 0x7900c,2962		.enable_mask = BIT(11),2963		.hw.init = &(struct clk_init_data){2964			.name = "gcc_qupv3_wrap0_s1_clk",2965			.parent_hws = (const struct clk_hw*[]){2966				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,2967			},2968			.num_parents = 1,2969			.flags = CLK_SET_RATE_PARENT,2970			.ops = &clk_branch2_ops,2971		},2972	},2973};2974 2975static struct clk_branch gcc_qupv3_wrap0_s2_clk = {2976	.halt_reg = 0x1f3a4,2977	.halt_check = BRANCH_HALT_VOTED,2978	.clkr = {2979		.enable_reg = 0x7900c,2980		.enable_mask = BIT(12),2981		.hw.init = &(struct clk_init_data){2982			.name = "gcc_qupv3_wrap0_s2_clk",2983			.parent_hws = (const struct clk_hw*[]){2984				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,2985			},2986			.num_parents = 1,2987			.flags = CLK_SET_RATE_PARENT,2988			.ops = &clk_branch2_ops,2989		},2990	},2991};2992 2993static struct clk_branch gcc_qupv3_wrap0_s3_clk = {2994	.halt_reg = 0x1f4d4,2995	.halt_check = BRANCH_HALT_VOTED,2996	.clkr = {2997		.enable_reg = 0x7900c,2998		.enable_mask = BIT(13),2999		.hw.init = &(struct clk_init_data){3000			.name = "gcc_qupv3_wrap0_s3_clk",3001			.parent_hws = (const struct clk_hw*[]){3002				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,3003			},3004			.num_parents = 1,3005			.flags = CLK_SET_RATE_PARENT,3006			.ops = &clk_branch2_ops,3007		},3008	},3009};3010 3011static struct clk_branch gcc_qupv3_wrap0_s4_clk = {3012	.halt_reg = 0x1f604,3013	.halt_check = BRANCH_HALT_VOTED,3014	.clkr = {3015		.enable_reg = 0x7900c,3016		.enable_mask = BIT(14),3017		.hw.init = &(struct clk_init_data){3018			.name = "gcc_qupv3_wrap0_s4_clk",3019			.parent_hws = (const struct clk_hw*[]){3020				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,3021			},3022			.num_parents = 1,3023			.flags = CLK_SET_RATE_PARENT,3024			.ops = &clk_branch2_ops,3025		},3026	},3027};3028 3029static struct clk_branch gcc_qupv3_wrap0_s5_clk = {3030	.halt_reg = 0x1f734,3031	.halt_check = BRANCH_HALT_VOTED,3032	.clkr = {3033		.enable_reg = 0x7900c,3034		.enable_mask = BIT(15),3035		.hw.init = &(struct clk_init_data){3036			.name = "gcc_qupv3_wrap0_s5_clk",3037			.parent_hws = (const struct clk_hw*[]){3038				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,3039			},3040			.num_parents = 1,3041			.flags = CLK_SET_RATE_PARENT,3042			.ops = &clk_branch2_ops,3043		},3044	},3045};3046 3047static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {3048	.halt_reg = 0x39014,3049	.halt_check = BRANCH_HALT_VOTED,3050	.clkr = {3051		.enable_reg = 0x7900c,3052		.enable_mask = BIT(18),3053		.hw.init = &(struct clk_init_data){3054			.name = "gcc_qupv3_wrap1_core_2x_clk",3055			.ops = &clk_branch2_ops,3056		},3057	},3058};3059 3060static struct clk_branch gcc_qupv3_wrap1_core_clk = {3061	.halt_reg = 0x3900c,3062	.halt_check = BRANCH_HALT_VOTED,3063	.clkr = {3064		.enable_reg = 0x7900c,3065		.enable_mask = BIT(19),3066		.hw.init = &(struct clk_init_data){3067			.name = "gcc_qupv3_wrap1_core_clk",3068			.ops = &clk_branch2_ops,3069		},3070	},3071};3072 3073static struct clk_branch gcc_qupv3_wrap1_s0_clk = {3074	.halt_reg = 0x39144,3075	.halt_check = BRANCH_HALT_VOTED,3076	.clkr = {3077		.enable_reg = 0x7900c,3078		.enable_mask = BIT(22),3079		.hw.init = &(struct clk_init_data){3080			.name = "gcc_qupv3_wrap1_s0_clk",3081			.parent_hws = (const struct clk_hw*[]){3082				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,3083			},3084			.num_parents = 1,3085			.flags = CLK_SET_RATE_PARENT,3086			.ops = &clk_branch2_ops,3087		},3088	},3089};3090 3091static struct clk_branch gcc_qupv3_wrap1_s1_clk = {3092	.halt_reg = 0x39274,3093	.halt_check = BRANCH_HALT_VOTED,3094	.clkr = {3095		.enable_reg = 0x7900c,3096		.enable_mask = BIT(23),3097		.hw.init = &(struct clk_init_data){3098			.name = "gcc_qupv3_wrap1_s1_clk",3099			.parent_hws = (const struct clk_hw*[]){3100				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,3101			},3102			.num_parents = 1,3103			.flags = CLK_SET_RATE_PARENT,3104			.ops = &clk_branch2_ops,3105		},3106	},3107};3108 3109static struct clk_branch gcc_qupv3_wrap1_s2_clk = {3110	.halt_reg = 0x393a4,3111	.halt_check = BRANCH_HALT_VOTED,3112	.clkr = {3113		.enable_reg = 0x7900c,3114		.enable_mask = BIT(24),3115		.hw.init = &(struct clk_init_data){3116			.name = "gcc_qupv3_wrap1_s2_clk",3117			.parent_hws = (const struct clk_hw*[]){3118				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,3119			},3120			.num_parents = 1,3121			.flags = CLK_SET_RATE_PARENT,3122			.ops = &clk_branch2_ops,3123		},3124	},3125};3126 3127static struct clk_branch gcc_qupv3_wrap1_s3_clk = {3128	.halt_reg = 0x394d4,3129	.halt_check = BRANCH_HALT_VOTED,3130	.clkr = {3131		.enable_reg = 0x7900c,3132		.enable_mask = BIT(25),3133		.hw.init = &(struct clk_init_data){3134			.name = "gcc_qupv3_wrap1_s3_clk",3135			.parent_hws = (const struct clk_hw*[]){3136				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,3137			},3138			.num_parents = 1,3139			.flags = CLK_SET_RATE_PARENT,3140			.ops = &clk_branch2_ops,3141		},3142	},3143};3144 3145static struct clk_branch gcc_qupv3_wrap1_s4_clk = {3146	.halt_reg = 0x39604,3147	.halt_check = BRANCH_HALT_VOTED,3148	.clkr = {3149		.enable_reg = 0x7900c,3150		.enable_mask = BIT(26),3151		.hw.init = &(struct clk_init_data){3152			.name = "gcc_qupv3_wrap1_s4_clk",3153			.parent_hws = (const struct clk_hw*[]){3154				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,3155			},3156			.num_parents = 1,3157			.flags = CLK_SET_RATE_PARENT,3158			.ops = &clk_branch2_ops,3159		},3160	},3161};3162 3163static struct clk_branch gcc_qupv3_wrap1_s5_clk = {3164	.halt_reg = 0x39734,3165	.halt_check = BRANCH_HALT_VOTED,3166	.clkr = {3167		.enable_reg = 0x7900c,3168		.enable_mask = BIT(27),3169		.hw.init = &(struct clk_init_data){3170			.name = "gcc_qupv3_wrap1_s5_clk",3171			.parent_hws = (const struct clk_hw*[]){3172				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,3173			},3174			.num_parents = 1,3175			.flags = CLK_SET_RATE_PARENT,3176			.ops = &clk_branch2_ops,3177		},3178	},3179};3180 3181static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {3182	.halt_reg = 0x1f004,3183	.halt_check = BRANCH_HALT_VOTED,3184	.clkr = {3185		.enable_reg = 0x7900c,3186		.enable_mask = BIT(6),3187		.hw.init = &(struct clk_init_data){3188			.name = "gcc_qupv3_wrap_0_m_ahb_clk",3189			.ops = &clk_branch2_ops,3190		},3191	},3192};3193 3194static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {3195	.halt_reg = 0x1f008,3196	.halt_check = BRANCH_HALT_VOTED,3197	.hwcg_reg = 0x1f008,3198	.hwcg_bit = 1,3199	.clkr = {3200		.enable_reg = 0x7900c,3201		.enable_mask = BIT(7),3202		.hw.init = &(struct clk_init_data){3203			.name = "gcc_qupv3_wrap_0_s_ahb_clk",3204			.ops = &clk_branch2_ops,3205		},3206	},3207};3208 3209static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {3210	.halt_reg = 0x39004,3211	.halt_check = BRANCH_HALT_VOTED,3212	.clkr = {3213		.enable_reg = 0x7900c,3214		.enable_mask = BIT(20),3215		.hw.init = &(struct clk_init_data){3216			.name = "gcc_qupv3_wrap_1_m_ahb_clk",3217			.ops = &clk_branch2_ops,3218		},3219	},3220};3221 3222static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {3223	.halt_reg = 0x39008,3224	.halt_check = BRANCH_HALT_VOTED,3225	.hwcg_reg = 0x39008,3226	.hwcg_bit = 1,3227	.clkr = {3228		.enable_reg = 0x7900c,3229		.enable_mask = BIT(21),3230		.hw.init = &(struct clk_init_data){3231			.name = "gcc_qupv3_wrap_1_s_ahb_clk",3232			.ops = &clk_branch2_ops,3233		},3234	},3235};3236 3237static struct clk_branch gcc_sdcc1_ahb_clk = {3238	.halt_reg = 0x38008,3239	.halt_check = BRANCH_HALT,3240	.clkr = {3241		.enable_reg = 0x38008,3242		.enable_mask = BIT(0),3243		.hw.init = &(struct clk_init_data){3244			.name = "gcc_sdcc1_ahb_clk",3245			.ops = &clk_branch2_ops,3246		},3247	},3248};3249 3250static struct clk_branch gcc_sdcc1_apps_clk = {3251	.halt_reg = 0x38004,3252	.halt_check = BRANCH_HALT,3253	.clkr = {3254		.enable_reg = 0x38004,3255		.enable_mask = BIT(0),3256		.hw.init = &(struct clk_init_data){3257			.name = "gcc_sdcc1_apps_clk",3258			.parent_hws = (const struct clk_hw*[]){3259				&gcc_sdcc1_apps_clk_src.clkr.hw,3260			},3261			.num_parents = 1,3262			.flags = CLK_SET_RATE_PARENT,3263			.ops = &clk_branch2_ops,3264		},3265	},3266};3267 3268static struct clk_branch gcc_sdcc1_ice_core_clk = {3269	.halt_reg = 0x3800c,3270	.halt_check = BRANCH_HALT,3271	.clkr = {3272		.enable_reg = 0x3800c,3273		.enable_mask = BIT(0),3274		.hw.init = &(struct clk_init_data){3275			.name = "gcc_sdcc1_ice_core_clk",3276			.parent_hws = (const struct clk_hw*[]){3277				&gcc_sdcc1_ice_core_clk_src.clkr.hw,3278			},3279			.num_parents = 1,3280			.flags = CLK_SET_RATE_PARENT,3281			.ops = &clk_branch2_ops,3282		},3283	},3284};3285 3286static struct clk_branch gcc_sdcc2_ahb_clk = {3287	.halt_reg = 0x1e008,3288	.halt_check = BRANCH_HALT,3289	.clkr = {3290		.enable_reg = 0x1e008,3291		.enable_mask = BIT(0),3292		.hw.init = &(struct clk_init_data){3293			.name = "gcc_sdcc2_ahb_clk",3294			.ops = &clk_branch2_ops,3295		},3296	},3297};3298 3299static struct clk_branch gcc_sdcc2_apps_clk = {3300	.halt_reg = 0x1e004,3301	.halt_check = BRANCH_HALT,3302	.clkr = {3303		.enable_reg = 0x1e004,3304		.enable_mask = BIT(0),3305		.hw.init = &(struct clk_init_data){3306			.name = "gcc_sdcc2_apps_clk",3307			.parent_hws = (const struct clk_hw*[]){3308				&gcc_sdcc2_apps_clk_src.clkr.hw,3309			},3310			.num_parents = 1,3311			.flags = CLK_SET_RATE_PARENT,3312			.ops = &clk_branch2_ops,3313		},3314	},3315};3316 3317static struct clk_branch gcc_sys_noc_compute_sf_axi_clk = {3318	.halt_reg = 0x1050c,3319	.halt_check = BRANCH_HALT,3320	.clkr = {3321		.enable_reg = 0x1050c,3322		.enable_mask = BIT(0),3323		.hw.init = &(struct clk_init_data){3324			.name = "gcc_sys_noc_compute_sf_axi_clk",3325			.flags = CLK_IS_CRITICAL,3326			.ops = &clk_branch2_ops,3327		},3328	},3329};3330 3331static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {3332	.halt_reg = 0x2b06c,3333	.halt_check = BRANCH_HALT_VOTED,3334	.clkr = {3335		.enable_reg = 0x79004,3336		.enable_mask = BIT(0),3337		.hw.init = &(struct clk_init_data){3338			.name = "gcc_sys_noc_cpuss_ahb_clk",3339			.flags = CLK_IS_CRITICAL,3340			.ops = &clk_branch2_ops,3341		},3342	},3343};3344 3345static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {3346	.halt_reg = 0x45098,3347	.halt_check = BRANCH_HALT,3348	.clkr = {3349		.enable_reg = 0x45098,3350		.enable_mask = BIT(0),3351		.hw.init = &(struct clk_init_data){3352			.name = "gcc_sys_noc_ufs_phy_axi_clk",3353			.parent_hws = (const struct clk_hw*[]){3354				&gcc_ufs_phy_axi_clk_src.clkr.hw,3355			},3356			.num_parents = 1,3357			.flags = CLK_SET_RATE_PARENT,3358			.ops = &clk_branch2_ops,3359		},3360	},3361};3362 3363static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {3364	.halt_reg = 0x1a080,3365	.halt_check = BRANCH_HALT,3366	.clkr = {3367		.enable_reg = 0x1a080,3368		.enable_mask = BIT(0),3369		.hw.init = &(struct clk_init_data){3370			.name = "gcc_sys_noc_usb3_prim_axi_clk",3371			.parent_hws = (const struct clk_hw*[]){3372				&gcc_usb30_prim_master_clk_src.clkr.hw,3373			},3374			.num_parents = 1,3375			.flags = CLK_SET_RATE_PARENT,3376			.ops = &clk_branch2_ops,3377		},3378	},3379};3380 3381static struct clk_branch gcc_ufs_mem_clkref_clk = {3382	.halt_reg = 0x8c000,3383	.halt_check = BRANCH_HALT,3384	.clkr = {3385		.enable_reg = 0x8c000,3386		.enable_mask = BIT(0),3387		.hw.init = &(struct clk_init_data){3388			.name = "gcc_ufs_mem_clkref_clk",3389			.ops = &clk_branch2_ops,3390		},3391	},3392};3393 3394static struct clk_branch gcc_ufs_phy_ahb_clk = {3395	.halt_reg = 0x45014,3396	.halt_check = BRANCH_HALT,3397	.hwcg_reg = 0x45014,3398	.hwcg_bit = 1,3399	.clkr = {3400		.enable_reg = 0x45014,3401		.enable_mask = BIT(0),3402		.hw.init = &(struct clk_init_data){3403			.name = "gcc_ufs_phy_ahb_clk",3404			.ops = &clk_branch2_ops,3405		},3406	},3407};3408 3409static struct clk_branch gcc_ufs_phy_axi_clk = {3410	.halt_reg = 0x45010,3411	.halt_check = BRANCH_HALT,3412	.hwcg_reg = 0x45010,3413	.hwcg_bit = 1,3414	.clkr = {3415		.enable_reg = 0x45010,3416		.enable_mask = BIT(0),3417		.hw.init = &(struct clk_init_data){3418			.name = "gcc_ufs_phy_axi_clk",3419			.parent_hws = (const struct clk_hw*[]){3420				&gcc_ufs_phy_axi_clk_src.clkr.hw,3421			},3422			.num_parents = 1,3423			.flags = CLK_SET_RATE_PARENT,3424			.ops = &clk_branch2_ops,3425		},3426	},3427};3428 3429static struct clk_branch gcc_ufs_phy_ice_core_clk = {3430	.halt_reg = 0x45044,3431	.halt_check = BRANCH_HALT,3432	.hwcg_reg = 0x45044,3433	.hwcg_bit = 1,3434	.clkr = {3435		.enable_reg = 0x45044,3436		.enable_mask = BIT(0),3437		.hw.init = &(struct clk_init_data){3438			.name = "gcc_ufs_phy_ice_core_clk",3439			.parent_hws = (const struct clk_hw*[]){3440				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,3441			},3442			.num_parents = 1,3443			.flags = CLK_SET_RATE_PARENT,3444			.ops = &clk_branch2_ops,3445		},3446	},3447};3448 3449static struct clk_branch gcc_ufs_phy_phy_aux_clk = {3450	.halt_reg = 0x45078,3451	.halt_check = BRANCH_HALT,3452	.hwcg_reg = 0x45078,3453	.hwcg_bit = 1,3454	.clkr = {3455		.enable_reg = 0x45078,3456		.enable_mask = BIT(0),3457		.hw.init = &(struct clk_init_data){3458			.name = "gcc_ufs_phy_phy_aux_clk",3459			.parent_hws = (const struct clk_hw*[]){3460				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,3461			},3462			.num_parents = 1,3463			.flags = CLK_SET_RATE_PARENT,3464			.ops = &clk_branch2_ops,3465		},3466	},3467};3468 3469static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {3470	.halt_reg = 0x4501c,3471	.halt_check = BRANCH_HALT_SKIP,3472	.clkr = {3473		.enable_reg = 0x4501c,3474		.enable_mask = BIT(0),3475		.hw.init = &(struct clk_init_data){3476			.name = "gcc_ufs_phy_rx_symbol_0_clk",3477			.ops = &clk_branch2_ops,3478		},3479	},3480};3481 3482static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {3483	.halt_reg = 0x45018,3484	.halt_check = BRANCH_HALT_SKIP,3485	.clkr = {3486		.enable_reg = 0x45018,3487		.enable_mask = BIT(0),3488		.hw.init = &(struct clk_init_data){3489			.name = "gcc_ufs_phy_tx_symbol_0_clk",3490			.ops = &clk_branch2_ops,3491		},3492	},3493};3494 3495static struct clk_branch gcc_ufs_phy_unipro_core_clk = {3496	.halt_reg = 0x45040,3497	.halt_check = BRANCH_HALT,3498	.hwcg_reg = 0x45040,3499	.hwcg_bit = 1,3500	.clkr = {3501		.enable_reg = 0x45040,3502		.enable_mask = BIT(0),3503		.hw.init = &(struct clk_init_data){3504			.name = "gcc_ufs_phy_unipro_core_clk",3505			.parent_hws = (const struct clk_hw*[]){3506				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,3507			},3508			.num_parents = 1,3509			.flags = CLK_SET_RATE_PARENT,3510			.ops = &clk_branch2_ops,3511		},3512	},3513};3514 3515static struct clk_branch gcc_usb30_prim_master_clk = {3516	.halt_reg = 0x1a010,3517	.halt_check = BRANCH_HALT,3518	.clkr = {3519		.enable_reg = 0x1a010,3520		.enable_mask = BIT(0),3521		.hw.init = &(struct clk_init_data){3522			.name = "gcc_usb30_prim_master_clk",3523			.parent_hws = (const struct clk_hw*[]){3524				&gcc_usb30_prim_master_clk_src.clkr.hw,3525			},3526			.num_parents = 1,3527			.flags = CLK_SET_RATE_PARENT,3528			.ops = &clk_branch2_ops,3529		},3530	},3531};3532 3533static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {3534	.halt_reg = 0x1a018,3535	.halt_check = BRANCH_HALT,3536	.clkr = {3537		.enable_reg = 0x1a018,3538		.enable_mask = BIT(0),3539		.hw.init = &(struct clk_init_data){3540			.name = "gcc_usb30_prim_mock_utmi_clk",3541			.parent_hws = (const struct clk_hw*[]){3542				&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,3543			},3544			.num_parents = 1,3545			.flags = CLK_SET_RATE_PARENT,3546			.ops = &clk_branch2_ops,3547		},3548	},3549};3550 3551static struct clk_branch gcc_usb30_prim_sleep_clk = {3552	.halt_reg = 0x1a014,3553	.halt_check = BRANCH_HALT,3554	.clkr = {3555		.enable_reg = 0x1a014,3556		.enable_mask = BIT(0),3557		.hw.init = &(struct clk_init_data){3558			.name = "gcc_usb30_prim_sleep_clk",3559			.ops = &clk_branch2_ops,3560		},3561	},3562};3563 3564static struct clk_branch gcc_usb3_prim_clkref_clk = {3565	.halt_reg = 0x80278,3566	.halt_check = BRANCH_HALT,3567	.clkr = {3568		.enable_reg = 0x80278,3569		.enable_mask = BIT(0),3570		.hw.init = &(struct clk_init_data){3571			.name = "gcc_usb3_prim_clkref_clk",3572			.ops = &clk_branch2_ops,3573		},3574	},3575};3576 3577static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {3578	.halt_reg = 0x1a054,3579	.halt_check = BRANCH_HALT,3580	.clkr = {3581		.enable_reg = 0x1a054,3582		.enable_mask = BIT(0),3583		.hw.init = &(struct clk_init_data){3584			.name = "gcc_usb3_prim_phy_com_aux_clk",3585			.parent_hws = (const struct clk_hw*[]){3586				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3587			},3588			.num_parents = 1,3589			.flags = CLK_SET_RATE_PARENT,3590			.ops = &clk_branch2_ops,3591		},3592	},3593};3594 3595static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {3596	.halt_check = BRANCH_HALT_SKIP,3597	.clkr = {3598		.enable_reg = 0x1a058,3599		.enable_mask = BIT(0),3600		.hw.init = &(struct clk_init_data){3601			.name = "gcc_usb3_prim_phy_pipe_clk",3602			.ops = &clk_branch2_ops,3603		},3604	},3605};3606 3607static struct clk_branch gcc_vdda_vs_clk = {3608	.halt_reg = 0x4200c,3609	.halt_check = BRANCH_HALT,3610	.clkr = {3611		.enable_reg = 0x4200c,3612		.enable_mask = BIT(0),3613		.hw.init = &(struct clk_init_data){3614			.name = "gcc_vdda_vs_clk",3615			.parent_hws = (const struct clk_hw*[]){3616				&gcc_vsensor_clk_src.clkr.hw,3617			},3618			.num_parents = 1,3619			.flags = CLK_SET_RATE_PARENT,3620			.ops = &clk_branch2_ops,3621		},3622	},3623};3624 3625static struct clk_branch gcc_vddcx_vs_clk = {3626	.halt_reg = 0x42004,3627	.halt_check = BRANCH_HALT,3628	.clkr = {3629		.enable_reg = 0x42004,3630		.enable_mask = BIT(0),3631		.hw.init = &(struct clk_init_data){3632			.name = "gcc_vddcx_vs_clk",3633			.parent_hws = (const struct clk_hw*[]){3634				&gcc_vsensor_clk_src.clkr.hw,3635			},3636			.num_parents = 1,3637			.flags = CLK_SET_RATE_PARENT,3638			.ops = &clk_branch2_ops,3639		},3640	},3641};3642 3643static struct clk_branch gcc_vddmx_vs_clk = {3644	.halt_reg = 0x42008,3645	.halt_check = BRANCH_HALT,3646	.clkr = {3647		.enable_reg = 0x42008,3648		.enable_mask = BIT(0),3649		.hw.init = &(struct clk_init_data){3650			.name = "gcc_vddmx_vs_clk",3651			.parent_hws = (const struct clk_hw*[]){3652				&gcc_vsensor_clk_src.clkr.hw,3653			},3654			.num_parents = 1,3655			.flags = CLK_SET_RATE_PARENT,3656			.ops = &clk_branch2_ops,3657		},3658	},3659};3660 3661static struct clk_branch gcc_video_ahb_clk = {3662	.halt_reg = 0x17004,3663	.halt_check = BRANCH_HALT,3664	.hwcg_reg = 0x17004,3665	.hwcg_bit = 1,3666	.clkr = {3667		.enable_reg = 0x17004,3668		.enable_mask = BIT(0),3669		.hw.init = &(struct clk_init_data){3670			.name = "gcc_video_ahb_clk",3671			.flags = CLK_IS_CRITICAL,3672			.ops = &clk_branch2_ops,3673		},3674	},3675};3676 3677static struct clk_branch gcc_video_axi0_clk = {3678	.halt_reg = 0x1701c,3679	.halt_check = BRANCH_HALT,3680	.clkr = {3681		.enable_reg = 0x1701c,3682		.enable_mask = BIT(0),3683		.hw.init = &(struct clk_init_data){3684			.name = "gcc_video_axi0_clk",3685			.ops = &clk_branch2_ops,3686		},3687	},3688};3689 3690static struct clk_branch gcc_video_throttle_core_clk = {3691	.halt_reg = 0x17068,3692	.halt_check = BRANCH_HALT_VOTED,3693	.clkr = {3694		.enable_reg = 0x79004,3695		.enable_mask = BIT(28),3696		.hw.init = &(struct clk_init_data){3697			.name = "gcc_video_throttle_core_clk",3698			.ops = &clk_branch2_ops,3699		},3700	},3701};3702 3703static struct clk_branch gcc_video_xo_clk = {3704	.halt_reg = 0x17024,3705	.halt_check = BRANCH_HALT,3706	.clkr = {3707		.enable_reg = 0x17024,3708		.enable_mask = BIT(0),3709		.hw.init = &(struct clk_init_data){3710			.name = "gcc_video_xo_clk",3711			.flags = CLK_IS_CRITICAL,3712			.ops = &clk_branch2_ops,3713		},3714	},3715};3716 3717static struct clk_branch gcc_vs_ctrl_ahb_clk = {3718	.halt_reg = 0x42014,3719	.halt_check = BRANCH_HALT,3720	.hwcg_reg = 0x42014,3721	.hwcg_bit = 1,3722	.clkr = {3723		.enable_reg = 0x42014,3724		.enable_mask = BIT(0),3725		.hw.init = &(struct clk_init_data){3726			.name = "gcc_vs_ctrl_ahb_clk",3727			.ops = &clk_branch2_ops,3728		},3729	},3730};3731 3732static struct clk_branch gcc_vs_ctrl_clk = {3733	.halt_reg = 0x42010,3734	.halt_check = BRANCH_HALT,3735	.clkr = {3736		.enable_reg = 0x42010,3737		.enable_mask = BIT(0),3738		.hw.init = &(struct clk_init_data){3739			.name = "gcc_vs_ctrl_clk",3740			.parent_hws = (const struct clk_hw*[]){3741				&gcc_vs_ctrl_clk_src.clkr.hw,3742			},3743			.num_parents = 1,3744			.flags = CLK_SET_RATE_PARENT,3745			.ops = &clk_branch2_ops,3746		},3747	},3748};3749 3750static struct clk_branch gcc_wcss_vs_clk = {3751	.halt_reg = 0x42050,3752	.halt_check = BRANCH_HALT,3753	.clkr = {3754		.enable_reg = 0x42050,3755		.enable_mask = BIT(0),3756		.hw.init = &(struct clk_init_data){3757			.name = "gcc_wcss_vs_clk",3758			.parent_hws = (const struct clk_hw*[]){3759				&gcc_vsensor_clk_src.clkr.hw,3760			},3761			.num_parents = 1,3762			.flags = CLK_SET_RATE_PARENT,3763			.ops = &clk_branch2_ops,3764		},3765	},3766};3767 3768static struct gdsc usb30_prim_gdsc = {3769	.gdscr = 0x1a004,3770	.pd = {3771		.name = "usb30_prim_gdsc",3772	},3773	.pwrsts = PWRSTS_OFF_ON,3774};3775 3776static struct gdsc ufs_phy_gdsc = {3777	.gdscr = 0x45004,3778	.pd = {3779		.name = "ufs_phy_gdsc",3780	},3781	.pwrsts = PWRSTS_OFF_ON,3782};3783 3784static struct gdsc camss_vfe0_gdsc = {3785	.gdscr = 0x54004,3786	.pd = {3787		.name = "camss_vfe0_gdsc",3788	},3789	.pwrsts = PWRSTS_OFF_ON,3790};3791 3792static struct gdsc camss_vfe1_gdsc = {3793	.gdscr = 0x5403c,3794	.pd = {3795		.name = "camss_vfe1_gdsc",3796	},3797	.pwrsts = PWRSTS_OFF_ON,3798};3799 3800static struct gdsc camss_top_gdsc = {3801	.gdscr = 0x5607c,3802	.pd = {3803		.name = "camss_top_gdsc",3804	},3805	.pwrsts = PWRSTS_OFF_ON,3806};3807 3808static struct gdsc cam_cpp_gdsc = {3809	.gdscr = 0x560bc,3810	.pd = {3811		.name = "cam_cpp_gdsc",3812	},3813	.pwrsts = PWRSTS_OFF_ON,3814};3815 3816static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {3817	.gdscr = 0x7d060,3818	.pd = {3819		.name = "hlos1_vote_turing_mmu_tbu1_gdsc",3820	},3821	.pwrsts = PWRSTS_OFF_ON,3822	.flags = VOTABLE,3823};3824 3825static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {3826	.gdscr = 0x80074,3827	.pd = {3828		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc",3829	},3830	.pwrsts = PWRSTS_OFF_ON,3831	.flags = VOTABLE,3832};3833 3834static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {3835	.gdscr = 0x80084,3836	.pd = {3837		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc",3838	},3839	.pwrsts = PWRSTS_OFF_ON,3840	.flags = VOTABLE,3841};3842 3843 3844static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {3845	.gdscr = 0x80094,3846	.pd = {3847		.name = "hlos1_vote_turing_mmu_tbu0_gdsc",3848	},3849	.pwrsts = PWRSTS_OFF_ON,3850	.flags = VOTABLE,3851};3852 3853static struct gdsc *gcc_sm6125_gdscs[] = {3854	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,3855	[UFS_PHY_GDSC] = &ufs_phy_gdsc,3856	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,3857	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,3858	[CAMSS_TOP_GDSC] = &camss_top_gdsc,3859	[CAM_CPP_GDSC] = &cam_cpp_gdsc,3860	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,3861	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,3862	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,3863	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,3864};3865 3866static struct clk_hw *gcc_sm6125_hws[] = {3867	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.hw,3868	[GPLL0_OUT_MAIN] = &gpll0_out_main.hw,3869	[GPLL6_OUT_MAIN] = &gpll6_out_main.hw,3870	[GPLL7_OUT_MAIN] = &gpll7_out_main.hw,3871	[GPLL8_OUT_MAIN] = &gpll8_out_main.hw,3872	[GPLL9_OUT_MAIN] = &gpll9_out_main.hw,3873};3874 3875static struct clk_regmap *gcc_sm6125_clocks[] = {3876	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,3877	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,3878	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,3879	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,3880	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3881	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,3882	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,3883	[GCC_CAMSS_AHB_CLK_SRC] = &gcc_camss_ahb_clk_src.clkr,3884	[GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr,3885	[GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr,3886	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,3887	[GCC_CAMSS_CPHY_CSID0_CLK] = &gcc_camss_cphy_csid0_clk.clkr,3888	[GCC_CAMSS_CPHY_CSID1_CLK] = &gcc_camss_cphy_csid1_clk.clkr,3889	[GCC_CAMSS_CPHY_CSID2_CLK] = &gcc_camss_cphy_csid2_clk.clkr,3890	[GCC_CAMSS_CPHY_CSID3_CLK] = &gcc_camss_cphy_csid3_clk.clkr,3891	[GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr,3892	[GCC_CAMSS_CPP_AXI_CLK] = &gcc_camss_cpp_axi_clk.clkr,3893	[GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr,3894	[GCC_CAMSS_CPP_CLK_SRC] = &gcc_camss_cpp_clk_src.clkr,3895	[GCC_CAMSS_CPP_VBIF_AHB_CLK] = &gcc_camss_cpp_vbif_ahb_clk.clkr,3896	[GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr,3897	[GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr,3898	[GCC_CAMSS_CSI0_CLK_SRC] = &gcc_camss_csi0_clk_src.clkr,3899	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,3900	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,3901	[GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr,3902	[GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr,3903	[GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr,3904	[GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr,3905	[GCC_CAMSS_CSI1_CLK_SRC] = &gcc_camss_csi1_clk_src.clkr,3906	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,3907	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,3908	[GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr,3909	[GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr,3910	[GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr,3911	[GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr,3912	[GCC_CAMSS_CSI2_CLK_SRC] = &gcc_camss_csi2_clk_src.clkr,3913	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,3914	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,3915	[GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr,3916	[GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr,3917	[GCC_CAMSS_CSI3_AHB_CLK] = &gcc_camss_csi3_ahb_clk.clkr,3918	[GCC_CAMSS_CSI3_CLK] = &gcc_camss_csi3_clk.clkr,3919	[GCC_CAMSS_CSI3_CLK_SRC] = &gcc_camss_csi3_clk_src.clkr,3920	[GCC_CAMSS_CSI3PIX_CLK] = &gcc_camss_csi3pix_clk.clkr,3921	[GCC_CAMSS_CSI3RDI_CLK] = &gcc_camss_csi3rdi_clk.clkr,3922	[GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr,3923	[GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr,3924	[GCC_CAMSS_CSIPHY0_CLK] = &gcc_camss_csiphy0_clk.clkr,3925	[GCC_CAMSS_CSIPHY1_CLK] = &gcc_camss_csiphy1_clk.clkr,3926	[GCC_CAMSS_CSIPHY2_CLK] = &gcc_camss_csiphy2_clk.clkr,3927	[GCC_CAMSS_CSIPHY_CLK_SRC] = &gcc_camss_csiphy_clk_src.clkr,3928	[GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr,3929	[GCC_CAMSS_GP0_CLK_SRC] = &gcc_camss_gp0_clk_src.clkr,3930	[GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr,3931	[GCC_CAMSS_GP1_CLK_SRC] = &gcc_camss_gp1_clk_src.clkr,3932	[GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr,3933	[GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr,3934	[GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr,3935	[GCC_CAMSS_JPEG_CLK] = &gcc_camss_jpeg_clk.clkr,3936	[GCC_CAMSS_JPEG_CLK_SRC] = &gcc_camss_jpeg_clk_src.clkr,3937	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,3938	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,3939	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,3940	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,3941	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,3942	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,3943	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,3944	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,3945	[GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr,3946	[GCC_CAMSS_THROTTLE_NRT_AXI_CLK] = &gcc_camss_throttle_nrt_axi_clk.clkr,3947	[GCC_CAMSS_THROTTLE_RT_AXI_CLK] = &gcc_camss_throttle_rt_axi_clk.clkr,3948	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,3949	[GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr,3950	[GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr,3951	[GCC_CAMSS_VFE0_CLK_SRC] = &gcc_camss_vfe0_clk_src.clkr,3952	[GCC_CAMSS_VFE0_STREAM_CLK] = &gcc_camss_vfe0_stream_clk.clkr,3953	[GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr,3954	[GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr,3955	[GCC_CAMSS_VFE1_CLK_SRC] = &gcc_camss_vfe1_clk_src.clkr,3956	[GCC_CAMSS_VFE1_STREAM_CLK] = &gcc_camss_vfe1_stream_clk.clkr,3957	[GCC_CAMSS_VFE_TSCTR_CLK] = &gcc_camss_vfe_tsctr_clk.clkr,3958	[GCC_CAMSS_VFE_VBIF_AHB_CLK] = &gcc_camss_vfe_vbif_ahb_clk.clkr,3959	[GCC_CAMSS_VFE_VBIF_AXI_CLK] = &gcc_camss_vfe_vbif_axi_clk.clkr,3960	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,3961	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,3962	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,3963	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3964	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,3965	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,3966	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,3967	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,3968	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,3969	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,3970	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3971	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3972	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3973	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3974	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3975	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3976	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,3977	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3978	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3979	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3980	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3981	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,3982	[GCC_GPU_THROTTLE_XO_CLK] = &gcc_gpu_throttle_xo_clk.clkr,3983	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,3984	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3985	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3986	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3987	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3988	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,3989	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,3990	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,3991	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3992	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,3993	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,3994	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,3995	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,3996	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,3997	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,3998	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,3999	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,4000	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,4001	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,4002	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,4003	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,4004	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,4005	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,4006	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,4007	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,4008	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,4009	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,4010	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,4011	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,4012	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,4013	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,4014	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,4015	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,4016	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,4017	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,4018	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,4019	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,4020	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,4021	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,4022	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,4023	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,4024	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,4025	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,4026	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,4027	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,4028	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,4029	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,4030	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,4031	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,4032	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,4033	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,4034	[GCC_SYS_NOC_COMPUTE_SF_AXI_CLK] = &gcc_sys_noc_compute_sf_axi_clk.clkr,4035	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,4036	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,4037	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,4038	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,4039	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,4040	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,4041	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,4042	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,4043	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,4044	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,4045	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,4046	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,4047	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,4048	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,4049	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =4050		&gcc_ufs_phy_unipro_core_clk_src.clkr,4051	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,4052	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,4053	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,4054	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =4055		&gcc_usb30_prim_mock_utmi_clk_src.clkr,4056	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,4057	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,4058	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,4059	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,4060	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,4061	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,4062	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,4063	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,4064	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,4065	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,4066	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,4067	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,4068	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,4069	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,4070	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,4071	[GCC_WCSS_VS_CLK] = &gcc_wcss_vs_clk.clkr,4072	[GPLL0_OUT_EARLY] = &gpll0_out_early.clkr,4073	[GPLL3_OUT_EARLY] = &gpll3_out_early.clkr,4074	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,4075	[GPLL5_OUT_MAIN] = &gpll5_out_main.clkr,4076	[GPLL6_OUT_EARLY] = &gpll6_out_early.clkr,4077	[GPLL7_OUT_EARLY] = &gpll7_out_early.clkr,4078	[GPLL8_OUT_EARLY] = &gpll8_out_early.clkr,4079	[GPLL9_OUT_EARLY] = &gpll9_out_early.clkr,4080	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,4081};4082 4083static const struct qcom_reset_map gcc_sm6125_resets[] = {4084	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },4085	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },4086	[GCC_UFS_PHY_BCR] = { 0x45000 },4087	[GCC_USB30_PRIM_BCR] = { 0x1a000 },4088	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },4089	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },4090	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },4091	[GCC_CAMSS_MICRO_BCR] = { 0x560ac },4092};4093 4094static struct clk_rcg_dfs_data gcc_dfs_clocks[] = {4095	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),4096	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),4097	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),4098	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),4099	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),4100	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),4101	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),4102	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),4103	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),4104	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),4105	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),4106	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),4107};4108 4109static const struct regmap_config gcc_sm6125_regmap_config = {4110	.reg_bits = 32,4111	.reg_stride = 4,4112	.val_bits = 32,4113	.max_register = 0xc7000,4114	.fast_io = true,4115};4116 4117static const struct qcom_cc_desc gcc_sm6125_desc = {4118	.config = &gcc_sm6125_regmap_config,4119	.clks = gcc_sm6125_clocks,4120	.num_clks = ARRAY_SIZE(gcc_sm6125_clocks),4121	.clk_hws = gcc_sm6125_hws,4122	.num_clk_hws = ARRAY_SIZE(gcc_sm6125_hws),4123	.resets = gcc_sm6125_resets,4124	.num_resets = ARRAY_SIZE(gcc_sm6125_resets),4125	.gdscs = gcc_sm6125_gdscs,4126	.num_gdscs = ARRAY_SIZE(gcc_sm6125_gdscs),4127};4128 4129static const struct of_device_id gcc_sm6125_match_table[] = {4130	{ .compatible = "qcom,gcc-sm6125" },4131	{ }4132};4133MODULE_DEVICE_TABLE(of, gcc_sm6125_match_table);4134 4135static int gcc_sm6125_probe(struct platform_device *pdev)4136{4137	struct regmap *regmap;4138	int ret;4139 4140	regmap = qcom_cc_map(pdev, &gcc_sm6125_desc);4141	if (IS_ERR(regmap))4142		return PTR_ERR(regmap);4143 4144	/*4145	 * Disable the GPLL0 active input to video block via4146	 * MISC registers.4147	 */4148	regmap_update_bits(regmap, 0x80258, 0x1, 0x1);4149 4150	/*4151	 * Enable DUAL_EDGE mode for MCLK RCGs4152	 * This is required to enable MND divider mode4153	 */4154	regmap_update_bits(regmap, 0x51004, 0x3000, 0x2000);4155	regmap_update_bits(regmap, 0x51020, 0x3000, 0x2000);4156	regmap_update_bits(regmap, 0x5103c, 0x3000, 0x2000);4157	regmap_update_bits(regmap, 0x51058, 0x3000, 0x2000);4158 4159	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,4160						ARRAY_SIZE(gcc_dfs_clocks));4161	if (ret)4162		return ret;4163 4164	return qcom_cc_really_probe(&pdev->dev, &gcc_sm6125_desc, regmap);4165}4166 4167static struct platform_driver gcc_sm6125_driver = {4168	.probe = gcc_sm6125_probe,4169	.driver = {4170		.name = "gcc-sm6125",4171		.of_match_table = gcc_sm6125_match_table,4172	},4173};4174 4175static int __init gcc_sm6125_init(void)4176{4177	return platform_driver_register(&gcc_sm6125_driver);4178}4179subsys_initcall(gcc_sm6125_init);4180 4181static void __exit gcc_sm6125_exit(void)4182{4183	platform_driver_unregister(&gcc_sm6125_driver);4184}4185module_exit(gcc_sm6125_exit);4186 4187MODULE_DESCRIPTION("QTI GCC SM6125 Driver");4188MODULE_LICENSE("GPL v2");4189