brintos

brintos / linux-shallow public Read only

0
0
Text · 93.7 KiB · 70f5dcb Raw
3726 lines · c
1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2/*3 * Copyright (c) 2023, The Linux Foundation. All rights reserved.4 */5#include <linux/clk-provider.h>6#include <linux/mod_devicetable.h>7#include <linux/module.h>8#include <linux/platform_device.h>9#include <linux/regmap.h>10 11#include <dt-bindings/clock/qcom,gcc-ipq5018.h>12#include <dt-bindings/reset/qcom,gcc-ipq5018.h>13 14#include "clk-alpha-pll.h"15#include "clk-branch.h"16#include "clk-rcg.h"17#include "clk-regmap.h"18#include "clk-regmap-divider.h"19#include "clk-regmap-mux.h"20#include "clk-regmap-phy-mux.h"21#include "reset.h"22 23/* Need to match the order of clocks in DT binding */24enum {25	DT_XO,26	DT_SLEEP_CLK,27	DT_PCIE20_PHY0_PIPE_CLK,28	DT_PCIE20_PHY1_PIPE_CLK,29	DT_USB3_PHY0_CC_PIPE_CLK,30	DT_GEPHY_RX_CLK,31	DT_GEPHY_TX_CLK,32	DT_UNIPHY_RX_CLK,33	DT_UNIPHY_TX_CLK,34};35 36enum {37	P_XO,38	P_CORE_PI_SLEEP_CLK,39	P_PCIE20_PHY0_PIPE,40	P_PCIE20_PHY1_PIPE,41	P_USB3PHY_0_PIPE,42	P_GEPHY_RX,43	P_GEPHY_TX,44	P_UNIPHY_RX,45	P_UNIPHY_TX,46	P_GPLL0,47	P_GPLL0_DIV2,48	P_GPLL2,49	P_GPLL4,50	P_UBI32_PLL,51};52 53static const struct clk_parent_data gcc_xo_data[] = {54	{ .index = DT_XO },55};56 57static const struct clk_parent_data gcc_sleep_clk_data[] = {58	{ .index = DT_SLEEP_CLK },59};60 61static struct clk_alpha_pll gpll0_main = {62	.offset = 0x21000,63	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],64	.clkr = {65		.enable_reg = 0x0b000,66		.enable_mask = BIT(0),67		.hw.init = &(struct clk_init_data) {68			.name = "gpll0_main",69			.parent_data = gcc_xo_data,70			.num_parents = ARRAY_SIZE(gcc_xo_data),71			.ops = &clk_alpha_pll_stromer_ops,72		},73	},74};75 76static struct clk_alpha_pll gpll2_main = {77	.offset = 0x4a000,78	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],79	.clkr = {80		.enable_reg = 0x0b000,81		.enable_mask = BIT(2),82		.hw.init = &(struct clk_init_data) {83			.name = "gpll2_main",84			.parent_data = gcc_xo_data,85			.num_parents = ARRAY_SIZE(gcc_xo_data),86			.ops = &clk_alpha_pll_stromer_ops,87		},88	},89};90 91static struct clk_alpha_pll gpll4_main = {92	.offset = 0x24000,93	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],94	.clkr = {95		.enable_reg = 0x0b000,96		.enable_mask = BIT(5),97		.hw.init = &(struct clk_init_data) {98			.name = "gpll4_main",99			.parent_data = gcc_xo_data,100			.num_parents = ARRAY_SIZE(gcc_xo_data),101			.ops = &clk_alpha_pll_stromer_ops,102		},103	},104};105 106static struct clk_alpha_pll ubi32_pll_main = {107	.offset = 0x25000,108	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],109	.clkr = {110		.enable_reg = 0x0b000,111		.enable_mask = BIT(6),112		.hw.init = &(struct clk_init_data) {113			.name = "ubi32_pll_main",114			.parent_data = gcc_xo_data,115			.num_parents = ARRAY_SIZE(gcc_xo_data),116			.ops = &clk_alpha_pll_stromer_ops,117		},118	},119};120 121static struct clk_alpha_pll_postdiv gpll0 = {122	.offset = 0x21000,123	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],124	.width = 4,125	.clkr.hw.init = &(struct clk_init_data) {126		.name = "gpll0",127		.parent_hws = (const struct clk_hw *[]) {128			&gpll0_main.clkr.hw,129		},130		.num_parents = 1,131		.ops = &clk_alpha_pll_postdiv_ro_ops,132	},133};134 135static struct clk_alpha_pll_postdiv gpll2 = {136	.offset = 0x4a000,137	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],138	.width = 4,139	.clkr.hw.init = &(struct clk_init_data) {140		.name = "gpll2",141		.parent_hws = (const struct clk_hw *[]) {142			&gpll2_main.clkr.hw,143		},144		.num_parents = 1,145		.ops = &clk_alpha_pll_postdiv_ro_ops,146	},147};148 149static struct clk_alpha_pll_postdiv gpll4 = {150	.offset = 0x24000,151	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],152	.width = 4,153	.clkr.hw.init = &(struct clk_init_data) {154		.name = "gpll4",155		.parent_hws = (const struct clk_hw *[]) {156			&gpll4_main.clkr.hw,157		},158		.num_parents = 1,159		.ops = &clk_alpha_pll_postdiv_ro_ops,160	},161};162 163static struct clk_alpha_pll_postdiv ubi32_pll = {164	.offset = 0x25000,165	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],166	.width = 4,167	.clkr.hw.init = &(struct clk_init_data) {168		.name = "ubi32_pll",169		.parent_hws = (const struct clk_hw *[]) {170			&ubi32_pll_main.clkr.hw,171		},172		.num_parents = 1,173		.ops = &clk_alpha_pll_postdiv_ro_ops,174		.flags = CLK_SET_RATE_PARENT,175	},176};177 178static struct clk_fixed_factor gpll0_out_main_div2 = {179	.mult = 1,180	.div = 2,181	.hw.init = &(struct clk_init_data) {182		.name = "gpll0_out_main_div2",183		.parent_hws = (const struct clk_hw *[]) {184			&gpll0_main.clkr.hw,185		},186		.num_parents = 1,187		.ops = &clk_fixed_factor_ops,188		.flags = CLK_SET_RATE_PARENT,189	},190};191 192static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {193	{ .index = DT_XO },194	{ .hw = &gpll0.clkr.hw },195	{ .hw = &gpll0_out_main_div2.hw },196};197 198static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {199	{ P_XO, 0 },200	{ P_GPLL0, 1 },201	{ P_GPLL0_DIV2, 4 },202};203 204static const struct clk_parent_data gcc_xo_gpll0[] = {205	{ .index = DT_XO },206	{ .hw = &gpll0.clkr.hw },207};208 209static const struct parent_map gcc_xo_gpll0_map[] = {210	{ P_XO, 0 },211	{ P_GPLL0, 1 },212};213 214static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {215	{ .index = DT_XO },216	{ .hw = &gpll0_out_main_div2.hw },217	{ .hw = &gpll0.clkr.hw },218};219 220static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {221	{ P_XO, 0 },222	{ P_GPLL0_DIV2, 2 },223	{ P_GPLL0, 1 },224};225 226static const struct clk_parent_data gcc_xo_ubi32_gpll0[] = {227	{ .index = DT_XO },228	{ .hw = &ubi32_pll.clkr.hw },229	{ .hw = &gpll0.clkr.hw },230};231 232static const struct parent_map gcc_xo_ubi32_gpll0_map[] = {233	{ P_XO, 0 },234	{ P_UBI32_PLL, 1 },235	{ P_GPLL0, 2 },236};237 238static const struct clk_parent_data gcc_xo_gpll0_gpll2[] = {239	{ .index = DT_XO },240	{ .hw = &gpll0.clkr.hw },241	{ .hw = &gpll2.clkr.hw },242};243 244static const struct parent_map gcc_xo_gpll0_gpll2_map[] = {245	{ P_XO, 0 },246	{ P_GPLL0, 1 },247	{ P_GPLL2, 2 },248};249 250static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4[] = {251	{ .index = DT_XO },252	{ .hw = &gpll0.clkr.hw },253	{ .hw = &gpll2.clkr.hw },254	{ .hw = &gpll4.clkr.hw },255};256 257static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_map[] = {258	{ P_XO, 0 },259	{ P_GPLL0, 1 },260	{ P_GPLL2, 2 },261	{ P_GPLL4, 3 },262};263 264static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {265	{ .index = DT_XO },266	{ .hw = &gpll0.clkr.hw },267	{ .hw = &gpll4.clkr.hw },268};269 270static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {271	{ P_XO, 0 },272	{ P_GPLL0, 1 },273	{ P_GPLL4, 2 },274};275 276static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {277	{ .index = DT_XO },278	{ .hw = &gpll0.clkr.hw },279	{ .index = DT_SLEEP_CLK },280};281 282static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {283	{ P_XO, 0 },284	{ P_GPLL0, 2 },285	{ P_CORE_PI_SLEEP_CLK, 6 },286};287 288static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk[] = {289	{ .index = DT_XO },290	{ .hw = &gpll0.clkr.hw },291	{ .hw = &gpll0_out_main_div2.hw },292	{ .index = DT_SLEEP_CLK },293};294 295static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map[] = {296	{ P_XO, 0 },297	{ P_GPLL0, 1 },298	{ P_GPLL0_DIV2, 4 },299	{ P_CORE_PI_SLEEP_CLK, 6 },300};301 302static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {303	{ .index = DT_XO },304	{ .hw = &gpll0.clkr.hw },305	{ .hw = &gpll2.clkr.hw },306	{ .hw = &gpll0_out_main_div2.hw },307};308 309static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {310	{ P_XO, 0 },311	{ P_GPLL0, 1 },312	{ P_GPLL2, 2 },313	{ P_GPLL0_DIV2, 4 },314};315 316static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_out_main_div2[] = {317	{ .index = DT_XO },318	{ .hw = &gpll4.clkr.hw },319	{ .hw = &gpll0.clkr.hw },320	{ .hw = &gpll0_out_main_div2.hw },321};322 323static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1[] = {324	{ P_XO, 0 },325	{ P_GPLL4, 1 },326	{ P_GPLL0, 2 },327	{ P_GPLL0_DIV2, 4 },328};329 330static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map2[] = {331	{ P_XO, 0 },332	{ P_GPLL4, 1 },333	{ P_GPLL0, 3 },334	{ P_GPLL0_DIV2, 4 },335};336 337static const struct clk_parent_data gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0[] = {338	{ .index = DT_XO },339	{ .index = DT_GEPHY_RX_CLK },340	{ .index = DT_GEPHY_TX_CLK },341	{ .hw = &ubi32_pll.clkr.hw },342	{ .hw = &gpll0.clkr.hw },343};344 345static const struct parent_map gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0_map[] = {346	{ P_XO, 0 },347	{ P_GEPHY_RX, 1 },348	{ P_GEPHY_TX, 2 },349	{ P_UBI32_PLL, 3 },350	{ P_GPLL0, 4 },351};352 353static const struct clk_parent_data gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0[] = {354	{ .index = DT_XO },355	{ .index = DT_GEPHY_TX_CLK },356	{ .index = DT_GEPHY_RX_CLK },357	{ .hw = &ubi32_pll.clkr.hw },358	{ .hw = &gpll0.clkr.hw },359};360 361static const struct parent_map gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0_map[] = {362	{ P_XO, 0 },363	{ P_GEPHY_TX, 1 },364	{ P_GEPHY_RX, 2 },365	{ P_UBI32_PLL, 3 },366	{ P_GPLL0, 4 },367};368 369static const struct clk_parent_data gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0[] = {370	{ .index = DT_XO },371	{ .index = DT_UNIPHY_RX_CLK },372	{ .index = DT_UNIPHY_TX_CLK },373	{ .hw = &ubi32_pll.clkr.hw },374	{ .hw = &gpll0.clkr.hw },375};376 377static const struct parent_map gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0_map[] = {378	{ P_XO, 0 },379	{ P_UNIPHY_RX, 1 },380	{ P_UNIPHY_TX, 2 },381	{ P_UBI32_PLL, 3 },382	{ P_GPLL0, 4 },383};384 385static const struct clk_parent_data gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0[] = {386	{ .index = DT_XO },387	{ .index = DT_UNIPHY_TX_CLK },388	{ .index = DT_UNIPHY_RX_CLK },389	{ .hw = &ubi32_pll.clkr.hw },390	{ .hw = &gpll0.clkr.hw },391};392 393static const struct parent_map gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0_map[] = {394	{ P_XO, 0 },395	{ P_UNIPHY_TX, 1 },396	{ P_UNIPHY_RX, 2 },397	{ P_UBI32_PLL, 3 },398	{ P_GPLL0, 4 },399};400 401static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {402	{ .index = DT_PCIE20_PHY0_PIPE_CLK },403	{ .index = DT_XO },404};405 406static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {407	{ P_PCIE20_PHY0_PIPE, 0 },408	{ P_XO, 2 },409};410 411static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo[] = {412	{ .index = DT_PCIE20_PHY1_PIPE_CLK },413	{ .index = DT_XO },414};415 416static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {417	{ P_PCIE20_PHY1_PIPE, 0 },418	{ P_XO, 2 },419};420 421static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {422	{ .index = DT_USB3_PHY0_CC_PIPE_CLK },423	{ .index = DT_XO },424};425 426static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {427	{ P_USB3PHY_0_PIPE, 0 },428	{ P_XO, 2 },429};430 431static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {432	F(24000000, P_XO, 1, 0, 0),433	F(100000000, P_GPLL0, 8, 0, 0),434	{ }435};436 437static struct clk_rcg2 adss_pwm_clk_src = {438	.cmd_rcgr = 0x1f008,439	.freq_tbl = ftbl_adss_pwm_clk_src,440	.hid_width = 5,441	.parent_map = gcc_xo_gpll0_map,442	.clkr.hw.init = &(struct clk_init_data) {443		.name = "adss_pwm_clk_src",444		.parent_data = gcc_xo_gpll0,445		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),446		.ops = &clk_rcg2_ops,447	},448};449 450static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {451	F(50000000, P_GPLL0, 16, 0, 0),452	{ }453};454 455static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {456	.cmd_rcgr = 0x0200c,457	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,458	.hid_width = 5,459	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,460	.clkr.hw.init = &(struct clk_init_data) {461		.name = "blsp1_qup1_i2c_apps_clk_src",462		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,463		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),464		.ops = &clk_rcg2_ops,465	},466};467 468static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {469	.cmd_rcgr = 0x03000,470	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,471	.hid_width = 5,472	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,473	.clkr.hw.init = &(struct clk_init_data) {474		.name = "blsp1_qup2_i2c_apps_clk_src",475		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,476		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),477		.ops = &clk_rcg2_ops,478	},479};480 481static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {482	.cmd_rcgr = 0x04000,483	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,484	.hid_width = 5,485	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,486	.clkr.hw.init = &(struct clk_init_data) {487		.name = "blsp1_qup3_i2c_apps_clk_src",488		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,489		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),490		.ops = &clk_rcg2_ops,491	},492};493 494static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {495	F(960000, P_XO, 10, 2, 5),496	F(4800000, P_XO, 5, 0, 0),497	F(9600000, P_XO, 2, 4, 5),498	F(16000000, P_GPLL0, 10, 1, 5),499	F(24000000, P_XO, 1, 0, 0),500	F(50000000, P_GPLL0, 16, 0, 0),501	{ }502};503 504static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {505	.cmd_rcgr = 0x02024,506	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,507	.mnd_width = 8,508	.hid_width = 5,509	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,510	.clkr.hw.init = &(struct clk_init_data) {511		.name = "blsp1_qup1_spi_apps_clk_src",512		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,513		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),514		.ops = &clk_rcg2_ops,515	},516};517 518static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {519	.cmd_rcgr = 0x03014,520	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,521	.mnd_width = 8,522	.hid_width = 5,523	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,524	.clkr.hw.init = &(struct clk_init_data) {525		.name = "blsp1_qup2_spi_apps_clk_src",526		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,527		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),528		.ops = &clk_rcg2_ops,529	},530};531 532static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {533	.cmd_rcgr = 0x04014,534	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,535	.mnd_width = 8,536	.hid_width = 5,537	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,538	.clkr.hw.init = &(struct clk_init_data) {539		.name = "blsp1_qup3_spi_apps_clk_src",540		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,541		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),542		.ops = &clk_rcg2_ops,543	},544};545 546static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {547	F(3686400, P_GPLL0_DIV2, 1, 144, 15625),548	F(7372800, P_GPLL0_DIV2, 1, 288, 15625),549	F(14745600, P_GPLL0_DIV2, 1, 576, 15625),550	F(24000000, P_XO, 1, 0, 0),551	F(25000000, P_GPLL0, 16, 1, 2),552	F(40000000, P_GPLL0, 1, 1, 20),553	F(46400000, P_GPLL0, 1, 29, 500),554	F(48000000, P_GPLL0, 1, 3, 50),555	F(51200000, P_GPLL0, 1, 8, 125),556	F(56000000, P_GPLL0, 1, 7, 100),557	F(58982400, P_GPLL0, 1, 1152, 15625),558	F(60000000, P_GPLL0, 1, 3, 40),559	F(64000000, P_GPLL0, 10, 4, 5),560	{ }561};562 563static struct clk_rcg2 blsp1_uart1_apps_clk_src = {564	.cmd_rcgr = 0x02044,565	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,566	.mnd_width = 16,567	.hid_width = 5,568	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,569	.clkr.hw.init = &(struct clk_init_data) {570		.name = "blsp1_uart1_apps_clk_src",571		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,572		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),573		.ops = &clk_rcg2_ops,574	},575};576 577static struct clk_rcg2 blsp1_uart2_apps_clk_src = {578	.cmd_rcgr = 0x03034,579	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,580	.mnd_width = 16,581	.hid_width = 5,582	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,583	.clkr.hw.init = &(struct clk_init_data) {584		.name = "blsp1_uart2_apps_clk_src",585		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,586		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),587		.ops = &clk_rcg2_ops,588	},589};590 591static const struct freq_tbl ftbl_crypto_clk_src[] = {592	F(160000000, P_GPLL0, 5, 0, 0),593	{ }594};595 596static struct clk_rcg2 crypto_clk_src = {597	.cmd_rcgr = 0x16004,598	.freq_tbl = ftbl_crypto_clk_src,599	.hid_width = 5,600	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,601	.clkr.hw.init = &(struct clk_init_data) {602		.name = "crypto_clk_src",603		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,604		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),605		.ops = &clk_rcg2_ops,606	},607};608 609static const struct freq_tbl ftbl_gmac0_tx_clk_src[] = {610	F(2500000, P_GEPHY_TX, 5, 0, 0),611	F(24000000, P_XO, 1, 0, 0),612	F(25000000, P_GEPHY_TX, 5, 0, 0),613	F(125000000, P_GEPHY_TX, 1, 0, 0),614	{ }615};616 617static struct clk_rcg2 gmac0_rx_clk_src = {618	.cmd_rcgr = 0x68020,619	.parent_map = gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0_map,620	.hid_width = 5,621	.freq_tbl = ftbl_gmac0_tx_clk_src,622	.clkr.hw.init = &(struct clk_init_data) {623		.name = "gmac0_rx_clk_src",624		.parent_data = gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0,625		.num_parents = ARRAY_SIZE(gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0),626		.ops = &clk_rcg2_ops,627	},628};629 630static struct clk_regmap_div gmac0_rx_div_clk_src = {631	.reg = 0x68420,632	.shift = 0,633	.width = 4,634	.clkr = {635		.hw.init = &(struct clk_init_data) {636			.name = "gmac0_rx_div_clk_src",637			.parent_hws = (const struct clk_hw *[]) {638				&gmac0_rx_clk_src.clkr.hw,639			},640			.num_parents = 1,641			.ops = &clk_regmap_div_ops,642			.flags = CLK_SET_RATE_PARENT,643		},644	},645};646 647static struct clk_rcg2 gmac0_tx_clk_src = {648	.cmd_rcgr = 0x68028,649	.parent_map = gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0_map,650	.hid_width = 5,651	.freq_tbl = ftbl_gmac0_tx_clk_src,652	.clkr.hw.init = &(struct clk_init_data) {653		.name = "gmac0_tx_clk_src",654		.parent_data = gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0,655		.num_parents = ARRAY_SIZE(gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0),656		.ops = &clk_rcg2_ops,657	},658};659 660static struct clk_regmap_div gmac0_tx_div_clk_src = {661	.reg = 0x68424,662	.shift = 0,663	.width = 4,664	.clkr = {665		.hw.init = &(struct clk_init_data) {666			.name = "gmac0_tx_div_clk_src",667			.parent_hws = (const struct clk_hw *[]) {668				&gmac0_tx_clk_src.clkr.hw,669			},670			.num_parents = 1,671			.ops = &clk_regmap_div_ops,672			.flags = CLK_SET_RATE_PARENT,673		},674	},675};676 677static const struct freq_tbl ftbl_gmac1_rx_clk_src[] = {678	F(2500000, P_UNIPHY_RX, 12.5, 0, 0),679	F(24000000, P_XO, 1, 0, 0),680	F(25000000, P_UNIPHY_RX, 2.5, 0, 0),681	F(125000000, P_UNIPHY_RX, 2.5, 0, 0),682	F(125000000, P_UNIPHY_RX, 1, 0, 0),683	F(312500000, P_UNIPHY_RX, 1, 0, 0),684	{ }685};686 687static struct clk_rcg2 gmac1_rx_clk_src = {688	.cmd_rcgr = 0x68030,689	.parent_map = gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0_map,690	.hid_width = 5,691	.freq_tbl = ftbl_gmac1_rx_clk_src,692	.clkr.hw.init = &(struct clk_init_data) {693		.name = "gmac1_rx_clk_src",694		.parent_data = gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0,695		.num_parents = ARRAY_SIZE(gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0),696		.ops = &clk_rcg2_ops,697	},698};699 700static struct clk_regmap_div gmac1_rx_div_clk_src = {701	.reg = 0x68430,702	.shift = 0,703	.width = 4,704	.clkr = {705		.hw.init = &(struct clk_init_data) {706			.name = "gmac1_rx_div_clk_src",707			.parent_hws = (const struct clk_hw *[]) {708				&gmac1_rx_clk_src.clkr.hw,709			},710			.num_parents = 1,711			.ops = &clk_regmap_div_ops,712			.flags = CLK_SET_RATE_PARENT,713		},714	},715};716 717static const struct freq_tbl ftbl_gmac1_tx_clk_src[] = {718	F(2500000, P_UNIPHY_TX, 12.5, 0, 0),719	F(24000000, P_XO, 1, 0, 0),720	F(25000000, P_UNIPHY_TX, 2.5, 0, 0),721	F(125000000, P_UNIPHY_TX, 2.5, 0, 0),722	F(125000000, P_UNIPHY_TX, 1, 0, 0),723	F(312500000, P_UNIPHY_TX, 1, 0, 0),724	{ }725};726 727static struct clk_rcg2 gmac1_tx_clk_src = {728	.cmd_rcgr = 0x68038,729	.parent_map = gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0_map,730	.hid_width = 5,731	.freq_tbl = ftbl_gmac1_tx_clk_src,732	.clkr.hw.init = &(struct clk_init_data) {733		.name = "gmac1_tx_clk_src",734		.parent_data = gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0,735		.num_parents = ARRAY_SIZE(gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0),736		.ops = &clk_rcg2_ops,737	},738};739 740static struct clk_regmap_div gmac1_tx_div_clk_src = {741	.reg = 0x68434,742	.shift = 0,743	.width = 4,744	.clkr = {745		.hw.init = &(struct clk_init_data) {746			.name = "gmac1_tx_div_clk_src",747			.parent_hws = (const struct clk_hw *[]) {748				&gmac1_tx_clk_src.clkr.hw,749			},750			.num_parents = 1,751			.ops = &clk_regmap_div_ops,752			.flags = CLK_SET_RATE_PARENT,753		},754	},755};756 757static const struct freq_tbl ftbl_gmac_clk_src[] = {758	F(240000000, P_GPLL4, 5, 0, 0),759	{ }760};761 762static struct clk_rcg2 gmac_clk_src = {763	.cmd_rcgr = 0x68080,764	.parent_map = gcc_xo_gpll0_gpll4_map,765	.hid_width = 5,766	.freq_tbl = ftbl_gmac_clk_src,767	.clkr.hw.init = &(struct clk_init_data) {768		.name = "gmac_clk_src",769		.parent_data = gcc_xo_gpll0_gpll4,770		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),771		.ops = &clk_rcg2_ops,772	},773};774 775static const struct freq_tbl ftbl_gp_clk_src[] = {776	F(200000000, P_GPLL0, 4, 0, 0),777	{ }778};779 780static struct clk_rcg2 gp1_clk_src = {781	.cmd_rcgr = 0x08004,782	.freq_tbl = ftbl_gp_clk_src,783	.mnd_width = 8,784	.hid_width = 5,785	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map,786	.clkr.hw.init = &(struct clk_init_data) {787		.name = "gp1_clk_src",788		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk,789		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk),790		.ops = &clk_rcg2_ops,791	},792};793 794static struct clk_rcg2 gp2_clk_src = {795	.cmd_rcgr = 0x09004,796	.freq_tbl = ftbl_gp_clk_src,797	.mnd_width = 8,798	.hid_width = 5,799	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map,800	.clkr.hw.init = &(struct clk_init_data) {801		.name = "gp2_clk_src",802		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk,803		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk),804		.ops = &clk_rcg2_ops,805	},806};807 808static struct clk_rcg2 gp3_clk_src = {809	.cmd_rcgr = 0x0a004,810	.freq_tbl = ftbl_gp_clk_src,811	.mnd_width = 8,812	.hid_width = 5,813	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map,814	.clkr.hw.init = &(struct clk_init_data) {815		.name = "gp3_clk_src",816		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk,817		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk),818		.ops = &clk_rcg2_ops,819	},820};821 822static const struct freq_tbl ftbl_lpass_axim_clk_src[] = {823	F(133333334, P_GPLL0, 6, 0, 0),824	{ }825};826 827static struct clk_rcg2 lpass_axim_clk_src = {828	.cmd_rcgr = 0x2e028,829	.freq_tbl = ftbl_lpass_axim_clk_src,830	.hid_width = 5,831	.parent_map = gcc_xo_gpll0_map,832	.clkr.hw.init = &(struct clk_init_data) {833		.name = "lpass_axim_clk_src",834		.parent_data = gcc_xo_gpll0,835		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),836		.ops = &clk_rcg2_ops,837	},838};839 840static const struct freq_tbl ftbl_lpass_sway_clk_src[] = {841	F(66666667, P_GPLL0, 12, 0, 0),842	{ }843};844 845static struct clk_rcg2 lpass_sway_clk_src = {846	.cmd_rcgr = 0x2e040,847	.freq_tbl = ftbl_lpass_sway_clk_src,848	.hid_width = 5,849	.parent_map = gcc_xo_gpll0_map,850	.clkr.hw.init = &(struct clk_init_data) {851		.name = "lpass_sway_clk_src",852		.parent_data = gcc_xo_gpll0,853		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),854		.ops = &clk_rcg2_ops,855	},856};857 858static const struct freq_tbl ftbl_pcie0_aux_clk_src[] = {859	F(2000000, P_XO, 12, 0, 0),860	{ }861};862 863static struct clk_rcg2 pcie0_aux_clk_src = {864	.cmd_rcgr = 0x75020,865	.freq_tbl = ftbl_pcie0_aux_clk_src,866	.mnd_width = 16,867	.hid_width = 5,868	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,869	.clkr.hw.init = &(struct clk_init_data) {870		.name = "pcie0_aux_clk_src",871		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,872		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk),873		.ops = &clk_rcg2_ops,874	},875};876 877static const struct freq_tbl ftbl_pcie0_axi_clk_src[] = {878	F(240000000, P_GPLL4, 5, 0, 0),879	{ }880};881 882static struct clk_rcg2 pcie0_axi_clk_src = {883	.cmd_rcgr = 0x75050,884	.freq_tbl = ftbl_pcie0_axi_clk_src,885	.hid_width = 5,886	.parent_map = gcc_xo_gpll0_gpll4_map,887	.clkr.hw.init = &(struct clk_init_data) {888		.name = "pcie0_axi_clk_src",889		.parent_data = gcc_xo_gpll0_gpll4,890		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),891		.ops = &clk_rcg2_ops,892	},893};894 895static struct clk_rcg2 pcie1_aux_clk_src = {896	.cmd_rcgr = 0x76020,897	.freq_tbl = ftbl_pcie0_aux_clk_src,898	.mnd_width = 16,899	.hid_width = 5,900	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,901	.clkr.hw.init = &(struct clk_init_data) {902		.name = "pcie1_aux_clk_src",903		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,904		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk),905		.ops = &clk_rcg2_ops,906	},907};908 909static struct clk_rcg2 pcie1_axi_clk_src = {910	.cmd_rcgr = 0x76050,911	.freq_tbl = ftbl_gp_clk_src,912	.hid_width = 5,913	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,914	.clkr.hw.init = &(struct clk_init_data) {915		.name = "pcie1_axi_clk_src",916		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,917		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),918		.ops = &clk_rcg2_ops,919	},920};921 922static struct clk_regmap_mux pcie0_pipe_clk_src = {923	.reg = 0x7501c,924	.shift = 8,925	.width = 2,926	.parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,927	.clkr = {928		.hw.init = &(struct clk_init_data) {929			.name = "pcie0_pipe_clk_src",930			.parent_data = gcc_pcie20_phy0_pipe_clk_xo,931			.num_parents = ARRAY_SIZE(gcc_pcie20_phy0_pipe_clk_xo),932			.ops = &clk_regmap_mux_closest_ops,933			.flags = CLK_SET_RATE_PARENT,934		},935	},936};937 938static struct clk_regmap_mux pcie1_pipe_clk_src = {939	.reg = 0x7601c,940	.shift = 8,941	.width = 2,942	.parent_map = gcc_pcie20_phy1_pipe_clk_xo_map, .clkr = {943		.hw.init = &(struct clk_init_data) {944			.name = "pcie1_pipe_clk_src",945			.parent_data = gcc_pcie20_phy1_pipe_clk_xo,946			.num_parents = ARRAY_SIZE(gcc_pcie20_phy1_pipe_clk_xo),947			.ops = &clk_regmap_mux_closest_ops,948			.flags = CLK_SET_RATE_PARENT,949		},950	},951};952 953static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {954	F(100000000, P_GPLL0, 8, 0, 0),955	{ }956};957 958static struct clk_rcg2 pcnoc_bfdcd_clk_src = {959	.cmd_rcgr = 0x27000,960	.freq_tbl = ftbl_pcnoc_bfdcd_clk_src,961	.hid_width = 5,962	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,963	.clkr.hw.init = &(struct clk_init_data) {964		.name = "pcnoc_bfdcd_clk_src",965		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,966		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),967		.ops = &clk_rcg2_ops,968	},969};970 971static struct clk_fixed_factor pcnoc_clk_src = {972	.mult = 1,973	.div = 1,974	.hw.init = &(struct clk_init_data) {975		.name = "pcnoc_clk_src",976		.parent_hws = (const struct clk_hw *[]) {977			&pcnoc_bfdcd_clk_src.clkr.hw,978		},979		.num_parents = 1,980		.ops = &clk_fixed_factor_ops,981		.flags = CLK_SET_RATE_PARENT,982	},983};984 985static const struct freq_tbl ftbl_qdss_at_clk_src[] = {986	F(240000000, P_GPLL4, 5, 0, 0),987	{ }988};989 990static struct clk_rcg2 qdss_at_clk_src = {991	.cmd_rcgr = 0x2900c,992	.freq_tbl = ftbl_qdss_at_clk_src,993	.hid_width = 5,994	.parent_map = gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1,995	.clkr.hw.init = &(struct clk_init_data) {996		.name = "qdss_at_clk_src",997		.parent_data = gcc_xo_gpll4_gpll0_gpll0_out_main_div2,998		.num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2),999		.ops = &clk_rcg2_ops,1000	},1001};1002 1003static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {1004	F(200000000, P_GPLL0, 4, 0, 0),1005	{ }1006};1007 1008static struct clk_rcg2 qdss_stm_clk_src = {1009	.cmd_rcgr = 0x2902c,1010	.freq_tbl = ftbl_qdss_stm_clk_src,1011	.hid_width = 5,1012	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,1013	.clkr.hw.init = &(struct clk_init_data) {1014		.name = "qdss_stm_clk_src",1015		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,1016		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),1017		.ops = &clk_rcg2_ops,1018	},1019};1020 1021static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {1022	F(266666667, P_GPLL0, 3, 0, 0),1023	{ }1024};1025 1026static struct clk_rcg2 qdss_traceclkin_clk_src = {1027	.cmd_rcgr = 0x29048,1028	.freq_tbl = ftbl_qdss_traceclkin_clk_src,1029	.hid_width = 5,1030	.parent_map = gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1,1031	.clkr.hw.init = &(struct clk_init_data) {1032		.name = "qdss_traceclkin_clk_src",1033		.parent_data = gcc_xo_gpll4_gpll0_gpll0_out_main_div2,1034		.num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2),1035		.ops = &clk_rcg2_ops,1036	},1037};1038 1039static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {1040	F(600000000, P_GPLL4, 2, 0, 0),1041	{ }1042};1043 1044static struct clk_rcg2 qdss_tsctr_clk_src = {1045	.cmd_rcgr = 0x29064,1046	.freq_tbl = ftbl_qdss_tsctr_clk_src,1047	.hid_width = 5,1048	.parent_map = gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1,1049	.clkr.hw.init = &(struct clk_init_data) {1050		.name = "qdss_tsctr_clk_src",1051		.parent_data = gcc_xo_gpll4_gpll0_gpll0_out_main_div2,1052		.num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2),1053		.ops = &clk_rcg2_ops,1054	},1055};1056 1057static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {1058	.mult = 1,1059	.div = 2,1060	.hw.init = &(struct clk_init_data) {1061		.name = "qdss_tsctr_div2_clk_src",1062		.parent_hws = (const struct clk_hw *[]) {1063			&qdss_tsctr_clk_src.clkr.hw,1064		},1065		.num_parents = 1,1066		.flags = CLK_SET_RATE_PARENT,1067		.ops = &clk_fixed_factor_ops,1068	},1069};1070 1071static struct clk_fixed_factor qdss_dap_sync_clk_src = {1072	.mult = 1,1073	.div = 4,1074	.hw.init = &(struct clk_init_data) {1075		.name = "qdss_dap_sync_clk_src",1076		.parent_hws = (const struct clk_hw *[]) {1077			&qdss_tsctr_clk_src.clkr.hw,1078		},1079		.num_parents = 1,1080		.ops = &clk_fixed_factor_ops,1081	},1082};1083 1084static struct clk_fixed_factor eud_at_clk_src = {1085	.mult = 1,1086	.div = 6,1087	.hw.init = &(struct clk_init_data) {1088		.name = "eud_at_clk_src",1089		.parent_hws = (const struct clk_hw *[]) {1090			&qdss_at_clk_src.clkr.hw,1091		},1092		.num_parents = 1,1093		.ops = &clk_fixed_factor_ops,1094		.flags = CLK_SET_RATE_PARENT,1095	},1096};1097 1098static const struct freq_tbl ftbl_qpic_io_macro_clk_src[] = {1099	F(24000000, P_XO, 1, 0, 0),1100	F(100000000, P_GPLL0, 8, 0, 0),1101	F(200000000, P_GPLL0, 4, 0, 0),1102	F(320000000, P_GPLL0, 2.5, 0, 0),1103	{ }1104};1105 1106static struct clk_rcg2 qpic_io_macro_clk_src = {1107	.cmd_rcgr = 0x57010,1108	.freq_tbl = ftbl_qpic_io_macro_clk_src,1109	.hid_width = 5,1110	.parent_map = gcc_xo_gpll0_gpll2_map,1111	.clkr.hw.init = &(struct clk_init_data) {1112		.name = "qpic_io_macro_clk_src",1113		.parent_data = gcc_xo_gpll0_gpll2,1114		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2),1115		.ops = &clk_rcg2_ops,1116	},1117};1118 1119static const struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {1120	F(143713, P_XO, 1, 1, 167),1121	F(400000, P_XO, 1, 1, 60),1122	F(24000000, P_XO, 1, 0, 0),1123	F(48000000, P_GPLL2, 12, 1, 2),1124	F(96000000, P_GPLL2, 12, 0, 0),1125	F(177777778, P_GPLL0, 1, 2, 9),1126	F(192000000, P_GPLL2, 6, 0, 0),1127	F(200000000, P_GPLL0, 4, 0, 0),1128	{ }1129};1130 1131static struct clk_rcg2 sdcc1_apps_clk_src = {1132	.cmd_rcgr = 0x42004,1133	.freq_tbl = ftbl_sdcc1_apps_clk_src,1134	.mnd_width = 8,1135	.hid_width = 5,1136	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,1137	.clkr.hw.init = &(struct clk_init_data) {1138		.name = "sdcc1_apps_clk_src",1139		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,1140		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),1141		.ops = &clk_rcg2_floor_ops,1142	},1143};1144 1145static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {1146	F(266666667, P_GPLL0, 3, 0, 0),1147	{ }1148};1149 1150static struct clk_rcg2 system_noc_bfdcd_clk_src = {1151	.cmd_rcgr = 0x26004,1152	.freq_tbl = ftbl_system_noc_bfdcd_clk_src,1153	.hid_width = 5,1154	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,1155	.clkr.hw.init = &(struct clk_init_data) {1156		.name = "system_noc_bfdcd_clk_src",1157		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,1158		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),1159		.ops = &clk_rcg2_ops,1160	},1161};1162 1163static struct clk_fixed_factor system_noc_clk_src = {1164	.mult = 1,1165	.div = 1,1166	.hw.init = &(struct clk_init_data) {1167		.name = "system_noc_clk_src",1168		.parent_hws = (const struct clk_hw *[]) {1169			&system_noc_bfdcd_clk_src.clkr.hw,1170		},1171		.num_parents = 1,1172		.ops = &clk_fixed_factor_ops,1173		.flags = CLK_SET_RATE_PARENT,1174	},1175};1176 1177static const struct freq_tbl ftbl_apss_axi_clk_src[] = {1178	F(400000000, P_GPLL0, 2, 0, 0),1179	{ }1180};1181 1182static struct clk_rcg2 ubi0_axi_clk_src = {1183	.cmd_rcgr = 0x68088,1184	.freq_tbl = ftbl_apss_axi_clk_src,1185	.hid_width = 5,1186	.parent_map = gcc_xo_gpll0_gpll2_map,1187	.clkr.hw.init = &(struct clk_init_data) {1188		.name = "ubi0_axi_clk_src",1189		.parent_data = gcc_xo_gpll0_gpll2,1190		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2),1191		.ops = &clk_rcg2_ops,1192		.flags = CLK_SET_RATE_PARENT,1193	},1194};1195 1196static const struct freq_tbl ftbl_ubi0_core_clk_src[] = {1197	F(850000000, P_UBI32_PLL, 1, 0, 0),1198	F(1000000000, P_UBI32_PLL, 1, 0, 0),1199	{ }1200};1201 1202static struct clk_rcg2 ubi0_core_clk_src = {1203	.cmd_rcgr = 0x68100,1204	.freq_tbl = ftbl_ubi0_core_clk_src,1205	.hid_width = 5,1206	.parent_map = gcc_xo_ubi32_gpll0_map,1207	.clkr.hw.init = &(struct clk_init_data) {1208		.name = "ubi0_core_clk_src",1209		.parent_data = gcc_xo_ubi32_gpll0,1210		.num_parents = ARRAY_SIZE(gcc_xo_ubi32_gpll0),1211		.ops = &clk_rcg2_ops,1212		.flags = CLK_SET_RATE_PARENT,1213	},1214};1215 1216static struct clk_rcg2 usb0_aux_clk_src = {1217	.cmd_rcgr = 0x3e05c,1218	.freq_tbl = ftbl_pcie0_aux_clk_src,1219	.mnd_width = 16,1220	.hid_width = 5,1221	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,1222	.clkr.hw.init = &(struct clk_init_data) {1223		.name = "usb0_aux_clk_src",1224		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,1225		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk),1226		.ops = &clk_rcg2_ops,1227	},1228};1229 1230static const struct freq_tbl ftbl_usb0_lfps_clk_src[] = {1231	F(25000000, P_GPLL0, 16, 1, 2),1232	{ }1233};1234 1235static struct clk_rcg2 usb0_lfps_clk_src = {1236	.cmd_rcgr = 0x3e090,1237	.freq_tbl = ftbl_usb0_lfps_clk_src,1238	.mnd_width = 8,1239	.hid_width = 5,1240	.parent_map = gcc_xo_gpll0_map,1241	.clkr.hw.init = &(struct clk_init_data) {1242		.name = "usb0_lfps_clk_src",1243		.parent_data = gcc_xo_gpll0,1244		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),1245		.ops = &clk_rcg2_ops,1246	},1247};1248 1249static struct clk_rcg2 usb0_master_clk_src = {1250	.cmd_rcgr = 0x3e00c,1251	.freq_tbl = ftbl_gp_clk_src,1252	.mnd_width = 8,1253	.hid_width = 5,1254	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,1255	.clkr.hw.init = &(struct clk_init_data) {1256		.name = "usb0_master_clk_src",1257		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,1258		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),1259		.ops = &clk_rcg2_ops,1260	},1261};1262 1263static const struct freq_tbl ftbl_usb0_mock_utmi_clk_src[] = {1264	F(60000000, P_GPLL4, 10, 1, 2),1265	{ }1266};1267 1268static struct clk_rcg2 usb0_mock_utmi_clk_src = {1269	.cmd_rcgr = 0x3e020,1270	.freq_tbl = ftbl_usb0_mock_utmi_clk_src,1271	.mnd_width = 8,1272	.hid_width = 5,1273	.parent_map = gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map2,1274	.clkr.hw.init = &(struct clk_init_data) {1275		.name = "usb0_mock_utmi_clk_src",1276		.parent_data = gcc_xo_gpll4_gpll0_gpll0_out_main_div2,1277		.num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2),1278		.ops = &clk_rcg2_ops,1279	},1280};1281 1282static struct clk_regmap_mux usb0_pipe_clk_src = {1283	.reg = 0x3e048,1284	.shift = 8,1285	.width = 2,1286	.parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,1287	.clkr = {1288		.hw.init = &(struct clk_init_data) {1289			.name = "usb0_pipe_clk_src",1290			.parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,1291			.num_parents = ARRAY_SIZE(gcc_usb3phy_0_cc_pipe_clk_xo),1292			.ops = &clk_regmap_mux_closest_ops,1293			.flags = CLK_SET_RATE_PARENT,1294		},1295	},1296};1297 1298static const struct freq_tbl ftbl_q6_axi_clk_src[] = {1299	F(400000000, P_GPLL0, 2, 0, 0),1300	{ }1301};1302 1303static struct clk_rcg2 q6_axi_clk_src = {1304	.cmd_rcgr = 0x59120,1305	.freq_tbl = ftbl_q6_axi_clk_src,1306	.hid_width = 5,1307	.parent_map = gcc_xo_gpll0_gpll2_gpll4_map,1308	.clkr.hw.init = &(struct clk_init_data) {1309		.name = "q6_axi_clk_src",1310		.parent_data = gcc_xo_gpll0_gpll2_gpll4,1311		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll4),1312		.ops = &clk_rcg2_ops,1313	},1314};1315 1316static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {1317	F(133333333, P_GPLL0, 6, 0, 0),1318	{ }1319};1320 1321static struct clk_rcg2 wcss_ahb_clk_src = {1322	.cmd_rcgr = 0x59020,1323	.freq_tbl = ftbl_wcss_ahb_clk_src,1324	.hid_width = 5,1325	.parent_map = gcc_xo_gpll0_map,1326	.clkr.hw.init = &(struct clk_init_data) {1327		.name = "wcss_ahb_clk_src",1328		.parent_data = gcc_xo_gpll0,1329		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),1330		.ops = &clk_rcg2_ops,1331	},1332};1333 1334static struct clk_branch gcc_sleep_clk_src = {1335	.halt_reg = 0x30000,1336	.clkr = {1337		.enable_reg = 0x30000,1338		.enable_mask = BIT(1),1339		.hw.init = &(struct clk_init_data) {1340			.name = "gcc_sleep_clk_src",1341			.parent_data = gcc_sleep_clk_data,1342			.num_parents = ARRAY_SIZE(gcc_sleep_clk_data),1343			.ops = &clk_branch2_ops,1344		},1345	},1346};1347 1348static struct clk_branch gcc_xo_clk_src = {1349	.halt_reg = 0x30018,1350	.clkr = {1351		.enable_reg = 0x30018,1352		.enable_mask = BIT(1),1353		.hw.init = &(struct clk_init_data) {1354			.name = "gcc_xo_clk_src",1355			.parent_data = gcc_xo_data,1356			.num_parents = ARRAY_SIZE(gcc_xo_data),1357			.flags = CLK_SET_RATE_PARENT,1358			.ops = &clk_branch2_ops,1359		},1360	},1361};1362 1363static struct clk_branch gcc_xo_clk = {1364	.halt_reg = 0x30030,1365	.clkr = {1366		.enable_reg = 0x30030,1367		.enable_mask = BIT(0),1368		.hw.init = &(struct clk_init_data) {1369			.name = "gcc_xo_clk",1370			.parent_hws = (const struct clk_hw *[]) {1371				&gcc_xo_clk_src.clkr.hw,1372			},1373			.num_parents = 1,1374			.flags = CLK_SET_RATE_PARENT,1375			.ops = &clk_branch2_ops,1376		},1377	},1378};1379 1380static struct clk_branch gcc_adss_pwm_clk = {1381	.halt_reg = 0x1f020,1382	.clkr = {1383		.enable_reg = 0x1f020,1384		.enable_mask = BIT(0),1385		.hw.init = &(struct clk_init_data) {1386			.name = "gcc_adss_pwm_clk",1387			.parent_hws = (const struct clk_hw *[]) {1388				&adss_pwm_clk_src.clkr.hw,1389			},1390			.num_parents = 1,1391			.flags = CLK_SET_RATE_PARENT,1392			.ops = &clk_branch2_ops,1393		},1394	},1395};1396 1397static struct clk_branch gcc_blsp1_ahb_clk = {1398	.halt_reg = 0x01008,1399	.halt_check = BRANCH_HALT_VOTED,1400	.clkr = {1401		.enable_reg = 0x0b004,1402		.enable_mask = BIT(10),1403		.hw.init = &(struct clk_init_data) {1404			.name = "gcc_blsp1_ahb_clk",1405			.parent_hws = (const struct clk_hw *[]) {1406				&pcnoc_clk_src.hw,1407			},1408			.num_parents = 1,1409			.flags = CLK_SET_RATE_PARENT,1410			.ops = &clk_branch2_ops,1411		},1412	},1413};1414 1415static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {1416	.halt_reg = 0x02008,1417	.clkr = {1418		.enable_reg = 0x02008,1419		.enable_mask = BIT(0),1420		.hw.init = &(struct clk_init_data) {1421			.name = "gcc_blsp1_qup1_i2c_apps_clk",1422			.parent_hws = (const struct clk_hw *[]) {1423				&blsp1_qup1_i2c_apps_clk_src.clkr.hw,1424			},1425			.num_parents = 1,1426			.flags = CLK_SET_RATE_PARENT,1427			.ops = &clk_branch2_ops,1428		},1429	},1430};1431 1432static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {1433	.halt_reg = 0x02004,1434	.clkr = {1435		.enable_reg = 0x02004,1436		.enable_mask = BIT(0),1437		.hw.init = &(struct clk_init_data) {1438			.name = "gcc_blsp1_qup1_spi_apps_clk",1439			.parent_hws = (const struct clk_hw *[]) {1440				&blsp1_qup1_spi_apps_clk_src.clkr.hw,1441			},1442			.num_parents = 1,1443			.flags = CLK_SET_RATE_PARENT,1444			.ops = &clk_branch2_ops,1445		},1446	},1447};1448 1449static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {1450	.halt_reg = 0x03010,1451	.clkr = {1452		.enable_reg = 0x03010,1453		.enable_mask = BIT(0),1454		.hw.init = &(struct clk_init_data) {1455			.name = "gcc_blsp1_qup2_i2c_apps_clk",1456			.parent_hws = (const struct clk_hw *[]) {1457				&blsp1_qup2_i2c_apps_clk_src.clkr.hw,1458			},1459			.num_parents = 1,1460			.flags = CLK_SET_RATE_PARENT,1461			.ops = &clk_branch2_ops,1462		},1463	},1464};1465 1466static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {1467	.halt_reg = 0x0300c,1468	.clkr = {1469		.enable_reg = 0x0300c,1470		.enable_mask = BIT(0),1471		.hw.init = &(struct clk_init_data) {1472			.name = "gcc_blsp1_qup2_spi_apps_clk",1473			.parent_hws = (const struct clk_hw *[]) {1474				&blsp1_qup2_spi_apps_clk_src.clkr.hw,1475			},1476			.num_parents = 1,1477			.flags = CLK_SET_RATE_PARENT,1478			.ops = &clk_branch2_ops,1479		},1480	},1481};1482 1483static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {1484	.halt_reg = 0x04010,1485	.clkr = {1486		.enable_reg = 0x04010,1487		.enable_mask = BIT(0),1488		.hw.init = &(struct clk_init_data) {1489			.name = "gcc_blsp1_qup3_i2c_apps_clk",1490			.parent_hws = (const struct clk_hw *[]) {1491				&blsp1_qup3_i2c_apps_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_blsp1_qup3_spi_apps_clk = {1501	.halt_reg = 0x0400c,1502	.clkr = {1503		.enable_reg = 0x0400c,1504		.enable_mask = BIT(0),1505		.hw.init = &(struct clk_init_data) {1506			.name = "gcc_blsp1_qup3_spi_apps_clk",1507			.parent_hws = (const struct clk_hw *[]) {1508				&blsp1_qup3_spi_apps_clk_src.clkr.hw,1509			},1510			.num_parents = 1,1511			.flags = CLK_SET_RATE_PARENT,1512			.ops = &clk_branch2_ops,1513		},1514	},1515};1516 1517static struct clk_branch gcc_blsp1_uart1_apps_clk = {1518	.halt_reg = 0x0203c,1519	.clkr = {1520		.enable_reg = 0x0203c,1521		.enable_mask = BIT(0),1522		.hw.init = &(struct clk_init_data) {1523			.name = "gcc_blsp1_uart1_apps_clk",1524			.parent_hws = (const struct clk_hw *[]) {1525				&blsp1_uart1_apps_clk_src.clkr.hw,1526			},1527			.num_parents = 1,1528			.flags = CLK_SET_RATE_PARENT,1529			.ops = &clk_branch2_ops,1530		},1531	},1532};1533 1534static struct clk_branch gcc_blsp1_uart2_apps_clk = {1535	.halt_reg = 0x0302c,1536	.clkr = {1537		.enable_reg = 0x0302c,1538		.enable_mask = BIT(0),1539		.hw.init = &(struct clk_init_data) {1540			.name = "gcc_blsp1_uart2_apps_clk",1541			.parent_hws = (const struct clk_hw *[]) {1542				&blsp1_uart2_apps_clk_src.clkr.hw,1543			},1544			.num_parents = 1,1545			.flags = CLK_SET_RATE_PARENT,1546			.ops = &clk_branch2_ops,1547		},1548	},1549};1550 1551static struct clk_branch gcc_btss_lpo_clk = {1552	.halt_reg = 0x1c004,1553	.clkr = {1554		.enable_reg = 0x1c004,1555		.enable_mask = BIT(0),1556		.hw.init = &(struct clk_init_data) {1557			.name = "gcc_btss_lpo_clk",1558			.ops = &clk_branch2_ops,1559		},1560	},1561};1562 1563static struct clk_branch gcc_cmn_blk_ahb_clk = {1564	.halt_reg = 0x56308,1565	.clkr = {1566		.enable_reg = 0x56308,1567		.enable_mask = BIT(0),1568		.hw.init = &(struct clk_init_data) {1569			.name = "gcc_cmn_blk_ahb_clk",1570			.parent_hws = (const struct clk_hw *[]) {1571				&pcnoc_clk_src.hw,1572			},1573			.num_parents = 1,1574			.flags = CLK_SET_RATE_PARENT,1575			.ops = &clk_branch2_ops,1576		},1577	},1578};1579 1580static struct clk_branch gcc_cmn_blk_sys_clk = {1581	.halt_reg = 0x5630c,1582	.clkr = {1583		.enable_reg = 0x5630c,1584		.enable_mask = BIT(0),1585		.hw.init = &(struct clk_init_data) {1586			.name = "gcc_cmn_blk_sys_clk",1587			.parent_hws = (const struct clk_hw *[]) {1588				&gcc_xo_clk_src.clkr.hw,1589			},1590			.num_parents = 1,1591			.flags = CLK_SET_RATE_PARENT,1592			.ops = &clk_branch2_ops,1593		},1594	},1595};1596 1597static struct clk_branch gcc_crypto_ahb_clk = {1598	.halt_reg = 0x16024,1599	.halt_check = BRANCH_HALT_VOTED,1600	.clkr = {1601		.enable_reg = 0x0b004,1602		.enable_mask = BIT(0),1603		.hw.init = &(struct clk_init_data) {1604			.name = "gcc_crypto_ahb_clk",1605			.parent_hws = (const struct clk_hw *[]) {1606				&pcnoc_clk_src.hw,1607			},1608			.num_parents = 1,1609			.flags = CLK_SET_RATE_PARENT,1610			.ops = &clk_branch2_ops,1611		},1612	},1613};1614 1615static struct clk_branch gcc_crypto_axi_clk = {1616	.halt_reg = 0x16020,1617	.halt_check = BRANCH_HALT_VOTED,1618	.clkr = {1619		.enable_reg = 0x0b004,1620		.enable_mask = BIT(1),1621		.hw.init = &(struct clk_init_data) {1622			.name = "gcc_crypto_axi_clk",1623			.parent_hws = (const struct clk_hw *[]) {1624				&pcnoc_clk_src.hw,1625			},1626			.num_parents = 1,1627			.flags = CLK_SET_RATE_PARENT,1628			.ops = &clk_branch2_ops,1629		},1630	},1631};1632 1633static struct clk_branch gcc_crypto_clk = {1634	.halt_reg = 0x1601c,1635	.halt_check = BRANCH_HALT_VOTED,1636	.clkr = {1637		.enable_reg = 0x0b004,1638		.enable_mask = BIT(2),1639		.hw.init = &(struct clk_init_data) {1640			.name = "gcc_crypto_clk",1641			.parent_hws = (const struct clk_hw *[]) {1642				&crypto_clk_src.clkr.hw,1643			},1644			.num_parents = 1,1645			.flags = CLK_SET_RATE_PARENT,1646			.ops = &clk_branch2_ops,1647		},1648	},1649};1650 1651static struct clk_branch gcc_dcc_clk = {1652	.halt_reg = 0x77004,1653	.clkr = {1654		.enable_reg = 0x77004,1655		.enable_mask = BIT(0),1656		.hw.init = &(struct clk_init_data) {1657			.name = "gcc_dcc_clk",1658			.parent_hws = (const struct clk_hw *[]) {1659				&pcnoc_clk_src.hw,1660			},1661			.num_parents = 1,1662			.flags = CLK_SET_RATE_PARENT,1663			.ops = &clk_branch2_ops,1664		},1665	},1666};1667 1668static struct clk_branch gcc_gephy_rx_clk = {1669	.halt_reg = 0x56010,1670	.halt_check = BRANCH_HALT_DELAY,1671	.clkr = {1672		.enable_reg = 0x56010,1673		.enable_mask = BIT(0),1674		.hw.init = &(struct clk_init_data) {1675			.name = "gcc_gephy_rx_clk",1676			.parent_hws = (const struct clk_hw *[]) {1677				&gmac0_rx_div_clk_src.clkr.hw,1678			},1679			.num_parents = 1,1680			.ops = &clk_branch2_ops,1681			.flags = CLK_SET_RATE_PARENT,1682		},1683	},1684};1685 1686static struct clk_branch gcc_gephy_tx_clk = {1687	.halt_reg = 0x56014,1688	.halt_check = BRANCH_HALT_DELAY,1689	.clkr = {1690		.enable_reg = 0x56014,1691		.enable_mask = BIT(0),1692		.hw.init = &(struct clk_init_data) {1693			.name = "gcc_gephy_tx_clk",1694			.parent_hws = (const struct clk_hw *[]) {1695				&gmac0_tx_div_clk_src.clkr.hw,1696			},1697			.num_parents = 1,1698			.ops = &clk_branch2_ops,1699			.flags = CLK_SET_RATE_PARENT,1700		},1701	},1702};1703 1704static struct clk_branch gcc_gmac0_cfg_clk = {1705	.halt_reg = 0x68304,1706	.clkr = {1707		.enable_reg = 0x68304,1708		.enable_mask = BIT(0),1709		.hw.init = &(struct clk_init_data) {1710			.name = "gcc_gmac0_cfg_clk",1711			.parent_hws = (const struct clk_hw *[]) {1712				&gmac_clk_src.clkr.hw,1713			},1714			.num_parents = 1,1715			.flags = CLK_SET_RATE_PARENT,1716			.ops = &clk_branch2_ops,1717		},1718	},1719};1720 1721static struct clk_branch gcc_gmac0_ptp_clk = {1722	.halt_reg = 0x68300,1723	.clkr = {1724		.enable_reg = 0x68300,1725		.enable_mask = BIT(0),1726		.hw.init = &(struct clk_init_data) {1727			.name = "gcc_gmac0_ptp_clk",1728			.parent_hws = (const struct clk_hw *[]) {1729				&gmac_clk_src.clkr.hw,1730			},1731			.num_parents = 1,1732			.flags = CLK_SET_RATE_PARENT,1733			.ops = &clk_branch2_ops,1734		},1735	},1736};1737 1738static struct clk_branch gcc_gmac0_rx_clk = {1739	.halt_reg = 0x68240,1740	.clkr = {1741		.enable_reg = 0x68240,1742		.enable_mask = BIT(0),1743		.hw.init = &(struct clk_init_data) {1744			.name = "gcc_gmac0_rx_clk",1745			.parent_hws = (const struct clk_hw *[]) {1746				&gmac0_rx_div_clk_src.clkr.hw,1747			},1748			.num_parents = 1,1749			.ops = &clk_branch2_ops,1750			.flags = CLK_SET_RATE_PARENT,1751		},1752	},1753};1754 1755static struct clk_branch gcc_gmac0_sys_clk = {1756	.halt_reg = 0x68190,1757	.halt_check = BRANCH_HALT_DELAY,1758	.halt_bit = 31,1759	.clkr = {1760		.enable_reg = 0x68190,1761		.enable_mask = BIT(0),1762		.hw.init = &(struct clk_init_data) {1763			.name = "gcc_gmac0_sys_clk",1764			.parent_hws = (const struct clk_hw *[]) {1765				&gmac_clk_src.clkr.hw,1766			},1767			.num_parents = 1,1768			.flags = CLK_SET_RATE_PARENT,1769			.ops = &clk_branch2_ops,1770		},1771	},1772};1773 1774static struct clk_branch gcc_gmac0_tx_clk = {1775	.halt_reg = 0x68244,1776	.clkr = {1777		.enable_reg = 0x68244,1778		.enable_mask = BIT(0),1779		.hw.init = &(struct clk_init_data) {1780			.name = "gcc_gmac0_tx_clk",1781			.parent_hws = (const struct clk_hw *[]) {1782				&gmac0_tx_div_clk_src.clkr.hw,1783			},1784			.num_parents = 1,1785			.ops = &clk_branch2_ops,1786			.flags = CLK_SET_RATE_PARENT,1787		},1788	},1789};1790 1791static struct clk_branch gcc_gmac1_cfg_clk = {1792	.halt_reg = 0x68324,1793	.clkr = {1794		.enable_reg = 0x68324,1795		.enable_mask = BIT(0),1796		.hw.init = &(struct clk_init_data) {1797			.name = "gcc_gmac1_cfg_clk",1798			.parent_hws = (const struct clk_hw *[]) {1799				&gmac_clk_src.clkr.hw,1800			},1801			.num_parents = 1,1802			.flags = CLK_SET_RATE_PARENT,1803			.ops = &clk_branch2_ops,1804		},1805	},1806};1807 1808static struct clk_branch gcc_gmac1_ptp_clk = {1809	.halt_reg = 0x68320,1810	.clkr = {1811		.enable_reg = 0x68320,1812		.enable_mask = BIT(0),1813		.hw.init = &(struct clk_init_data) {1814			.name = "gcc_gmac1_ptp_clk",1815			.parent_hws = (const struct clk_hw *[]) {1816				&gmac_clk_src.clkr.hw,1817			},1818			.num_parents = 1,1819			.flags = CLK_SET_RATE_PARENT,1820			.ops = &clk_branch2_ops,1821		},1822	},1823};1824 1825static struct clk_branch gcc_gmac1_rx_clk = {1826	.halt_reg = 0x68248,1827	.clkr = {1828		.enable_reg = 0x68248,1829		.enable_mask = BIT(0),1830		.hw.init = &(struct clk_init_data) {1831			.name = "gcc_gmac1_rx_clk",1832			.parent_hws = (const struct clk_hw *[]) {1833				&gmac1_rx_div_clk_src.clkr.hw,1834			},1835			.num_parents = 1,1836			.ops = &clk_branch2_ops,1837			.flags = CLK_SET_RATE_PARENT,1838		},1839	},1840};1841 1842static struct clk_branch gcc_gmac1_sys_clk = {1843	.halt_reg = 0x68310,1844	.clkr = {1845		.enable_reg = 0x68310,1846		.enable_mask = BIT(0),1847		.hw.init = &(struct clk_init_data) {1848			.name = "gcc_gmac1_sys_clk",1849			.parent_hws = (const struct clk_hw *[]) {1850				&gmac_clk_src.clkr.hw,1851			},1852			.num_parents = 1,1853			.flags = CLK_SET_RATE_PARENT,1854			.ops = &clk_branch2_ops,1855		},1856	},1857};1858 1859static struct clk_branch gcc_gmac1_tx_clk = {1860	.halt_reg = 0x6824c,1861	.clkr = {1862		.enable_reg = 0x6824c,1863		.enable_mask = BIT(0),1864		.hw.init = &(struct clk_init_data) {1865			.name = "gcc_gmac1_tx_clk",1866			.parent_hws = (const struct clk_hw *[]) {1867				&gmac1_tx_div_clk_src.clkr.hw,1868			},1869			.num_parents = 1,1870			.ops = &clk_branch2_ops,1871			.flags = CLK_SET_RATE_PARENT,1872		},1873	},1874};1875 1876static struct clk_branch gcc_gp1_clk = {1877	.halt_reg = 0x08000,1878	.clkr = {1879		.enable_reg = 0x08000,1880		.enable_mask = BIT(0),1881		.hw.init = &(struct clk_init_data) {1882			.name = "gcc_gp1_clk",1883			.parent_hws = (const struct clk_hw *[]) {1884				&gp1_clk_src.clkr.hw,1885			},1886			.num_parents = 1,1887			.flags = CLK_SET_RATE_PARENT,1888			.ops = &clk_branch2_ops,1889		},1890	},1891};1892 1893static struct clk_branch gcc_gp2_clk = {1894	.halt_reg = 0x09000,1895	.clkr = {1896		.enable_reg = 0x09000,1897		.enable_mask = BIT(0),1898		.hw.init = &(struct clk_init_data) {1899			.name = "gcc_gp2_clk",1900			.parent_hws = (const struct clk_hw *[]) {1901				&gp2_clk_src.clkr.hw,1902			},1903			.num_parents = 1,1904			.flags = CLK_SET_RATE_PARENT,1905			.ops = &clk_branch2_ops,1906		},1907	},1908};1909 1910static struct clk_branch gcc_gp3_clk = {1911	.halt_reg = 0x0a000,1912	.clkr = {1913		.enable_reg = 0x0a000,1914		.enable_mask = BIT(0),1915		.hw.init = &(struct clk_init_data) {1916			.name = "gcc_gp3_clk",1917			.parent_hws = (const struct clk_hw *[]) {1918				&gp3_clk_src.clkr.hw,1919			},1920			.num_parents = 1,1921			.flags = CLK_SET_RATE_PARENT,1922			.ops = &clk_branch2_ops,1923		},1924	},1925};1926 1927static struct clk_branch gcc_lpass_core_axim_clk = {1928	.halt_reg = 0x2e048,1929	.halt_check = BRANCH_VOTED,1930	.clkr = {1931		.enable_reg = 0x2e048,1932		.enable_mask = BIT(0),1933		.hw.init = &(struct clk_init_data) {1934			.name = "gcc_lpass_core_axim_clk",1935			.parent_hws = (const struct clk_hw *[]) {1936				&lpass_axim_clk_src.clkr.hw,1937			},1938			.num_parents = 1,1939			.flags = CLK_SET_RATE_PARENT,1940			.ops = &clk_branch2_ops,1941		},1942	},1943};1944 1945static struct clk_branch gcc_lpass_sway_clk = {1946	.halt_reg = 0x2e04c,1947	.clkr = {1948		.enable_reg = 0x2e04c,1949		.enable_mask = BIT(0),1950		.hw.init = &(struct clk_init_data) {1951			.name = "gcc_lpass_sway_clk",1952			.parent_hws = (const struct clk_hw *[]) {1953				&lpass_sway_clk_src.clkr.hw,1954			},1955			.num_parents = 1,1956			.flags = CLK_SET_RATE_PARENT,1957			.ops = &clk_branch2_ops,1958		},1959	},1960};1961 1962static struct clk_branch gcc_mdio0_ahb_clk = {1963	.halt_reg = 0x58004,1964	.clkr = {1965		.enable_reg = 0x58004,1966		.enable_mask = BIT(0),1967		.hw.init = &(struct clk_init_data) {1968			.name = "gcc_mdioi0_ahb_clk",1969			.parent_hws = (const struct clk_hw *[]) {1970				&pcnoc_clk_src.hw,1971			},1972			.num_parents = 1,1973			.flags = CLK_SET_RATE_PARENT,1974			.ops = &clk_branch2_ops,1975		},1976	},1977};1978 1979static struct clk_branch gcc_mdio1_ahb_clk = {1980	.halt_reg = 0x58014,1981	.clkr = {1982		.enable_reg = 0x58014,1983		.enable_mask = BIT(0),1984		.hw.init = &(struct clk_init_data) {1985			.name = "gcc_mdio1_ahb_clk",1986			.parent_hws = (const struct clk_hw *[]) {1987				&pcnoc_clk_src.hw,1988			},1989			.num_parents = 1,1990			.flags = CLK_SET_RATE_PARENT,1991			.ops = &clk_branch2_ops,1992		},1993	},1994};1995 1996static struct clk_branch gcc_pcie0_ahb_clk = {1997	.halt_reg = 0x75010,1998	.clkr = {1999		.enable_reg = 0x75010,2000		.enable_mask = BIT(0),2001		.hw.init = &(struct clk_init_data) {2002			.name = "gcc_pcie0_ahb_clk",2003			.parent_hws = (const struct clk_hw *[]) {2004				&pcnoc_clk_src.hw,2005			},2006			.num_parents = 1,2007			.flags = CLK_SET_RATE_PARENT,2008			.ops = &clk_branch2_ops,2009		},2010	},2011};2012 2013static struct clk_branch gcc_pcie0_aux_clk = {2014	.halt_reg = 0x75014,2015	.clkr = {2016		.enable_reg = 0x75014,2017		.enable_mask = BIT(0),2018		.hw.init = &(struct clk_init_data) {2019			.name = "gcc_pcie0_aux_clk",2020			.parent_hws = (const struct clk_hw *[]) {2021				&pcie0_aux_clk_src.clkr.hw,2022			},2023			.num_parents = 1,2024			.flags = CLK_SET_RATE_PARENT,2025			.ops = &clk_branch2_ops,2026		},2027	},2028};2029 2030static struct clk_branch gcc_pcie0_axi_m_clk = {2031	.halt_reg = 0x75008,2032	.clkr = {2033		.enable_reg = 0x75008,2034		.enable_mask = BIT(0),2035		.hw.init = &(struct clk_init_data) {2036			.name = "gcc_pcie0_axi_m_clk",2037			.parent_hws = (const struct clk_hw *[]) {2038				&pcie0_axi_clk_src.clkr.hw,2039			},2040			.num_parents = 1,2041			.flags = CLK_SET_RATE_PARENT,2042			.ops = &clk_branch2_ops,2043		},2044	},2045};2046 2047static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {2048	.halt_reg = 0x75048,2049	.clkr = {2050		.enable_reg = 0x75048,2051		.enable_mask = BIT(0),2052		.hw.init = &(struct clk_init_data) {2053			.name = "gcc_pcie0_axi_s_bridge_clk",2054			.parent_hws = (const struct clk_hw *[]) {2055				&pcie0_axi_clk_src.clkr.hw,2056			},2057			.num_parents = 1,2058			.flags = CLK_SET_RATE_PARENT,2059			.ops = &clk_branch2_ops,2060		},2061	},2062};2063 2064static struct clk_branch gcc_pcie0_axi_s_clk = {2065	.halt_reg = 0x7500c,2066	.clkr = {2067		.enable_reg = 0x7500c,2068		.enable_mask = BIT(0),2069		.hw.init = &(struct clk_init_data) {2070			.name = "gcc_pcie0_axi_s_clk",2071			.parent_hws = (const struct clk_hw *[]) {2072				&pcie0_axi_clk_src.clkr.hw,2073			},2074			.num_parents = 1,2075			.flags = CLK_SET_RATE_PARENT,2076			.ops = &clk_branch2_ops,2077		},2078	},2079};2080 2081static struct clk_branch gcc_pcie0_pipe_clk = {2082	.halt_reg = 0x75018,2083	.halt_check = BRANCH_HALT_DELAY,2084	.halt_bit = 31,2085	.clkr = {2086		.enable_reg = 0x75018,2087		.enable_mask = BIT(0),2088		.hw.init = &(struct clk_init_data) {2089			.name = "gcc_pcie0_pipe_clk",2090			.parent_hws = (const struct clk_hw *[]) {2091				&pcie0_pipe_clk_src.clkr.hw,2092			},2093			.num_parents = 1,2094			.flags = CLK_SET_RATE_PARENT,2095			.ops = &clk_branch2_ops,2096		},2097	},2098};2099 2100static struct clk_branch gcc_pcie1_ahb_clk = {2101	.halt_reg = 0x76010,2102	.clkr = {2103		.enable_reg = 0x76010,2104		.enable_mask = BIT(0),2105		.hw.init = &(struct clk_init_data) {2106			.name = "gcc_pcie1_ahb_clk",2107			.parent_hws = (const struct clk_hw *[]) {2108				&pcnoc_clk_src.hw,2109			},2110			.num_parents = 1,2111			.flags = CLK_SET_RATE_PARENT,2112			.ops = &clk_branch2_ops,2113		},2114	},2115};2116 2117static struct clk_branch gcc_pcie1_aux_clk = {2118	.halt_reg = 0x76014,2119	.clkr = {2120		.enable_reg = 0x76014,2121		.enable_mask = BIT(0),2122		.hw.init = &(struct clk_init_data) {2123			.name = "gcc_pcie1_aux_clk",2124			.parent_hws = (const struct clk_hw *[]) {2125				&pcie1_aux_clk_src.clkr.hw,2126			},2127			.num_parents = 1,2128			.flags = CLK_SET_RATE_PARENT,2129			.ops = &clk_branch2_ops,2130		},2131	},2132};2133 2134static struct clk_branch gcc_pcie1_axi_m_clk = {2135	.halt_reg = 0x76008,2136	.clkr = {2137		.enable_reg = 0x76008,2138		.enable_mask = BIT(0),2139		.hw.init = &(struct clk_init_data) {2140			.name = "gcc_pcie1_axi_m_clk",2141			.parent_hws = (const struct clk_hw *[]) {2142				&pcie1_axi_clk_src.clkr.hw,2143			},2144			.num_parents = 1,2145			.flags = CLK_SET_RATE_PARENT,2146			.ops = &clk_branch2_ops,2147		},2148	},2149};2150 2151static struct clk_branch gcc_pcie1_axi_s_bridge_clk = {2152	.halt_reg = 0x76048,2153	.clkr = {2154		.enable_reg = 0x76048,2155		.enable_mask = BIT(0),2156		.hw.init = &(struct clk_init_data) {2157			.name = "gcc_pcie1_axi_s_bridge_clk",2158			.parent_hws = (const struct clk_hw *[]) {2159				&pcie1_axi_clk_src.clkr.hw,2160			},2161			.num_parents = 1,2162			.flags = CLK_SET_RATE_PARENT,2163			.ops = &clk_branch2_ops,2164		},2165	},2166};2167 2168static struct clk_branch gcc_pcie1_axi_s_clk = {2169	.halt_reg = 0x7600c,2170	.clkr = {2171		.enable_reg = 0x7600c,2172		.enable_mask = BIT(0),2173		.hw.init = &(struct clk_init_data) {2174			.name = "gcc_pcie1_axi_s_clk",2175			.parent_hws = (const struct clk_hw *[]) {2176				&pcie1_axi_clk_src.clkr.hw,2177			},2178			.num_parents = 1,2179			.flags = CLK_SET_RATE_PARENT,2180			.ops = &clk_branch2_ops,2181		},2182	},2183};2184 2185static struct clk_branch gcc_pcie1_pipe_clk = {2186	.halt_reg = 0x76018,2187	.halt_check = BRANCH_HALT_DELAY,2188	.halt_bit = 31,2189	.clkr = {2190		.enable_reg = 0x76018,2191		.enable_mask = BIT(0),2192		.hw.init = &(struct clk_init_data) {2193			.name = "gcc_pcie1_pipe_clk",2194			.parent_hws = (const struct clk_hw *[]) {2195				&pcie1_pipe_clk_src.clkr.hw,2196			},2197			.num_parents = 1,2198			.flags = CLK_SET_RATE_PARENT,2199			.ops = &clk_branch2_ops,2200		},2201	},2202};2203 2204static struct clk_branch gcc_prng_ahb_clk = {2205	.halt_reg = 0x13004,2206	.halt_check = BRANCH_HALT_VOTED,2207	.clkr = {2208		.enable_reg = 0x0b004,2209		.enable_mask = BIT(8),2210		.hw.init = &(struct clk_init_data) {2211			.name = "gcc_prng_ahb_clk",2212			.parent_hws = (const struct clk_hw *[]) {2213				&pcnoc_clk_src.hw,2214			},2215			.num_parents = 1,2216			.flags = CLK_SET_RATE_PARENT,2217			.ops = &clk_branch2_ops,2218		},2219	},2220};2221 2222static struct clk_branch gcc_q6_ahb_clk = {2223	.halt_reg = 0x59138,2224	.clkr = {2225		.enable_reg = 0x59138,2226		.enable_mask = BIT(0),2227		.hw.init = &(struct clk_init_data) {2228			.name = "gcc_q6_ahb_clk",2229			.parent_hws = (const struct clk_hw *[]) {2230				&wcss_ahb_clk_src.clkr.hw,2231			},2232			.num_parents = 1,2233			.flags = CLK_SET_RATE_PARENT,2234			.ops = &clk_branch2_ops,2235		},2236	},2237};2238 2239static struct clk_branch gcc_q6_ahb_s_clk = {2240	.halt_reg = 0x5914c,2241	.clkr = {2242		.enable_reg = 0x5914c,2243		.enable_mask = BIT(0),2244		.hw.init = &(struct clk_init_data) {2245			.name = "gcc_q6_ahb_s_clk",2246			.parent_hws = (const struct clk_hw *[]) {2247				&wcss_ahb_clk_src.clkr.hw,2248			},2249			.num_parents = 1,2250			.flags = CLK_SET_RATE_PARENT,2251			.ops = &clk_branch2_ops,2252		},2253	},2254};2255 2256static struct clk_branch gcc_q6_axim_clk = {2257	.halt_reg = 0x5913c,2258	.clkr = {2259		.enable_reg = 0x5913c,2260		.enable_mask = BIT(0),2261		.hw.init = &(struct clk_init_data) {2262			.name = "gcc_q6_axim_clk",2263			.parent_hws = (const struct clk_hw *[]) {2264				&q6_axi_clk_src.clkr.hw,2265			},2266			.num_parents = 1,2267			.flags = CLK_SET_RATE_PARENT,2268			.ops = &clk_branch2_ops,2269		},2270	},2271};2272 2273static struct clk_branch gcc_q6_axim2_clk = {2274	.halt_reg = 0x59150,2275	.clkr = {2276		.enable_reg = 0x59150,2277		.enable_mask = BIT(0),2278		.hw.init = &(struct clk_init_data) {2279			.name = "gcc_q6_axim2_clk",2280			.parent_hws = (const struct clk_hw *[]) {2281				&q6_axi_clk_src.clkr.hw,2282			},2283			.num_parents = 1,2284			.flags = CLK_SET_RATE_PARENT,2285			.ops = &clk_branch2_ops,2286		},2287	},2288};2289 2290static struct clk_branch gcc_q6_axis_clk = {2291	.halt_reg = 0x59154,2292	.clkr = {2293		.enable_reg = 0x59154,2294		.enable_mask = BIT(0),2295		.hw.init = &(struct clk_init_data) {2296			.name = "gcc_q6_axis_clk",2297			.parent_hws = (const struct clk_hw *[]) {2298				&system_noc_clk_src.hw,2299			},2300			.num_parents = 1,2301			.flags = CLK_SET_RATE_PARENT,2302			.ops = &clk_branch2_ops,2303		},2304	},2305};2306 2307static struct clk_branch gcc_q6_tsctr_1to2_clk = {2308	.halt_reg = 0x59148,2309	.clkr = {2310		.enable_reg = 0x59148,2311		.enable_mask = BIT(0),2312		.hw.init = &(struct clk_init_data) {2313			.name = "gcc_q6_tsctr_1to2_clk",2314			.parent_hws = (const struct clk_hw *[]) {2315				&qdss_tsctr_div2_clk_src.hw,2316			},2317			.num_parents = 1,2318			.flags = CLK_SET_RATE_PARENT,2319			.ops = &clk_branch2_ops,2320		},2321	},2322};2323 2324static struct clk_branch gcc_q6ss_atbm_clk = {2325	.halt_reg = 0x59144,2326	.clkr = {2327		.enable_reg = 0x59144,2328		.enable_mask = BIT(0),2329		.hw.init = &(struct clk_init_data) {2330			.name = "gcc_q6ss_atbm_clk",2331			.parent_hws = (const struct clk_hw *[]) {2332				&qdss_at_clk_src.clkr.hw,2333			},2334			.num_parents = 1,2335			.flags = CLK_SET_RATE_PARENT,2336			.ops = &clk_branch2_ops,2337		},2338	},2339};2340 2341static struct clk_branch gcc_q6ss_pclkdbg_clk = {2342	.halt_reg = 0x59140,2343	.clkr = {2344		.enable_reg = 0x59140,2345		.enable_mask = BIT(0),2346		.hw.init = &(struct clk_init_data) {2347			.name = "gcc_q6ss_pclkdbg_clk",2348			.parent_hws = (const struct clk_hw *[]) {2349				&qdss_dap_sync_clk_src.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_q6ss_trig_clk = {2359	.halt_reg = 0x59128,2360	.clkr = {2361		.enable_reg = 0x59128,2362		.enable_mask = BIT(0),2363		.hw.init = &(struct clk_init_data) {2364			.name = "gcc_q6ss_trig_clk",2365			.parent_hws = (const struct clk_hw *[]) {2366				&qdss_dap_sync_clk_src.hw,2367			},2368			.num_parents = 1,2369			.flags = CLK_SET_RATE_PARENT,2370			.ops = &clk_branch2_ops,2371		},2372	},2373};2374 2375static struct clk_branch gcc_qdss_at_clk = {2376	.halt_reg = 0x29024,2377	.clkr = {2378		.enable_reg = 0x29024,2379		.enable_mask = BIT(0),2380		.hw.init = &(struct clk_init_data) {2381			.name = "gcc_qdss_at_clk",2382			.parent_hws = (const struct clk_hw *[]) {2383				&qdss_at_clk_src.clkr.hw,2384			},2385			.num_parents = 1,2386			.flags = CLK_SET_RATE_PARENT,2387			.ops = &clk_branch2_ops,2388		},2389	},2390};2391 2392static struct clk_branch gcc_qdss_dap_clk = {2393	.halt_reg = 0x29084,2394	.clkr = {2395		.enable_reg = 0x29084,2396		.enable_mask = BIT(0),2397		.hw.init = &(struct clk_init_data) {2398			.name = "gcc_qdss_dap_clk",2399			.parent_hws = (const struct clk_hw *[]) {2400				&qdss_tsctr_clk_src.clkr.hw,2401			},2402			.num_parents = 1,2403			.flags = CLK_SET_RATE_PARENT,2404			.ops = &clk_branch2_ops,2405		},2406	},2407};2408 2409static struct clk_branch gcc_qdss_cfg_ahb_clk = {2410	.halt_reg = 0x29008,2411	.clkr = {2412		.enable_reg = 0x29008,2413		.enable_mask = BIT(0),2414		.hw.init = &(struct clk_init_data) {2415			.name = "gcc_qdss_cfg_ahb_clk",2416			.parent_hws = (const struct clk_hw *[]) {2417				&pcnoc_clk_src.hw,2418			},2419			.num_parents = 1,2420			.flags = CLK_SET_RATE_PARENT,2421			.ops = &clk_branch2_ops,2422		},2423	},2424};2425 2426static struct clk_branch gcc_qdss_dap_ahb_clk = {2427	.halt_reg = 0x29004,2428	.clkr = {2429		.enable_reg = 0x29004,2430		.enable_mask = BIT(0),2431		.hw.init = &(struct clk_init_data) {2432			.name = "gcc_qdss_dap_ahb_clk",2433			.parent_hws = (const struct clk_hw *[]) {2434				&pcnoc_clk_src.hw,2435			},2436			.num_parents = 1,2437			.flags = CLK_SET_RATE_PARENT,2438			.ops = &clk_branch2_ops,2439		},2440	},2441};2442 2443static struct clk_branch gcc_qdss_etr_usb_clk = {2444	.halt_reg = 0x29028,2445	.clkr = {2446		.enable_reg = 0x29028,2447		.enable_mask = BIT(0),2448		.hw.init = &(struct clk_init_data) {2449			.name = "gcc_qdss_etr_usb_clk",2450			.parent_hws = (const struct clk_hw *[]) {2451				&system_noc_clk_src.hw,2452			},2453			.num_parents = 1,2454			.flags = CLK_SET_RATE_PARENT,2455			.ops = &clk_branch2_ops,2456		},2457	},2458};2459 2460static struct clk_branch gcc_qdss_eud_at_clk = {2461	.halt_reg = 0x29020,2462	.clkr = {2463		.enable_reg = 0x29020,2464		.enable_mask = BIT(0),2465		.hw.init = &(struct clk_init_data) {2466			.name = "gcc_qdss_eud_at_clk",2467			.parent_hws = (const struct clk_hw *[]) {2468				&eud_at_clk_src.hw,2469			},2470			.num_parents = 1,2471			.flags = CLK_SET_RATE_PARENT,2472			.ops = &clk_branch2_ops,2473		},2474	},2475};2476 2477static struct clk_branch gcc_qdss_stm_clk = {2478	.halt_reg = 0x29044,2479	.clkr = {2480		.enable_reg = 0x29044,2481		.enable_mask = BIT(0),2482		.hw.init = &(struct clk_init_data) {2483			.name = "gcc_qdss_stm_clk",2484			.parent_hws = (const struct clk_hw *[]) {2485				&qdss_stm_clk_src.clkr.hw,2486			},2487			.num_parents = 1,2488			.flags = CLK_SET_RATE_PARENT,2489			.ops = &clk_branch2_ops,2490		},2491	},2492};2493 2494static struct clk_branch gcc_qdss_traceclkin_clk = {2495	.halt_reg = 0x29060,2496	.clkr = {2497		.enable_reg = 0x29060,2498		.enable_mask = BIT(0),2499		.hw.init = &(struct clk_init_data) {2500			.name = "gcc_qdss_traceclkin_clk",2501			.parent_hws = (const struct clk_hw *[]) {2502				&qdss_traceclkin_clk_src.clkr.hw,2503			},2504			.num_parents = 1,2505			.flags = CLK_SET_RATE_PARENT,2506			.ops = &clk_branch2_ops,2507		},2508	},2509};2510 2511static struct clk_branch gcc_qdss_tsctr_div8_clk = {2512	.halt_reg = 0x2908c,2513	.clkr = {2514		.enable_reg = 0x2908c,2515		.enable_mask = BIT(0),2516		.hw.init = &(struct clk_init_data) {2517			.name = "gcc_qdss_tsctr_div8_clk",2518			.parent_hws = (const struct clk_hw *[]) {2519				&qdss_tsctr_clk_src.clkr.hw,2520			},2521			.num_parents = 1,2522			.flags = CLK_SET_RATE_PARENT,2523			.ops = &clk_branch2_ops,2524		},2525	},2526};2527 2528static struct clk_branch gcc_qpic_ahb_clk = {2529	.halt_reg = 0x57024,2530	.clkr = {2531		.enable_reg = 0x57024,2532		.enable_mask = BIT(0),2533		.hw.init = &(struct clk_init_data) {2534			.name = "gcc_qpic_ahb_clk",2535			.parent_hws = (const struct clk_hw *[]) {2536				&pcnoc_clk_src.hw,2537			},2538			.num_parents = 1,2539			.flags = CLK_SET_RATE_PARENT,2540			.ops = &clk_branch2_ops,2541		},2542	},2543};2544 2545static struct clk_branch gcc_qpic_clk = {2546	.halt_reg = 0x57020,2547	.clkr = {2548		.enable_reg = 0x57020,2549		.enable_mask = BIT(0),2550		.hw.init = &(struct clk_init_data) {2551			.name = "gcc_qpic_clk",2552			.parent_hws = (const struct clk_hw *[]) {2553				&pcnoc_clk_src.hw,2554			},2555			.num_parents = 1,2556			.flags = CLK_SET_RATE_PARENT,2557			.ops = &clk_branch2_ops,2558		},2559	},2560};2561 2562static struct clk_branch gcc_qpic_io_macro_clk = {2563	.halt_reg = 0x5701c,2564	.clkr = {2565		.enable_reg = 0x5701c,2566		.enable_mask = BIT(0),2567		.hw.init = &(struct clk_init_data) {2568			.name = "gcc_qpic_io_macro_clk",2569			.parent_hws = (const struct clk_hw *[]) {2570				&qpic_io_macro_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_sdcc1_ahb_clk = {2580	.halt_reg = 0x4201c,2581	.clkr = {2582		.enable_reg = 0x4201c,2583		.enable_mask = BIT(0),2584		.hw.init = &(struct clk_init_data) {2585			.name = "gcc_sdcc1_ahb_clk",2586			.parent_hws = (const struct clk_hw *[]) {2587				&pcnoc_clk_src.hw,2588			},2589			.num_parents = 1,2590			.flags = CLK_SET_RATE_PARENT,2591			.ops = &clk_branch2_ops,2592		},2593	},2594};2595 2596static struct clk_branch gcc_sdcc1_apps_clk = {2597	.halt_reg = 0x42018,2598	.clkr = {2599		.enable_reg = 0x42018,2600		.enable_mask = BIT(0),2601		.hw.init = &(struct clk_init_data) {2602			.name = "gcc_sdcc1_apps_clk",2603			.parent_hws = (const struct clk_hw *[]) {2604				&sdcc1_apps_clk_src.clkr.hw,2605			},2606			.num_parents = 1,2607			.flags = CLK_SET_RATE_PARENT,2608			.ops = &clk_branch2_ops,2609		},2610	},2611};2612 2613static struct clk_branch gcc_snoc_gmac0_ahb_clk = {2614	.halt_reg = 0x260a0,2615	.clkr = {2616		.enable_reg = 0x260a0,2617		.enable_mask = BIT(0),2618		.hw.init = &(struct clk_init_data) {2619			.name = "gcc_snoc_gmac0_ahb_clk",2620			.parent_hws = (const struct clk_hw *[]) {2621				&gmac_clk_src.clkr.hw,2622			},2623			.num_parents = 1,2624			.flags = CLK_SET_RATE_PARENT,2625			.ops = &clk_branch2_ops,2626		},2627	},2628};2629 2630static struct clk_branch gcc_snoc_gmac0_axi_clk = {2631	.halt_reg = 0x26084,2632	.clkr = {2633		.enable_reg = 0x26084,2634		.enable_mask = BIT(0),2635		.hw.init = &(struct clk_init_data) {2636			.name = "gcc_snoc_gmac0_axi_clk",2637			.parent_hws = (const struct clk_hw *[]) {2638				&gmac_clk_src.clkr.hw,2639			},2640			.num_parents = 1,2641			.flags = CLK_SET_RATE_PARENT,2642			.ops = &clk_branch2_ops,2643		},2644	},2645};2646 2647static struct clk_branch gcc_snoc_gmac1_ahb_clk = {2648	.halt_reg = 0x260a4,2649	.clkr = {2650		.enable_reg = 0x260a4,2651		.enable_mask = BIT(0),2652		.hw.init = &(struct clk_init_data) {2653			.name = "gcc_snoc_gmac1_ahb_clk",2654			.parent_hws = (const struct clk_hw *[]) {2655				&gmac_clk_src.clkr.hw,2656			},2657			.num_parents = 1,2658			.flags = CLK_SET_RATE_PARENT,2659			.ops = &clk_branch2_ops,2660		},2661	},2662};2663 2664static struct clk_branch gcc_snoc_gmac1_axi_clk = {2665	.halt_reg = 0x26088,2666	.clkr = {2667		.enable_reg = 0x26088,2668		.enable_mask = BIT(0),2669		.hw.init = &(struct clk_init_data) {2670			.name = "gcc_snoc_gmac1_axi_clk",2671			.parent_hws = (const struct clk_hw *[]) {2672				&gmac_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_snoc_lpass_axim_clk = {2682	.halt_reg = 0x26074,2683	.clkr = {2684		.enable_reg = 0x26074,2685		.enable_mask = BIT(0),2686		.hw.init = &(struct clk_init_data) {2687			.name = "gcc_snoc_lpass_axim_clk",2688			.parent_hws = (const struct clk_hw *[]) {2689				&lpass_axim_clk_src.clkr.hw,2690			},2691			.num_parents = 1,2692			.flags = CLK_SET_RATE_PARENT,2693			.ops = &clk_branch2_ops,2694		},2695	},2696};2697 2698static struct clk_branch gcc_snoc_lpass_sway_clk = {2699	.halt_reg = 0x26078,2700	.clkr = {2701		.enable_reg = 0x26078,2702		.enable_mask = BIT(0),2703		.hw.init = &(struct clk_init_data) {2704			.name = "gcc_snoc_lpass_sway_clk",2705			.parent_hws = (const struct clk_hw *[]) {2706				&lpass_sway_clk_src.clkr.hw,2707			},2708			.num_parents = 1,2709			.flags = CLK_SET_RATE_PARENT,2710			.ops = &clk_branch2_ops,2711		},2712	},2713};2714 2715static struct clk_branch gcc_snoc_ubi0_axi_clk = {2716	.halt_reg = 0x26094,2717	.clkr = {2718		.enable_reg = 0x26094,2719		.enable_mask = BIT(0),2720		.hw.init = &(struct clk_init_data) {2721			.name = "gcc_snoc_ubi0_axi_clk",2722			.parent_hws = (const struct clk_hw *[]) {2723				&ubi0_axi_clk_src.clkr.hw,2724			},2725			.num_parents = 1,2726			.flags = CLK_SET_RATE_PARENT,2727			.ops = &clk_branch2_ops,2728		},2729	},2730};2731 2732static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {2733	.halt_reg = 0x26048,2734	.clkr = {2735		.enable_reg = 0x26048,2736		.enable_mask = BIT(0),2737		.hw.init = &(struct clk_init_data) {2738			.name = "gcc_sys_noc_pcie0_axi_clk",2739			.parent_hws = (const struct clk_hw *[]) {2740				&pcie0_axi_clk_src.clkr.hw,2741			},2742			.num_parents = 1,2743			.flags = CLK_SET_RATE_PARENT,2744			.ops = &clk_branch2_ops,2745		},2746	},2747};2748 2749static struct clk_branch gcc_sys_noc_pcie1_axi_clk = {2750	.halt_reg = 0x2604c,2751	.clkr = {2752		.enable_reg = 0x2604c,2753		.enable_mask = BIT(0),2754		.hw.init = &(struct clk_init_data) {2755			.name = "gcc_sys_noc_pcie1_axi_clk",2756			.parent_hws = (const struct clk_hw *[]) {2757				&pcie1_axi_clk_src.clkr.hw,2758			},2759			.num_parents = 1,2760			.flags = CLK_SET_RATE_PARENT,2761			.ops = &clk_branch2_ops,2762		},2763	},2764};2765 2766static struct clk_branch gcc_sys_noc_qdss_stm_axi_clk = {2767	.halt_reg = 0x26024,2768	.clkr = {2769		.enable_reg = 0x26024,2770		.enable_mask = BIT(0),2771		.hw.init = &(struct clk_init_data) {2772			.name = "gcc_sys_noc_qdss_stm_axi_clk",2773			.parent_hws = (const struct clk_hw *[]) {2774				&qdss_stm_clk_src.clkr.hw,2775			},2776			.num_parents = 1,2777			.flags = CLK_SET_RATE_PARENT,2778			.ops = &clk_branch2_ops,2779		},2780	},2781};2782 2783static struct clk_branch gcc_sys_noc_usb0_axi_clk = {2784	.halt_reg = 0x26040,2785	.clkr = {2786		.enable_reg = 0x26040,2787		.enable_mask = BIT(0),2788		.hw.init = &(struct clk_init_data) {2789			.name = "gcc_sys_noc_usb0_axi_clk",2790			.parent_hws = (const struct clk_hw *[]) {2791				&usb0_master_clk_src.clkr.hw,2792			},2793			.num_parents = 1,2794			.flags = CLK_SET_RATE_PARENT,2795			.ops = &clk_branch2_ops,2796		},2797	},2798};2799 2800static struct clk_branch gcc_sys_noc_wcss_ahb_clk = {2801	.halt_reg = 0x26034,2802	.clkr = {2803		.enable_reg = 0x26034,2804		.enable_mask = BIT(0),2805		.hw.init = &(struct clk_init_data) {2806			.name = "gcc_sys_noc_wcss_ahb_clk",2807			.parent_hws = (const struct clk_hw *[]) {2808				&wcss_ahb_clk_src.clkr.hw,2809			},2810			.num_parents = 1,2811			.flags = CLK_SET_RATE_PARENT,2812			.ops = &clk_branch2_ops,2813		},2814	},2815};2816 2817static struct clk_branch gcc_ubi0_axi_clk = {2818	.halt_reg = 0x68200,2819	.halt_check = BRANCH_HALT_DELAY,2820	.clkr = {2821		.enable_reg = 0x68200,2822		.enable_mask = BIT(0),2823		.hw.init = &(struct clk_init_data) {2824			.name = "gcc_ubi0_axi_clk",2825			.parent_hws = (const struct clk_hw *[]) {2826				&ubi0_axi_clk_src.clkr.hw,2827			},2828			.num_parents = 1,2829			.flags = CLK_SET_RATE_PARENT,2830			.ops = &clk_branch2_ops,2831		},2832	},2833};2834 2835static struct clk_branch gcc_ubi0_cfg_clk = {2836	.halt_reg = 0x68160,2837	.halt_check = BRANCH_HALT_DELAY,2838	.clkr = {2839		.enable_reg = 0x68160,2840		.enable_mask = BIT(0),2841		.hw.init = &(struct clk_init_data) {2842			.name = "gcc_ubi0_cfg_clk",2843			.parent_hws = (const struct clk_hw *[]) {2844				&pcnoc_clk_src.hw,2845			},2846			.num_parents = 1,2847			.flags = CLK_SET_RATE_PARENT,2848			.ops = &clk_branch2_ops,2849		},2850	},2851};2852 2853static struct clk_branch gcc_ubi0_dbg_clk = {2854	.halt_reg = 0x68214,2855	.halt_check = BRANCH_HALT_DELAY,2856	.clkr = {2857		.enable_reg = 0x68214,2858		.enable_mask = BIT(0),2859		.hw.init = &(struct clk_init_data) {2860			.name = "gcc_ubi0_dbg_clk",2861			.parent_hws = (const struct clk_hw *[]) {2862				&qdss_tsctr_clk_src.clkr.hw,2863			},2864			.num_parents = 1,2865			.flags = CLK_SET_RATE_PARENT,2866			.ops = &clk_branch2_ops,2867		},2868	},2869};2870 2871static struct clk_branch gcc_ubi0_core_clk = {2872	.halt_reg = 0x68210,2873	.halt_check = BRANCH_HALT_DELAY,2874	.clkr = {2875		.enable_reg = 0x68210,2876		.enable_mask = BIT(0),2877		.hw.init = &(struct clk_init_data) {2878			.name = "gcc_ubi0_core_clk",2879			.parent_hws = (const struct clk_hw *[]) {2880				&ubi0_core_clk_src.clkr.hw,2881			},2882			.num_parents = 1,2883			.flags = CLK_SET_RATE_PARENT,2884			.ops = &clk_branch2_ops,2885		},2886	},2887};2888 2889static struct clk_branch gcc_ubi0_nc_axi_clk = {2890	.halt_reg = 0x68204,2891	.halt_check = BRANCH_HALT_DELAY,2892	.clkr = {2893		.enable_reg = 0x68204,2894		.enable_mask = BIT(0),2895		.hw.init = &(struct clk_init_data) {2896			.name = "gcc_ubi0_nc_axi_clk",2897			.parent_hws = (const struct clk_hw *[]) {2898				&system_noc_clk_src.hw,2899			},2900			.num_parents = 1,2901			.flags = CLK_SET_RATE_PARENT,2902			.ops = &clk_branch2_ops,2903		},2904	},2905};2906 2907static struct clk_branch gcc_ubi0_utcm_clk = {2908	.halt_reg = 0x68208,2909	.halt_check = BRANCH_HALT_DELAY,2910	.clkr = {2911		.enable_reg = 0x68208,2912		.enable_mask = BIT(0),2913		.hw.init = &(struct clk_init_data) {2914			.name = "gcc_ubi0_utcm_clk",2915			.parent_hws = (const struct clk_hw *[]) {2916				&system_noc_clk_src.hw,2917			},2918			.num_parents = 1,2919			.flags = CLK_SET_RATE_PARENT,2920			.ops = &clk_branch2_ops,2921		},2922	},2923};2924 2925static struct clk_branch gcc_uniphy_ahb_clk = {2926	.halt_reg = 0x56108,2927	.clkr = {2928		.enable_reg = 0x56108,2929		.enable_mask = BIT(0),2930		.hw.init = &(struct clk_init_data) {2931			.name = "gcc_uniphy_ahb_clk",2932			.parent_hws = (const struct clk_hw *[]) {2933				&pcnoc_clk_src.hw,2934			},2935			.num_parents = 1,2936			.flags = CLK_SET_RATE_PARENT,2937			.ops = &clk_branch2_ops,2938		},2939	},2940};2941 2942static struct clk_branch gcc_uniphy_rx_clk = {2943	.halt_reg = 0x56110,2944	.clkr = {2945		.enable_reg = 0x56110,2946		.enable_mask = BIT(0),2947		.hw.init = &(struct clk_init_data) {2948			.name = "gcc_uniphy_rx_clk",2949			.parent_hws = (const struct clk_hw *[]) {2950				&gmac1_rx_div_clk_src.clkr.hw,2951			},2952			.num_parents = 1,2953			.ops = &clk_branch2_ops,2954			.flags = CLK_SET_RATE_PARENT,2955		},2956	},2957};2958 2959static struct clk_branch gcc_uniphy_tx_clk = {2960	.halt_reg = 0x56114,2961	.clkr = {2962		.enable_reg = 0x56114,2963		.enable_mask = BIT(0),2964		.hw.init = &(struct clk_init_data) {2965			.name = "gcc_uniphy_tx_clk",2966			.parent_hws = (const struct clk_hw *[]) {2967				&gmac1_tx_div_clk_src.clkr.hw,2968			},2969			.num_parents = 1,2970			.ops = &clk_branch2_ops,2971			.flags = CLK_SET_RATE_PARENT,2972		},2973	},2974};2975 2976static struct clk_branch gcc_uniphy_sys_clk = {2977	.halt_reg = 0x5610c,2978	.clkr = {2979		.enable_reg = 0x5610c,2980		.enable_mask = BIT(0),2981		.hw.init = &(struct clk_init_data) {2982			.name = "gcc_uniphy_sys_clk",2983			.parent_hws = (const struct clk_hw *[]) {2984				&gcc_xo_clk_src.clkr.hw,2985			},2986			.num_parents = 1,2987			.flags = CLK_SET_RATE_PARENT,2988			.ops = &clk_branch2_ops,2989		},2990	},2991};2992 2993static struct clk_branch gcc_usb0_aux_clk = {2994	.halt_reg = 0x3e044,2995	.clkr = {2996		.enable_reg = 0x3e044,2997		.enable_mask = BIT(0),2998		.hw.init = &(struct clk_init_data) {2999			.name = "gcc_usb0_aux_clk",3000			.parent_hws = (const struct clk_hw *[]) {3001				&usb0_aux_clk_src.clkr.hw,3002			},3003			.num_parents = 1,3004			.flags = CLK_SET_RATE_PARENT,3005			.ops = &clk_branch2_ops,3006		},3007	},3008};3009 3010static struct clk_branch gcc_usb0_eud_at_clk = {3011	.halt_reg = 0x3e04c,3012	.halt_check = BRANCH_HALT_VOTED,3013	.clkr = {3014		.enable_reg = 0x3e04c,3015		.enable_mask = BIT(0),3016		.hw.init = &(struct clk_init_data) {3017			.name = "gcc_usb0_eud_at_clk",3018			.parent_hws = (const struct clk_hw *[]) {3019				&eud_at_clk_src.hw,3020			},3021			.num_parents = 1,3022			.flags = CLK_SET_RATE_PARENT,3023			.ops = &clk_branch2_ops,3024		},3025	},3026};3027 3028static struct clk_branch gcc_usb0_lfps_clk = {3029	.halt_reg = 0x3e050,3030	.clkr = {3031		.enable_reg = 0x3e050,3032		.enable_mask = BIT(0),3033		.hw.init = &(struct clk_init_data) {3034			.name = "gcc_usb0_lfps_clk",3035			.parent_hws = (const struct clk_hw *[]) {3036				&usb0_lfps_clk_src.clkr.hw,3037			},3038			.num_parents = 1,3039			.flags = CLK_SET_RATE_PARENT,3040			.ops = &clk_branch2_ops,3041		},3042	},3043};3044 3045static struct clk_branch gcc_usb0_master_clk = {3046	.halt_reg = 0x3e000,3047	.clkr = {3048		.enable_reg = 0x3e000,3049		.enable_mask = BIT(0),3050		.hw.init = &(struct clk_init_data) {3051			.name = "gcc_usb0_master_clk",3052			.parent_hws = (const struct clk_hw *[]) {3053				&usb0_master_clk_src.clkr.hw,3054			},3055			.num_parents = 1,3056			.flags = CLK_SET_RATE_PARENT,3057			.ops = &clk_branch2_ops,3058		},3059	},3060};3061 3062static struct clk_branch gcc_usb0_mock_utmi_clk = {3063	.halt_reg = 0x3e008,3064	.clkr = {3065		.enable_reg = 0x3e008,3066		.enable_mask = BIT(0),3067		.hw.init = &(struct clk_init_data) {3068			.name = "gcc_usb0_mock_utmi_clk",3069			.parent_hws = (const struct clk_hw *[]) {3070				&usb0_mock_utmi_clk_src.clkr.hw,3071			},3072			.num_parents = 1,3073			.flags = CLK_SET_RATE_PARENT,3074			.ops = &clk_branch2_ops,3075		},3076	},3077};3078 3079static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {3080	.halt_reg = 0x3e080,3081	.clkr = {3082		.enable_reg = 0x3e080,3083		.enable_mask = BIT(0),3084		.hw.init = &(struct clk_init_data) {3085			.name = "gcc_usb0_phy_cfg_ahb_clk",3086			.parent_hws = (const struct clk_hw *[]) {3087				&pcnoc_clk_src.hw,3088			},3089			.num_parents = 1,3090			.flags = CLK_SET_RATE_PARENT,3091			.ops = &clk_branch2_ops,3092		},3093	},3094};3095 3096static struct clk_branch gcc_usb0_sleep_clk = {3097	.halt_reg = 0x3e004,3098	.clkr = {3099		.enable_reg = 0x3e004,3100		.enable_mask = BIT(0),3101		.hw.init = &(struct clk_init_data) {3102			.name = "gcc_usb0_sleep_clk",3103			.parent_hws = (const struct clk_hw *[]) {3104				&gcc_sleep_clk_src.clkr.hw,3105			},3106			.num_parents = 1,3107			.flags = CLK_SET_RATE_PARENT,3108			.ops = &clk_branch2_ops,3109		},3110	},3111};3112 3113static struct clk_branch gcc_usb0_pipe_clk = {3114	.halt_reg = 0x3e040,3115	.halt_check = BRANCH_HALT_DELAY,3116	.clkr = {3117		.enable_reg = 0x3e040,3118		.enable_mask = BIT(0),3119		.hw.init = &(struct clk_init_data) {3120			.name = "gcc_usb0_pipe_clk",3121			.parent_hws = (const struct clk_hw *[]) {3122				&usb0_pipe_clk_src.clkr.hw,3123			},3124			.num_parents = 1,3125			.flags = CLK_SET_RATE_PARENT,3126			.ops = &clk_branch2_ops,3127		},3128	},3129};3130 3131static struct clk_branch gcc_wcss_acmt_clk = {3132	.halt_reg = 0x59064,3133	.clkr = {3134		.enable_reg = 0x59064,3135		.enable_mask = BIT(0),3136		.hw.init = &(struct clk_init_data) {3137			.name = "gcc_wcss_acmt_clk",3138			.parent_hws = (const struct clk_hw *[]) {3139				&wcss_ahb_clk_src.clkr.hw,3140			},3141			.num_parents = 1,3142			.flags = CLK_SET_RATE_PARENT,3143			.ops = &clk_branch2_ops,3144		},3145	},3146};3147 3148static struct clk_branch gcc_wcss_ahb_s_clk = {3149	.halt_reg = 0x59034,3150	.clkr = {3151		.enable_reg = 0x59034,3152		.enable_mask = BIT(0),3153		.hw.init = &(struct clk_init_data) {3154			.name = "gcc_wcss_ahb_s_clk",3155			.parent_hws = (const struct clk_hw *[]) {3156				&wcss_ahb_clk_src.clkr.hw,3157			},3158			.num_parents = 1,3159			.flags = CLK_SET_RATE_PARENT,3160			.ops = &clk_branch2_ops,3161		},3162	},3163};3164 3165static struct clk_branch gcc_wcss_axi_m_clk = {3166	.halt_reg = 0x5903c,3167	.clkr = {3168		.enable_reg = 0x5903c,3169		.enable_mask = BIT(0),3170		.hw.init = &(struct clk_init_data) {3171			.name = "gcc_wcss_axi_m_clk",3172			.parent_hws = (const struct clk_hw *[]) {3173				&system_noc_clk_src.hw,3174			},3175			.num_parents = 1,3176			.flags = CLK_SET_RATE_PARENT,3177			.ops = &clk_branch2_ops,3178		},3179	},3180};3181 3182static struct clk_branch gcc_wcss_axi_s_clk = {3183	.halt_reg = 0x59068,3184	.clkr = {3185		.enable_reg = 0x59068,3186		.enable_mask = BIT(0),3187		.hw.init = &(struct clk_init_data) {3188			.name = "gcc_wi_s_clk",3189			.parent_hws = (const struct clk_hw *[]) {3190				&system_noc_clk_src.hw,3191			},3192			.num_parents = 1,3193			.flags = CLK_SET_RATE_PARENT,3194			.ops = &clk_branch2_ops,3195		},3196	},3197};3198 3199static struct clk_branch gcc_wcss_dbg_ifc_apb_bdg_clk = {3200	.halt_reg = 0x59050,3201	.clkr = {3202		.enable_reg = 0x59050,3203		.enable_mask = BIT(0),3204		.hw.init = &(struct clk_init_data) {3205			.name = "gcc_wcss_dbg_ifc_apb_bdg_clk",3206			.parent_hws = (const struct clk_hw *[]) {3207				&qdss_dap_sync_clk_src.hw,3208			},3209			.num_parents = 1,3210			.flags = CLK_SET_RATE_PARENT,3211			.ops = &clk_branch2_ops,3212		},3213	},3214};3215 3216static struct clk_branch gcc_wcss_dbg_ifc_apb_clk = {3217	.halt_reg = 0x59040,3218	.clkr = {3219		.enable_reg = 0x59040,3220		.enable_mask = BIT(0),3221		.hw.init = &(struct clk_init_data) {3222			.name = "gcc_wcss_dbg_ifc_apb_clk",3223			.parent_hws = (const struct clk_hw *[]) {3224				&qdss_dap_sync_clk_src.hw,3225			},3226			.num_parents = 1,3227			.flags = CLK_SET_RATE_PARENT,3228			.ops = &clk_branch2_ops,3229		},3230	},3231};3232 3233static struct clk_branch gcc_wcss_dbg_ifc_atb_bdg_clk = {3234	.halt_reg = 0x59054,3235	.clkr = {3236		.enable_reg = 0x59054,3237		.enable_mask = BIT(0),3238		.hw.init = &(struct clk_init_data) {3239			.name = "gcc_wcss_dbg_ifc_atb_bdg_clk",3240			.parent_hws = (const struct clk_hw *[]) {3241				&qdss_at_clk_src.clkr.hw,3242			},3243			.num_parents = 1,3244			.flags = CLK_SET_RATE_PARENT,3245			.ops = &clk_branch2_ops,3246		},3247	},3248};3249 3250static struct clk_branch gcc_wcss_dbg_ifc_atb_clk = {3251	.halt_reg = 0x59044,3252	.clkr = {3253		.enable_reg = 0x59044,3254		.enable_mask = BIT(0),3255		.hw.init = &(struct clk_init_data) {3256			.name = "gcc_wcss_dbg_ifc_atb_clk",3257			.parent_hws = (const struct clk_hw *[]) {3258				&qdss_at_clk_src.clkr.hw,3259			},3260			.num_parents = 1,3261			.flags = CLK_SET_RATE_PARENT,3262			.ops = &clk_branch2_ops,3263		},3264	},3265};3266 3267static struct clk_branch gcc_wcss_dbg_ifc_dapbus_bdg_clk = {3268	.halt_reg = 0x59060,3269	.clkr = {3270		.enable_reg = 0x59060,3271		.enable_mask = BIT(0),3272		.hw.init = &(struct clk_init_data) {3273			.name = "gcc_wcss_dbg_ifc_dapbus_bdg_clk",3274			.parent_hws = (const struct clk_hw *[]) {3275				&qdss_dap_sync_clk_src.hw,3276			},3277			.num_parents = 1,3278			.flags = CLK_SET_RATE_PARENT,3279			.ops = &clk_branch2_ops,3280		},3281	},3282};3283 3284static struct clk_branch gcc_wcss_dbg_ifc_dapbus_clk = {3285	.halt_reg = 0x5905c,3286	.clkr = {3287		.enable_reg = 0x5905c,3288		.enable_mask = BIT(0),3289		.hw.init = &(struct clk_init_data) {3290			.name = "gcc_wcss_dbg_ifc_dapbus_clk",3291			.parent_hws = (const struct clk_hw *[]) {3292				&qdss_dap_sync_clk_src.hw,3293			},3294			.num_parents = 1,3295			.flags = CLK_SET_RATE_PARENT,3296			.ops = &clk_branch2_ops,3297		},3298	},3299};3300 3301static struct clk_branch gcc_wcss_dbg_ifc_nts_bdg_clk = {3302	.halt_reg = 0x59058,3303	.clkr = {3304		.enable_reg = 0x59058,3305		.enable_mask = BIT(0),3306		.hw.init = &(struct clk_init_data) {3307			.name = "gcc_wcss_dbg_ifc_nts_bdg_clk",3308			.parent_hws = (const struct clk_hw *[]) {3309				&qdss_tsctr_div2_clk_src.hw,3310			},3311			.num_parents = 1,3312			.flags = CLK_SET_RATE_PARENT,3313			.ops = &clk_branch2_ops,3314		},3315	},3316};3317 3318static struct clk_branch gcc_wcss_dbg_ifc_nts_clk = {3319	.halt_reg = 0x59048,3320	.clkr = {3321		.enable_reg = 0x59048,3322		.enable_mask = BIT(0),3323		.hw.init = &(struct clk_init_data) {3324			.name = "gcc_wcss_dbg_ifc_nts_clk",3325			.parent_hws = (const struct clk_hw *[]) {3326				&qdss_tsctr_div2_clk_src.hw,3327			},3328			.num_parents = 1,3329			.flags = CLK_SET_RATE_PARENT,3330			.ops = &clk_branch2_ops,3331		},3332	},3333};3334 3335static struct clk_branch gcc_wcss_ecahb_clk = {3336	.halt_reg = 0x59038,3337	.clkr = {3338		.enable_reg = 0x59038,3339		.enable_mask = BIT(0),3340		.hw.init = &(struct clk_init_data) {3341			.name = "gcc_wcss_ecahb_clk",3342			.parent_hws = (const struct clk_hw *[]) {3343				&wcss_ahb_clk_src.clkr.hw,3344			},3345			.num_parents = 1,3346			.flags = CLK_SET_RATE_PARENT,3347			.ops = &clk_branch2_ops,3348		},3349	},3350};3351 3352static struct clk_hw *gcc_ipq5018_hws[] = {3353	&gpll0_out_main_div2.hw,3354	&pcnoc_clk_src.hw,3355	&system_noc_clk_src.hw,3356	&qdss_dap_sync_clk_src.hw,3357	&qdss_tsctr_div2_clk_src.hw,3358	&eud_at_clk_src.hw,3359};3360 3361static const struct alpha_pll_config ubi32_pll_config = {3362	.l = 0x29,3363	.alpha = 0xaaaaaaaa,3364	.alpha_hi = 0xaa,3365	.config_ctl_val = 0x4001075b,3366	.main_output_mask = BIT(0),3367	.aux_output_mask = BIT(1),3368	.alpha_en_mask = BIT(24),3369	.vco_val = 0x1,3370	.vco_mask = GENMASK(21, 20),3371	.test_ctl_val = 0x0,3372	.test_ctl_hi_val = 0x0,3373};3374 3375static struct clk_regmap *gcc_ipq5018_clks[] = {3376	[GPLL0_MAIN] = &gpll0_main.clkr,3377	[GPLL0] = &gpll0.clkr,3378	[GPLL2_MAIN] = &gpll2_main.clkr,3379	[GPLL2] = &gpll2.clkr,3380	[GPLL4_MAIN] = &gpll4_main.clkr,3381	[GPLL4] = &gpll4.clkr,3382	[UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,3383	[UBI32_PLL] = &ubi32_pll.clkr,3384	[ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,3385	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,3386	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,3387	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,3388	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,3389	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,3390	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,3391	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,3392	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,3393	[CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,3394	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,3395	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,3396	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,3397	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,3398	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,3399	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,3400	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,3401	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,3402	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,3403	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,3404	[GCC_BTSS_LPO_CLK] = &gcc_btss_lpo_clk.clkr,3405	[GCC_CMN_BLK_AHB_CLK] = &gcc_cmn_blk_ahb_clk.clkr,3406	[GCC_CMN_BLK_SYS_CLK] = &gcc_cmn_blk_sys_clk.clkr,3407	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,3408	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,3409	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,3410	[GCC_DCC_CLK] = &gcc_dcc_clk.clkr,3411	[GCC_GEPHY_RX_CLK] = &gcc_gephy_rx_clk.clkr,3412	[GCC_GEPHY_TX_CLK] = &gcc_gephy_tx_clk.clkr,3413	[GCC_GMAC0_CFG_CLK] = &gcc_gmac0_cfg_clk.clkr,3414	[GCC_GMAC0_PTP_CLK] = &gcc_gmac0_ptp_clk.clkr,3415	[GCC_GMAC0_RX_CLK] = &gcc_gmac0_rx_clk.clkr,3416	[GCC_GMAC0_SYS_CLK] = &gcc_gmac0_sys_clk.clkr,3417	[GCC_GMAC0_TX_CLK] = &gcc_gmac0_tx_clk.clkr,3418	[GCC_GMAC1_CFG_CLK] = &gcc_gmac1_cfg_clk.clkr,3419	[GCC_GMAC1_PTP_CLK] = &gcc_gmac1_ptp_clk.clkr,3420	[GCC_GMAC1_RX_CLK] = &gcc_gmac1_rx_clk.clkr,3421	[GCC_GMAC1_SYS_CLK] = &gcc_gmac1_sys_clk.clkr,3422	[GCC_GMAC1_TX_CLK] = &gcc_gmac1_tx_clk.clkr,3423	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3424	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3425	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3426	[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,3427	[GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,3428	[GCC_MDIO0_AHB_CLK] = &gcc_mdio0_ahb_clk.clkr,3429	[GCC_MDIO1_AHB_CLK] = &gcc_mdio1_ahb_clk.clkr,3430	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,3431	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,3432	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,3433	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,3434	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,3435	[GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,3436	[GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,3437	[GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,3438	[GCC_PCIE1_AXI_S_BRIDGE_CLK] = &gcc_pcie1_axi_s_bridge_clk.clkr,3439	[GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,3440	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,3441	[GCC_Q6_AXIM_CLK] = &gcc_q6_axim_clk.clkr,3442	[GCC_Q6_AXIM2_CLK] = &gcc_q6_axim2_clk.clkr,3443	[GCC_Q6_AXIS_CLK] = &gcc_q6_axis_clk.clkr,3444	[GCC_Q6_AHB_CLK] = &gcc_q6_ahb_clk.clkr,3445	[GCC_Q6_AHB_S_CLK] = &gcc_q6_ahb_s_clk.clkr,3446	[GCC_Q6_TSCTR_1TO2_CLK] = &gcc_q6_tsctr_1to2_clk.clkr,3447	[GCC_Q6SS_ATBM_CLK] = &gcc_q6ss_atbm_clk.clkr,3448	[GCC_Q6SS_PCLKDBG_CLK] = &gcc_q6ss_pclkdbg_clk.clkr,3449	[GCC_Q6SS_TRIG_CLK] = &gcc_q6ss_trig_clk.clkr,3450	[GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,3451	[GCC_QDSS_CFG_AHB_CLK] = &gcc_qdss_cfg_ahb_clk.clkr,3452	[GCC_QDSS_DAP_AHB_CLK] = &gcc_qdss_dap_ahb_clk.clkr,3453	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,3454	[GCC_QDSS_ETR_USB_CLK] = &gcc_qdss_etr_usb_clk.clkr,3455	[GCC_QDSS_EUD_AT_CLK] = &gcc_qdss_eud_at_clk.clkr,3456	[GCC_QDSS_STM_CLK] = &gcc_qdss_stm_clk.clkr,3457	[GCC_QDSS_TRACECLKIN_CLK] = &gcc_qdss_traceclkin_clk.clkr,3458	[GCC_QDSS_TSCTR_DIV8_CLK] = &gcc_qdss_tsctr_div8_clk.clkr,3459	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,3460	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,3461	[GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,3462	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,3463	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,3464	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,3465	[GCC_SNOC_GMAC0_AHB_CLK] = &gcc_snoc_gmac0_ahb_clk.clkr,3466	[GCC_SNOC_GMAC0_AXI_CLK] = &gcc_snoc_gmac0_axi_clk.clkr,3467	[GCC_SNOC_GMAC1_AHB_CLK] = &gcc_snoc_gmac1_ahb_clk.clkr,3468	[GCC_SNOC_GMAC1_AXI_CLK] = &gcc_snoc_gmac1_axi_clk.clkr,3469	[GCC_SNOC_LPASS_AXIM_CLK] = &gcc_snoc_lpass_axim_clk.clkr,3470	[GCC_SNOC_LPASS_SWAY_CLK] = &gcc_snoc_lpass_sway_clk.clkr,3471	[GCC_SNOC_UBI0_AXI_CLK] = &gcc_snoc_ubi0_axi_clk.clkr,3472	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,3473	[GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr,3474	[GCC_SYS_NOC_QDSS_STM_AXI_CLK] = &gcc_sys_noc_qdss_stm_axi_clk.clkr,3475	[GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,3476	[GCC_SYS_NOC_WCSS_AHB_CLK] = &gcc_sys_noc_wcss_ahb_clk.clkr,3477	[GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,3478	[GCC_UBI0_CFG_CLK] = &gcc_ubi0_cfg_clk.clkr,3479	[GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,3480	[GCC_UBI0_DBG_CLK] = &gcc_ubi0_dbg_clk.clkr,3481	[GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,3482	[GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,3483	[GCC_UNIPHY_AHB_CLK] = &gcc_uniphy_ahb_clk.clkr,3484	[GCC_UNIPHY_RX_CLK] = &gcc_uniphy_rx_clk.clkr,3485	[GCC_UNIPHY_SYS_CLK] = &gcc_uniphy_sys_clk.clkr,3486	[GCC_UNIPHY_TX_CLK] = &gcc_uniphy_tx_clk.clkr,3487	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,3488	[GCC_USB0_EUD_AT_CLK] = &gcc_usb0_eud_at_clk.clkr,3489	[GCC_USB0_LFPS_CLK] = &gcc_usb0_lfps_clk.clkr,3490	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,3491	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,3492	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,3493	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,3494	[GCC_WCSS_ACMT_CLK] = &gcc_wcss_acmt_clk.clkr,3495	[GCC_WCSS_AHB_S_CLK] = &gcc_wcss_ahb_s_clk.clkr,3496	[GCC_WCSS_AXI_M_CLK] = &gcc_wcss_axi_m_clk.clkr,3497	[GCC_WCSS_AXI_S_CLK] = &gcc_wcss_axi_s_clk.clkr,3498	[GCC_WCSS_DBG_IFC_APB_BDG_CLK] = &gcc_wcss_dbg_ifc_apb_bdg_clk.clkr,3499	[GCC_WCSS_DBG_IFC_APB_CLK] = &gcc_wcss_dbg_ifc_apb_clk.clkr,3500	[GCC_WCSS_DBG_IFC_ATB_BDG_CLK] = &gcc_wcss_dbg_ifc_atb_bdg_clk.clkr,3501	[GCC_WCSS_DBG_IFC_ATB_CLK] = &gcc_wcss_dbg_ifc_atb_clk.clkr,3502	[GCC_WCSS_DBG_IFC_DAPBUS_BDG_CLK] = &gcc_wcss_dbg_ifc_dapbus_bdg_clk.clkr,3503	[GCC_WCSS_DBG_IFC_DAPBUS_CLK] = &gcc_wcss_dbg_ifc_dapbus_clk.clkr,3504	[GCC_WCSS_DBG_IFC_NTS_BDG_CLK] = &gcc_wcss_dbg_ifc_nts_bdg_clk.clkr,3505	[GCC_WCSS_DBG_IFC_NTS_CLK] = &gcc_wcss_dbg_ifc_nts_clk.clkr,3506	[GCC_WCSS_ECAHB_CLK] = &gcc_wcss_ecahb_clk.clkr,3507	[GCC_XO_CLK] = &gcc_xo_clk.clkr,3508	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,3509	[GMAC0_RX_CLK_SRC] = &gmac0_rx_clk_src.clkr,3510	[GMAC0_RX_DIV_CLK_SRC] = &gmac0_rx_div_clk_src.clkr,3511	[GMAC0_TX_CLK_SRC] = &gmac0_tx_clk_src.clkr,3512	[GMAC0_TX_DIV_CLK_SRC] = &gmac0_tx_div_clk_src.clkr,3513	[GMAC1_RX_CLK_SRC] = &gmac1_rx_clk_src.clkr,3514	[GMAC1_RX_DIV_CLK_SRC] = &gmac1_rx_div_clk_src.clkr,3515	[GMAC1_TX_CLK_SRC] = &gmac1_tx_clk_src.clkr,3516	[GMAC1_TX_DIV_CLK_SRC] = &gmac1_tx_div_clk_src.clkr,3517	[GMAC_CLK_SRC] = &gmac_clk_src.clkr,3518	[GP1_CLK_SRC] = &gp1_clk_src.clkr,3519	[GP2_CLK_SRC] = &gp2_clk_src.clkr,3520	[GP3_CLK_SRC] = &gp3_clk_src.clkr,3521	[LPASS_AXIM_CLK_SRC] = &lpass_axim_clk_src.clkr,3522	[LPASS_SWAY_CLK_SRC] = &lpass_sway_clk_src.clkr,3523	[PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,3524	[PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,3525	[PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr,3526	[PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr,3527	[PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,3528	[Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,3529	[QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,3530	[QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,3531	[QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,3532	[QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,3533	[QPIC_IO_MACRO_CLK_SRC] = &qpic_io_macro_clk_src.clkr,3534	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,3535	[SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,3536	[UBI0_AXI_CLK_SRC] = &ubi0_axi_clk_src.clkr,3537	[UBI0_CORE_CLK_SRC] = &ubi0_core_clk_src.clkr,3538	[USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,3539	[USB0_LFPS_CLK_SRC] = &usb0_lfps_clk_src.clkr,3540	[USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,3541	[USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,3542	[WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,3543	[PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,3544	[PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,3545	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,3546	[GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,3547	[USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,3548	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,3549};3550 3551static const struct qcom_reset_map gcc_ipq5018_resets[] = {3552	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },3553	[GCC_BLSP1_BCR] = { 0x01000, 0 },3554	[GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },3555	[GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },3556	[GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },3557	[GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },3558	[GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },3559	[GCC_BOOT_ROM_BCR] = { 0x13008, 0 },3560	[GCC_BTSS_BCR] = { 0x1c000, 0 },3561	[GCC_CMN_BLK_BCR] = { 0x56300, 0 },3562	[GCC_CMN_LDO_BCR] = { 0x33000, 0 },3563	[GCC_CE_BCR] = { 0x33014, 0 },3564	[GCC_CRYPTO_BCR] = { 0x16000, 0 },3565	[GCC_DCC_BCR] = { 0x77000, 0 },3566	[GCC_DCD_BCR] = { 0x2a000, 0 },3567	[GCC_DDRSS_BCR] = { 0x1e000, 0 },3568	[GCC_EDPD_BCR] = { 0x3a000, 0 },3569	[GCC_GEPHY_BCR] = { 0x56000, 0 },3570	[GCC_GEPHY_MDC_SW_ARES] = { 0x56004, 0 },3571	[GCC_GEPHY_DSP_HW_ARES] = { 0x56004, 1 },3572	[GCC_GEPHY_RX_ARES] = { 0x56004, 2 },3573	[GCC_GEPHY_TX_ARES] = { 0x56004, 3 },3574	[GCC_GMAC0_BCR] = { 0x19000, 0 },3575	[GCC_GMAC0_CFG_ARES] = { 0x68428, 0 },3576	[GCC_GMAC0_SYS_ARES] = { 0x68428, 1 },3577	[GCC_GMAC1_BCR] = { 0x19100, 0 },3578	[GCC_GMAC1_CFG_ARES] = { 0x68438, 0 },3579	[GCC_GMAC1_SYS_ARES] = { 0x68438, 1 },3580	[GCC_IMEM_BCR] = { 0x0e000, 0 },3581	[GCC_LPASS_BCR] = { 0x2e000, 0 },3582	[GCC_MDIO0_BCR] = { 0x58000, 0 },3583	[GCC_MDIO1_BCR] = { 0x58010, 0 },3584	[GCC_MPM_BCR] = { 0x2c000, 0 },3585	[GCC_PCIE0_BCR] = { 0x75004, 0 },3586	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x750a8, 0 },3587	[GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },3588	[GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },3589	[GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },3590	[GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },3591	[GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },3592	[GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },3593	[GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },3594	[GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },3595	[GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },3596	[GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },3597	[GCC_PCIE1_BCR] = { 0x76004, 0 },3598	[GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 },3599	[GCC_PCIE1_PHY_BCR] = { 0x76038, 0 },3600	[GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 },3601	[GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 },3602	[GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 },3603	[GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 },3604	[GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 },3605	[GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },3606	[GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },3607	[GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },3608	[GCC_PCIE1_AXI_SLAVE_STICKY_ARES] = { 0x76040, 7 },3609	[GCC_PCNOC_BCR] = { 0x27018, 0 },3610	[GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },3611	[GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },3612	[GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },3613	[GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },3614	[GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },3615	[GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },3616	[GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },3617	[GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },3618	[GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },3619	[GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },3620	[GCC_PCNOC_BUS_TIMEOUT10_BCR] = { 0x48050, 0 },3621	[GCC_PCNOC_BUS_TIMEOUT11_BCR] = { 0x48058, 0 },3622	[GCC_PRNG_BCR] = { 0x13000, 0 },3623	[GCC_Q6SS_DBG_ARES] = { 0x59110, 0 },3624	[GCC_Q6_AHB_S_ARES] = { 0x59110, 1 },3625	[GCC_Q6_AHB_ARES] = { 0x59110, 2 },3626	[GCC_Q6_AXIM2_ARES] = { 0x59110, 3 },3627	[GCC_Q6_AXIM_ARES] = { 0x59110, 4 },3628	[GCC_Q6_AXIS_ARES] = { 0x59158, 0 },3629	[GCC_QDSS_BCR] = { 0x29000, 0 },3630	[GCC_QPIC_BCR] = { 0x57018, 0 },3631	[GCC_QUSB2_0_PHY_BCR] = { 0x41030, 0 },3632	[GCC_SDCC1_BCR] = { 0x42000, 0 },3633	[GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },3634	[GCC_SPDM_BCR] = { 0x2f000, 0 },3635	[GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },3636	[GCC_TCSR_BCR] = { 0x28000, 0 },3637	[GCC_TLMM_BCR] = { 0x34000, 0 },3638	[GCC_UBI0_AXI_ARES] = { 0x68010, 0 },3639	[GCC_UBI0_AHB_ARES] = { 0x68010, 1 },3640	[GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },3641	[GCC_UBI0_DBG_ARES] = { 0x68010, 3 },3642	[GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },3643	[GCC_UBI0_CORE_ARES] = { 0x68010, 7 },3644	[GCC_UBI32_BCR] = { 0x19064, 0 },3645	[GCC_UNIPHY_BCR] = { 0x56100, 0 },3646	[GCC_UNIPHY_AHB_ARES] = { 0x56104, 0 },3647	[GCC_UNIPHY_SYS_ARES] = { 0x56104, 1 },3648	[GCC_UNIPHY_RX_ARES] = { 0x56104, 4 },3649	[GCC_UNIPHY_TX_ARES] = { 0x56104, 5 },3650	[GCC_UNIPHY_SOFT_RESET] = {0x56104, 0 },3651	[GCC_USB0_BCR] = { 0x3e070, 0 },3652	[GCC_USB0_PHY_BCR] = { 0x3e034, 0 },3653	[GCC_WCSS_BCR] = { 0x18000, 0 },3654	[GCC_WCSS_DBG_ARES] = { 0x59008, 0 },3655	[GCC_WCSS_ECAHB_ARES] = { 0x59008, 1 },3656	[GCC_WCSS_ACMT_ARES] = { 0x59008, 2 },3657	[GCC_WCSS_DBG_BDG_ARES] = { 0x59008, 3 },3658	[GCC_WCSS_AHB_S_ARES] = { 0x59008, 4 },3659	[GCC_WCSS_AXI_M_ARES] = { 0x59008, 5 },3660	[GCC_WCSS_AXI_S_ARES] = { 0x59008, 6 },3661	[GCC_WCSS_Q6_BCR] = { 0x18004, 0 },3662	[GCC_WCSSAON_RESET] = { 0x59010, 0},3663	[GCC_GEPHY_MISC_ARES] = { 0x56004, 0 },3664};3665 3666static const struct of_device_id gcc_ipq5018_match_table[] = {3667	{ .compatible = "qcom,gcc-ipq5018" },3668	{ }3669};3670MODULE_DEVICE_TABLE(of, gcc_ipq5018_match_table);3671 3672static const struct regmap_config gcc_ipq5018_regmap_config = {3673	.reg_bits = 32,3674	.reg_stride = 4,3675	.val_bits = 32,3676	.max_register = 0x7fffc,3677	.fast_io = true,3678};3679 3680static const struct qcom_cc_desc gcc_ipq5018_desc = {3681	.config = &gcc_ipq5018_regmap_config,3682	.clks = gcc_ipq5018_clks,3683	.num_clks = ARRAY_SIZE(gcc_ipq5018_clks),3684	.resets = gcc_ipq5018_resets,3685	.num_resets = ARRAY_SIZE(gcc_ipq5018_resets),3686	.clk_hws = gcc_ipq5018_hws,3687	.num_clk_hws = ARRAY_SIZE(gcc_ipq5018_hws),3688};3689 3690static int gcc_ipq5018_probe(struct platform_device *pdev)3691{3692	struct regmap *regmap;3693	struct qcom_cc_desc ipq5018_desc = gcc_ipq5018_desc;3694 3695	regmap = qcom_cc_map(pdev, &ipq5018_desc);3696	if (IS_ERR(regmap))3697		return PTR_ERR(regmap);3698 3699	clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);3700 3701	return qcom_cc_really_probe(&pdev->dev, &ipq5018_desc, regmap);3702}3703 3704static struct platform_driver gcc_ipq5018_driver = {3705	.probe = gcc_ipq5018_probe,3706	.driver = {3707		.name = "qcom,gcc-ipq5018",3708		.of_match_table = gcc_ipq5018_match_table,3709	},3710};3711 3712static int __init gcc_ipq5018_init(void)3713{3714	return platform_driver_register(&gcc_ipq5018_driver);3715}3716core_initcall(gcc_ipq5018_init);3717 3718static void __exit gcc_ipq5018_exit(void)3719{3720	platform_driver_unregister(&gcc_ipq5018_driver);3721}3722module_exit(gcc_ipq5018_exit);3723 3724MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ5018 Driver");3725MODULE_LICENSE("GPL");3726