brintos

brintos / linux-shallow public Read only

0
0
Text · 101.7 KiB · fd9d654 Raw
3850 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.4 * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.5 * Copyright (c) 2023, Linaro Limited6 */7 8#include <linux/clk-provider.h>9#include <linux/mod_devicetable.h>10#include <linux/module.h>11#include <linux/platform_device.h>12#include <linux/regmap.h>13 14#include <dt-bindings/clock/qcom,sm8650-gcc.h>15 16#include "clk-alpha-pll.h"17#include "clk-branch.h"18#include "clk-rcg.h"19#include "clk-regmap.h"20#include "clk-regmap-divider.h"21#include "clk-regmap-mux.h"22#include "clk-regmap-phy-mux.h"23#include "gdsc.h"24#include "reset.h"25 26/* Need to match the order of clocks in DT binding */27enum {28	DT_BI_TCXO,29	DT_BI_TCXO_AO,30	DT_SLEEP_CLK,31 32	DT_PCIE_0_PIPE,33	DT_PCIE_1_PIPE,34	DT_PCIE_1_PHY_AUX,35 36	DT_UFS_PHY_RX_SYMBOL_0,37	DT_UFS_PHY_RX_SYMBOL_1,38	DT_UFS_PHY_TX_SYMBOL_0,39 40	DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE,41};42 43enum {44	P_BI_TCXO,45	P_GCC_GPLL0_OUT_EVEN,46	P_GCC_GPLL0_OUT_MAIN,47	P_GCC_GPLL1_OUT_MAIN,48	P_GCC_GPLL3_OUT_MAIN,49	P_GCC_GPLL4_OUT_MAIN,50	P_GCC_GPLL6_OUT_MAIN,51	P_GCC_GPLL7_OUT_MAIN,52	P_GCC_GPLL9_OUT_MAIN,53	P_PCIE_0_PIPE_CLK,54	P_PCIE_1_PHY_AUX_CLK,55	P_PCIE_1_PIPE_CLK,56	P_SLEEP_CLK,57	P_UFS_PHY_RX_SYMBOL_0_CLK,58	P_UFS_PHY_RX_SYMBOL_1_CLK,59	P_UFS_PHY_TX_SYMBOL_0_CLK,60	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,61};62 63static struct clk_alpha_pll gcc_gpll0 = {64	.offset = 0x0,65	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],66	.clkr = {67		.enable_reg = 0x52020,68		.enable_mask = BIT(0),69		.hw.init = &(const struct clk_init_data) {70			.name = "gcc_gpll0",71			.parent_data = &(const struct clk_parent_data) {72				.index = DT_BI_TCXO,73			},74			.num_parents = 1,75			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,76		},77	},78};79 80static struct clk_alpha_pll gcc_gpll0_ao = {81	.offset = 0x0,82	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],83	.clkr = {84		.enable_reg = 0x57020,85		.enable_mask = BIT(0),86		.hw.init = &(const struct clk_init_data) {87			.name = "gcc_gpll0_ao",88			.parent_data = &(const struct clk_parent_data) {89				.index = DT_BI_TCXO_AO,90			},91			.num_parents = 1,92			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,93		},94	},95};96 97static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {98	{ 0x1, 2 },99	{ }100};101 102static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {103	.offset = 0x0,104	.post_div_shift = 10,105	.post_div_table = post_div_table_gcc_gpll0_out_even,106	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),107	.width = 4,108	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],109	.clkr.hw.init = &(const struct clk_init_data) {110		.name = "gcc_gpll0_out_even",111		.parent_hws = (const struct clk_hw*[]) {112			&gcc_gpll0.clkr.hw,113		},114		.num_parents = 1,115		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,116	},117};118 119static struct clk_alpha_pll_postdiv gcc_gpll0_out_even_ao = {120	.offset = 0x0,121	.post_div_shift = 10,122	.post_div_table = post_div_table_gcc_gpll0_out_even,123	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),124	.width = 4,125	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],126	.clkr.hw.init = &(const struct clk_init_data) {127		.name = "gcc_gpll0_out_even_ao",128		.parent_hws = (const struct clk_hw*[]) {129			&gcc_gpll0_ao.clkr.hw,130		},131		.num_parents = 1,132		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,133	},134};135 136static struct clk_alpha_pll gcc_gpll1 = {137	.offset = 0x4000,138	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],139	.clkr = {140		.enable_reg = 0x52020,141		.enable_mask = BIT(1),142		.hw.init = &(const struct clk_init_data) {143			.name = "gcc_gpll1",144			.parent_data = &(const struct clk_parent_data) {145				.index = DT_BI_TCXO,146			},147			.num_parents = 1,148			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,149		},150	},151};152 153static struct clk_alpha_pll gcc_gpll1_ao = {154	.offset = 0x1000,155	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],156	.clkr = {157		.enable_reg = 0x57020,158		.enable_mask = BIT(1),159		.hw.init = &(const struct clk_init_data) {160			.name = "gcc_gpll1_ao",161			.parent_data = &(const struct clk_parent_data) {162				.index = DT_BI_TCXO_AO,163			},164			.num_parents = 1,165			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,166		},167	},168};169 170static struct clk_alpha_pll gcc_gpll3 = {171	.offset = 0x3000,172	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],173	.clkr = {174		.enable_reg = 0x52020,175		.enable_mask = BIT(3),176		.hw.init = &(const struct clk_init_data) {177			.name = "gcc_gpll3",178			.parent_data = &(const struct clk_parent_data) {179				.index = DT_BI_TCXO,180			},181			.num_parents = 1,182			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,183		},184	},185};186 187static struct clk_alpha_pll gcc_gpll3_ao = {188	.offset = 0x3000,189	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],190	.clkr = {191		.enable_reg = 0x57020,192		.enable_mask = BIT(3),193		.hw.init = &(const struct clk_init_data) {194			.name = "gcc_gpll3_ao",195			.parent_data = &(const struct clk_parent_data) {196				.index = DT_BI_TCXO_AO,197			},198			.num_parents = 1,199			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,200		},201	},202};203 204static struct clk_alpha_pll gcc_gpll4 = {205	.offset = 0x4000,206	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],207	.clkr = {208		.enable_reg = 0x52020,209		.enable_mask = BIT(4),210		.hw.init = &(const struct clk_init_data) {211			.name = "gcc_gpll4",212			.parent_data = &(const struct clk_parent_data) {213				.index = DT_BI_TCXO,214			},215			.num_parents = 1,216			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,217		},218	},219};220 221static struct clk_alpha_pll gcc_gpll4_ao = {222	.offset = 0x4000,223	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],224	.clkr = {225		.enable_reg = 0x57020,226		.enable_mask = BIT(4),227		.hw.init = &(const struct clk_init_data) {228			.name = "gcc_gpll4_ao",229			.parent_data = &(const struct clk_parent_data) {230				.index = DT_BI_TCXO_AO,231			},232			.num_parents = 1,233			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,234		},235	},236};237 238static struct clk_alpha_pll gcc_gpll6 = {239	.offset = 0x6000,240	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],241	.clkr = {242		.enable_reg = 0x52020,243		.enable_mask = BIT(6),244		.hw.init = &(const struct clk_init_data) {245			.name = "gcc_gpll6",246			.parent_data = &(const struct clk_parent_data) {247				.index = DT_BI_TCXO,248			},249			.num_parents = 1,250			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,251		},252	},253};254 255static struct clk_alpha_pll gcc_gpll6_ao = {256	.offset = 0x6000,257	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],258	.clkr = {259		.enable_reg = 0x57020,260		.enable_mask = BIT(6),261		.hw.init = &(const struct clk_init_data) {262			.name = "gcc_gpll6_ao",263			.parent_data = &(const struct clk_parent_data) {264				.index = DT_BI_TCXO_AO,265			},266			.num_parents = 1,267			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,268		},269	},270};271 272static struct clk_alpha_pll gcc_gpll7 = {273	.offset = 0x7000,274	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],275	.clkr = {276		.enable_reg = 0x52020,277		.enable_mask = BIT(7),278		.hw.init = &(const struct clk_init_data) {279			.name = "gcc_gpll7",280			.parent_data = &(const struct clk_parent_data) {281				.index = DT_BI_TCXO,282			},283			.num_parents = 1,284			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,285		},286	},287};288 289static struct clk_alpha_pll gcc_gpll9 = {290	.offset = 0x9000,291	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],292	.clkr = {293		.enable_reg = 0x52020,294		.enable_mask = BIT(9),295		.hw.init = &(const struct clk_init_data) {296			.name = "gcc_gpll9",297			.parent_data = &(const struct clk_parent_data) {298				.index = DT_BI_TCXO,299			},300			.num_parents = 1,301			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,302		},303	},304};305 306static const struct parent_map gcc_parent_map_0[] = {307	{ P_BI_TCXO, 0 },308	{ P_GCC_GPLL0_OUT_MAIN, 1 },309	{ P_GCC_GPLL0_OUT_EVEN, 6 },310};311 312static const struct clk_parent_data gcc_parent_data_0[] = {313	{ .index = DT_BI_TCXO },314	{ .hw = &gcc_gpll0.clkr.hw },315	{ .hw = &gcc_gpll0_out_even.clkr.hw },316};317 318static const struct parent_map gcc_parent_map_1[] = {319	{ P_BI_TCXO, 0 },320	{ P_GCC_GPLL0_OUT_MAIN, 1 },321	{ P_SLEEP_CLK, 5 },322	{ P_GCC_GPLL0_OUT_EVEN, 6 },323};324 325static const struct clk_parent_data gcc_parent_data_1[] = {326	{ .index = DT_BI_TCXO },327	{ .hw = &gcc_gpll0.clkr.hw },328	{ .index = DT_SLEEP_CLK },329	{ .hw = &gcc_gpll0_out_even.clkr.hw },330};331 332static const struct parent_map gcc_parent_map_2[] = {333	{ P_BI_TCXO, 0 },334	{ P_GCC_GPLL0_OUT_MAIN, 1 },335	{ P_GCC_GPLL1_OUT_MAIN, 4 },336	{ P_GCC_GPLL4_OUT_MAIN, 5 },337	{ P_GCC_GPLL0_OUT_EVEN, 6 },338};339 340static const struct clk_parent_data gcc_parent_data_2[] = {341	{ .index = DT_BI_TCXO },342	{ .hw = &gcc_gpll0.clkr.hw },343	{ .hw = &gcc_gpll1.clkr.hw },344	{ .hw = &gcc_gpll4.clkr.hw },345	{ .hw = &gcc_gpll0_out_even.clkr.hw },346};347 348static const struct parent_map gcc_parent_map_3[] = {349	{ P_BI_TCXO, 0 },350	{ P_GCC_GPLL0_OUT_MAIN, 1 },351	{ P_GCC_GPLL4_OUT_MAIN, 5 },352	{ P_GCC_GPLL0_OUT_EVEN, 6 },353};354 355static const struct clk_parent_data gcc_parent_data_3[] = {356	{ .index = DT_BI_TCXO },357	{ .hw = &gcc_gpll0.clkr.hw },358	{ .hw = &gcc_gpll4.clkr.hw },359	{ .hw = &gcc_gpll0_out_even.clkr.hw },360};361 362static const struct parent_map gcc_parent_map_4[] = {363	{ P_BI_TCXO, 0 },364	{ P_SLEEP_CLK, 5 },365};366 367static const struct clk_parent_data gcc_parent_data_4[] = {368	{ .index = DT_BI_TCXO },369	{ .index = DT_SLEEP_CLK },370};371 372static const struct parent_map gcc_parent_map_5[] = {373	{ P_BI_TCXO, 0 },374};375 376static const struct clk_parent_data gcc_parent_data_5[] = {377	{ .index = DT_BI_TCXO },378};379 380static const struct parent_map gcc_parent_map_8[] = {381	{ P_PCIE_1_PHY_AUX_CLK, 0 },382	{ P_BI_TCXO, 2 },383};384 385static const struct clk_parent_data gcc_parent_data_8[] = {386	{ .index = DT_PCIE_1_PHY_AUX },387	{ .index = DT_BI_TCXO },388};389 390static const struct parent_map gcc_parent_map_10[] = {391	{ P_BI_TCXO, 0 },392	{ P_GCC_GPLL0_OUT_MAIN, 1 },393	{ P_GCC_GPLL7_OUT_MAIN, 2 },394	{ P_GCC_GPLL0_OUT_EVEN, 6 },395};396 397static const struct clk_parent_data gcc_parent_data_10[] = {398	{ .index = DT_BI_TCXO },399	{ .hw = &gcc_gpll0.clkr.hw },400	{ .hw = &gcc_gpll7.clkr.hw },401	{ .hw = &gcc_gpll0_out_even.clkr.hw },402};403 404static const struct parent_map gcc_parent_map_11[] = {405	{ P_BI_TCXO, 0 },406	{ P_GCC_GPLL0_OUT_MAIN, 1 },407	{ P_GCC_GPLL9_OUT_MAIN, 2 },408	{ P_GCC_GPLL4_OUT_MAIN, 5 },409	{ P_GCC_GPLL0_OUT_EVEN, 6 },410};411 412static const struct clk_parent_data gcc_parent_data_11[] = {413	{ .index = DT_BI_TCXO },414	{ .hw = &gcc_gpll0.clkr.hw },415	{ .hw = &gcc_gpll9.clkr.hw },416	{ .hw = &gcc_gpll4.clkr.hw },417	{ .hw = &gcc_gpll0_out_even.clkr.hw },418};419 420static const struct parent_map gcc_parent_map_12[] = {421	{ P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },422	{ P_BI_TCXO, 2 },423};424 425static const struct clk_parent_data gcc_parent_data_12[] = {426	{ .index = DT_UFS_PHY_RX_SYMBOL_0 },427	{ .index = DT_BI_TCXO },428};429 430static const struct parent_map gcc_parent_map_13[] = {431	{ P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },432	{ P_BI_TCXO, 2 },433};434 435static const struct clk_parent_data gcc_parent_data_13[] = {436	{ .index = DT_UFS_PHY_RX_SYMBOL_1 },437	{ .index = DT_BI_TCXO },438};439 440static const struct parent_map gcc_parent_map_14[] = {441	{ P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },442	{ P_BI_TCXO, 2 },443};444 445static const struct clk_parent_data gcc_parent_data_14[] = {446	{ .index = DT_UFS_PHY_TX_SYMBOL_0 },447	{ .index = DT_BI_TCXO },448};449 450static const struct parent_map gcc_parent_map_15[] = {451	{ P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },452	{ P_BI_TCXO, 2 },453};454 455static const struct clk_parent_data gcc_parent_data_15[] = {456	{ .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE },457	{ .index = DT_BI_TCXO },458};459 460static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {461	.reg = 0x6b070,462	.clkr = {463		.hw.init = &(const struct clk_init_data) {464			.name = "gcc_pcie_0_pipe_clk_src",465			.parent_data = &(const struct clk_parent_data){466				.index = DT_PCIE_0_PIPE,467			},468			.num_parents = 1,469			.ops = &clk_regmap_phy_mux_ops,470		},471	},472};473 474static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {475	.reg = 0x8d094,476	.shift = 0,477	.width = 2,478	.parent_map = gcc_parent_map_8,479	.clkr = {480		.hw.init = &(const struct clk_init_data) {481			.name = "gcc_pcie_1_phy_aux_clk_src",482			.parent_data = gcc_parent_data_8,483			.num_parents = ARRAY_SIZE(gcc_parent_data_8),484			.ops = &clk_regmap_mux_closest_ops,485		},486	},487};488 489static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {490	.reg = 0x8d078,491	.clkr = {492		.hw.init = &(const struct clk_init_data) {493			.name = "gcc_pcie_1_pipe_clk_src",494			.parent_data = &(const struct clk_parent_data){495				.index = DT_PCIE_1_PIPE,496			},497			.num_parents = 1,498			.ops = &clk_regmap_phy_mux_ops,499		},500	},501};502 503static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {504	.reg = 0x77064,505	.shift = 0,506	.width = 2,507	.parent_map = gcc_parent_map_12,508	.clkr = {509		.hw.init = &(const struct clk_init_data) {510			.name = "gcc_ufs_phy_rx_symbol_0_clk_src",511			.parent_data = gcc_parent_data_12,512			.num_parents = ARRAY_SIZE(gcc_parent_data_12),513			.ops = &clk_regmap_mux_closest_ops,514		},515	},516};517 518static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {519	.reg = 0x770e0,520	.shift = 0,521	.width = 2,522	.parent_map = gcc_parent_map_13,523	.clkr = {524		.hw.init = &(const struct clk_init_data) {525			.name = "gcc_ufs_phy_rx_symbol_1_clk_src",526			.parent_data = gcc_parent_data_13,527			.num_parents = ARRAY_SIZE(gcc_parent_data_13),528			.ops = &clk_regmap_mux_closest_ops,529		},530	},531};532 533static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {534	.reg = 0x77054,535	.shift = 0,536	.width = 2,537	.parent_map = gcc_parent_map_14,538	.clkr = {539		.hw.init = &(const struct clk_init_data) {540			.name = "gcc_ufs_phy_tx_symbol_0_clk_src",541			.parent_data = gcc_parent_data_14,542			.num_parents = ARRAY_SIZE(gcc_parent_data_14),543			.ops = &clk_regmap_mux_closest_ops,544		},545	},546};547 548static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {549	.reg = 0x3906c,550	.shift = 0,551	.width = 2,552	.parent_map = gcc_parent_map_15,553	.clkr = {554		.hw.init = &(const struct clk_init_data) {555			.name = "gcc_usb3_prim_phy_pipe_clk_src",556			.parent_data = gcc_parent_data_15,557			.num_parents = ARRAY_SIZE(gcc_parent_data_15),558			.ops = &clk_regmap_mux_closest_ops,559		},560	},561};562 563static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {564	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),565	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),566	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),567	{ }568};569 570static struct clk_rcg2 gcc_gp1_clk_src = {571	.cmd_rcgr = 0x64004,572	.mnd_width = 16,573	.hid_width = 5,574	.parent_map = gcc_parent_map_1,575	.freq_tbl = ftbl_gcc_gp1_clk_src,576	.clkr.hw.init = &(const struct clk_init_data) {577		.name = "gcc_gp1_clk_src",578		.parent_data = gcc_parent_data_1,579		.num_parents = ARRAY_SIZE(gcc_parent_data_1),580		.flags = CLK_SET_RATE_PARENT,581		.ops = &clk_rcg2_shared_ops,582	},583};584 585static struct clk_rcg2 gcc_gp2_clk_src = {586	.cmd_rcgr = 0x65004,587	.mnd_width = 16,588	.hid_width = 5,589	.parent_map = gcc_parent_map_1,590	.freq_tbl = ftbl_gcc_gp1_clk_src,591	.clkr.hw.init = &(const struct clk_init_data) {592		.name = "gcc_gp2_clk_src",593		.parent_data = gcc_parent_data_1,594		.num_parents = ARRAY_SIZE(gcc_parent_data_1),595		.flags = CLK_SET_RATE_PARENT,596		.ops = &clk_rcg2_shared_ops,597	},598};599 600static struct clk_rcg2 gcc_gp3_clk_src = {601	.cmd_rcgr = 0x66004,602	.mnd_width = 16,603	.hid_width = 5,604	.parent_map = gcc_parent_map_1,605	.freq_tbl = ftbl_gcc_gp1_clk_src,606	.clkr.hw.init = &(const struct clk_init_data) {607		.name = "gcc_gp3_clk_src",608		.parent_data = gcc_parent_data_1,609		.num_parents = ARRAY_SIZE(gcc_parent_data_1),610		.flags = CLK_SET_RATE_PARENT,611		.ops = &clk_rcg2_shared_ops,612	},613};614 615static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {616	F(19200000, P_BI_TCXO, 1, 0, 0),617	{ }618};619 620static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {621	.cmd_rcgr = 0x6b074,622	.mnd_width = 16,623	.hid_width = 5,624	.parent_map = gcc_parent_map_4,625	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,626	.clkr.hw.init = &(const struct clk_init_data) {627		.name = "gcc_pcie_0_aux_clk_src",628		.parent_data = gcc_parent_data_4,629		.num_parents = ARRAY_SIZE(gcc_parent_data_4),630		.flags = CLK_SET_RATE_PARENT,631		.ops = &clk_rcg2_shared_ops,632	},633};634 635static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {636	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),637	{ }638};639 640static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {641	.cmd_rcgr = 0x6b058,642	.mnd_width = 0,643	.hid_width = 5,644	.parent_map = gcc_parent_map_0,645	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,646	.clkr.hw.init = &(const struct clk_init_data) {647		.name = "gcc_pcie_0_phy_rchng_clk_src",648		.parent_data = gcc_parent_data_0,649		.num_parents = ARRAY_SIZE(gcc_parent_data_0),650		.flags = CLK_SET_RATE_PARENT,651		.ops = &clk_rcg2_shared_ops,652	},653};654 655static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {656	.cmd_rcgr = 0x8d07c,657	.mnd_width = 16,658	.hid_width = 5,659	.parent_map = gcc_parent_map_4,660	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,661	.clkr.hw.init = &(const struct clk_init_data) {662		.name = "gcc_pcie_1_aux_clk_src",663		.parent_data = gcc_parent_data_4,664		.num_parents = ARRAY_SIZE(gcc_parent_data_4),665		.flags = CLK_SET_RATE_PARENT,666		.ops = &clk_rcg2_shared_ops,667	},668};669 670static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {671	.cmd_rcgr = 0x8d060,672	.mnd_width = 0,673	.hid_width = 5,674	.parent_map = gcc_parent_map_0,675	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,676	.clkr.hw.init = &(const struct clk_init_data) {677		.name = "gcc_pcie_1_phy_rchng_clk_src",678		.parent_data = gcc_parent_data_0,679		.num_parents = ARRAY_SIZE(gcc_parent_data_0),680		.flags = CLK_SET_RATE_PARENT,681		.ops = &clk_rcg2_shared_ops,682	},683};684 685static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {686	F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),687	{ }688};689 690static struct clk_rcg2 gcc_pdm2_clk_src = {691	.cmd_rcgr = 0x33010,692	.mnd_width = 0,693	.hid_width = 5,694	.parent_map = gcc_parent_map_0,695	.freq_tbl = ftbl_gcc_pdm2_clk_src,696	.clkr.hw.init = &(const struct clk_init_data) {697		.name = "gcc_pdm2_clk_src",698		.parent_data = gcc_parent_data_0,699		.num_parents = ARRAY_SIZE(gcc_parent_data_0),700		.flags = CLK_SET_RATE_PARENT,701		.ops = &clk_rcg2_shared_ops,702	},703};704 705static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = {706	.cmd_rcgr = 0x17008,707	.mnd_width = 0,708	.hid_width = 5,709	.parent_map = gcc_parent_map_0,710	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,711	.clkr.hw.init = &(const struct clk_init_data) {712		.name = "gcc_qupv3_i2c_s0_clk_src",713		.parent_data = gcc_parent_data_0,714		.num_parents = ARRAY_SIZE(gcc_parent_data_0),715		.flags = CLK_SET_RATE_PARENT,716		.ops = &clk_rcg2_ops,717	},718};719 720static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = {721	.cmd_rcgr = 0x17024,722	.mnd_width = 0,723	.hid_width = 5,724	.parent_map = gcc_parent_map_0,725	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,726	.clkr.hw.init = &(const struct clk_init_data) {727		.name = "gcc_qupv3_i2c_s1_clk_src",728		.parent_data = gcc_parent_data_0,729		.num_parents = ARRAY_SIZE(gcc_parent_data_0),730		.flags = CLK_SET_RATE_PARENT,731		.ops = &clk_rcg2_ops,732	},733};734 735static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = {736	.cmd_rcgr = 0x17040,737	.mnd_width = 0,738	.hid_width = 5,739	.parent_map = gcc_parent_map_0,740	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,741	.clkr.hw.init = &(const struct clk_init_data) {742		.name = "gcc_qupv3_i2c_s2_clk_src",743		.parent_data = gcc_parent_data_0,744		.num_parents = ARRAY_SIZE(gcc_parent_data_0),745		.flags = CLK_SET_RATE_PARENT,746		.ops = &clk_rcg2_ops,747	},748};749 750static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = {751	.cmd_rcgr = 0x1705c,752	.mnd_width = 0,753	.hid_width = 5,754	.parent_map = gcc_parent_map_0,755	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,756	.clkr.hw.init = &(const struct clk_init_data) {757		.name = "gcc_qupv3_i2c_s3_clk_src",758		.parent_data = gcc_parent_data_0,759		.num_parents = ARRAY_SIZE(gcc_parent_data_0),760		.flags = CLK_SET_RATE_PARENT,761		.ops = &clk_rcg2_ops,762	},763};764 765static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = {766	.cmd_rcgr = 0x17078,767	.mnd_width = 0,768	.hid_width = 5,769	.parent_map = gcc_parent_map_0,770	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,771	.clkr.hw.init = &(const struct clk_init_data) {772		.name = "gcc_qupv3_i2c_s4_clk_src",773		.parent_data = gcc_parent_data_0,774		.num_parents = ARRAY_SIZE(gcc_parent_data_0),775		.flags = CLK_SET_RATE_PARENT,776		.ops = &clk_rcg2_ops,777	},778};779 780static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = {781	.cmd_rcgr = 0x17094,782	.mnd_width = 0,783	.hid_width = 5,784	.parent_map = gcc_parent_map_0,785	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,786	.clkr.hw.init = &(const struct clk_init_data) {787		.name = "gcc_qupv3_i2c_s5_clk_src",788		.parent_data = gcc_parent_data_0,789		.num_parents = ARRAY_SIZE(gcc_parent_data_0),790		.flags = CLK_SET_RATE_PARENT,791		.ops = &clk_rcg2_ops,792	},793};794 795static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = {796	.cmd_rcgr = 0x170b0,797	.mnd_width = 0,798	.hid_width = 5,799	.parent_map = gcc_parent_map_0,800	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,801	.clkr.hw.init = &(const struct clk_init_data) {802		.name = "gcc_qupv3_i2c_s6_clk_src",803		.parent_data = gcc_parent_data_0,804		.num_parents = ARRAY_SIZE(gcc_parent_data_0),805		.flags = CLK_SET_RATE_PARENT,806		.ops = &clk_rcg2_ops,807	},808};809 810static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = {811	.cmd_rcgr = 0x170cc,812	.mnd_width = 0,813	.hid_width = 5,814	.parent_map = gcc_parent_map_0,815	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,816	.clkr.hw.init = &(const struct clk_init_data) {817		.name = "gcc_qupv3_i2c_s7_clk_src",818		.parent_data = gcc_parent_data_0,819		.num_parents = ARRAY_SIZE(gcc_parent_data_0),820		.flags = CLK_SET_RATE_PARENT,821		.ops = &clk_rcg2_ops,822	},823};824 825static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = {826	.cmd_rcgr = 0x170e8,827	.mnd_width = 0,828	.hid_width = 5,829	.parent_map = gcc_parent_map_0,830	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,831	.clkr.hw.init = &(const struct clk_init_data) {832		.name = "gcc_qupv3_i2c_s8_clk_src",833		.parent_data = gcc_parent_data_0,834		.num_parents = ARRAY_SIZE(gcc_parent_data_0),835		.flags = CLK_SET_RATE_PARENT,836		.ops = &clk_rcg2_ops,837	},838};839 840static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = {841	.cmd_rcgr = 0x17104,842	.mnd_width = 0,843	.hid_width = 5,844	.parent_map = gcc_parent_map_0,845	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,846	.clkr.hw.init = &(const struct clk_init_data) {847		.name = "gcc_qupv3_i2c_s9_clk_src",848		.parent_data = gcc_parent_data_0,849		.num_parents = ARRAY_SIZE(gcc_parent_data_0),850		.flags = CLK_SET_RATE_PARENT,851		.ops = &clk_rcg2_ops,852	},853};854 855static const struct freq_tbl ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src[] = {856	F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),857	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),858	{ }859};860 861static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = {862	.name = "gcc_qupv3_wrap1_qspi_ref_clk_src",863	.parent_data = gcc_parent_data_0,864	.num_parents = ARRAY_SIZE(gcc_parent_data_0),865	.flags = CLK_SET_RATE_PARENT,866	.ops = &clk_rcg2_ops,867};868 869static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = {870	.cmd_rcgr = 0x188a0,871	.mnd_width = 16,872	.hid_width = 5,873	.parent_map = gcc_parent_map_0,874	.freq_tbl = ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src,875	.clkr.hw.init = &gcc_qupv3_wrap1_qspi_ref_clk_src_init,876};877 878static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {879	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),880	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),881	F(19200000, P_BI_TCXO, 1, 0, 0),882	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),883	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),884	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),885	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),886	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),887	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),888	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),889	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),890	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),891	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),892	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),893	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),894	{ }895};896 897static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {898	.name = "gcc_qupv3_wrap1_s0_clk_src",899	.parent_data = gcc_parent_data_0,900	.num_parents = ARRAY_SIZE(gcc_parent_data_0),901	.flags = CLK_SET_RATE_PARENT,902	.ops = &clk_rcg2_ops,903};904 905static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {906	.cmd_rcgr = 0x18010,907	.mnd_width = 16,908	.hid_width = 5,909	.parent_map = gcc_parent_map_0,910	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,911	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,912};913 914static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {915	.name = "gcc_qupv3_wrap1_s1_clk_src",916	.parent_data = gcc_parent_data_0,917	.num_parents = ARRAY_SIZE(gcc_parent_data_0),918	.flags = CLK_SET_RATE_PARENT,919	.ops = &clk_rcg2_ops,920};921 922static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {923	.cmd_rcgr = 0x18148,924	.mnd_width = 16,925	.hid_width = 5,926	.parent_map = gcc_parent_map_0,927	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,928	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,929};930 931static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s3_clk_src[] = {932	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),933	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),934	F(19200000, P_BI_TCXO, 1, 0, 0),935	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),936	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),937	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),938	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),939	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),940	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),941	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),942	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),943	{ }944};945 946static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {947	.name = "gcc_qupv3_wrap1_s3_clk_src",948	.parent_data = gcc_parent_data_0,949	.num_parents = ARRAY_SIZE(gcc_parent_data_0),950	.flags = CLK_SET_RATE_PARENT,951	.ops = &clk_rcg2_ops,952};953 954static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {955	.cmd_rcgr = 0x18290,956	.mnd_width = 16,957	.hid_width = 5,958	.parent_map = gcc_parent_map_0,959	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,960	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,961};962 963static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s4_clk_src[] = {964	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),965	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),966	F(19200000, P_BI_TCXO, 1, 0, 0),967	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),968	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),969	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),970	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),971	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),972	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),973	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),974	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),975	{ }976};977 978static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {979	.name = "gcc_qupv3_wrap1_s4_clk_src",980	.parent_data = gcc_parent_data_0,981	.num_parents = ARRAY_SIZE(gcc_parent_data_0),982	.flags = CLK_SET_RATE_PARENT,983	.ops = &clk_rcg2_ops,984};985 986static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {987	.cmd_rcgr = 0x183c8,988	.mnd_width = 16,989	.hid_width = 5,990	.parent_map = gcc_parent_map_0,991	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,992	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,993};994 995static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {996	.name = "gcc_qupv3_wrap1_s5_clk_src",997	.parent_data = gcc_parent_data_0,998	.num_parents = ARRAY_SIZE(gcc_parent_data_0),999	.flags = CLK_SET_RATE_PARENT,1000	.ops = &clk_rcg2_ops,1001};1002 1003static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {1004	.cmd_rcgr = 0x18500,1005	.mnd_width = 16,1006	.hid_width = 5,1007	.parent_map = gcc_parent_map_0,1008	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,1009	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,1010};1011 1012static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {1013	.name = "gcc_qupv3_wrap1_s6_clk_src",1014	.parent_data = gcc_parent_data_0,1015	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1016	.flags = CLK_SET_RATE_PARENT,1017	.ops = &clk_rcg2_ops,1018};1019 1020static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {1021	.cmd_rcgr = 0x18638,1022	.mnd_width = 16,1023	.hid_width = 5,1024	.parent_map = gcc_parent_map_0,1025	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,1026	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,1027};1028 1029static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {1030	.name = "gcc_qupv3_wrap1_s7_clk_src",1031	.parent_data = gcc_parent_data_0,1032	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1033	.flags = CLK_SET_RATE_PARENT,1034	.ops = &clk_rcg2_ops,1035};1036 1037static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {1038	.cmd_rcgr = 0x18770,1039	.mnd_width = 16,1040	.hid_width = 5,1041	.parent_map = gcc_parent_map_0,1042	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,1043	.clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,1044};1045 1046static const struct freq_tbl ftbl_gcc_qupv3_wrap2_ibi_ctrl_0_clk_src[] = {1047	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),1048	{ }1049};1050 1051static struct clk_rcg2 gcc_qupv3_wrap2_ibi_ctrl_0_clk_src = {1052	.cmd_rcgr = 0x1e9d4,1053	.mnd_width = 0,1054	.hid_width = 5,1055	.parent_map = gcc_parent_map_2,1056	.freq_tbl = ftbl_gcc_qupv3_wrap2_ibi_ctrl_0_clk_src,1057	.clkr.hw.init = &(const struct clk_init_data) {1058		.name = "gcc_qupv3_wrap2_ibi_ctrl_0_clk_src",1059		.parent_data = gcc_parent_data_2,1060		.num_parents = ARRAY_SIZE(gcc_parent_data_2),1061		.flags = CLK_SET_RATE_PARENT,1062		.ops = &clk_rcg2_ops,1063	},1064};1065 1066static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {1067	.name = "gcc_qupv3_wrap2_s0_clk_src",1068	.parent_data = gcc_parent_data_0,1069	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1070	.flags = CLK_SET_RATE_PARENT,1071	.ops = &clk_rcg2_ops,1072};1073 1074static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {1075	.cmd_rcgr = 0x1e010,1076	.mnd_width = 16,1077	.hid_width = 5,1078	.parent_map = gcc_parent_map_0,1079	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,1080	.clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,1081};1082 1083static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {1084	.name = "gcc_qupv3_wrap2_s1_clk_src",1085	.parent_data = gcc_parent_data_0,1086	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1087	.flags = CLK_SET_RATE_PARENT,1088	.ops = &clk_rcg2_ops,1089};1090 1091static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {1092	.cmd_rcgr = 0x1e148,1093	.mnd_width = 16,1094	.hid_width = 5,1095	.parent_map = gcc_parent_map_0,1096	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,1097	.clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,1098};1099 1100static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {1101	.name = "gcc_qupv3_wrap2_s2_clk_src",1102	.parent_data = gcc_parent_data_0,1103	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1104	.flags = CLK_SET_RATE_PARENT,1105	.ops = &clk_rcg2_ops,1106};1107 1108static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {1109	.cmd_rcgr = 0x1e280,1110	.mnd_width = 16,1111	.hid_width = 5,1112	.parent_map = gcc_parent_map_0,1113	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,1114	.clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,1115};1116 1117static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {1118	.name = "gcc_qupv3_wrap2_s3_clk_src",1119	.parent_data = gcc_parent_data_0,1120	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1121	.flags = CLK_SET_RATE_PARENT,1122	.ops = &clk_rcg2_ops,1123};1124 1125static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {1126	.cmd_rcgr = 0x1e3b8,1127	.mnd_width = 16,1128	.hid_width = 5,1129	.parent_map = gcc_parent_map_0,1130	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,1131	.clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,1132};1133 1134static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {1135	.name = "gcc_qupv3_wrap2_s4_clk_src",1136	.parent_data = gcc_parent_data_0,1137	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1138	.flags = CLK_SET_RATE_PARENT,1139	.ops = &clk_rcg2_ops,1140};1141 1142static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {1143	.cmd_rcgr = 0x1e4f0,1144	.mnd_width = 16,1145	.hid_width = 5,1146	.parent_map = gcc_parent_map_0,1147	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,1148	.clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,1149};1150 1151static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {1152	.name = "gcc_qupv3_wrap2_s5_clk_src",1153	.parent_data = gcc_parent_data_0,1154	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1155	.flags = CLK_SET_RATE_PARENT,1156	.ops = &clk_rcg2_ops,1157};1158 1159static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {1160	.cmd_rcgr = 0x1e628,1161	.mnd_width = 16,1162	.hid_width = 5,1163	.parent_map = gcc_parent_map_0,1164	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,1165	.clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,1166};1167 1168static const struct freq_tbl ftbl_gcc_qupv3_wrap2_s6_clk_src[] = {1169	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),1170	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),1171	F(19200000, P_BI_TCXO, 1, 0, 0),1172	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),1173	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),1174	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),1175	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),1176	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1177	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),1178	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),1179	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),1180	F(128000000, P_GCC_GPLL0_OUT_MAIN, 1, 16, 75),1181	{ }1182};1183 1184static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {1185	.name = "gcc_qupv3_wrap2_s6_clk_src",1186	.parent_data = gcc_parent_data_10,1187	.num_parents = ARRAY_SIZE(gcc_parent_data_10),1188	.flags = CLK_SET_RATE_PARENT,1189	.ops = &clk_rcg2_ops,1190};1191 1192static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {1193	.cmd_rcgr = 0x1e760,1194	.mnd_width = 16,1195	.hid_width = 5,1196	.parent_map = gcc_parent_map_10,1197	.freq_tbl = ftbl_gcc_qupv3_wrap2_s6_clk_src,1198	.clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,1199};1200 1201static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {1202	.name = "gcc_qupv3_wrap2_s7_clk_src",1203	.parent_data = gcc_parent_data_0,1204	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1205	.flags = CLK_SET_RATE_PARENT,1206	.ops = &clk_rcg2_ops,1207};1208 1209static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {1210	.cmd_rcgr = 0x1e898,1211	.mnd_width = 16,1212	.hid_width = 5,1213	.parent_map = gcc_parent_map_0,1214	.freq_tbl = ftbl_gcc_qupv3_wrap1_s3_clk_src,1215	.clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,1216};1217 1218static const struct freq_tbl ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src[] = {1219	F(300000000, P_GCC_GPLL0_OUT_EVEN, 1, 0, 0),1220	F(400000000, P_GCC_GPLL0_OUT_MAIN, 1.5, 0, 0),1221	{ }1222};1223 1224static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = {1225	.name = "gcc_qupv3_wrap3_qspi_ref_clk_src",1226	.parent_data = gcc_parent_data_0,1227	.num_parents = ARRAY_SIZE(gcc_parent_data_0),1228	.flags = CLK_SET_RATE_PARENT,1229	.ops = &clk_rcg2_ops,1230};1231 1232static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = {1233	.cmd_rcgr = 0x19018,1234	.mnd_width = 16,1235	.hid_width = 5,1236	.parent_map = gcc_parent_map_0,1237	.freq_tbl = ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src,1238	.clkr.hw.init = &gcc_qupv3_wrap3_qspi_ref_clk_src_init,1239};1240 1241static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {1242	F(400000, P_BI_TCXO, 12, 1, 4),1243	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1244	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1245	F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),1246	{ }1247};1248 1249static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {1250	.cmd_rcgr = 0x14018,1251	.mnd_width = 8,1252	.hid_width = 5,1253	.parent_map = gcc_parent_map_11,1254	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,1255	.clkr.hw.init = &(const struct clk_init_data) {1256		.name = "gcc_sdcc2_apps_clk_src",1257		.parent_data = gcc_parent_data_11,1258		.num_parents = ARRAY_SIZE(gcc_parent_data_11),1259		.flags = CLK_SET_RATE_PARENT,1260		.ops = &clk_rcg2_shared_ops,1261	},1262};1263 1264static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {1265	F(400000, P_BI_TCXO, 12, 1, 4),1266	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1267	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1268	{ }1269};1270 1271static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {1272	.cmd_rcgr = 0x16018,1273	.mnd_width = 8,1274	.hid_width = 5,1275	.parent_map = gcc_parent_map_0,1276	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,1277	.clkr.hw.init = &(const struct clk_init_data) {1278		.name = "gcc_sdcc4_apps_clk_src",1279		.parent_data = gcc_parent_data_0,1280		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1281		.flags = CLK_SET_RATE_PARENT,1282		.ops = &clk_rcg2_shared_ops,1283	},1284};1285 1286static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {1287	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1288	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1289	F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),1290	F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),1291	{ }1292};1293 1294static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {1295	.cmd_rcgr = 0x77030,1296	.mnd_width = 8,1297	.hid_width = 5,1298	.parent_map = gcc_parent_map_3,1299	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,1300	.clkr.hw.init = &(const struct clk_init_data) {1301		.name = "gcc_ufs_phy_axi_clk_src",1302		.parent_data = gcc_parent_data_3,1303		.num_parents = ARRAY_SIZE(gcc_parent_data_3),1304		.flags = CLK_SET_RATE_PARENT,1305		.ops = &clk_rcg2_shared_ops,1306	},1307};1308 1309static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {1310	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1311	F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),1312	F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),1313	{ }1314};1315 1316static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {1317	.cmd_rcgr = 0x77080,1318	.mnd_width = 0,1319	.hid_width = 5,1320	.parent_map = gcc_parent_map_3,1321	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,1322	.clkr.hw.init = &(const struct clk_init_data) {1323		.name = "gcc_ufs_phy_ice_core_clk_src",1324		.parent_data = gcc_parent_data_3,1325		.num_parents = ARRAY_SIZE(gcc_parent_data_3),1326		.flags = CLK_SET_RATE_PARENT,1327		.ops = &clk_rcg2_shared_ops,1328	},1329};1330 1331static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {1332	F(9600000, P_BI_TCXO, 2, 0, 0),1333	F(19200000, P_BI_TCXO, 1, 0, 0),1334	{ }1335};1336 1337static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {1338	.cmd_rcgr = 0x770b4,1339	.mnd_width = 0,1340	.hid_width = 5,1341	.parent_map = gcc_parent_map_5,1342	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,1343	.clkr.hw.init = &(const struct clk_init_data) {1344		.name = "gcc_ufs_phy_phy_aux_clk_src",1345		.parent_data = gcc_parent_data_5,1346		.num_parents = ARRAY_SIZE(gcc_parent_data_5),1347		.flags = CLK_SET_RATE_PARENT,1348		.ops = &clk_rcg2_shared_ops,1349	},1350};1351 1352static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {1353	.cmd_rcgr = 0x77098,1354	.mnd_width = 0,1355	.hid_width = 5,1356	.parent_map = gcc_parent_map_3,1357	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,1358	.clkr.hw.init = &(const struct clk_init_data) {1359		.name = "gcc_ufs_phy_unipro_core_clk_src",1360		.parent_data = gcc_parent_data_3,1361		.num_parents = ARRAY_SIZE(gcc_parent_data_3),1362		.flags = CLK_SET_RATE_PARENT,1363		.ops = &clk_rcg2_shared_ops,1364	},1365};1366 1367static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {1368	F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),1369	F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),1370	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),1371	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),1372	{ }1373};1374 1375static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1376	.cmd_rcgr = 0x3902c,1377	.mnd_width = 8,1378	.hid_width = 5,1379	.parent_map = gcc_parent_map_0,1380	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1381	.clkr.hw.init = &(const struct clk_init_data) {1382		.name = "gcc_usb30_prim_master_clk_src",1383		.parent_data = gcc_parent_data_0,1384		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1385		.flags = CLK_SET_RATE_PARENT,1386		.ops = &clk_rcg2_shared_ops,1387	},1388};1389 1390static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1391	.cmd_rcgr = 0x39044,1392	.mnd_width = 0,1393	.hid_width = 5,1394	.parent_map = gcc_parent_map_0,1395	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,1396	.clkr.hw.init = &(const struct clk_init_data) {1397		.name = "gcc_usb30_prim_mock_utmi_clk_src",1398		.parent_data = gcc_parent_data_0,1399		.num_parents = ARRAY_SIZE(gcc_parent_data_0),1400		.flags = CLK_SET_RATE_PARENT,1401		.ops = &clk_rcg2_shared_ops,1402	},1403};1404 1405static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1406	.cmd_rcgr = 0x39070,1407	.mnd_width = 0,1408	.hid_width = 5,1409	.parent_map = gcc_parent_map_4,1410	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,1411	.clkr.hw.init = &(const struct clk_init_data) {1412		.name = "gcc_usb3_prim_phy_aux_clk_src",1413		.parent_data = gcc_parent_data_4,1414		.num_parents = ARRAY_SIZE(gcc_parent_data_4),1415		.flags = CLK_SET_RATE_PARENT,1416		.ops = &clk_rcg2_shared_ops,1417	},1418};1419 1420static struct clk_regmap_div gcc_qupv3_wrap1_s2_clk_src = {1421	.reg = 0x18280,1422	.shift = 0,1423	.width = 4,1424	.clkr.hw.init = &(const struct clk_init_data) {1425		.name = "gcc_qupv3_wrap1_s2_clk_src",1426		.parent_hws = (const struct clk_hw*[]) {1427			&gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw,1428		},1429		.num_parents = 1,1430		.flags = CLK_SET_RATE_PARENT,1431		.ops = &clk_regmap_div_ro_ops,1432	},1433};1434 1435static struct clk_regmap_div gcc_qupv3_wrap3_s0_clk_src = {1436	.reg = 0x19010,1437	.shift = 0,1438	.width = 4,1439	.clkr.hw.init = &(const struct clk_init_data) {1440		.name = "gcc_qupv3_wrap3_s0_clk_src",1441		.parent_hws = (const struct clk_hw*[]) {1442			&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,1443		},1444		.num_parents = 1,1445		.flags = CLK_SET_RATE_PARENT,1446		.ops = &clk_regmap_div_ro_ops,1447	},1448};1449 1450static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {1451	.reg = 0x3905c,1452	.shift = 0,1453	.width = 4,1454	.clkr.hw.init = &(const struct clk_init_data) {1455		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",1456		.parent_hws = (const struct clk_hw*[]) {1457			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,1458		},1459		.num_parents = 1,1460		.flags = CLK_SET_RATE_PARENT,1461		.ops = &clk_regmap_div_ro_ops,1462	},1463};1464 1465static struct clk_branch gcc_aggre_noc_pcie_axi_clk = {1466	.halt_reg = 0x10064,1467	.halt_check = BRANCH_HALT_SKIP,1468	.hwcg_reg = 0x10064,1469	.hwcg_bit = 1,1470	.clkr = {1471		.enable_reg = 0x52000,1472		.enable_mask = BIT(12),1473		.hw.init = &(const struct clk_init_data) {1474			.name = "gcc_aggre_noc_pcie_axi_clk",1475			.ops = &clk_branch2_ops,1476		},1477	},1478};1479 1480static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {1481	.halt_reg = 0x770e4,1482	.halt_check = BRANCH_HALT_VOTED,1483	.hwcg_reg = 0x770e4,1484	.hwcg_bit = 1,1485	.clkr = {1486		.enable_reg = 0x770e4,1487		.enable_mask = BIT(0),1488		.hw.init = &(const struct clk_init_data) {1489			.name = "gcc_aggre_ufs_phy_axi_clk",1490			.parent_hws = (const struct clk_hw*[]) {1491				&gcc_ufs_phy_axi_clk_src.clkr.hw,1492			},1493			.num_parents = 1,1494			.flags = CLK_SET_RATE_PARENT,1495			.ops = &clk_branch2_ops,1496		},1497	},1498};1499 1500static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {1501	.halt_reg = 0x770e4,1502	.halt_check = BRANCH_HALT_VOTED,1503	.hwcg_reg = 0x770e4,1504	.hwcg_bit = 1,1505	.clkr = {1506		.enable_reg = 0x770e4,1507		.enable_mask = BIT(1),1508		.hw.init = &(const struct clk_init_data) {1509			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",1510			.parent_hws = (const struct clk_hw*[]) {1511				&gcc_ufs_phy_axi_clk_src.clkr.hw,1512			},1513			.num_parents = 1,1514			.flags = CLK_SET_RATE_PARENT,1515			.ops = &clk_branch2_ops,1516		},1517	},1518};1519 1520static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {1521	.halt_reg = 0x3908c,1522	.halt_check = BRANCH_HALT_VOTED,1523	.hwcg_reg = 0x3908c,1524	.hwcg_bit = 1,1525	.clkr = {1526		.enable_reg = 0x3908c,1527		.enable_mask = BIT(0),1528		.hw.init = &(const struct clk_init_data) {1529			.name = "gcc_aggre_usb3_prim_axi_clk",1530			.parent_hws = (const struct clk_hw*[]) {1531				&gcc_usb30_prim_master_clk_src.clkr.hw,1532			},1533			.num_parents = 1,1534			.flags = CLK_SET_RATE_PARENT,1535			.ops = &clk_branch2_ops,1536		},1537	},1538};1539 1540static struct clk_branch gcc_boot_rom_ahb_clk = {1541	.halt_reg = 0x38004,1542	.halt_check = BRANCH_HALT_VOTED,1543	.hwcg_reg = 0x38004,1544	.hwcg_bit = 1,1545	.clkr = {1546		.enable_reg = 0x52000,1547		.enable_mask = BIT(10),1548		.hw.init = &(const struct clk_init_data) {1549			.name = "gcc_boot_rom_ahb_clk",1550			.ops = &clk_branch2_ops,1551		},1552	},1553};1554 1555static struct clk_branch gcc_camera_hf_axi_clk = {1556	.halt_reg = 0x26010,1557	.halt_check = BRANCH_HALT_SKIP,1558	.hwcg_reg = 0x26010,1559	.hwcg_bit = 1,1560	.clkr = {1561		.enable_reg = 0x26010,1562		.enable_mask = BIT(0),1563		.hw.init = &(const struct clk_init_data) {1564			.name = "gcc_camera_hf_axi_clk",1565			.ops = &clk_branch2_ops,1566		},1567	},1568};1569 1570static struct clk_branch gcc_camera_sf_axi_clk = {1571	.halt_reg = 0x2601c,1572	.halt_check = BRANCH_HALT_SKIP,1573	.hwcg_reg = 0x2601c,1574	.hwcg_bit = 1,1575	.clkr = {1576		.enable_reg = 0x2601c,1577		.enable_mask = BIT(0),1578		.hw.init = &(const struct clk_init_data) {1579			.name = "gcc_camera_sf_axi_clk",1580			.ops = &clk_branch2_ops,1581		},1582	},1583};1584 1585static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {1586	.halt_reg = 0x10050,1587	.halt_check = BRANCH_HALT_SKIP,1588	.hwcg_reg = 0x10050,1589	.hwcg_bit = 1,1590	.clkr = {1591		.enable_reg = 0x52000,1592		.enable_mask = BIT(20),1593		.hw.init = &(const struct clk_init_data) {1594			.name = "gcc_cfg_noc_pcie_anoc_ahb_clk",1595			.ops = &clk_branch2_ops,1596		},1597	},1598};1599 1600static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {1601	.halt_reg = 0x39088,1602	.halt_check = BRANCH_HALT_VOTED,1603	.hwcg_reg = 0x39088,1604	.hwcg_bit = 1,1605	.clkr = {1606		.enable_reg = 0x39088,1607		.enable_mask = BIT(0),1608		.hw.init = &(const struct clk_init_data) {1609			.name = "gcc_cfg_noc_usb3_prim_axi_clk",1610			.parent_hws = (const struct clk_hw*[]) {1611				&gcc_usb30_prim_master_clk_src.clkr.hw,1612			},1613			.num_parents = 1,1614			.flags = CLK_SET_RATE_PARENT,1615			.ops = &clk_branch2_ops,1616		},1617	},1618};1619 1620static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = {1621	.halt_reg = 0x10058,1622	.halt_check = BRANCH_HALT_VOTED,1623	.hwcg_reg = 0x10058,1624	.hwcg_bit = 1,1625	.clkr = {1626		.enable_reg = 0x52008,1627		.enable_mask = BIT(6),1628		.hw.init = &(const struct clk_init_data) {1629			.name = "gcc_cnoc_pcie_sf_axi_clk",1630			.ops = &clk_branch2_ops,1631		},1632	},1633};1634 1635static struct clk_branch gcc_ddrss_gpu_axi_clk = {1636	.halt_reg = 0x71154,1637	.halt_check = BRANCH_HALT_SKIP,1638	.hwcg_reg = 0x71154,1639	.hwcg_bit = 1,1640	.clkr = {1641		.enable_reg = 0x71154,1642		.enable_mask = BIT(0),1643		.hw.init = &(const struct clk_init_data) {1644			.name = "gcc_ddrss_gpu_axi_clk",1645			.ops = &clk_branch2_aon_ops,1646		},1647	},1648};1649 1650static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk = {1651	.halt_reg = 0x10074,1652	.halt_check = BRANCH_HALT_SKIP,1653	.hwcg_reg = 0x10074,1654	.hwcg_bit = 1,1655	.clkr = {1656		.enable_reg = 0x52000,1657		.enable_mask = BIT(19),1658		.hw.init = &(const struct clk_init_data) {1659			.name = "gcc_ddrss_pcie_sf_qtb_clk",1660			.ops = &clk_branch2_ops,1661		},1662	},1663};1664 1665static struct clk_branch gcc_disp_hf_axi_clk = {1666	.halt_reg = 0x2700c,1667	.halt_check = BRANCH_HALT_SKIP,1668	.hwcg_reg = 0x2700c,1669	.hwcg_bit = 1,1670	.clkr = {1671		.enable_reg = 0x2700c,1672		.enable_mask = BIT(0),1673		.hw.init = &(const struct clk_init_data) {1674			.name = "gcc_disp_hf_axi_clk",1675			.ops = &clk_branch2_ops,1676		},1677	},1678};1679 1680static struct clk_branch gcc_gp1_clk = {1681	.halt_reg = 0x64000,1682	.halt_check = BRANCH_HALT,1683	.clkr = {1684		.enable_reg = 0x64000,1685		.enable_mask = BIT(0),1686		.hw.init = &(const struct clk_init_data) {1687			.name = "gcc_gp1_clk",1688			.parent_hws = (const struct clk_hw*[]) {1689				&gcc_gp1_clk_src.clkr.hw,1690			},1691			.num_parents = 1,1692			.flags = CLK_SET_RATE_PARENT,1693			.ops = &clk_branch2_ops,1694		},1695	},1696};1697 1698static struct clk_branch gcc_gp2_clk = {1699	.halt_reg = 0x65000,1700	.halt_check = BRANCH_HALT,1701	.clkr = {1702		.enable_reg = 0x65000,1703		.enable_mask = BIT(0),1704		.hw.init = &(const struct clk_init_data) {1705			.name = "gcc_gp2_clk",1706			.parent_hws = (const struct clk_hw*[]) {1707				&gcc_gp2_clk_src.clkr.hw,1708			},1709			.num_parents = 1,1710			.flags = CLK_SET_RATE_PARENT,1711			.ops = &clk_branch2_ops,1712		},1713	},1714};1715 1716static struct clk_branch gcc_gp3_clk = {1717	.halt_reg = 0x66000,1718	.halt_check = BRANCH_HALT,1719	.clkr = {1720		.enable_reg = 0x66000,1721		.enable_mask = BIT(0),1722		.hw.init = &(const struct clk_init_data) {1723			.name = "gcc_gp3_clk",1724			.parent_hws = (const struct clk_hw*[]) {1725				&gcc_gp3_clk_src.clkr.hw,1726			},1727			.num_parents = 1,1728			.flags = CLK_SET_RATE_PARENT,1729			.ops = &clk_branch2_ops,1730		},1731	},1732};1733 1734static struct clk_branch gcc_gpu_gpll0_clk_src = {1735	.halt_check = BRANCH_HALT_DELAY,1736	.clkr = {1737		.enable_reg = 0x52000,1738		.enable_mask = BIT(15),1739		.hw.init = &(const struct clk_init_data) {1740			.name = "gcc_gpu_gpll0_clk_src",1741			.parent_hws = (const struct clk_hw*[]) {1742				&gcc_gpll0.clkr.hw,1743			},1744			.num_parents = 1,1745			.flags = CLK_SET_RATE_PARENT,1746			.ops = &clk_branch2_ops,1747		},1748	},1749};1750 1751static struct clk_branch gcc_gpu_gpll0_div_clk_src = {1752	.halt_check = BRANCH_HALT_DELAY,1753	.clkr = {1754		.enable_reg = 0x52000,1755		.enable_mask = BIT(16),1756		.hw.init = &(const struct clk_init_data) {1757			.name = "gcc_gpu_gpll0_div_clk_src",1758			.parent_hws = (const struct clk_hw*[]) {1759				&gcc_gpll0_out_even.clkr.hw,1760			},1761			.num_parents = 1,1762			.flags = CLK_SET_RATE_PARENT,1763			.ops = &clk_branch2_ops,1764		},1765	},1766};1767 1768static struct clk_branch gcc_gpu_memnoc_gfx_clk = {1769	.halt_reg = 0x71010,1770	.halt_check = BRANCH_HALT_VOTED,1771	.hwcg_reg = 0x71010,1772	.hwcg_bit = 1,1773	.clkr = {1774		.enable_reg = 0x71010,1775		.enable_mask = BIT(0),1776		.hw.init = &(const struct clk_init_data) {1777			.name = "gcc_gpu_memnoc_gfx_clk",1778			.ops = &clk_branch2_ops,1779		},1780	},1781};1782 1783static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {1784	.halt_reg = 0x71018,1785	.halt_check = BRANCH_HALT_DELAY,1786	.clkr = {1787		.enable_reg = 0x71018,1788		.enable_mask = BIT(0),1789		.hw.init = &(const struct clk_init_data) {1790			.name = "gcc_gpu_snoc_dvm_gfx_clk",1791			.ops = &clk_branch2_ops,1792		},1793	},1794};1795 1796static struct clk_branch gcc_pcie_0_aux_clk = {1797	.halt_reg = 0x6b03c,1798	.halt_check = BRANCH_HALT_VOTED,1799	.clkr = {1800		.enable_reg = 0x52008,1801		.enable_mask = BIT(3),1802		.hw.init = &(const struct clk_init_data) {1803			.name = "gcc_pcie_0_aux_clk",1804			.parent_hws = (const struct clk_hw*[]) {1805				&gcc_pcie_0_aux_clk_src.clkr.hw,1806			},1807			.num_parents = 1,1808			.flags = CLK_SET_RATE_PARENT,1809			.ops = &clk_branch2_ops,1810		},1811	},1812};1813 1814static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {1815	.halt_reg = 0x6b038,1816	.halt_check = BRANCH_HALT_VOTED,1817	.hwcg_reg = 0x6b038,1818	.hwcg_bit = 1,1819	.clkr = {1820		.enable_reg = 0x52008,1821		.enable_mask = BIT(2),1822		.hw.init = &(const struct clk_init_data) {1823			.name = "gcc_pcie_0_cfg_ahb_clk",1824			.ops = &clk_branch2_ops,1825		},1826	},1827};1828 1829static struct clk_branch gcc_pcie_0_mstr_axi_clk = {1830	.halt_reg = 0x6b02c,1831	.halt_check = BRANCH_HALT_SKIP,1832	.hwcg_reg = 0x6b02c,1833	.hwcg_bit = 1,1834	.clkr = {1835		.enable_reg = 0x52008,1836		.enable_mask = BIT(1),1837		.hw.init = &(const struct clk_init_data) {1838			.name = "gcc_pcie_0_mstr_axi_clk",1839			.ops = &clk_branch2_ops,1840		},1841	},1842};1843 1844static struct clk_branch gcc_pcie_0_phy_rchng_clk = {1845	.halt_reg = 0x6b054,1846	.halt_check = BRANCH_HALT_VOTED,1847	.clkr = {1848		.enable_reg = 0x52000,1849		.enable_mask = BIT(22),1850		.hw.init = &(const struct clk_init_data) {1851			.name = "gcc_pcie_0_phy_rchng_clk",1852			.parent_hws = (const struct clk_hw*[]) {1853				&gcc_pcie_0_phy_rchng_clk_src.clkr.hw,1854			},1855			.num_parents = 1,1856			.flags = CLK_SET_RATE_PARENT,1857			.ops = &clk_branch2_ops,1858		},1859	},1860};1861 1862static struct clk_branch gcc_pcie_0_pipe_clk = {1863	.halt_reg = 0x6b048,1864	.halt_check = BRANCH_HALT_SKIP,1865	.clkr = {1866		.enable_reg = 0x52008,1867		.enable_mask = BIT(4),1868		.hw.init = &(const struct clk_init_data) {1869			.name = "gcc_pcie_0_pipe_clk",1870			.parent_hws = (const struct clk_hw*[]) {1871				&gcc_pcie_0_pipe_clk_src.clkr.hw,1872			},1873			.num_parents = 1,1874			.flags = CLK_SET_RATE_PARENT,1875			.ops = &clk_branch2_ops,1876		},1877	},1878};1879 1880static struct clk_branch gcc_pcie_0_slv_axi_clk = {1881	.halt_reg = 0x6b020,1882	.halt_check = BRANCH_HALT_VOTED,1883	.hwcg_reg = 0x6b020,1884	.hwcg_bit = 1,1885	.clkr = {1886		.enable_reg = 0x52008,1887		.enable_mask = BIT(0),1888		.hw.init = &(const struct clk_init_data) {1889			.name = "gcc_pcie_0_slv_axi_clk",1890			.ops = &clk_branch2_ops,1891		},1892	},1893};1894 1895static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {1896	.halt_reg = 0x6b01c,1897	.halt_check = BRANCH_HALT_VOTED,1898	.clkr = {1899		.enable_reg = 0x52008,1900		.enable_mask = BIT(5),1901		.hw.init = &(const struct clk_init_data) {1902			.name = "gcc_pcie_0_slv_q2a_axi_clk",1903			.ops = &clk_branch2_ops,1904		},1905	},1906};1907 1908static struct clk_branch gcc_pcie_1_aux_clk = {1909	.halt_reg = 0x8d038,1910	.halt_check = BRANCH_HALT_VOTED,1911	.clkr = {1912		.enable_reg = 0x52000,1913		.enable_mask = BIT(29),1914		.hw.init = &(const struct clk_init_data) {1915			.name = "gcc_pcie_1_aux_clk",1916			.parent_hws = (const struct clk_hw*[]) {1917				&gcc_pcie_1_aux_clk_src.clkr.hw,1918			},1919			.num_parents = 1,1920			.flags = CLK_SET_RATE_PARENT,1921			.ops = &clk_branch2_ops,1922		},1923	},1924};1925 1926static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {1927	.halt_reg = 0x8d034,1928	.halt_check = BRANCH_HALT_VOTED,1929	.hwcg_reg = 0x8d034,1930	.hwcg_bit = 1,1931	.clkr = {1932		.enable_reg = 0x52000,1933		.enable_mask = BIT(28),1934		.hw.init = &(const struct clk_init_data) {1935			.name = "gcc_pcie_1_cfg_ahb_clk",1936			.ops = &clk_branch2_ops,1937		},1938	},1939};1940 1941static struct clk_branch gcc_pcie_1_mstr_axi_clk = {1942	.halt_reg = 0x8d028,1943	.halt_check = BRANCH_HALT_SKIP,1944	.hwcg_reg = 0x8d028,1945	.hwcg_bit = 1,1946	.clkr = {1947		.enable_reg = 0x52000,1948		.enable_mask = BIT(27),1949		.hw.init = &(const struct clk_init_data) {1950			.name = "gcc_pcie_1_mstr_axi_clk",1951			.ops = &clk_branch2_ops,1952		},1953	},1954};1955 1956static struct clk_branch gcc_pcie_1_phy_aux_clk = {1957	.halt_reg = 0x8d044,1958	.halt_check = BRANCH_HALT_VOTED,1959	.clkr = {1960		.enable_reg = 0x52000,1961		.enable_mask = BIT(24),1962		.hw.init = &(const struct clk_init_data) {1963			.name = "gcc_pcie_1_phy_aux_clk",1964			.parent_hws = (const struct clk_hw*[]) {1965				&gcc_pcie_1_phy_aux_clk_src.clkr.hw,1966			},1967			.num_parents = 1,1968			.flags = CLK_SET_RATE_PARENT,1969			.ops = &clk_branch2_ops,1970		},1971	},1972};1973 1974static struct clk_branch gcc_pcie_1_phy_rchng_clk = {1975	.halt_reg = 0x8d05c,1976	.halt_check = BRANCH_HALT_VOTED,1977	.clkr = {1978		.enable_reg = 0x52000,1979		.enable_mask = BIT(23),1980		.hw.init = &(const struct clk_init_data) {1981			.name = "gcc_pcie_1_phy_rchng_clk",1982			.parent_hws = (const struct clk_hw*[]) {1983				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,1984			},1985			.num_parents = 1,1986			.flags = CLK_SET_RATE_PARENT,1987			.ops = &clk_branch2_ops,1988		},1989	},1990};1991 1992static struct clk_branch gcc_pcie_1_pipe_clk = {1993	.halt_reg = 0x8d050,1994	.halt_check = BRANCH_HALT_SKIP,1995	.clkr = {1996		.enable_reg = 0x52000,1997		.enable_mask = BIT(30),1998		.hw.init = &(const struct clk_init_data) {1999			.name = "gcc_pcie_1_pipe_clk",2000			.parent_hws = (const struct clk_hw*[]) {2001				&gcc_pcie_1_pipe_clk_src.clkr.hw,2002			},2003			.num_parents = 1,2004			.flags = CLK_SET_RATE_PARENT,2005			.ops = &clk_branch2_ops,2006		},2007	},2008};2009 2010static struct clk_branch gcc_pcie_1_slv_axi_clk = {2011	.halt_reg = 0x8d01c,2012	.halt_check = BRANCH_HALT_VOTED,2013	.hwcg_reg = 0x8d01c,2014	.hwcg_bit = 1,2015	.clkr = {2016		.enable_reg = 0x52000,2017		.enable_mask = BIT(26),2018		.hw.init = &(const struct clk_init_data) {2019			.name = "gcc_pcie_1_slv_axi_clk",2020			.ops = &clk_branch2_ops,2021		},2022	},2023};2024 2025static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {2026	.halt_reg = 0x8d018,2027	.halt_check = BRANCH_HALT_VOTED,2028	.clkr = {2029		.enable_reg = 0x52000,2030		.enable_mask = BIT(25),2031		.hw.init = &(const struct clk_init_data) {2032			.name = "gcc_pcie_1_slv_q2a_axi_clk",2033			.ops = &clk_branch2_ops,2034		},2035	},2036};2037 2038static struct clk_branch gcc_pdm2_clk = {2039	.halt_reg = 0x3300c,2040	.halt_check = BRANCH_HALT,2041	.clkr = {2042		.enable_reg = 0x3300c,2043		.enable_mask = BIT(0),2044		.hw.init = &(const struct clk_init_data) {2045			.name = "gcc_pdm2_clk",2046			.parent_hws = (const struct clk_hw*[]) {2047				&gcc_pdm2_clk_src.clkr.hw,2048			},2049			.num_parents = 1,2050			.flags = CLK_SET_RATE_PARENT,2051			.ops = &clk_branch2_ops,2052		},2053	},2054};2055 2056static struct clk_branch gcc_pdm_ahb_clk = {2057	.halt_reg = 0x33004,2058	.halt_check = BRANCH_HALT_VOTED,2059	.hwcg_reg = 0x33004,2060	.hwcg_bit = 1,2061	.clkr = {2062		.enable_reg = 0x33004,2063		.enable_mask = BIT(0),2064		.hw.init = &(const struct clk_init_data) {2065			.name = "gcc_pdm_ahb_clk",2066			.ops = &clk_branch2_ops,2067		},2068	},2069};2070 2071static struct clk_branch gcc_pdm_xo4_clk = {2072	.halt_reg = 0x33008,2073	.halt_check = BRANCH_HALT,2074	.clkr = {2075		.enable_reg = 0x33008,2076		.enable_mask = BIT(0),2077		.hw.init = &(const struct clk_init_data) {2078			.name = "gcc_pdm_xo4_clk",2079			.ops = &clk_branch2_ops,2080		},2081	},2082};2083 2084static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {2085	.halt_reg = 0x26008,2086	.halt_check = BRANCH_HALT_VOTED,2087	.hwcg_reg = 0x26008,2088	.hwcg_bit = 1,2089	.clkr = {2090		.enable_reg = 0x26008,2091		.enable_mask = BIT(0),2092		.hw.init = &(const struct clk_init_data) {2093			.name = "gcc_qmip_camera_nrt_ahb_clk",2094			.ops = &clk_branch2_ops,2095		},2096	},2097};2098 2099static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {2100	.halt_reg = 0x2600c,2101	.halt_check = BRANCH_HALT_VOTED,2102	.hwcg_reg = 0x2600c,2103	.hwcg_bit = 1,2104	.clkr = {2105		.enable_reg = 0x2600c,2106		.enable_mask = BIT(0),2107		.hw.init = &(const struct clk_init_data) {2108			.name = "gcc_qmip_camera_rt_ahb_clk",2109			.ops = &clk_branch2_ops,2110		},2111	},2112};2113 2114static struct clk_branch gcc_qmip_disp_ahb_clk = {2115	.halt_reg = 0x27008,2116	.halt_check = BRANCH_HALT_VOTED,2117	.hwcg_reg = 0x27008,2118	.hwcg_bit = 1,2119	.clkr = {2120		.enable_reg = 0x27008,2121		.enable_mask = BIT(0),2122		.hw.init = &(const struct clk_init_data) {2123			.name = "gcc_qmip_disp_ahb_clk",2124			.ops = &clk_branch2_ops,2125		},2126	},2127};2128 2129static struct clk_branch gcc_qmip_gpu_ahb_clk = {2130	.halt_reg = 0x71008,2131	.halt_check = BRANCH_HALT_VOTED,2132	.hwcg_reg = 0x71008,2133	.hwcg_bit = 1,2134	.clkr = {2135		.enable_reg = 0x71008,2136		.enable_mask = BIT(0),2137		.hw.init = &(const struct clk_init_data) {2138			.name = "gcc_qmip_gpu_ahb_clk",2139			.ops = &clk_branch2_ops,2140		},2141	},2142};2143 2144static struct clk_branch gcc_qmip_pcie_ahb_clk = {2145	.halt_reg = 0x6b018,2146	.halt_check = BRANCH_HALT_VOTED,2147	.hwcg_reg = 0x6b018,2148	.hwcg_bit = 1,2149	.clkr = {2150		.enable_reg = 0x52000,2151		.enable_mask = BIT(11),2152		.hw.init = &(const struct clk_init_data) {2153			.name = "gcc_qmip_pcie_ahb_clk",2154			.ops = &clk_branch2_ops,2155		},2156	},2157};2158 2159static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {2160	.halt_reg = 0x32014,2161	.halt_check = BRANCH_HALT_VOTED,2162	.hwcg_reg = 0x32014,2163	.hwcg_bit = 1,2164	.clkr = {2165		.enable_reg = 0x32014,2166		.enable_mask = BIT(0),2167		.hw.init = &(const struct clk_init_data) {2168			.name = "gcc_qmip_video_cv_cpu_ahb_clk",2169			.ops = &clk_branch2_ops,2170		},2171	},2172};2173 2174static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {2175	.halt_reg = 0x32008,2176	.halt_check = BRANCH_HALT_VOTED,2177	.hwcg_reg = 0x32008,2178	.hwcg_bit = 1,2179	.clkr = {2180		.enable_reg = 0x32008,2181		.enable_mask = BIT(0),2182		.hw.init = &(const struct clk_init_data) {2183			.name = "gcc_qmip_video_cvp_ahb_clk",2184			.ops = &clk_branch2_ops,2185		},2186	},2187};2188 2189static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {2190	.halt_reg = 0x32010,2191	.halt_check = BRANCH_HALT_VOTED,2192	.hwcg_reg = 0x32010,2193	.hwcg_bit = 1,2194	.clkr = {2195		.enable_reg = 0x32010,2196		.enable_mask = BIT(0),2197		.hw.init = &(const struct clk_init_data) {2198			.name = "gcc_qmip_video_v_cpu_ahb_clk",2199			.ops = &clk_branch2_ops,2200		},2201	},2202};2203 2204static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {2205	.halt_reg = 0x3200c,2206	.halt_check = BRANCH_HALT_VOTED,2207	.hwcg_reg = 0x3200c,2208	.hwcg_bit = 1,2209	.clkr = {2210		.enable_reg = 0x3200c,2211		.enable_mask = BIT(0),2212		.hw.init = &(const struct clk_init_data) {2213			.name = "gcc_qmip_video_vcodec_ahb_clk",2214			.ops = &clk_branch2_ops,2215		},2216	},2217};2218 2219static struct clk_branch gcc_qupv3_i2c_core_clk = {2220	.halt_reg = 0x23004,2221	.halt_check = BRANCH_HALT_VOTED,2222	.clkr = {2223		.enable_reg = 0x52008,2224		.enable_mask = BIT(8),2225		.hw.init = &(const struct clk_init_data) {2226			.name = "gcc_qupv3_i2c_core_clk",2227			.ops = &clk_branch2_ops,2228		},2229	},2230};2231 2232static struct clk_branch gcc_qupv3_i2c_s0_clk = {2233	.halt_reg = 0x17004,2234	.halt_check = BRANCH_HALT_VOTED,2235	.clkr = {2236		.enable_reg = 0x52008,2237		.enable_mask = BIT(10),2238		.hw.init = &(const struct clk_init_data) {2239			.name = "gcc_qupv3_i2c_s0_clk",2240			.parent_hws = (const struct clk_hw*[]) {2241				&gcc_qupv3_i2c_s0_clk_src.clkr.hw,2242			},2243			.num_parents = 1,2244			.flags = CLK_SET_RATE_PARENT,2245			.ops = &clk_branch2_ops,2246		},2247	},2248};2249 2250static struct clk_branch gcc_qupv3_i2c_s1_clk = {2251	.halt_reg = 0x17020,2252	.halt_check = BRANCH_HALT_VOTED,2253	.clkr = {2254		.enable_reg = 0x52008,2255		.enable_mask = BIT(11),2256		.hw.init = &(const struct clk_init_data) {2257			.name = "gcc_qupv3_i2c_s1_clk",2258			.parent_hws = (const struct clk_hw*[]) {2259				&gcc_qupv3_i2c_s1_clk_src.clkr.hw,2260			},2261			.num_parents = 1,2262			.flags = CLK_SET_RATE_PARENT,2263			.ops = &clk_branch2_ops,2264		},2265	},2266};2267 2268static struct clk_branch gcc_qupv3_i2c_s2_clk = {2269	.halt_reg = 0x1703c,2270	.halt_check = BRANCH_HALT_VOTED,2271	.clkr = {2272		.enable_reg = 0x52008,2273		.enable_mask = BIT(12),2274		.hw.init = &(const struct clk_init_data) {2275			.name = "gcc_qupv3_i2c_s2_clk",2276			.parent_hws = (const struct clk_hw*[]) {2277				&gcc_qupv3_i2c_s2_clk_src.clkr.hw,2278			},2279			.num_parents = 1,2280			.flags = CLK_SET_RATE_PARENT,2281			.ops = &clk_branch2_ops,2282		},2283	},2284};2285 2286static struct clk_branch gcc_qupv3_i2c_s3_clk = {2287	.halt_reg = 0x17058,2288	.halt_check = BRANCH_HALT_VOTED,2289	.clkr = {2290		.enable_reg = 0x52008,2291		.enable_mask = BIT(13),2292		.hw.init = &(const struct clk_init_data) {2293			.name = "gcc_qupv3_i2c_s3_clk",2294			.parent_hws = (const struct clk_hw*[]) {2295				&gcc_qupv3_i2c_s3_clk_src.clkr.hw,2296			},2297			.num_parents = 1,2298			.flags = CLK_SET_RATE_PARENT,2299			.ops = &clk_branch2_ops,2300		},2301	},2302};2303 2304static struct clk_branch gcc_qupv3_i2c_s4_clk = {2305	.halt_reg = 0x17074,2306	.halt_check = BRANCH_HALT_VOTED,2307	.clkr = {2308		.enable_reg = 0x52008,2309		.enable_mask = BIT(14),2310		.hw.init = &(const struct clk_init_data) {2311			.name = "gcc_qupv3_i2c_s4_clk",2312			.parent_hws = (const struct clk_hw*[]) {2313				&gcc_qupv3_i2c_s4_clk_src.clkr.hw,2314			},2315			.num_parents = 1,2316			.flags = CLK_SET_RATE_PARENT,2317			.ops = &clk_branch2_ops,2318		},2319	},2320};2321 2322static struct clk_branch gcc_qupv3_i2c_s5_clk = {2323	.halt_reg = 0x17090,2324	.halt_check = BRANCH_HALT_VOTED,2325	.clkr = {2326		.enable_reg = 0x52008,2327		.enable_mask = BIT(15),2328		.hw.init = &(const struct clk_init_data) {2329			.name = "gcc_qupv3_i2c_s5_clk",2330			.parent_hws = (const struct clk_hw*[]) {2331				&gcc_qupv3_i2c_s5_clk_src.clkr.hw,2332			},2333			.num_parents = 1,2334			.flags = CLK_SET_RATE_PARENT,2335			.ops = &clk_branch2_ops,2336		},2337	},2338};2339 2340static struct clk_branch gcc_qupv3_i2c_s6_clk = {2341	.halt_reg = 0x170ac,2342	.halt_check = BRANCH_HALT_VOTED,2343	.clkr = {2344		.enable_reg = 0x52008,2345		.enable_mask = BIT(16),2346		.hw.init = &(const struct clk_init_data) {2347			.name = "gcc_qupv3_i2c_s6_clk",2348			.parent_hws = (const struct clk_hw*[]) {2349				&gcc_qupv3_i2c_s6_clk_src.clkr.hw,2350			},2351			.num_parents = 1,2352			.flags = CLK_SET_RATE_PARENT,2353			.ops = &clk_branch2_ops,2354		},2355	},2356};2357 2358static struct clk_branch gcc_qupv3_i2c_s7_clk = {2359	.halt_reg = 0x170c8,2360	.halt_check = BRANCH_HALT_VOTED,2361	.clkr = {2362		.enable_reg = 0x52008,2363		.enable_mask = BIT(17),2364		.hw.init = &(const struct clk_init_data) {2365			.name = "gcc_qupv3_i2c_s7_clk",2366			.parent_hws = (const struct clk_hw*[]) {2367				&gcc_qupv3_i2c_s7_clk_src.clkr.hw,2368			},2369			.num_parents = 1,2370			.flags = CLK_SET_RATE_PARENT,2371			.ops = &clk_branch2_ops,2372		},2373	},2374};2375 2376static struct clk_branch gcc_qupv3_i2c_s8_clk = {2377	.halt_reg = 0x170e4,2378	.halt_check = BRANCH_HALT_VOTED,2379	.clkr = {2380		.enable_reg = 0x52010,2381		.enable_mask = BIT(14),2382		.hw.init = &(const struct clk_init_data) {2383			.name = "gcc_qupv3_i2c_s8_clk",2384			.parent_hws = (const struct clk_hw*[]) {2385				&gcc_qupv3_i2c_s8_clk_src.clkr.hw,2386			},2387			.num_parents = 1,2388			.flags = CLK_SET_RATE_PARENT,2389			.ops = &clk_branch2_ops,2390		},2391	},2392};2393 2394static struct clk_branch gcc_qupv3_i2c_s9_clk = {2395	.halt_reg = 0x17100,2396	.halt_check = BRANCH_HALT_VOTED,2397	.clkr = {2398		.enable_reg = 0x52010,2399		.enable_mask = BIT(15),2400		.hw.init = &(const struct clk_init_data) {2401			.name = "gcc_qupv3_i2c_s9_clk",2402			.parent_hws = (const struct clk_hw*[]) {2403				&gcc_qupv3_i2c_s9_clk_src.clkr.hw,2404			},2405			.num_parents = 1,2406			.flags = CLK_SET_RATE_PARENT,2407			.ops = &clk_branch2_ops,2408		},2409	},2410};2411 2412static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = {2413	.halt_reg = 0x23000,2414	.halt_check = BRANCH_HALT_VOTED,2415	.hwcg_reg = 0x23000,2416	.hwcg_bit = 1,2417	.clkr = {2418		.enable_reg = 0x52008,2419		.enable_mask = BIT(7),2420		.hw.init = &(const struct clk_init_data) {2421			.name = "gcc_qupv3_i2c_s_ahb_clk",2422			.ops = &clk_branch2_ops,2423		},2424	},2425};2426 2427static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {2428	.halt_reg = 0x23154,2429	.halt_check = BRANCH_HALT_VOTED,2430	.clkr = {2431		.enable_reg = 0x52008,2432		.enable_mask = BIT(18),2433		.hw.init = &(const struct clk_init_data) {2434			.name = "gcc_qupv3_wrap1_core_2x_clk",2435			.ops = &clk_branch2_ops,2436		},2437	},2438};2439 2440static struct clk_branch gcc_qupv3_wrap1_core_clk = {2441	.halt_reg = 0x23144,2442	.halt_check = BRANCH_HALT_VOTED,2443	.clkr = {2444		.enable_reg = 0x52008,2445		.enable_mask = BIT(19),2446		.hw.init = &(const struct clk_init_data) {2447			.name = "gcc_qupv3_wrap1_core_clk",2448			.ops = &clk_branch2_ops,2449		},2450	},2451};2452 2453static struct clk_branch gcc_qupv3_wrap1_qspi_ref_clk = {2454	.halt_reg = 0x1889c,2455	.halt_check = BRANCH_HALT_VOTED,2456	.clkr = {2457		.enable_reg = 0x52010,2458		.enable_mask = BIT(29),2459		.hw.init = &(const struct clk_init_data) {2460			.name = "gcc_qupv3_wrap1_qspi_ref_clk",2461			.parent_hws = (const struct clk_hw*[]) {2462				&gcc_qupv3_wrap1_qspi_ref_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_qupv3_wrap1_s0_clk = {2472	.halt_reg = 0x18004,2473	.halt_check = BRANCH_HALT_VOTED,2474	.clkr = {2475		.enable_reg = 0x52008,2476		.enable_mask = BIT(22),2477		.hw.init = &(const struct clk_init_data) {2478			.name = "gcc_qupv3_wrap1_s0_clk",2479			.parent_hws = (const struct clk_hw*[]) {2480				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,2481			},2482			.num_parents = 1,2483			.flags = CLK_SET_RATE_PARENT,2484			.ops = &clk_branch2_ops,2485		},2486	},2487};2488 2489static struct clk_branch gcc_qupv3_wrap1_s1_clk = {2490	.halt_reg = 0x1813c,2491	.halt_check = BRANCH_HALT_VOTED,2492	.clkr = {2493		.enable_reg = 0x52008,2494		.enable_mask = BIT(23),2495		.hw.init = &(const struct clk_init_data) {2496			.name = "gcc_qupv3_wrap1_s1_clk",2497			.parent_hws = (const struct clk_hw*[]) {2498				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,2499			},2500			.num_parents = 1,2501			.flags = CLK_SET_RATE_PARENT,2502			.ops = &clk_branch2_ops,2503		},2504	},2505};2506 2507static struct clk_branch gcc_qupv3_wrap1_s2_clk = {2508	.halt_reg = 0x18274,2509	.halt_check = BRANCH_HALT_VOTED,2510	.clkr = {2511		.enable_reg = 0x52008,2512		.enable_mask = BIT(24),2513		.hw.init = &(const struct clk_init_data) {2514			.name = "gcc_qupv3_wrap1_s2_clk",2515			.parent_hws = (const struct clk_hw*[]) {2516				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,2517			},2518			.num_parents = 1,2519			.flags = CLK_SET_RATE_PARENT,2520			.ops = &clk_branch2_ops,2521		},2522	},2523};2524 2525static struct clk_branch gcc_qupv3_wrap1_s3_clk = {2526	.halt_reg = 0x18284,2527	.halt_check = BRANCH_HALT_VOTED,2528	.clkr = {2529		.enable_reg = 0x52008,2530		.enable_mask = BIT(25),2531		.hw.init = &(const struct clk_init_data) {2532			.name = "gcc_qupv3_wrap1_s3_clk",2533			.parent_hws = (const struct clk_hw*[]) {2534				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,2535			},2536			.num_parents = 1,2537			.flags = CLK_SET_RATE_PARENT,2538			.ops = &clk_branch2_ops,2539		},2540	},2541};2542 2543static struct clk_branch gcc_qupv3_wrap1_s4_clk = {2544	.halt_reg = 0x183bc,2545	.halt_check = BRANCH_HALT_VOTED,2546	.clkr = {2547		.enable_reg = 0x52008,2548		.enable_mask = BIT(26),2549		.hw.init = &(const struct clk_init_data) {2550			.name = "gcc_qupv3_wrap1_s4_clk",2551			.parent_hws = (const struct clk_hw*[]) {2552				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,2553			},2554			.num_parents = 1,2555			.flags = CLK_SET_RATE_PARENT,2556			.ops = &clk_branch2_ops,2557		},2558	},2559};2560 2561static struct clk_branch gcc_qupv3_wrap1_s5_clk = {2562	.halt_reg = 0x184f4,2563	.halt_check = BRANCH_HALT_VOTED,2564	.clkr = {2565		.enable_reg = 0x52008,2566		.enable_mask = BIT(27),2567		.hw.init = &(const struct clk_init_data) {2568			.name = "gcc_qupv3_wrap1_s5_clk",2569			.parent_hws = (const struct clk_hw*[]) {2570				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,2571			},2572			.num_parents = 1,2573			.flags = CLK_SET_RATE_PARENT,2574			.ops = &clk_branch2_ops,2575		},2576	},2577};2578 2579static struct clk_branch gcc_qupv3_wrap1_s6_clk = {2580	.halt_reg = 0x1862c,2581	.halt_check = BRANCH_HALT_VOTED,2582	.clkr = {2583		.enable_reg = 0x52008,2584		.enable_mask = BIT(28),2585		.hw.init = &(const struct clk_init_data) {2586			.name = "gcc_qupv3_wrap1_s6_clk",2587			.parent_hws = (const struct clk_hw*[]) {2588				&gcc_qupv3_wrap1_s6_clk_src.clkr.hw,2589			},2590			.num_parents = 1,2591			.flags = CLK_SET_RATE_PARENT,2592			.ops = &clk_branch2_ops,2593		},2594	},2595};2596 2597static struct clk_branch gcc_qupv3_wrap1_s7_clk = {2598	.halt_reg = 0x18764,2599	.halt_check = BRANCH_HALT_VOTED,2600	.clkr = {2601		.enable_reg = 0x52010,2602		.enable_mask = BIT(16),2603		.hw.init = &(const struct clk_init_data) {2604			.name = "gcc_qupv3_wrap1_s7_clk",2605			.parent_hws = (const struct clk_hw*[]) {2606				&gcc_qupv3_wrap1_s7_clk_src.clkr.hw,2607			},2608			.num_parents = 1,2609			.flags = CLK_SET_RATE_PARENT,2610			.ops = &clk_branch2_ops,2611		},2612	},2613};2614 2615static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {2616	.halt_reg = 0x232a4,2617	.halt_check = BRANCH_HALT_VOTED,2618	.clkr = {2619		.enable_reg = 0x52010,2620		.enable_mask = BIT(3),2621		.hw.init = &(const struct clk_init_data) {2622			.name = "gcc_qupv3_wrap2_core_2x_clk",2623			.ops = &clk_branch2_ops,2624		},2625	},2626};2627 2628static struct clk_branch gcc_qupv3_wrap2_core_clk = {2629	.halt_reg = 0x23294,2630	.halt_check = BRANCH_HALT_VOTED,2631	.clkr = {2632		.enable_reg = 0x52010,2633		.enable_mask = BIT(0),2634		.hw.init = &(const struct clk_init_data) {2635			.name = "gcc_qupv3_wrap2_core_clk",2636			.ops = &clk_branch2_ops,2637		},2638	},2639};2640 2641static struct clk_branch gcc_qupv3_wrap2_ibi_ctrl_2_clk = {2642	.halt_reg = 0x1e9cc,2643	.halt_check = BRANCH_HALT_VOTED,2644	.hwcg_reg = 0x1e9cc,2645	.hwcg_bit = 1,2646	.clkr = {2647		.enable_reg = 0x52010,2648		.enable_mask = BIT(27),2649		.hw.init = &(const struct clk_init_data) {2650			.name = "gcc_qupv3_wrap2_ibi_ctrl_2_clk",2651			.parent_hws = (const struct clk_hw*[]) {2652				&gcc_qupv3_wrap2_ibi_ctrl_0_clk_src.clkr.hw,2653			},2654			.num_parents = 1,2655			.flags = CLK_SET_RATE_PARENT,2656			.ops = &clk_branch2_ops,2657		},2658	},2659};2660 2661static struct clk_branch gcc_qupv3_wrap2_ibi_ctrl_3_clk = {2662	.halt_reg = 0x1e9d0,2663	.halt_check = BRANCH_HALT_VOTED,2664	.hwcg_reg = 0x1e9d0,2665	.hwcg_bit = 1,2666	.clkr = {2667		.enable_reg = 0x52010,2668		.enable_mask = BIT(28),2669		.hw.init = &(const struct clk_init_data) {2670			.name = "gcc_qupv3_wrap2_ibi_ctrl_3_clk",2671			.parent_hws = (const struct clk_hw*[]) {2672				&gcc_qupv3_wrap2_ibi_ctrl_0_clk_src.clkr.hw,2673			},2674			.num_parents = 1,2675			.flags = CLK_SET_RATE_PARENT,2676			.ops = &clk_branch2_ops,2677		},2678	},2679};2680 2681static struct clk_branch gcc_qupv3_wrap2_s0_clk = {2682	.halt_reg = 0x1e004,2683	.halt_check = BRANCH_HALT_VOTED,2684	.clkr = {2685		.enable_reg = 0x52010,2686		.enable_mask = BIT(4),2687		.hw.init = &(const struct clk_init_data) {2688			.name = "gcc_qupv3_wrap2_s0_clk",2689			.parent_hws = (const struct clk_hw*[]) {2690				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw,2691			},2692			.num_parents = 1,2693			.flags = CLK_SET_RATE_PARENT,2694			.ops = &clk_branch2_ops,2695		},2696	},2697};2698 2699static struct clk_branch gcc_qupv3_wrap2_s1_clk = {2700	.halt_reg = 0x1e13c,2701	.halt_check = BRANCH_HALT_VOTED,2702	.clkr = {2703		.enable_reg = 0x52010,2704		.enable_mask = BIT(5),2705		.hw.init = &(const struct clk_init_data) {2706			.name = "gcc_qupv3_wrap2_s1_clk",2707			.parent_hws = (const struct clk_hw*[]) {2708				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw,2709			},2710			.num_parents = 1,2711			.flags = CLK_SET_RATE_PARENT,2712			.ops = &clk_branch2_ops,2713		},2714	},2715};2716 2717static struct clk_branch gcc_qupv3_wrap2_s2_clk = {2718	.halt_reg = 0x1e274,2719	.halt_check = BRANCH_HALT_VOTED,2720	.clkr = {2721		.enable_reg = 0x52010,2722		.enable_mask = BIT(6),2723		.hw.init = &(const struct clk_init_data) {2724			.name = "gcc_qupv3_wrap2_s2_clk",2725			.parent_hws = (const struct clk_hw*[]) {2726				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw,2727			},2728			.num_parents = 1,2729			.flags = CLK_SET_RATE_PARENT,2730			.ops = &clk_branch2_ops,2731		},2732	},2733};2734 2735static struct clk_branch gcc_qupv3_wrap2_s3_clk = {2736	.halt_reg = 0x1e3ac,2737	.halt_check = BRANCH_HALT_VOTED,2738	.clkr = {2739		.enable_reg = 0x52010,2740		.enable_mask = BIT(7),2741		.hw.init = &(const struct clk_init_data) {2742			.name = "gcc_qupv3_wrap2_s3_clk",2743			.parent_hws = (const struct clk_hw*[]) {2744				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw,2745			},2746			.num_parents = 1,2747			.flags = CLK_SET_RATE_PARENT,2748			.ops = &clk_branch2_ops,2749		},2750	},2751};2752 2753static struct clk_branch gcc_qupv3_wrap2_s4_clk = {2754	.halt_reg = 0x1e4e4,2755	.halt_check = BRANCH_HALT_VOTED,2756	.clkr = {2757		.enable_reg = 0x52010,2758		.enable_mask = BIT(8),2759		.hw.init = &(const struct clk_init_data) {2760			.name = "gcc_qupv3_wrap2_s4_clk",2761			.parent_hws = (const struct clk_hw*[]) {2762				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw,2763			},2764			.num_parents = 1,2765			.flags = CLK_SET_RATE_PARENT,2766			.ops = &clk_branch2_ops,2767		},2768	},2769};2770 2771static struct clk_branch gcc_qupv3_wrap2_s5_clk = {2772	.halt_reg = 0x1e61c,2773	.halt_check = BRANCH_HALT_VOTED,2774	.clkr = {2775		.enable_reg = 0x52010,2776		.enable_mask = BIT(9),2777		.hw.init = &(const struct clk_init_data) {2778			.name = "gcc_qupv3_wrap2_s5_clk",2779			.parent_hws = (const struct clk_hw*[]) {2780				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw,2781			},2782			.num_parents = 1,2783			.flags = CLK_SET_RATE_PARENT,2784			.ops = &clk_branch2_ops,2785		},2786	},2787};2788 2789static struct clk_branch gcc_qupv3_wrap2_s6_clk = {2790	.halt_reg = 0x1e754,2791	.halt_check = BRANCH_HALT_VOTED,2792	.clkr = {2793		.enable_reg = 0x52010,2794		.enable_mask = BIT(10),2795		.hw.init = &(const struct clk_init_data) {2796			.name = "gcc_qupv3_wrap2_s6_clk",2797			.parent_hws = (const struct clk_hw*[]) {2798				&gcc_qupv3_wrap2_s6_clk_src.clkr.hw,2799			},2800			.num_parents = 1,2801			.flags = CLK_SET_RATE_PARENT,2802			.ops = &clk_branch2_ops,2803		},2804	},2805};2806 2807static struct clk_branch gcc_qupv3_wrap2_s7_clk = {2808	.halt_reg = 0x1e88c,2809	.halt_check = BRANCH_HALT_VOTED,2810	.clkr = {2811		.enable_reg = 0x52010,2812		.enable_mask = BIT(17),2813		.hw.init = &(const struct clk_init_data) {2814			.name = "gcc_qupv3_wrap2_s7_clk",2815			.parent_hws = (const struct clk_hw*[]) {2816				&gcc_qupv3_wrap2_s7_clk_src.clkr.hw,2817			},2818			.num_parents = 1,2819			.flags = CLK_SET_RATE_PARENT,2820			.ops = &clk_branch2_ops,2821		},2822	},2823};2824 2825static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {2826	.halt_reg = 0x233f4,2827	.halt_check = BRANCH_HALT_VOTED,2828	.clkr = {2829		.enable_reg = 0x52018,2830		.enable_mask = BIT(1),2831		.hw.init = &(const struct clk_init_data) {2832			.name = "gcc_qupv3_wrap3_core_2x_clk",2833			.ops = &clk_branch2_ops,2834		},2835	},2836};2837 2838static struct clk_branch gcc_qupv3_wrap3_core_clk = {2839	.halt_reg = 0x233e4,2840	.halt_check = BRANCH_HALT_VOTED,2841	.clkr = {2842		.enable_reg = 0x52018,2843		.enable_mask = BIT(0),2844		.hw.init = &(const struct clk_init_data) {2845			.name = "gcc_qupv3_wrap3_core_clk",2846			.ops = &clk_branch2_ops,2847		},2848	},2849};2850 2851static struct clk_branch gcc_qupv3_wrap3_qspi_ref_clk = {2852	.halt_reg = 0x19014,2853	.halt_check = BRANCH_HALT_VOTED,2854	.clkr = {2855		.enable_reg = 0x52018,2856		.enable_mask = BIT(3),2857		.hw.init = &(const struct clk_init_data) {2858			.name = "gcc_qupv3_wrap3_qspi_ref_clk",2859			.parent_hws = (const struct clk_hw*[]) {2860				&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,2861			},2862			.num_parents = 1,2863			.flags = CLK_SET_RATE_PARENT,2864			.ops = &clk_branch2_ops,2865		},2866	},2867};2868 2869static struct clk_branch gcc_qupv3_wrap3_s0_clk = {2870	.halt_reg = 0x19004,2871	.halt_check = BRANCH_HALT_VOTED,2872	.clkr = {2873		.enable_reg = 0x52018,2874		.enable_mask = BIT(2),2875		.hw.init = &(const struct clk_init_data) {2876			.name = "gcc_qupv3_wrap3_s0_clk",2877			.parent_hws = (const struct clk_hw*[]) {2878				&gcc_qupv3_wrap3_s0_clk_src.clkr.hw,2879			},2880			.num_parents = 1,2881			.flags = CLK_SET_RATE_PARENT,2882			.ops = &clk_branch2_ops,2883		},2884	},2885};2886 2887static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {2888	.halt_reg = 0x2313c,2889	.halt_check = BRANCH_HALT_VOTED,2890	.hwcg_reg = 0x2313c,2891	.hwcg_bit = 1,2892	.clkr = {2893		.enable_reg = 0x52008,2894		.enable_mask = BIT(20),2895		.hw.init = &(const struct clk_init_data) {2896			.name = "gcc_qupv3_wrap_1_m_ahb_clk",2897			.ops = &clk_branch2_ops,2898		},2899	},2900};2901 2902static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {2903	.halt_reg = 0x23140,2904	.halt_check = BRANCH_HALT_VOTED,2905	.hwcg_reg = 0x23140,2906	.hwcg_bit = 1,2907	.clkr = {2908		.enable_reg = 0x52008,2909		.enable_mask = BIT(21),2910		.hw.init = &(const struct clk_init_data) {2911			.name = "gcc_qupv3_wrap_1_s_ahb_clk",2912			.ops = &clk_branch2_ops,2913		},2914	},2915};2916 2917static struct clk_branch gcc_qupv3_wrap_2_ibi_2_ahb_clk = {2918	.halt_reg = 0x1e9c4,2919	.halt_check = BRANCH_HALT_VOTED,2920	.hwcg_reg = 0x1e9c4,2921	.hwcg_bit = 1,2922	.clkr = {2923		.enable_reg = 0x52010,2924		.enable_mask = BIT(25),2925		.hw.init = &(const struct clk_init_data) {2926			.name = "gcc_qupv3_wrap_2_ibi_2_ahb_clk",2927			.ops = &clk_branch2_ops,2928		},2929	},2930};2931 2932static struct clk_branch gcc_qupv3_wrap_2_ibi_3_ahb_clk = {2933	.halt_reg = 0x1e9c8,2934	.halt_check = BRANCH_HALT_VOTED,2935	.hwcg_reg = 0x1e9c8,2936	.hwcg_bit = 1,2937	.clkr = {2938		.enable_reg = 0x52010,2939		.enable_mask = BIT(26),2940		.hw.init = &(const struct clk_init_data) {2941			.name = "gcc_qupv3_wrap_2_ibi_3_ahb_clk",2942			.ops = &clk_branch2_ops,2943		},2944	},2945};2946 2947static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {2948	.halt_reg = 0x2328c,2949	.halt_check = BRANCH_HALT_VOTED,2950	.hwcg_reg = 0x2328c,2951	.hwcg_bit = 1,2952	.clkr = {2953		.enable_reg = 0x52010,2954		.enable_mask = BIT(2),2955		.hw.init = &(const struct clk_init_data) {2956			.name = "gcc_qupv3_wrap_2_m_ahb_clk",2957			.ops = &clk_branch2_ops,2958		},2959	},2960};2961 2962static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {2963	.halt_reg = 0x23290,2964	.halt_check = BRANCH_HALT_VOTED,2965	.hwcg_reg = 0x23290,2966	.hwcg_bit = 1,2967	.clkr = {2968		.enable_reg = 0x52010,2969		.enable_mask = BIT(1),2970		.hw.init = &(const struct clk_init_data) {2971			.name = "gcc_qupv3_wrap_2_s_ahb_clk",2972			.ops = &clk_branch2_ops,2973		},2974	},2975};2976 2977static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {2978	.halt_reg = 0x233dc,2979	.halt_check = BRANCH_HALT_VOTED,2980	.hwcg_reg = 0x233dc,2981	.hwcg_bit = 1,2982	.clkr = {2983		.enable_reg = 0x52010,2984		.enable_mask = BIT(30),2985		.hw.init = &(const struct clk_init_data) {2986			.name = "gcc_qupv3_wrap_3_m_ahb_clk",2987			.ops = &clk_branch2_ops,2988		},2989	},2990};2991 2992static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {2993	.halt_reg = 0x233e0,2994	.halt_check = BRANCH_HALT_VOTED,2995	.hwcg_reg = 0x233e0,2996	.hwcg_bit = 1,2997	.clkr = {2998		.enable_reg = 0x52010,2999		.enable_mask = BIT(31),3000		.hw.init = &(const struct clk_init_data) {3001			.name = "gcc_qupv3_wrap_3_s_ahb_clk",3002			.ops = &clk_branch2_ops,3003		},3004	},3005};3006 3007static struct clk_branch gcc_sdcc2_ahb_clk = {3008	.halt_reg = 0x14010,3009	.halt_check = BRANCH_HALT,3010	.clkr = {3011		.enable_reg = 0x14010,3012		.enable_mask = BIT(0),3013		.hw.init = &(const struct clk_init_data) {3014			.name = "gcc_sdcc2_ahb_clk",3015			.ops = &clk_branch2_ops,3016		},3017	},3018};3019 3020static struct clk_branch gcc_sdcc2_apps_clk = {3021	.halt_reg = 0x14004,3022	.halt_check = BRANCH_HALT,3023	.clkr = {3024		.enable_reg = 0x14004,3025		.enable_mask = BIT(0),3026		.hw.init = &(const struct clk_init_data) {3027			.name = "gcc_sdcc2_apps_clk",3028			.parent_hws = (const struct clk_hw*[]) {3029				&gcc_sdcc2_apps_clk_src.clkr.hw,3030			},3031			.num_parents = 1,3032			.flags = CLK_SET_RATE_PARENT,3033			.ops = &clk_branch2_ops,3034		},3035	},3036};3037 3038static struct clk_branch gcc_sdcc4_ahb_clk = {3039	.halt_reg = 0x16010,3040	.halt_check = BRANCH_HALT,3041	.clkr = {3042		.enable_reg = 0x16010,3043		.enable_mask = BIT(0),3044		.hw.init = &(const struct clk_init_data) {3045			.name = "gcc_sdcc4_ahb_clk",3046			.ops = &clk_branch2_ops,3047		},3048	},3049};3050 3051static struct clk_branch gcc_sdcc4_apps_clk = {3052	.halt_reg = 0x16004,3053	.halt_check = BRANCH_HALT,3054	.clkr = {3055		.enable_reg = 0x16004,3056		.enable_mask = BIT(0),3057		.hw.init = &(const struct clk_init_data) {3058			.name = "gcc_sdcc4_apps_clk",3059			.parent_hws = (const struct clk_hw*[]) {3060				&gcc_sdcc4_apps_clk_src.clkr.hw,3061			},3062			.num_parents = 1,3063			.flags = CLK_SET_RATE_PARENT,3064			.ops = &clk_branch2_ops,3065		},3066	},3067};3068 3069static struct clk_branch gcc_ufs_phy_ahb_clk = {3070	.halt_reg = 0x77024,3071	.halt_check = BRANCH_HALT_VOTED,3072	.hwcg_reg = 0x77024,3073	.hwcg_bit = 1,3074	.clkr = {3075		.enable_reg = 0x77024,3076		.enable_mask = BIT(0),3077		.hw.init = &(const struct clk_init_data) {3078			.name = "gcc_ufs_phy_ahb_clk",3079			.ops = &clk_branch2_ops,3080		},3081	},3082};3083 3084static struct clk_branch gcc_ufs_phy_axi_clk = {3085	.halt_reg = 0x77018,3086	.halt_check = BRANCH_HALT_VOTED,3087	.hwcg_reg = 0x77018,3088	.hwcg_bit = 1,3089	.clkr = {3090		.enable_reg = 0x77018,3091		.enable_mask = BIT(0),3092		.hw.init = &(const struct clk_init_data) {3093			.name = "gcc_ufs_phy_axi_clk",3094			.parent_hws = (const struct clk_hw*[]) {3095				&gcc_ufs_phy_axi_clk_src.clkr.hw,3096			},3097			.num_parents = 1,3098			.flags = CLK_SET_RATE_PARENT,3099			.ops = &clk_branch2_ops,3100		},3101	},3102};3103 3104static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {3105	.halt_reg = 0x77018,3106	.halt_check = BRANCH_HALT_VOTED,3107	.hwcg_reg = 0x77018,3108	.hwcg_bit = 1,3109	.clkr = {3110		.enable_reg = 0x77018,3111		.enable_mask = BIT(1),3112		.hw.init = &(const struct clk_init_data) {3113			.name = "gcc_ufs_phy_axi_hw_ctl_clk",3114			.parent_hws = (const struct clk_hw*[]) {3115				&gcc_ufs_phy_axi_clk_src.clkr.hw,3116			},3117			.num_parents = 1,3118			.flags = CLK_SET_RATE_PARENT,3119			.ops = &clk_branch2_ops,3120		},3121	},3122};3123 3124static struct clk_branch gcc_ufs_phy_ice_core_clk = {3125	.halt_reg = 0x77074,3126	.halt_check = BRANCH_HALT_VOTED,3127	.hwcg_reg = 0x77074,3128	.hwcg_bit = 1,3129	.clkr = {3130		.enable_reg = 0x77074,3131		.enable_mask = BIT(0),3132		.hw.init = &(const struct clk_init_data) {3133			.name = "gcc_ufs_phy_ice_core_clk",3134			.parent_hws = (const struct clk_hw*[]) {3135				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,3136			},3137			.num_parents = 1,3138			.flags = CLK_SET_RATE_PARENT,3139			.ops = &clk_branch2_ops,3140		},3141	},3142};3143 3144static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {3145	.halt_reg = 0x77074,3146	.halt_check = BRANCH_HALT_VOTED,3147	.hwcg_reg = 0x77074,3148	.hwcg_bit = 1,3149	.clkr = {3150		.enable_reg = 0x77074,3151		.enable_mask = BIT(1),3152		.hw.init = &(const struct clk_init_data) {3153			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",3154			.parent_hws = (const struct clk_hw*[]) {3155				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,3156			},3157			.num_parents = 1,3158			.flags = CLK_SET_RATE_PARENT,3159			.ops = &clk_branch2_ops,3160		},3161	},3162};3163 3164static struct clk_branch gcc_ufs_phy_phy_aux_clk = {3165	.halt_reg = 0x770b0,3166	.halt_check = BRANCH_HALT_VOTED,3167	.hwcg_reg = 0x770b0,3168	.hwcg_bit = 1,3169	.clkr = {3170		.enable_reg = 0x770b0,3171		.enable_mask = BIT(0),3172		.hw.init = &(const struct clk_init_data) {3173			.name = "gcc_ufs_phy_phy_aux_clk",3174			.parent_hws = (const struct clk_hw*[]) {3175				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,3176			},3177			.num_parents = 1,3178			.flags = CLK_SET_RATE_PARENT,3179			.ops = &clk_branch2_ops,3180		},3181	},3182};3183 3184static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {3185	.halt_reg = 0x770b0,3186	.halt_check = BRANCH_HALT_VOTED,3187	.hwcg_reg = 0x770b0,3188	.hwcg_bit = 1,3189	.clkr = {3190		.enable_reg = 0x770b0,3191		.enable_mask = BIT(1),3192		.hw.init = &(const struct clk_init_data) {3193			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",3194			.parent_hws = (const struct clk_hw*[]) {3195				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,3196			},3197			.num_parents = 1,3198			.flags = CLK_SET_RATE_PARENT,3199			.ops = &clk_branch2_ops,3200		},3201	},3202};3203 3204static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {3205	.halt_reg = 0x7702c,3206	.halt_check = BRANCH_HALT_DELAY,3207	.clkr = {3208		.enable_reg = 0x7702c,3209		.enable_mask = BIT(0),3210		.hw.init = &(const struct clk_init_data) {3211			.name = "gcc_ufs_phy_rx_symbol_0_clk",3212			.parent_hws = (const struct clk_hw*[]) {3213				&gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,3214			},3215			.num_parents = 1,3216			.flags = CLK_SET_RATE_PARENT,3217			.ops = &clk_branch2_ops,3218		},3219	},3220};3221 3222static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {3223	.halt_reg = 0x770cc,3224	.halt_check = BRANCH_HALT_DELAY,3225	.clkr = {3226		.enable_reg = 0x770cc,3227		.enable_mask = BIT(0),3228		.hw.init = &(const struct clk_init_data) {3229			.name = "gcc_ufs_phy_rx_symbol_1_clk",3230			.parent_hws = (const struct clk_hw*[]) {3231				&gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,3232			},3233			.num_parents = 1,3234			.flags = CLK_SET_RATE_PARENT,3235			.ops = &clk_branch2_ops,3236		},3237	},3238};3239 3240static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {3241	.halt_reg = 0x77028,3242	.halt_check = BRANCH_HALT_DELAY,3243	.clkr = {3244		.enable_reg = 0x77028,3245		.enable_mask = BIT(0),3246		.hw.init = &(const struct clk_init_data) {3247			.name = "gcc_ufs_phy_tx_symbol_0_clk",3248			.parent_hws = (const struct clk_hw*[]) {3249				&gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,3250			},3251			.num_parents = 1,3252			.flags = CLK_SET_RATE_PARENT,3253			.ops = &clk_branch2_ops,3254		},3255	},3256};3257 3258static struct clk_branch gcc_ufs_phy_unipro_core_clk = {3259	.halt_reg = 0x77068,3260	.halt_check = BRANCH_HALT_VOTED,3261	.hwcg_reg = 0x77068,3262	.hwcg_bit = 1,3263	.clkr = {3264		.enable_reg = 0x77068,3265		.enable_mask = BIT(0),3266		.hw.init = &(const struct clk_init_data) {3267			.name = "gcc_ufs_phy_unipro_core_clk",3268			.parent_hws = (const struct clk_hw*[]) {3269				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,3270			},3271			.num_parents = 1,3272			.flags = CLK_SET_RATE_PARENT,3273			.ops = &clk_branch2_ops,3274		},3275	},3276};3277 3278static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {3279	.halt_reg = 0x77068,3280	.halt_check = BRANCH_HALT_VOTED,3281	.hwcg_reg = 0x77068,3282	.hwcg_bit = 1,3283	.clkr = {3284		.enable_reg = 0x77068,3285		.enable_mask = BIT(1),3286		.hw.init = &(const struct clk_init_data) {3287			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",3288			.parent_hws = (const struct clk_hw*[]) {3289				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,3290			},3291			.num_parents = 1,3292			.flags = CLK_SET_RATE_PARENT,3293			.ops = &clk_branch2_ops,3294		},3295	},3296};3297 3298static struct clk_branch gcc_usb30_prim_master_clk = {3299	.halt_reg = 0x39018,3300	.halt_check = BRANCH_HALT,3301	.clkr = {3302		.enable_reg = 0x39018,3303		.enable_mask = BIT(0),3304		.hw.init = &(const struct clk_init_data) {3305			.name = "gcc_usb30_prim_master_clk",3306			.parent_hws = (const struct clk_hw*[]) {3307				&gcc_usb30_prim_master_clk_src.clkr.hw,3308			},3309			.num_parents = 1,3310			.flags = CLK_SET_RATE_PARENT,3311			.ops = &clk_branch2_ops,3312		},3313	},3314};3315 3316static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {3317	.halt_reg = 0x39028,3318	.halt_check = BRANCH_HALT,3319	.clkr = {3320		.enable_reg = 0x39028,3321		.enable_mask = BIT(0),3322		.hw.init = &(const struct clk_init_data) {3323			.name = "gcc_usb30_prim_mock_utmi_clk",3324			.parent_hws = (const struct clk_hw*[]) {3325				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,3326			},3327			.num_parents = 1,3328			.flags = CLK_SET_RATE_PARENT,3329			.ops = &clk_branch2_ops,3330		},3331	},3332};3333 3334static struct clk_branch gcc_usb30_prim_sleep_clk = {3335	.halt_reg = 0x39024,3336	.halt_check = BRANCH_HALT,3337	.clkr = {3338		.enable_reg = 0x39024,3339		.enable_mask = BIT(0),3340		.hw.init = &(const struct clk_init_data) {3341			.name = "gcc_usb30_prim_sleep_clk",3342			.ops = &clk_branch2_ops,3343		},3344	},3345};3346 3347static struct clk_branch gcc_usb3_prim_phy_aux_clk = {3348	.halt_reg = 0x39060,3349	.halt_check = BRANCH_HALT,3350	.clkr = {3351		.enable_reg = 0x39060,3352		.enable_mask = BIT(0),3353		.hw.init = &(const struct clk_init_data) {3354			.name = "gcc_usb3_prim_phy_aux_clk",3355			.parent_hws = (const struct clk_hw*[]) {3356				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3357			},3358			.num_parents = 1,3359			.flags = CLK_SET_RATE_PARENT,3360			.ops = &clk_branch2_ops,3361		},3362	},3363};3364 3365static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {3366	.halt_reg = 0x39064,3367	.halt_check = BRANCH_HALT,3368	.clkr = {3369		.enable_reg = 0x39064,3370		.enable_mask = BIT(0),3371		.hw.init = &(const struct clk_init_data) {3372			.name = "gcc_usb3_prim_phy_com_aux_clk",3373			.parent_hws = (const struct clk_hw*[]) {3374				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,3375			},3376			.num_parents = 1,3377			.flags = CLK_SET_RATE_PARENT,3378			.ops = &clk_branch2_ops,3379		},3380	},3381};3382 3383static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {3384	.halt_reg = 0x39068,3385	.halt_check = BRANCH_HALT_DELAY,3386	.hwcg_reg = 0x39068,3387	.hwcg_bit = 1,3388	.clkr = {3389		.enable_reg = 0x39068,3390		.enable_mask = BIT(0),3391		.hw.init = &(const struct clk_init_data) {3392			.name = "gcc_usb3_prim_phy_pipe_clk",3393			.parent_hws = (const struct clk_hw*[]) {3394				&gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,3395			},3396			.num_parents = 1,3397			.flags = CLK_SET_RATE_PARENT,3398			.ops = &clk_branch2_ops,3399		},3400	},3401};3402 3403static struct clk_branch gcc_video_axi0_clk = {3404	.halt_reg = 0x32018,3405	.halt_check = BRANCH_HALT_SKIP,3406	.hwcg_reg = 0x32018,3407	.hwcg_bit = 1,3408	.clkr = {3409		.enable_reg = 0x32018,3410		.enable_mask = BIT(0),3411		.hw.init = &(const struct clk_init_data) {3412			.name = "gcc_video_axi0_clk",3413			.ops = &clk_branch2_ops,3414		},3415	},3416};3417 3418static struct clk_branch gcc_video_axi1_clk = {3419	.halt_reg = 0x32024,3420	.halt_check = BRANCH_HALT_SKIP,3421	.hwcg_reg = 0x32024,3422	.hwcg_bit = 1,3423	.clkr = {3424		.enable_reg = 0x32024,3425		.enable_mask = BIT(0),3426		.hw.init = &(const struct clk_init_data) {3427			.name = "gcc_video_axi1_clk",3428			.ops = &clk_branch2_ops,3429		},3430	},3431};3432 3433static struct gdsc pcie_0_gdsc = {3434	.gdscr = 0x6b004,3435	.collapse_ctrl = 0x5214c,3436	.collapse_mask = BIT(0),3437	.pd = {3438		.name = "pcie_0_gdsc",3439	},3440	.pwrsts = PWRSTS_OFF_ON,3441	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,3442};3443 3444static struct gdsc pcie_0_phy_gdsc = {3445	.gdscr = 0x6c000,3446	.collapse_ctrl = 0x5214c,3447	.collapse_mask = BIT(3),3448	.pd = {3449		.name = "pcie_0_phy_gdsc",3450	},3451	.pwrsts = PWRSTS_OFF_ON,3452	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,3453};3454 3455static struct gdsc pcie_1_gdsc = {3456	.gdscr = 0x8d004,3457	.collapse_ctrl = 0x5214c,3458	.collapse_mask = BIT(1),3459	.pd = {3460		.name = "pcie_1_gdsc",3461	},3462	.pwrsts = PWRSTS_OFF_ON,3463	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,3464};3465 3466static struct gdsc pcie_1_phy_gdsc = {3467	.gdscr = 0x8e000,3468	.collapse_ctrl = 0x5214c,3469	.collapse_mask = BIT(4),3470	.pd = {3471		.name = "pcie_1_phy_gdsc",3472	},3473	.pwrsts = PWRSTS_OFF_ON,3474	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,3475};3476 3477static struct gdsc ufs_phy_gdsc = {3478	.gdscr = 0x77004,3479	.pd = {3480		.name = "ufs_phy_gdsc",3481	},3482	.pwrsts = PWRSTS_OFF_ON,3483	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3484};3485 3486static struct gdsc ufs_mem_phy_gdsc = {3487	.gdscr = 0x9e000,3488	.pd = {3489		.name = "ufs_mem_phy_gdsc",3490	},3491	.pwrsts = PWRSTS_OFF_ON,3492	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3493};3494 3495static struct gdsc usb30_prim_gdsc = {3496	.gdscr = 0x39004,3497	.pd = {3498		.name = "usb30_prim_gdsc",3499	},3500	.pwrsts = PWRSTS_OFF_ON,3501	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3502};3503 3504static struct gdsc usb3_phy_gdsc = {3505	.gdscr = 0x50018,3506	.pd = {3507		.name = "usb3_phy_gdsc",3508	},3509	.pwrsts = PWRSTS_OFF_ON,3510	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3511};3512 3513static struct clk_regmap *gcc_sm8650_clocks[] = {3514	[GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr,3515	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,3516	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,3517	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,3518	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3519	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,3520	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,3521	[GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,3522	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3523	[GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr,3524	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,3525	[GCC_DDRSS_PCIE_SF_QTB_CLK] = &gcc_ddrss_pcie_sf_qtb_clk.clkr,3526	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,3527	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3528	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3529	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3530	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3531	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3532	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3533	[GCC_GPLL0] = &gcc_gpll0.clkr,3534	[GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,3535	[GCC_GPLL1] = &gcc_gpll1.clkr,3536	[GCC_GPLL3] = &gcc_gpll3.clkr,3537	[GCC_GPLL4] = &gcc_gpll4.clkr,3538	[GCC_GPLL6] = &gcc_gpll6.clkr,3539	[GCC_GPLL7] = &gcc_gpll7.clkr,3540	[GCC_GPLL9] = &gcc_gpll9.clkr,3541	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3542	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3543	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3544	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3545	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,3546	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,3547	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,3548	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,3549	[GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,3550	[GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,3551	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,3552	[GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,3553	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,3554	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,3555	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,3556	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,3557	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,3558	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,3559	[GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,3560	[GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,3561	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,3562	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,3563	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,3564	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,3565	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,3566	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,3567	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3568	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3569	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3570	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3571	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,3572	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,3573	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3574	[GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,3575	[GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr,3576	[GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,3577	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,3578	[GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,3579	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,3580	[GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr,3581	[GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr,3582	[GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr,3583	[GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr,3584	[GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr,3585	[GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr,3586	[GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr,3587	[GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr,3588	[GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr,3589	[GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr,3590	[GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr,3591	[GCC_QUPV3_I2C_S5_CLK] = &gcc_qupv3_i2c_s5_clk.clkr,3592	[GCC_QUPV3_I2C_S5_CLK_SRC] = &gcc_qupv3_i2c_s5_clk_src.clkr,3593	[GCC_QUPV3_I2C_S6_CLK] = &gcc_qupv3_i2c_s6_clk.clkr,3594	[GCC_QUPV3_I2C_S6_CLK_SRC] = &gcc_qupv3_i2c_s6_clk_src.clkr,3595	[GCC_QUPV3_I2C_S7_CLK] = &gcc_qupv3_i2c_s7_clk.clkr,3596	[GCC_QUPV3_I2C_S7_CLK_SRC] = &gcc_qupv3_i2c_s7_clk_src.clkr,3597	[GCC_QUPV3_I2C_S8_CLK] = &gcc_qupv3_i2c_s8_clk.clkr,3598	[GCC_QUPV3_I2C_S8_CLK_SRC] = &gcc_qupv3_i2c_s8_clk_src.clkr,3599	[GCC_QUPV3_I2C_S9_CLK] = &gcc_qupv3_i2c_s9_clk.clkr,3600	[GCC_QUPV3_I2C_S9_CLK_SRC] = &gcc_qupv3_i2c_s9_clk_src.clkr,3601	[GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr,3602	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,3603	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,3604	[GCC_QUPV3_WRAP1_QSPI_REF_CLK] = &gcc_qupv3_wrap1_qspi_ref_clk.clkr,3605	[GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr,3606	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,3607	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,3608	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,3609	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,3610	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,3611	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,3612	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,3613	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,3614	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,3615	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,3616	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,3617	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,3618	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,3619	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,3620	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,3621	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,3622	[GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,3623	[GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,3624	[GCC_QUPV3_WRAP2_IBI_CTRL_0_CLK_SRC] = &gcc_qupv3_wrap2_ibi_ctrl_0_clk_src.clkr,3625	[GCC_QUPV3_WRAP2_IBI_CTRL_2_CLK] = &gcc_qupv3_wrap2_ibi_ctrl_2_clk.clkr,3626	[GCC_QUPV3_WRAP2_IBI_CTRL_3_CLK] = &gcc_qupv3_wrap2_ibi_ctrl_3_clk.clkr,3627	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,3628	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,3629	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,3630	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,3631	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,3632	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,3633	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,3634	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,3635	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,3636	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,3637	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,3638	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,3639	[GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,3640	[GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,3641	[GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,3642	[GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,3643	[GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,3644	[GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,3645	[GCC_QUPV3_WRAP3_QSPI_REF_CLK] = &gcc_qupv3_wrap3_qspi_ref_clk.clkr,3646	[GCC_QUPV3_WRAP3_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr,3647	[GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,3648	[GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,3649	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,3650	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,3651	[GCC_QUPV3_WRAP_2_IBI_2_AHB_CLK] = &gcc_qupv3_wrap_2_ibi_2_ahb_clk.clkr,3652	[GCC_QUPV3_WRAP_2_IBI_3_AHB_CLK] = &gcc_qupv3_wrap_2_ibi_3_ahb_clk.clkr,3653	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,3654	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,3655	[GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,3656	[GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,3657	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,3658	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,3659	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,3660	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,3661	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,3662	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,3663	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,3664	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,3665	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,3666	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,3667	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,3668	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,3669	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,3670	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,3671	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,3672	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,3673	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,3674	[GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,3675	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,3676	[GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,3677	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,3678	[GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,3679	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,3680	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,3681	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,3682	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,3683	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,3684	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,3685	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,3686	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,3687	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,3688	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,3689	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,3690	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,3691	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,3692	[GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,3693	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,3694	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,3695	[GCC_GPLL0_AO] = &gcc_gpll0_ao.clkr,3696	[GCC_GPLL0_OUT_EVEN_AO] = &gcc_gpll0_out_even_ao.clkr,3697	[GCC_GPLL1_AO] = &gcc_gpll1_ao.clkr,3698	[GCC_GPLL3_AO] = &gcc_gpll3_ao.clkr,3699	[GCC_GPLL4_AO] = &gcc_gpll4_ao.clkr,3700	[GCC_GPLL6_AO] = &gcc_gpll6_ao.clkr,3701};3702 3703static const struct qcom_reset_map gcc_sm8650_resets[] = {3704	[GCC_CAMERA_BCR] = { 0x26000 },3705	[GCC_DISPLAY_BCR] = { 0x27000 },3706	[GCC_GPU_BCR] = { 0x71000 },3707	[GCC_PCIE_0_BCR] = { 0x6b000 },3708	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },3709	[GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },3710	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },3711	[GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },3712	[GCC_PCIE_1_BCR] = { 0x8d000 },3713	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },3714	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },3715	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },3716	[GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },3717	[GCC_PCIE_PHY_BCR] = { 0x6f000 },3718	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },3719	[GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },3720	[GCC_PDM_BCR] = { 0x33000 },3721	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },3722	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },3723	[GCC_QUPV3_WRAPPER_3_BCR] = { 0x19000 },3724	[GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 },3725	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },3726	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },3727	[GCC_SDCC2_BCR] = { 0x14000 },3728	[GCC_SDCC4_BCR] = { 0x16000 },3729	[GCC_UFS_PHY_BCR] = { 0x77000 },3730	[GCC_USB30_PRIM_BCR] = { 0x39000 },3731	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },3732	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },3733	[GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },3734	[GCC_USB3_PHY_SEC_BCR] = { 0x5000c },3735	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },3736	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },3737	[GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x32018, .bit = 2, .udelay = 1000 },3738	[GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x32024, .bit = 2, .udelay = 1000 },3739	[GCC_VIDEO_BCR] = { 0x32000 },3740};3741 3742static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {3743	DEFINE_RCG_DFS(gcc_qupv3_wrap1_qspi_ref_clk_src),3744	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),3745	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),3746	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),3747	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),3748	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),3749	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),3750	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),3751	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),3752	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),3753	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),3754	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),3755	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),3756	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),3757	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),3758	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),3759	DEFINE_RCG_DFS(gcc_qupv3_wrap3_qspi_ref_clk_src),3760};3761 3762static struct gdsc *gcc_sm8650_gdscs[] = {3763	[PCIE_0_GDSC] = &pcie_0_gdsc,3764	[PCIE_0_PHY_GDSC] = &pcie_0_phy_gdsc,3765	[PCIE_1_GDSC] = &pcie_1_gdsc,3766	[PCIE_1_PHY_GDSC] = &pcie_1_phy_gdsc,3767	[UFS_PHY_GDSC] = &ufs_phy_gdsc,3768	[UFS_MEM_PHY_GDSC] = &ufs_mem_phy_gdsc,3769	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,3770	[USB3_PHY_GDSC] = &usb3_phy_gdsc,3771};3772 3773static const struct regmap_config gcc_sm8650_regmap_config = {3774	.reg_bits = 32,3775	.reg_stride = 4,3776	.val_bits = 32,3777	.max_register = 0x1f41f0,3778	.fast_io = true,3779};3780 3781static const struct qcom_cc_desc gcc_sm8650_desc = {3782	.config = &gcc_sm8650_regmap_config,3783	.clks = gcc_sm8650_clocks,3784	.num_clks = ARRAY_SIZE(gcc_sm8650_clocks),3785	.resets = gcc_sm8650_resets,3786	.num_resets = ARRAY_SIZE(gcc_sm8650_resets),3787	.gdscs = gcc_sm8650_gdscs,3788	.num_gdscs = ARRAY_SIZE(gcc_sm8650_gdscs),3789};3790 3791static const struct of_device_id gcc_sm8650_match_table[] = {3792	{ .compatible = "qcom,sm8650-gcc" },3793	{ }3794};3795MODULE_DEVICE_TABLE(of, gcc_sm8650_match_table);3796 3797static int gcc_sm8650_probe(struct platform_device *pdev)3798{3799	struct regmap *regmap;3800	int ret;3801 3802	regmap = qcom_cc_map(pdev, &gcc_sm8650_desc);3803	if (IS_ERR(regmap))3804		return PTR_ERR(regmap);3805 3806	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,3807				       ARRAY_SIZE(gcc_dfs_clocks));3808	if (ret)3809		return ret;3810 3811	/* Keep some clocks always-on */3812	qcom_branch_set_clk_en(regmap, 0x26004); /* GCC_CAMERA_AHB_CLK */3813	qcom_branch_set_clk_en(regmap, 0x26028); /* GCC_CAMERA_XO_CLK */3814	qcom_branch_set_clk_en(regmap, 0x27004); /* GCC_DISP_AHB_CLK */3815	qcom_branch_set_clk_en(regmap, 0x27018); /* GCC_DISP_XO_CLK */3816	qcom_branch_set_clk_en(regmap, 0x71004); /* GCC_GPU_CFG_AHB_CLK */3817	qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_VIDEO_AHB_CLK */3818	qcom_branch_set_clk_en(regmap, 0x32030); /* GCC_VIDEO_XO_CLK */3819 3820	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);3821 3822	/* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */3823	regmap_write(regmap, 0x52150, 0x0);3824 3825	return qcom_cc_really_probe(&pdev->dev, &gcc_sm8650_desc, regmap);3826}3827 3828static struct platform_driver gcc_sm8650_driver = {3829	.probe = gcc_sm8650_probe,3830	.driver = {3831		.name = "gcc-sm8650",3832		.of_match_table = gcc_sm8650_match_table,3833	},3834};3835 3836static int __init gcc_sm8650_init(void)3837{3838	return platform_driver_register(&gcc_sm8650_driver);3839}3840subsys_initcall(gcc_sm8650_init);3841 3842static void __exit gcc_sm8650_exit(void)3843{3844	platform_driver_unregister(&gcc_sm8650_driver);3845}3846module_exit(gcc_sm8650_exit);3847 3848MODULE_DESCRIPTION("QTI GCC SM8650 Driver");3849MODULE_LICENSE("GPL");3850