cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gcc-msm8939.c (101395B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Copyright 2020 Linaro Limited
      4 */
      5
      6#include <linux/kernel.h>
      7#include <linux/bitops.h>
      8#include <linux/err.h>
      9#include <linux/platform_device.h>
     10#include <linux/module.h>
     11#include <linux/of.h>
     12#include <linux/of_device.h>
     13#include <linux/clk-provider.h>
     14#include <linux/regmap.h>
     15#include <linux/reset-controller.h>
     16
     17#include <dt-bindings/clock/qcom,gcc-msm8939.h>
     18#include <dt-bindings/reset/qcom,gcc-msm8939.h>
     19
     20#include "common.h"
     21#include "clk-regmap.h"
     22#include "clk-pll.h"
     23#include "clk-rcg.h"
     24#include "clk-branch.h"
     25#include "reset.h"
     26#include "gdsc.h"
     27
     28enum {
     29	P_XO,
     30	P_GPLL0,
     31	P_GPLL0_AUX,
     32	P_BIMC,
     33	P_GPLL1,
     34	P_GPLL1_AUX,
     35	P_GPLL2,
     36	P_GPLL2_AUX,
     37	P_GPLL3,
     38	P_GPLL3_AUX,
     39	P_GPLL4,
     40	P_GPLL5,
     41	P_GPLL5_AUX,
     42	P_GPLL5_EARLY,
     43	P_GPLL6,
     44	P_GPLL6_AUX,
     45	P_SLEEP_CLK,
     46	P_DSI0_PHYPLL_BYTE,
     47	P_DSI0_PHYPLL_DSI,
     48	P_EXT_PRI_I2S,
     49	P_EXT_SEC_I2S,
     50	P_EXT_MCLK,
     51};
     52
     53static struct clk_pll gpll0 = {
     54	.l_reg = 0x21004,
     55	.m_reg = 0x21008,
     56	.n_reg = 0x2100c,
     57	.config_reg = 0x21010,
     58	.mode_reg = 0x21000,
     59	.status_reg = 0x2101c,
     60	.status_bit = 17,
     61	.clkr.hw.init = &(struct clk_init_data){
     62		.name = "gpll0",
     63		.parent_data = &(const struct clk_parent_data) {
     64			.fw_name = "xo",
     65		},
     66		.num_parents = 1,
     67		.ops = &clk_pll_ops,
     68	},
     69};
     70
     71static struct clk_regmap gpll0_vote = {
     72	.enable_reg = 0x45000,
     73	.enable_mask = BIT(0),
     74	.hw.init = &(struct clk_init_data){
     75		.name = "gpll0_vote",
     76		.parent_data = &(const struct clk_parent_data) {
     77			.hw = &gpll0.clkr.hw,
     78		},
     79		.num_parents = 1,
     80		.ops = &clk_pll_vote_ops,
     81	},
     82};
     83
     84static struct clk_pll gpll1 = {
     85	.l_reg = 0x20004,
     86	.m_reg = 0x20008,
     87	.n_reg = 0x2000c,
     88	.config_reg = 0x20010,
     89	.mode_reg = 0x20000,
     90	.status_reg = 0x2001c,
     91	.status_bit = 17,
     92	.clkr.hw.init = &(struct clk_init_data){
     93		.name = "gpll1",
     94		.parent_data = &(const struct clk_parent_data) {
     95			.fw_name = "xo",
     96		},
     97		.num_parents = 1,
     98		.ops = &clk_pll_ops,
     99	},
    100};
    101
    102static struct clk_regmap gpll1_vote = {
    103	.enable_reg = 0x45000,
    104	.enable_mask = BIT(1),
    105	.hw.init = &(struct clk_init_data){
    106		.name = "gpll1_vote",
    107		.parent_data = &(const struct clk_parent_data) {
    108			.hw = &gpll1.clkr.hw,
    109		},
    110		.num_parents = 1,
    111		.ops = &clk_pll_vote_ops,
    112	},
    113};
    114
    115static struct clk_pll gpll2 = {
    116	.l_reg = 0x4a004,
    117	.m_reg = 0x4a008,
    118	.n_reg = 0x4a00c,
    119	.config_reg = 0x4a010,
    120	.mode_reg = 0x4a000,
    121	.status_reg = 0x4a01c,
    122	.status_bit = 17,
    123	.clkr.hw.init = &(struct clk_init_data){
    124		.name = "gpll2",
    125		.parent_data = &(const struct clk_parent_data) {
    126			.fw_name = "xo",
    127		},
    128		.num_parents = 1,
    129		.ops = &clk_pll_ops,
    130	},
    131};
    132
    133static struct clk_regmap gpll2_vote = {
    134	.enable_reg = 0x45000,
    135	.enable_mask = BIT(2),
    136	.hw.init = &(struct clk_init_data){
    137		.name = "gpll2_vote",
    138		.parent_data = &(const struct clk_parent_data) {
    139			.hw = &gpll2.clkr.hw,
    140		},
    141		.num_parents = 1,
    142		.ops = &clk_pll_vote_ops,
    143	},
    144};
    145
    146static struct clk_pll bimc_pll = {
    147	.l_reg = 0x23004,
    148	.m_reg = 0x23008,
    149	.n_reg = 0x2300c,
    150	.config_reg = 0x23010,
    151	.mode_reg = 0x23000,
    152	.status_reg = 0x2301c,
    153	.status_bit = 17,
    154	.clkr.hw.init = &(struct clk_init_data){
    155		.name = "bimc_pll",
    156		.parent_data = &(const struct clk_parent_data) {
    157			.fw_name = "xo",
    158		},
    159		.num_parents = 1,
    160		.ops = &clk_pll_ops,
    161	},
    162};
    163
    164static struct clk_regmap bimc_pll_vote = {
    165	.enable_reg = 0x45000,
    166	.enable_mask = BIT(3),
    167	.hw.init = &(struct clk_init_data){
    168		.name = "bimc_pll_vote",
    169		.parent_data = &(const struct clk_parent_data) {
    170			.hw = &bimc_pll.clkr.hw,
    171		},
    172		.num_parents = 1,
    173		.ops = &clk_pll_vote_ops,
    174	},
    175};
    176
    177static struct clk_pll gpll3 = {
    178	.l_reg = 0x22004,
    179	.m_reg = 0x22008,
    180	.n_reg = 0x2200c,
    181	.config_reg = 0x22010,
    182	.mode_reg = 0x22000,
    183	.status_reg = 0x2201c,
    184	.status_bit = 17,
    185	.clkr.hw.init = &(struct clk_init_data){
    186		.name = "gpll3",
    187		.parent_data = &(const struct clk_parent_data) {
    188			.fw_name = "xo",
    189		},
    190		.num_parents = 1,
    191		.ops = &clk_pll_ops,
    192	},
    193};
    194
    195static struct clk_regmap gpll3_vote = {
    196	.enable_reg = 0x45000,
    197	.enable_mask = BIT(4),
    198	.hw.init = &(struct clk_init_data){
    199		.name = "gpll3_vote",
    200		.parent_data = &(const struct clk_parent_data) {
    201			.hw = &gpll3.clkr.hw,
    202		},
    203		.num_parents = 1,
    204		.ops = &clk_pll_vote_ops,
    205	},
    206};
    207
    208/* GPLL3 at 1100 MHz, main output enabled. */
    209static const struct pll_config gpll3_config = {
    210	.l = 57,
    211	.m = 7,
    212	.n = 24,
    213	.vco_val = 0x0,
    214	.vco_mask = BIT(20),
    215	.pre_div_val = 0x0,
    216	.pre_div_mask = BIT(12),
    217	.post_div_val = 0x0,
    218	.post_div_mask = BIT(9) | BIT(8),
    219	.mn_ena_mask = BIT(24),
    220	.main_output_mask = BIT(0),
    221	.aux_output_mask = BIT(1),
    222};
    223
    224static struct clk_pll gpll4 = {
    225	.l_reg = 0x24004,
    226	.m_reg = 0x24008,
    227	.n_reg = 0x2400c,
    228	.config_reg = 0x24010,
    229	.mode_reg = 0x24000,
    230	.status_reg = 0x2401c,
    231	.status_bit = 17,
    232	.clkr.hw.init = &(struct clk_init_data){
    233		.name = "gpll4",
    234		.parent_data = &(const struct clk_parent_data) {
    235			.fw_name = "xo",
    236		},
    237		.num_parents = 1,
    238		.ops = &clk_pll_ops,
    239	},
    240};
    241
    242static struct clk_regmap gpll4_vote = {
    243	.enable_reg = 0x45000,
    244	.enable_mask = BIT(5),
    245	.hw.init = &(struct clk_init_data){
    246		.name = "gpll4_vote",
    247		.parent_data = &(const struct clk_parent_data) {
    248			.hw = &gpll4.clkr.hw,
    249		},
    250		.num_parents = 1,
    251		.ops = &clk_pll_vote_ops,
    252	},
    253};
    254
    255/* GPLL4 at 1200 MHz, main output enabled. */
    256static struct pll_config gpll4_config = {
    257	.l = 62,
    258	.m = 1,
    259	.n = 2,
    260	.vco_val = 0x0,
    261	.vco_mask = BIT(20),
    262	.pre_div_val = 0x0,
    263	.pre_div_mask = BIT(12),
    264	.post_div_val = 0x0,
    265	.post_div_mask = BIT(9) | BIT(8),
    266	.mn_ena_mask = BIT(24),
    267	.main_output_mask = BIT(0),
    268};
    269
    270static struct clk_pll gpll5 = {
    271	.l_reg = 0x25004,
    272	.m_reg = 0x25008,
    273	.n_reg = 0x2500c,
    274	.config_reg = 0x25010,
    275	.mode_reg = 0x25000,
    276	.status_reg = 0x2501c,
    277	.status_bit = 17,
    278	.clkr.hw.init = &(struct clk_init_data){
    279		.name = "gpll5",
    280		.parent_data = &(const struct clk_parent_data) {
    281			.fw_name = "xo",
    282		},
    283		.num_parents = 1,
    284		.ops = &clk_pll_ops,
    285	},
    286};
    287
    288static struct clk_regmap gpll5_vote = {
    289	.enable_reg = 0x45000,
    290	.enable_mask = BIT(6),
    291	.hw.init = &(struct clk_init_data){
    292		.name = "gpll5_vote",
    293		.parent_data = &(const struct clk_parent_data) {
    294			.hw = &gpll5.clkr.hw,
    295		},
    296		.num_parents = 1,
    297		.ops = &clk_pll_vote_ops,
    298	},
    299};
    300
    301static struct clk_pll gpll6 = {
    302	.l_reg = 0x37004,
    303	.m_reg = 0x37008,
    304	.n_reg = 0x3700c,
    305	.config_reg = 0x37010,
    306	.mode_reg = 0x37000,
    307	.status_reg = 0x3701c,
    308	.status_bit = 17,
    309	.clkr.hw.init = &(struct clk_init_data){
    310		.name = "gpll6",
    311		.parent_data = &(const struct clk_parent_data) {
    312			.fw_name = "xo",
    313		},
    314		.num_parents = 1,
    315		.ops = &clk_pll_ops,
    316	},
    317};
    318
    319static struct clk_regmap gpll6_vote = {
    320	.enable_reg = 0x45000,
    321	.enable_mask = BIT(7),
    322	.hw.init = &(struct clk_init_data){
    323		.name = "gpll6_vote",
    324		.parent_data = &(const struct clk_parent_data) {
    325			.hw = &gpll6.clkr.hw,
    326		},
    327		.num_parents = 1,
    328		.ops = &clk_pll_vote_ops,
    329	},
    330};
    331
    332static const struct parent_map gcc_xo_gpll0_map[] = {
    333	{ P_XO, 0 },
    334	{ P_GPLL0, 1 },
    335};
    336
    337static const struct clk_parent_data gcc_xo_gpll0_parent_data[] = {
    338	{ .fw_name = "xo" },
    339	{ .hw = &gpll0_vote.hw },
    340};
    341
    342static const struct parent_map gcc_xo_gpll0_bimc_map[] = {
    343	{ P_XO, 0 },
    344	{ P_GPLL0, 1 },
    345	{ P_BIMC, 2 },
    346};
    347
    348static const struct clk_parent_data gcc_xo_gpll0_bimc_parent_data[] = {
    349	{ .fw_name = "xo" },
    350	{ .hw = &gpll0_vote.hw },
    351	{ .hw = &bimc_pll_vote.hw },
    352};
    353
    354static const struct parent_map gcc_xo_gpll0_gpll6a_map[] = {
    355	{ P_XO, 0 },
    356	{ P_GPLL0, 1 },
    357	{ P_GPLL6_AUX, 2 },
    358};
    359
    360static const struct clk_parent_data gcc_xo_gpll0_gpll6a_parent_data[] = {
    361	{ .fw_name = "xo" },
    362	{ .hw = &gpll0_vote.hw },
    363	{ .hw = &gpll6_vote.hw },
    364};
    365
    366static const struct parent_map gcc_xo_gpll0_gpll2a_gpll3_gpll6a_map[] = {
    367	{ P_XO, 0 },
    368	{ P_GPLL0, 1 },
    369	{ P_GPLL2_AUX, 4 },
    370	{ P_GPLL3, 2 },
    371	{ P_GPLL6_AUX, 3 },
    372};
    373
    374static const struct clk_parent_data gcc_xo_gpll0_gpll2a_gpll3_gpll6a_parent_data[] = {
    375	{ .fw_name = "xo" },
    376	{ .hw = &gpll0_vote.hw },
    377	{ .hw = &gpll2_vote.hw },
    378	{ .hw = &gpll3_vote.hw },
    379	{ .hw = &gpll6_vote.hw },
    380};
    381
    382static const struct parent_map gcc_xo_gpll0_gpll2_map[] = {
    383	{ P_XO, 0 },
    384	{ P_GPLL0, 1 },
    385	{ P_GPLL2, 2 },
    386};
    387
    388static const struct clk_parent_data gcc_xo_gpll0_gpll2_parent_data[] = {
    389	{ .fw_name = "xo" },
    390	{ .hw = &gpll0_vote.hw },
    391	{ .hw = &gpll2_vote.hw },
    392};
    393
    394static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_map[] = {
    395	{ P_XO, 0 },
    396	{ P_GPLL0, 1 },
    397	{ P_GPLL2, 3 },
    398	{ P_GPLL4, 2 },
    399};
    400
    401static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_parent_data[] = {
    402	{ .fw_name = "xo" },
    403	{ .hw = &gpll0_vote.hw },
    404	{ .hw = &gpll2_vote.hw },
    405	{ .hw = &gpll4_vote.hw },
    406};
    407
    408static const struct parent_map gcc_xo_gpll0a_map[] = {
    409	{ P_XO, 0 },
    410	{ P_GPLL0_AUX, 2 },
    411};
    412
    413static const struct clk_parent_data gcc_xo_gpll0a_parent_data[] = {
    414	{ .fw_name = "xo" },
    415	{ .hw = &gpll0_vote.hw },
    416};
    417
    418static const struct parent_map gcc_xo_gpll0_gpll1a_sleep_map[] = {
    419	{ P_XO, 0 },
    420	{ P_GPLL0, 1 },
    421	{ P_GPLL1_AUX, 2 },
    422	{ P_SLEEP_CLK, 6 },
    423};
    424
    425static const struct clk_parent_data gcc_xo_gpll0_gpll1a_sleep_parent_data[] = {
    426	{ .fw_name = "xo" },
    427	{ .hw = &gpll0_vote.hw },
    428	{ .hw = &gpll1_vote.hw },
    429	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    430};
    431
    432static const struct parent_map gcc_xo_gpll0_gpll1a_gpll6_sleep_map[] = {
    433	{ P_XO, 0 },
    434	{ P_GPLL0, 1 },
    435	{ P_GPLL1_AUX, 2 },
    436	{ P_GPLL6, 2 },
    437	{ P_SLEEP_CLK, 6 },
    438};
    439
    440static const struct clk_parent_data gcc_xo_gpll0_gpll1a_gpll6_sleep_parent_data[] = {
    441	{ .fw_name = "xo" },
    442	{ .hw = &gpll0_vote.hw },
    443	{ .hw = &gpll1_vote.hw },
    444	{ .hw = &gpll6_vote.hw },
    445	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    446};
    447
    448static const struct parent_map gcc_xo_gpll0_gpll1a_map[] = {
    449	{ P_XO, 0 },
    450	{ P_GPLL0, 1 },
    451	{ P_GPLL1_AUX, 2 },
    452};
    453
    454static const struct clk_parent_data gcc_xo_gpll0_gpll1a_parent_data[] = {
    455	{ .fw_name = "xo" },
    456	{ .hw = &gpll0_vote.hw },
    457	{ .hw = &gpll1_vote.hw },
    458};
    459
    460static const struct parent_map gcc_xo_dsibyte_map[] = {
    461	{ P_XO, 0, },
    462	{ P_DSI0_PHYPLL_BYTE, 2 },
    463};
    464
    465static const struct clk_parent_data gcc_xo_dsibyte_parent_data[] = {
    466	{ .fw_name = "xo" },
    467	{ .fw_name = "dsi0pllbyte", .name = "dsi0pllbyte" },
    468};
    469
    470static const struct parent_map gcc_xo_gpll0a_dsibyte_map[] = {
    471	{ P_XO, 0 },
    472	{ P_GPLL0_AUX, 2 },
    473	{ P_DSI0_PHYPLL_BYTE, 1 },
    474};
    475
    476static const struct clk_parent_data gcc_xo_gpll0a_dsibyte_parent_data[] = {
    477	{ .fw_name = "xo" },
    478	{ .hw = &gpll0_vote.hw },
    479	{ .fw_name = "dsi0pllbyte", .name = "dsi0pllbyte" },
    480};
    481
    482static const struct parent_map gcc_xo_gpll1_dsiphy_gpll6_gpll3a_gpll0a_map[] = {
    483	{ P_XO, 0 },
    484	{ P_GPLL1, 1 },
    485	{ P_DSI0_PHYPLL_DSI, 2 },
    486	{ P_GPLL6, 3 },
    487	{ P_GPLL3_AUX, 4 },
    488	{ P_GPLL0_AUX, 5 },
    489};
    490
    491static const struct clk_parent_data gcc_xo_gpll1_dsiphy_gpll6_gpll3a_gpll0a_parent_data[] = {
    492	{ .fw_name = "xo" },
    493	{ .hw = &gpll1_vote.hw },
    494	{ .fw_name = "dsi0pll", .name = "dsi0pll" },
    495	{ .hw = &gpll6_vote.hw },
    496	{ .hw = &gpll3_vote.hw },
    497	{ .hw = &gpll0_vote.hw },
    498};
    499
    500static const struct parent_map gcc_xo_gpll0a_dsiphy_map[] = {
    501	{ P_XO, 0 },
    502	{ P_GPLL0_AUX, 2 },
    503	{ P_DSI0_PHYPLL_DSI, 1 },
    504};
    505
    506static const struct clk_parent_data gcc_xo_gpll0a_dsiphy_parent_data[] = {
    507	{ .fw_name = "xo" },
    508	{ .hw = &gpll0_vote.hw },
    509	{ .fw_name = "dsi0pll", .name = "dsi0pll" },
    510};
    511
    512static const struct parent_map gcc_xo_gpll0_gpll5a_gpll6_bimc_map[] = {
    513	{ P_XO, 0 },
    514	{ P_GPLL0, 1 },
    515	{ P_GPLL5_AUX, 3 },
    516	{ P_GPLL6, 2 },
    517	{ P_BIMC, 4 },
    518};
    519
    520static const struct clk_parent_data gcc_xo_gpll0_gpll5a_gpll6_bimc_parent_data[] = {
    521	{ .fw_name = "xo" },
    522	{ .hw = &gpll0_vote.hw },
    523	{ .hw = &gpll5_vote.hw },
    524	{ .hw = &gpll6_vote.hw },
    525	{ .hw = &bimc_pll_vote.hw },
    526};
    527
    528static const struct parent_map gcc_xo_gpll0_gpll1_sleep_map[] = {
    529	{ P_XO, 0 },
    530	{ P_GPLL0, 1 },
    531	{ P_GPLL1, 2 },
    532	{ P_SLEEP_CLK, 6 }
    533};
    534
    535static const struct clk_parent_data gcc_xo_gpll0_gpll1_sleep_parent_data[] = {
    536	{ .fw_name = "xo" },
    537	{ .hw = &gpll0_vote.hw },
    538	{ .hw = &gpll1_vote.hw },
    539	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    540};
    541
    542static const struct parent_map gcc_xo_gpll1_epi2s_emclk_sleep_map[] = {
    543	{ P_XO, 0 },
    544	{ P_GPLL1, 1 },
    545	{ P_EXT_PRI_I2S, 2 },
    546	{ P_EXT_MCLK, 3 },
    547	{ P_SLEEP_CLK, 6 }
    548};
    549
    550static const struct clk_parent_data gcc_xo_gpll1_epi2s_emclk_sleep_parent_data[] = {
    551	{ .fw_name = "xo" },
    552	{ .hw = &gpll0_vote.hw },
    553	{ .fw_name = "ext_pri_i2s", .name = "ext_pri_i2s" },
    554	{ .fw_name = "ext_mclk", .name = "ext_mclk" },
    555	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    556};
    557
    558static const struct parent_map gcc_xo_gpll1_esi2s_emclk_sleep_map[] = {
    559	{ P_XO, 0 },
    560	{ P_GPLL1, 1 },
    561	{ P_EXT_SEC_I2S, 2 },
    562	{ P_EXT_MCLK, 3 },
    563	{ P_SLEEP_CLK, 6 }
    564};
    565
    566static const struct clk_parent_data gcc_xo_gpll1_esi2s_emclk_sleep_parent_data[] = {
    567	{ .fw_name = "xo" },
    568	{ .hw = &gpll1_vote.hw },
    569	{ .fw_name = "ext_sec_i2s", .name = "ext_sec_i2s" },
    570	{ .fw_name = "ext_mclk", .name = "ext_mclk" },
    571	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    572};
    573
    574static const struct parent_map gcc_xo_sleep_map[] = {
    575	{ P_XO, 0 },
    576	{ P_SLEEP_CLK, 6 }
    577};
    578
    579static const struct clk_parent_data gcc_xo_sleep_parent_data[] = {
    580	{ .fw_name = "xo" },
    581	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    582};
    583
    584static const struct parent_map gcc_xo_gpll1_emclk_sleep_map[] = {
    585	{ P_XO, 0 },
    586	{ P_GPLL1, 1 },
    587	{ P_EXT_MCLK, 2 },
    588	{ P_SLEEP_CLK, 6 }
    589};
    590
    591static const struct clk_parent_data gcc_xo_gpll1_emclk_sleep_parent_data[] = {
    592	{ .fw_name = "xo" },
    593	{ .hw = &gpll1_vote.hw },
    594	{ .fw_name = "ext_mclk", .name = "ext_mclk" },
    595	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
    596};
    597
    598static const struct clk_parent_data gcc_xo_gpll6_gpll0_parent_data[] = {
    599	{ .fw_name = "xo" },
    600	{ .hw = &gpll6_vote.hw },
    601	{ .hw = &gpll0_vote.hw },
    602};
    603
    604static const struct clk_parent_data gcc_xo_gpll6_gpll0a_parent_data[] = {
    605	{ .fw_name = "xo" },
    606	{ .hw = &gpll6_vote.hw },
    607	{ .hw = &gpll0_vote.hw },
    608};
    609
    610static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
    611	.cmd_rcgr = 0x27000,
    612	.hid_width = 5,
    613	.parent_map = gcc_xo_gpll0_map,
    614	.clkr.hw.init = &(struct clk_init_data){
    615		.name = "pcnoc_bfdcd_clk_src",
    616		.parent_data = gcc_xo_gpll0_parent_data,
    617		.num_parents = 2,
    618		.ops = &clk_rcg2_ops,
    619	},
    620};
    621
    622static struct clk_rcg2 system_noc_bfdcd_clk_src = {
    623	.cmd_rcgr = 0x26004,
    624	.hid_width = 5,
    625	.parent_map = gcc_xo_gpll0_gpll6a_map,
    626	.clkr.hw.init = &(struct clk_init_data){
    627		.name = "system_noc_bfdcd_clk_src",
    628		.parent_data = gcc_xo_gpll0_gpll6a_parent_data,
    629		.num_parents = 3,
    630		.ops = &clk_rcg2_ops,
    631	},
    632};
    633
    634static struct clk_rcg2 bimc_ddr_clk_src = {
    635	.cmd_rcgr = 0x32004,
    636	.hid_width = 5,
    637	.parent_map = gcc_xo_gpll0_bimc_map,
    638	.clkr.hw.init = &(struct clk_init_data){
    639		.name = "bimc_ddr_clk_src",
    640		.parent_data = gcc_xo_gpll0_bimc_parent_data,
    641		.num_parents = 3,
    642		.ops = &clk_rcg2_ops,
    643		.flags = CLK_GET_RATE_NOCACHE,
    644	},
    645};
    646
    647static const struct freq_tbl ftbl_gcc_camss_ahb_clk[] = {
    648	F(40000000, P_GPLL0, 10, 1, 2),
    649	F(80000000, P_GPLL0, 10, 0, 0),
    650	{ }
    651};
    652
    653static struct clk_rcg2 camss_ahb_clk_src = {
    654	.cmd_rcgr = 0x5a000,
    655	.mnd_width = 8,
    656	.hid_width = 5,
    657	.parent_map = gcc_xo_gpll0_map,
    658	.freq_tbl = ftbl_gcc_camss_ahb_clk,
    659	.clkr.hw.init = &(struct clk_init_data){
    660		.name = "camss_ahb_clk_src",
    661		.parent_data = gcc_xo_gpll0_parent_data,
    662		.num_parents = 2,
    663		.ops = &clk_rcg2_ops,
    664	},
    665};
    666
    667static const struct freq_tbl ftbl_apss_ahb_clk[] = {
    668	F(19200000, P_XO, 1, 0, 0),
    669	F(50000000, P_GPLL0, 16, 0, 0),
    670	F(100000000, P_GPLL0, 8, 0, 0),
    671	F(133330000, P_GPLL0, 6, 0, 0),
    672	{ }
    673};
    674
    675static struct clk_rcg2 apss_ahb_clk_src = {
    676	.cmd_rcgr = 0x46000,
    677	.hid_width = 5,
    678	.parent_map = gcc_xo_gpll0_map,
    679	.freq_tbl = ftbl_apss_ahb_clk,
    680	.clkr.hw.init = &(struct clk_init_data){
    681		.name = "apss_ahb_clk_src",
    682		.parent_data = gcc_xo_gpll0_parent_data,
    683		.num_parents = 2,
    684		.ops = &clk_rcg2_ops,
    685	},
    686};
    687
    688static const struct freq_tbl ftbl_gcc_camss_csi0_1_clk[] = {
    689	F(100000000, P_GPLL0, 8, 0,	0),
    690	F(200000000, P_GPLL0, 4, 0,	0),
    691	{ }
    692};
    693
    694static struct clk_rcg2 csi0_clk_src = {
    695	.cmd_rcgr = 0x4e020,
    696	.hid_width = 5,
    697	.parent_map = gcc_xo_gpll0_map,
    698	.freq_tbl = ftbl_gcc_camss_csi0_1_clk,
    699	.clkr.hw.init = &(struct clk_init_data){
    700		.name = "csi0_clk_src",
    701		.parent_data = gcc_xo_gpll0_parent_data,
    702		.num_parents = 2,
    703		.ops = &clk_rcg2_ops,
    704	},
    705};
    706
    707static struct clk_rcg2 csi1_clk_src = {
    708	.cmd_rcgr = 0x4f020,
    709	.hid_width = 5,
    710	.parent_map = gcc_xo_gpll0_map,
    711	.freq_tbl = ftbl_gcc_camss_csi0_1_clk,
    712	.clkr.hw.init = &(struct clk_init_data){
    713		.name = "csi1_clk_src",
    714		.parent_data = gcc_xo_gpll0_parent_data,
    715		.num_parents = 2,
    716		.ops = &clk_rcg2_ops,
    717	},
    718};
    719
    720static const struct freq_tbl ftbl_gcc_oxili_gfx3d_clk[] = {
    721	F(19200000, P_XO, 1, 0, 0),
    722	F(50000000, P_GPLL0, 16, 0, 0),
    723	F(80000000, P_GPLL0, 10, 0, 0),
    724	F(100000000, P_GPLL0, 8, 0, 0),
    725	F(160000000, P_GPLL0, 5, 0, 0),
    726	F(200000000, P_GPLL0, 4, 0, 0),
    727	F(220000000, P_GPLL3, 5, 0, 0),
    728	F(266670000, P_GPLL0, 3, 0, 0),
    729	F(310000000, P_GPLL2_AUX, 3, 0, 0),
    730	F(400000000, P_GPLL0, 2, 0, 0),
    731	F(465000000, P_GPLL2_AUX, 2, 0, 0),
    732	F(550000000, P_GPLL3, 2, 0, 0),
    733	{ }
    734};
    735
    736static struct clk_rcg2 gfx3d_clk_src = {
    737	.cmd_rcgr = 0x59000,
    738	.hid_width = 5,
    739	.parent_map = gcc_xo_gpll0_gpll2a_gpll3_gpll6a_map,
    740	.freq_tbl = ftbl_gcc_oxili_gfx3d_clk,
    741	.clkr.hw.init = &(struct clk_init_data){
    742		.name = "gfx3d_clk_src",
    743		.parent_data = gcc_xo_gpll0_gpll2a_gpll3_gpll6a_parent_data,
    744		.num_parents = 5,
    745		.ops = &clk_rcg2_ops,
    746	},
    747};
    748
    749static const struct freq_tbl ftbl_gcc_camss_vfe0_clk[] = {
    750	F(50000000, P_GPLL0, 16, 0, 0),
    751	F(80000000, P_GPLL0, 10, 0, 0),
    752	F(100000000, P_GPLL0, 8, 0, 0),
    753	F(160000000, P_GPLL0, 5, 0, 0),
    754	F(177780000, P_GPLL0, 4.5, 0, 0),
    755	F(200000000, P_GPLL0, 4, 0, 0),
    756	F(266670000, P_GPLL0, 3, 0, 0),
    757	F(320000000, P_GPLL0, 2.5, 0, 0),
    758	F(400000000, P_GPLL0, 2, 0, 0),
    759	F(465000000, P_GPLL2, 2, 0, 0),
    760	F(480000000, P_GPLL4, 2.5, 0, 0),
    761	F(600000000, P_GPLL4, 2, 0, 0),
    762	{ }
    763};
    764
    765static struct clk_rcg2 vfe0_clk_src = {
    766	.cmd_rcgr = 0x58000,
    767	.hid_width = 5,
    768	.parent_map = gcc_xo_gpll0_gpll2_gpll4_map,
    769	.freq_tbl = ftbl_gcc_camss_vfe0_clk,
    770	.clkr.hw.init = &(struct clk_init_data){
    771		.name = "vfe0_clk_src",
    772		.parent_data = gcc_xo_gpll0_gpll2_gpll4_parent_data,
    773		.num_parents = 4,
    774		.ops = &clk_rcg2_ops,
    775	},
    776};
    777
    778static const struct freq_tbl ftbl_gcc_blsp1_qup1_6_i2c_apps_clk[] = {
    779	F(19200000, P_XO, 1, 0, 0),
    780	F(50000000, P_GPLL0, 16, 0, 0),
    781	{ }
    782};
    783
    784static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
    785	.cmd_rcgr = 0x0200c,
    786	.hid_width = 5,
    787	.parent_map = gcc_xo_gpll0_map,
    788	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    789	.clkr.hw.init = &(struct clk_init_data){
    790		.name = "blsp1_qup1_i2c_apps_clk_src",
    791		.parent_data = gcc_xo_gpll0_parent_data,
    792		.num_parents = 2,
    793		.ops = &clk_rcg2_ops,
    794	},
    795};
    796
    797static const struct freq_tbl ftbl_gcc_blsp1_qup1_6_spi_apps_clk[] = {
    798	F(960000, P_XO, 10, 1, 2),
    799	F(4800000, P_XO, 4, 0, 0),
    800	F(9600000, P_XO, 2, 0, 0),
    801	F(16000000, P_GPLL0, 10, 1, 5),
    802	F(19200000, P_XO, 1, 0, 0),
    803	F(25000000, P_GPLL0, 16, 1, 2),
    804	F(50000000, P_GPLL0, 16, 0, 0),
    805	{ }
    806};
    807
    808static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
    809	.cmd_rcgr = 0x02024,
    810	.mnd_width = 8,
    811	.hid_width = 5,
    812	.parent_map = gcc_xo_gpll0_map,
    813	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    814	.clkr.hw.init = &(struct clk_init_data){
    815		.name = "blsp1_qup1_spi_apps_clk_src",
    816		.parent_data = gcc_xo_gpll0_parent_data,
    817		.num_parents = 2,
    818		.ops = &clk_rcg2_ops,
    819	},
    820};
    821
    822static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
    823	.cmd_rcgr = 0x03000,
    824	.hid_width = 5,
    825	.parent_map = gcc_xo_gpll0_map,
    826	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    827	.clkr.hw.init = &(struct clk_init_data){
    828		.name = "blsp1_qup2_i2c_apps_clk_src",
    829		.parent_data = gcc_xo_gpll0_parent_data,
    830		.num_parents = 2,
    831		.ops = &clk_rcg2_ops,
    832	},
    833};
    834
    835static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
    836	.cmd_rcgr = 0x03014,
    837	.mnd_width = 8,
    838	.hid_width = 5,
    839	.parent_map = gcc_xo_gpll0_map,
    840	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    841	.clkr.hw.init = &(struct clk_init_data){
    842		.name = "blsp1_qup2_spi_apps_clk_src",
    843		.parent_data = gcc_xo_gpll0_parent_data,
    844		.num_parents = 2,
    845		.ops = &clk_rcg2_ops,
    846	},
    847};
    848
    849static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
    850	.cmd_rcgr = 0x04000,
    851	.hid_width = 5,
    852	.parent_map = gcc_xo_gpll0_map,
    853	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    854	.clkr.hw.init = &(struct clk_init_data){
    855		.name = "blsp1_qup3_i2c_apps_clk_src",
    856		.parent_data = gcc_xo_gpll0_parent_data,
    857		.num_parents = 2,
    858		.ops = &clk_rcg2_ops,
    859	},
    860};
    861
    862static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
    863	.cmd_rcgr = 0x04024,
    864	.mnd_width = 8,
    865	.hid_width = 5,
    866	.parent_map = gcc_xo_gpll0_map,
    867	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    868	.clkr.hw.init = &(struct clk_init_data){
    869		.name = "blsp1_qup3_spi_apps_clk_src",
    870		.parent_data = gcc_xo_gpll0_parent_data,
    871		.num_parents = 2,
    872		.ops = &clk_rcg2_ops,
    873	},
    874};
    875
    876static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
    877	.cmd_rcgr = 0x05000,
    878	.hid_width = 5,
    879	.parent_map = gcc_xo_gpll0_map,
    880	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    881	.clkr.hw.init = &(struct clk_init_data){
    882		.name = "blsp1_qup4_i2c_apps_clk_src",
    883		.parent_data = gcc_xo_gpll0_parent_data,
    884		.num_parents = 2,
    885		.ops = &clk_rcg2_ops,
    886	},
    887};
    888
    889static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
    890	.cmd_rcgr = 0x05024,
    891	.mnd_width = 8,
    892	.hid_width = 5,
    893	.parent_map = gcc_xo_gpll0_map,
    894	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    895	.clkr.hw.init = &(struct clk_init_data){
    896		.name = "blsp1_qup4_spi_apps_clk_src",
    897		.parent_data = gcc_xo_gpll0_parent_data,
    898		.num_parents = 2,
    899		.ops = &clk_rcg2_ops,
    900	},
    901};
    902
    903static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
    904	.cmd_rcgr = 0x06000,
    905	.hid_width = 5,
    906	.parent_map = gcc_xo_gpll0_map,
    907	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    908	.clkr.hw.init = &(struct clk_init_data){
    909		.name = "blsp1_qup5_i2c_apps_clk_src",
    910		.parent_data = gcc_xo_gpll0_parent_data,
    911		.num_parents = 2,
    912		.ops = &clk_rcg2_ops,
    913	},
    914};
    915
    916static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
    917	.cmd_rcgr = 0x06024,
    918	.mnd_width = 8,
    919	.hid_width = 5,
    920	.parent_map = gcc_xo_gpll0_map,
    921	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    922	.clkr.hw.init = &(struct clk_init_data){
    923		.name = "blsp1_qup5_spi_apps_clk_src",
    924		.parent_data = gcc_xo_gpll0_parent_data,
    925		.num_parents = 2,
    926		.ops = &clk_rcg2_ops,
    927	},
    928};
    929
    930static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
    931	.cmd_rcgr = 0x07000,
    932	.hid_width = 5,
    933	.parent_map = gcc_xo_gpll0_map,
    934	.freq_tbl = ftbl_gcc_blsp1_qup1_6_i2c_apps_clk,
    935	.clkr.hw.init = &(struct clk_init_data){
    936		.name = "blsp1_qup6_i2c_apps_clk_src",
    937		.parent_data = gcc_xo_gpll0_parent_data,
    938		.num_parents = 2,
    939		.ops = &clk_rcg2_ops,
    940	},
    941};
    942
    943static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
    944	.cmd_rcgr = 0x07024,
    945	.mnd_width = 8,
    946	.hid_width = 5,
    947	.parent_map = gcc_xo_gpll0_map,
    948	.freq_tbl = ftbl_gcc_blsp1_qup1_6_spi_apps_clk,
    949	.clkr.hw.init = &(struct clk_init_data){
    950		.name = "blsp1_qup6_spi_apps_clk_src",
    951		.parent_data = gcc_xo_gpll0_parent_data,
    952		.num_parents = 2,
    953		.ops = &clk_rcg2_ops,
    954	},
    955};
    956
    957static const struct freq_tbl ftbl_gcc_blsp1_uart1_6_apps_clk[] = {
    958	F(3686400, P_GPLL0, 1, 72, 15625),
    959	F(7372800, P_GPLL0, 1, 144, 15625),
    960	F(14745600, P_GPLL0, 1, 288, 15625),
    961	F(16000000, P_GPLL0, 10, 1, 5),
    962	F(19200000, P_XO, 1, 0, 0),
    963	F(24000000, P_GPLL0, 1, 3, 100),
    964	F(25000000, P_GPLL0, 16, 1, 2),
    965	F(32000000, P_GPLL0, 1, 1, 25),
    966	F(40000000, P_GPLL0, 1, 1, 20),
    967	F(46400000, P_GPLL0, 1, 29, 500),
    968	F(48000000, P_GPLL0, 1, 3, 50),
    969	F(51200000, P_GPLL0, 1, 8, 125),
    970	F(56000000, P_GPLL0, 1, 7, 100),
    971	F(58982400, P_GPLL0, 1, 1152, 15625),
    972	F(60000000, P_GPLL0, 1, 3, 40),
    973	{ }
    974};
    975
    976static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
    977	.cmd_rcgr = 0x02044,
    978	.mnd_width = 16,
    979	.hid_width = 5,
    980	.parent_map = gcc_xo_gpll0_map,
    981	.freq_tbl = ftbl_gcc_blsp1_uart1_6_apps_clk,
    982	.clkr.hw.init = &(struct clk_init_data){
    983		.name = "blsp1_uart1_apps_clk_src",
    984		.parent_data = gcc_xo_gpll0_parent_data,
    985		.num_parents = 2,
    986		.ops = &clk_rcg2_ops,
    987	},
    988};
    989
    990static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
    991	.cmd_rcgr = 0x03034,
    992	.mnd_width = 16,
    993	.hid_width = 5,
    994	.parent_map = gcc_xo_gpll0_map,
    995	.freq_tbl = ftbl_gcc_blsp1_uart1_6_apps_clk,
    996	.clkr.hw.init = &(struct clk_init_data){
    997		.name = "blsp1_uart2_apps_clk_src",
    998		.parent_data = gcc_xo_gpll0_parent_data,
    999		.num_parents = 2,
   1000		.ops = &clk_rcg2_ops,
   1001	},
   1002};
   1003
   1004static const struct freq_tbl ftbl_gcc_camss_cci_clk[] = {
   1005	F(19200000,	P_XO, 1, 0,	0),
   1006	{ }
   1007};
   1008
   1009static struct clk_rcg2 cci_clk_src = {
   1010	.cmd_rcgr = 0x51000,
   1011	.mnd_width = 8,
   1012	.hid_width = 5,
   1013	.parent_map = gcc_xo_gpll0a_map,
   1014	.freq_tbl = ftbl_gcc_camss_cci_clk,
   1015	.clkr.hw.init = &(struct clk_init_data){
   1016		.name = "cci_clk_src",
   1017		.parent_data = gcc_xo_gpll0a_parent_data,
   1018		.num_parents = 2,
   1019		.ops = &clk_rcg2_ops,
   1020	},
   1021};
   1022
   1023static const struct freq_tbl ftbl_gcc_camss_gp0_1_clk[] = {
   1024	F(100000000, P_GPLL0, 8, 0, 0),
   1025	F(200000000, P_GPLL0, 4, 0, 0),
   1026	{ }
   1027};
   1028
   1029static struct clk_rcg2 camss_gp0_clk_src = {
   1030	.cmd_rcgr = 0x54000,
   1031	.mnd_width = 8,
   1032	.hid_width = 5,
   1033	.parent_map = gcc_xo_gpll0_gpll1a_sleep_map,
   1034	.freq_tbl = ftbl_gcc_camss_gp0_1_clk,
   1035	.clkr.hw.init = &(struct clk_init_data){
   1036		.name = "camss_gp0_clk_src",
   1037		.parent_data = gcc_xo_gpll0_gpll1a_sleep_parent_data,
   1038		.num_parents = 4,
   1039		.ops = &clk_rcg2_ops,
   1040	},
   1041};
   1042
   1043static struct clk_rcg2 camss_gp1_clk_src = {
   1044	.cmd_rcgr = 0x55000,
   1045	.mnd_width = 8,
   1046	.hid_width = 5,
   1047	.parent_map = gcc_xo_gpll0_gpll1a_sleep_map,
   1048	.freq_tbl = ftbl_gcc_camss_gp0_1_clk,
   1049	.clkr.hw.init = &(struct clk_init_data){
   1050		.name = "camss_gp1_clk_src",
   1051		.parent_data = gcc_xo_gpll0_gpll1a_sleep_parent_data,
   1052		.num_parents = 4,
   1053		.ops = &clk_rcg2_ops,
   1054	},
   1055};
   1056
   1057static const struct freq_tbl ftbl_gcc_camss_jpeg0_clk[] = {
   1058	F(133330000, P_GPLL0, 6, 0,	0),
   1059	F(266670000, P_GPLL0, 3, 0,	0),
   1060	F(320000000, P_GPLL0, 2.5, 0, 0),
   1061	{ }
   1062};
   1063
   1064static struct clk_rcg2 jpeg0_clk_src = {
   1065	.cmd_rcgr = 0x57000,
   1066	.hid_width = 5,
   1067	.parent_map = gcc_xo_gpll0_map,
   1068	.freq_tbl = ftbl_gcc_camss_jpeg0_clk,
   1069	.clkr.hw.init = &(struct clk_init_data){
   1070		.name = "jpeg0_clk_src",
   1071		.parent_data = gcc_xo_gpll0_parent_data,
   1072		.num_parents = 2,
   1073		.ops = &clk_rcg2_ops,
   1074	},
   1075};
   1076
   1077static const struct freq_tbl ftbl_gcc_camss_mclk0_1_clk[] = {
   1078	F(24000000, P_GPLL0, 1, 1, 45),
   1079	F(66670000, P_GPLL0, 12, 0, 0),
   1080	{ }
   1081};
   1082
   1083static struct clk_rcg2 mclk0_clk_src = {
   1084	.cmd_rcgr = 0x52000,
   1085	.mnd_width = 8,
   1086	.hid_width = 5,
   1087	.parent_map = gcc_xo_gpll0_gpll1a_gpll6_sleep_map,
   1088	.freq_tbl = ftbl_gcc_camss_mclk0_1_clk,
   1089	.clkr.hw.init = &(struct clk_init_data){
   1090		.name = "mclk0_clk_src",
   1091		.parent_data = gcc_xo_gpll0_gpll1a_gpll6_sleep_parent_data,
   1092		.num_parents = 5,
   1093		.ops = &clk_rcg2_ops,
   1094	},
   1095};
   1096
   1097static struct clk_rcg2 mclk1_clk_src = {
   1098	.cmd_rcgr = 0x53000,
   1099	.mnd_width = 8,
   1100	.hid_width = 5,
   1101	.parent_map = gcc_xo_gpll0_gpll1a_gpll6_sleep_map,
   1102	.freq_tbl = ftbl_gcc_camss_mclk0_1_clk,
   1103	.clkr.hw.init = &(struct clk_init_data){
   1104		.name = "mclk1_clk_src",
   1105		.parent_data = gcc_xo_gpll0_gpll1a_gpll6_sleep_parent_data,
   1106		.num_parents = 5,
   1107		.ops = &clk_rcg2_ops,
   1108	},
   1109};
   1110
   1111static const struct freq_tbl ftbl_gcc_camss_csi0_1phytimer_clk[] = {
   1112	F(100000000, P_GPLL0, 8, 0,	0),
   1113	F(200000000, P_GPLL0, 4, 0,	0),
   1114	{ }
   1115};
   1116
   1117static struct clk_rcg2 csi0phytimer_clk_src = {
   1118	.cmd_rcgr = 0x4e000,
   1119	.hid_width = 5,
   1120	.parent_map = gcc_xo_gpll0_gpll1a_map,
   1121	.freq_tbl = ftbl_gcc_camss_csi0_1phytimer_clk,
   1122	.clkr.hw.init = &(struct clk_init_data){
   1123		.name = "csi0phytimer_clk_src",
   1124		.parent_data = gcc_xo_gpll0_gpll1a_parent_data,
   1125		.num_parents = 3,
   1126		.ops = &clk_rcg2_ops,
   1127	},
   1128};
   1129
   1130static struct clk_rcg2 csi1phytimer_clk_src = {
   1131	.cmd_rcgr = 0x4f000,
   1132	.hid_width = 5,
   1133	.parent_map = gcc_xo_gpll0_gpll1a_map,
   1134	.freq_tbl = ftbl_gcc_camss_csi0_1phytimer_clk,
   1135	.clkr.hw.init = &(struct clk_init_data){
   1136		.name = "csi1phytimer_clk_src",
   1137		.parent_data = gcc_xo_gpll0_gpll1a_parent_data,
   1138		.num_parents = 3,
   1139		.ops = &clk_rcg2_ops,
   1140	},
   1141};
   1142
   1143static const struct freq_tbl ftbl_gcc_camss_cpp_clk[] = {
   1144	F(160000000, P_GPLL0, 5, 0, 0),
   1145	F(320000000, P_GPLL0, 2.5, 0, 0),
   1146	F(465000000, P_GPLL2, 2, 0, 0),
   1147	{ }
   1148};
   1149
   1150static struct clk_rcg2 cpp_clk_src = {
   1151	.cmd_rcgr = 0x58018,
   1152	.hid_width = 5,
   1153	.parent_map = gcc_xo_gpll0_gpll2_map,
   1154	.freq_tbl = ftbl_gcc_camss_cpp_clk,
   1155	.clkr.hw.init = &(struct clk_init_data){
   1156		.name = "cpp_clk_src",
   1157		.parent_data = gcc_xo_gpll0_gpll2_parent_data,
   1158		.num_parents = 3,
   1159		.ops = &clk_rcg2_ops,
   1160	},
   1161};
   1162
   1163static const struct freq_tbl ftbl_gcc_crypto_clk[] = {
   1164	F(50000000, P_GPLL0, 16, 0, 0),
   1165	F(80000000, P_GPLL0, 10, 0, 0),
   1166	F(100000000, P_GPLL0, 8, 0, 0),
   1167	F(160000000, P_GPLL0, 5, 0, 0),
   1168	{ }
   1169};
   1170
   1171/* This is not in the documentation but is in the downstream driver */
   1172static struct clk_rcg2 crypto_clk_src = {
   1173	.cmd_rcgr = 0x16004,
   1174	.hid_width = 5,
   1175	.parent_map = gcc_xo_gpll0_map,
   1176	.freq_tbl = ftbl_gcc_crypto_clk,
   1177	.clkr.hw.init = &(struct clk_init_data){
   1178		.name = "crypto_clk_src",
   1179		.parent_data = gcc_xo_gpll0_parent_data,
   1180		.num_parents = 2,
   1181		.ops = &clk_rcg2_ops,
   1182	},
   1183};
   1184
   1185static const struct freq_tbl ftbl_gcc_gp1_3_clk[] = {
   1186	F(19200000, P_XO, 1, 0,	0),
   1187	{ }
   1188};
   1189
   1190static struct clk_rcg2 gp1_clk_src = {
   1191	.cmd_rcgr = 0x08004,
   1192	.mnd_width = 8,
   1193	.hid_width = 5,
   1194	.parent_map = gcc_xo_gpll0_gpll1a_sleep_map,
   1195	.freq_tbl = ftbl_gcc_gp1_3_clk,
   1196	.clkr.hw.init = &(struct clk_init_data){
   1197		.name = "gp1_clk_src",
   1198		.parent_data = gcc_xo_gpll0_gpll1a_sleep_parent_data,
   1199		.num_parents = 3,
   1200		.ops = &clk_rcg2_ops,
   1201	},
   1202};
   1203
   1204static struct clk_rcg2 gp2_clk_src = {
   1205	.cmd_rcgr = 0x09004,
   1206	.mnd_width = 8,
   1207	.hid_width = 5,
   1208	.parent_map = gcc_xo_gpll0_gpll1a_sleep_map,
   1209	.freq_tbl = ftbl_gcc_gp1_3_clk,
   1210	.clkr.hw.init = &(struct clk_init_data){
   1211		.name = "gp2_clk_src",
   1212		.parent_data = gcc_xo_gpll0_gpll1a_sleep_parent_data,
   1213		.num_parents = 3,
   1214		.ops = &clk_rcg2_ops,
   1215	},
   1216};
   1217
   1218static struct clk_rcg2 gp3_clk_src = {
   1219	.cmd_rcgr = 0x0a004,
   1220	.mnd_width = 8,
   1221	.hid_width = 5,
   1222	.parent_map = gcc_xo_gpll0_gpll1a_sleep_map,
   1223	.freq_tbl = ftbl_gcc_gp1_3_clk,
   1224	.clkr.hw.init = &(struct clk_init_data){
   1225		.name = "gp3_clk_src",
   1226		.parent_data = gcc_xo_gpll0_gpll1a_sleep_parent_data,
   1227		.num_parents = 3,
   1228		.ops = &clk_rcg2_ops,
   1229	},
   1230};
   1231
   1232static struct clk_rcg2 byte0_clk_src = {
   1233	.cmd_rcgr = 0x4d044,
   1234	.hid_width = 5,
   1235	.parent_map = gcc_xo_gpll0a_dsibyte_map,
   1236	.clkr.hw.init = &(struct clk_init_data){
   1237		.name = "byte0_clk_src",
   1238		.parent_data = gcc_xo_gpll0a_dsibyte_parent_data,
   1239		.num_parents = 3,
   1240		.ops = &clk_byte2_ops,
   1241		.flags = CLK_SET_RATE_PARENT,
   1242	},
   1243};
   1244
   1245static struct clk_rcg2 byte1_clk_src = {
   1246	.cmd_rcgr = 0x4d0b0,
   1247	.hid_width = 5,
   1248	.parent_map = gcc_xo_gpll0a_dsibyte_map,
   1249	.clkr.hw.init = &(struct clk_init_data){
   1250		.name = "byte1_clk_src",
   1251		.parent_data = gcc_xo_gpll0a_dsibyte_parent_data,
   1252		.num_parents = 3,
   1253		.ops = &clk_byte2_ops,
   1254		.flags = CLK_SET_RATE_PARENT,
   1255	},
   1256};
   1257
   1258static const struct freq_tbl ftbl_gcc_mdss_esc_clk[] = {
   1259	F(19200000, P_XO, 1, 0, 0),
   1260	{ }
   1261};
   1262
   1263static struct clk_rcg2 esc0_clk_src = {
   1264	.cmd_rcgr = 0x4d060,
   1265	.hid_width = 5,
   1266	.parent_map = gcc_xo_dsibyte_map,
   1267	.freq_tbl = ftbl_gcc_mdss_esc_clk,
   1268	.clkr.hw.init = &(struct clk_init_data){
   1269		.name = "esc0_clk_src",
   1270		.parent_data = gcc_xo_dsibyte_parent_data,
   1271		.num_parents = 2,
   1272		.ops = &clk_rcg2_ops,
   1273	},
   1274};
   1275
   1276static struct clk_rcg2 esc1_clk_src = {
   1277	.cmd_rcgr = 0x4d0a8,
   1278	.hid_width = 5,
   1279	.parent_map = gcc_xo_dsibyte_map,
   1280	.freq_tbl = ftbl_gcc_mdss_esc_clk,
   1281	.clkr.hw.init = &(struct clk_init_data){
   1282		.name = "esc1_clk_src",
   1283		.parent_data = gcc_xo_dsibyte_parent_data,
   1284		.num_parents = 2,
   1285		.ops = &clk_rcg2_ops,
   1286	},
   1287};
   1288
   1289static const struct freq_tbl ftbl_gcc_mdss_mdp_clk[] = {
   1290	F(50000000, P_GPLL0_AUX, 16, 0, 0),
   1291	F(80000000, P_GPLL0_AUX, 10, 0, 0),
   1292	F(100000000, P_GPLL0_AUX, 8, 0, 0),
   1293	F(160000000, P_GPLL0_AUX, 5, 0, 0),
   1294	F(177780000, P_GPLL0_AUX, 4.5, 0, 0),
   1295	F(200000000, P_GPLL0_AUX, 4, 0, 0),
   1296	F(266670000, P_GPLL0_AUX, 3, 0, 0),
   1297	F(307200000, P_GPLL1, 2, 0, 0),
   1298	F(366670000, P_GPLL3_AUX, 3, 0, 0),
   1299	{ }
   1300};
   1301
   1302static struct clk_rcg2 mdp_clk_src = {
   1303	.cmd_rcgr = 0x4d014,
   1304	.hid_width = 5,
   1305	.parent_map = gcc_xo_gpll1_dsiphy_gpll6_gpll3a_gpll0a_map,
   1306	.freq_tbl = ftbl_gcc_mdss_mdp_clk,
   1307	.clkr.hw.init = &(struct clk_init_data){
   1308		.name = "mdp_clk_src",
   1309		.parent_data = gcc_xo_gpll1_dsiphy_gpll6_gpll3a_gpll0a_parent_data,
   1310		.num_parents = 6,
   1311		.ops = &clk_rcg2_ops,
   1312	},
   1313};
   1314
   1315static struct clk_rcg2 pclk0_clk_src = {
   1316	.cmd_rcgr = 0x4d000,
   1317	.mnd_width = 8,
   1318	.hid_width = 5,
   1319	.parent_map = gcc_xo_gpll0a_dsiphy_map,
   1320	.clkr.hw.init = &(struct clk_init_data){
   1321		.name = "pclk0_clk_src",
   1322		.parent_data = gcc_xo_gpll0a_dsiphy_parent_data,
   1323		.num_parents = 3,
   1324		.ops = &clk_pixel_ops,
   1325		.flags = CLK_SET_RATE_PARENT,
   1326	},
   1327};
   1328
   1329static struct clk_rcg2 pclk1_clk_src = {
   1330	.cmd_rcgr = 0x4d0b8,
   1331	.mnd_width = 8,
   1332	.hid_width = 5,
   1333	.parent_map = gcc_xo_gpll0a_dsiphy_map,
   1334	.clkr.hw.init = &(struct clk_init_data){
   1335		.name = "pclk1_clk_src",
   1336		.parent_data = gcc_xo_gpll0a_dsiphy_parent_data,
   1337		.num_parents = 3,
   1338		.ops = &clk_pixel_ops,
   1339		.flags = CLK_SET_RATE_PARENT,
   1340	},
   1341};
   1342
   1343static const struct freq_tbl ftbl_gcc_mdss_vsync_clk[] = {
   1344	F(19200000, P_XO, 1, 0,	0),
   1345	{ }
   1346};
   1347
   1348static struct clk_rcg2 vsync_clk_src = {
   1349	.cmd_rcgr = 0x4d02c,
   1350	.hid_width = 5,
   1351	.parent_map = gcc_xo_gpll0a_map,
   1352	.freq_tbl = ftbl_gcc_mdss_vsync_clk,
   1353	.clkr.hw.init = &(struct clk_init_data){
   1354		.name = "vsync_clk_src",
   1355		.parent_data = gcc_xo_gpll0a_parent_data,
   1356		.num_parents = 2,
   1357		.ops = &clk_rcg2_ops,
   1358	},
   1359};
   1360
   1361static const struct freq_tbl ftbl_gcc_pdm2_clk[] = {
   1362	F(64000000, P_GPLL0, 12.5, 0, 0),
   1363	{ }
   1364};
   1365
   1366/* This is not in the documentation but is in the downstream driver */
   1367static struct clk_rcg2 pdm2_clk_src = {
   1368	.cmd_rcgr = 0x44010,
   1369	.hid_width = 5,
   1370	.parent_map = gcc_xo_gpll0_map,
   1371	.freq_tbl = ftbl_gcc_pdm2_clk,
   1372	.clkr.hw.init = &(struct clk_init_data){
   1373		.name = "pdm2_clk_src",
   1374		.parent_data = gcc_xo_gpll0_parent_data,
   1375		.num_parents = 2,
   1376		.ops = &clk_rcg2_ops,
   1377	},
   1378};
   1379
   1380static const struct freq_tbl ftbl_gcc_sdcc_apps_clk[] = {
   1381	F(144000, P_XO, 16, 3, 25),
   1382	F(400000, P_XO, 12, 1, 4),
   1383	F(20000000, P_GPLL0, 10, 1, 4),
   1384	F(25000000, P_GPLL0, 16, 1, 2),
   1385	F(50000000, P_GPLL0, 16, 0, 0),
   1386	F(100000000, P_GPLL0, 8, 0, 0),
   1387	F(177770000, P_GPLL0, 4.5, 0, 0),
   1388	F(200000000, P_GPLL0, 4, 0, 0),
   1389	{ }
   1390};
   1391
   1392static struct clk_rcg2 sdcc1_apps_clk_src = {
   1393	.cmd_rcgr = 0x42004,
   1394	.mnd_width = 8,
   1395	.hid_width = 5,
   1396	.parent_map = gcc_xo_gpll0_map,
   1397	.freq_tbl = ftbl_gcc_sdcc_apps_clk,
   1398	.clkr.hw.init = &(struct clk_init_data){
   1399		.name = "sdcc1_apps_clk_src",
   1400		.parent_data = gcc_xo_gpll0_parent_data,
   1401		.num_parents = 2,
   1402		.ops = &clk_rcg2_floor_ops,
   1403	},
   1404};
   1405
   1406static struct clk_rcg2 sdcc2_apps_clk_src = {
   1407	.cmd_rcgr = 0x43004,
   1408	.mnd_width = 8,
   1409	.hid_width = 5,
   1410	.parent_map = gcc_xo_gpll0_map,
   1411	.freq_tbl = ftbl_gcc_sdcc_apps_clk,
   1412	.clkr.hw.init = &(struct clk_init_data){
   1413		.name = "sdcc2_apps_clk_src",
   1414		.parent_data = gcc_xo_gpll0_parent_data,
   1415		.num_parents = 2,
   1416		.ops = &clk_rcg2_floor_ops,
   1417	},
   1418};
   1419
   1420static const struct freq_tbl ftbl_gcc_apss_tcu_clk[] = {
   1421	F(154285000, P_GPLL6, 7, 0, 0),
   1422	F(320000000, P_GPLL0, 2.5, 0, 0),
   1423	F(400000000, P_GPLL0, 2, 0, 0),
   1424	{ }
   1425};
   1426
   1427static struct clk_rcg2 apss_tcu_clk_src = {
   1428	.cmd_rcgr = 0x1207c,
   1429	.hid_width = 5,
   1430	.parent_map = gcc_xo_gpll0_gpll5a_gpll6_bimc_map,
   1431	.freq_tbl = ftbl_gcc_apss_tcu_clk,
   1432	.clkr.hw.init = &(struct clk_init_data){
   1433		.name = "apss_tcu_clk_src",
   1434		.parent_data = gcc_xo_gpll0_gpll5a_gpll6_bimc_parent_data,
   1435		.num_parents = 5,
   1436		.ops = &clk_rcg2_ops,
   1437	},
   1438};
   1439
   1440static const struct freq_tbl ftbl_gcc_bimc_gpu_clk[] = {
   1441	F(19200000, P_XO, 1, 0, 0),
   1442	F(100000000, P_GPLL0, 8, 0, 0),
   1443	F(200000000, P_GPLL0, 4, 0, 0),
   1444	F(266500000, P_BIMC, 4, 0, 0),
   1445	F(400000000, P_GPLL0, 2, 0, 0),
   1446	F(533000000, P_BIMC, 2, 0, 0),
   1447	{ }
   1448};
   1449
   1450static struct clk_rcg2 bimc_gpu_clk_src = {
   1451	.cmd_rcgr = 0x31028,
   1452	.hid_width = 5,
   1453	.parent_map = gcc_xo_gpll0_gpll5a_gpll6_bimc_map,
   1454	.freq_tbl = ftbl_gcc_bimc_gpu_clk,
   1455	.clkr.hw.init = &(struct clk_init_data){
   1456		.name = "bimc_gpu_clk_src",
   1457		.parent_data = gcc_xo_gpll0_gpll5a_gpll6_bimc_parent_data,
   1458		.num_parents = 5,
   1459		.flags = CLK_GET_RATE_NOCACHE,
   1460		.ops = &clk_rcg2_ops,
   1461	},
   1462};
   1463
   1464static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
   1465	F(80000000, P_GPLL0, 10, 0, 0),
   1466	{ }
   1467};
   1468
   1469static struct clk_rcg2 usb_hs_system_clk_src = {
   1470	.cmd_rcgr = 0x41010,
   1471	.hid_width = 5,
   1472	.parent_map = gcc_xo_gpll0_map,
   1473	.freq_tbl = ftbl_gcc_usb_hs_system_clk,
   1474	.clkr.hw.init = &(struct clk_init_data){
   1475		.name = "usb_hs_system_clk_src",
   1476		.parent_data = gcc_xo_gpll0_parent_data,
   1477		.num_parents = 2,
   1478		.ops = &clk_rcg2_ops,
   1479	},
   1480};
   1481
   1482static const struct freq_tbl ftbl_gcc_usb_fs_system_clk[] = {
   1483	F(64000000, P_GPLL0, 12.5, 0, 0),
   1484	{ }
   1485};
   1486
   1487static struct clk_rcg2 usb_fs_system_clk_src = {
   1488	.cmd_rcgr = 0x3f010,
   1489	.hid_width = 5,
   1490	.parent_map = gcc_xo_gpll0_map,
   1491	.freq_tbl = ftbl_gcc_usb_fs_system_clk,
   1492	.clkr.hw.init = &(struct clk_init_data){
   1493		.name = "usb_fs_system_clk_src",
   1494		.parent_data = gcc_xo_gpll6_gpll0_parent_data,
   1495		.num_parents = 3,
   1496		.ops = &clk_rcg2_ops,
   1497	},
   1498};
   1499
   1500static const struct freq_tbl ftbl_gcc_usb_fs_ic_clk[] = {
   1501	F(60000000, P_GPLL6, 1, 1, 18),
   1502	{ }
   1503};
   1504
   1505static struct clk_rcg2 usb_fs_ic_clk_src = {
   1506	.cmd_rcgr = 0x3f034,
   1507	.hid_width = 5,
   1508	.parent_map = gcc_xo_gpll0_map,
   1509	.freq_tbl = ftbl_gcc_usb_fs_ic_clk,
   1510	.clkr.hw.init = &(struct clk_init_data){
   1511		.name = "usb_fs_ic_clk_src",
   1512		.parent_data = gcc_xo_gpll6_gpll0a_parent_data,
   1513		.num_parents = 3,
   1514		.ops = &clk_rcg2_ops,
   1515	},
   1516};
   1517
   1518static const struct freq_tbl ftbl_gcc_ultaudio_ahb_clk[] = {
   1519	F(3200000, P_XO, 6, 0, 0),
   1520	F(6400000, P_XO, 3, 0, 0),
   1521	F(9600000, P_XO, 2, 0, 0),
   1522	F(19200000, P_XO, 1, 0, 0),
   1523	F(40000000, P_GPLL0, 10, 1, 2),
   1524	F(66670000, P_GPLL0, 12, 0, 0),
   1525	F(80000000, P_GPLL0, 10, 0, 0),
   1526	F(100000000, P_GPLL0, 8, 0, 0),
   1527	{ }
   1528};
   1529
   1530static struct clk_rcg2 ultaudio_ahbfabric_clk_src = {
   1531	.cmd_rcgr = 0x1c010,
   1532	.hid_width = 5,
   1533	.mnd_width = 8,
   1534	.parent_map = gcc_xo_gpll0_gpll1_sleep_map,
   1535	.freq_tbl = ftbl_gcc_ultaudio_ahb_clk,
   1536	.clkr.hw.init = &(struct clk_init_data){
   1537		.name = "ultaudio_ahbfabric_clk_src",
   1538		.parent_data = gcc_xo_gpll0_gpll1_sleep_parent_data,
   1539		.num_parents = 4,
   1540		.ops = &clk_rcg2_ops,
   1541	},
   1542};
   1543
   1544static struct clk_branch gcc_ultaudio_ahbfabric_ixfabric_clk = {
   1545	.halt_reg = 0x1c028,
   1546	.clkr = {
   1547		.enable_reg = 0x1c028,
   1548		.enable_mask = BIT(0),
   1549		.hw.init = &(struct clk_init_data){
   1550			.name = "gcc_ultaudio_ahbfabric_ixfabric_clk",
   1551			.parent_data = &(const struct clk_parent_data){
   1552				.hw = &ultaudio_ahbfabric_clk_src.clkr.hw,
   1553			},
   1554			.num_parents = 1,
   1555			.flags = CLK_SET_RATE_PARENT,
   1556			.ops = &clk_branch2_ops,
   1557		},
   1558	},
   1559};
   1560
   1561static struct clk_branch gcc_ultaudio_ahbfabric_ixfabric_lpm_clk = {
   1562	.halt_reg = 0x1c024,
   1563	.clkr = {
   1564		.enable_reg = 0x1c024,
   1565		.enable_mask = BIT(0),
   1566		.hw.init = &(struct clk_init_data){
   1567			.name = "gcc_ultaudio_ahbfabric_ixfabric_lpm_clk",
   1568			.parent_data = &(const struct clk_parent_data){
   1569				.hw = &ultaudio_ahbfabric_clk_src.clkr.hw,
   1570			},
   1571			.num_parents = 1,
   1572			.flags = CLK_SET_RATE_PARENT,
   1573			.ops = &clk_branch2_ops,
   1574		},
   1575	},
   1576};
   1577
   1578static const struct freq_tbl ftbl_gcc_ultaudio_lpaif_i2s_clk[] = {
   1579	F(128000, P_XO, 10, 1, 15),
   1580	F(256000, P_XO, 5, 1, 15),
   1581	F(384000, P_XO, 5, 1, 10),
   1582	F(512000, P_XO, 5, 2, 15),
   1583	F(576000, P_XO, 5, 3, 20),
   1584	F(705600, P_GPLL1, 16, 1, 80),
   1585	F(768000, P_XO, 5, 1, 5),
   1586	F(800000, P_XO, 5, 5, 24),
   1587	F(1024000, P_XO, 5, 4, 15),
   1588	F(1152000, P_XO, 1, 3, 50),
   1589	F(1411200, P_GPLL1, 16, 1, 40),
   1590	F(1536000, P_XO, 1, 2, 25),
   1591	F(1600000, P_XO, 12, 0, 0),
   1592	F(1728000, P_XO, 5, 9, 20),
   1593	F(2048000, P_XO, 5, 8, 15),
   1594	F(2304000, P_XO, 5, 3, 5),
   1595	F(2400000, P_XO, 8, 0, 0),
   1596	F(2822400, P_GPLL1, 16, 1, 20),
   1597	F(3072000, P_XO, 5, 4, 5),
   1598	F(4096000, P_GPLL1, 9, 2, 49),
   1599	F(4800000, P_XO, 4, 0, 0),
   1600	F(5644800, P_GPLL1, 16, 1, 10),
   1601	F(6144000, P_GPLL1, 7, 1, 21),
   1602	F(8192000, P_GPLL1, 9, 4, 49),
   1603	F(9600000, P_XO, 2, 0, 0),
   1604	F(11289600, P_GPLL1, 16, 1, 5),
   1605	F(12288000, P_GPLL1, 7, 2, 21),
   1606	{ }
   1607};
   1608
   1609static struct clk_rcg2 ultaudio_lpaif_pri_i2s_clk_src = {
   1610	.cmd_rcgr = 0x1c054,
   1611	.hid_width = 5,
   1612	.mnd_width = 8,
   1613	.parent_map = gcc_xo_gpll1_epi2s_emclk_sleep_map,
   1614	.freq_tbl = ftbl_gcc_ultaudio_lpaif_i2s_clk,
   1615	.clkr.hw.init = &(struct clk_init_data){
   1616		.name = "ultaudio_lpaif_pri_i2s_clk_src",
   1617		.parent_data = gcc_xo_gpll1_epi2s_emclk_sleep_parent_data,
   1618		.num_parents = 5,
   1619		.ops = &clk_rcg2_ops,
   1620	},
   1621};
   1622
   1623static struct clk_branch gcc_ultaudio_lpaif_pri_i2s_clk = {
   1624	.halt_reg = 0x1c068,
   1625	.clkr = {
   1626		.enable_reg = 0x1c068,
   1627		.enable_mask = BIT(0),
   1628		.hw.init = &(struct clk_init_data){
   1629			.name = "gcc_ultaudio_lpaif_pri_i2s_clk",
   1630			.parent_data = &(const struct clk_parent_data){
   1631				.hw = &ultaudio_lpaif_pri_i2s_clk_src.clkr.hw,
   1632			},
   1633			.num_parents = 1,
   1634			.flags = CLK_SET_RATE_PARENT,
   1635			.ops = &clk_branch2_ops,
   1636		},
   1637	},
   1638};
   1639
   1640static struct clk_rcg2 ultaudio_lpaif_sec_i2s_clk_src = {
   1641	.cmd_rcgr = 0x1c06c,
   1642	.hid_width = 5,
   1643	.mnd_width = 8,
   1644	.parent_map = gcc_xo_gpll1_esi2s_emclk_sleep_map,
   1645	.freq_tbl = ftbl_gcc_ultaudio_lpaif_i2s_clk,
   1646	.clkr.hw.init = &(struct clk_init_data){
   1647		.name = "ultaudio_lpaif_sec_i2s_clk_src",
   1648		.parent_data = gcc_xo_gpll1_esi2s_emclk_sleep_parent_data,
   1649		.num_parents = 5,
   1650		.ops = &clk_rcg2_ops,
   1651	},
   1652};
   1653
   1654static struct clk_branch gcc_ultaudio_lpaif_sec_i2s_clk = {
   1655	.halt_reg = 0x1c080,
   1656	.clkr = {
   1657		.enable_reg = 0x1c080,
   1658		.enable_mask = BIT(0),
   1659		.hw.init = &(struct clk_init_data){
   1660			.name = "gcc_ultaudio_lpaif_sec_i2s_clk",
   1661			.parent_data = &(const struct clk_parent_data){
   1662				.hw = &ultaudio_lpaif_sec_i2s_clk_src.clkr.hw,
   1663			},
   1664			.num_parents = 1,
   1665			.flags = CLK_SET_RATE_PARENT,
   1666			.ops = &clk_branch2_ops,
   1667		},
   1668	},
   1669};
   1670
   1671static struct clk_rcg2 ultaudio_lpaif_aux_i2s_clk_src = {
   1672	.cmd_rcgr = 0x1c084,
   1673	.hid_width = 5,
   1674	.mnd_width = 8,
   1675	.parent_map = gcc_xo_gpll1_emclk_sleep_map,
   1676	.freq_tbl = ftbl_gcc_ultaudio_lpaif_i2s_clk,
   1677	.clkr.hw.init = &(struct clk_init_data){
   1678		.name = "ultaudio_lpaif_aux_i2s_clk_src",
   1679		.parent_data = gcc_xo_gpll1_esi2s_emclk_sleep_parent_data,
   1680		.num_parents = 5,
   1681		.ops = &clk_rcg2_ops,
   1682	},
   1683};
   1684
   1685static struct clk_branch gcc_ultaudio_lpaif_aux_i2s_clk = {
   1686	.halt_reg = 0x1c098,
   1687	.clkr = {
   1688		.enable_reg = 0x1c098,
   1689		.enable_mask = BIT(0),
   1690		.hw.init = &(struct clk_init_data){
   1691			.name = "gcc_ultaudio_lpaif_aux_i2s_clk",
   1692			.parent_data = &(const struct clk_parent_data){
   1693				.hw = &ultaudio_lpaif_aux_i2s_clk_src.clkr.hw,
   1694			},
   1695			.num_parents = 1,
   1696			.flags = CLK_SET_RATE_PARENT,
   1697			.ops = &clk_branch2_ops,
   1698		},
   1699	},
   1700};
   1701
   1702static const struct freq_tbl ftbl_gcc_ultaudio_xo_clk[] = {
   1703	F(19200000, P_XO, 1, 0, 0),
   1704	{ }
   1705};
   1706
   1707static struct clk_rcg2 ultaudio_xo_clk_src = {
   1708	.cmd_rcgr = 0x1c034,
   1709	.hid_width = 5,
   1710	.parent_map = gcc_xo_sleep_map,
   1711	.freq_tbl = ftbl_gcc_ultaudio_xo_clk,
   1712	.clkr.hw.init = &(struct clk_init_data){
   1713		.name = "ultaudio_xo_clk_src",
   1714		.parent_data = gcc_xo_sleep_parent_data,
   1715		.num_parents = 2,
   1716		.ops = &clk_rcg2_ops,
   1717	},
   1718};
   1719
   1720static struct clk_branch gcc_ultaudio_avsync_xo_clk = {
   1721	.halt_reg = 0x1c04c,
   1722	.clkr = {
   1723		.enable_reg = 0x1c04c,
   1724		.enable_mask = BIT(0),
   1725		.hw.init = &(struct clk_init_data){
   1726			.name = "gcc_ultaudio_avsync_xo_clk",
   1727			.parent_data = &(const struct clk_parent_data){
   1728				.hw = &ultaudio_xo_clk_src.clkr.hw,
   1729			},
   1730			.num_parents = 1,
   1731			.flags = CLK_SET_RATE_PARENT,
   1732			.ops = &clk_branch2_ops,
   1733		},
   1734	},
   1735};
   1736
   1737static struct clk_branch gcc_ultaudio_stc_xo_clk = {
   1738	.halt_reg = 0x1c050,
   1739	.clkr = {
   1740		.enable_reg = 0x1c050,
   1741		.enable_mask = BIT(0),
   1742		.hw.init = &(struct clk_init_data){
   1743			.name = "gcc_ultaudio_stc_xo_clk",
   1744			.parent_data = &(const struct clk_parent_data){
   1745				.hw = &ultaudio_xo_clk_src.clkr.hw,
   1746			},
   1747			.num_parents = 1,
   1748			.flags = CLK_SET_RATE_PARENT,
   1749			.ops = &clk_branch2_ops,
   1750		},
   1751	},
   1752};
   1753
   1754static const struct freq_tbl ftbl_codec_clk[] = {
   1755	F(9600000, P_XO, 2, 0, 0),
   1756	F(12288000, P_XO, 1, 16, 25),
   1757	F(19200000, P_XO, 1, 0, 0),
   1758	F(11289600, P_EXT_MCLK, 1, 0, 0),
   1759	{ }
   1760};
   1761
   1762static struct clk_rcg2 codec_digcodec_clk_src = {
   1763	.cmd_rcgr = 0x1c09c,
   1764	.mnd_width = 8,
   1765	.hid_width = 5,
   1766	.parent_map = gcc_xo_gpll1_emclk_sleep_map,
   1767	.freq_tbl = ftbl_codec_clk,
   1768	.clkr.hw.init = &(struct clk_init_data){
   1769		.name = "codec_digcodec_clk_src",
   1770		.parent_data = gcc_xo_gpll1_emclk_sleep_parent_data,
   1771		.num_parents = 4,
   1772		.ops = &clk_rcg2_ops,
   1773	},
   1774};
   1775
   1776static struct clk_branch gcc_codec_digcodec_clk = {
   1777	.halt_reg = 0x1c0b0,
   1778	.clkr = {
   1779		.enable_reg = 0x1c0b0,
   1780		.enable_mask = BIT(0),
   1781		.hw.init = &(struct clk_init_data){
   1782			.name = "gcc_ultaudio_codec_digcodec_clk",
   1783			.parent_data = &(const struct clk_parent_data){
   1784				.hw = &codec_digcodec_clk_src.clkr.hw,
   1785			},
   1786			.num_parents = 1,
   1787			.flags = CLK_SET_RATE_PARENT,
   1788			.ops = &clk_branch2_ops,
   1789		},
   1790	},
   1791};
   1792
   1793static struct clk_branch gcc_ultaudio_pcnoc_mport_clk = {
   1794	.halt_reg = 0x1c000,
   1795	.clkr = {
   1796		.enable_reg = 0x1c000,
   1797		.enable_mask = BIT(0),
   1798		.hw.init = &(struct clk_init_data){
   1799			.name = "gcc_ultaudio_pcnoc_mport_clk",
   1800			.parent_data = &(const struct clk_parent_data){
   1801				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   1802			},
   1803			.num_parents = 1,
   1804			.ops = &clk_branch2_ops,
   1805		},
   1806	},
   1807};
   1808
   1809static struct clk_branch gcc_ultaudio_pcnoc_sway_clk = {
   1810	.halt_reg = 0x1c004,
   1811	.clkr = {
   1812		.enable_reg = 0x1c004,
   1813		.enable_mask = BIT(0),
   1814		.hw.init = &(struct clk_init_data){
   1815			.name = "gcc_ultaudio_pcnoc_sway_clk",
   1816			.parent_data = &(const struct clk_parent_data){
   1817				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   1818			},
   1819			.num_parents = 1,
   1820			.ops = &clk_branch2_ops,
   1821		},
   1822	},
   1823};
   1824
   1825static const struct freq_tbl ftbl_gcc_venus0_vcodec0_clk[] = {
   1826	F(100000000, P_GPLL0, 8, 0, 0),
   1827	F(160000000, P_GPLL0, 5, 0, 0),
   1828	F(228570000, P_GPLL0, 3.5, 0, 0),
   1829	{ }
   1830};
   1831
   1832static struct clk_rcg2 vcodec0_clk_src = {
   1833	.cmd_rcgr = 0x4C000,
   1834	.mnd_width = 8,
   1835	.hid_width = 5,
   1836	.parent_map = gcc_xo_gpll0_map,
   1837	.freq_tbl = ftbl_gcc_venus0_vcodec0_clk,
   1838	.clkr.hw.init = &(struct clk_init_data){
   1839		.name = "vcodec0_clk_src",
   1840		.parent_data = gcc_xo_gpll0_parent_data,
   1841		.num_parents = 2,
   1842		.ops = &clk_rcg2_ops,
   1843	},
   1844};
   1845
   1846static struct clk_branch gcc_blsp1_ahb_clk = {
   1847	.halt_reg = 0x01008,
   1848	.halt_check = BRANCH_HALT_VOTED,
   1849	.clkr = {
   1850		.enable_reg = 0x45004,
   1851		.enable_mask = BIT(10),
   1852		.hw.init = &(struct clk_init_data){
   1853			.name = "gcc_blsp1_ahb_clk",
   1854			.parent_data = &(const struct clk_parent_data){
   1855				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   1856			},
   1857			.num_parents = 1,
   1858			.ops = &clk_branch2_ops,
   1859		},
   1860	},
   1861};
   1862
   1863static struct clk_branch gcc_blsp1_sleep_clk = {
   1864	.halt_reg = 0x01004,
   1865	.clkr = {
   1866		.enable_reg = 0x01004,
   1867		.enable_mask = BIT(0),
   1868		.hw.init = &(struct clk_init_data){
   1869			.name = "gcc_blsp1_sleep_clk",
   1870			.ops = &clk_branch2_ops,
   1871		},
   1872	},
   1873};
   1874
   1875static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
   1876	.halt_reg = 0x02008,
   1877	.clkr = {
   1878		.enable_reg = 0x02008,
   1879		.enable_mask = BIT(0),
   1880		.hw.init = &(struct clk_init_data){
   1881			.name = "gcc_blsp1_qup1_i2c_apps_clk",
   1882			.parent_data = &(const struct clk_parent_data){
   1883				.hw = &blsp1_qup1_i2c_apps_clk_src.clkr.hw,
   1884			},
   1885			.num_parents = 1,
   1886			.flags = CLK_SET_RATE_PARENT,
   1887			.ops = &clk_branch2_ops,
   1888		},
   1889	},
   1890};
   1891
   1892static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
   1893	.halt_reg = 0x02004,
   1894	.clkr = {
   1895		.enable_reg = 0x02004,
   1896		.enable_mask = BIT(0),
   1897		.hw.init = &(struct clk_init_data){
   1898			.name = "gcc_blsp1_qup1_spi_apps_clk",
   1899			.parent_data = &(const struct clk_parent_data){
   1900				.hw = &blsp1_qup1_spi_apps_clk_src.clkr.hw,
   1901			},
   1902			.num_parents = 1,
   1903			.flags = CLK_SET_RATE_PARENT,
   1904			.ops = &clk_branch2_ops,
   1905		},
   1906	},
   1907};
   1908
   1909static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
   1910	.halt_reg = 0x03010,
   1911	.clkr = {
   1912		.enable_reg = 0x03010,
   1913		.enable_mask = BIT(0),
   1914		.hw.init = &(struct clk_init_data){
   1915			.name = "gcc_blsp1_qup2_i2c_apps_clk",
   1916			.parent_data = &(const struct clk_parent_data){
   1917				.hw = &blsp1_qup2_i2c_apps_clk_src.clkr.hw,
   1918			},
   1919			.num_parents = 1,
   1920			.flags = CLK_SET_RATE_PARENT,
   1921			.ops = &clk_branch2_ops,
   1922		},
   1923	},
   1924};
   1925
   1926static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
   1927	.halt_reg = 0x0300c,
   1928	.clkr = {
   1929		.enable_reg = 0x0300c,
   1930		.enable_mask = BIT(0),
   1931		.hw.init = &(struct clk_init_data){
   1932			.name = "gcc_blsp1_qup2_spi_apps_clk",
   1933			.parent_data = &(const struct clk_parent_data){
   1934				.hw = &blsp1_qup2_spi_apps_clk_src.clkr.hw,
   1935			},
   1936			.num_parents = 1,
   1937			.flags = CLK_SET_RATE_PARENT,
   1938			.ops = &clk_branch2_ops,
   1939		},
   1940	},
   1941};
   1942
   1943static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
   1944	.halt_reg = 0x04020,
   1945	.clkr = {
   1946		.enable_reg = 0x04020,
   1947		.enable_mask = BIT(0),
   1948		.hw.init = &(struct clk_init_data){
   1949			.name = "gcc_blsp1_qup3_i2c_apps_clk",
   1950			.parent_data = &(const struct clk_parent_data){
   1951				.hw = &blsp1_qup3_i2c_apps_clk_src.clkr.hw,
   1952			},
   1953			.num_parents = 1,
   1954			.flags = CLK_SET_RATE_PARENT,
   1955			.ops = &clk_branch2_ops,
   1956		},
   1957	},
   1958};
   1959
   1960static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
   1961	.halt_reg = 0x0401c,
   1962	.clkr = {
   1963		.enable_reg = 0x0401c,
   1964		.enable_mask = BIT(0),
   1965		.hw.init = &(struct clk_init_data){
   1966			.name = "gcc_blsp1_qup3_spi_apps_clk",
   1967			.parent_data = &(const struct clk_parent_data){
   1968				.hw = &blsp1_qup3_spi_apps_clk_src.clkr.hw,
   1969			},
   1970			.num_parents = 1,
   1971			.flags = CLK_SET_RATE_PARENT,
   1972			.ops = &clk_branch2_ops,
   1973		},
   1974	},
   1975};
   1976
   1977static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
   1978	.halt_reg = 0x05020,
   1979	.clkr = {
   1980		.enable_reg = 0x05020,
   1981		.enable_mask = BIT(0),
   1982		.hw.init = &(struct clk_init_data){
   1983			.name = "gcc_blsp1_qup4_i2c_apps_clk",
   1984			.parent_data = &(const struct clk_parent_data){
   1985				.hw = &blsp1_qup4_i2c_apps_clk_src.clkr.hw,
   1986			},
   1987			.num_parents = 1,
   1988			.flags = CLK_SET_RATE_PARENT,
   1989			.ops = &clk_branch2_ops,
   1990		},
   1991	},
   1992};
   1993
   1994static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
   1995	.halt_reg = 0x0501c,
   1996	.clkr = {
   1997		.enable_reg = 0x0501c,
   1998		.enable_mask = BIT(0),
   1999		.hw.init = &(struct clk_init_data){
   2000			.name = "gcc_blsp1_qup4_spi_apps_clk",
   2001			.parent_data = &(const struct clk_parent_data){
   2002				.hw = &blsp1_qup4_spi_apps_clk_src.clkr.hw,
   2003			},
   2004			.num_parents = 1,
   2005			.flags = CLK_SET_RATE_PARENT,
   2006			.ops = &clk_branch2_ops,
   2007		},
   2008	},
   2009};
   2010
   2011static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
   2012	.halt_reg = 0x06020,
   2013	.clkr = {
   2014		.enable_reg = 0x06020,
   2015		.enable_mask = BIT(0),
   2016		.hw.init = &(struct clk_init_data){
   2017			.name = "gcc_blsp1_qup5_i2c_apps_clk",
   2018			.parent_data = &(const struct clk_parent_data){
   2019				.hw = &blsp1_qup5_i2c_apps_clk_src.clkr.hw,
   2020			},
   2021			.num_parents = 1,
   2022			.flags = CLK_SET_RATE_PARENT,
   2023			.ops = &clk_branch2_ops,
   2024		},
   2025	},
   2026};
   2027
   2028static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
   2029	.halt_reg = 0x0601c,
   2030	.clkr = {
   2031		.enable_reg = 0x0601c,
   2032		.enable_mask = BIT(0),
   2033		.hw.init = &(struct clk_init_data){
   2034			.name = "gcc_blsp1_qup5_spi_apps_clk",
   2035			.parent_data = &(const struct clk_parent_data){
   2036				.hw = &blsp1_qup5_spi_apps_clk_src.clkr.hw,
   2037			},
   2038			.num_parents = 1,
   2039			.flags = CLK_SET_RATE_PARENT,
   2040			.ops = &clk_branch2_ops,
   2041		},
   2042	},
   2043};
   2044
   2045static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
   2046	.halt_reg = 0x07020,
   2047	.clkr = {
   2048		.enable_reg = 0x07020,
   2049		.enable_mask = BIT(0),
   2050		.hw.init = &(struct clk_init_data){
   2051			.name = "gcc_blsp1_qup6_i2c_apps_clk",
   2052			.parent_data = &(const struct clk_parent_data){
   2053				.hw = &blsp1_qup6_i2c_apps_clk_src.clkr.hw,
   2054			},
   2055			.num_parents = 1,
   2056			.flags = CLK_SET_RATE_PARENT,
   2057			.ops = &clk_branch2_ops,
   2058		},
   2059	},
   2060};
   2061
   2062static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
   2063	.halt_reg = 0x0701c,
   2064	.clkr = {
   2065		.enable_reg = 0x0701c,
   2066		.enable_mask = BIT(0),
   2067		.hw.init = &(struct clk_init_data){
   2068			.name = "gcc_blsp1_qup6_spi_apps_clk",
   2069			.parent_data = &(const struct clk_parent_data){
   2070				.hw = &blsp1_qup6_spi_apps_clk_src.clkr.hw,
   2071			},
   2072			.num_parents = 1,
   2073			.flags = CLK_SET_RATE_PARENT,
   2074			.ops = &clk_branch2_ops,
   2075		},
   2076	},
   2077};
   2078
   2079static struct clk_branch gcc_blsp1_uart1_apps_clk = {
   2080	.halt_reg = 0x0203c,
   2081	.clkr = {
   2082		.enable_reg = 0x0203c,
   2083		.enable_mask = BIT(0),
   2084		.hw.init = &(struct clk_init_data){
   2085			.name = "gcc_blsp1_uart1_apps_clk",
   2086			.parent_data = &(const struct clk_parent_data){
   2087				.hw = &blsp1_uart1_apps_clk_src.clkr.hw,
   2088			},
   2089			.num_parents = 1,
   2090			.flags = CLK_SET_RATE_PARENT,
   2091			.ops = &clk_branch2_ops,
   2092		},
   2093	},
   2094};
   2095
   2096static struct clk_branch gcc_blsp1_uart2_apps_clk = {
   2097	.halt_reg = 0x0302c,
   2098	.clkr = {
   2099		.enable_reg = 0x0302c,
   2100		.enable_mask = BIT(0),
   2101		.hw.init = &(struct clk_init_data){
   2102			.name = "gcc_blsp1_uart2_apps_clk",
   2103			.parent_data = &(const struct clk_parent_data){
   2104				.hw = &blsp1_uart2_apps_clk_src.clkr.hw,
   2105			},
   2106			.num_parents = 1,
   2107			.flags = CLK_SET_RATE_PARENT,
   2108			.ops = &clk_branch2_ops,
   2109		},
   2110	},
   2111};
   2112
   2113static struct clk_branch gcc_boot_rom_ahb_clk = {
   2114	.halt_reg = 0x1300c,
   2115	.halt_check = BRANCH_HALT_VOTED,
   2116	.clkr = {
   2117		.enable_reg = 0x45004,
   2118		.enable_mask = BIT(7),
   2119		.hw.init = &(struct clk_init_data){
   2120			.name = "gcc_boot_rom_ahb_clk",
   2121			.parent_data = &(const struct clk_parent_data){
   2122				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2123			},
   2124			.num_parents = 1,
   2125			.ops = &clk_branch2_ops,
   2126		},
   2127	},
   2128};
   2129
   2130static struct clk_branch gcc_camss_cci_ahb_clk = {
   2131	.halt_reg = 0x5101c,
   2132	.clkr = {
   2133		.enable_reg = 0x5101c,
   2134		.enable_mask = BIT(0),
   2135		.hw.init = &(struct clk_init_data){
   2136			.name = "gcc_camss_cci_ahb_clk",
   2137			.parent_data = &(const struct clk_parent_data){
   2138				.hw = &camss_ahb_clk_src.clkr.hw,
   2139			},
   2140			.num_parents = 1,
   2141			.flags = CLK_SET_RATE_PARENT,
   2142			.ops = &clk_branch2_ops,
   2143		},
   2144	},
   2145};
   2146
   2147static struct clk_branch gcc_camss_cci_clk = {
   2148	.halt_reg = 0x51018,
   2149	.clkr = {
   2150		.enable_reg = 0x51018,
   2151		.enable_mask = BIT(0),
   2152		.hw.init = &(struct clk_init_data){
   2153			.name = "gcc_camss_cci_clk",
   2154			.parent_data = &(const struct clk_parent_data){
   2155				.hw = &cci_clk_src.clkr.hw,
   2156			},
   2157			.num_parents = 1,
   2158			.flags = CLK_SET_RATE_PARENT,
   2159			.ops = &clk_branch2_ops,
   2160		},
   2161	},
   2162};
   2163
   2164static struct clk_branch gcc_camss_csi0_ahb_clk = {
   2165	.halt_reg = 0x4e040,
   2166	.clkr = {
   2167		.enable_reg = 0x4e040,
   2168		.enable_mask = BIT(0),
   2169		.hw.init = &(struct clk_init_data){
   2170			.name = "gcc_camss_csi0_ahb_clk",
   2171			.parent_data = &(const struct clk_parent_data){
   2172				.hw = &camss_ahb_clk_src.clkr.hw,
   2173			},
   2174			.num_parents = 1,
   2175			.flags = CLK_SET_RATE_PARENT,
   2176			.ops = &clk_branch2_ops,
   2177		},
   2178	},
   2179};
   2180
   2181static struct clk_branch gcc_camss_csi0_clk = {
   2182	.halt_reg = 0x4e03c,
   2183	.clkr = {
   2184		.enable_reg = 0x4e03c,
   2185		.enable_mask = BIT(0),
   2186		.hw.init = &(struct clk_init_data){
   2187			.name = "gcc_camss_csi0_clk",
   2188			.parent_data = &(const struct clk_parent_data){
   2189				.hw = &csi0_clk_src.clkr.hw,
   2190			},
   2191			.num_parents = 1,
   2192			.flags = CLK_SET_RATE_PARENT,
   2193			.ops = &clk_branch2_ops,
   2194		},
   2195	},
   2196};
   2197
   2198static struct clk_branch gcc_camss_csi0phy_clk = {
   2199	.halt_reg = 0x4e048,
   2200	.clkr = {
   2201		.enable_reg = 0x4e048,
   2202		.enable_mask = BIT(0),
   2203		.hw.init = &(struct clk_init_data){
   2204			.name = "gcc_camss_csi0phy_clk",
   2205			.parent_data = &(const struct clk_parent_data){
   2206				.hw = &csi0_clk_src.clkr.hw,
   2207			},
   2208			.num_parents = 1,
   2209			.flags = CLK_SET_RATE_PARENT,
   2210			.ops = &clk_branch2_ops,
   2211		},
   2212	},
   2213};
   2214
   2215static struct clk_branch gcc_camss_csi0pix_clk = {
   2216	.halt_reg = 0x4e058,
   2217	.clkr = {
   2218		.enable_reg = 0x4e058,
   2219		.enable_mask = BIT(0),
   2220		.hw.init = &(struct clk_init_data){
   2221			.name = "gcc_camss_csi0pix_clk",
   2222			.parent_data = &(const struct clk_parent_data){
   2223				.hw = &csi0_clk_src.clkr.hw,
   2224			},
   2225			.num_parents = 1,
   2226			.flags = CLK_SET_RATE_PARENT,
   2227			.ops = &clk_branch2_ops,
   2228		},
   2229	},
   2230};
   2231
   2232static struct clk_branch gcc_camss_csi0rdi_clk = {
   2233	.halt_reg = 0x4e050,
   2234	.clkr = {
   2235		.enable_reg = 0x4e050,
   2236		.enable_mask = BIT(0),
   2237		.hw.init = &(struct clk_init_data){
   2238			.name = "gcc_camss_csi0rdi_clk",
   2239			.parent_data = &(const struct clk_parent_data){
   2240				.hw = &csi0_clk_src.clkr.hw,
   2241			},
   2242			.num_parents = 1,
   2243			.flags = CLK_SET_RATE_PARENT,
   2244			.ops = &clk_branch2_ops,
   2245		},
   2246	},
   2247};
   2248
   2249static struct clk_branch gcc_camss_csi1_ahb_clk = {
   2250	.halt_reg = 0x4f040,
   2251	.clkr = {
   2252		.enable_reg = 0x4f040,
   2253		.enable_mask = BIT(0),
   2254		.hw.init = &(struct clk_init_data){
   2255			.name = "gcc_camss_csi1_ahb_clk",
   2256			.parent_data = &(const struct clk_parent_data){
   2257				.hw = &camss_ahb_clk_src.clkr.hw,
   2258			},
   2259			.num_parents = 1,
   2260			.flags = CLK_SET_RATE_PARENT,
   2261			.ops = &clk_branch2_ops,
   2262		},
   2263	},
   2264};
   2265
   2266static struct clk_branch gcc_camss_csi1_clk = {
   2267	.halt_reg = 0x4f03c,
   2268	.clkr = {
   2269		.enable_reg = 0x4f03c,
   2270		.enable_mask = BIT(0),
   2271		.hw.init = &(struct clk_init_data){
   2272			.name = "gcc_camss_csi1_clk",
   2273			.parent_data = &(const struct clk_parent_data){
   2274				.hw = &csi1_clk_src.clkr.hw,
   2275			},
   2276			.num_parents = 1,
   2277			.flags = CLK_SET_RATE_PARENT,
   2278			.ops = &clk_branch2_ops,
   2279		},
   2280	},
   2281};
   2282
   2283static struct clk_branch gcc_camss_csi1phy_clk = {
   2284	.halt_reg = 0x4f048,
   2285	.clkr = {
   2286		.enable_reg = 0x4f048,
   2287		.enable_mask = BIT(0),
   2288		.hw.init = &(struct clk_init_data){
   2289			.name = "gcc_camss_csi1phy_clk",
   2290			.parent_data = &(const struct clk_parent_data){
   2291				.hw = &csi1_clk_src.clkr.hw,
   2292			},
   2293			.num_parents = 1,
   2294			.flags = CLK_SET_RATE_PARENT,
   2295			.ops = &clk_branch2_ops,
   2296		},
   2297	},
   2298};
   2299
   2300static struct clk_branch gcc_camss_csi1pix_clk = {
   2301	.halt_reg = 0x4f058,
   2302	.clkr = {
   2303		.enable_reg = 0x4f058,
   2304		.enable_mask = BIT(0),
   2305		.hw.init = &(struct clk_init_data){
   2306			.name = "gcc_camss_csi1pix_clk",
   2307			.parent_data = &(const struct clk_parent_data){
   2308				.hw = &csi1_clk_src.clkr.hw,
   2309			},
   2310			.num_parents = 1,
   2311			.flags = CLK_SET_RATE_PARENT,
   2312			.ops = &clk_branch2_ops,
   2313		},
   2314	},
   2315};
   2316
   2317static struct clk_branch gcc_camss_csi1rdi_clk = {
   2318	.halt_reg = 0x4f050,
   2319	.clkr = {
   2320		.enable_reg = 0x4f050,
   2321		.enable_mask = BIT(0),
   2322		.hw.init = &(struct clk_init_data){
   2323			.name = "gcc_camss_csi1rdi_clk",
   2324			.parent_data = &(const struct clk_parent_data){
   2325				.hw = &csi1_clk_src.clkr.hw,
   2326			},
   2327			.num_parents = 1,
   2328			.flags = CLK_SET_RATE_PARENT,
   2329			.ops = &clk_branch2_ops,
   2330		},
   2331	},
   2332};
   2333
   2334static struct clk_branch gcc_camss_csi_vfe0_clk = {
   2335	.halt_reg = 0x58050,
   2336	.clkr = {
   2337		.enable_reg = 0x58050,
   2338		.enable_mask = BIT(0),
   2339		.hw.init = &(struct clk_init_data){
   2340			.name = "gcc_camss_csi_vfe0_clk",
   2341			.parent_data = &(const struct clk_parent_data){
   2342				.hw = &vfe0_clk_src.clkr.hw,
   2343			},
   2344			.num_parents = 1,
   2345			.flags = CLK_SET_RATE_PARENT,
   2346			.ops = &clk_branch2_ops,
   2347		},
   2348	},
   2349};
   2350
   2351static struct clk_branch gcc_camss_gp0_clk = {
   2352	.halt_reg = 0x54018,
   2353	.clkr = {
   2354		.enable_reg = 0x54018,
   2355		.enable_mask = BIT(0),
   2356		.hw.init = &(struct clk_init_data){
   2357			.name = "gcc_camss_gp0_clk",
   2358			.parent_data = &(const struct clk_parent_data){
   2359				.hw = &camss_gp0_clk_src.clkr.hw,
   2360			},
   2361			.num_parents = 1,
   2362			.flags = CLK_SET_RATE_PARENT,
   2363			.ops = &clk_branch2_ops,
   2364		},
   2365	},
   2366};
   2367
   2368static struct clk_branch gcc_camss_gp1_clk = {
   2369	.halt_reg = 0x55018,
   2370	.clkr = {
   2371		.enable_reg = 0x55018,
   2372		.enable_mask = BIT(0),
   2373		.hw.init = &(struct clk_init_data){
   2374			.name = "gcc_camss_gp1_clk",
   2375			.parent_data = &(const struct clk_parent_data){
   2376				.hw = &camss_gp1_clk_src.clkr.hw,
   2377			},
   2378			.num_parents = 1,
   2379			.flags = CLK_SET_RATE_PARENT,
   2380			.ops = &clk_branch2_ops,
   2381		},
   2382	},
   2383};
   2384
   2385static struct clk_branch gcc_camss_ispif_ahb_clk = {
   2386	.halt_reg = 0x50004,
   2387	.clkr = {
   2388		.enable_reg = 0x50004,
   2389		.enable_mask = BIT(0),
   2390		.hw.init = &(struct clk_init_data){
   2391			.name = "gcc_camss_ispif_ahb_clk",
   2392			.parent_data = &(const struct clk_parent_data){
   2393				.hw = &camss_ahb_clk_src.clkr.hw,
   2394			},
   2395			.num_parents = 1,
   2396			.flags = CLK_SET_RATE_PARENT,
   2397			.ops = &clk_branch2_ops,
   2398		},
   2399	},
   2400};
   2401
   2402static struct clk_branch gcc_camss_jpeg0_clk = {
   2403	.halt_reg = 0x57020,
   2404	.clkr = {
   2405		.enable_reg = 0x57020,
   2406		.enable_mask = BIT(0),
   2407		.hw.init = &(struct clk_init_data){
   2408			.name = "gcc_camss_jpeg0_clk",
   2409			.parent_data = &(const struct clk_parent_data){
   2410				.hw = &jpeg0_clk_src.clkr.hw,
   2411			},
   2412			.num_parents = 1,
   2413			.flags = CLK_SET_RATE_PARENT,
   2414			.ops = &clk_branch2_ops,
   2415		},
   2416	},
   2417};
   2418
   2419static struct clk_branch gcc_camss_jpeg_ahb_clk = {
   2420	.halt_reg = 0x57024,
   2421	.clkr = {
   2422		.enable_reg = 0x57024,
   2423		.enable_mask = BIT(0),
   2424		.hw.init = &(struct clk_init_data){
   2425			.name = "gcc_camss_jpeg_ahb_clk",
   2426			.parent_data = &(const struct clk_parent_data){
   2427				.hw = &camss_ahb_clk_src.clkr.hw,
   2428			},
   2429			.num_parents = 1,
   2430			.flags = CLK_SET_RATE_PARENT,
   2431			.ops = &clk_branch2_ops,
   2432		},
   2433	},
   2434};
   2435
   2436static struct clk_branch gcc_camss_jpeg_axi_clk = {
   2437	.halt_reg = 0x57028,
   2438	.clkr = {
   2439		.enable_reg = 0x57028,
   2440		.enable_mask = BIT(0),
   2441		.hw.init = &(struct clk_init_data){
   2442			.name = "gcc_camss_jpeg_axi_clk",
   2443			.parent_data = &(const struct clk_parent_data){
   2444				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   2445			},
   2446			.num_parents = 1,
   2447			.flags = CLK_SET_RATE_PARENT,
   2448			.ops = &clk_branch2_ops,
   2449		},
   2450	},
   2451};
   2452
   2453static struct clk_branch gcc_camss_mclk0_clk = {
   2454	.halt_reg = 0x52018,
   2455	.clkr = {
   2456		.enable_reg = 0x52018,
   2457		.enable_mask = BIT(0),
   2458		.hw.init = &(struct clk_init_data){
   2459			.name = "gcc_camss_mclk0_clk",
   2460			.parent_data = &(const struct clk_parent_data){
   2461				.hw = &mclk0_clk_src.clkr.hw,
   2462			},
   2463			.num_parents = 1,
   2464			.flags = CLK_SET_RATE_PARENT,
   2465			.ops = &clk_branch2_ops,
   2466		},
   2467	},
   2468};
   2469
   2470static struct clk_branch gcc_camss_mclk1_clk = {
   2471	.halt_reg = 0x53018,
   2472	.clkr = {
   2473		.enable_reg = 0x53018,
   2474		.enable_mask = BIT(0),
   2475		.hw.init = &(struct clk_init_data){
   2476			.name = "gcc_camss_mclk1_clk",
   2477			.parent_data = &(const struct clk_parent_data){
   2478				.hw = &mclk1_clk_src.clkr.hw,
   2479			},
   2480			.num_parents = 1,
   2481			.flags = CLK_SET_RATE_PARENT,
   2482			.ops = &clk_branch2_ops,
   2483		},
   2484	},
   2485};
   2486
   2487static struct clk_branch gcc_camss_micro_ahb_clk = {
   2488	.halt_reg = 0x5600c,
   2489	.clkr = {
   2490		.enable_reg = 0x5600c,
   2491		.enable_mask = BIT(0),
   2492		.hw.init = &(struct clk_init_data){
   2493			.name = "gcc_camss_micro_ahb_clk",
   2494			.parent_data = &(const struct clk_parent_data){
   2495				.hw = &camss_ahb_clk_src.clkr.hw,
   2496			},
   2497			.num_parents = 1,
   2498			.flags = CLK_SET_RATE_PARENT,
   2499			.ops = &clk_branch2_ops,
   2500		},
   2501	},
   2502};
   2503
   2504static struct clk_branch gcc_camss_csi0phytimer_clk = {
   2505	.halt_reg = 0x4e01c,
   2506	.clkr = {
   2507		.enable_reg = 0x4e01c,
   2508		.enable_mask = BIT(0),
   2509		.hw.init = &(struct clk_init_data){
   2510			.name = "gcc_camss_csi0phytimer_clk",
   2511			.parent_data = &(const struct clk_parent_data){
   2512				.hw = &csi0phytimer_clk_src.clkr.hw,
   2513			},
   2514			.num_parents = 1,
   2515			.flags = CLK_SET_RATE_PARENT,
   2516			.ops = &clk_branch2_ops,
   2517		},
   2518	},
   2519};
   2520
   2521static struct clk_branch gcc_camss_csi1phytimer_clk = {
   2522	.halt_reg = 0x4f01c,
   2523	.clkr = {
   2524		.enable_reg = 0x4f01c,
   2525		.enable_mask = BIT(0),
   2526		.hw.init = &(struct clk_init_data){
   2527			.name = "gcc_camss_csi1phytimer_clk",
   2528			.parent_data = &(const struct clk_parent_data){
   2529				.hw = &csi1phytimer_clk_src.clkr.hw,
   2530			},
   2531			.num_parents = 1,
   2532			.flags = CLK_SET_RATE_PARENT,
   2533			.ops = &clk_branch2_ops,
   2534		},
   2535	},
   2536};
   2537
   2538static struct clk_branch gcc_camss_ahb_clk = {
   2539	.halt_reg = 0x5a014,
   2540	.clkr = {
   2541		.enable_reg = 0x5a014,
   2542		.enable_mask = BIT(0),
   2543		.hw.init = &(struct clk_init_data){
   2544			.name = "gcc_camss_ahb_clk",
   2545			.parent_data = &(const struct clk_parent_data){
   2546				.hw = &camss_ahb_clk_src.clkr.hw,
   2547			},
   2548			.num_parents = 1,
   2549			.flags = CLK_SET_RATE_PARENT,
   2550			.ops = &clk_branch2_ops,
   2551		},
   2552	},
   2553};
   2554
   2555static struct clk_branch gcc_camss_top_ahb_clk = {
   2556	.halt_reg = 0x56004,
   2557	.clkr = {
   2558		.enable_reg = 0x56004,
   2559		.enable_mask = BIT(0),
   2560		.hw.init = &(struct clk_init_data){
   2561			.name = "gcc_camss_top_ahb_clk",
   2562			.parent_data = &(const struct clk_parent_data){
   2563				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2564			},
   2565			.num_parents = 1,
   2566			.flags = CLK_SET_RATE_PARENT,
   2567			.ops = &clk_branch2_ops,
   2568		},
   2569	},
   2570};
   2571
   2572static struct clk_branch gcc_camss_cpp_ahb_clk = {
   2573	.halt_reg = 0x58040,
   2574	.clkr = {
   2575		.enable_reg = 0x58040,
   2576		.enable_mask = BIT(0),
   2577		.hw.init = &(struct clk_init_data){
   2578			.name = "gcc_camss_cpp_ahb_clk",
   2579			.parent_data = &(const struct clk_parent_data){
   2580				.hw = &camss_ahb_clk_src.clkr.hw,
   2581			},
   2582			.num_parents = 1,
   2583			.flags = CLK_SET_RATE_PARENT,
   2584			.ops = &clk_branch2_ops,
   2585		},
   2586	},
   2587};
   2588
   2589static struct clk_branch gcc_camss_cpp_clk = {
   2590	.halt_reg = 0x5803c,
   2591	.clkr = {
   2592		.enable_reg = 0x5803c,
   2593		.enable_mask = BIT(0),
   2594		.hw.init = &(struct clk_init_data){
   2595			.name = "gcc_camss_cpp_clk",
   2596			.parent_data = &(const struct clk_parent_data){
   2597				.hw = &cpp_clk_src.clkr.hw,
   2598			},
   2599			.num_parents = 1,
   2600			.flags = CLK_SET_RATE_PARENT,
   2601			.ops = &clk_branch2_ops,
   2602		},
   2603	},
   2604};
   2605
   2606static struct clk_branch gcc_camss_vfe0_clk = {
   2607	.halt_reg = 0x58038,
   2608	.clkr = {
   2609		.enable_reg = 0x58038,
   2610		.enable_mask = BIT(0),
   2611		.hw.init = &(struct clk_init_data){
   2612			.name = "gcc_camss_vfe0_clk",
   2613			.parent_data = &(const struct clk_parent_data){
   2614				.hw = &vfe0_clk_src.clkr.hw,
   2615			},
   2616			.num_parents = 1,
   2617			.flags = CLK_SET_RATE_PARENT,
   2618			.ops = &clk_branch2_ops,
   2619		},
   2620	},
   2621};
   2622
   2623static struct clk_branch gcc_camss_vfe_ahb_clk = {
   2624	.halt_reg = 0x58044,
   2625	.clkr = {
   2626		.enable_reg = 0x58044,
   2627		.enable_mask = BIT(0),
   2628		.hw.init = &(struct clk_init_data){
   2629			.name = "gcc_camss_vfe_ahb_clk",
   2630			.parent_data = &(const struct clk_parent_data){
   2631				.hw = &camss_ahb_clk_src.clkr.hw,
   2632			},
   2633			.num_parents = 1,
   2634			.flags = CLK_SET_RATE_PARENT,
   2635			.ops = &clk_branch2_ops,
   2636		},
   2637	},
   2638};
   2639
   2640static struct clk_branch gcc_camss_vfe_axi_clk = {
   2641	.halt_reg = 0x58048,
   2642	.clkr = {
   2643		.enable_reg = 0x58048,
   2644		.enable_mask = BIT(0),
   2645		.hw.init = &(struct clk_init_data){
   2646			.name = "gcc_camss_vfe_axi_clk",
   2647			.parent_data = &(const struct clk_parent_data){
   2648				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   2649			},
   2650			.num_parents = 1,
   2651			.flags = CLK_SET_RATE_PARENT,
   2652			.ops = &clk_branch2_ops,
   2653		},
   2654	},
   2655};
   2656
   2657static struct clk_branch gcc_crypto_ahb_clk = {
   2658	.halt_reg = 0x16024,
   2659	.halt_check = BRANCH_HALT_VOTED,
   2660	.clkr = {
   2661		.enable_reg = 0x45004,
   2662		.enable_mask = BIT(0),
   2663		.hw.init = &(struct clk_init_data){
   2664			.name = "gcc_crypto_ahb_clk",
   2665			.parent_data = &(const struct clk_parent_data){
   2666				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2667			},
   2668			.num_parents = 1,
   2669			.flags = CLK_SET_RATE_PARENT,
   2670			.ops = &clk_branch2_ops,
   2671		},
   2672	},
   2673};
   2674
   2675static struct clk_branch gcc_crypto_axi_clk = {
   2676	.halt_reg = 0x16020,
   2677	.halt_check = BRANCH_HALT_VOTED,
   2678	.clkr = {
   2679		.enable_reg = 0x45004,
   2680		.enable_mask = BIT(1),
   2681		.hw.init = &(struct clk_init_data){
   2682			.name = "gcc_crypto_axi_clk",
   2683			.parent_data = &(const struct clk_parent_data){
   2684				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2685			},
   2686			.num_parents = 1,
   2687			.flags = CLK_SET_RATE_PARENT,
   2688			.ops = &clk_branch2_ops,
   2689		},
   2690	},
   2691};
   2692
   2693static struct clk_branch gcc_crypto_clk = {
   2694	.halt_reg = 0x1601c,
   2695	.halt_check = BRANCH_HALT_VOTED,
   2696	.clkr = {
   2697		.enable_reg = 0x45004,
   2698		.enable_mask = BIT(2),
   2699		.hw.init = &(struct clk_init_data){
   2700			.name = "gcc_crypto_clk",
   2701			.parent_data = &(const struct clk_parent_data){
   2702				.hw = &crypto_clk_src.clkr.hw,
   2703			},
   2704			.num_parents = 1,
   2705			.flags = CLK_SET_RATE_PARENT,
   2706			.ops = &clk_branch2_ops,
   2707		},
   2708	},
   2709};
   2710
   2711static struct clk_branch gcc_oxili_gmem_clk = {
   2712	.halt_reg = 0x59024,
   2713	.clkr = {
   2714		.enable_reg = 0x59024,
   2715		.enable_mask = BIT(0),
   2716		.hw.init = &(struct clk_init_data){
   2717			.name = "gcc_oxili_gmem_clk",
   2718			.parent_data = &(const struct clk_parent_data){
   2719				.hw = &gfx3d_clk_src.clkr.hw,
   2720			},
   2721			.num_parents = 1,
   2722			.flags = CLK_SET_RATE_PARENT,
   2723			.ops = &clk_branch2_ops,
   2724		},
   2725	},
   2726};
   2727
   2728static struct clk_branch gcc_gp1_clk = {
   2729	.halt_reg = 0x08000,
   2730	.clkr = {
   2731		.enable_reg = 0x08000,
   2732		.enable_mask = BIT(0),
   2733		.hw.init = &(struct clk_init_data){
   2734			.name = "gcc_gp1_clk",
   2735			.parent_data = &(const struct clk_parent_data){
   2736				.hw = &gp1_clk_src.clkr.hw,
   2737			},
   2738			.num_parents = 1,
   2739			.flags = CLK_SET_RATE_PARENT,
   2740			.ops = &clk_branch2_ops,
   2741		},
   2742	},
   2743};
   2744
   2745static struct clk_branch gcc_gp2_clk = {
   2746	.halt_reg = 0x09000,
   2747	.clkr = {
   2748		.enable_reg = 0x09000,
   2749		.enable_mask = BIT(0),
   2750		.hw.init = &(struct clk_init_data){
   2751			.name = "gcc_gp2_clk",
   2752			.parent_data = &(const struct clk_parent_data){
   2753				.hw = &gp2_clk_src.clkr.hw,
   2754			},
   2755			.num_parents = 1,
   2756			.flags = CLK_SET_RATE_PARENT,
   2757			.ops = &clk_branch2_ops,
   2758		},
   2759	},
   2760};
   2761
   2762static struct clk_branch gcc_gp3_clk = {
   2763	.halt_reg = 0x0a000,
   2764	.clkr = {
   2765		.enable_reg = 0x0a000,
   2766		.enable_mask = BIT(0),
   2767		.hw.init = &(struct clk_init_data){
   2768			.name = "gcc_gp3_clk",
   2769			.parent_data = &(const struct clk_parent_data){
   2770				.hw = &gp3_clk_src.clkr.hw,
   2771			},
   2772			.num_parents = 1,
   2773			.flags = CLK_SET_RATE_PARENT,
   2774			.ops = &clk_branch2_ops,
   2775		},
   2776	},
   2777};
   2778
   2779static struct clk_branch gcc_mdss_ahb_clk = {
   2780	.halt_reg = 0x4d07c,
   2781	.clkr = {
   2782		.enable_reg = 0x4d07c,
   2783		.enable_mask = BIT(0),
   2784		.hw.init = &(struct clk_init_data){
   2785			.name = "gcc_mdss_ahb_clk",
   2786			.parent_data = &(const struct clk_parent_data){
   2787				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2788			},
   2789			.num_parents = 1,
   2790			.flags = CLK_SET_RATE_PARENT,
   2791			.ops = &clk_branch2_ops,
   2792		},
   2793	},
   2794};
   2795
   2796static struct clk_branch gcc_mdss_axi_clk = {
   2797	.halt_reg = 0x4d080,
   2798	.clkr = {
   2799		.enable_reg = 0x4d080,
   2800		.enable_mask = BIT(0),
   2801		.hw.init = &(struct clk_init_data){
   2802			.name = "gcc_mdss_axi_clk",
   2803			.parent_data = &(const struct clk_parent_data){
   2804				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   2805			},
   2806			.num_parents = 1,
   2807			.flags = CLK_SET_RATE_PARENT,
   2808			.ops = &clk_branch2_ops,
   2809		},
   2810	},
   2811};
   2812
   2813static struct clk_branch gcc_mdss_byte0_clk = {
   2814	.halt_reg = 0x4d094,
   2815	.clkr = {
   2816		.enable_reg = 0x4d094,
   2817		.enable_mask = BIT(0),
   2818		.hw.init = &(struct clk_init_data){
   2819			.name = "gcc_mdss_byte0_clk",
   2820			.parent_data = &(const struct clk_parent_data){
   2821				.hw = &byte0_clk_src.clkr.hw,
   2822			},
   2823			.num_parents = 1,
   2824			.flags = CLK_SET_RATE_PARENT,
   2825			.ops = &clk_branch2_ops,
   2826		},
   2827	},
   2828};
   2829
   2830static struct clk_branch gcc_mdss_byte1_clk = {
   2831	.halt_reg = 0x4d0a0,
   2832	.clkr = {
   2833		.enable_reg = 0x4d0a0,
   2834		.enable_mask = BIT(0),
   2835		.hw.init = &(struct clk_init_data){
   2836			.name = "gcc_mdss_byte1_clk",
   2837			.parent_data = &(const struct clk_parent_data){
   2838				.hw = &byte1_clk_src.clkr.hw,
   2839			},
   2840			.num_parents = 1,
   2841			.flags = CLK_SET_RATE_PARENT,
   2842			.ops = &clk_branch2_ops,
   2843		},
   2844	},
   2845};
   2846
   2847static struct clk_branch gcc_mdss_esc0_clk = {
   2848	.halt_reg = 0x4d098,
   2849	.clkr = {
   2850		.enable_reg = 0x4d098,
   2851		.enable_mask = BIT(0),
   2852		.hw.init = &(struct clk_init_data){
   2853			.name = "gcc_mdss_esc0_clk",
   2854			.parent_data = &(const struct clk_parent_data){
   2855				.hw = &esc0_clk_src.clkr.hw,
   2856			},
   2857			.num_parents = 1,
   2858			.flags = CLK_SET_RATE_PARENT,
   2859			.ops = &clk_branch2_ops,
   2860		},
   2861	},
   2862};
   2863
   2864static struct clk_branch gcc_mdss_esc1_clk = {
   2865	.halt_reg = 0x4d09c,
   2866	.clkr = {
   2867		.enable_reg = 0x4d09c,
   2868		.enable_mask = BIT(0),
   2869		.hw.init = &(struct clk_init_data){
   2870			.name = "gcc_mdss_esc1_clk",
   2871			.parent_data = &(const struct clk_parent_data){
   2872				.hw = &esc1_clk_src.clkr.hw,
   2873			},
   2874			.num_parents = 1,
   2875			.flags = CLK_SET_RATE_PARENT,
   2876			.ops = &clk_branch2_ops,
   2877		},
   2878	},
   2879};
   2880
   2881static struct clk_branch gcc_mdss_mdp_clk = {
   2882	.halt_reg = 0x4D088,
   2883	.clkr = {
   2884		.enable_reg = 0x4D088,
   2885		.enable_mask = BIT(0),
   2886		.hw.init = &(struct clk_init_data){
   2887			.name = "gcc_mdss_mdp_clk",
   2888			.parent_data = &(const struct clk_parent_data){
   2889				.hw = &mdp_clk_src.clkr.hw,
   2890			},
   2891			.num_parents = 1,
   2892			.flags = CLK_SET_RATE_PARENT,
   2893			.ops = &clk_branch2_ops,
   2894		},
   2895	},
   2896};
   2897
   2898static struct clk_branch gcc_mdss_pclk0_clk = {
   2899	.halt_reg = 0x4d084,
   2900	.clkr = {
   2901		.enable_reg = 0x4d084,
   2902		.enable_mask = BIT(0),
   2903		.hw.init = &(struct clk_init_data){
   2904			.name = "gcc_mdss_pclk0_clk",
   2905			.parent_data = &(const struct clk_parent_data){
   2906				.hw = &pclk0_clk_src.clkr.hw,
   2907			},
   2908			.num_parents = 1,
   2909			.flags = CLK_SET_RATE_PARENT,
   2910			.ops = &clk_branch2_ops,
   2911		},
   2912	},
   2913};
   2914
   2915static struct clk_branch gcc_mdss_pclk1_clk = {
   2916	.halt_reg = 0x4d0a4,
   2917	.clkr = {
   2918		.enable_reg = 0x4d0a4,
   2919		.enable_mask = BIT(0),
   2920		.hw.init = &(struct clk_init_data){
   2921			.name = "gcc_mdss_pclk1_clk",
   2922			.parent_data = &(const struct clk_parent_data){
   2923				.hw = &pclk1_clk_src.clkr.hw,
   2924			},
   2925			.num_parents = 1,
   2926			.flags = CLK_SET_RATE_PARENT,
   2927			.ops = &clk_branch2_ops,
   2928		},
   2929	},
   2930};
   2931
   2932static struct clk_branch gcc_mdss_vsync_clk = {
   2933	.halt_reg = 0x4d090,
   2934	.clkr = {
   2935		.enable_reg = 0x4d090,
   2936		.enable_mask = BIT(0),
   2937		.hw.init = &(struct clk_init_data){
   2938			.name = "gcc_mdss_vsync_clk",
   2939			.parent_data = &(const struct clk_parent_data){
   2940				.hw = &vsync_clk_src.clkr.hw,
   2941			},
   2942			.num_parents = 1,
   2943			.flags = CLK_SET_RATE_PARENT,
   2944			.ops = &clk_branch2_ops,
   2945		},
   2946	},
   2947};
   2948
   2949static struct clk_branch gcc_mss_cfg_ahb_clk = {
   2950	.halt_reg = 0x49000,
   2951	.clkr = {
   2952		.enable_reg = 0x49000,
   2953		.enable_mask = BIT(0),
   2954		.hw.init = &(struct clk_init_data){
   2955			.name = "gcc_mss_cfg_ahb_clk",
   2956			.parent_data = &(const struct clk_parent_data){
   2957				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2958			},
   2959			.num_parents = 1,
   2960			.flags = CLK_SET_RATE_PARENT,
   2961			.ops = &clk_branch2_ops,
   2962		},
   2963	},
   2964};
   2965
   2966static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
   2967	.halt_reg = 0x49004,
   2968	.clkr = {
   2969		.enable_reg = 0x49004,
   2970		.enable_mask = BIT(0),
   2971		.hw.init = &(struct clk_init_data){
   2972			.name = "gcc_mss_q6_bimc_axi_clk",
   2973			.parent_data = &(const struct clk_parent_data){
   2974				.hw = &bimc_ddr_clk_src.clkr.hw,
   2975			},
   2976			.num_parents = 1,
   2977			.flags = CLK_SET_RATE_PARENT,
   2978			.ops = &clk_branch2_ops,
   2979		},
   2980	},
   2981};
   2982
   2983static struct clk_branch gcc_oxili_ahb_clk = {
   2984	.halt_reg = 0x59028,
   2985	.clkr = {
   2986		.enable_reg = 0x59028,
   2987		.enable_mask = BIT(0),
   2988		.hw.init = &(struct clk_init_data){
   2989			.name = "gcc_oxili_ahb_clk",
   2990			.parent_data = &(const struct clk_parent_data){
   2991				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   2992			},
   2993			.num_parents = 1,
   2994			.flags = CLK_SET_RATE_PARENT,
   2995			.ops = &clk_branch2_ops,
   2996		},
   2997	},
   2998};
   2999
   3000static struct clk_branch gcc_oxili_gfx3d_clk = {
   3001	.halt_reg = 0x59020,
   3002	.clkr = {
   3003		.enable_reg = 0x59020,
   3004		.enable_mask = BIT(0),
   3005		.hw.init = &(struct clk_init_data){
   3006			.name = "gcc_oxili_gfx3d_clk",
   3007			.parent_data = &(const struct clk_parent_data){
   3008				.hw = &gfx3d_clk_src.clkr.hw,
   3009			},
   3010			.num_parents = 1,
   3011			.flags = CLK_SET_RATE_PARENT,
   3012			.ops = &clk_branch2_ops,
   3013		},
   3014	},
   3015};
   3016
   3017static struct clk_branch gcc_pdm2_clk = {
   3018	.halt_reg = 0x4400c,
   3019	.clkr = {
   3020		.enable_reg = 0x4400c,
   3021		.enable_mask = BIT(0),
   3022		.hw.init = &(struct clk_init_data){
   3023			.name = "gcc_pdm2_clk",
   3024			.parent_data = &(const struct clk_parent_data){
   3025				.hw = &pdm2_clk_src.clkr.hw,
   3026			},
   3027			.num_parents = 1,
   3028			.flags = CLK_SET_RATE_PARENT,
   3029			.ops = &clk_branch2_ops,
   3030		},
   3031	},
   3032};
   3033
   3034static struct clk_branch gcc_pdm_ahb_clk = {
   3035	.halt_reg = 0x44004,
   3036	.clkr = {
   3037		.enable_reg = 0x44004,
   3038		.enable_mask = BIT(0),
   3039		.hw.init = &(struct clk_init_data){
   3040			.name = "gcc_pdm_ahb_clk",
   3041			.parent_data = &(const struct clk_parent_data){
   3042				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3043			},
   3044			.num_parents = 1,
   3045			.flags = CLK_SET_RATE_PARENT,
   3046			.ops = &clk_branch2_ops,
   3047		},
   3048	},
   3049};
   3050
   3051static struct clk_branch gcc_prng_ahb_clk = {
   3052	.halt_reg = 0x13004,
   3053	.halt_check = BRANCH_HALT_VOTED,
   3054	.clkr = {
   3055		.enable_reg = 0x45004,
   3056		.enable_mask = BIT(8),
   3057		.hw.init = &(struct clk_init_data){
   3058			.name = "gcc_prng_ahb_clk",
   3059			.parent_data = &(const struct clk_parent_data){
   3060				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3061			},
   3062			.num_parents = 1,
   3063			.ops = &clk_branch2_ops,
   3064		},
   3065	},
   3066};
   3067
   3068static struct clk_branch gcc_sdcc1_ahb_clk = {
   3069	.halt_reg = 0x4201c,
   3070	.clkr = {
   3071		.enable_reg = 0x4201c,
   3072		.enable_mask = BIT(0),
   3073		.hw.init = &(struct clk_init_data){
   3074			.name = "gcc_sdcc1_ahb_clk",
   3075			.parent_data = &(const struct clk_parent_data){
   3076				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3077			},
   3078			.num_parents = 1,
   3079			.flags = CLK_SET_RATE_PARENT,
   3080			.ops = &clk_branch2_ops,
   3081		},
   3082	},
   3083};
   3084
   3085static struct clk_branch gcc_sdcc1_apps_clk = {
   3086	.halt_reg = 0x42018,
   3087	.clkr = {
   3088		.enable_reg = 0x42018,
   3089		.enable_mask = BIT(0),
   3090		.hw.init = &(struct clk_init_data){
   3091			.name = "gcc_sdcc1_apps_clk",
   3092			.parent_data = &(const struct clk_parent_data){
   3093				.hw = &sdcc1_apps_clk_src.clkr.hw,
   3094			},
   3095			.num_parents = 1,
   3096			.flags = CLK_SET_RATE_PARENT,
   3097			.ops = &clk_branch2_ops,
   3098		},
   3099	},
   3100};
   3101
   3102static struct clk_branch gcc_sdcc2_ahb_clk = {
   3103	.halt_reg = 0x4301c,
   3104	.clkr = {
   3105		.enable_reg = 0x4301c,
   3106		.enable_mask = BIT(0),
   3107		.hw.init = &(struct clk_init_data){
   3108			.name = "gcc_sdcc2_ahb_clk",
   3109			.parent_data = &(const struct clk_parent_data){
   3110				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3111			},
   3112			.num_parents = 1,
   3113			.flags = CLK_SET_RATE_PARENT,
   3114			.ops = &clk_branch2_ops,
   3115		},
   3116	},
   3117};
   3118
   3119static struct clk_branch gcc_sdcc2_apps_clk = {
   3120	.halt_reg = 0x43018,
   3121	.clkr = {
   3122		.enable_reg = 0x43018,
   3123		.enable_mask = BIT(0),
   3124		.hw.init = &(struct clk_init_data){
   3125			.name = "gcc_sdcc2_apps_clk",
   3126			.parent_data = &(const struct clk_parent_data){
   3127				.hw = &sdcc2_apps_clk_src.clkr.hw,
   3128			},
   3129			.num_parents = 1,
   3130			.flags = CLK_SET_RATE_PARENT,
   3131			.ops = &clk_branch2_ops,
   3132		},
   3133	},
   3134};
   3135
   3136static struct clk_branch gcc_apss_tcu_clk = {
   3137	.halt_reg = 0x12018,
   3138	.halt_check = BRANCH_HALT_VOTED,
   3139	.clkr = {
   3140		.enable_reg = 0x4500c,
   3141		.enable_mask = BIT(1),
   3142		.hw.init = &(struct clk_init_data){
   3143			.name = "gcc_apss_tcu_clk",
   3144			.parent_data = &(const struct clk_parent_data){
   3145				.hw = &bimc_ddr_clk_src.clkr.hw,
   3146			},
   3147			.num_parents = 1,
   3148			.ops = &clk_branch2_ops,
   3149		},
   3150	},
   3151};
   3152
   3153static struct clk_branch gcc_gfx_tcu_clk = {
   3154	.halt_reg = 0x12020,
   3155	.halt_check = BRANCH_HALT_VOTED,
   3156	.clkr = {
   3157		.enable_reg = 0x4500c,
   3158		.enable_mask = BIT(2),
   3159		.hw.init = &(struct clk_init_data){
   3160			.name = "gcc_gfx_tcu_clk",
   3161			.parent_data = &(const struct clk_parent_data){
   3162				.hw = &bimc_ddr_clk_src.clkr.hw,
   3163			},
   3164			.num_parents = 1,
   3165			.ops = &clk_branch2_ops,
   3166		},
   3167	},
   3168};
   3169
   3170static struct clk_branch gcc_gfx_tbu_clk = {
   3171	.halt_reg = 0x12010,
   3172	.halt_check = BRANCH_HALT_VOTED,
   3173	.clkr = {
   3174		.enable_reg = 0x4500c,
   3175		.enable_mask = BIT(3),
   3176		.hw.init = &(struct clk_init_data){
   3177			.name = "gcc_gfx_tbu_clk",
   3178			.parent_data = &(const struct clk_parent_data){
   3179				.hw = &bimc_ddr_clk_src.clkr.hw,
   3180			},
   3181			.num_parents = 1,
   3182			.ops = &clk_branch2_ops,
   3183		},
   3184	},
   3185};
   3186
   3187static struct clk_branch gcc_mdp_tbu_clk = {
   3188	.halt_reg = 0x1201c,
   3189	.halt_check = BRANCH_HALT_VOTED,
   3190	.clkr = {
   3191		.enable_reg = 0x4500c,
   3192		.enable_mask = BIT(4),
   3193		.hw.init = &(struct clk_init_data){
   3194			.name = "gcc_mdp_tbu_clk",
   3195			.parent_data = &(const struct clk_parent_data){
   3196				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   3197			},
   3198			.num_parents = 1,
   3199			.flags = CLK_SET_RATE_PARENT,
   3200			.ops = &clk_branch2_ops,
   3201		},
   3202	},
   3203};
   3204
   3205static struct clk_branch gcc_venus_tbu_clk = {
   3206	.halt_reg = 0x12014,
   3207	.halt_check = BRANCH_HALT_VOTED,
   3208	.clkr = {
   3209		.enable_reg = 0x4500c,
   3210		.enable_mask = BIT(5),
   3211		.hw.init = &(struct clk_init_data){
   3212			.name = "gcc_venus_tbu_clk",
   3213			.parent_data = &(const struct clk_parent_data){
   3214				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   3215			},
   3216			.num_parents = 1,
   3217			.flags = CLK_SET_RATE_PARENT,
   3218			.ops = &clk_branch2_ops,
   3219		},
   3220	},
   3221};
   3222
   3223static struct clk_branch gcc_vfe_tbu_clk = {
   3224	.halt_reg = 0x1203c,
   3225	.halt_check = BRANCH_HALT_VOTED,
   3226	.clkr = {
   3227		.enable_reg = 0x4500c,
   3228		.enable_mask = BIT(9),
   3229		.hw.init = &(struct clk_init_data){
   3230			.name = "gcc_vfe_tbu_clk",
   3231			.parent_data = &(const struct clk_parent_data){
   3232				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   3233			},
   3234			.num_parents = 1,
   3235			.flags = CLK_SET_RATE_PARENT,
   3236			.ops = &clk_branch2_ops,
   3237		},
   3238	},
   3239};
   3240
   3241static struct clk_branch gcc_jpeg_tbu_clk = {
   3242	.halt_reg = 0x12034,
   3243	.halt_check = BRANCH_HALT_VOTED,
   3244	.clkr = {
   3245		.enable_reg = 0x4500c,
   3246		.enable_mask = BIT(10),
   3247		.hw.init = &(struct clk_init_data){
   3248			.name = "gcc_jpeg_tbu_clk",
   3249			.parent_data = &(const struct clk_parent_data){
   3250				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   3251			},
   3252			.num_parents = 1,
   3253			.flags = CLK_SET_RATE_PARENT,
   3254			.ops = &clk_branch2_ops,
   3255		},
   3256	},
   3257};
   3258
   3259static struct clk_branch gcc_smmu_cfg_clk = {
   3260	.halt_reg = 0x12038,
   3261	.halt_check = BRANCH_HALT_VOTED,
   3262	.clkr = {
   3263		.enable_reg = 0x4500c,
   3264		.enable_mask = BIT(12),
   3265		.hw.init = &(struct clk_init_data){
   3266			.name = "gcc_smmu_cfg_clk",
   3267			.parent_data = &(const struct clk_parent_data){
   3268				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3269			},
   3270			.num_parents = 1,
   3271			.flags = CLK_SET_RATE_PARENT,
   3272			.ops = &clk_branch2_ops,
   3273		},
   3274	},
   3275};
   3276
   3277static struct clk_branch gcc_gtcu_ahb_clk = {
   3278	.halt_reg = 0x12044,
   3279	.halt_check = BRANCH_HALT_VOTED,
   3280	.clkr = {
   3281		.enable_reg = 0x4500c,
   3282		.enable_mask = BIT(13),
   3283		.hw.init = &(struct clk_init_data){
   3284			.name = "gcc_gtcu_ahb_clk",
   3285			.parent_data = &(const struct clk_parent_data){
   3286				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3287			},
   3288			.num_parents = 1,
   3289			.flags = CLK_SET_RATE_PARENT,
   3290			.ops = &clk_branch2_ops,
   3291		},
   3292	},
   3293};
   3294
   3295static struct clk_branch gcc_cpp_tbu_clk = {
   3296	.halt_reg = 0x12040,
   3297	.halt_check = BRANCH_HALT_VOTED,
   3298	.clkr = {
   3299		.enable_reg = 0x4500c,
   3300		.enable_mask = BIT(14),
   3301		.hw.init = &(struct clk_init_data){
   3302			.name = "gcc_cpp_tbu_clk",
   3303			.parent_data = &(const struct clk_parent_data){
   3304				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3305			},
   3306			.num_parents = 1,
   3307			.flags = CLK_SET_RATE_PARENT,
   3308			.ops = &clk_branch2_ops,
   3309		},
   3310	},
   3311};
   3312
   3313static struct clk_branch gcc_mdp_rt_tbu_clk = {
   3314	.halt_reg = 0x1201c,
   3315	.halt_check = BRANCH_HALT_VOTED,
   3316	.clkr = {
   3317		.enable_reg = 0x4500c,
   3318		.enable_mask = BIT(15),
   3319		.hw.init = &(struct clk_init_data){
   3320			.name = "gcc_mdp_rt_tbu_clk",
   3321			.parent_data = &(const struct clk_parent_data){
   3322				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3323			},
   3324			.num_parents = 1,
   3325			.flags = CLK_SET_RATE_PARENT,
   3326			.ops = &clk_branch2_ops,
   3327		},
   3328	},
   3329};
   3330
   3331static struct clk_branch gcc_bimc_gfx_clk = {
   3332	.halt_reg = 0x31024,
   3333	.clkr = {
   3334		.enable_reg = 0x31024,
   3335		.enable_mask = BIT(0),
   3336		.hw.init = &(struct clk_init_data){
   3337			.name = "gcc_bimc_gfx_clk",
   3338			.parent_data = &(const struct clk_parent_data){
   3339				.hw = &bimc_gpu_clk_src.clkr.hw,
   3340			},
   3341			.num_parents = 1,
   3342			.flags = CLK_SET_RATE_PARENT,
   3343			.ops = &clk_branch2_ops,
   3344		},
   3345	},
   3346};
   3347
   3348static struct clk_branch gcc_bimc_gpu_clk = {
   3349	.halt_reg = 0x31040,
   3350	.clkr = {
   3351		.enable_reg = 0x31040,
   3352		.enable_mask = BIT(0),
   3353		.hw.init = &(struct clk_init_data){
   3354			.name = "gcc_bimc_gpu_clk",
   3355			.parent_data = &(const struct clk_parent_data){
   3356				.hw = &bimc_gpu_clk_src.clkr.hw,
   3357			},
   3358			.num_parents = 1,
   3359			.flags = CLK_SET_RATE_PARENT,
   3360			.ops = &clk_branch2_ops,
   3361		},
   3362	},
   3363};
   3364
   3365static struct clk_branch gcc_usb2a_phy_sleep_clk = {
   3366	.halt_reg = 0x4102c,
   3367	.clkr = {
   3368		.enable_reg = 0x4102c,
   3369		.enable_mask = BIT(0),
   3370		.hw.init = &(struct clk_init_data){
   3371			.name = "gcc_usb2a_phy_sleep_clk",
   3372			.ops = &clk_branch2_ops,
   3373		},
   3374	},
   3375};
   3376
   3377static struct clk_branch gcc_usb_fs_ahb_clk = {
   3378	.halt_reg = 0x3f008,
   3379	.clkr = {
   3380		.enable_reg = 0x3f008,
   3381		.enable_mask = BIT(0),
   3382		.hw.init = &(struct clk_init_data){
   3383			.name = "gcc_usb_fs_ahb_clk",
   3384			.parent_data = &(const struct clk_parent_data){
   3385				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3386			},
   3387			.num_parents = 1,
   3388			.flags = CLK_SET_RATE_PARENT,
   3389			.ops = &clk_branch2_ops,
   3390		},
   3391	},
   3392};
   3393
   3394static struct clk_branch gcc_usb_fs_ic_clk = {
   3395	.halt_reg = 0x3f030,
   3396	.clkr = {
   3397		.enable_reg = 0x3f030,
   3398		.enable_mask = BIT(0),
   3399		.hw.init = &(struct clk_init_data){
   3400			.name = "gcc_usb_fs_ic_clk",
   3401			.parent_data = &(const struct clk_parent_data){
   3402				.hw = &usb_fs_ic_clk_src.clkr.hw,
   3403			},
   3404			.num_parents = 1,
   3405			.flags = CLK_SET_RATE_PARENT,
   3406			.ops = &clk_branch2_ops,
   3407		},
   3408	},
   3409};
   3410
   3411static struct clk_branch gcc_usb_fs_system_clk = {
   3412	.halt_reg = 0x3f004,
   3413	.clkr = {
   3414		.enable_reg = 0x3f004,
   3415		.enable_mask = BIT(0),
   3416		.hw.init = &(struct clk_init_data){
   3417			.name = "gcc_usb_fs_system_clk",
   3418			.parent_data = &(const struct clk_parent_data){
   3419				.hw = &usb_fs_system_clk_src.clkr.hw,
   3420			},
   3421			.num_parents = 1,
   3422			.flags = CLK_SET_RATE_PARENT,
   3423			.ops = &clk_branch2_ops,
   3424		},
   3425	},
   3426};
   3427
   3428static struct clk_branch gcc_usb_hs_ahb_clk = {
   3429	.halt_reg = 0x41008,
   3430	.clkr = {
   3431		.enable_reg = 0x41008,
   3432		.enable_mask = BIT(0),
   3433		.hw.init = &(struct clk_init_data){
   3434			.name = "gcc_usb_hs_ahb_clk",
   3435			.parent_data = &(const struct clk_parent_data){
   3436				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3437			},
   3438			.num_parents = 1,
   3439			.flags = CLK_SET_RATE_PARENT,
   3440			.ops = &clk_branch2_ops,
   3441		},
   3442	},
   3443};
   3444
   3445static struct clk_branch gcc_usb_hs_system_clk = {
   3446	.halt_reg = 0x41004,
   3447	.clkr = {
   3448		.enable_reg = 0x41004,
   3449		.enable_mask = BIT(0),
   3450		.hw.init = &(struct clk_init_data){
   3451			.name = "gcc_usb_hs_system_clk",
   3452			.parent_data = &(const struct clk_parent_data){
   3453				.hw = &usb_hs_system_clk_src.clkr.hw,
   3454			},
   3455			.num_parents = 1,
   3456			.flags = CLK_SET_RATE_PARENT,
   3457			.ops = &clk_branch2_ops,
   3458		},
   3459	},
   3460};
   3461
   3462static struct clk_branch gcc_venus0_ahb_clk = {
   3463	.halt_reg = 0x4c020,
   3464	.clkr = {
   3465		.enable_reg = 0x4c020,
   3466		.enable_mask = BIT(0),
   3467		.hw.init = &(struct clk_init_data){
   3468			.name = "gcc_venus0_ahb_clk",
   3469			.parent_data = &(const struct clk_parent_data){
   3470				.hw = &pcnoc_bfdcd_clk_src.clkr.hw,
   3471			},
   3472			.num_parents = 1,
   3473			.flags = CLK_SET_RATE_PARENT,
   3474			.ops = &clk_branch2_ops,
   3475		},
   3476	},
   3477};
   3478
   3479static struct clk_branch gcc_venus0_axi_clk = {
   3480	.halt_reg = 0x4c024,
   3481	.clkr = {
   3482		.enable_reg = 0x4c024,
   3483		.enable_mask = BIT(0),
   3484		.hw.init = &(struct clk_init_data){
   3485			.name = "gcc_venus0_axi_clk",
   3486			.parent_data = &(const struct clk_parent_data){
   3487				.hw = &system_noc_bfdcd_clk_src.clkr.hw,
   3488			},
   3489			.num_parents = 1,
   3490			.flags = CLK_SET_RATE_PARENT,
   3491			.ops = &clk_branch2_ops,
   3492		},
   3493	},
   3494};
   3495
   3496static struct clk_branch gcc_venus0_vcodec0_clk = {
   3497	.halt_reg = 0x4c01c,
   3498	.clkr = {
   3499		.enable_reg = 0x4c01c,
   3500		.enable_mask = BIT(0),
   3501		.hw.init = &(struct clk_init_data){
   3502			.name = "gcc_venus0_vcodec0_clk",
   3503			.parent_data = &(const struct clk_parent_data){
   3504				.hw = &vcodec0_clk_src.clkr.hw,
   3505			},
   3506			.num_parents = 1,
   3507			.flags = CLK_SET_RATE_PARENT,
   3508			.ops = &clk_branch2_ops,
   3509		},
   3510	},
   3511};
   3512
   3513static struct clk_branch gcc_venus0_core0_vcodec0_clk = {
   3514	.halt_reg = 0x4c02c,
   3515	.clkr = {
   3516		.enable_reg = 0x4c02c,
   3517		.enable_mask = BIT(0),
   3518		.hw.init = &(struct clk_init_data){
   3519			.name = "gcc_venus0_core0_vcodec0_clk",
   3520			.parent_data = &(const struct clk_parent_data){
   3521				.hw = &vcodec0_clk_src.clkr.hw,
   3522			},
   3523			.num_parents = 1,
   3524			.flags = CLK_SET_RATE_PARENT,
   3525			.ops = &clk_branch2_ops,
   3526		},
   3527	},
   3528};
   3529
   3530static struct clk_branch gcc_venus0_core1_vcodec0_clk = {
   3531	.halt_reg = 0x4c034,
   3532	.clkr = {
   3533		.enable_reg = 0x4c034,
   3534		.enable_mask = BIT(0),
   3535		.hw.init = &(struct clk_init_data){
   3536			.name = "gcc_venus0_core1_vcodec0_clk",
   3537			.parent_data = &(const struct clk_parent_data){
   3538				.hw = &vcodec0_clk_src.clkr.hw,
   3539			},
   3540			.num_parents = 1,
   3541			.flags = CLK_SET_RATE_PARENT,
   3542			.ops = &clk_branch2_ops,
   3543		},
   3544	},
   3545};
   3546
   3547static struct clk_branch gcc_oxili_timer_clk = {
   3548	.halt_reg = 0x59040,
   3549	.clkr = {
   3550		.enable_reg = 0x59040,
   3551		.enable_mask = BIT(0),
   3552		.hw.init = &(struct clk_init_data){
   3553			.name = "gcc_oxili_timer_clk",
   3554			.ops = &clk_branch2_ops,
   3555		},
   3556	},
   3557};
   3558
   3559static struct gdsc venus_gdsc = {
   3560	.gdscr = 0x4c018,
   3561	.pd = {
   3562		.name = "venus",
   3563	},
   3564	.pwrsts = PWRSTS_OFF_ON,
   3565};
   3566
   3567static struct gdsc mdss_gdsc = {
   3568	.gdscr = 0x4d078,
   3569	.pd = {
   3570		.name = "mdss",
   3571	},
   3572	.pwrsts = PWRSTS_OFF_ON,
   3573};
   3574
   3575static struct gdsc jpeg_gdsc = {
   3576	.gdscr = 0x5701c,
   3577	.pd = {
   3578		.name = "jpeg",
   3579	},
   3580	.pwrsts = PWRSTS_OFF_ON,
   3581};
   3582
   3583static struct gdsc vfe_gdsc = {
   3584	.gdscr = 0x58034,
   3585	.pd = {
   3586		.name = "vfe",
   3587	},
   3588	.pwrsts = PWRSTS_OFF_ON,
   3589};
   3590
   3591static struct gdsc oxili_gdsc = {
   3592	.gdscr = 0x5901c,
   3593	.pd = {
   3594		.name = "oxili",
   3595	},
   3596	.pwrsts = PWRSTS_OFF_ON,
   3597};
   3598
   3599static struct gdsc venus_core0_gdsc = {
   3600	.gdscr = 0x4c028,
   3601	.pd = {
   3602		.name = "venus_core0",
   3603	},
   3604	.pwrsts = PWRSTS_OFF_ON,
   3605};
   3606
   3607static struct gdsc venus_core1_gdsc = {
   3608	.gdscr = 0x4c030,
   3609	.pd = {
   3610		.name = "venus_core1",
   3611	},
   3612	.pwrsts = PWRSTS_OFF_ON,
   3613};
   3614
   3615static struct clk_regmap *gcc_msm8939_clocks[] = {
   3616	[GPLL0] = &gpll0.clkr,
   3617	[GPLL0_VOTE] = &gpll0_vote,
   3618	[BIMC_PLL] = &bimc_pll.clkr,
   3619	[BIMC_PLL_VOTE] = &bimc_pll_vote,
   3620	[GPLL1] = &gpll1.clkr,
   3621	[GPLL1_VOTE] = &gpll1_vote,
   3622	[GPLL2] = &gpll2.clkr,
   3623	[GPLL2_VOTE] = &gpll2_vote,
   3624	[PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
   3625	[SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
   3626	[CAMSS_AHB_CLK_SRC] = &camss_ahb_clk_src.clkr,
   3627	[APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
   3628	[CSI0_CLK_SRC] = &csi0_clk_src.clkr,
   3629	[CSI1_CLK_SRC] = &csi1_clk_src.clkr,
   3630	[GFX3D_CLK_SRC] = &gfx3d_clk_src.clkr,
   3631	[VFE0_CLK_SRC] = &vfe0_clk_src.clkr,
   3632	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
   3633	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
   3634	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
   3635	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
   3636	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
   3637	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
   3638	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
   3639	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
   3640	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
   3641	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
   3642	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
   3643	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
   3644	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
   3645	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
   3646	[CCI_CLK_SRC] = &cci_clk_src.clkr,
   3647	[CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr,
   3648	[CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr,
   3649	[JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr,
   3650	[MCLK0_CLK_SRC] = &mclk0_clk_src.clkr,
   3651	[MCLK1_CLK_SRC] = &mclk1_clk_src.clkr,
   3652	[CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr,
   3653	[CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr,
   3654	[CPP_CLK_SRC] = &cpp_clk_src.clkr,
   3655	[CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
   3656	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
   3657	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
   3658	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
   3659	[BYTE0_CLK_SRC] = &byte0_clk_src.clkr,
   3660	[ESC0_CLK_SRC] = &esc0_clk_src.clkr,
   3661	[MDP_CLK_SRC] = &mdp_clk_src.clkr,
   3662	[PCLK0_CLK_SRC] = &pclk0_clk_src.clkr,
   3663	[VSYNC_CLK_SRC] = &vsync_clk_src.clkr,
   3664	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
   3665	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
   3666	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
   3667	[APSS_TCU_CLK_SRC] = &apss_tcu_clk_src.clkr,
   3668	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
   3669	[VCODEC0_CLK_SRC] = &vcodec0_clk_src.clkr,
   3670	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
   3671	[GCC_BLSP1_SLEEP_CLK] = &gcc_blsp1_sleep_clk.clkr,
   3672	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
   3673	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
   3674	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
   3675	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
   3676	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
   3677	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
   3678	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
   3679	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
   3680	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
   3681	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
   3682	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
   3683	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
   3684	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
   3685	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
   3686	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
   3687	[GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr,
   3688	[GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr,
   3689	[GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr,
   3690	[GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr,
   3691	[GCC_CAMSS_CSI0PHY_CLK] = &gcc_camss_csi0phy_clk.clkr,
   3692	[GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr,
   3693	[GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr,
   3694	[GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr,
   3695	[GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr,
   3696	[GCC_CAMSS_CSI1PHY_CLK] = &gcc_camss_csi1phy_clk.clkr,
   3697	[GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr,
   3698	[GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr,
   3699	[GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr,
   3700	[GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr,
   3701	[GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr,
   3702	[GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr,
   3703	[GCC_CAMSS_JPEG0_CLK] = &gcc_camss_jpeg0_clk.clkr,
   3704	[GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr,
   3705	[GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr,
   3706	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
   3707	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
   3708	[GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr,
   3709	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
   3710	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
   3711	[GCC_CAMSS_AHB_CLK] = &gcc_camss_ahb_clk.clkr,
   3712	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
   3713	[GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr,
   3714	[GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr,
   3715	[GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr,
   3716	[GCC_CAMSS_VFE_AHB_CLK] = &gcc_camss_vfe_ahb_clk.clkr,
   3717	[GCC_CAMSS_VFE_AXI_CLK] = &gcc_camss_vfe_axi_clk.clkr,
   3718	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
   3719	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
   3720	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
   3721	[GCC_OXILI_GMEM_CLK] = &gcc_oxili_gmem_clk.clkr,
   3722	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
   3723	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
   3724	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
   3725	[GCC_MDSS_AHB_CLK] = &gcc_mdss_ahb_clk.clkr,
   3726	[GCC_MDSS_AXI_CLK] = &gcc_mdss_axi_clk.clkr,
   3727	[GCC_MDSS_BYTE0_CLK] = &gcc_mdss_byte0_clk.clkr,
   3728	[GCC_MDSS_ESC0_CLK] = &gcc_mdss_esc0_clk.clkr,
   3729	[GCC_MDSS_MDP_CLK] = &gcc_mdss_mdp_clk.clkr,
   3730	[GCC_MDSS_PCLK0_CLK] = &gcc_mdss_pclk0_clk.clkr,
   3731	[GCC_MDSS_VSYNC_CLK] = &gcc_mdss_vsync_clk.clkr,
   3732	[GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
   3733	[GCC_OXILI_AHB_CLK] = &gcc_oxili_ahb_clk.clkr,
   3734	[GCC_OXILI_GFX3D_CLK] = &gcc_oxili_gfx3d_clk.clkr,
   3735	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
   3736	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
   3737	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
   3738	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
   3739	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
   3740	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
   3741	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
   3742	[GCC_GTCU_AHB_CLK] = &gcc_gtcu_ahb_clk.clkr,
   3743	[GCC_JPEG_TBU_CLK] = &gcc_jpeg_tbu_clk.clkr,
   3744	[GCC_MDP_TBU_CLK] = &gcc_mdp_tbu_clk.clkr,
   3745	[GCC_SMMU_CFG_CLK] = &gcc_smmu_cfg_clk.clkr,
   3746	[GCC_VENUS_TBU_CLK] = &gcc_venus_tbu_clk.clkr,
   3747	[GCC_VFE_TBU_CLK] = &gcc_vfe_tbu_clk.clkr,
   3748	[GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr,
   3749	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
   3750	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
   3751	[GCC_VENUS0_AHB_CLK] = &gcc_venus0_ahb_clk.clkr,
   3752	[GCC_VENUS0_AXI_CLK] = &gcc_venus0_axi_clk.clkr,
   3753	[GCC_VENUS0_VCODEC0_CLK] = &gcc_venus0_vcodec0_clk.clkr,
   3754	[BIMC_DDR_CLK_SRC] = &bimc_ddr_clk_src.clkr,
   3755	[GCC_APSS_TCU_CLK] = &gcc_apss_tcu_clk.clkr,
   3756	[GCC_GFX_TCU_CLK] = &gcc_gfx_tcu_clk.clkr,
   3757	[BIMC_GPU_CLK_SRC] = &bimc_gpu_clk_src.clkr,
   3758	[GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr,
   3759	[GCC_BIMC_GPU_CLK] = &gcc_bimc_gpu_clk.clkr,
   3760	[ULTAUDIO_AHBFABRIC_CLK_SRC] = &ultaudio_ahbfabric_clk_src.clkr,
   3761	[ULTAUDIO_LPAIF_PRI_I2S_CLK_SRC] = &ultaudio_lpaif_pri_i2s_clk_src.clkr,
   3762	[ULTAUDIO_LPAIF_SEC_I2S_CLK_SRC] = &ultaudio_lpaif_sec_i2s_clk_src.clkr,
   3763	[ULTAUDIO_LPAIF_AUX_I2S_CLK_SRC] = &ultaudio_lpaif_aux_i2s_clk_src.clkr,
   3764	[ULTAUDIO_XO_CLK_SRC] = &ultaudio_xo_clk_src.clkr,
   3765	[CODEC_DIGCODEC_CLK_SRC] = &codec_digcodec_clk_src.clkr,
   3766	[GCC_ULTAUDIO_PCNOC_MPORT_CLK] = &gcc_ultaudio_pcnoc_mport_clk.clkr,
   3767	[GCC_ULTAUDIO_PCNOC_SWAY_CLK] = &gcc_ultaudio_pcnoc_sway_clk.clkr,
   3768	[GCC_ULTAUDIO_AVSYNC_XO_CLK] = &gcc_ultaudio_avsync_xo_clk.clkr,
   3769	[GCC_ULTAUDIO_STC_XO_CLK] = &gcc_ultaudio_stc_xo_clk.clkr,
   3770	[GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK] = &gcc_ultaudio_ahbfabric_ixfabric_clk.clkr,
   3771	[GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_LPM_CLK] = &gcc_ultaudio_ahbfabric_ixfabric_lpm_clk.clkr,
   3772	[GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK] = &gcc_ultaudio_lpaif_pri_i2s_clk.clkr,
   3773	[GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK] = &gcc_ultaudio_lpaif_sec_i2s_clk.clkr,
   3774	[GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK] = &gcc_ultaudio_lpaif_aux_i2s_clk.clkr,
   3775	[GCC_CODEC_DIGCODEC_CLK] = &gcc_codec_digcodec_clk.clkr,
   3776	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
   3777	[GPLL3] = &gpll3.clkr,
   3778	[GPLL3_VOTE] = &gpll3_vote,
   3779	[GPLL4] = &gpll4.clkr,
   3780	[GPLL4_VOTE] = &gpll4_vote,
   3781	[GPLL5] = &gpll5.clkr,
   3782	[GPLL5_VOTE] = &gpll5_vote,
   3783	[GPLL6] = &gpll6.clkr,
   3784	[GPLL6_VOTE] = &gpll6_vote,
   3785	[BYTE1_CLK_SRC] = &byte1_clk_src.clkr,
   3786	[GCC_MDSS_BYTE1_CLK] = &gcc_mdss_byte1_clk.clkr,
   3787	[ESC1_CLK_SRC] = &esc1_clk_src.clkr,
   3788	[GCC_MDSS_ESC1_CLK] = &gcc_mdss_esc1_clk.clkr,
   3789	[PCLK1_CLK_SRC] = &pclk1_clk_src.clkr,
   3790	[GCC_MDSS_PCLK1_CLK] = &gcc_mdss_pclk1_clk.clkr,
   3791	[GCC_GFX_TBU_CLK] = &gcc_gfx_tbu_clk.clkr,
   3792	[GCC_CPP_TBU_CLK] = &gcc_cpp_tbu_clk.clkr,
   3793	[GCC_MDP_RT_TBU_CLK] = &gcc_mdp_rt_tbu_clk.clkr,
   3794	[USB_FS_SYSTEM_CLK_SRC] = &usb_fs_system_clk_src.clkr,
   3795	[USB_FS_IC_CLK_SRC] = &usb_fs_ic_clk_src.clkr,
   3796	[GCC_USB_FS_AHB_CLK] = &gcc_usb_fs_ahb_clk.clkr,
   3797	[GCC_USB_FS_IC_CLK] = &gcc_usb_fs_ic_clk.clkr,
   3798	[GCC_USB_FS_SYSTEM_CLK] = &gcc_usb_fs_system_clk.clkr,
   3799	[GCC_VENUS0_CORE0_VCODEC0_CLK] = &gcc_venus0_core0_vcodec0_clk.clkr,
   3800	[GCC_VENUS0_CORE1_VCODEC0_CLK] = &gcc_venus0_core1_vcodec0_clk.clkr,
   3801	[GCC_OXILI_TIMER_CLK] = &gcc_oxili_timer_clk.clkr,
   3802};
   3803
   3804static struct gdsc *gcc_msm8939_gdscs[] = {
   3805	[VENUS_GDSC] = &venus_gdsc,
   3806	[MDSS_GDSC] = &mdss_gdsc,
   3807	[JPEG_GDSC] = &jpeg_gdsc,
   3808	[VFE_GDSC] = &vfe_gdsc,
   3809	[OXILI_GDSC] = &oxili_gdsc,
   3810	[VENUS_CORE0_GDSC] = &venus_core0_gdsc,
   3811	[VENUS_CORE1_GDSC] = &venus_core1_gdsc,
   3812};
   3813
   3814static const struct qcom_reset_map gcc_msm8939_resets[] = {
   3815	[GCC_BLSP1_BCR] = { 0x01000 },
   3816	[GCC_BLSP1_QUP1_BCR] = { 0x02000 },
   3817	[GCC_BLSP1_UART1_BCR] = { 0x02038 },
   3818	[GCC_BLSP1_QUP2_BCR] = { 0x03008 },
   3819	[GCC_BLSP1_UART2_BCR] = { 0x03028 },
   3820	[GCC_BLSP1_QUP3_BCR] = { 0x04018 },
   3821	[GCC_BLSP1_UART3_BCR] = { 0x04038 },
   3822	[GCC_BLSP1_QUP4_BCR] = { 0x05018 },
   3823	[GCC_BLSP1_QUP5_BCR] = { 0x06018 },
   3824	[GCC_BLSP1_QUP6_BCR] = { 0x07018 },
   3825	[GCC_IMEM_BCR] = { 0x0e000 },
   3826	[GCC_SMMU_BCR] = { 0x12000 },
   3827	[GCC_APSS_TCU_BCR] = { 0x12050 },
   3828	[GCC_SMMU_XPU_BCR] = { 0x12054 },
   3829	[GCC_PCNOC_TBU_BCR] = { 0x12058 },
   3830	[GCC_PRNG_BCR] = { 0x13000 },
   3831	[GCC_BOOT_ROM_BCR] = { 0x13008 },
   3832	[GCC_CRYPTO_BCR] = { 0x16000 },
   3833	[GCC_SEC_CTRL_BCR] = { 0x1a000 },
   3834	[GCC_AUDIO_CORE_BCR] = { 0x1c008 },
   3835	[GCC_ULT_AUDIO_BCR] = { 0x1c0b4 },
   3836	[GCC_DEHR_BCR] = { 0x1f000 },
   3837	[GCC_SYSTEM_NOC_BCR] = { 0x26000 },
   3838	[GCC_PCNOC_BCR] = { 0x27018 },
   3839	[GCC_TCSR_BCR] = { 0x28000 },
   3840	[GCC_QDSS_BCR] = { 0x29000 },
   3841	[GCC_DCD_BCR] = { 0x2a000 },
   3842	[GCC_MSG_RAM_BCR] = { 0x2b000 },
   3843	[GCC_MPM_BCR] = { 0x2c000 },
   3844	[GCC_SPMI_BCR] = { 0x2e000 },
   3845	[GCC_SPDM_BCR] = { 0x2f000 },
   3846	[GCC_MM_SPDM_BCR] = { 0x2f024 },
   3847	[GCC_BIMC_BCR] = { 0x31000 },
   3848	[GCC_RBCPR_BCR] = { 0x33000 },
   3849	[GCC_TLMM_BCR] = { 0x34000 },
   3850	[GCC_CAMSS_CSI2_BCR] = { 0x3c038 },
   3851	[GCC_CAMSS_CSI2PHY_BCR] = { 0x3c044 },
   3852	[GCC_CAMSS_CSI2RDI_BCR] = { 0x3c04c },
   3853	[GCC_CAMSS_CSI2PIX_BCR] = { 0x3c054 },
   3854	[GCC_USB_FS_BCR] = { 0x3f000 },
   3855	[GCC_USB_HS_BCR] = { 0x41000 },
   3856	[GCC_USB2A_PHY_BCR] = { 0x41028 },
   3857	[GCC_SDCC1_BCR] = { 0x42000 },
   3858	[GCC_SDCC2_BCR] = { 0x43000 },
   3859	[GCC_PDM_BCR] = { 0x44000 },
   3860	[GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000 },
   3861	[GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000 },
   3862	[GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008 },
   3863	[GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010 },
   3864	[GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018 },
   3865	[GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020 },
   3866	[GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028 },
   3867	[GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030 },
   3868	[GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038 },
   3869	[GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040 },
   3870	[GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048 },
   3871	[GCC_MMSS_BCR] = { 0x4b000 },
   3872	[GCC_VENUS0_BCR] = { 0x4c014 },
   3873	[GCC_MDSS_BCR] = { 0x4d074 },
   3874	[GCC_CAMSS_PHY0_BCR] = { 0x4e018 },
   3875	[GCC_CAMSS_CSI0_BCR] = { 0x4e038 },
   3876	[GCC_CAMSS_CSI0PHY_BCR] = { 0x4e044 },
   3877	[GCC_CAMSS_CSI0RDI_BCR] = { 0x4e04c },
   3878	[GCC_CAMSS_CSI0PIX_BCR] = { 0x4e054 },
   3879	[GCC_CAMSS_PHY1_BCR] = { 0x4f018 },
   3880	[GCC_CAMSS_CSI1_BCR] = { 0x4f038 },
   3881	[GCC_CAMSS_CSI1PHY_BCR] = { 0x4f044 },
   3882	[GCC_CAMSS_CSI1RDI_BCR] = { 0x4f04c },
   3883	[GCC_CAMSS_CSI1PIX_BCR] = { 0x4f054 },
   3884	[GCC_CAMSS_ISPIF_BCR] = { 0x50000 },
   3885	[GCC_BLSP1_QUP4_SPI_APPS_CBCR] = { 0x0501c },
   3886	[GCC_CAMSS_CCI_BCR] = { 0x51014 },
   3887	[GCC_CAMSS_MCLK0_BCR] = { 0x52014 },
   3888	[GCC_CAMSS_MCLK1_BCR] = { 0x53014 },
   3889	[GCC_CAMSS_GP0_BCR] = { 0x54014 },
   3890	[GCC_CAMSS_GP1_BCR] = { 0x55014 },
   3891	[GCC_CAMSS_TOP_BCR] = { 0x56000 },
   3892	[GCC_CAMSS_MICRO_BCR] = { 0x56008 },
   3893	[GCC_CAMSS_JPEG_BCR] = { 0x57018 },
   3894	[GCC_CAMSS_VFE_BCR] = { 0x58030 },
   3895	[GCC_CAMSS_CSI_VFE0_BCR] = { 0x5804c },
   3896	[GCC_OXILI_BCR] = { 0x59018 },
   3897	[GCC_GMEM_BCR] = { 0x5902c },
   3898	[GCC_CAMSS_AHB_BCR] = { 0x5a018 },
   3899	[GCC_CAMSS_MCLK2_BCR] = { 0x5c014 },
   3900	[GCC_MDP_TBU_BCR] = { 0x62000 },
   3901	[GCC_GFX_TBU_BCR] = { 0x63000 },
   3902	[GCC_GFX_TCU_BCR] = { 0x64000 },
   3903	[GCC_MSS_TBU_AXI_BCR] = { 0x65000 },
   3904	[GCC_MSS_TBU_GSS_AXI_BCR] = { 0x66000 },
   3905	[GCC_MSS_TBU_Q6_AXI_BCR] = { 0x67000 },
   3906	[GCC_GTCU_AHB_BCR] = { 0x68000 },
   3907	[GCC_SMMU_CFG_BCR] = { 0x69000 },
   3908	[GCC_VFE_TBU_BCR] = { 0x6a000 },
   3909	[GCC_VENUS_TBU_BCR] = { 0x6b000 },
   3910	[GCC_JPEG_TBU_BCR] = { 0x6c000 },
   3911	[GCC_PRONTO_TBU_BCR] = { 0x6d000 },
   3912	[GCC_CPP_TBU_BCR] = { 0x6e000 },
   3913	[GCC_MDP_RT_TBU_BCR] = { 0x6f000 },
   3914	[GCC_SMMU_CATS_BCR] = { 0x7c000 },
   3915};
   3916
   3917static const struct regmap_config gcc_msm8939_regmap_config = {
   3918	.reg_bits	= 32,
   3919	.reg_stride	= 4,
   3920	.val_bits	= 32,
   3921	.max_register	= 0x80000,
   3922	.fast_io	= true,
   3923};
   3924
   3925static const struct qcom_cc_desc gcc_msm8939_desc = {
   3926	.config = &gcc_msm8939_regmap_config,
   3927	.clks = gcc_msm8939_clocks,
   3928	.num_clks = ARRAY_SIZE(gcc_msm8939_clocks),
   3929	.resets = gcc_msm8939_resets,
   3930	.num_resets = ARRAY_SIZE(gcc_msm8939_resets),
   3931	.gdscs = gcc_msm8939_gdscs,
   3932	.num_gdscs = ARRAY_SIZE(gcc_msm8939_gdscs),
   3933};
   3934
   3935static const struct of_device_id gcc_msm8939_match_table[] = {
   3936	{ .compatible = "qcom,gcc-msm8939" },
   3937	{ }
   3938};
   3939MODULE_DEVICE_TABLE(of, gcc_msm8939_match_table);
   3940
   3941static int gcc_msm8939_probe(struct platform_device *pdev)
   3942{
   3943	struct regmap *regmap;
   3944
   3945	regmap = qcom_cc_map(pdev, &gcc_msm8939_desc);
   3946	if (IS_ERR(regmap))
   3947		return PTR_ERR(regmap);
   3948
   3949	clk_pll_configure_sr_hpm_lp(&gpll3, regmap, &gpll3_config, true);
   3950	clk_pll_configure_sr_hpm_lp(&gpll4, regmap, &gpll4_config, true);
   3951
   3952	return qcom_cc_really_probe(pdev, &gcc_msm8939_desc, regmap);
   3953}
   3954
   3955static struct platform_driver gcc_msm8939_driver = {
   3956	.probe		= gcc_msm8939_probe,
   3957	.driver		= {
   3958		.name	= "gcc-msm8939",
   3959		.of_match_table = gcc_msm8939_match_table,
   3960	},
   3961};
   3962
   3963static int __init gcc_msm8939_init(void)
   3964{
   3965	return platform_driver_register(&gcc_msm8939_driver);
   3966}
   3967core_initcall(gcc_msm8939_init);
   3968
   3969static void __exit gcc_msm8939_exit(void)
   3970{
   3971	platform_driver_unregister(&gcc_msm8939_driver);
   3972}
   3973module_exit(gcc_msm8939_exit);
   3974
   3975MODULE_DESCRIPTION("Qualcomm GCC MSM8939 Driver");
   3976MODULE_LICENSE("GPL v2");