brintos

brintos / linux-shallow public Read only

0
0
Text · 107.0 KiB · dc3aa70 Raw
4041 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved.4 */5 6#include <linux/kernel.h>7#include <linux/bitops.h>8#include <linux/err.h>9#include <linux/platform_device.h>10#include <linux/module.h>11#include <linux/of.h>12#include <linux/clk-provider.h>13#include <linux/regmap.h>14#include <linux/reset-controller.h>15 16#include <dt-bindings/clock/qcom,gcc-sdm845.h>17 18#include "common.h"19#include "clk-regmap.h"20#include "clk-pll.h"21#include "clk-rcg.h"22#include "clk-branch.h"23#include "clk-alpha-pll.h"24#include "gdsc.h"25#include "reset.h"26 27enum {28	P_BI_TCXO,29	P_AUD_REF_CLK,30	P_GPLL0_OUT_EVEN,31	P_GPLL0_OUT_MAIN,32	P_GPLL4_OUT_MAIN,33	P_GPLL6_OUT_MAIN,34	P_SLEEP_CLK,35};36 37static struct clk_alpha_pll gpll0 = {38	.offset = 0x0,39	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],40	.clkr = {41		.enable_reg = 0x52000,42		.enable_mask = BIT(0),43		.hw.init = &(struct clk_init_data){44			.name = "gpll0",45			.parent_data = &(const struct clk_parent_data){46				.fw_name = "bi_tcxo", .name = "bi_tcxo",47			},48			.num_parents = 1,49			.ops = &clk_alpha_pll_fixed_fabia_ops,50		},51	},52};53 54static struct clk_alpha_pll gpll4 = {55	.offset = 0x76000,56	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],57	.clkr = {58		.enable_reg = 0x52000,59		.enable_mask = BIT(4),60		.hw.init = &(struct clk_init_data){61			.name = "gpll4",62			.parent_data = &(const struct clk_parent_data){63				.fw_name = "bi_tcxo", .name = "bi_tcxo",64			},65			.num_parents = 1,66			.ops = &clk_alpha_pll_fixed_fabia_ops,67		},68	},69};70 71static struct clk_alpha_pll gpll6 = {72	.offset = 0x13000,73	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],74	.clkr = {75		.enable_reg = 0x52000,76		.enable_mask = BIT(6),77		.hw.init = &(struct clk_init_data){78			.name = "gpll6",79			.parent_data = &(const struct clk_parent_data){80				.fw_name = "bi_tcxo", .name = "bi_tcxo",81			},82			.num_parents = 1,83			.ops = &clk_alpha_pll_fixed_fabia_ops,84		},85	},86};87 88static const struct clk_div_table post_div_table_fabia_even[] = {89	{ 0x0, 1 },90	{ 0x1, 2 },91	{ 0x3, 4 },92	{ 0x7, 8 },93	{ }94};95 96static struct clk_alpha_pll_postdiv gpll0_out_even = {97	.offset = 0x0,98	.post_div_shift = 8,99	.post_div_table = post_div_table_fabia_even,100	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),101	.width = 4,102	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],103	.clkr.hw.init = &(struct clk_init_data){104		.name = "gpll0_out_even",105		.parent_hws = (const struct clk_hw*[]){106			&gpll0.clkr.hw,107		},108		.num_parents = 1,109		.ops = &clk_alpha_pll_postdiv_fabia_ops,110	},111};112 113static const struct parent_map gcc_parent_map_0[] = {114	{ P_BI_TCXO, 0 },115	{ P_GPLL0_OUT_MAIN, 1 },116	{ P_GPLL0_OUT_EVEN, 6 },117};118 119static const struct clk_parent_data gcc_parent_data_0[] = {120	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },121	{ .hw = &gpll0.clkr.hw },122	{ .hw = &gpll0_out_even.clkr.hw },123};124 125static const struct parent_map gcc_parent_map_1[] = {126	{ P_BI_TCXO, 0 },127	{ P_GPLL0_OUT_MAIN, 1 },128	{ P_SLEEP_CLK, 5 },129	{ P_GPLL0_OUT_EVEN, 6 },130};131 132static const struct clk_parent_data gcc_parent_data_1[] = {133	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },134	{ .hw = &gpll0.clkr.hw },135	{ .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" },136	{ .hw = &gpll0_out_even.clkr.hw },137};138 139static const struct parent_map gcc_parent_map_2[] = {140	{ P_BI_TCXO, 0 },141	{ P_SLEEP_CLK, 5 },142};143 144static const struct clk_parent_data gcc_parent_data_2[] = {145	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },146	{ .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" },147};148 149static const struct parent_map gcc_parent_map_3[] = {150	{ P_BI_TCXO, 0 },151	{ P_GPLL0_OUT_MAIN, 1 },152};153 154static const struct clk_parent_data gcc_parent_data_3[] = {155	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },156	{ .hw = &gpll0.clkr.hw },157};158 159static const struct parent_map gcc_parent_map_4[] = {160	{ P_BI_TCXO, 0 },161};162 163static const struct clk_parent_data gcc_parent_data_4[] = {164	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },165};166 167static const struct parent_map gcc_parent_map_6[] = {168	{ P_BI_TCXO, 0 },169	{ P_GPLL0_OUT_MAIN, 1 },170	{ P_AUD_REF_CLK, 2 },171	{ P_GPLL0_OUT_EVEN, 6 },172};173 174static const struct clk_parent_data gcc_parent_data_6[] = {175	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },176	{ .hw = &gpll0.clkr.hw },177	{ .fw_name = "aud_ref_clk", .name = "aud_ref_clk" },178	{ .hw = &gpll0_out_even.clkr.hw },179};180 181static const struct clk_parent_data gcc_parent_data_7_ao[] = {182	{ .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" },183	{ .hw = &gpll0.clkr.hw },184	{ .hw = &gpll0_out_even.clkr.hw },185	{ .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },186};187 188static const struct clk_parent_data gcc_parent_data_8[] = {189	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },190	{ .hw = &gpll0.clkr.hw },191	{ .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },192};193 194static const struct clk_parent_data gcc_parent_data_8_ao[] = {195	{ .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" },196	{ .hw = &gpll0.clkr.hw },197	{ .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },198};199 200static const struct parent_map gcc_parent_map_10[] = {201	{ P_BI_TCXO, 0 },202	{ P_GPLL0_OUT_MAIN, 1 },203	{ P_GPLL4_OUT_MAIN, 5 },204	{ P_GPLL0_OUT_EVEN, 6 },205};206 207static const struct clk_parent_data gcc_parent_data_10[] = {208	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },209	{ .hw = &gpll0.clkr.hw },210	{ .hw = &gpll4.clkr.hw },211	{ .hw = &gpll0_out_even.clkr.hw },212};213 214static const struct parent_map gcc_parent_map_11[] = {215	{ P_BI_TCXO, 0 },216	{ P_GPLL0_OUT_MAIN, 1 },217	{ P_GPLL6_OUT_MAIN, 2 },218	{ P_GPLL0_OUT_EVEN, 6 },219};220 221static const struct clk_parent_data gcc_parent_data_11[] = {222	{ .fw_name = "bi_tcxo", .name = "bi_tcxo" },223	{ .hw = &gpll0.clkr.hw },224	{ .hw = &gpll6.clkr.hw },225	{ .hw = &gpll0_out_even.clkr.hw },226};227 228static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {229	F(19200000, P_BI_TCXO, 1, 0, 0),230	{ }231};232 233static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {234	.cmd_rcgr = 0x48014,235	.mnd_width = 0,236	.hid_width = 5,237	.parent_map = gcc_parent_map_0,238	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,239	.clkr.hw.init = &(struct clk_init_data){240		.name = "gcc_cpuss_ahb_clk_src",241		.parent_data = gcc_parent_data_7_ao,242		.num_parents = ARRAY_SIZE(gcc_parent_data_7_ao),243		.ops = &clk_rcg2_ops,244	},245};246 247static const struct freq_tbl ftbl_gcc_cpuss_rbcpr_clk_src[] = {248	F(19200000, P_BI_TCXO, 1, 0, 0),249	{ }250};251 252static struct clk_rcg2 gcc_cpuss_rbcpr_clk_src = {253	.cmd_rcgr = 0x4815c,254	.mnd_width = 0,255	.hid_width = 5,256	.parent_map = gcc_parent_map_3,257	.freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,258	.clkr.hw.init = &(struct clk_init_data){259		.name = "gcc_cpuss_rbcpr_clk_src",260		.parent_data = gcc_parent_data_8_ao,261		.num_parents = ARRAY_SIZE(gcc_parent_data_8_ao),262		.ops = &clk_rcg2_ops,263	},264};265 266static const struct freq_tbl ftbl_gcc_sdm670_cpuss_rbcpr_clk_src[] = {267	F(19200000, P_BI_TCXO, 1, 0, 0),268	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),269	{ }270};271 272static struct clk_rcg2 gcc_sdm670_cpuss_rbcpr_clk_src = {273	.cmd_rcgr = 0x4815c,274	.mnd_width = 0,275	.hid_width = 5,276	.parent_map = gcc_parent_map_3,277	.freq_tbl = ftbl_gcc_sdm670_cpuss_rbcpr_clk_src,278	.clkr.hw.init = &(struct clk_init_data){279		.name = "gcc_cpuss_rbcpr_clk_src",280		.parent_data = gcc_parent_data_8_ao,281		.num_parents = ARRAY_SIZE(gcc_parent_data_8_ao),282		.ops = &clk_rcg2_ops,283	},284};285 286static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {287	F(19200000, P_BI_TCXO, 1, 0, 0),288	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),289	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),290	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),291	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),292	{ }293};294 295static struct clk_rcg2 gcc_gp1_clk_src = {296	.cmd_rcgr = 0x64004,297	.mnd_width = 8,298	.hid_width = 5,299	.parent_map = gcc_parent_map_1,300	.freq_tbl = ftbl_gcc_gp1_clk_src,301	.clkr.hw.init = &(struct clk_init_data){302		.name = "gcc_gp1_clk_src",303		.parent_data = gcc_parent_data_1,304		.num_parents = ARRAY_SIZE(gcc_parent_data_1),305		.ops = &clk_rcg2_ops,306	},307};308 309static struct clk_rcg2 gcc_gp2_clk_src = {310	.cmd_rcgr = 0x65004,311	.mnd_width = 8,312	.hid_width = 5,313	.parent_map = gcc_parent_map_1,314	.freq_tbl = ftbl_gcc_gp1_clk_src,315	.clkr.hw.init = &(struct clk_init_data){316		.name = "gcc_gp2_clk_src",317		.parent_data = gcc_parent_data_1,318		.num_parents = ARRAY_SIZE(gcc_parent_data_1),319		.ops = &clk_rcg2_ops,320	},321};322 323static struct clk_rcg2 gcc_gp3_clk_src = {324	.cmd_rcgr = 0x66004,325	.mnd_width = 8,326	.hid_width = 5,327	.parent_map = gcc_parent_map_1,328	.freq_tbl = ftbl_gcc_gp1_clk_src,329	.clkr.hw.init = &(struct clk_init_data){330		.name = "gcc_gp3_clk_src",331		.parent_data = gcc_parent_data_1,332		.num_parents = ARRAY_SIZE(gcc_parent_data_1),333		.ops = &clk_rcg2_ops,334	},335};336 337static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {338	F(9600000, P_BI_TCXO, 2, 0, 0),339	F(19200000, P_BI_TCXO, 1, 0, 0),340	{ }341};342 343static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {344	.cmd_rcgr = 0x6b028,345	.mnd_width = 16,346	.hid_width = 5,347	.parent_map = gcc_parent_map_2,348	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,349	.clkr.hw.init = &(struct clk_init_data){350		.name = "gcc_pcie_0_aux_clk_src",351		.parent_data = gcc_parent_data_2,352		.num_parents = ARRAY_SIZE(gcc_parent_data_2),353		.ops = &clk_rcg2_ops,354	},355};356 357static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {358	.cmd_rcgr = 0x8d028,359	.mnd_width = 16,360	.hid_width = 5,361	.parent_map = gcc_parent_map_2,362	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,363	.clkr.hw.init = &(struct clk_init_data){364		.name = "gcc_pcie_1_aux_clk_src",365		.parent_data = gcc_parent_data_2,366		.num_parents = ARRAY_SIZE(gcc_parent_data_2),367		.ops = &clk_rcg2_ops,368	},369};370 371static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {372	F(19200000, P_BI_TCXO, 1, 0, 0),373	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),374	{ }375};376 377static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {378	.cmd_rcgr = 0x6f014,379	.mnd_width = 0,380	.hid_width = 5,381	.parent_map = gcc_parent_map_0,382	.freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,383	.clkr.hw.init = &(struct clk_init_data){384		.name = "gcc_pcie_phy_refgen_clk_src",385		.parent_data = gcc_parent_data_0,386		.num_parents = ARRAY_SIZE(gcc_parent_data_0),387		.ops = &clk_rcg2_ops,388	},389};390 391static const struct freq_tbl ftbl_gcc_qspi_core_clk_src[] = {392	F(19200000, P_BI_TCXO, 1, 0, 0),393	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),394	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),395	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),396	{ }397};398 399static struct clk_rcg2 gcc_qspi_core_clk_src = {400	.cmd_rcgr = 0x4b008,401	.mnd_width = 0,402	.hid_width = 5,403	.parent_map = gcc_parent_map_0,404	.freq_tbl = ftbl_gcc_qspi_core_clk_src,405	.clkr.hw.init = &(struct clk_init_data){406		.name = "gcc_qspi_core_clk_src",407		.parent_data = gcc_parent_data_0,408		.num_parents = ARRAY_SIZE(gcc_parent_data_0),409		.ops = &clk_rcg2_floor_ops,410	},411};412 413static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {414	F(9600000, P_BI_TCXO, 2, 0, 0),415	F(19200000, P_BI_TCXO, 1, 0, 0),416	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),417	{ }418};419 420static struct clk_rcg2 gcc_pdm2_clk_src = {421	.cmd_rcgr = 0x33010,422	.mnd_width = 0,423	.hid_width = 5,424	.parent_map = gcc_parent_map_0,425	.freq_tbl = ftbl_gcc_pdm2_clk_src,426	.clkr.hw.init = &(struct clk_init_data){427		.name = "gcc_pdm2_clk_src",428		.parent_data = gcc_parent_data_0,429		.num_parents = ARRAY_SIZE(gcc_parent_data_0),430		.ops = &clk_rcg2_ops,431	},432};433 434static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {435	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),436	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),437	F(19200000, P_BI_TCXO, 1, 0, 0),438	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),439	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),440	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),441	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),442	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),443	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),444	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),445	F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),446	F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),447	F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),448	F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),449	F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),450	{ }451};452 453static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {454	.name = "gcc_qupv3_wrap0_s0_clk_src",455	.parent_data = gcc_parent_data_0,456	.num_parents = ARRAY_SIZE(gcc_parent_data_0),457	.ops = &clk_rcg2_shared_ops,458};459 460static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {461	.cmd_rcgr = 0x17034,462	.mnd_width = 16,463	.hid_width = 5,464	.parent_map = gcc_parent_map_0,465	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,466	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,467};468 469static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {470	.name = "gcc_qupv3_wrap0_s1_clk_src",471	.parent_data = gcc_parent_data_0,472	.num_parents = ARRAY_SIZE(gcc_parent_data_0),473	.ops = &clk_rcg2_shared_ops,474};475 476static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {477	.cmd_rcgr = 0x17164,478	.mnd_width = 16,479	.hid_width = 5,480	.parent_map = gcc_parent_map_0,481	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,482	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,483};484 485static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {486	.name = "gcc_qupv3_wrap0_s2_clk_src",487	.parent_data = gcc_parent_data_0,488	.num_parents = ARRAY_SIZE(gcc_parent_data_0),489	.ops = &clk_rcg2_shared_ops,490};491 492static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {493	.cmd_rcgr = 0x17294,494	.mnd_width = 16,495	.hid_width = 5,496	.parent_map = gcc_parent_map_0,497	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,498	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,499};500 501static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {502	.name = "gcc_qupv3_wrap0_s3_clk_src",503	.parent_data = gcc_parent_data_0,504	.num_parents = ARRAY_SIZE(gcc_parent_data_0),505	.ops = &clk_rcg2_shared_ops,506};507 508static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {509	.cmd_rcgr = 0x173c4,510	.mnd_width = 16,511	.hid_width = 5,512	.parent_map = gcc_parent_map_0,513	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,514	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,515};516 517static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {518	.name = "gcc_qupv3_wrap0_s4_clk_src",519	.parent_data = gcc_parent_data_0,520	.num_parents = ARRAY_SIZE(gcc_parent_data_0),521	.ops = &clk_rcg2_shared_ops,522};523 524static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {525	.cmd_rcgr = 0x174f4,526	.mnd_width = 16,527	.hid_width = 5,528	.parent_map = gcc_parent_map_0,529	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,530	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,531};532 533static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {534	.name = "gcc_qupv3_wrap0_s5_clk_src",535	.parent_data = gcc_parent_data_0,536	.num_parents = ARRAY_SIZE(gcc_parent_data_0),537	.ops = &clk_rcg2_shared_ops,538};539 540static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {541	.cmd_rcgr = 0x17624,542	.mnd_width = 16,543	.hid_width = 5,544	.parent_map = gcc_parent_map_0,545	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,546	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,547};548 549static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {550	.name = "gcc_qupv3_wrap0_s6_clk_src",551	.parent_data = gcc_parent_data_0,552	.num_parents = ARRAY_SIZE(gcc_parent_data_0),553	.ops = &clk_rcg2_shared_ops,554};555 556static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {557	.cmd_rcgr = 0x17754,558	.mnd_width = 16,559	.hid_width = 5,560	.parent_map = gcc_parent_map_0,561	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,562	.clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,563};564 565static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {566	.name = "gcc_qupv3_wrap0_s7_clk_src",567	.parent_data = gcc_parent_data_0,568	.num_parents = ARRAY_SIZE(gcc_parent_data_0),569	.ops = &clk_rcg2_shared_ops,570};571 572static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {573	.cmd_rcgr = 0x17884,574	.mnd_width = 16,575	.hid_width = 5,576	.parent_map = gcc_parent_map_0,577	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,578	.clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,579};580 581static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {582	.name = "gcc_qupv3_wrap1_s0_clk_src",583	.parent_data = gcc_parent_data_0,584	.num_parents = ARRAY_SIZE(gcc_parent_data_0),585	.ops = &clk_rcg2_shared_ops,586};587 588static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {589	.cmd_rcgr = 0x18018,590	.mnd_width = 16,591	.hid_width = 5,592	.parent_map = gcc_parent_map_0,593	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,594	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,595};596 597static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {598	.name = "gcc_qupv3_wrap1_s1_clk_src",599	.parent_data = gcc_parent_data_0,600	.num_parents = ARRAY_SIZE(gcc_parent_data_0),601	.ops = &clk_rcg2_shared_ops,602};603 604static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {605	.cmd_rcgr = 0x18148,606	.mnd_width = 16,607	.hid_width = 5,608	.parent_map = gcc_parent_map_0,609	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,610	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,611};612 613static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {614	.name = "gcc_qupv3_wrap1_s2_clk_src",615	.parent_data = gcc_parent_data_0,616	.num_parents = ARRAY_SIZE(gcc_parent_data_0),617	.ops = &clk_rcg2_shared_ops,618};619 620static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {621	.cmd_rcgr = 0x18278,622	.mnd_width = 16,623	.hid_width = 5,624	.parent_map = gcc_parent_map_0,625	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,626	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,627};628 629static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {630	.name = "gcc_qupv3_wrap1_s3_clk_src",631	.parent_data = gcc_parent_data_0,632	.num_parents = ARRAY_SIZE(gcc_parent_data_0),633	.ops = &clk_rcg2_shared_ops,634};635 636static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {637	.cmd_rcgr = 0x183a8,638	.mnd_width = 16,639	.hid_width = 5,640	.parent_map = gcc_parent_map_0,641	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,642	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,643};644 645static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {646	.name = "gcc_qupv3_wrap1_s4_clk_src",647	.parent_data = gcc_parent_data_0,648	.num_parents = ARRAY_SIZE(gcc_parent_data_0),649	.ops = &clk_rcg2_shared_ops,650};651 652static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {653	.cmd_rcgr = 0x184d8,654	.mnd_width = 16,655	.hid_width = 5,656	.parent_map = gcc_parent_map_0,657	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,658	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,659};660 661static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {662	.name = "gcc_qupv3_wrap1_s5_clk_src",663	.parent_data = gcc_parent_data_0,664	.num_parents = ARRAY_SIZE(gcc_parent_data_0),665	.ops = &clk_rcg2_shared_ops,666};667 668static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {669	.cmd_rcgr = 0x18608,670	.mnd_width = 16,671	.hid_width = 5,672	.parent_map = gcc_parent_map_0,673	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,674	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,675};676 677static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {678	.name = "gcc_qupv3_wrap1_s6_clk_src",679	.parent_data = gcc_parent_data_0,680	.num_parents = ARRAY_SIZE(gcc_parent_data_0),681	.ops = &clk_rcg2_shared_ops,682};683 684static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {685	.cmd_rcgr = 0x18738,686	.mnd_width = 16,687	.hid_width = 5,688	.parent_map = gcc_parent_map_0,689	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,690	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,691};692 693static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {694	.name = "gcc_qupv3_wrap1_s7_clk_src",695	.parent_data = gcc_parent_data_0,696	.num_parents = ARRAY_SIZE(gcc_parent_data_0),697	.ops = &clk_rcg2_shared_ops,698};699 700static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {701	.cmd_rcgr = 0x18868,702	.mnd_width = 16,703	.hid_width = 5,704	.parent_map = gcc_parent_map_0,705	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,706	.clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,707};708 709static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {710	F(144000, P_BI_TCXO, 16, 3, 25),711	F(400000, P_BI_TCXO, 12, 1, 4),712	F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3),713	F(25000000, P_GPLL0_OUT_EVEN, 6, 1, 2),714	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),715	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),716	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),717	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),718	{ }719};720 721static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {722	.cmd_rcgr = 0x26028,723	.mnd_width = 8,724	.hid_width = 5,725	.parent_map = gcc_parent_map_11,726	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,727	.clkr.hw.init = &(struct clk_init_data){728		.name = "gcc_sdcc1_apps_clk_src",729		.parent_data = gcc_parent_data_11,730		.num_parents = ARRAY_SIZE(gcc_parent_data_11),731		.ops = &clk_rcg2_floor_ops,732	},733};734 735static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {736	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),737	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),738	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),739	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),740	{ }741};742 743static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {744	.cmd_rcgr = 0x26010,745	.mnd_width = 8,746	.hid_width = 5,747	.parent_map = gcc_parent_map_0,748	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,749	.clkr.hw.init = &(struct clk_init_data){750		.name = "gcc_sdcc1_ice_core_clk_src",751		.parent_data = gcc_parent_data_0,752		.num_parents = ARRAY_SIZE(gcc_parent_data_0),753		.ops = &clk_rcg2_ops,754	},755};756 757static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {758	F(400000, P_BI_TCXO, 12, 1, 4),759	F(9600000, P_BI_TCXO, 2, 0, 0),760	F(19200000, P_BI_TCXO, 1, 0, 0),761	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),762	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),763	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),764	F(201500000, P_GPLL4_OUT_MAIN, 4, 0, 0),765	{ }766};767 768static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {769	.cmd_rcgr = 0x1400c,770	.mnd_width = 8,771	.hid_width = 5,772	.parent_map = gcc_parent_map_10,773	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,774	.clkr.hw.init = &(struct clk_init_data){775		.name = "gcc_sdcc2_apps_clk_src",776		.parent_data = gcc_parent_data_10,777		.num_parents = ARRAY_SIZE(gcc_parent_data_10),778		.ops = &clk_rcg2_floor_ops,779	},780};781 782static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {783	F(400000, P_BI_TCXO, 12, 1, 4),784	F(9600000, P_BI_TCXO, 2, 0, 0),785	F(19200000, P_BI_TCXO, 1, 0, 0),786	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),787	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),788	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),789	{ }790};791 792static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {793	.cmd_rcgr = 0x1600c,794	.mnd_width = 8,795	.hid_width = 5,796	.parent_map = gcc_parent_map_0,797	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,798	.clkr.hw.init = &(struct clk_init_data){799		.name = "gcc_sdcc4_apps_clk_src",800		.parent_data = gcc_parent_data_0,801		.num_parents = ARRAY_SIZE(gcc_parent_data_0),802		.ops = &clk_rcg2_floor_ops,803	},804};805 806static const struct freq_tbl ftbl_gcc_sdm670_sdcc4_apps_clk_src[] = {807	F(400000, P_BI_TCXO, 12, 1, 4),808	F(9600000, P_BI_TCXO, 2, 0, 0),809	F(19200000, P_BI_TCXO, 1, 0, 0),810	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),811	F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),812	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),813	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),814	{ }815};816 817static struct clk_rcg2 gcc_sdm670_sdcc4_apps_clk_src = {818	.cmd_rcgr = 0x1600c,819	.mnd_width = 8,820	.hid_width = 5,821	.parent_map = gcc_parent_map_0,822	.freq_tbl = ftbl_gcc_sdm670_sdcc4_apps_clk_src,823	.clkr.hw.init = &(struct clk_init_data){824		.name = "gcc_sdcc4_apps_clk_src",825		.parent_data = gcc_parent_data_0,826		.num_parents = ARRAY_SIZE(gcc_parent_data_0),827		.ops = &clk_rcg2_floor_ops,828	},829};830 831static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {832	F(105495, P_BI_TCXO, 2, 1, 91),833	{ }834};835 836static struct clk_rcg2 gcc_tsif_ref_clk_src = {837	.cmd_rcgr = 0x36010,838	.mnd_width = 8,839	.hid_width = 5,840	.parent_map = gcc_parent_map_6,841	.freq_tbl = ftbl_gcc_tsif_ref_clk_src,842	.clkr.hw.init = &(struct clk_init_data){843		.name = "gcc_tsif_ref_clk_src",844		.parent_data = gcc_parent_data_6,845		.num_parents = ARRAY_SIZE(gcc_parent_data_6),846		.ops = &clk_rcg2_ops,847	},848};849 850static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {851	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),852	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),853	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),854	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),855	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),856	{ }857};858 859static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {860	.cmd_rcgr = 0x7501c,861	.mnd_width = 8,862	.hid_width = 5,863	.parent_map = gcc_parent_map_0,864	.freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,865	.clkr.hw.init = &(struct clk_init_data){866		.name = "gcc_ufs_card_axi_clk_src",867		.parent_data = gcc_parent_data_0,868		.num_parents = ARRAY_SIZE(gcc_parent_data_0),869		.ops = &clk_rcg2_shared_ops,870	},871};872 873static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {874	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),875	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),876	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),877	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),878	{ }879};880 881static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {882	.cmd_rcgr = 0x7505c,883	.mnd_width = 0,884	.hid_width = 5,885	.parent_map = gcc_parent_map_0,886	.freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,887	.clkr.hw.init = &(struct clk_init_data){888		.name = "gcc_ufs_card_ice_core_clk_src",889		.parent_data = gcc_parent_data_0,890		.num_parents = ARRAY_SIZE(gcc_parent_data_0),891		.ops = &clk_rcg2_shared_ops,892	},893};894 895static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {896	.cmd_rcgr = 0x75090,897	.mnd_width = 0,898	.hid_width = 5,899	.parent_map = gcc_parent_map_4,900	.freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,901	.clkr.hw.init = &(struct clk_init_data){902		.name = "gcc_ufs_card_phy_aux_clk_src",903		.parent_data = gcc_parent_data_4,904		.num_parents = ARRAY_SIZE(gcc_parent_data_4),905		.ops = &clk_rcg2_ops,906	},907};908 909static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {910	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),911	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),912	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),913	{ }914};915 916static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {917	.cmd_rcgr = 0x75074,918	.mnd_width = 0,919	.hid_width = 5,920	.parent_map = gcc_parent_map_0,921	.freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,922	.clkr.hw.init = &(struct clk_init_data){923		.name = "gcc_ufs_card_unipro_core_clk_src",924		.parent_data = gcc_parent_data_0,925		.num_parents = ARRAY_SIZE(gcc_parent_data_0),926		.ops = &clk_rcg2_shared_ops,927	},928};929 930static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {931	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),932	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),933	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),934	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),935	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),936	{ }937};938 939static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {940	.cmd_rcgr = 0x7701c,941	.mnd_width = 8,942	.hid_width = 5,943	.parent_map = gcc_parent_map_0,944	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,945	.clkr.hw.init = &(struct clk_init_data){946		.name = "gcc_ufs_phy_axi_clk_src",947		.parent_data = gcc_parent_data_0,948		.num_parents = ARRAY_SIZE(gcc_parent_data_0),949		.ops = &clk_rcg2_shared_ops,950	},951};952 953static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {954	.cmd_rcgr = 0x7705c,955	.mnd_width = 0,956	.hid_width = 5,957	.parent_map = gcc_parent_map_0,958	.freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,959	.clkr.hw.init = &(struct clk_init_data){960		.name = "gcc_ufs_phy_ice_core_clk_src",961		.parent_data = gcc_parent_data_0,962		.num_parents = ARRAY_SIZE(gcc_parent_data_0),963		.ops = &clk_rcg2_shared_ops,964	},965};966 967static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {968	.cmd_rcgr = 0x77090,969	.mnd_width = 0,970	.hid_width = 5,971	.parent_map = gcc_parent_map_4,972	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,973	.clkr.hw.init = &(struct clk_init_data){974		.name = "gcc_ufs_phy_phy_aux_clk_src",975		.parent_data = gcc_parent_data_4,976		.num_parents = ARRAY_SIZE(gcc_parent_data_4),977		.ops = &clk_rcg2_shared_ops,978	},979};980 981static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {982	.cmd_rcgr = 0x77074,983	.mnd_width = 0,984	.hid_width = 5,985	.parent_map = gcc_parent_map_0,986	.freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,987	.clkr.hw.init = &(struct clk_init_data){988		.name = "gcc_ufs_phy_unipro_core_clk_src",989		.parent_data = gcc_parent_data_0,990		.num_parents = ARRAY_SIZE(gcc_parent_data_0),991		.ops = &clk_rcg2_shared_ops,992	},993};994 995static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {996	F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),997	F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),998	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),999	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),1000	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),1001	{ }1002};1003 1004static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1005	.cmd_rcgr = 0xf018,1006	.mnd_width = 8,1007	.hid_width = 5,1008	.parent_map = gcc_parent_map_0,1009	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1010	.clkr.hw.init = &(struct clk_init_data){1011		.name = "gcc_usb30_prim_master_clk_src",1012		.parent_data = gcc_parent_data_0,1013		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1014		.ops = &clk_rcg2_shared_ops,1015	},1016};1017 1018static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {1019	F(19200000, P_BI_TCXO, 1, 0, 0),1020	F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),1021	F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),1022	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),1023	{ }1024};1025 1026static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1027	.cmd_rcgr = 0xf030,1028	.mnd_width = 0,1029	.hid_width = 5,1030	.parent_map = gcc_parent_map_0,1031	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,1032	.clkr.hw.init = &(struct clk_init_data){1033		.name = "gcc_usb30_prim_mock_utmi_clk_src",1034		.parent_data = gcc_parent_data_0,1035		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1036		.ops = &clk_rcg2_shared_ops,1037	},1038};1039 1040static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {1041	.cmd_rcgr = 0x10018,1042	.mnd_width = 8,1043	.hid_width = 5,1044	.parent_map = gcc_parent_map_0,1045	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1046	.clkr.hw.init = &(struct clk_init_data){1047		.name = "gcc_usb30_sec_master_clk_src",1048		.parent_data = gcc_parent_data_0,1049		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1050		.ops = &clk_rcg2_ops,1051	},1052};1053 1054static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {1055	.cmd_rcgr = 0x10030,1056	.mnd_width = 0,1057	.hid_width = 5,1058	.parent_map = gcc_parent_map_0,1059	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,1060	.clkr.hw.init = &(struct clk_init_data){1061		.name = "gcc_usb30_sec_mock_utmi_clk_src",1062		.parent_data = gcc_parent_data_0,1063		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1064		.ops = &clk_rcg2_ops,1065	},1066};1067 1068static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1069	.cmd_rcgr = 0xf05c,1070	.mnd_width = 0,1071	.hid_width = 5,1072	.parent_map = gcc_parent_map_2,1073	.freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,1074	.clkr.hw.init = &(struct clk_init_data){1075		.name = "gcc_usb3_prim_phy_aux_clk_src",1076		.parent_data = gcc_parent_data_2,1077		.num_parents = ARRAY_SIZE(gcc_parent_data_2),1078		.ops = &clk_rcg2_ops,1079	},1080};1081 1082static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {1083	.cmd_rcgr = 0x1005c,1084	.mnd_width = 0,1085	.hid_width = 5,1086	.parent_map = gcc_parent_map_2,1087	.freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,1088	.clkr.hw.init = &(struct clk_init_data){1089		.name = "gcc_usb3_sec_phy_aux_clk_src",1090		.parent_data = gcc_parent_data_2,1091		.num_parents = ARRAY_SIZE(gcc_parent_data_2),1092		.ops = &clk_rcg2_shared_ops,1093	},1094};1095 1096static struct clk_rcg2 gcc_vs_ctrl_clk_src = {1097	.cmd_rcgr = 0x7a030,1098	.mnd_width = 0,1099	.hid_width = 5,1100	.parent_map = gcc_parent_map_3,1101	.freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,1102	.clkr.hw.init = &(struct clk_init_data){1103		.name = "gcc_vs_ctrl_clk_src",1104		.parent_data = gcc_parent_data_3,1105		.num_parents = ARRAY_SIZE(gcc_parent_data_3),1106		.ops = &clk_rcg2_ops,1107	},1108};1109 1110static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {1111	F(19200000, P_BI_TCXO, 1, 0, 0),1112	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),1113	F(600000000, P_GPLL0_OUT_MAIN, 1, 0, 0),1114	{ }1115};1116 1117static struct clk_rcg2 gcc_vsensor_clk_src = {1118	.cmd_rcgr = 0x7a018,1119	.mnd_width = 0,1120	.hid_width = 5,1121	.parent_map = gcc_parent_map_3,1122	.freq_tbl = ftbl_gcc_vsensor_clk_src,1123	.clkr.hw.init = &(struct clk_init_data){1124		.name = "gcc_vsensor_clk_src",1125		.parent_data = gcc_parent_data_8,1126		.num_parents = ARRAY_SIZE(gcc_parent_data_8),1127		.ops = &clk_rcg2_ops,1128	},1129};1130 1131static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {1132	.halt_reg = 0x90014,1133	.halt_check = BRANCH_HALT,1134	.clkr = {1135		.enable_reg = 0x90014,1136		.enable_mask = BIT(0),1137		.hw.init = &(struct clk_init_data){1138			.name = "gcc_aggre_noc_pcie_tbu_clk",1139			.ops = &clk_branch2_ops,1140		},1141	},1142};1143 1144static struct clk_branch gcc_aggre_ufs_card_axi_clk = {1145	.halt_reg = 0x82028,1146	.halt_check = BRANCH_HALT,1147	.hwcg_reg = 0x82028,1148	.hwcg_bit = 1,1149	.clkr = {1150		.enable_reg = 0x82028,1151		.enable_mask = BIT(0),1152		.hw.init = &(struct clk_init_data){1153			.name = "gcc_aggre_ufs_card_axi_clk",1154			.parent_hws = (const struct clk_hw*[]){1155				&gcc_ufs_card_axi_clk_src.clkr.hw,1156			},1157			.num_parents = 1,1158			.flags = CLK_SET_RATE_PARENT,1159			.ops = &clk_branch2_ops,1160		},1161	},1162};1163 1164static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {1165	.halt_reg = 0x82024,1166	.halt_check = BRANCH_HALT,1167	.hwcg_reg = 0x82024,1168	.hwcg_bit = 1,1169	.clkr = {1170		.enable_reg = 0x82024,1171		.enable_mask = BIT(0),1172		.hw.init = &(struct clk_init_data){1173			.name = "gcc_aggre_ufs_phy_axi_clk",1174			.parent_hws = (const struct clk_hw*[]){1175				&gcc_ufs_phy_axi_clk_src.clkr.hw,1176			},1177			.num_parents = 1,1178			.flags = CLK_SET_RATE_PARENT,1179			.ops = &clk_branch2_ops,1180		},1181	},1182};1183 1184static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {1185	.halt_reg = 0x8201c,1186	.halt_check = BRANCH_HALT,1187	.clkr = {1188		.enable_reg = 0x8201c,1189		.enable_mask = BIT(0),1190		.hw.init = &(struct clk_init_data){1191			.name = "gcc_aggre_usb3_prim_axi_clk",1192			.parent_hws = (const struct clk_hw*[]){1193				&gcc_usb30_prim_master_clk_src.clkr.hw,1194			},1195			.num_parents = 1,1196			.flags = CLK_SET_RATE_PARENT,1197			.ops = &clk_branch2_ops,1198		},1199	},1200};1201 1202static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {1203	.halt_reg = 0x82020,1204	.halt_check = BRANCH_HALT,1205	.clkr = {1206		.enable_reg = 0x82020,1207		.enable_mask = BIT(0),1208		.hw.init = &(struct clk_init_data){1209			.name = "gcc_aggre_usb3_sec_axi_clk",1210			.parent_hws = (const struct clk_hw*[]){1211				&gcc_usb30_sec_master_clk_src.clkr.hw,1212			},1213			.num_parents = 1,1214			.flags = CLK_SET_RATE_PARENT,1215			.ops = &clk_branch2_ops,1216		},1217	},1218};1219 1220static struct clk_branch gcc_apc_vs_clk = {1221	.halt_reg = 0x7a050,1222	.halt_check = BRANCH_HALT,1223	.clkr = {1224		.enable_reg = 0x7a050,1225		.enable_mask = BIT(0),1226		.hw.init = &(struct clk_init_data){1227			.name = "gcc_apc_vs_clk",1228			.parent_hws = (const struct clk_hw*[]){1229				&gcc_vsensor_clk_src.clkr.hw,1230			},1231			.num_parents = 1,1232			.flags = CLK_SET_RATE_PARENT,1233			.ops = &clk_branch2_ops,1234		},1235	},1236};1237 1238static struct clk_branch gcc_boot_rom_ahb_clk = {1239	.halt_reg = 0x38004,1240	.halt_check = BRANCH_HALT_VOTED,1241	.hwcg_reg = 0x38004,1242	.hwcg_bit = 1,1243	.clkr = {1244		.enable_reg = 0x52004,1245		.enable_mask = BIT(10),1246		.hw.init = &(struct clk_init_data){1247			.name = "gcc_boot_rom_ahb_clk",1248			.ops = &clk_branch2_ops,1249		},1250	},1251};1252 1253static struct clk_branch gcc_camera_ahb_clk = {1254	.halt_reg = 0xb008,1255	.halt_check = BRANCH_HALT,1256	.hwcg_reg = 0xb008,1257	.hwcg_bit = 1,1258	.clkr = {1259		.enable_reg = 0xb008,1260		.enable_mask = BIT(0),1261		.hw.init = &(struct clk_init_data){1262			.name = "gcc_camera_ahb_clk",1263			.flags = CLK_IS_CRITICAL,1264			.ops = &clk_branch2_ops,1265		},1266	},1267};1268 1269static struct clk_branch gcc_camera_axi_clk = {1270	.halt_reg = 0xb020,1271	.halt_check = BRANCH_VOTED,1272	.clkr = {1273		.enable_reg = 0xb020,1274		.enable_mask = BIT(0),1275		.hw.init = &(struct clk_init_data){1276			.name = "gcc_camera_axi_clk",1277			.ops = &clk_branch2_ops,1278		},1279	},1280};1281 1282static struct clk_branch gcc_camera_xo_clk = {1283	.halt_reg = 0xb02c,1284	.halt_check = BRANCH_HALT,1285	.clkr = {1286		.enable_reg = 0xb02c,1287		.enable_mask = BIT(0),1288		.hw.init = &(struct clk_init_data){1289			.name = "gcc_camera_xo_clk",1290			.flags = CLK_IS_CRITICAL,1291			.ops = &clk_branch2_ops,1292		},1293	},1294};1295 1296static struct clk_branch gcc_ce1_ahb_clk = {1297	.halt_reg = 0x4100c,1298	.halt_check = BRANCH_HALT_VOTED,1299	.hwcg_reg = 0x4100c,1300	.hwcg_bit = 1,1301	.clkr = {1302		.enable_reg = 0x52004,1303		.enable_mask = BIT(3),1304		.hw.init = &(struct clk_init_data){1305			.name = "gcc_ce1_ahb_clk",1306			.ops = &clk_branch2_ops,1307		},1308	},1309};1310 1311static struct clk_branch gcc_ce1_axi_clk = {1312	.halt_reg = 0x41008,1313	.halt_check = BRANCH_HALT_VOTED,1314	.clkr = {1315		.enable_reg = 0x52004,1316		.enable_mask = BIT(4),1317		.hw.init = &(struct clk_init_data){1318			.name = "gcc_ce1_axi_clk",1319			.ops = &clk_branch2_ops,1320		},1321	},1322};1323 1324static struct clk_branch gcc_ce1_clk = {1325	.halt_reg = 0x41004,1326	.halt_check = BRANCH_HALT_VOTED,1327	.clkr = {1328		.enable_reg = 0x52004,1329		.enable_mask = BIT(5),1330		.hw.init = &(struct clk_init_data){1331			.name = "gcc_ce1_clk",1332			.ops = &clk_branch2_ops,1333		},1334	},1335};1336 1337static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {1338	.halt_reg = 0x502c,1339	.halt_check = BRANCH_HALT,1340	.clkr = {1341		.enable_reg = 0x502c,1342		.enable_mask = BIT(0),1343		.hw.init = &(struct clk_init_data){1344			.name = "gcc_cfg_noc_usb3_prim_axi_clk",1345			.parent_hws = (const struct clk_hw*[]){1346				&gcc_usb30_prim_master_clk_src.clkr.hw,1347			},1348			.num_parents = 1,1349			.flags = CLK_SET_RATE_PARENT,1350			.ops = &clk_branch2_ops,1351		},1352	},1353};1354 1355static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {1356	.halt_reg = 0x5030,1357	.halt_check = BRANCH_HALT,1358	.clkr = {1359		.enable_reg = 0x5030,1360		.enable_mask = BIT(0),1361		.hw.init = &(struct clk_init_data){1362			.name = "gcc_cfg_noc_usb3_sec_axi_clk",1363			.parent_hws = (const struct clk_hw*[]){1364				&gcc_usb30_sec_master_clk_src.clkr.hw,1365			},1366			.num_parents = 1,1367			.flags = CLK_SET_RATE_PARENT,1368			.ops = &clk_branch2_ops,1369		},1370	},1371};1372 1373static struct clk_branch gcc_cpuss_ahb_clk = {1374	.halt_reg = 0x48000,1375	.halt_check = BRANCH_HALT_VOTED,1376	.clkr = {1377		.enable_reg = 0x52004,1378		.enable_mask = BIT(21),1379		.hw.init = &(struct clk_init_data){1380			.name = "gcc_cpuss_ahb_clk",1381			.parent_hws = (const struct clk_hw*[]){1382				&gcc_cpuss_ahb_clk_src.clkr.hw,1383			},1384			.num_parents = 1,1385			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,1386			.ops = &clk_branch2_ops,1387		},1388	},1389};1390 1391static struct clk_branch gcc_cpuss_rbcpr_clk = {1392	.halt_reg = 0x48008,1393	.halt_check = BRANCH_HALT,1394	.clkr = {1395		.enable_reg = 0x48008,1396		.enable_mask = BIT(0),1397		.hw.init = &(struct clk_init_data){1398			.name = "gcc_cpuss_rbcpr_clk",1399			.parent_hws = (const struct clk_hw*[]){1400				&gcc_cpuss_rbcpr_clk_src.clkr.hw,1401			},1402			.num_parents = 1,1403			.flags = CLK_SET_RATE_PARENT,1404			.ops = &clk_branch2_ops,1405		},1406	},1407};1408 1409/*1410 * The source clock frequencies are different for SDM670; define a child clock1411 * pointing to the source clock that uses SDM670 frequencies.1412 */1413static struct clk_branch gcc_sdm670_cpuss_rbcpr_clk = {1414	.halt_reg = 0x48008,1415	.halt_check = BRANCH_HALT,1416	.clkr = {1417		.enable_reg = 0x48008,1418		.enable_mask = BIT(0),1419		.hw.init = &(struct clk_init_data){1420			.name = "gcc_cpuss_rbcpr_clk",1421			.parent_hws = (const struct clk_hw*[]){1422				&gcc_sdm670_cpuss_rbcpr_clk_src.clkr.hw,1423			},1424			.num_parents = 1,1425			.flags = CLK_SET_RATE_PARENT,1426			.ops = &clk_branch2_ops,1427		},1428	},1429};1430 1431static struct clk_branch gcc_ddrss_gpu_axi_clk = {1432	.halt_reg = 0x44038,1433	.halt_check = BRANCH_VOTED,1434	.clkr = {1435		.enable_reg = 0x44038,1436		.enable_mask = BIT(0),1437		.hw.init = &(struct clk_init_data){1438			.name = "gcc_ddrss_gpu_axi_clk",1439			.ops = &clk_branch2_ops,1440		},1441	},1442};1443 1444static struct clk_branch gcc_disp_ahb_clk = {1445	.halt_reg = 0xb00c,1446	.halt_check = BRANCH_HALT,1447	.hwcg_reg = 0xb00c,1448	.hwcg_bit = 1,1449	.clkr = {1450		.enable_reg = 0xb00c,1451		.enable_mask = BIT(0),1452		.hw.init = &(struct clk_init_data){1453			.name = "gcc_disp_ahb_clk",1454			.flags = CLK_IS_CRITICAL,1455			.ops = &clk_branch2_ops,1456		},1457	},1458};1459 1460static struct clk_branch gcc_disp_axi_clk = {1461	.halt_reg = 0xb024,1462	.halt_check = BRANCH_VOTED,1463	.clkr = {1464		.enable_reg = 0xb024,1465		.enable_mask = BIT(0),1466		.hw.init = &(struct clk_init_data){1467			.name = "gcc_disp_axi_clk",1468			.ops = &clk_branch2_ops,1469		},1470	},1471};1472 1473static struct clk_branch gcc_disp_gpll0_clk_src = {1474	.halt_check = BRANCH_HALT_DELAY,1475	.clkr = {1476		.enable_reg = 0x52004,1477		.enable_mask = BIT(18),1478		.hw.init = &(struct clk_init_data){1479			.name = "gcc_disp_gpll0_clk_src",1480			.parent_hws = (const struct clk_hw*[]){1481				&gpll0.clkr.hw,1482			},1483			.num_parents = 1,1484			.ops = &clk_branch2_aon_ops,1485		},1486	},1487};1488 1489static struct clk_branch gcc_disp_gpll0_div_clk_src = {1490	.halt_check = BRANCH_HALT_DELAY,1491	.clkr = {1492		.enable_reg = 0x52004,1493		.enable_mask = BIT(19),1494		.hw.init = &(struct clk_init_data){1495			.name = "gcc_disp_gpll0_div_clk_src",1496			.parent_hws = (const struct clk_hw*[]){1497				&gpll0_out_even.clkr.hw,1498			},1499			.num_parents = 1,1500			.ops = &clk_branch2_ops,1501		},1502	},1503};1504 1505static struct clk_branch gcc_disp_xo_clk = {1506	.halt_reg = 0xb030,1507	.halt_check = BRANCH_HALT,1508	.clkr = {1509		.enable_reg = 0xb030,1510		.enable_mask = BIT(0),1511		.hw.init = &(struct clk_init_data){1512			.name = "gcc_disp_xo_clk",1513			.flags = CLK_IS_CRITICAL,1514			.ops = &clk_branch2_ops,1515		},1516	},1517};1518 1519static struct clk_branch gcc_gp1_clk = {1520	.halt_reg = 0x64000,1521	.halt_check = BRANCH_HALT,1522	.clkr = {1523		.enable_reg = 0x64000,1524		.enable_mask = BIT(0),1525		.hw.init = &(struct clk_init_data){1526			.name = "gcc_gp1_clk",1527			.parent_hws = (const struct clk_hw*[]){1528				&gcc_gp1_clk_src.clkr.hw,1529			},1530			.num_parents = 1,1531			.flags = CLK_SET_RATE_PARENT,1532			.ops = &clk_branch2_ops,1533		},1534	},1535};1536 1537static struct clk_branch gcc_gp2_clk = {1538	.halt_reg = 0x65000,1539	.halt_check = BRANCH_HALT,1540	.clkr = {1541		.enable_reg = 0x65000,1542		.enable_mask = BIT(0),1543		.hw.init = &(struct clk_init_data){1544			.name = "gcc_gp2_clk",1545			.parent_hws = (const struct clk_hw*[]){1546				&gcc_gp2_clk_src.clkr.hw,1547			},1548			.num_parents = 1,1549			.flags = CLK_SET_RATE_PARENT,1550			.ops = &clk_branch2_ops,1551		},1552	},1553};1554 1555static struct clk_branch gcc_gp3_clk = {1556	.halt_reg = 0x66000,1557	.halt_check = BRANCH_HALT,1558	.clkr = {1559		.enable_reg = 0x66000,1560		.enable_mask = BIT(0),1561		.hw.init = &(struct clk_init_data){1562			.name = "gcc_gp3_clk",1563			.parent_hws = (const struct clk_hw*[]){1564				&gcc_gp3_clk_src.clkr.hw,1565			},1566			.num_parents = 1,1567			.flags = CLK_SET_RATE_PARENT,1568			.ops = &clk_branch2_ops,1569		},1570	},1571};1572 1573static struct clk_branch gcc_gpu_cfg_ahb_clk = {1574	.halt_reg = 0x71004,1575	.halt_check = BRANCH_HALT,1576	.hwcg_reg = 0x71004,1577	.hwcg_bit = 1,1578	.clkr = {1579		.enable_reg = 0x71004,1580		.enable_mask = BIT(0),1581		.hw.init = &(struct clk_init_data){1582			.name = "gcc_gpu_cfg_ahb_clk",1583			.flags = CLK_IS_CRITICAL,1584			.ops = &clk_branch2_ops,1585		},1586	},1587};1588 1589static struct clk_branch gcc_gpu_gpll0_clk_src = {1590	.halt_check = BRANCH_HALT_DELAY,1591	.clkr = {1592		.enable_reg = 0x52004,1593		.enable_mask = BIT(15),1594		.hw.init = &(struct clk_init_data){1595			.name = "gcc_gpu_gpll0_clk_src",1596			.parent_hws = (const struct clk_hw*[]){1597				&gpll0.clkr.hw,1598			},1599			.num_parents = 1,1600			.ops = &clk_branch2_ops,1601		},1602	},1603};1604 1605static struct clk_branch gcc_gpu_gpll0_div_clk_src = {1606	.halt_check = BRANCH_HALT_DELAY,1607	.clkr = {1608		.enable_reg = 0x52004,1609		.enable_mask = BIT(16),1610		.hw.init = &(struct clk_init_data){1611			.name = "gcc_gpu_gpll0_div_clk_src",1612			.parent_hws = (const struct clk_hw*[]){1613				&gpll0_out_even.clkr.hw,1614			},1615			.num_parents = 1,1616			.ops = &clk_branch2_ops,1617		},1618	},1619};1620 1621static struct clk_branch gcc_gpu_iref_clk = {1622	.halt_reg = 0x8c010,1623	.halt_check = BRANCH_HALT,1624	.clkr = {1625		.enable_reg = 0x8c010,1626		.enable_mask = BIT(0),1627		.hw.init = &(struct clk_init_data){1628			.name = "gcc_gpu_iref_clk",1629			.ops = &clk_branch2_ops,1630		},1631	},1632};1633 1634static struct clk_branch gcc_gpu_memnoc_gfx_clk = {1635	.halt_reg = 0x7100c,1636	.halt_check = BRANCH_VOTED,1637	.clkr = {1638		.enable_reg = 0x7100c,1639		.enable_mask = BIT(0),1640		.hw.init = &(struct clk_init_data){1641			.name = "gcc_gpu_memnoc_gfx_clk",1642			.ops = &clk_branch2_ops,1643		},1644	},1645};1646 1647static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {1648	.halt_reg = 0x71018,1649	.halt_check = BRANCH_HALT,1650	.clkr = {1651		.enable_reg = 0x71018,1652		.enable_mask = BIT(0),1653		.hw.init = &(struct clk_init_data){1654			.name = "gcc_gpu_snoc_dvm_gfx_clk",1655			.ops = &clk_branch2_ops,1656		},1657	},1658};1659 1660static struct clk_branch gcc_gpu_vs_clk = {1661	.halt_reg = 0x7a04c,1662	.halt_check = BRANCH_HALT,1663	.clkr = {1664		.enable_reg = 0x7a04c,1665		.enable_mask = BIT(0),1666		.hw.init = &(struct clk_init_data){1667			.name = "gcc_gpu_vs_clk",1668			.parent_hws = (const struct clk_hw*[]){1669				&gcc_vsensor_clk_src.clkr.hw,1670			},1671			.num_parents = 1,1672			.flags = CLK_SET_RATE_PARENT,1673			.ops = &clk_branch2_ops,1674		},1675	},1676};1677 1678static struct clk_branch gcc_mss_axis2_clk = {1679	.halt_reg = 0x8a008,1680	.halt_check = BRANCH_HALT,1681	.clkr = {1682		.enable_reg = 0x8a008,1683		.enable_mask = BIT(0),1684		.hw.init = &(struct clk_init_data){1685			.name = "gcc_mss_axis2_clk",1686			.ops = &clk_branch2_ops,1687		},1688	},1689};1690 1691static struct clk_branch gcc_mss_cfg_ahb_clk = {1692	.halt_reg = 0x8a000,1693	.halt_check = BRANCH_HALT,1694	.hwcg_reg = 0x8a000,1695	.hwcg_bit = 1,1696	.clkr = {1697		.enable_reg = 0x8a000,1698		.enable_mask = BIT(0),1699		.hw.init = &(struct clk_init_data){1700			.name = "gcc_mss_cfg_ahb_clk",1701			.ops = &clk_branch2_ops,1702		},1703	},1704};1705 1706static struct clk_branch gcc_mss_gpll0_div_clk_src = {1707	.halt_check = BRANCH_HALT_DELAY,1708	.clkr = {1709		.enable_reg = 0x52004,1710		.enable_mask = BIT(17),1711		.hw.init = &(struct clk_init_data){1712			.name = "gcc_mss_gpll0_div_clk_src",1713			.ops = &clk_branch2_ops,1714		},1715	},1716};1717 1718static struct clk_branch gcc_mss_mfab_axis_clk = {1719	.halt_reg = 0x8a004,1720	.halt_check = BRANCH_VOTED,1721	.hwcg_reg = 0x8a004,1722	.hwcg_bit = 1,1723	.clkr = {1724		.enable_reg = 0x8a004,1725		.enable_mask = BIT(0),1726		.hw.init = &(struct clk_init_data){1727			.name = "gcc_mss_mfab_axis_clk",1728			.ops = &clk_branch2_ops,1729		},1730	},1731};1732 1733static struct clk_branch gcc_mss_q6_memnoc_axi_clk = {1734	.halt_reg = 0x8a154,1735	.halt_check = BRANCH_VOTED,1736	.clkr = {1737		.enable_reg = 0x8a154,1738		.enable_mask = BIT(0),1739		.hw.init = &(struct clk_init_data){1740			.name = "gcc_mss_q6_memnoc_axi_clk",1741			.ops = &clk_branch2_ops,1742		},1743	},1744};1745 1746static struct clk_branch gcc_mss_snoc_axi_clk = {1747	.halt_reg = 0x8a150,1748	.halt_check = BRANCH_HALT,1749	.clkr = {1750		.enable_reg = 0x8a150,1751		.enable_mask = BIT(0),1752		.hw.init = &(struct clk_init_data){1753			.name = "gcc_mss_snoc_axi_clk",1754			.ops = &clk_branch2_ops,1755		},1756	},1757};1758 1759static struct clk_branch gcc_mss_vs_clk = {1760	.halt_reg = 0x7a048,1761	.halt_check = BRANCH_HALT,1762	.clkr = {1763		.enable_reg = 0x7a048,1764		.enable_mask = BIT(0),1765		.hw.init = &(struct clk_init_data){1766			.name = "gcc_mss_vs_clk",1767			.parent_hws = (const struct clk_hw*[]){1768				&gcc_vsensor_clk_src.clkr.hw,1769			},1770			.num_parents = 1,1771			.flags = CLK_SET_RATE_PARENT,1772			.ops = &clk_branch2_ops,1773		},1774	},1775};1776 1777static struct clk_branch gcc_pcie_0_aux_clk = {1778	.halt_reg = 0x6b01c,1779	.halt_check = BRANCH_HALT_VOTED,1780	.clkr = {1781		.enable_reg = 0x5200c,1782		.enable_mask = BIT(3),1783		.hw.init = &(struct clk_init_data){1784			.name = "gcc_pcie_0_aux_clk",1785			.parent_hws = (const struct clk_hw*[]){1786				&gcc_pcie_0_aux_clk_src.clkr.hw,1787			},1788			.num_parents = 1,1789			.flags = CLK_SET_RATE_PARENT,1790			.ops = &clk_branch2_ops,1791		},1792	},1793};1794 1795static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {1796	.halt_reg = 0x6b018,1797	.halt_check = BRANCH_HALT_VOTED,1798	.hwcg_reg = 0x6b018,1799	.hwcg_bit = 1,1800	.clkr = {1801		.enable_reg = 0x5200c,1802		.enable_mask = BIT(2),1803		.hw.init = &(struct clk_init_data){1804			.name = "gcc_pcie_0_cfg_ahb_clk",1805			.ops = &clk_branch2_ops,1806		},1807	},1808};1809 1810static struct clk_branch gcc_pcie_0_clkref_clk = {1811	.halt_reg = 0x8c00c,1812	.halt_check = BRANCH_HALT,1813	.clkr = {1814		.enable_reg = 0x8c00c,1815		.enable_mask = BIT(0),1816		.hw.init = &(struct clk_init_data){1817			.name = "gcc_pcie_0_clkref_clk",1818			.ops = &clk_branch2_ops,1819		},1820	},1821};1822 1823static struct clk_branch gcc_pcie_0_mstr_axi_clk = {1824	.halt_reg = 0x6b014,1825	.halt_check = BRANCH_HALT_VOTED,1826	.clkr = {1827		.enable_reg = 0x5200c,1828		.enable_mask = BIT(1),1829		.hw.init = &(struct clk_init_data){1830			.name = "gcc_pcie_0_mstr_axi_clk",1831			.ops = &clk_branch2_ops,1832		},1833	},1834};1835 1836static struct clk_branch gcc_pcie_0_pipe_clk = {1837	.halt_check = BRANCH_HALT_SKIP,1838	.clkr = {1839		.enable_reg = 0x5200c,1840		.enable_mask = BIT(4),1841		.hw.init = &(struct clk_init_data){1842			.name = "gcc_pcie_0_pipe_clk",1843			.parent_data = &(const struct clk_parent_data){1844				.fw_name = "pcie_0_pipe_clk", .name = "pcie_0_pipe_clk",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_pcie_0_slv_axi_clk = {1854	.halt_reg = 0x6b010,1855	.halt_check = BRANCH_HALT_VOTED,1856	.hwcg_reg = 0x6b010,1857	.hwcg_bit = 1,1858	.clkr = {1859		.enable_reg = 0x5200c,1860		.enable_mask = BIT(0),1861		.hw.init = &(struct clk_init_data){1862			.name = "gcc_pcie_0_slv_axi_clk",1863			.ops = &clk_branch2_ops,1864		},1865	},1866};1867 1868static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {1869	.halt_reg = 0x6b00c,1870	.halt_check = BRANCH_HALT_VOTED,1871	.clkr = {1872		.enable_reg = 0x5200c,1873		.enable_mask = BIT(5),1874		.hw.init = &(struct clk_init_data){1875			.name = "gcc_pcie_0_slv_q2a_axi_clk",1876			.ops = &clk_branch2_ops,1877		},1878	},1879};1880 1881static struct clk_branch gcc_pcie_1_aux_clk = {1882	.halt_reg = 0x8d01c,1883	.halt_check = BRANCH_HALT_VOTED,1884	.clkr = {1885		.enable_reg = 0x52004,1886		.enable_mask = BIT(29),1887		.hw.init = &(struct clk_init_data){1888			.name = "gcc_pcie_1_aux_clk",1889			.parent_hws = (const struct clk_hw*[]){1890				&gcc_pcie_1_aux_clk_src.clkr.hw,1891			},1892			.num_parents = 1,1893			.flags = CLK_SET_RATE_PARENT,1894			.ops = &clk_branch2_ops,1895		},1896	},1897};1898 1899static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {1900	.halt_reg = 0x8d018,1901	.halt_check = BRANCH_HALT_VOTED,1902	.hwcg_reg = 0x8d018,1903	.hwcg_bit = 1,1904	.clkr = {1905		.enable_reg = 0x52004,1906		.enable_mask = BIT(28),1907		.hw.init = &(struct clk_init_data){1908			.name = "gcc_pcie_1_cfg_ahb_clk",1909			.ops = &clk_branch2_ops,1910		},1911	},1912};1913 1914static struct clk_branch gcc_pcie_1_clkref_clk = {1915	.halt_reg = 0x8c02c,1916	.halt_check = BRANCH_HALT,1917	.clkr = {1918		.enable_reg = 0x8c02c,1919		.enable_mask = BIT(0),1920		.hw.init = &(struct clk_init_data){1921			.name = "gcc_pcie_1_clkref_clk",1922			.ops = &clk_branch2_ops,1923		},1924	},1925};1926 1927static struct clk_branch gcc_pcie_1_mstr_axi_clk = {1928	.halt_reg = 0x8d014,1929	.halt_check = BRANCH_HALT_VOTED,1930	.clkr = {1931		.enable_reg = 0x52004,1932		.enable_mask = BIT(27),1933		.hw.init = &(struct clk_init_data){1934			.name = "gcc_pcie_1_mstr_axi_clk",1935			.ops = &clk_branch2_ops,1936		},1937	},1938};1939 1940static struct clk_branch gcc_pcie_1_pipe_clk = {1941	.halt_check = BRANCH_HALT_SKIP,1942	.clkr = {1943		.enable_reg = 0x52004,1944		.enable_mask = BIT(30),1945		.hw.init = &(struct clk_init_data){1946			.name = "gcc_pcie_1_pipe_clk",1947			.parent_data = &(const struct clk_parent_data){1948				.fw_name = "pcie_1_pipe_clk", .name = "pcie_1_pipe_clk",1949			},1950			.num_parents = 1,1951			.ops = &clk_branch2_ops,1952		},1953	},1954};1955 1956static struct clk_branch gcc_pcie_1_slv_axi_clk = {1957	.halt_reg = 0x8d010,1958	.halt_check = BRANCH_HALT_VOTED,1959	.hwcg_reg = 0x8d010,1960	.hwcg_bit = 1,1961	.clkr = {1962		.enable_reg = 0x52004,1963		.enable_mask = BIT(26),1964		.hw.init = &(struct clk_init_data){1965			.name = "gcc_pcie_1_slv_axi_clk",1966			.ops = &clk_branch2_ops,1967		},1968	},1969};1970 1971static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {1972	.halt_reg = 0x8d00c,1973	.halt_check = BRANCH_HALT_VOTED,1974	.clkr = {1975		.enable_reg = 0x52004,1976		.enable_mask = BIT(25),1977		.hw.init = &(struct clk_init_data){1978			.name = "gcc_pcie_1_slv_q2a_axi_clk",1979			.ops = &clk_branch2_ops,1980		},1981	},1982};1983 1984static struct clk_branch gcc_pcie_phy_aux_clk = {1985	.halt_reg = 0x6f004,1986	.halt_check = BRANCH_HALT,1987	.clkr = {1988		.enable_reg = 0x6f004,1989		.enable_mask = BIT(0),1990		.hw.init = &(struct clk_init_data){1991			.name = "gcc_pcie_phy_aux_clk",1992			.parent_hws = (const struct clk_hw*[]){1993				&gcc_pcie_0_aux_clk_src.clkr.hw,1994			},1995			.num_parents = 1,1996			.flags = CLK_SET_RATE_PARENT,1997			.ops = &clk_branch2_ops,1998		},1999	},2000};2001 2002static struct clk_branch gcc_pcie_phy_refgen_clk = {2003	.halt_reg = 0x6f02c,2004	.halt_check = BRANCH_HALT,2005	.clkr = {2006		.enable_reg = 0x6f02c,2007		.enable_mask = BIT(0),2008		.hw.init = &(struct clk_init_data){2009			.name = "gcc_pcie_phy_refgen_clk",2010			.parent_hws = (const struct clk_hw*[]){2011				&gcc_pcie_phy_refgen_clk_src.clkr.hw,2012			},2013			.num_parents = 1,2014			.flags = CLK_SET_RATE_PARENT,2015			.ops = &clk_branch2_ops,2016		},2017	},2018};2019 2020static struct clk_branch gcc_pdm2_clk = {2021	.halt_reg = 0x3300c,2022	.halt_check = BRANCH_HALT,2023	.clkr = {2024		.enable_reg = 0x3300c,2025		.enable_mask = BIT(0),2026		.hw.init = &(struct clk_init_data){2027			.name = "gcc_pdm2_clk",2028			.parent_hws = (const struct clk_hw*[]){2029				&gcc_pdm2_clk_src.clkr.hw,2030			},2031			.num_parents = 1,2032			.flags = CLK_SET_RATE_PARENT,2033			.ops = &clk_branch2_ops,2034		},2035	},2036};2037 2038static struct clk_branch gcc_pdm_ahb_clk = {2039	.halt_reg = 0x33004,2040	.halt_check = BRANCH_HALT,2041	.hwcg_reg = 0x33004,2042	.hwcg_bit = 1,2043	.clkr = {2044		.enable_reg = 0x33004,2045		.enable_mask = BIT(0),2046		.hw.init = &(struct clk_init_data){2047			.name = "gcc_pdm_ahb_clk",2048			.ops = &clk_branch2_ops,2049		},2050	},2051};2052 2053static struct clk_branch gcc_pdm_xo4_clk = {2054	.halt_reg = 0x33008,2055	.halt_check = BRANCH_HALT,2056	.clkr = {2057		.enable_reg = 0x33008,2058		.enable_mask = BIT(0),2059		.hw.init = &(struct clk_init_data){2060			.name = "gcc_pdm_xo4_clk",2061			.ops = &clk_branch2_ops,2062		},2063	},2064};2065 2066static struct clk_branch gcc_prng_ahb_clk = {2067	.halt_reg = 0x34004,2068	.halt_check = BRANCH_HALT_VOTED,2069	.hwcg_reg = 0x34004,2070	.hwcg_bit = 1,2071	.clkr = {2072		.enable_reg = 0x52004,2073		.enable_mask = BIT(13),2074		.hw.init = &(struct clk_init_data){2075			.name = "gcc_prng_ahb_clk",2076			.ops = &clk_branch2_ops,2077		},2078	},2079};2080 2081static struct clk_branch gcc_qmip_camera_ahb_clk = {2082	.halt_reg = 0xb014,2083	.halt_check = BRANCH_HALT,2084	.hwcg_reg = 0xb014,2085	.hwcg_bit = 1,2086	.clkr = {2087		.enable_reg = 0xb014,2088		.enable_mask = BIT(0),2089		.hw.init = &(struct clk_init_data){2090			.name = "gcc_qmip_camera_ahb_clk",2091			.ops = &clk_branch2_ops,2092		},2093	},2094};2095 2096static struct clk_branch gcc_qmip_disp_ahb_clk = {2097	.halt_reg = 0xb018,2098	.halt_check = BRANCH_HALT,2099	.hwcg_reg = 0xb018,2100	.hwcg_bit = 1,2101	.clkr = {2102		.enable_reg = 0xb018,2103		.enable_mask = BIT(0),2104		.hw.init = &(struct clk_init_data){2105			.name = "gcc_qmip_disp_ahb_clk",2106			.ops = &clk_branch2_ops,2107		},2108	},2109};2110 2111static struct clk_branch gcc_qmip_video_ahb_clk = {2112	.halt_reg = 0xb010,2113	.halt_check = BRANCH_HALT,2114	.hwcg_reg = 0xb010,2115	.hwcg_bit = 1,2116	.clkr = {2117		.enable_reg = 0xb010,2118		.enable_mask = BIT(0),2119		.hw.init = &(struct clk_init_data){2120			.name = "gcc_qmip_video_ahb_clk",2121			.ops = &clk_branch2_ops,2122		},2123	},2124};2125 2126static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {2127	.halt_reg = 0x4b000,2128	.halt_check = BRANCH_HALT,2129	.clkr = {2130		.enable_reg = 0x4b000,2131		.enable_mask = BIT(0),2132		.hw.init = &(struct clk_init_data){2133			.name = "gcc_qspi_cnoc_periph_ahb_clk",2134			.ops = &clk_branch2_ops,2135		},2136	},2137};2138 2139static struct clk_branch gcc_qspi_core_clk = {2140	.halt_reg = 0x4b004,2141	.halt_check = BRANCH_HALT,2142	.clkr = {2143		.enable_reg = 0x4b004,2144		.enable_mask = BIT(0),2145		.hw.init = &(struct clk_init_data){2146			.name = "gcc_qspi_core_clk",2147			.parent_hws = (const struct clk_hw*[]){2148				&gcc_qspi_core_clk_src.clkr.hw,2149			},2150			.num_parents = 1,2151			.flags = CLK_SET_RATE_PARENT,2152			.ops = &clk_branch2_ops,2153		},2154	},2155};2156 2157static struct clk_branch gcc_qupv3_wrap0_s0_clk = {2158	.halt_reg = 0x17030,2159	.halt_check = BRANCH_HALT_VOTED,2160	.clkr = {2161		.enable_reg = 0x5200c,2162		.enable_mask = BIT(10),2163		.hw.init = &(struct clk_init_data){2164			.name = "gcc_qupv3_wrap0_s0_clk",2165			.parent_hws = (const struct clk_hw*[]){2166				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,2167			},2168			.num_parents = 1,2169			.flags = CLK_SET_RATE_PARENT,2170			.ops = &clk_branch2_ops,2171		},2172	},2173};2174 2175static struct clk_branch gcc_qupv3_wrap0_s1_clk = {2176	.halt_reg = 0x17160,2177	.halt_check = BRANCH_HALT_VOTED,2178	.clkr = {2179		.enable_reg = 0x5200c,2180		.enable_mask = BIT(11),2181		.hw.init = &(struct clk_init_data){2182			.name = "gcc_qupv3_wrap0_s1_clk",2183			.parent_hws = (const struct clk_hw*[]){2184				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,2185			},2186			.num_parents = 1,2187			.flags = CLK_SET_RATE_PARENT,2188			.ops = &clk_branch2_ops,2189		},2190	},2191};2192 2193static struct clk_branch gcc_qupv3_wrap0_s2_clk = {2194	.halt_reg = 0x17290,2195	.halt_check = BRANCH_HALT_VOTED,2196	.clkr = {2197		.enable_reg = 0x5200c,2198		.enable_mask = BIT(12),2199		.hw.init = &(struct clk_init_data){2200			.name = "gcc_qupv3_wrap0_s2_clk",2201			.parent_hws = (const struct clk_hw*[]){2202				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,2203			},2204			.num_parents = 1,2205			.flags = CLK_SET_RATE_PARENT,2206			.ops = &clk_branch2_ops,2207		},2208	},2209};2210 2211static struct clk_branch gcc_qupv3_wrap0_s3_clk = {2212	.halt_reg = 0x173c0,2213	.halt_check = BRANCH_HALT_VOTED,2214	.clkr = {2215		.enable_reg = 0x5200c,2216		.enable_mask = BIT(13),2217		.hw.init = &(struct clk_init_data){2218			.name = "gcc_qupv3_wrap0_s3_clk",2219			.parent_hws = (const struct clk_hw*[]){2220				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,2221			},2222			.num_parents = 1,2223			.flags = CLK_SET_RATE_PARENT,2224			.ops = &clk_branch2_ops,2225		},2226	},2227};2228 2229static struct clk_branch gcc_qupv3_wrap0_s4_clk = {2230	.halt_reg = 0x174f0,2231	.halt_check = BRANCH_HALT_VOTED,2232	.clkr = {2233		.enable_reg = 0x5200c,2234		.enable_mask = BIT(14),2235		.hw.init = &(struct clk_init_data){2236			.name = "gcc_qupv3_wrap0_s4_clk",2237			.parent_hws = (const struct clk_hw*[]){2238				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,2239			},2240			.num_parents = 1,2241			.flags = CLK_SET_RATE_PARENT,2242			.ops = &clk_branch2_ops,2243		},2244	},2245};2246 2247static struct clk_branch gcc_qupv3_wrap0_s5_clk = {2248	.halt_reg = 0x17620,2249	.halt_check = BRANCH_HALT_VOTED,2250	.clkr = {2251		.enable_reg = 0x5200c,2252		.enable_mask = BIT(15),2253		.hw.init = &(struct clk_init_data){2254			.name = "gcc_qupv3_wrap0_s5_clk",2255			.parent_hws = (const struct clk_hw*[]){2256				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,2257			},2258			.num_parents = 1,2259			.flags = CLK_SET_RATE_PARENT,2260			.ops = &clk_branch2_ops,2261		},2262	},2263};2264 2265static struct clk_branch gcc_qupv3_wrap0_s6_clk = {2266	.halt_reg = 0x17750,2267	.halt_check = BRANCH_HALT_VOTED,2268	.clkr = {2269		.enable_reg = 0x5200c,2270		.enable_mask = BIT(16),2271		.hw.init = &(struct clk_init_data){2272			.name = "gcc_qupv3_wrap0_s6_clk",2273			.parent_hws = (const struct clk_hw*[]){2274				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw,2275			},2276			.num_parents = 1,2277			.flags = CLK_SET_RATE_PARENT,2278			.ops = &clk_branch2_ops,2279		},2280	},2281};2282 2283static struct clk_branch gcc_qupv3_wrap0_s7_clk = {2284	.halt_reg = 0x17880,2285	.halt_check = BRANCH_HALT_VOTED,2286	.clkr = {2287		.enable_reg = 0x5200c,2288		.enable_mask = BIT(17),2289		.hw.init = &(struct clk_init_data){2290			.name = "gcc_qupv3_wrap0_s7_clk",2291			.parent_hws = (const struct clk_hw*[]){2292				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw,2293			},2294			.num_parents = 1,2295			.flags = CLK_SET_RATE_PARENT,2296			.ops = &clk_branch2_ops,2297		},2298	},2299};2300 2301static struct clk_branch gcc_qupv3_wrap1_s0_clk = {2302	.halt_reg = 0x18014,2303	.halt_check = BRANCH_HALT_VOTED,2304	.clkr = {2305		.enable_reg = 0x5200c,2306		.enable_mask = BIT(22),2307		.hw.init = &(struct clk_init_data){2308			.name = "gcc_qupv3_wrap1_s0_clk",2309			.parent_hws = (const struct clk_hw*[]){2310				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,2311			},2312			.num_parents = 1,2313			.flags = CLK_SET_RATE_PARENT,2314			.ops = &clk_branch2_ops,2315		},2316	},2317};2318 2319static struct clk_branch gcc_qupv3_wrap1_s1_clk = {2320	.halt_reg = 0x18144,2321	.halt_check = BRANCH_HALT_VOTED,2322	.clkr = {2323		.enable_reg = 0x5200c,2324		.enable_mask = BIT(23),2325		.hw.init = &(struct clk_init_data){2326			.name = "gcc_qupv3_wrap1_s1_clk",2327			.parent_hws = (const struct clk_hw*[]){2328				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,2329			},2330			.num_parents = 1,2331			.flags = CLK_SET_RATE_PARENT,2332			.ops = &clk_branch2_ops,2333		},2334	},2335};2336 2337static struct clk_branch gcc_qupv3_wrap1_s2_clk = {2338	.halt_reg = 0x18274,2339	.halt_check = BRANCH_HALT_VOTED,2340	.clkr = {2341		.enable_reg = 0x5200c,2342		.enable_mask = BIT(24),2343		.hw.init = &(struct clk_init_data){2344			.name = "gcc_qupv3_wrap1_s2_clk",2345			.parent_hws = (const struct clk_hw*[]){2346				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,2347			},2348			.num_parents = 1,2349			.flags = CLK_SET_RATE_PARENT,2350			.ops = &clk_branch2_ops,2351		},2352	},2353};2354 2355static struct clk_branch gcc_qupv3_wrap1_s3_clk = {2356	.halt_reg = 0x183a4,2357	.halt_check = BRANCH_HALT_VOTED,2358	.clkr = {2359		.enable_reg = 0x5200c,2360		.enable_mask = BIT(25),2361		.hw.init = &(struct clk_init_data){2362			.name = "gcc_qupv3_wrap1_s3_clk",2363			.parent_hws = (const struct clk_hw*[]){2364				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,2365			},2366			.num_parents = 1,2367			.flags = CLK_SET_RATE_PARENT,2368			.ops = &clk_branch2_ops,2369		},2370	},2371};2372 2373static struct clk_branch gcc_qupv3_wrap1_s4_clk = {2374	.halt_reg = 0x184d4,2375	.halt_check = BRANCH_HALT_VOTED,2376	.clkr = {2377		.enable_reg = 0x5200c,2378		.enable_mask = BIT(26),2379		.hw.init = &(struct clk_init_data){2380			.name = "gcc_qupv3_wrap1_s4_clk",2381			.parent_hws = (const struct clk_hw*[]){2382				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,2383			},2384			.num_parents = 1,2385			.flags = CLK_SET_RATE_PARENT,2386			.ops = &clk_branch2_ops,2387		},2388	},2389};2390 2391static struct clk_branch gcc_qupv3_wrap1_s5_clk = {2392	.halt_reg = 0x18604,2393	.halt_check = BRANCH_HALT_VOTED,2394	.clkr = {2395		.enable_reg = 0x5200c,2396		.enable_mask = BIT(27),2397		.hw.init = &(struct clk_init_data){2398			.name = "gcc_qupv3_wrap1_s5_clk",2399			.parent_hws = (const struct clk_hw*[]){2400				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,2401			},2402			.num_parents = 1,2403			.flags = CLK_SET_RATE_PARENT,2404			.ops = &clk_branch2_ops,2405		},2406	},2407};2408 2409static struct clk_branch gcc_qupv3_wrap1_s6_clk = {2410	.halt_reg = 0x18734,2411	.halt_check = BRANCH_HALT_VOTED,2412	.clkr = {2413		.enable_reg = 0x5200c,2414		.enable_mask = BIT(28),2415		.hw.init = &(struct clk_init_data){2416			.name = "gcc_qupv3_wrap1_s6_clk",2417			.parent_hws = (const struct clk_hw*[]){2418				&gcc_qupv3_wrap1_s6_clk_src.clkr.hw,2419			},2420			.num_parents = 1,2421			.flags = CLK_SET_RATE_PARENT,2422			.ops = &clk_branch2_ops,2423		},2424	},2425};2426 2427static struct clk_branch gcc_qupv3_wrap1_s7_clk = {2428	.halt_reg = 0x18864,2429	.halt_check = BRANCH_HALT_VOTED,2430	.clkr = {2431		.enable_reg = 0x5200c,2432		.enable_mask = BIT(29),2433		.hw.init = &(struct clk_init_data){2434			.name = "gcc_qupv3_wrap1_s7_clk",2435			.parent_hws = (const struct clk_hw*[]){2436				&gcc_qupv3_wrap1_s7_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_qupv3_wrap_0_m_ahb_clk = {2446	.halt_reg = 0x17004,2447	.halt_check = BRANCH_HALT_VOTED,2448	.clkr = {2449		.enable_reg = 0x5200c,2450		.enable_mask = BIT(6),2451		.hw.init = &(struct clk_init_data){2452			.name = "gcc_qupv3_wrap_0_m_ahb_clk",2453			.ops = &clk_branch2_ops,2454		},2455	},2456};2457 2458static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {2459	.halt_reg = 0x17008,2460	.halt_check = BRANCH_HALT_VOTED,2461	.hwcg_reg = 0x17008,2462	.hwcg_bit = 1,2463	.clkr = {2464		.enable_reg = 0x5200c,2465		.enable_mask = BIT(7),2466		.hw.init = &(struct clk_init_data){2467			.name = "gcc_qupv3_wrap_0_s_ahb_clk",2468			.ops = &clk_branch2_ops,2469		},2470	},2471};2472 2473static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {2474	.halt_reg = 0x1800c,2475	.halt_check = BRANCH_HALT_VOTED,2476	.clkr = {2477		.enable_reg = 0x5200c,2478		.enable_mask = BIT(20),2479		.hw.init = &(struct clk_init_data){2480			.name = "gcc_qupv3_wrap_1_m_ahb_clk",2481			.ops = &clk_branch2_ops,2482		},2483	},2484};2485 2486static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {2487	.halt_reg = 0x18010,2488	.halt_check = BRANCH_HALT_VOTED,2489	.hwcg_reg = 0x18010,2490	.hwcg_bit = 1,2491	.clkr = {2492		.enable_reg = 0x5200c,2493		.enable_mask = BIT(21),2494		.hw.init = &(struct clk_init_data){2495			.name = "gcc_qupv3_wrap_1_s_ahb_clk",2496			.ops = &clk_branch2_ops,2497		},2498	},2499};2500 2501static struct clk_branch gcc_sdcc1_ahb_clk = {2502	.halt_reg = 0x26008,2503	.halt_check = BRANCH_HALT,2504	.clkr = {2505		.enable_reg = 0x26008,2506		.enable_mask = BIT(0),2507		.hw.init = &(struct clk_init_data){2508			.name = "gcc_sdcc1_ahb_clk",2509			.ops = &clk_branch2_ops,2510		},2511	},2512};2513 2514static struct clk_branch gcc_sdcc1_apps_clk = {2515	.halt_reg = 0x26004,2516	.halt_check = BRANCH_HALT,2517	.clkr = {2518		.enable_reg = 0x26004,2519		.enable_mask = BIT(0),2520		.hw.init = &(struct clk_init_data){2521			.name = "gcc_sdcc1_apps_clk",2522			.parent_hws = (const struct clk_hw*[]){2523				&gcc_sdcc1_apps_clk_src.clkr.hw,2524			},2525			.num_parents = 1,2526			.flags = CLK_SET_RATE_PARENT,2527			.ops = &clk_branch2_ops,2528		},2529	},2530};2531 2532static struct clk_branch gcc_sdcc1_ice_core_clk = {2533	.halt_reg = 0x2600c,2534	.halt_check = BRANCH_HALT,2535	.clkr = {2536		.enable_reg = 0x2600c,2537		.enable_mask = BIT(0),2538		.hw.init = &(struct clk_init_data){2539			.name = "gcc_sdcc1_ice_core_clk",2540			.parent_hws = (const struct clk_hw*[]){2541				&gcc_sdcc1_ice_core_clk_src.clkr.hw,2542			},2543			.num_parents = 1,2544			.flags = CLK_SET_RATE_PARENT,2545			.ops = &clk_branch2_ops,2546		},2547	},2548};2549 2550static struct clk_branch gcc_sdcc2_ahb_clk = {2551	.halt_reg = 0x14008,2552	.halt_check = BRANCH_HALT,2553	.clkr = {2554		.enable_reg = 0x14008,2555		.enable_mask = BIT(0),2556		.hw.init = &(struct clk_init_data){2557			.name = "gcc_sdcc2_ahb_clk",2558			.ops = &clk_branch2_ops,2559		},2560	},2561};2562 2563static struct clk_branch gcc_sdcc2_apps_clk = {2564	.halt_reg = 0x14004,2565	.halt_check = BRANCH_HALT,2566	.clkr = {2567		.enable_reg = 0x14004,2568		.enable_mask = BIT(0),2569		.hw.init = &(struct clk_init_data){2570			.name = "gcc_sdcc2_apps_clk",2571			.parent_hws = (const struct clk_hw*[]){2572				&gcc_sdcc2_apps_clk_src.clkr.hw,2573			},2574			.num_parents = 1,2575			.flags = CLK_SET_RATE_PARENT,2576			.ops = &clk_branch2_ops,2577		},2578	},2579};2580 2581static struct clk_branch gcc_sdcc4_ahb_clk = {2582	.halt_reg = 0x16008,2583	.halt_check = BRANCH_HALT,2584	.clkr = {2585		.enable_reg = 0x16008,2586		.enable_mask = BIT(0),2587		.hw.init = &(struct clk_init_data){2588			.name = "gcc_sdcc4_ahb_clk",2589			.ops = &clk_branch2_ops,2590		},2591	},2592};2593 2594static struct clk_branch gcc_sdcc4_apps_clk = {2595	.halt_reg = 0x16004,2596	.halt_check = BRANCH_HALT,2597	.clkr = {2598		.enable_reg = 0x16004,2599		.enable_mask = BIT(0),2600		.hw.init = &(struct clk_init_data){2601			.name = "gcc_sdcc4_apps_clk",2602			.parent_hws = (const struct clk_hw*[]){2603				&gcc_sdcc4_apps_clk_src.clkr.hw,2604			},2605			.num_parents = 1,2606			.flags = CLK_SET_RATE_PARENT,2607			.ops = &clk_branch2_ops,2608		},2609	},2610};2611 2612/*2613 * The source clock frequencies are different for SDM670; define a child clock2614 * pointing to the source clock that uses SDM670 frequencies.2615 */2616static struct clk_branch gcc_sdm670_sdcc4_apps_clk = {2617	.halt_reg = 0x16004,2618	.halt_check = BRANCH_HALT,2619	.clkr = {2620		.enable_reg = 0x16004,2621		.enable_mask = BIT(0),2622		.hw.init = &(struct clk_init_data){2623			.name = "gcc_sdcc4_apps_clk",2624			.parent_hws = (const struct clk_hw*[]){2625				&gcc_sdm670_sdcc4_apps_clk_src.clkr.hw,2626			},2627			.num_parents = 1,2628			.flags = CLK_SET_RATE_PARENT,2629			.ops = &clk_branch2_ops,2630		},2631	},2632};2633 2634static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {2635	.halt_reg = 0x414c,2636	.halt_check = BRANCH_HALT_VOTED,2637	.clkr = {2638		.enable_reg = 0x52004,2639		.enable_mask = BIT(0),2640		.hw.init = &(struct clk_init_data){2641			.name = "gcc_sys_noc_cpuss_ahb_clk",2642			.parent_hws = (const struct clk_hw*[]){2643				&gcc_cpuss_ahb_clk_src.clkr.hw,2644			},2645			.num_parents = 1,2646			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,2647			.ops = &clk_branch2_ops,2648		},2649	},2650};2651 2652static struct clk_branch gcc_tsif_ahb_clk = {2653	.halt_reg = 0x36004,2654	.halt_check = BRANCH_HALT,2655	.clkr = {2656		.enable_reg = 0x36004,2657		.enable_mask = BIT(0),2658		.hw.init = &(struct clk_init_data){2659			.name = "gcc_tsif_ahb_clk",2660			.ops = &clk_branch2_ops,2661		},2662	},2663};2664 2665static struct clk_branch gcc_tsif_inactivity_timers_clk = {2666	.halt_reg = 0x3600c,2667	.halt_check = BRANCH_HALT,2668	.clkr = {2669		.enable_reg = 0x3600c,2670		.enable_mask = BIT(0),2671		.hw.init = &(struct clk_init_data){2672			.name = "gcc_tsif_inactivity_timers_clk",2673			.ops = &clk_branch2_ops,2674		},2675	},2676};2677 2678static struct clk_branch gcc_tsif_ref_clk = {2679	.halt_reg = 0x36008,2680	.halt_check = BRANCH_HALT,2681	.clkr = {2682		.enable_reg = 0x36008,2683		.enable_mask = BIT(0),2684		.hw.init = &(struct clk_init_data){2685			.name = "gcc_tsif_ref_clk",2686			.parent_hws = (const struct clk_hw*[]){2687				&gcc_tsif_ref_clk_src.clkr.hw,2688			},2689			.num_parents = 1,2690			.flags = CLK_SET_RATE_PARENT,2691			.ops = &clk_branch2_ops,2692		},2693	},2694};2695 2696static struct clk_branch gcc_ufs_card_ahb_clk = {2697	.halt_reg = 0x75010,2698	.halt_check = BRANCH_HALT,2699	.hwcg_reg = 0x75010,2700	.hwcg_bit = 1,2701	.clkr = {2702		.enable_reg = 0x75010,2703		.enable_mask = BIT(0),2704		.hw.init = &(struct clk_init_data){2705			.name = "gcc_ufs_card_ahb_clk",2706			.ops = &clk_branch2_ops,2707		},2708	},2709};2710 2711static struct clk_branch gcc_ufs_card_axi_clk = {2712	.halt_reg = 0x7500c,2713	.halt_check = BRANCH_HALT,2714	.hwcg_reg = 0x7500c,2715	.hwcg_bit = 1,2716	.clkr = {2717		.enable_reg = 0x7500c,2718		.enable_mask = BIT(0),2719		.hw.init = &(struct clk_init_data){2720			.name = "gcc_ufs_card_axi_clk",2721			.parent_hws = (const struct clk_hw*[]){2722				&gcc_ufs_card_axi_clk_src.clkr.hw,2723			},2724			.num_parents = 1,2725			.flags = CLK_SET_RATE_PARENT,2726			.ops = &clk_branch2_ops,2727		},2728	},2729};2730 2731static struct clk_branch gcc_ufs_card_clkref_clk = {2732	.halt_reg = 0x8c004,2733	.halt_check = BRANCH_HALT,2734	.clkr = {2735		.enable_reg = 0x8c004,2736		.enable_mask = BIT(0),2737		.hw.init = &(struct clk_init_data){2738			.name = "gcc_ufs_card_clkref_clk",2739			.ops = &clk_branch2_ops,2740		},2741	},2742};2743 2744static struct clk_branch gcc_ufs_card_ice_core_clk = {2745	.halt_reg = 0x75058,2746	.halt_check = BRANCH_HALT,2747	.hwcg_reg = 0x75058,2748	.hwcg_bit = 1,2749	.clkr = {2750		.enable_reg = 0x75058,2751		.enable_mask = BIT(0),2752		.hw.init = &(struct clk_init_data){2753			.name = "gcc_ufs_card_ice_core_clk",2754			.parent_hws = (const struct clk_hw*[]){2755				&gcc_ufs_card_ice_core_clk_src.clkr.hw,2756			},2757			.num_parents = 1,2758			.flags = CLK_SET_RATE_PARENT,2759			.ops = &clk_branch2_ops,2760		},2761	},2762};2763 2764static struct clk_branch gcc_ufs_card_phy_aux_clk = {2765	.halt_reg = 0x7508c,2766	.halt_check = BRANCH_HALT,2767	.hwcg_reg = 0x7508c,2768	.hwcg_bit = 1,2769	.clkr = {2770		.enable_reg = 0x7508c,2771		.enable_mask = BIT(0),2772		.hw.init = &(struct clk_init_data){2773			.name = "gcc_ufs_card_phy_aux_clk",2774			.parent_hws = (const struct clk_hw*[]){2775				&gcc_ufs_card_phy_aux_clk_src.clkr.hw,2776			},2777			.num_parents = 1,2778			.flags = CLK_SET_RATE_PARENT,2779			.ops = &clk_branch2_ops,2780		},2781	},2782};2783 2784static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {2785	.halt_check = BRANCH_HALT_SKIP,2786	.clkr = {2787		.enable_reg = 0x75018,2788		.enable_mask = BIT(0),2789		.hw.init = &(struct clk_init_data){2790			.name = "gcc_ufs_card_rx_symbol_0_clk",2791			.ops = &clk_branch2_ops,2792		},2793	},2794};2795 2796static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {2797	.halt_check = BRANCH_HALT_SKIP,2798	.clkr = {2799		.enable_reg = 0x750a8,2800		.enable_mask = BIT(0),2801		.hw.init = &(struct clk_init_data){2802			.name = "gcc_ufs_card_rx_symbol_1_clk",2803			.ops = &clk_branch2_ops,2804		},2805	},2806};2807 2808static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {2809	.halt_check = BRANCH_HALT_SKIP,2810	.clkr = {2811		.enable_reg = 0x75014,2812		.enable_mask = BIT(0),2813		.hw.init = &(struct clk_init_data){2814			.name = "gcc_ufs_card_tx_symbol_0_clk",2815			.ops = &clk_branch2_ops,2816		},2817	},2818};2819 2820static struct clk_branch gcc_ufs_card_unipro_core_clk = {2821	.halt_reg = 0x75054,2822	.halt_check = BRANCH_HALT,2823	.hwcg_reg = 0x75054,2824	.hwcg_bit = 1,2825	.clkr = {2826		.enable_reg = 0x75054,2827		.enable_mask = BIT(0),2828		.hw.init = &(struct clk_init_data){2829			.name = "gcc_ufs_card_unipro_core_clk",2830			.parent_hws = (const struct clk_hw*[]){2831				&gcc_ufs_card_unipro_core_clk_src.clkr.hw,2832			},2833			.num_parents = 1,2834			.flags = CLK_SET_RATE_PARENT,2835			.ops = &clk_branch2_ops,2836		},2837	},2838};2839 2840static struct clk_branch gcc_ufs_mem_clkref_clk = {2841	.halt_reg = 0x8c000,2842	.halt_check = BRANCH_HALT,2843	.clkr = {2844		.enable_reg = 0x8c000,2845		.enable_mask = BIT(0),2846		.hw.init = &(struct clk_init_data){2847			.name = "gcc_ufs_mem_clkref_clk",2848			.ops = &clk_branch2_ops,2849		},2850	},2851};2852 2853static struct clk_branch gcc_ufs_phy_ahb_clk = {2854	.halt_reg = 0x77010,2855	.halt_check = BRANCH_HALT,2856	.hwcg_reg = 0x77010,2857	.hwcg_bit = 1,2858	.clkr = {2859		.enable_reg = 0x77010,2860		.enable_mask = BIT(0),2861		.hw.init = &(struct clk_init_data){2862			.name = "gcc_ufs_phy_ahb_clk",2863			.ops = &clk_branch2_ops,2864		},2865	},2866};2867 2868static struct clk_branch gcc_ufs_phy_axi_clk = {2869	.halt_reg = 0x7700c,2870	.halt_check = BRANCH_HALT,2871	.hwcg_reg = 0x7700c,2872	.hwcg_bit = 1,2873	.clkr = {2874		.enable_reg = 0x7700c,2875		.enable_mask = BIT(0),2876		.hw.init = &(struct clk_init_data){2877			.name = "gcc_ufs_phy_axi_clk",2878			.parent_hws = (const struct clk_hw*[]){2879				&gcc_ufs_phy_axi_clk_src.clkr.hw,2880			},2881			.num_parents = 1,2882			.flags = CLK_SET_RATE_PARENT,2883			.ops = &clk_branch2_ops,2884		},2885	},2886};2887 2888static struct clk_branch gcc_ufs_phy_ice_core_clk = {2889	.halt_reg = 0x77058,2890	.halt_check = BRANCH_HALT,2891	.hwcg_reg = 0x77058,2892	.hwcg_bit = 1,2893	.clkr = {2894		.enable_reg = 0x77058,2895		.enable_mask = BIT(0),2896		.hw.init = &(struct clk_init_data){2897			.name = "gcc_ufs_phy_ice_core_clk",2898			.parent_hws = (const struct clk_hw*[]){2899				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,2900			},2901			.num_parents = 1,2902			.flags = CLK_SET_RATE_PARENT,2903			.ops = &clk_branch2_ops,2904		},2905	},2906};2907 2908static struct clk_branch gcc_ufs_phy_phy_aux_clk = {2909	.halt_reg = 0x7708c,2910	.halt_check = BRANCH_HALT,2911	.hwcg_reg = 0x7708c,2912	.hwcg_bit = 1,2913	.clkr = {2914		.enable_reg = 0x7708c,2915		.enable_mask = BIT(0),2916		.hw.init = &(struct clk_init_data){2917			.name = "gcc_ufs_phy_phy_aux_clk",2918			.parent_hws = (const struct clk_hw*[]){2919				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,2920			},2921			.num_parents = 1,2922			.flags = CLK_SET_RATE_PARENT,2923			.ops = &clk_branch2_ops,2924		},2925	},2926};2927 2928static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {2929	.halt_check = BRANCH_HALT_SKIP,2930	.clkr = {2931		.enable_reg = 0x77018,2932		.enable_mask = BIT(0),2933		.hw.init = &(struct clk_init_data){2934			.name = "gcc_ufs_phy_rx_symbol_0_clk",2935			.ops = &clk_branch2_ops,2936		},2937	},2938};2939 2940static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {2941	.halt_check = BRANCH_HALT_SKIP,2942	.clkr = {2943		.enable_reg = 0x770a8,2944		.enable_mask = BIT(0),2945		.hw.init = &(struct clk_init_data){2946			.name = "gcc_ufs_phy_rx_symbol_1_clk",2947			.ops = &clk_branch2_ops,2948		},2949	},2950};2951 2952static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {2953	.halt_check = BRANCH_HALT_SKIP,2954	.clkr = {2955		.enable_reg = 0x77014,2956		.enable_mask = BIT(0),2957		.hw.init = &(struct clk_init_data){2958			.name = "gcc_ufs_phy_tx_symbol_0_clk",2959			.ops = &clk_branch2_ops,2960		},2961	},2962};2963 2964static struct clk_branch gcc_ufs_phy_unipro_core_clk = {2965	.halt_reg = 0x77054,2966	.halt_check = BRANCH_HALT,2967	.hwcg_reg = 0x77054,2968	.hwcg_bit = 1,2969	.clkr = {2970		.enable_reg = 0x77054,2971		.enable_mask = BIT(0),2972		.hw.init = &(struct clk_init_data){2973			.name = "gcc_ufs_phy_unipro_core_clk",2974			.parent_hws = (const struct clk_hw*[]){2975				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,2976			},2977			.num_parents = 1,2978			.flags = CLK_SET_RATE_PARENT,2979			.ops = &clk_branch2_ops,2980		},2981	},2982};2983 2984static struct clk_branch gcc_usb30_prim_master_clk = {2985	.halt_reg = 0xf00c,2986	.halt_check = BRANCH_HALT,2987	.clkr = {2988		.enable_reg = 0xf00c,2989		.enable_mask = BIT(0),2990		.hw.init = &(struct clk_init_data){2991			.name = "gcc_usb30_prim_master_clk",2992			.parent_hws = (const struct clk_hw*[]){2993				&gcc_usb30_prim_master_clk_src.clkr.hw,2994			},2995			.num_parents = 1,2996			.flags = CLK_SET_RATE_PARENT,2997			.ops = &clk_branch2_ops,2998		},2999	},3000};3001 3002static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {3003	.halt_reg = 0xf014,3004	.halt_check = BRANCH_HALT,3005	.clkr = {3006		.enable_reg = 0xf014,3007		.enable_mask = BIT(0),3008		.hw.init = &(struct clk_init_data){3009			.name = "gcc_usb30_prim_mock_utmi_clk",3010			.parent_hws = (const struct clk_hw*[]){3011				&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,3012			},3013			.num_parents = 1,3014			.flags = CLK_SET_RATE_PARENT,3015			.ops = &clk_branch2_ops,3016		},3017	},3018};3019 3020static struct clk_branch gcc_usb30_prim_sleep_clk = {3021	.halt_reg = 0xf010,3022	.halt_check = BRANCH_HALT,3023	.clkr = {3024		.enable_reg = 0xf010,3025		.enable_mask = BIT(0),3026		.hw.init = &(struct clk_init_data){3027			.name = "gcc_usb30_prim_sleep_clk",3028			.ops = &clk_branch2_ops,3029		},3030	},3031};3032 3033static struct clk_branch gcc_usb30_sec_master_clk = {3034	.halt_reg = 0x1000c,3035	.halt_check = BRANCH_HALT,3036	.clkr = {3037		.enable_reg = 0x1000c,3038		.enable_mask = BIT(0),3039		.hw.init = &(struct clk_init_data){3040			.name = "gcc_usb30_sec_master_clk",3041			.parent_hws = (const struct clk_hw*[]){3042				&gcc_usb30_sec_master_clk_src.clkr.hw,3043			},3044			.num_parents = 1,3045			.flags = CLK_SET_RATE_PARENT,3046			.ops = &clk_branch2_ops,3047		},3048	},3049};3050 3051static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {3052	.halt_reg = 0x10014,3053	.halt_check = BRANCH_HALT,3054	.clkr = {3055		.enable_reg = 0x10014,3056		.enable_mask = BIT(0),3057		.hw.init = &(struct clk_init_data){3058			.name = "gcc_usb30_sec_mock_utmi_clk",3059			.parent_hws = (const struct clk_hw*[]){3060				&gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,3061			},3062			.num_parents = 1,3063			.flags = CLK_SET_RATE_PARENT,3064			.ops = &clk_branch2_ops,3065		},3066	},3067};3068 3069static struct clk_branch gcc_usb30_sec_sleep_clk = {3070	.halt_reg = 0x10010,3071	.halt_check = BRANCH_HALT,3072	.clkr = {3073		.enable_reg = 0x10010,3074		.enable_mask = BIT(0),3075		.hw.init = &(struct clk_init_data){3076			.name = "gcc_usb30_sec_sleep_clk",3077			.ops = &clk_branch2_ops,3078		},3079	},3080};3081 3082static struct clk_branch gcc_usb3_prim_clkref_clk = {3083	.halt_reg = 0x8c008,3084	.halt_check = BRANCH_HALT,3085	.clkr = {3086		.enable_reg = 0x8c008,3087		.enable_mask = BIT(0),3088		.hw.init = &(struct clk_init_data){3089			.name = "gcc_usb3_prim_clkref_clk",3090			.ops = &clk_branch2_ops,3091		},3092	},3093};3094 3095static struct clk_branch gcc_usb3_prim_phy_aux_clk = {3096	.halt_reg = 0xf04c,3097	.halt_check = BRANCH_HALT,3098	.clkr = {3099		.enable_reg = 0xf04c,3100		.enable_mask = BIT(0),3101		.hw.init = &(struct clk_init_data){3102			.name = "gcc_usb3_prim_phy_aux_clk",3103			.parent_hws = (const struct clk_hw*[]){3104				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3105			},3106			.num_parents = 1,3107			.flags = CLK_SET_RATE_PARENT,3108			.ops = &clk_branch2_ops,3109		},3110	},3111};3112 3113static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {3114	.halt_reg = 0xf050,3115	.halt_check = BRANCH_HALT,3116	.clkr = {3117		.enable_reg = 0xf050,3118		.enable_mask = BIT(0),3119		.hw.init = &(struct clk_init_data){3120			.name = "gcc_usb3_prim_phy_com_aux_clk",3121			.parent_hws = (const struct clk_hw*[]){3122				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3123			},3124			.num_parents = 1,3125			.flags = CLK_SET_RATE_PARENT,3126			.ops = &clk_branch2_ops,3127		},3128	},3129};3130 3131static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {3132	.halt_check = BRANCH_HALT_SKIP,3133	.clkr = {3134		.enable_reg = 0xf054,3135		.enable_mask = BIT(0),3136		.hw.init = &(struct clk_init_data){3137			.name = "gcc_usb3_prim_phy_pipe_clk",3138			.ops = &clk_branch2_ops,3139		},3140	},3141};3142 3143static struct clk_branch gcc_usb3_sec_clkref_clk = {3144	.halt_reg = 0x8c028,3145	.halt_check = BRANCH_HALT,3146	.clkr = {3147		.enable_reg = 0x8c028,3148		.enable_mask = BIT(0),3149		.hw.init = &(struct clk_init_data){3150			.name = "gcc_usb3_sec_clkref_clk",3151			.ops = &clk_branch2_ops,3152		},3153	},3154};3155 3156static struct clk_branch gcc_usb3_sec_phy_aux_clk = {3157	.halt_reg = 0x1004c,3158	.halt_check = BRANCH_HALT,3159	.clkr = {3160		.enable_reg = 0x1004c,3161		.enable_mask = BIT(0),3162		.hw.init = &(struct clk_init_data){3163			.name = "gcc_usb3_sec_phy_aux_clk",3164			.parent_hws = (const struct clk_hw*[]){3165				&gcc_usb3_sec_phy_aux_clk_src.clkr.hw,3166			},3167			.num_parents = 1,3168			.flags = CLK_SET_RATE_PARENT,3169			.ops = &clk_branch2_ops,3170		},3171	},3172};3173 3174static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {3175	.halt_reg = 0x10050,3176	.halt_check = BRANCH_HALT,3177	.clkr = {3178		.enable_reg = 0x10050,3179		.enable_mask = BIT(0),3180		.hw.init = &(struct clk_init_data){3181			.name = "gcc_usb3_sec_phy_com_aux_clk",3182			.parent_hws = (const struct clk_hw*[]){3183				&gcc_usb3_sec_phy_aux_clk_src.clkr.hw,3184			},3185			.num_parents = 1,3186			.flags = CLK_SET_RATE_PARENT,3187			.ops = &clk_branch2_ops,3188		},3189	},3190};3191 3192static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {3193	.halt_check = BRANCH_HALT_SKIP,3194	.clkr = {3195		.enable_reg = 0x10054,3196		.enable_mask = BIT(0),3197		.hw.init = &(struct clk_init_data){3198			.name = "gcc_usb3_sec_phy_pipe_clk",3199			.ops = &clk_branch2_ops,3200		},3201	},3202};3203 3204static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {3205	.halt_reg = 0x6a004,3206	.halt_check = BRANCH_HALT,3207	.hwcg_reg = 0x6a004,3208	.hwcg_bit = 1,3209	.clkr = {3210		.enable_reg = 0x6a004,3211		.enable_mask = BIT(0),3212		.hw.init = &(struct clk_init_data){3213			.name = "gcc_usb_phy_cfg_ahb2phy_clk",3214			.ops = &clk_branch2_ops,3215		},3216	},3217};3218 3219static struct clk_branch gcc_vdda_vs_clk = {3220	.halt_reg = 0x7a00c,3221	.halt_check = BRANCH_HALT,3222	.clkr = {3223		.enable_reg = 0x7a00c,3224		.enable_mask = BIT(0),3225		.hw.init = &(struct clk_init_data){3226			.name = "gcc_vdda_vs_clk",3227			.parent_hws = (const struct clk_hw*[]){3228				&gcc_vsensor_clk_src.clkr.hw,3229			},3230			.num_parents = 1,3231			.flags = CLK_SET_RATE_PARENT,3232			.ops = &clk_branch2_ops,3233		},3234	},3235};3236 3237static struct clk_branch gcc_vddcx_vs_clk = {3238	.halt_reg = 0x7a004,3239	.halt_check = BRANCH_HALT,3240	.clkr = {3241		.enable_reg = 0x7a004,3242		.enable_mask = BIT(0),3243		.hw.init = &(struct clk_init_data){3244			.name = "gcc_vddcx_vs_clk",3245			.parent_hws = (const struct clk_hw*[]){3246				&gcc_vsensor_clk_src.clkr.hw,3247			},3248			.num_parents = 1,3249			.flags = CLK_SET_RATE_PARENT,3250			.ops = &clk_branch2_ops,3251		},3252	},3253};3254 3255static struct clk_branch gcc_vddmx_vs_clk = {3256	.halt_reg = 0x7a008,3257	.halt_check = BRANCH_HALT,3258	.clkr = {3259		.enable_reg = 0x7a008,3260		.enable_mask = BIT(0),3261		.hw.init = &(struct clk_init_data){3262			.name = "gcc_vddmx_vs_clk",3263			.parent_hws = (const struct clk_hw*[]){3264				&gcc_vsensor_clk_src.clkr.hw,3265			},3266			.num_parents = 1,3267			.flags = CLK_SET_RATE_PARENT,3268			.ops = &clk_branch2_ops,3269		},3270	},3271};3272 3273static struct clk_branch gcc_video_ahb_clk = {3274	.halt_reg = 0xb004,3275	.halt_check = BRANCH_HALT,3276	.hwcg_reg = 0xb004,3277	.hwcg_bit = 1,3278	.clkr = {3279		.enable_reg = 0xb004,3280		.enable_mask = BIT(0),3281		.hw.init = &(struct clk_init_data){3282			.name = "gcc_video_ahb_clk",3283			.flags = CLK_IS_CRITICAL,3284			.ops = &clk_branch2_ops,3285		},3286	},3287};3288 3289static struct clk_branch gcc_video_axi_clk = {3290	.halt_reg = 0xb01c,3291	.halt_check = BRANCH_VOTED,3292	.clkr = {3293		.enable_reg = 0xb01c,3294		.enable_mask = BIT(0),3295		.hw.init = &(struct clk_init_data){3296			.name = "gcc_video_axi_clk",3297			.ops = &clk_branch2_ops,3298		},3299	},3300};3301 3302static struct clk_branch gcc_video_xo_clk = {3303	.halt_reg = 0xb028,3304	.halt_check = BRANCH_HALT,3305	.clkr = {3306		.enable_reg = 0xb028,3307		.enable_mask = BIT(0),3308		.hw.init = &(struct clk_init_data){3309			.name = "gcc_video_xo_clk",3310			.flags = CLK_IS_CRITICAL,3311			.ops = &clk_branch2_ops,3312		},3313	},3314};3315 3316static struct clk_branch gcc_vs_ctrl_ahb_clk = {3317	.halt_reg = 0x7a014,3318	.halt_check = BRANCH_HALT,3319	.hwcg_reg = 0x7a014,3320	.hwcg_bit = 1,3321	.clkr = {3322		.enable_reg = 0x7a014,3323		.enable_mask = BIT(0),3324		.hw.init = &(struct clk_init_data){3325			.name = "gcc_vs_ctrl_ahb_clk",3326			.ops = &clk_branch2_ops,3327		},3328	},3329};3330 3331static struct clk_branch gcc_vs_ctrl_clk = {3332	.halt_reg = 0x7a010,3333	.halt_check = BRANCH_HALT,3334	.clkr = {3335		.enable_reg = 0x7a010,3336		.enable_mask = BIT(0),3337		.hw.init = &(struct clk_init_data){3338			.name = "gcc_vs_ctrl_clk",3339			.parent_hws = (const struct clk_hw*[]){3340				&gcc_vs_ctrl_clk_src.clkr.hw,3341			},3342			.num_parents = 1,3343			.flags = CLK_SET_RATE_PARENT,3344			.ops = &clk_branch2_ops,3345		},3346	},3347};3348 3349static struct clk_branch gcc_cpuss_dvm_bus_clk = {3350	.halt_reg = 0x48190,3351	.halt_check = BRANCH_HALT,3352	.clkr = {3353		.enable_reg = 0x48190,3354		.enable_mask = BIT(0),3355		.hw.init = &(struct clk_init_data){3356			.name = "gcc_cpuss_dvm_bus_clk",3357			.flags = CLK_IS_CRITICAL,3358			.ops = &clk_branch2_ops,3359		},3360	},3361};3362 3363static struct clk_branch gcc_cpuss_gnoc_clk = {3364	.halt_reg = 0x48004,3365	.halt_check = BRANCH_HALT_VOTED,3366	.hwcg_reg = 0x48004,3367	.hwcg_bit = 1,3368	.clkr = {3369		.enable_reg = 0x52004,3370		.enable_mask = BIT(22),3371		.hw.init = &(struct clk_init_data){3372			.name = "gcc_cpuss_gnoc_clk",3373			.flags = CLK_IS_CRITICAL,3374			.ops = &clk_branch2_ops,3375		},3376	},3377};3378 3379/* TODO: Remove after DTS updated to protect these */3380#ifdef CONFIG_SDM_LPASSCC_8453381static struct clk_branch gcc_lpass_q6_axi_clk = {3382	.halt_reg = 0x47000,3383	.halt_check = BRANCH_HALT,3384	.clkr = {3385		.enable_reg = 0x47000,3386		.enable_mask = BIT(0),3387		.hw.init = &(struct clk_init_data){3388			.name = "gcc_lpass_q6_axi_clk",3389			.flags = CLK_IS_CRITICAL,3390			.ops = &clk_branch2_ops,3391		},3392	},3393};3394 3395static struct clk_branch gcc_lpass_sway_clk = {3396	.halt_reg = 0x47008,3397	.halt_check = BRANCH_HALT,3398	.clkr = {3399		.enable_reg = 0x47008,3400		.enable_mask = BIT(0),3401		.hw.init = &(struct clk_init_data){3402			.name = "gcc_lpass_sway_clk",3403			.flags = CLK_IS_CRITICAL,3404			.ops = &clk_branch2_ops,3405		},3406	},3407};3408#endif3409 3410static struct gdsc pcie_0_gdsc = {3411	.gdscr = 0x6b004,3412	.pd = {3413		.name = "pcie_0_gdsc",3414	},3415	.pwrsts = PWRSTS_OFF_ON,3416	.flags = POLL_CFG_GDSCR,3417};3418 3419static struct gdsc pcie_1_gdsc = {3420	.gdscr = 0x8d004,3421	.pd = {3422		.name = "pcie_1_gdsc",3423	},3424	.pwrsts = PWRSTS_OFF_ON,3425	.flags = POLL_CFG_GDSCR,3426};3427 3428static struct gdsc ufs_card_gdsc = {3429	.gdscr = 0x75004,3430	.pd = {3431		.name = "ufs_card_gdsc",3432	},3433	.pwrsts = PWRSTS_OFF_ON,3434	.flags = POLL_CFG_GDSCR,3435};3436 3437static struct gdsc ufs_phy_gdsc = {3438	.gdscr = 0x77004,3439	.pd = {3440		.name = "ufs_phy_gdsc",3441	},3442	.pwrsts = PWRSTS_OFF_ON,3443	.flags = POLL_CFG_GDSCR,3444};3445 3446static struct gdsc usb30_prim_gdsc = {3447	.gdscr = 0xf004,3448	.pd = {3449		.name = "usb30_prim_gdsc",3450	},3451	.pwrsts = PWRSTS_OFF_ON,3452	.flags = POLL_CFG_GDSCR,3453};3454 3455static struct gdsc usb30_sec_gdsc = {3456	.gdscr = 0x10004,3457	.pd = {3458		.name = "usb30_sec_gdsc",3459	},3460	.pwrsts = PWRSTS_OFF_ON,3461	.flags = POLL_CFG_GDSCR,3462};3463 3464static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = {3465	.gdscr = 0x7d030,3466	.pd = {3467		.name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc",3468	},3469	.pwrsts = PWRSTS_OFF_ON,3470	.flags = VOTABLE,3471};3472 3473static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {3474	.gdscr = 0x7d03c,3475	.pd = {3476		.name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc",3477	},3478	.pwrsts = PWRSTS_OFF_ON,3479	.flags = VOTABLE,3480};3481 3482static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {3483	.gdscr = 0x7d034,3484	.pd = {3485		.name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc",3486	},3487	.pwrsts = PWRSTS_OFF_ON,3488	.flags = VOTABLE,3489};3490 3491static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {3492	.gdscr = 0x7d038,3493	.pd = {3494		.name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc",3495	},3496	.pwrsts = PWRSTS_OFF_ON,3497	.flags = VOTABLE,3498};3499 3500static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {3501	.gdscr = 0x7d040,3502	.pd = {3503		.name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",3504	},3505	.pwrsts = PWRSTS_OFF_ON,3506	.flags = VOTABLE,3507};3508 3509static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {3510	.gdscr = 0x7d048,3511	.pd = {3512		.name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",3513	},3514	.pwrsts = PWRSTS_OFF_ON,3515	.flags = VOTABLE,3516};3517 3518static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {3519	.gdscr = 0x7d044,3520	.pd = {3521		.name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc",3522	},3523	.pwrsts = PWRSTS_OFF_ON,3524	.flags = VOTABLE,3525};3526 3527static struct clk_regmap *gcc_sdm670_clocks[] = {3528	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,3529	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,3530	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,3531	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3532	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,3533	[GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr,3534	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,3535	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,3536	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,3537	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,3538	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3539	[GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,3540	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,3541	[GCC_CPUSS_RBCPR_CLK] = &gcc_sdm670_cpuss_rbcpr_clk.clkr,3542	[GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_sdm670_cpuss_rbcpr_clk_src.clkr,3543	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,3544	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,3545	[GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr,3546	[GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,3547	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,3548	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,3549	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3550	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3551	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3552	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3553	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3554	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3555	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,3556	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3557	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3558	[GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,3559	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3560	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3561	[GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr,3562	[GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr,3563	[GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,3564	[GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,3565	[GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr,3566	[GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr,3567	[GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,3568	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,3569	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3570	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3571	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3572	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3573	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,3574	[GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr,3575	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3576	[GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr,3577	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,3578	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,3579	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,3580	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,3581	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,3582	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,3583	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,3584	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,3585	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,3586	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,3587	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,3588	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,3589	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,3590	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,3591	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,3592	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,3593	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,3594	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,3595	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,3596	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,3597	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,3598	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,3599	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,3600	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,3601	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,3602	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,3603	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,3604	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,3605	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,3606	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,3607	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,3608	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,3609	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,3610	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,3611	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,3612	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,3613	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,3614	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,3615	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,3616	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,3617	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,3618	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,3619	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,3620	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,3621	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,3622	[GCC_SDCC4_APPS_CLK] = &gcc_sdm670_sdcc4_apps_clk.clkr,3623	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdm670_sdcc4_apps_clk_src.clkr,3624	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,3625	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,3626	[GCC_TSIF_INACTIVITY_TIMERS_CLK] =3627					&gcc_tsif_inactivity_timers_clk.clkr,3628	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,3629	[GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,3630	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,3631	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,3632	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,3633	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,3634	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,3635	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,3636	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,3637	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,3638	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,3639	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,3640	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,3641	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =3642					&gcc_ufs_phy_unipro_core_clk_src.clkr,3643	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,3644	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,3645	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,3646	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =3647					&gcc_usb30_prim_mock_utmi_clk_src.clkr,3648	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,3649	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,3650	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,3651	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,3652	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,3653	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,3654	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,3655	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,3656	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,3657	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,3658	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,3659	[GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr,3660	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,3661	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,3662	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,3663	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,3664	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,3665	[GPLL0] = &gpll0.clkr,3666	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,3667	[GPLL4] = &gpll4.clkr,3668	[GPLL6] = &gpll6.clkr,3669	[GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,3670	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,3671	[GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,3672	[GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,3673	[GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,3674};3675 3676static struct clk_regmap *gcc_sdm845_clocks[] = {3677	[GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,3678	[GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,3679	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,3680	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,3681	[GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,3682	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,3683	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3684	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,3685	[GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr,3686	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,3687	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,3688	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,3689	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,3690	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3691	[GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,3692	[GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,3693	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,3694	[GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,3695	[GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_cpuss_rbcpr_clk_src.clkr,3696	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,3697	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,3698	[GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr,3699	[GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,3700	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,3701	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,3702	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3703	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3704	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3705	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3706	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3707	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3708	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,3709	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3710	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3711	[GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,3712	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3713	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3714	[GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr,3715	[GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr,3716	[GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,3717	[GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,3718	[GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr,3719	[GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr,3720	[GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,3721	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,3722	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,3723	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,3724	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,3725	[GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,3726	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,3727	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,3728	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,3729	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,3730	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,3731	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,3732	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,3733	[GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,3734	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,3735	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,3736	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,3737	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,3738	[GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,3739	[GCC_PCIE_PHY_REFGEN_CLK] = &gcc_pcie_phy_refgen_clk.clkr,3740	[GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,3741	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3742	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3743	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3744	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3745	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,3746	[GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr,3747	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3748	[GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr,3749	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,3750	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,3751	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,3752	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,3753	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,3754	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,3755	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,3756	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,3757	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,3758	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,3759	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,3760	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,3761	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,3762	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,3763	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,3764	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,3765	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,3766	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,3767	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,3768	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,3769	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,3770	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,3771	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,3772	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,3773	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,3774	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,3775	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,3776	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,3777	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,3778	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,3779	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,3780	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,3781	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,3782	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,3783	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,3784	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,3785	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,3786	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,3787	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,3788	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,3789	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,3790	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,3791	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,3792	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,3793	[GCC_TSIF_INACTIVITY_TIMERS_CLK] =3794					&gcc_tsif_inactivity_timers_clk.clkr,3795	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,3796	[GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,3797	[GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,3798	[GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,3799	[GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,3800	[GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,3801	[GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,3802	[GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,3803	[GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,3804	[GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,3805	[GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,3806	[GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,3807	[GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,3808	[GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,3809	[GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] =3810					&gcc_ufs_card_unipro_core_clk_src.clkr,3811	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,3812	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,3813	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,3814	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,3815	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,3816	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,3817	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,3818	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,3819	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,3820	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,3821	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,3822	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,3823	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =3824					&gcc_ufs_phy_unipro_core_clk_src.clkr,3825	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,3826	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,3827	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,3828	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =3829					&gcc_usb30_prim_mock_utmi_clk_src.clkr,3830	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,3831	[GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,3832	[GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,3833	[GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,3834	[GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] =3835					&gcc_usb30_sec_mock_utmi_clk_src.clkr,3836	[GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,3837	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,3838	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,3839	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,3840	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,3841	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,3842	[GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,3843	[GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,3844	[GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,3845	[GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,3846	[GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,3847	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,3848	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,3849	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,3850	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,3851	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,3852	[GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr,3853	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,3854	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,3855	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,3856	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,3857	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,3858	[GPLL0] = &gpll0.clkr,3859	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,3860	[GPLL4] = &gpll4.clkr,3861	[GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,3862	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,3863	[GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,3864	[GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,3865	[GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,3866#ifdef CONFIG_SDM_LPASSCC_8453867	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,3868	[GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,3869#endif3870};3871 3872static const struct qcom_reset_map gcc_sdm845_resets[] = {3873	[GCC_MMSS_BCR] = { 0xb000 },3874	[GCC_PCIE_0_BCR] = { 0x6b000 },3875	[GCC_PCIE_1_BCR] = { 0x8d000 },3876	[GCC_PCIE_PHY_BCR] = { 0x6f000 },3877	[GCC_PDM_BCR] = { 0x33000 },3878	[GCC_PRNG_BCR] = { 0x34000 },3879	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },3880	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },3881	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },3882	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },3883	[GCC_SDCC2_BCR] = { 0x14000 },3884	[GCC_SDCC4_BCR] = { 0x16000 },3885	[GCC_TSIF_BCR] = { 0x36000 },3886	[GCC_UFS_CARD_BCR] = { 0x75000 },3887	[GCC_UFS_PHY_BCR] = { 0x77000 },3888	[GCC_USB30_PRIM_BCR] = { 0xf000 },3889	[GCC_USB30_SEC_BCR] = { 0x10000 },3890	[GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },3891	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },3892	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },3893	[GCC_USB3_PHY_SEC_BCR] = { 0x5000c },3894	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },3895	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },3896	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },3897	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },3898	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },3899};3900 3901static struct gdsc *gcc_sdm670_gdscs[] = {3902	[UFS_PHY_GDSC] = &ufs_phy_gdsc,3903	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,3904	[HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] =3905			&hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc,3906	[HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] =3907			&hlos1_vote_aggre_noc_mmu_tbu1_gdsc,3908	[HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] =3909			&hlos1_vote_aggre_noc_mmu_tbu2_gdsc,3910	[HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =3911			&hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,3912	[HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =3913			&hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,3914	[HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc,3915};3916 3917static struct gdsc *gcc_sdm845_gdscs[] = {3918	[PCIE_0_GDSC] = &pcie_0_gdsc,3919	[PCIE_1_GDSC] = &pcie_1_gdsc,3920	[UFS_CARD_GDSC] = &ufs_card_gdsc,3921	[UFS_PHY_GDSC] = &ufs_phy_gdsc,3922	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,3923	[USB30_SEC_GDSC] = &usb30_sec_gdsc,3924	[HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] =3925			&hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc,3926	[HLOS1_VOTE_AGGRE_NOC_MMU_PCIE_TBU_GDSC] =3927			&hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc,3928	[HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] =3929			&hlos1_vote_aggre_noc_mmu_tbu1_gdsc,3930	[HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] =3931			&hlos1_vote_aggre_noc_mmu_tbu2_gdsc,3932	[HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =3933			&hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,3934	[HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =3935			&hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,3936	[HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc,3937};3938 3939static const struct regmap_config gcc_sdm845_regmap_config = {3940	.reg_bits	= 32,3941	.reg_stride	= 4,3942	.val_bits	= 32,3943	.max_register	= 0x182090,3944	.fast_io	= true,3945};3946 3947static const struct qcom_cc_desc gcc_sdm670_desc = {3948	.config = &gcc_sdm845_regmap_config,3949	.clks = gcc_sdm670_clocks,3950	.num_clks = ARRAY_SIZE(gcc_sdm670_clocks),3951	/* Snapdragon 670 can function without its own exclusive resets. */3952	.resets = gcc_sdm845_resets,3953	.num_resets = ARRAY_SIZE(gcc_sdm845_resets),3954	.gdscs = gcc_sdm670_gdscs,3955	.num_gdscs = ARRAY_SIZE(gcc_sdm670_gdscs),3956};3957 3958static const struct qcom_cc_desc gcc_sdm845_desc = {3959	.config = &gcc_sdm845_regmap_config,3960	.clks = gcc_sdm845_clocks,3961	.num_clks = ARRAY_SIZE(gcc_sdm845_clocks),3962	.resets = gcc_sdm845_resets,3963	.num_resets = ARRAY_SIZE(gcc_sdm845_resets),3964	.gdscs = gcc_sdm845_gdscs,3965	.num_gdscs = ARRAY_SIZE(gcc_sdm845_gdscs),3966};3967 3968static const struct of_device_id gcc_sdm845_match_table[] = {3969	{ .compatible = "qcom,gcc-sdm670", .data = &gcc_sdm670_desc },3970	{ .compatible = "qcom,gcc-sdm845", .data = &gcc_sdm845_desc },3971	{ }3972};3973MODULE_DEVICE_TABLE(of, gcc_sdm845_match_table);3974 3975static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {3976	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),3977	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),3978	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),3979	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),3980	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),3981	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),3982	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),3983	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),3984	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),3985	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),3986	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),3987	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),3988	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),3989	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),3990	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),3991	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),3992};3993 3994static int gcc_sdm845_probe(struct platform_device *pdev)3995{3996	const struct qcom_cc_desc *gcc_desc;3997	struct regmap *regmap;3998	int ret;3999 4000	regmap = qcom_cc_map(pdev, &gcc_sdm845_desc);4001	if (IS_ERR(regmap))4002		return PTR_ERR(regmap);4003 4004	/* Disable the GPLL0 active input to MMSS and GPU via MISC registers */4005	regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3);4006	regmap_update_bits(regmap, 0x71028, 0x3, 0x3);4007 4008	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,4009					ARRAY_SIZE(gcc_dfs_clocks));4010	if (ret)4011		return ret;4012 4013	gcc_desc = of_device_get_match_data(&pdev->dev);4014	return qcom_cc_really_probe(&pdev->dev, gcc_desc, regmap);4015}4016 4017static struct platform_driver gcc_sdm845_driver = {4018	.probe		= gcc_sdm845_probe,4019	.driver		= {4020		.name	= "gcc-sdm845",4021		.of_match_table = gcc_sdm845_match_table,4022	},4023};4024 4025static int __init gcc_sdm845_init(void)4026{4027	return platform_driver_register(&gcc_sdm845_driver);4028}4029core_initcall(gcc_sdm845_init);4030 4031static void __exit gcc_sdm845_exit(void)4032{4033	platform_driver_unregister(&gcc_sdm845_driver);4034}4035module_exit(gcc_sdm845_exit);4036 4037MODULE_DESCRIPTION("QTI GCC SDM845 Driver");4038MODULE_LICENSE("GPL v2");4039MODULE_ALIAS("platform:gcc-sdm845");4040MODULE_SOFTDEP("pre: rpmhpd");4041