brintos

brintos / linux-shallow public Read only

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