brintos

brintos / linux-shallow public Read only

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