12a1d7eb8SDeepak Katragadda // SPDX-License-Identifier: GPL-2.0
22a1d7eb8SDeepak Katragadda // Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
32a1d7eb8SDeepak Katragadda
42a1d7eb8SDeepak Katragadda #include <linux/kernel.h>
52a1d7eb8SDeepak Katragadda #include <linux/bitops.h>
62a1d7eb8SDeepak Katragadda #include <linux/err.h>
72a1d7eb8SDeepak Katragadda #include <linux/platform_device.h>
82a1d7eb8SDeepak Katragadda #include <linux/module.h>
92a1d7eb8SDeepak Katragadda #include <linux/of.h>
102a1d7eb8SDeepak Katragadda #include <linux/clk-provider.h>
112a1d7eb8SDeepak Katragadda #include <linux/regmap.h>
122a1d7eb8SDeepak Katragadda #include <linux/reset-controller.h>
132a1d7eb8SDeepak Katragadda
142a1d7eb8SDeepak Katragadda #include <dt-bindings/clock/qcom,gcc-sm8150.h>
152a1d7eb8SDeepak Katragadda
162a1d7eb8SDeepak Katragadda #include "common.h"
172a1d7eb8SDeepak Katragadda #include "clk-alpha-pll.h"
182a1d7eb8SDeepak Katragadda #include "clk-branch.h"
192a1d7eb8SDeepak Katragadda #include "clk-pll.h"
202a1d7eb8SDeepak Katragadda #include "clk-rcg.h"
212a1d7eb8SDeepak Katragadda #include "clk-regmap.h"
222a1d7eb8SDeepak Katragadda #include "reset.h"
238411aa50SWesley Cheng #include "gdsc.h"
242a1d7eb8SDeepak Katragadda
252a1d7eb8SDeepak Katragadda enum {
262a1d7eb8SDeepak Katragadda P_BI_TCXO,
272a1d7eb8SDeepak Katragadda P_AUD_REF_CLK,
282a1d7eb8SDeepak Katragadda P_GPLL0_OUT_EVEN,
292a1d7eb8SDeepak Katragadda P_GPLL0_OUT_MAIN,
302a1d7eb8SDeepak Katragadda P_GPLL7_OUT_MAIN,
312a1d7eb8SDeepak Katragadda P_GPLL9_OUT_MAIN,
322a1d7eb8SDeepak Katragadda P_SLEEP_CLK,
332a1d7eb8SDeepak Katragadda };
342a1d7eb8SDeepak Katragadda
352a1d7eb8SDeepak Katragadda static struct clk_alpha_pll gpll0 = {
362a1d7eb8SDeepak Katragadda .offset = 0x0,
372a1d7eb8SDeepak Katragadda .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
382a1d7eb8SDeepak Katragadda .clkr = {
392a1d7eb8SDeepak Katragadda .enable_reg = 0x52000,
402a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
412a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
422a1d7eb8SDeepak Katragadda .name = "gpll0",
432a1d7eb8SDeepak Katragadda .parent_data = &(const struct clk_parent_data){
442a1d7eb8SDeepak Katragadda .fw_name = "bi_tcxo",
452a1d7eb8SDeepak Katragadda .name = "bi_tcxo",
462a1d7eb8SDeepak Katragadda },
472a1d7eb8SDeepak Katragadda .num_parents = 1,
480b014894SJonathan Marek .ops = &clk_alpha_pll_fixed_trion_ops,
492a1d7eb8SDeepak Katragadda },
502a1d7eb8SDeepak Katragadda },
512a1d7eb8SDeepak Katragadda };
522a1d7eb8SDeepak Katragadda
532a1d7eb8SDeepak Katragadda static const struct clk_div_table post_div_table_trion_even[] = {
542a1d7eb8SDeepak Katragadda { 0x0, 1 },
552a1d7eb8SDeepak Katragadda { 0x1, 2 },
562a1d7eb8SDeepak Katragadda { 0x3, 4 },
572a1d7eb8SDeepak Katragadda { 0x7, 8 },
582a1d7eb8SDeepak Katragadda { }
592a1d7eb8SDeepak Katragadda };
602a1d7eb8SDeepak Katragadda
612a1d7eb8SDeepak Katragadda static struct clk_alpha_pll_postdiv gpll0_out_even = {
622a1d7eb8SDeepak Katragadda .offset = 0x0,
632a1d7eb8SDeepak Katragadda .post_div_shift = 8,
642a1d7eb8SDeepak Katragadda .post_div_table = post_div_table_trion_even,
652a1d7eb8SDeepak Katragadda .num_post_div = ARRAY_SIZE(post_div_table_trion_even),
662a1d7eb8SDeepak Katragadda .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
672a1d7eb8SDeepak Katragadda .width = 4,
682a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
692a1d7eb8SDeepak Katragadda .name = "gpll0_out_even",
706326cc38SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]){
716326cc38SDmitry Baryshkov &gpll0.clkr.hw,
722a1d7eb8SDeepak Katragadda },
732a1d7eb8SDeepak Katragadda .num_parents = 1,
740b014894SJonathan Marek .ops = &clk_alpha_pll_postdiv_trion_ops,
752a1d7eb8SDeepak Katragadda },
762a1d7eb8SDeepak Katragadda };
772a1d7eb8SDeepak Katragadda
782a1d7eb8SDeepak Katragadda static struct clk_alpha_pll gpll7 = {
792a1d7eb8SDeepak Katragadda .offset = 0x1a000,
802a1d7eb8SDeepak Katragadda .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
812a1d7eb8SDeepak Katragadda .clkr = {
822a1d7eb8SDeepak Katragadda .enable_reg = 0x52000,
832a1d7eb8SDeepak Katragadda .enable_mask = BIT(7),
842a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
852a1d7eb8SDeepak Katragadda .name = "gpll7",
862a1d7eb8SDeepak Katragadda .parent_data = &(const struct clk_parent_data){
872a1d7eb8SDeepak Katragadda .fw_name = "bi_tcxo",
882a1d7eb8SDeepak Katragadda .name = "bi_tcxo",
892a1d7eb8SDeepak Katragadda },
902a1d7eb8SDeepak Katragadda .num_parents = 1,
910b014894SJonathan Marek .ops = &clk_alpha_pll_fixed_trion_ops,
922a1d7eb8SDeepak Katragadda },
932a1d7eb8SDeepak Katragadda },
942a1d7eb8SDeepak Katragadda };
952a1d7eb8SDeepak Katragadda
962a1d7eb8SDeepak Katragadda static struct clk_alpha_pll gpll9 = {
972a1d7eb8SDeepak Katragadda .offset = 0x1c000,
982a1d7eb8SDeepak Katragadda .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
992a1d7eb8SDeepak Katragadda .clkr = {
1002a1d7eb8SDeepak Katragadda .enable_reg = 0x52000,
1012a1d7eb8SDeepak Katragadda .enable_mask = BIT(9),
1022a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
1032a1d7eb8SDeepak Katragadda .name = "gpll9",
1042a1d7eb8SDeepak Katragadda .parent_data = &(const struct clk_parent_data){
1052a1d7eb8SDeepak Katragadda .fw_name = "bi_tcxo",
1062a1d7eb8SDeepak Katragadda .name = "bi_tcxo",
1072a1d7eb8SDeepak Katragadda },
1082a1d7eb8SDeepak Katragadda .num_parents = 1,
1090b014894SJonathan Marek .ops = &clk_alpha_pll_fixed_trion_ops,
1102a1d7eb8SDeepak Katragadda },
1112a1d7eb8SDeepak Katragadda },
1122a1d7eb8SDeepak Katragadda };
1132a1d7eb8SDeepak Katragadda
1142a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_0[] = {
1152a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1162a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1172a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_EVEN, 6 },
1182a1d7eb8SDeepak Katragadda };
1192a1d7eb8SDeepak Katragadda
1202a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_0[] = {
1212a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1222a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
1232a1d7eb8SDeepak Katragadda { .hw = &gpll0_out_even.clkr.hw },
1242a1d7eb8SDeepak Katragadda };
1252a1d7eb8SDeepak Katragadda
1262a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_1[] = {
1272a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1282a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1292a1d7eb8SDeepak Katragadda { P_SLEEP_CLK, 5 },
1302a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_EVEN, 6 },
1312a1d7eb8SDeepak Katragadda };
1322a1d7eb8SDeepak Katragadda
1332a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_1[] = {
1342a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1352a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
1362a1d7eb8SDeepak Katragadda { .fw_name = "sleep_clk", .name = "sleep_clk" },
1372a1d7eb8SDeepak Katragadda { .hw = &gpll0_out_even.clkr.hw },
1382a1d7eb8SDeepak Katragadda };
1392a1d7eb8SDeepak Katragadda
1402a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_2[] = {
1412a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1422a1d7eb8SDeepak Katragadda { P_SLEEP_CLK, 5 },
1432a1d7eb8SDeepak Katragadda };
1442a1d7eb8SDeepak Katragadda
1452a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_2[] = {
1462a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1472a1d7eb8SDeepak Katragadda { .fw_name = "sleep_clk", .name = "sleep_clk" },
1482a1d7eb8SDeepak Katragadda };
1492a1d7eb8SDeepak Katragadda
1502a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_3[] = {
1512a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1522a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1532a1d7eb8SDeepak Katragadda };
1542a1d7eb8SDeepak Katragadda
1552a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_3[] = {
1562a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1572a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
1582a1d7eb8SDeepak Katragadda };
1592a1d7eb8SDeepak Katragadda
1602a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_4[] = {
1612a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1622a1d7eb8SDeepak Katragadda };
1632a1d7eb8SDeepak Katragadda
1642a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_4[] = {
1652a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1662a1d7eb8SDeepak Katragadda };
1672a1d7eb8SDeepak Katragadda
1682a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_5[] = {
1692a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1702a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1712a1d7eb8SDeepak Katragadda { P_GPLL7_OUT_MAIN, 3 },
1722a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_EVEN, 6 },
1732a1d7eb8SDeepak Katragadda };
1742a1d7eb8SDeepak Katragadda
1752a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_5[] = {
1762a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1772a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
1782a1d7eb8SDeepak Katragadda { .hw = &gpll7.clkr.hw },
1792a1d7eb8SDeepak Katragadda { .hw = &gpll0_out_even.clkr.hw },
1802a1d7eb8SDeepak Katragadda };
1812a1d7eb8SDeepak Katragadda
1822a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_6[] = {
1832a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1842a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1852a1d7eb8SDeepak Katragadda { P_GPLL9_OUT_MAIN, 2 },
1862a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_EVEN, 6 },
1872a1d7eb8SDeepak Katragadda };
1882a1d7eb8SDeepak Katragadda
1892a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_6[] = {
1902a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
1912a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
1922a1d7eb8SDeepak Katragadda { .hw = &gpll9.clkr.hw },
1932a1d7eb8SDeepak Katragadda { .hw = &gpll0_out_even.clkr.hw },
1942a1d7eb8SDeepak Katragadda };
1952a1d7eb8SDeepak Katragadda
1962a1d7eb8SDeepak Katragadda static const struct parent_map gcc_parent_map_7[] = {
1972a1d7eb8SDeepak Katragadda { P_BI_TCXO, 0 },
1982a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_MAIN, 1 },
1992a1d7eb8SDeepak Katragadda { P_AUD_REF_CLK, 2 },
2002a1d7eb8SDeepak Katragadda { P_GPLL0_OUT_EVEN, 6 },
2012a1d7eb8SDeepak Katragadda };
2022a1d7eb8SDeepak Katragadda
2032a1d7eb8SDeepak Katragadda static const struct clk_parent_data gcc_parents_7[] = {
2042a1d7eb8SDeepak Katragadda { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
2052a1d7eb8SDeepak Katragadda { .hw = &gpll0.clkr.hw },
2062a1d7eb8SDeepak Katragadda { .fw_name = "aud_ref_clk", .name = "aud_ref_clk" },
2072a1d7eb8SDeepak Katragadda { .hw = &gpll0_out_even.clkr.hw },
2082a1d7eb8SDeepak Katragadda };
2092a1d7eb8SDeepak Katragadda
2102a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
2112a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
2122a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
2132a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
2142a1d7eb8SDeepak Katragadda { }
2152a1d7eb8SDeepak Katragadda };
2162a1d7eb8SDeepak Katragadda
2172a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
2182a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x48014,
2192a1d7eb8SDeepak Katragadda .mnd_width = 0,
2202a1d7eb8SDeepak Katragadda .hid_width = 5,
2212a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
2222a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
2232a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
2242a1d7eb8SDeepak Katragadda .name = "gcc_cpuss_ahb_clk_src",
2252a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
22660ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
2272a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
2282a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
2292a1d7eb8SDeepak Katragadda },
2302a1d7eb8SDeepak Katragadda };
2312a1d7eb8SDeepak Katragadda
2322a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_emac_ptp_clk_src[] = {
2332a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
2342a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
2352a1d7eb8SDeepak Katragadda F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
2362a1d7eb8SDeepak Katragadda F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
2372a1d7eb8SDeepak Katragadda { }
2382a1d7eb8SDeepak Katragadda };
2392a1d7eb8SDeepak Katragadda
2402a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_emac_ptp_clk_src = {
2412a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x6038,
2422a1d7eb8SDeepak Katragadda .mnd_width = 0,
2432a1d7eb8SDeepak Katragadda .hid_width = 5,
2442a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_5,
2452a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_emac_ptp_clk_src,
2462a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
2472a1d7eb8SDeepak Katragadda .name = "gcc_emac_ptp_clk_src",
2482a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_5,
24960ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_5),
2502a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
2512a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
2522a1d7eb8SDeepak Katragadda },
2532a1d7eb8SDeepak Katragadda };
2542a1d7eb8SDeepak Katragadda
2552a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_emac_rgmii_clk_src[] = {
2562a1d7eb8SDeepak Katragadda F(2500000, P_BI_TCXO, 1, 25, 192),
2572a1d7eb8SDeepak Katragadda F(5000000, P_BI_TCXO, 1, 25, 96),
2582a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
2592a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
2602a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
2612a1d7eb8SDeepak Katragadda F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
2622a1d7eb8SDeepak Katragadda F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
2632a1d7eb8SDeepak Katragadda { }
2642a1d7eb8SDeepak Katragadda };
2652a1d7eb8SDeepak Katragadda
2662a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_emac_rgmii_clk_src = {
2672a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x601c,
2682a1d7eb8SDeepak Katragadda .mnd_width = 8,
2692a1d7eb8SDeepak Katragadda .hid_width = 5,
2702a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_5,
2712a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_emac_rgmii_clk_src,
2722a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
2732a1d7eb8SDeepak Katragadda .name = "gcc_emac_rgmii_clk_src",
2742a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_5,
27560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_5),
2762a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
2772a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
2782a1d7eb8SDeepak Katragadda },
2792a1d7eb8SDeepak Katragadda };
2802a1d7eb8SDeepak Katragadda
2812a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
2822a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
2832a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
2842a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
2852a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
2862a1d7eb8SDeepak Katragadda F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
2872a1d7eb8SDeepak Katragadda { }
2882a1d7eb8SDeepak Katragadda };
2892a1d7eb8SDeepak Katragadda
2902a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_gp1_clk_src = {
2912a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x64004,
2922a1d7eb8SDeepak Katragadda .mnd_width = 8,
2932a1d7eb8SDeepak Katragadda .hid_width = 5,
2942a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_1,
2952a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_gp1_clk_src,
2962a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
2972a1d7eb8SDeepak Katragadda .name = "gcc_gp1_clk_src",
2982a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_1,
29960ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_1),
3002a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3012a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3022a1d7eb8SDeepak Katragadda },
3032a1d7eb8SDeepak Katragadda };
3042a1d7eb8SDeepak Katragadda
3052a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_gp2_clk_src = {
3062a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x65004,
3072a1d7eb8SDeepak Katragadda .mnd_width = 8,
3082a1d7eb8SDeepak Katragadda .hid_width = 5,
3092a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_1,
3102a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_gp1_clk_src,
3112a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
3122a1d7eb8SDeepak Katragadda .name = "gcc_gp2_clk_src",
3132a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_1,
31460ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_1),
3152a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3162a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3172a1d7eb8SDeepak Katragadda },
3182a1d7eb8SDeepak Katragadda };
3192a1d7eb8SDeepak Katragadda
3202a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_gp3_clk_src = {
3212a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x66004,
3222a1d7eb8SDeepak Katragadda .mnd_width = 8,
3232a1d7eb8SDeepak Katragadda .hid_width = 5,
3242a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_1,
3252a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_gp1_clk_src,
3262a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
3272a1d7eb8SDeepak Katragadda .name = "gcc_gp3_clk_src",
3282a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_1,
32960ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_1),
3302a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3312a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3322a1d7eb8SDeepak Katragadda },
3332a1d7eb8SDeepak Katragadda };
3342a1d7eb8SDeepak Katragadda
3352a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
3362a1d7eb8SDeepak Katragadda F(9600000, P_BI_TCXO, 2, 0, 0),
3372a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
3382a1d7eb8SDeepak Katragadda { }
3392a1d7eb8SDeepak Katragadda };
3402a1d7eb8SDeepak Katragadda
3412a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
3422a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x6b02c,
3432a1d7eb8SDeepak Katragadda .mnd_width = 16,
3442a1d7eb8SDeepak Katragadda .hid_width = 5,
3452a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_2,
3462a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
3472a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
3482a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_aux_clk_src",
3492a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_2,
35060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_2),
3512a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3522a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3532a1d7eb8SDeepak Katragadda },
3542a1d7eb8SDeepak Katragadda };
3552a1d7eb8SDeepak Katragadda
3562a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
3572a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x8d02c,
3582a1d7eb8SDeepak Katragadda .mnd_width = 16,
3592a1d7eb8SDeepak Katragadda .hid_width = 5,
3602a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_2,
3612a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
3622a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
3632a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_aux_clk_src",
3642a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_2,
36560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_2),
3662a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3672a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3682a1d7eb8SDeepak Katragadda },
3692a1d7eb8SDeepak Katragadda };
3702a1d7eb8SDeepak Katragadda
3712a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
3722a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
3732a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
3742a1d7eb8SDeepak Katragadda { }
3752a1d7eb8SDeepak Katragadda };
3762a1d7eb8SDeepak Katragadda
3772a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
3782a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x6f014,
3792a1d7eb8SDeepak Katragadda .mnd_width = 0,
3802a1d7eb8SDeepak Katragadda .hid_width = 5,
3812a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
3822a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
3832a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
3842a1d7eb8SDeepak Katragadda .name = "gcc_pcie_phy_refgen_clk_src",
3852a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
38660ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
3872a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
3882a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
3892a1d7eb8SDeepak Katragadda },
3902a1d7eb8SDeepak Katragadda };
3912a1d7eb8SDeepak Katragadda
3922a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
3932a1d7eb8SDeepak Katragadda F(9600000, P_BI_TCXO, 2, 0, 0),
3942a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
3952a1d7eb8SDeepak Katragadda F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
3962a1d7eb8SDeepak Katragadda { }
3972a1d7eb8SDeepak Katragadda };
3982a1d7eb8SDeepak Katragadda
3992a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_pdm2_clk_src = {
4002a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x33010,
4012a1d7eb8SDeepak Katragadda .mnd_width = 0,
4022a1d7eb8SDeepak Katragadda .hid_width = 5,
4032a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
4042a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_pdm2_clk_src,
4052a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
4062a1d7eb8SDeepak Katragadda .name = "gcc_pdm2_clk_src",
4072a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
40860ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
4092a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
4102a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
4112a1d7eb8SDeepak Katragadda },
4122a1d7eb8SDeepak Katragadda };
4132a1d7eb8SDeepak Katragadda
4142a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_qspi_core_clk_src[] = {
4152a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
4162a1d7eb8SDeepak Katragadda F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
4172a1d7eb8SDeepak Katragadda F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
4182a1d7eb8SDeepak Katragadda F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
4192a1d7eb8SDeepak Katragadda { }
4202a1d7eb8SDeepak Katragadda };
4212a1d7eb8SDeepak Katragadda
4222a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qspi_core_clk_src = {
4232a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x4b008,
4242a1d7eb8SDeepak Katragadda .mnd_width = 0,
4252a1d7eb8SDeepak Katragadda .hid_width = 5,
4262a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
4272a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qspi_core_clk_src,
4282a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
4292a1d7eb8SDeepak Katragadda .name = "gcc_qspi_core_clk_src",
4302a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
43160ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
4322a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
4332a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
4342a1d7eb8SDeepak Katragadda },
4352a1d7eb8SDeepak Katragadda };
4362a1d7eb8SDeepak Katragadda
4372a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
4382a1d7eb8SDeepak Katragadda F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
4392a1d7eb8SDeepak Katragadda F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
4402a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
4412a1d7eb8SDeepak Katragadda F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
4422a1d7eb8SDeepak Katragadda F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
4432a1d7eb8SDeepak Katragadda F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
4442a1d7eb8SDeepak Katragadda F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
4452a1d7eb8SDeepak Katragadda F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
4462a1d7eb8SDeepak Katragadda F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
4472a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
4482a1d7eb8SDeepak Katragadda F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
4492a1d7eb8SDeepak Katragadda F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
4502a1d7eb8SDeepak Katragadda F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
4512a1d7eb8SDeepak Katragadda F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
4522a1d7eb8SDeepak Katragadda F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
4532a1d7eb8SDeepak Katragadda { }
4542a1d7eb8SDeepak Katragadda };
4552a1d7eb8SDeepak Katragadda
4562a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
4572a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17148,
4582a1d7eb8SDeepak Katragadda .mnd_width = 16,
4592a1d7eb8SDeepak Katragadda .hid_width = 5,
4602a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
4612a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
4622a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
4632a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s0_clk_src",
4642a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
46560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
4662a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
4672a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
4682a1d7eb8SDeepak Katragadda },
4692a1d7eb8SDeepak Katragadda };
4702a1d7eb8SDeepak Katragadda
4712a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
4722a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17278,
4732a1d7eb8SDeepak Katragadda .mnd_width = 16,
4742a1d7eb8SDeepak Katragadda .hid_width = 5,
4752a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
4762a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
4772a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
4782a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s1_clk_src",
4792a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
48060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
4812a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
4822a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
4832a1d7eb8SDeepak Katragadda },
4842a1d7eb8SDeepak Katragadda };
4852a1d7eb8SDeepak Katragadda
4862a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
4872a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x173a8,
4882a1d7eb8SDeepak Katragadda .mnd_width = 16,
4892a1d7eb8SDeepak Katragadda .hid_width = 5,
4902a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
4912a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
4922a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
4932a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s2_clk_src",
4942a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
49560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
4962a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
4972a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
4982a1d7eb8SDeepak Katragadda },
4992a1d7eb8SDeepak Katragadda };
5002a1d7eb8SDeepak Katragadda
5012a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
5022a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x174d8,
5032a1d7eb8SDeepak Katragadda .mnd_width = 16,
5042a1d7eb8SDeepak Katragadda .hid_width = 5,
5052a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5062a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5072a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5082a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s3_clk_src",
5092a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
51060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5112a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5122a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5132a1d7eb8SDeepak Katragadda },
5142a1d7eb8SDeepak Katragadda };
5152a1d7eb8SDeepak Katragadda
5162a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
5172a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17608,
5182a1d7eb8SDeepak Katragadda .mnd_width = 16,
5192a1d7eb8SDeepak Katragadda .hid_width = 5,
5202a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5212a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5222a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5232a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s4_clk_src",
5242a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
52560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5262a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5272a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5282a1d7eb8SDeepak Katragadda },
5292a1d7eb8SDeepak Katragadda };
5302a1d7eb8SDeepak Katragadda
5312a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
5322a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17738,
5332a1d7eb8SDeepak Katragadda .mnd_width = 16,
5342a1d7eb8SDeepak Katragadda .hid_width = 5,
5352a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5362a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5372a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5382a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s5_clk_src",
5392a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
54060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5412a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5422a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5432a1d7eb8SDeepak Katragadda },
5442a1d7eb8SDeepak Katragadda };
5452a1d7eb8SDeepak Katragadda
5462a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
5472a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17868,
5482a1d7eb8SDeepak Katragadda .mnd_width = 16,
5492a1d7eb8SDeepak Katragadda .hid_width = 5,
5502a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5512a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5522a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5532a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s6_clk_src",
5542a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
55560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5562a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5572a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5582a1d7eb8SDeepak Katragadda },
5592a1d7eb8SDeepak Katragadda };
5602a1d7eb8SDeepak Katragadda
5612a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
5622a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x17998,
5632a1d7eb8SDeepak Katragadda .mnd_width = 16,
5642a1d7eb8SDeepak Katragadda .hid_width = 5,
5652a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5662a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5672a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5682a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s7_clk_src",
5692a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
57060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5712a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5722a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5732a1d7eb8SDeepak Katragadda },
5742a1d7eb8SDeepak Katragadda };
5752a1d7eb8SDeepak Katragadda
5762a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
5772a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x18148,
5782a1d7eb8SDeepak Katragadda .mnd_width = 16,
5792a1d7eb8SDeepak Katragadda .hid_width = 5,
5802a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5812a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5822a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5832a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s0_clk_src",
5842a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
58560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
5862a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
5872a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
5882a1d7eb8SDeepak Katragadda },
5892a1d7eb8SDeepak Katragadda };
5902a1d7eb8SDeepak Katragadda
5912a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
5922a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x18278,
5932a1d7eb8SDeepak Katragadda .mnd_width = 16,
5942a1d7eb8SDeepak Katragadda .hid_width = 5,
5952a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
5962a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
5972a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
5982a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s1_clk_src",
5992a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
60060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6012a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6022a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6032a1d7eb8SDeepak Katragadda },
6042a1d7eb8SDeepak Katragadda };
6052a1d7eb8SDeepak Katragadda
6062a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
6072a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x183a8,
6082a1d7eb8SDeepak Katragadda .mnd_width = 16,
6092a1d7eb8SDeepak Katragadda .hid_width = 5,
6102a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6112a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6122a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6132a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s2_clk_src",
6142a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
61560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6162a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6172a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6182a1d7eb8SDeepak Katragadda },
6192a1d7eb8SDeepak Katragadda };
6202a1d7eb8SDeepak Katragadda
6212a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
6222a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x184d8,
6232a1d7eb8SDeepak Katragadda .mnd_width = 16,
6242a1d7eb8SDeepak Katragadda .hid_width = 5,
6252a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6262a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6272a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6282a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s3_clk_src",
6292a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
63060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6312a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6322a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6332a1d7eb8SDeepak Katragadda },
6342a1d7eb8SDeepak Katragadda };
6352a1d7eb8SDeepak Katragadda
6362a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
6372a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x18608,
6382a1d7eb8SDeepak Katragadda .mnd_width = 16,
6392a1d7eb8SDeepak Katragadda .hid_width = 5,
6402a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6412a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6422a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6432a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s4_clk_src",
6442a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
64560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6462a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6472a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6482a1d7eb8SDeepak Katragadda },
6492a1d7eb8SDeepak Katragadda };
6502a1d7eb8SDeepak Katragadda
6512a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
6522a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x18738,
6532a1d7eb8SDeepak Katragadda .mnd_width = 16,
6542a1d7eb8SDeepak Katragadda .hid_width = 5,
6552a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6562a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6572a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6582a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s5_clk_src",
6592a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
66060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6612a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6622a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6632a1d7eb8SDeepak Katragadda },
6642a1d7eb8SDeepak Katragadda };
6652a1d7eb8SDeepak Katragadda
6662a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
6672a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e148,
6682a1d7eb8SDeepak Katragadda .mnd_width = 16,
6692a1d7eb8SDeepak Katragadda .hid_width = 5,
6702a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6712a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6722a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6732a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s0_clk_src",
6742a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
67560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6762a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6772a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6782a1d7eb8SDeepak Katragadda },
6792a1d7eb8SDeepak Katragadda };
6802a1d7eb8SDeepak Katragadda
6812a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
6822a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e278,
6832a1d7eb8SDeepak Katragadda .mnd_width = 16,
6842a1d7eb8SDeepak Katragadda .hid_width = 5,
6852a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
6862a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
6872a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
6882a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s1_clk_src",
6892a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
69060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
6912a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
6922a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
6932a1d7eb8SDeepak Katragadda },
6942a1d7eb8SDeepak Katragadda };
6952a1d7eb8SDeepak Katragadda
6962a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
6972a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e3a8,
6982a1d7eb8SDeepak Katragadda .mnd_width = 16,
6992a1d7eb8SDeepak Katragadda .hid_width = 5,
7002a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
7012a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7022a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7032a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s2_clk_src",
7042a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
70560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
7062a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
7072a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
7082a1d7eb8SDeepak Katragadda },
7092a1d7eb8SDeepak Katragadda };
7102a1d7eb8SDeepak Katragadda
7112a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
7122a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e4d8,
7132a1d7eb8SDeepak Katragadda .mnd_width = 16,
7142a1d7eb8SDeepak Katragadda .hid_width = 5,
7152a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
7162a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7172a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7182a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s3_clk_src",
7192a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
72060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
7212a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
7222a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
7232a1d7eb8SDeepak Katragadda },
7242a1d7eb8SDeepak Katragadda };
7252a1d7eb8SDeepak Katragadda
7262a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
7272a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e608,
7282a1d7eb8SDeepak Katragadda .mnd_width = 16,
7292a1d7eb8SDeepak Katragadda .hid_width = 5,
7302a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
7312a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7322a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7332a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s4_clk_src",
7342a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
73560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
7362a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
7372a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
7382a1d7eb8SDeepak Katragadda },
7392a1d7eb8SDeepak Katragadda };
7402a1d7eb8SDeepak Katragadda
7412a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
7422a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1e738,
7432a1d7eb8SDeepak Katragadda .mnd_width = 16,
7442a1d7eb8SDeepak Katragadda .hid_width = 5,
7452a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
7462a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
7472a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7482a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s5_clk_src",
7492a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
75060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
7512a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
7522a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
7532a1d7eb8SDeepak Katragadda },
7542a1d7eb8SDeepak Katragadda };
7552a1d7eb8SDeepak Katragadda
7562a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
7572a1d7eb8SDeepak Katragadda F(400000, P_BI_TCXO, 12, 1, 4),
7582a1d7eb8SDeepak Katragadda F(9600000, P_BI_TCXO, 2, 0, 0),
7592a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
7602a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
7612a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
7622a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
7632a1d7eb8SDeepak Katragadda F(202000000, P_GPLL9_OUT_MAIN, 4, 0, 0),
7642a1d7eb8SDeepak Katragadda { }
7652a1d7eb8SDeepak Katragadda };
7662a1d7eb8SDeepak Katragadda
7672a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
7682a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1400c,
7692a1d7eb8SDeepak Katragadda .mnd_width = 8,
7702a1d7eb8SDeepak Katragadda .hid_width = 5,
7712a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_6,
7722a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
7732a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7742a1d7eb8SDeepak Katragadda .name = "gcc_sdcc2_apps_clk_src",
7752a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_6,
77660ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_6),
777*f171bab8SDanila Tikhonov .flags = CLK_OPS_PARENT_ENABLE,
7783f905469STaniya Das .ops = &clk_rcg2_floor_ops,
7792a1d7eb8SDeepak Katragadda },
7802a1d7eb8SDeepak Katragadda };
7812a1d7eb8SDeepak Katragadda
7822a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
7832a1d7eb8SDeepak Katragadda F(400000, P_BI_TCXO, 12, 1, 4),
7842a1d7eb8SDeepak Katragadda F(9600000, P_BI_TCXO, 2, 0, 0),
7852a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
7862a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
7872a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
7882a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
7892a1d7eb8SDeepak Katragadda { }
7902a1d7eb8SDeepak Katragadda };
7912a1d7eb8SDeepak Katragadda
7922a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
7932a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1600c,
7942a1d7eb8SDeepak Katragadda .mnd_width = 8,
7952a1d7eb8SDeepak Katragadda .hid_width = 5,
7962a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_3,
7972a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
7982a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
7992a1d7eb8SDeepak Katragadda .name = "gcc_sdcc4_apps_clk_src",
8002a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_3,
80160ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_3),
8022a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
8033f905469STaniya Das .ops = &clk_rcg2_floor_ops,
8042a1d7eb8SDeepak Katragadda },
8052a1d7eb8SDeepak Katragadda };
8062a1d7eb8SDeepak Katragadda
8072a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
8082a1d7eb8SDeepak Katragadda F(105495, P_BI_TCXO, 2, 1, 91),
8092a1d7eb8SDeepak Katragadda { }
8102a1d7eb8SDeepak Katragadda };
8112a1d7eb8SDeepak Katragadda
8122a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_tsif_ref_clk_src = {
8132a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x36010,
8142a1d7eb8SDeepak Katragadda .mnd_width = 8,
8152a1d7eb8SDeepak Katragadda .hid_width = 5,
8162a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_7,
8172a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_tsif_ref_clk_src,
8182a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
8192a1d7eb8SDeepak Katragadda .name = "gcc_tsif_ref_clk_src",
8202a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_7,
82160ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_7),
8222a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
8232a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
8242a1d7eb8SDeepak Katragadda },
8252a1d7eb8SDeepak Katragadda };
8262a1d7eb8SDeepak Katragadda
8272a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
8282a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
8292a1d7eb8SDeepak Katragadda F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
8302a1d7eb8SDeepak Katragadda F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
8312a1d7eb8SDeepak Katragadda F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
8322a1d7eb8SDeepak Katragadda F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
8332a1d7eb8SDeepak Katragadda { }
8342a1d7eb8SDeepak Katragadda };
8352a1d7eb8SDeepak Katragadda
8362a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
8372a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x75020,
8382a1d7eb8SDeepak Katragadda .mnd_width = 8,
8392a1d7eb8SDeepak Katragadda .hid_width = 5,
8402a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
8412a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
8422a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
8432a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_axi_clk_src",
8442a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
84560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
8462a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
8472a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
8482a1d7eb8SDeepak Katragadda },
8492a1d7eb8SDeepak Katragadda };
8502a1d7eb8SDeepak Katragadda
8512a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
8522a1d7eb8SDeepak Katragadda F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
8532a1d7eb8SDeepak Katragadda F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
8542a1d7eb8SDeepak Katragadda F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
8552a1d7eb8SDeepak Katragadda F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
8562a1d7eb8SDeepak Katragadda { }
8572a1d7eb8SDeepak Katragadda };
8582a1d7eb8SDeepak Katragadda
8592a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
8602a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x75060,
8612a1d7eb8SDeepak Katragadda .mnd_width = 0,
8622a1d7eb8SDeepak Katragadda .hid_width = 5,
8632a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
8642a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
8652a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
8662a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_ice_core_clk_src",
8672a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
86860ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
8692a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
8702a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
8712a1d7eb8SDeepak Katragadda },
8722a1d7eb8SDeepak Katragadda };
8732a1d7eb8SDeepak Katragadda
8742a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_ufs_card_phy_aux_clk_src[] = {
8752a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
8762a1d7eb8SDeepak Katragadda { }
8772a1d7eb8SDeepak Katragadda };
8782a1d7eb8SDeepak Katragadda
8792a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
8802a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x75094,
8812a1d7eb8SDeepak Katragadda .mnd_width = 0,
8822a1d7eb8SDeepak Katragadda .hid_width = 5,
8832a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_4,
8842a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
8852a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
8862a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_phy_aux_clk_src",
8872a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_4,
88860ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_4),
8892a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
8902a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
8912a1d7eb8SDeepak Katragadda },
8922a1d7eb8SDeepak Katragadda };
8932a1d7eb8SDeepak Katragadda
8942a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
8952a1d7eb8SDeepak Katragadda F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
8962a1d7eb8SDeepak Katragadda F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
8972a1d7eb8SDeepak Katragadda F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
8982a1d7eb8SDeepak Katragadda { }
8992a1d7eb8SDeepak Katragadda };
9002a1d7eb8SDeepak Katragadda
9012a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
9022a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x75078,
9032a1d7eb8SDeepak Katragadda .mnd_width = 0,
9042a1d7eb8SDeepak Katragadda .hid_width = 5,
9052a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
9062a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
9072a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
9082a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_unipro_core_clk_src",
9092a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
91060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
9112a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
9122a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
9132a1d7eb8SDeepak Katragadda },
9142a1d7eb8SDeepak Katragadda };
9152a1d7eb8SDeepak Katragadda
9162a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
9172a1d7eb8SDeepak Katragadda F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
9182a1d7eb8SDeepak Katragadda F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
9192a1d7eb8SDeepak Katragadda F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
9202a1d7eb8SDeepak Katragadda F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
9212a1d7eb8SDeepak Katragadda F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
9222a1d7eb8SDeepak Katragadda { }
9232a1d7eb8SDeepak Katragadda };
9242a1d7eb8SDeepak Katragadda
9252a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
9262a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x77020,
9272a1d7eb8SDeepak Katragadda .mnd_width = 8,
9282a1d7eb8SDeepak Katragadda .hid_width = 5,
9292a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
9302a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
9312a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
9322a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_axi_clk_src",
9332a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
93460ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
9352a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
9362a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
9372a1d7eb8SDeepak Katragadda },
9382a1d7eb8SDeepak Katragadda };
9392a1d7eb8SDeepak Katragadda
9402a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
9412a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x77060,
9422a1d7eb8SDeepak Katragadda .mnd_width = 0,
9432a1d7eb8SDeepak Katragadda .hid_width = 5,
9442a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
9452a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
9462a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
9472a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_ice_core_clk_src",
9482a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
94960ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
9502a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
9512a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
9522a1d7eb8SDeepak Katragadda },
9532a1d7eb8SDeepak Katragadda };
9542a1d7eb8SDeepak Katragadda
9552a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
9562a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x77094,
9572a1d7eb8SDeepak Katragadda .mnd_width = 0,
9582a1d7eb8SDeepak Katragadda .hid_width = 5,
9592a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_4,
9602a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
9612a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
9622a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_phy_aux_clk_src",
9632a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_4,
96460ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_4),
9652a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
9662a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
9672a1d7eb8SDeepak Katragadda },
9682a1d7eb8SDeepak Katragadda };
9692a1d7eb8SDeepak Katragadda
9702a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
9712a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x77078,
9722a1d7eb8SDeepak Katragadda .mnd_width = 0,
9732a1d7eb8SDeepak Katragadda .hid_width = 5,
9742a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
9752a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
9762a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
9772a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_unipro_core_clk_src",
9782a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
97960ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
9802a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
9812a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
9822a1d7eb8SDeepak Katragadda },
9832a1d7eb8SDeepak Katragadda };
9842a1d7eb8SDeepak Katragadda
9852a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
9862a1d7eb8SDeepak Katragadda F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
9872a1d7eb8SDeepak Katragadda F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
9882a1d7eb8SDeepak Katragadda F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
9892a1d7eb8SDeepak Katragadda F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
9902a1d7eb8SDeepak Katragadda F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
9912a1d7eb8SDeepak Katragadda { }
9922a1d7eb8SDeepak Katragadda };
9932a1d7eb8SDeepak Katragadda
9942a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
9952a1d7eb8SDeepak Katragadda .cmd_rcgr = 0xf01c,
9962a1d7eb8SDeepak Katragadda .mnd_width = 8,
9972a1d7eb8SDeepak Katragadda .hid_width = 5,
9982a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
9992a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
10002a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10012a1d7eb8SDeepak Katragadda .name = "gcc_usb30_prim_master_clk_src",
10022a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
100360ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
10042a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10052a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10062a1d7eb8SDeepak Katragadda },
10072a1d7eb8SDeepak Katragadda };
10082a1d7eb8SDeepak Katragadda
10092a1d7eb8SDeepak Katragadda static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
10102a1d7eb8SDeepak Katragadda F(19200000, P_BI_TCXO, 1, 0, 0),
10112a1d7eb8SDeepak Katragadda F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
10122a1d7eb8SDeepak Katragadda F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0),
10132a1d7eb8SDeepak Katragadda { }
10142a1d7eb8SDeepak Katragadda };
10152a1d7eb8SDeepak Katragadda
10162a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
10172a1d7eb8SDeepak Katragadda .cmd_rcgr = 0xf034,
10182a1d7eb8SDeepak Katragadda .mnd_width = 0,
10192a1d7eb8SDeepak Katragadda .hid_width = 5,
10202a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
10212a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
10222a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10232a1d7eb8SDeepak Katragadda .name = "gcc_usb30_prim_mock_utmi_clk_src",
10242a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
102560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
10262a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10272a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10282a1d7eb8SDeepak Katragadda },
10292a1d7eb8SDeepak Katragadda };
10302a1d7eb8SDeepak Katragadda
10312a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
10322a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x1001c,
10332a1d7eb8SDeepak Katragadda .mnd_width = 8,
10342a1d7eb8SDeepak Katragadda .hid_width = 5,
10352a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
10362a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
10372a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10382a1d7eb8SDeepak Katragadda .name = "gcc_usb30_sec_master_clk_src",
10392a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
104060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
10412a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10422a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10432a1d7eb8SDeepak Katragadda },
10442a1d7eb8SDeepak Katragadda };
10452a1d7eb8SDeepak Katragadda
10462a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
10472a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x10034,
10482a1d7eb8SDeepak Katragadda .mnd_width = 0,
10492a1d7eb8SDeepak Katragadda .hid_width = 5,
10502a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_0,
10512a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
10522a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10532a1d7eb8SDeepak Katragadda .name = "gcc_usb30_sec_mock_utmi_clk_src",
10542a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_0,
105560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_0),
10562a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10572a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10582a1d7eb8SDeepak Katragadda },
10592a1d7eb8SDeepak Katragadda };
10602a1d7eb8SDeepak Katragadda
10612a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
10622a1d7eb8SDeepak Katragadda .cmd_rcgr = 0xf060,
10632a1d7eb8SDeepak Katragadda .mnd_width = 0,
10642a1d7eb8SDeepak Katragadda .hid_width = 5,
10652a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_2,
10662a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
10672a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10682a1d7eb8SDeepak Katragadda .name = "gcc_usb3_prim_phy_aux_clk_src",
10692a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_2,
107060ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_2),
10712a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10722a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10732a1d7eb8SDeepak Katragadda },
10742a1d7eb8SDeepak Katragadda };
10752a1d7eb8SDeepak Katragadda
10762a1d7eb8SDeepak Katragadda static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
10772a1d7eb8SDeepak Katragadda .cmd_rcgr = 0x10060,
10782a1d7eb8SDeepak Katragadda .mnd_width = 0,
10792a1d7eb8SDeepak Katragadda .hid_width = 5,
10802a1d7eb8SDeepak Katragadda .parent_map = gcc_parent_map_2,
10812a1d7eb8SDeepak Katragadda .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
10822a1d7eb8SDeepak Katragadda .clkr.hw.init = &(struct clk_init_data){
10832a1d7eb8SDeepak Katragadda .name = "gcc_usb3_sec_phy_aux_clk_src",
10842a1d7eb8SDeepak Katragadda .parent_data = gcc_parents_2,
108560ca4670SDmitry Baryshkov .num_parents = ARRAY_SIZE(gcc_parents_2),
10862a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
10872a1d7eb8SDeepak Katragadda .ops = &clk_rcg2_ops,
10882a1d7eb8SDeepak Katragadda },
10892a1d7eb8SDeepak Katragadda };
10902a1d7eb8SDeepak Katragadda
10912a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
10922a1d7eb8SDeepak Katragadda .halt_reg = 0x90018,
10932a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
10942a1d7eb8SDeepak Katragadda .clkr = {
10952a1d7eb8SDeepak Katragadda .enable_reg = 0x90018,
10962a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
10972a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
10982a1d7eb8SDeepak Katragadda .name = "gcc_aggre_noc_pcie_tbu_clk",
10992a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
11002a1d7eb8SDeepak Katragadda },
11012a1d7eb8SDeepak Katragadda },
11022a1d7eb8SDeepak Katragadda };
11032a1d7eb8SDeepak Katragadda
11042a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
11052a1d7eb8SDeepak Katragadda .halt_reg = 0x750c0,
11062a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
11072a1d7eb8SDeepak Katragadda .hwcg_reg = 0x750c0,
11082a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
11092a1d7eb8SDeepak Katragadda .clkr = {
11102a1d7eb8SDeepak Katragadda .enable_reg = 0x750c0,
11112a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
11122a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
11132a1d7eb8SDeepak Katragadda .name = "gcc_aggre_ufs_card_axi_clk",
11142a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
11152a1d7eb8SDeepak Katragadda &gcc_ufs_card_axi_clk_src.clkr.hw },
11162a1d7eb8SDeepak Katragadda .num_parents = 1,
11172a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
11182a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
11192a1d7eb8SDeepak Katragadda },
11202a1d7eb8SDeepak Katragadda },
11212a1d7eb8SDeepak Katragadda };
11222a1d7eb8SDeepak Katragadda
11232a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
11242a1d7eb8SDeepak Katragadda .halt_reg = 0x750c0,
11252a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
11262a1d7eb8SDeepak Katragadda .hwcg_reg = 0x750c0,
11272a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
11282a1d7eb8SDeepak Katragadda .clkr = {
11292a1d7eb8SDeepak Katragadda .enable_reg = 0x750c0,
11302a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
11312a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
11322a1d7eb8SDeepak Katragadda .name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
11332a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
11342a1d7eb8SDeepak Katragadda &gcc_aggre_ufs_card_axi_clk.clkr.hw },
11352a1d7eb8SDeepak Katragadda .num_parents = 1,
11362a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
11372a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
11382a1d7eb8SDeepak Katragadda },
11392a1d7eb8SDeepak Katragadda },
11402a1d7eb8SDeepak Katragadda };
11412a1d7eb8SDeepak Katragadda
11422a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
11432a1d7eb8SDeepak Katragadda .halt_reg = 0x770c0,
11442a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
11452a1d7eb8SDeepak Katragadda .hwcg_reg = 0x770c0,
11462a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
11472a1d7eb8SDeepak Katragadda .clkr = {
11482a1d7eb8SDeepak Katragadda .enable_reg = 0x770c0,
11492a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
11502a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
11512a1d7eb8SDeepak Katragadda .name = "gcc_aggre_ufs_phy_axi_clk",
11522a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
11532a1d7eb8SDeepak Katragadda &gcc_ufs_phy_axi_clk_src.clkr.hw },
11542a1d7eb8SDeepak Katragadda .num_parents = 1,
11552a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
11562a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
11572a1d7eb8SDeepak Katragadda },
11582a1d7eb8SDeepak Katragadda },
11592a1d7eb8SDeepak Katragadda };
11602a1d7eb8SDeepak Katragadda
11612a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
11622a1d7eb8SDeepak Katragadda .halt_reg = 0x770c0,
11632a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
11642a1d7eb8SDeepak Katragadda .hwcg_reg = 0x770c0,
11652a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
11662a1d7eb8SDeepak Katragadda .clkr = {
11672a1d7eb8SDeepak Katragadda .enable_reg = 0x770c0,
11682a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
11692a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
11702a1d7eb8SDeepak Katragadda .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
11712a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
11722a1d7eb8SDeepak Katragadda &gcc_aggre_ufs_phy_axi_clk.clkr.hw },
11732a1d7eb8SDeepak Katragadda .num_parents = 1,
11742a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
11752a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
11762a1d7eb8SDeepak Katragadda },
11772a1d7eb8SDeepak Katragadda },
11782a1d7eb8SDeepak Katragadda };
11792a1d7eb8SDeepak Katragadda
11802a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
11812a1d7eb8SDeepak Katragadda .halt_reg = 0xf07c,
11822a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
11832a1d7eb8SDeepak Katragadda .clkr = {
11842a1d7eb8SDeepak Katragadda .enable_reg = 0xf07c,
11852a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
11862a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
11872a1d7eb8SDeepak Katragadda .name = "gcc_aggre_usb3_prim_axi_clk",
11882a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
11892a1d7eb8SDeepak Katragadda &gcc_usb30_prim_master_clk_src.clkr.hw },
11902a1d7eb8SDeepak Katragadda .num_parents = 1,
11912a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
11922a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
11932a1d7eb8SDeepak Katragadda },
11942a1d7eb8SDeepak Katragadda },
11952a1d7eb8SDeepak Katragadda };
11962a1d7eb8SDeepak Katragadda
11972a1d7eb8SDeepak Katragadda static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
11982a1d7eb8SDeepak Katragadda .halt_reg = 0x1007c,
11992a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
12002a1d7eb8SDeepak Katragadda .clkr = {
12012a1d7eb8SDeepak Katragadda .enable_reg = 0x1007c,
12022a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12032a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12042a1d7eb8SDeepak Katragadda .name = "gcc_aggre_usb3_sec_axi_clk",
12052a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
12062a1d7eb8SDeepak Katragadda &gcc_usb30_sec_master_clk_src.clkr.hw },
12072a1d7eb8SDeepak Katragadda .num_parents = 1,
12082a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
12092a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12102a1d7eb8SDeepak Katragadda },
12112a1d7eb8SDeepak Katragadda },
12122a1d7eb8SDeepak Katragadda };
12132a1d7eb8SDeepak Katragadda
12142a1d7eb8SDeepak Katragadda static struct clk_branch gcc_boot_rom_ahb_clk = {
12152a1d7eb8SDeepak Katragadda .halt_reg = 0x38004,
12162a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
12172a1d7eb8SDeepak Katragadda .hwcg_reg = 0x38004,
12182a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
12192a1d7eb8SDeepak Katragadda .clkr = {
12202a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
12212a1d7eb8SDeepak Katragadda .enable_mask = BIT(10),
12222a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12232a1d7eb8SDeepak Katragadda .name = "gcc_boot_rom_ahb_clk",
12242a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12252a1d7eb8SDeepak Katragadda },
12262a1d7eb8SDeepak Katragadda },
12272a1d7eb8SDeepak Katragadda };
12282a1d7eb8SDeepak Katragadda
12292a1d7eb8SDeepak Katragadda /*
12302a1d7eb8SDeepak Katragadda * Clock ON depends on external parent 'config noc', so cant poll
12312a1d7eb8SDeepak Katragadda * delay and also mark as crtitical for camss boot
12322a1d7eb8SDeepak Katragadda */
12332a1d7eb8SDeepak Katragadda static struct clk_branch gcc_camera_ahb_clk = {
12342a1d7eb8SDeepak Katragadda .halt_reg = 0xb008,
12352a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
12362a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb008,
12372a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
12382a1d7eb8SDeepak Katragadda .clkr = {
12392a1d7eb8SDeepak Katragadda .enable_reg = 0xb008,
12402a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12412a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12422a1d7eb8SDeepak Katragadda .name = "gcc_camera_ahb_clk",
12432a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
12442a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12452a1d7eb8SDeepak Katragadda },
12462a1d7eb8SDeepak Katragadda },
12472a1d7eb8SDeepak Katragadda };
12482a1d7eb8SDeepak Katragadda
12492a1d7eb8SDeepak Katragadda static struct clk_branch gcc_camera_hf_axi_clk = {
12502a1d7eb8SDeepak Katragadda .halt_reg = 0xb030,
12512a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
12522a1d7eb8SDeepak Katragadda .clkr = {
12532a1d7eb8SDeepak Katragadda .enable_reg = 0xb030,
12542a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12552a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12562a1d7eb8SDeepak Katragadda .name = "gcc_camera_hf_axi_clk",
12572a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12582a1d7eb8SDeepak Katragadda },
12592a1d7eb8SDeepak Katragadda },
12602a1d7eb8SDeepak Katragadda };
12612a1d7eb8SDeepak Katragadda
12622a1d7eb8SDeepak Katragadda static struct clk_branch gcc_camera_sf_axi_clk = {
12632a1d7eb8SDeepak Katragadda .halt_reg = 0xb034,
12642a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
12652a1d7eb8SDeepak Katragadda .clkr = {
12662a1d7eb8SDeepak Katragadda .enable_reg = 0xb034,
12672a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12682a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12692a1d7eb8SDeepak Katragadda .name = "gcc_camera_sf_axi_clk",
12702a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12712a1d7eb8SDeepak Katragadda },
12722a1d7eb8SDeepak Katragadda },
12732a1d7eb8SDeepak Katragadda };
12742a1d7eb8SDeepak Katragadda
12752a1d7eb8SDeepak Katragadda /* XO critical input to camss, so no need to poll */
12762a1d7eb8SDeepak Katragadda static struct clk_branch gcc_camera_xo_clk = {
12772a1d7eb8SDeepak Katragadda .halt_reg = 0xb044,
12782a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
12792a1d7eb8SDeepak Katragadda .clkr = {
12802a1d7eb8SDeepak Katragadda .enable_reg = 0xb044,
12812a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12822a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12832a1d7eb8SDeepak Katragadda .name = "gcc_camera_xo_clk",
12842a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
12852a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
12862a1d7eb8SDeepak Katragadda },
12872a1d7eb8SDeepak Katragadda },
12882a1d7eb8SDeepak Katragadda };
12892a1d7eb8SDeepak Katragadda
12902a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
12912a1d7eb8SDeepak Katragadda .halt_reg = 0xf078,
12922a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
12932a1d7eb8SDeepak Katragadda .clkr = {
12942a1d7eb8SDeepak Katragadda .enable_reg = 0xf078,
12952a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
12962a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
12972a1d7eb8SDeepak Katragadda .name = "gcc_cfg_noc_usb3_prim_axi_clk",
12982a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
12992a1d7eb8SDeepak Katragadda &gcc_usb30_prim_master_clk_src.clkr.hw },
13002a1d7eb8SDeepak Katragadda .num_parents = 1,
13012a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
13022a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13032a1d7eb8SDeepak Katragadda },
13042a1d7eb8SDeepak Katragadda },
13052a1d7eb8SDeepak Katragadda };
13062a1d7eb8SDeepak Katragadda
13072a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
13082a1d7eb8SDeepak Katragadda .halt_reg = 0x10078,
13092a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
13102a1d7eb8SDeepak Katragadda .clkr = {
13112a1d7eb8SDeepak Katragadda .enable_reg = 0x10078,
13122a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
13132a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13142a1d7eb8SDeepak Katragadda .name = "gcc_cfg_noc_usb3_sec_axi_clk",
13152a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
13162a1d7eb8SDeepak Katragadda &gcc_usb30_sec_master_clk_src.clkr.hw },
13172a1d7eb8SDeepak Katragadda .num_parents = 1,
13182a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
13192a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13202a1d7eb8SDeepak Katragadda },
13212a1d7eb8SDeepak Katragadda },
13222a1d7eb8SDeepak Katragadda };
13232a1d7eb8SDeepak Katragadda
13242a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cpuss_ahb_clk = {
13252a1d7eb8SDeepak Katragadda .halt_reg = 0x48000,
13262a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
13272a1d7eb8SDeepak Katragadda .clkr = {
13282a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
13292a1d7eb8SDeepak Katragadda .enable_mask = BIT(21),
13302a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13312a1d7eb8SDeepak Katragadda .name = "gcc_cpuss_ahb_clk",
13322a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
13332a1d7eb8SDeepak Katragadda &gcc_cpuss_ahb_clk_src.clkr.hw },
13342a1d7eb8SDeepak Katragadda .num_parents = 1,
13352a1d7eb8SDeepak Katragadda /* required for cpuss */
13362a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
13372a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13382a1d7eb8SDeepak Katragadda },
13392a1d7eb8SDeepak Katragadda },
13402a1d7eb8SDeepak Katragadda };
13412a1d7eb8SDeepak Katragadda
13422a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cpuss_dvm_bus_clk = {
13432a1d7eb8SDeepak Katragadda .halt_reg = 0x48190,
13442a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
13452a1d7eb8SDeepak Katragadda .clkr = {
13462a1d7eb8SDeepak Katragadda .enable_reg = 0x48190,
13472a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
13482a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13492a1d7eb8SDeepak Katragadda .name = "gcc_cpuss_dvm_bus_clk",
13502a1d7eb8SDeepak Katragadda /* required for cpuss */
13512a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
13522a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13532a1d7eb8SDeepak Katragadda },
13542a1d7eb8SDeepak Katragadda },
13552a1d7eb8SDeepak Katragadda };
13562a1d7eb8SDeepak Katragadda
13572a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cpuss_gnoc_clk = {
13582a1d7eb8SDeepak Katragadda .halt_reg = 0x48004,
13592a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
13602a1d7eb8SDeepak Katragadda .hwcg_reg = 0x48004,
13612a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
13622a1d7eb8SDeepak Katragadda .clkr = {
13632a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
13642a1d7eb8SDeepak Katragadda .enable_mask = BIT(22),
13652a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13662a1d7eb8SDeepak Katragadda .name = "gcc_cpuss_gnoc_clk",
13672a1d7eb8SDeepak Katragadda /* required for cpuss */
13682a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
13692a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13702a1d7eb8SDeepak Katragadda },
13712a1d7eb8SDeepak Katragadda },
13722a1d7eb8SDeepak Katragadda };
13732a1d7eb8SDeepak Katragadda
13742a1d7eb8SDeepak Katragadda static struct clk_branch gcc_cpuss_rbcpr_clk = {
13752a1d7eb8SDeepak Katragadda .halt_reg = 0x48008,
13762a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
13772a1d7eb8SDeepak Katragadda .clkr = {
13782a1d7eb8SDeepak Katragadda .enable_reg = 0x48008,
13792a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
13802a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13812a1d7eb8SDeepak Katragadda .name = "gcc_cpuss_rbcpr_clk",
13822a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13832a1d7eb8SDeepak Katragadda },
13842a1d7eb8SDeepak Katragadda },
13852a1d7eb8SDeepak Katragadda };
13862a1d7eb8SDeepak Katragadda
13872a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ddrss_gpu_axi_clk = {
13882a1d7eb8SDeepak Katragadda .halt_reg = 0x71154,
13892a1d7eb8SDeepak Katragadda .halt_check = BRANCH_VOTED,
13902a1d7eb8SDeepak Katragadda .clkr = {
13912a1d7eb8SDeepak Katragadda .enable_reg = 0x71154,
13922a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
13932a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
13942a1d7eb8SDeepak Katragadda .name = "gcc_ddrss_gpu_axi_clk",
13952a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
13962a1d7eb8SDeepak Katragadda },
13972a1d7eb8SDeepak Katragadda },
13982a1d7eb8SDeepak Katragadda };
13992a1d7eb8SDeepak Katragadda
14002a1d7eb8SDeepak Katragadda /*
14012a1d7eb8SDeepak Katragadda * Clock ON depends on external parent 'config noc', so cant poll
14022a1d7eb8SDeepak Katragadda * delay and also mark as crtitical for disp boot
14032a1d7eb8SDeepak Katragadda */
14042a1d7eb8SDeepak Katragadda static struct clk_branch gcc_disp_ahb_clk = {
14052a1d7eb8SDeepak Katragadda .halt_reg = 0xb00c,
14062a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
14072a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb00c,
14082a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
14092a1d7eb8SDeepak Katragadda .clkr = {
14102a1d7eb8SDeepak Katragadda .enable_reg = 0xb00c,
14112a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14122a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14132a1d7eb8SDeepak Katragadda .name = "gcc_disp_ahb_clk",
14142a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
14152a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14162a1d7eb8SDeepak Katragadda },
14172a1d7eb8SDeepak Katragadda },
14182a1d7eb8SDeepak Katragadda };
14192a1d7eb8SDeepak Katragadda
14202a1d7eb8SDeepak Katragadda static struct clk_branch gcc_disp_hf_axi_clk = {
14212a1d7eb8SDeepak Katragadda .halt_reg = 0xb038,
14222a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
14232a1d7eb8SDeepak Katragadda .clkr = {
14242a1d7eb8SDeepak Katragadda .enable_reg = 0xb038,
14252a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14262a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14272a1d7eb8SDeepak Katragadda .name = "gcc_disp_hf_axi_clk",
14282a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14292a1d7eb8SDeepak Katragadda },
14302a1d7eb8SDeepak Katragadda },
14312a1d7eb8SDeepak Katragadda };
14322a1d7eb8SDeepak Katragadda
14332a1d7eb8SDeepak Katragadda static struct clk_branch gcc_disp_sf_axi_clk = {
14342a1d7eb8SDeepak Katragadda .halt_reg = 0xb03c,
14352a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
14362a1d7eb8SDeepak Katragadda .clkr = {
14372a1d7eb8SDeepak Katragadda .enable_reg = 0xb03c,
14382a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14392a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14402a1d7eb8SDeepak Katragadda .name = "gcc_disp_sf_axi_clk",
14412a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14422a1d7eb8SDeepak Katragadda },
14432a1d7eb8SDeepak Katragadda },
14442a1d7eb8SDeepak Katragadda };
14452a1d7eb8SDeepak Katragadda
14462a1d7eb8SDeepak Katragadda /* XO critical input to disp, so no need to poll */
14472a1d7eb8SDeepak Katragadda static struct clk_branch gcc_disp_xo_clk = {
14482a1d7eb8SDeepak Katragadda .halt_reg = 0xb048,
14492a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
14502a1d7eb8SDeepak Katragadda .clkr = {
14512a1d7eb8SDeepak Katragadda .enable_reg = 0xb048,
14522a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14532a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14542a1d7eb8SDeepak Katragadda .name = "gcc_disp_xo_clk",
14552a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
14562a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14572a1d7eb8SDeepak Katragadda },
14582a1d7eb8SDeepak Katragadda },
14592a1d7eb8SDeepak Katragadda };
14602a1d7eb8SDeepak Katragadda
14612a1d7eb8SDeepak Katragadda static struct clk_branch gcc_emac_axi_clk = {
14622a1d7eb8SDeepak Katragadda .halt_reg = 0x6010,
14632a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
14642a1d7eb8SDeepak Katragadda .clkr = {
14652a1d7eb8SDeepak Katragadda .enable_reg = 0x6010,
14662a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14672a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14682a1d7eb8SDeepak Katragadda .name = "gcc_emac_axi_clk",
14692a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14702a1d7eb8SDeepak Katragadda },
14712a1d7eb8SDeepak Katragadda },
14722a1d7eb8SDeepak Katragadda };
14732a1d7eb8SDeepak Katragadda
14742a1d7eb8SDeepak Katragadda static struct clk_branch gcc_emac_ptp_clk = {
14752a1d7eb8SDeepak Katragadda .halt_reg = 0x6034,
14762a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
14772a1d7eb8SDeepak Katragadda .clkr = {
14782a1d7eb8SDeepak Katragadda .enable_reg = 0x6034,
14792a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14802a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14812a1d7eb8SDeepak Katragadda .name = "gcc_emac_ptp_clk",
14822a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
14832a1d7eb8SDeepak Katragadda &gcc_emac_ptp_clk_src.clkr.hw },
14842a1d7eb8SDeepak Katragadda .num_parents = 1,
14852a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
14862a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
14872a1d7eb8SDeepak Katragadda },
14882a1d7eb8SDeepak Katragadda },
14892a1d7eb8SDeepak Katragadda };
14902a1d7eb8SDeepak Katragadda
14912a1d7eb8SDeepak Katragadda static struct clk_branch gcc_emac_rgmii_clk = {
14922a1d7eb8SDeepak Katragadda .halt_reg = 0x6018,
14932a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
14942a1d7eb8SDeepak Katragadda .clkr = {
14952a1d7eb8SDeepak Katragadda .enable_reg = 0x6018,
14962a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
14972a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
14982a1d7eb8SDeepak Katragadda .name = "gcc_emac_rgmii_clk",
14992a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
15002a1d7eb8SDeepak Katragadda &gcc_emac_rgmii_clk_src.clkr.hw },
15012a1d7eb8SDeepak Katragadda .num_parents = 1,
15022a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
15032a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15042a1d7eb8SDeepak Katragadda },
15052a1d7eb8SDeepak Katragadda },
15062a1d7eb8SDeepak Katragadda };
15072a1d7eb8SDeepak Katragadda
15082a1d7eb8SDeepak Katragadda static struct clk_branch gcc_emac_slv_ahb_clk = {
15092a1d7eb8SDeepak Katragadda .halt_reg = 0x6014,
15102a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
15112a1d7eb8SDeepak Katragadda .hwcg_reg = 0x6014,
15122a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
15132a1d7eb8SDeepak Katragadda .clkr = {
15142a1d7eb8SDeepak Katragadda .enable_reg = 0x6014,
15152a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
15162a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
15172a1d7eb8SDeepak Katragadda .name = "gcc_emac_slv_ahb_clk",
15182a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15192a1d7eb8SDeepak Katragadda },
15202a1d7eb8SDeepak Katragadda },
15212a1d7eb8SDeepak Katragadda };
15222a1d7eb8SDeepak Katragadda
15232a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gp1_clk = {
15242a1d7eb8SDeepak Katragadda .halt_reg = 0x64000,
15252a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
15262a1d7eb8SDeepak Katragadda .clkr = {
15272a1d7eb8SDeepak Katragadda .enable_reg = 0x64000,
15282a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
15292a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
15302a1d7eb8SDeepak Katragadda .name = "gcc_gp1_clk",
15312a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
15322a1d7eb8SDeepak Katragadda &gcc_gp1_clk_src.clkr.hw },
15332a1d7eb8SDeepak Katragadda .num_parents = 1,
15342a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
15352a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15362a1d7eb8SDeepak Katragadda },
15372a1d7eb8SDeepak Katragadda },
15382a1d7eb8SDeepak Katragadda };
15392a1d7eb8SDeepak Katragadda
15402a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gp2_clk = {
15412a1d7eb8SDeepak Katragadda .halt_reg = 0x65000,
15422a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
15432a1d7eb8SDeepak Katragadda .clkr = {
15442a1d7eb8SDeepak Katragadda .enable_reg = 0x65000,
15452a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
15462a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
15472a1d7eb8SDeepak Katragadda .name = "gcc_gp2_clk",
15482a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
15492a1d7eb8SDeepak Katragadda &gcc_gp2_clk_src.clkr.hw },
15502a1d7eb8SDeepak Katragadda .num_parents = 1,
15512a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
15522a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15532a1d7eb8SDeepak Katragadda },
15542a1d7eb8SDeepak Katragadda },
15552a1d7eb8SDeepak Katragadda };
15562a1d7eb8SDeepak Katragadda
15572a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gp3_clk = {
15582a1d7eb8SDeepak Katragadda .halt_reg = 0x66000,
15592a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
15602a1d7eb8SDeepak Katragadda .clkr = {
15612a1d7eb8SDeepak Katragadda .enable_reg = 0x66000,
15622a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
15632a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
15642a1d7eb8SDeepak Katragadda .name = "gcc_gp3_clk",
15652a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
15662a1d7eb8SDeepak Katragadda &gcc_gp3_clk_src.clkr.hw },
15672a1d7eb8SDeepak Katragadda .num_parents = 1,
15682a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
15692a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15702a1d7eb8SDeepak Katragadda },
15712a1d7eb8SDeepak Katragadda },
15722a1d7eb8SDeepak Katragadda };
15732a1d7eb8SDeepak Katragadda
15742a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gpu_cfg_ahb_clk = {
15752a1d7eb8SDeepak Katragadda .halt_reg = 0x71004,
15762a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
15772a1d7eb8SDeepak Katragadda .hwcg_reg = 0x71004,
15782a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
15792a1d7eb8SDeepak Katragadda .clkr = {
15802a1d7eb8SDeepak Katragadda .enable_reg = 0x71004,
15812a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
15822a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
15832a1d7eb8SDeepak Katragadda .name = "gcc_gpu_cfg_ahb_clk",
15842a1d7eb8SDeepak Katragadda /* required for gpu */
15852a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
15862a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
15872a1d7eb8SDeepak Katragadda },
15882a1d7eb8SDeepak Katragadda },
15892a1d7eb8SDeepak Katragadda };
15902a1d7eb8SDeepak Katragadda
1591f73a4230SVinod Koul static struct clk_branch gcc_gpu_gpll0_clk_src = {
1592667f39b5SJonathan Marek .halt_check = BRANCH_HALT_SKIP,
1593f73a4230SVinod Koul .clkr = {
1594f73a4230SVinod Koul .enable_reg = 0x52004,
1595f73a4230SVinod Koul .enable_mask = BIT(15),
1596f73a4230SVinod Koul .hw.init = &(struct clk_init_data){
1597f73a4230SVinod Koul .name = "gcc_gpu_gpll0_clk_src",
1598f73a4230SVinod Koul .parent_hws = (const struct clk_hw *[]){
1599f73a4230SVinod Koul &gpll0.clkr.hw },
1600f73a4230SVinod Koul .num_parents = 1,
1601f73a4230SVinod Koul .flags = CLK_SET_RATE_PARENT,
1602f73a4230SVinod Koul .ops = &clk_branch2_ops,
1603f73a4230SVinod Koul },
1604f73a4230SVinod Koul },
1605f73a4230SVinod Koul };
1606f73a4230SVinod Koul
1607f73a4230SVinod Koul static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1608667f39b5SJonathan Marek .halt_check = BRANCH_HALT_SKIP,
1609f73a4230SVinod Koul .clkr = {
1610f73a4230SVinod Koul .enable_reg = 0x52004,
1611f73a4230SVinod Koul .enable_mask = BIT(16),
1612f73a4230SVinod Koul .hw.init = &(struct clk_init_data){
1613f73a4230SVinod Koul .name = "gcc_gpu_gpll0_div_clk_src",
1614f73a4230SVinod Koul .parent_hws = (const struct clk_hw *[]){
1615667f39b5SJonathan Marek &gpll0_out_even.clkr.hw },
1616f73a4230SVinod Koul .num_parents = 1,
1617f73a4230SVinod Koul .flags = CLK_SET_RATE_PARENT,
1618f73a4230SVinod Koul .ops = &clk_branch2_ops,
1619f73a4230SVinod Koul },
1620f73a4230SVinod Koul },
1621f73a4230SVinod Koul };
1622f73a4230SVinod Koul
16232a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gpu_iref_clk = {
16242a1d7eb8SDeepak Katragadda .halt_reg = 0x8c010,
16252a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
16262a1d7eb8SDeepak Katragadda .clkr = {
16272a1d7eb8SDeepak Katragadda .enable_reg = 0x8c010,
16282a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16292a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16302a1d7eb8SDeepak Katragadda .name = "gcc_gpu_iref_clk",
16312a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
16322a1d7eb8SDeepak Katragadda },
16332a1d7eb8SDeepak Katragadda },
16342a1d7eb8SDeepak Katragadda };
16352a1d7eb8SDeepak Katragadda
16362a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
16372a1d7eb8SDeepak Katragadda .halt_reg = 0x7100c,
16382a1d7eb8SDeepak Katragadda .halt_check = BRANCH_VOTED,
16392a1d7eb8SDeepak Katragadda .clkr = {
16402a1d7eb8SDeepak Katragadda .enable_reg = 0x7100c,
16412a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16422a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16432a1d7eb8SDeepak Katragadda .name = "gcc_gpu_memnoc_gfx_clk",
16442a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
16452a1d7eb8SDeepak Katragadda },
16462a1d7eb8SDeepak Katragadda },
16472a1d7eb8SDeepak Katragadda };
16482a1d7eb8SDeepak Katragadda
16492a1d7eb8SDeepak Katragadda static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
16502a1d7eb8SDeepak Katragadda .halt_reg = 0x71018,
16512a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
16522a1d7eb8SDeepak Katragadda .clkr = {
16532a1d7eb8SDeepak Katragadda .enable_reg = 0x71018,
16542a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16552a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16562a1d7eb8SDeepak Katragadda .name = "gcc_gpu_snoc_dvm_gfx_clk",
16572a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
16582a1d7eb8SDeepak Katragadda },
16592a1d7eb8SDeepak Katragadda },
16602a1d7eb8SDeepak Katragadda };
16612a1d7eb8SDeepak Katragadda
16622a1d7eb8SDeepak Katragadda static struct clk_branch gcc_npu_at_clk = {
16632a1d7eb8SDeepak Katragadda .halt_reg = 0x4d010,
16642a1d7eb8SDeepak Katragadda .halt_check = BRANCH_VOTED,
16652a1d7eb8SDeepak Katragadda .clkr = {
16662a1d7eb8SDeepak Katragadda .enable_reg = 0x4d010,
16672a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16682a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16692a1d7eb8SDeepak Katragadda .name = "gcc_npu_at_clk",
16702a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
16712a1d7eb8SDeepak Katragadda },
16722a1d7eb8SDeepak Katragadda },
16732a1d7eb8SDeepak Katragadda };
16742a1d7eb8SDeepak Katragadda
16752a1d7eb8SDeepak Katragadda static struct clk_branch gcc_npu_axi_clk = {
16762a1d7eb8SDeepak Katragadda .halt_reg = 0x4d008,
16772a1d7eb8SDeepak Katragadda .halt_check = BRANCH_VOTED,
16782a1d7eb8SDeepak Katragadda .clkr = {
16792a1d7eb8SDeepak Katragadda .enable_reg = 0x4d008,
16802a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16812a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16822a1d7eb8SDeepak Katragadda .name = "gcc_npu_axi_clk",
16832a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
16842a1d7eb8SDeepak Katragadda },
16852a1d7eb8SDeepak Katragadda },
16862a1d7eb8SDeepak Katragadda };
16872a1d7eb8SDeepak Katragadda
16882a1d7eb8SDeepak Katragadda static struct clk_branch gcc_npu_cfg_ahb_clk = {
16892a1d7eb8SDeepak Katragadda .halt_reg = 0x4d004,
16902a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
16912a1d7eb8SDeepak Katragadda .hwcg_reg = 0x4d004,
16922a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
16932a1d7eb8SDeepak Katragadda .clkr = {
16942a1d7eb8SDeepak Katragadda .enable_reg = 0x4d004,
16952a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
16962a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
16972a1d7eb8SDeepak Katragadda .name = "gcc_npu_cfg_ahb_clk",
16982a1d7eb8SDeepak Katragadda /* required for npu */
16992a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
17002a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
17012a1d7eb8SDeepak Katragadda },
17022a1d7eb8SDeepak Katragadda },
17032a1d7eb8SDeepak Katragadda };
17042a1d7eb8SDeepak Katragadda
1705f73a4230SVinod Koul static struct clk_branch gcc_npu_gpll0_clk_src = {
1706667f39b5SJonathan Marek .halt_check = BRANCH_HALT_SKIP,
1707f73a4230SVinod Koul .clkr = {
1708f73a4230SVinod Koul .enable_reg = 0x52004,
1709f73a4230SVinod Koul .enable_mask = BIT(18),
1710f73a4230SVinod Koul .hw.init = &(struct clk_init_data){
1711f73a4230SVinod Koul .name = "gcc_npu_gpll0_clk_src",
1712f73a4230SVinod Koul .parent_hws = (const struct clk_hw *[]){
1713f73a4230SVinod Koul &gpll0.clkr.hw },
1714f73a4230SVinod Koul .num_parents = 1,
1715f73a4230SVinod Koul .flags = CLK_SET_RATE_PARENT,
1716f73a4230SVinod Koul .ops = &clk_branch2_ops,
1717f73a4230SVinod Koul },
1718f73a4230SVinod Koul },
1719f73a4230SVinod Koul };
1720f73a4230SVinod Koul
1721f73a4230SVinod Koul static struct clk_branch gcc_npu_gpll0_div_clk_src = {
1722667f39b5SJonathan Marek .halt_check = BRANCH_HALT_SKIP,
1723f73a4230SVinod Koul .clkr = {
1724f73a4230SVinod Koul .enable_reg = 0x52004,
1725f73a4230SVinod Koul .enable_mask = BIT(19),
1726f73a4230SVinod Koul .hw.init = &(struct clk_init_data){
1727f73a4230SVinod Koul .name = "gcc_npu_gpll0_div_clk_src",
1728f73a4230SVinod Koul .parent_hws = (const struct clk_hw *[]){
1729667f39b5SJonathan Marek &gpll0_out_even.clkr.hw },
1730f73a4230SVinod Koul .num_parents = 1,
1731f73a4230SVinod Koul .flags = CLK_SET_RATE_PARENT,
1732f73a4230SVinod Koul .ops = &clk_branch2_ops,
1733f73a4230SVinod Koul },
1734f73a4230SVinod Koul },
1735f73a4230SVinod Koul };
1736f73a4230SVinod Koul
17372a1d7eb8SDeepak Katragadda static struct clk_branch gcc_npu_trig_clk = {
17382a1d7eb8SDeepak Katragadda .halt_reg = 0x4d00c,
17392a1d7eb8SDeepak Katragadda .halt_check = BRANCH_VOTED,
17402a1d7eb8SDeepak Katragadda .clkr = {
17412a1d7eb8SDeepak Katragadda .enable_reg = 0x4d00c,
17422a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
17432a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
17442a1d7eb8SDeepak Katragadda .name = "gcc_npu_trig_clk",
17452a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
17462a1d7eb8SDeepak Katragadda },
17472a1d7eb8SDeepak Katragadda },
17482a1d7eb8SDeepak Katragadda };
17492a1d7eb8SDeepak Katragadda
17502a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie0_phy_refgen_clk = {
17512a1d7eb8SDeepak Katragadda .halt_reg = 0x6f02c,
17522a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
17532a1d7eb8SDeepak Katragadda .clkr = {
17542a1d7eb8SDeepak Katragadda .enable_reg = 0x6f02c,
17552a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
17562a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
17572a1d7eb8SDeepak Katragadda .name = "gcc_pcie0_phy_refgen_clk",
17582a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
17592a1d7eb8SDeepak Katragadda &gcc_pcie_phy_refgen_clk_src.clkr.hw },
17602a1d7eb8SDeepak Katragadda .num_parents = 1,
17612a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
17622a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
17632a1d7eb8SDeepak Katragadda },
17642a1d7eb8SDeepak Katragadda },
17652a1d7eb8SDeepak Katragadda };
17662a1d7eb8SDeepak Katragadda
17672a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie1_phy_refgen_clk = {
17682a1d7eb8SDeepak Katragadda .halt_reg = 0x6f030,
17692a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
17702a1d7eb8SDeepak Katragadda .clkr = {
17712a1d7eb8SDeepak Katragadda .enable_reg = 0x6f030,
17722a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
17732a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
17742a1d7eb8SDeepak Katragadda .name = "gcc_pcie1_phy_refgen_clk",
17752a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
17762a1d7eb8SDeepak Katragadda &gcc_pcie_phy_refgen_clk_src.clkr.hw },
17772a1d7eb8SDeepak Katragadda .num_parents = 1,
17782a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
17792a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
17802a1d7eb8SDeepak Katragadda },
17812a1d7eb8SDeepak Katragadda },
17822a1d7eb8SDeepak Katragadda };
17832a1d7eb8SDeepak Katragadda
17842a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_aux_clk = {
17852a1d7eb8SDeepak Katragadda .halt_reg = 0x6b020,
17862a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
17872a1d7eb8SDeepak Katragadda .clkr = {
17882a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
17892a1d7eb8SDeepak Katragadda .enable_mask = BIT(3),
17902a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
17912a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_aux_clk",
17922a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
17932a1d7eb8SDeepak Katragadda &gcc_pcie_0_aux_clk_src.clkr.hw },
17942a1d7eb8SDeepak Katragadda .num_parents = 1,
17952a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
17962a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
17972a1d7eb8SDeepak Katragadda },
17982a1d7eb8SDeepak Katragadda },
17992a1d7eb8SDeepak Katragadda };
18002a1d7eb8SDeepak Katragadda
18012a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
18022a1d7eb8SDeepak Katragadda .halt_reg = 0x6b01c,
18032a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
18042a1d7eb8SDeepak Katragadda .hwcg_reg = 0x6b01c,
18052a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
18062a1d7eb8SDeepak Katragadda .clkr = {
18072a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
18082a1d7eb8SDeepak Katragadda .enable_mask = BIT(2),
18092a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18102a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_cfg_ahb_clk",
18112a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18122a1d7eb8SDeepak Katragadda },
18132a1d7eb8SDeepak Katragadda },
18142a1d7eb8SDeepak Katragadda };
18152a1d7eb8SDeepak Katragadda
18162a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_clkref_clk = {
18172a1d7eb8SDeepak Katragadda .halt_reg = 0x8c00c,
18182a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
18192a1d7eb8SDeepak Katragadda .clkr = {
18202a1d7eb8SDeepak Katragadda .enable_reg = 0x8c00c,
18212a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
18222a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18232a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_clkref_clk",
18242a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18252a1d7eb8SDeepak Katragadda },
18262a1d7eb8SDeepak Katragadda },
18272a1d7eb8SDeepak Katragadda };
18282a1d7eb8SDeepak Katragadda
18292a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
18302a1d7eb8SDeepak Katragadda .halt_reg = 0x6b018,
18312a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
18322a1d7eb8SDeepak Katragadda .clkr = {
18332a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
18342a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
18352a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18362a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_mstr_axi_clk",
18372a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18382a1d7eb8SDeepak Katragadda },
18392a1d7eb8SDeepak Katragadda },
18402a1d7eb8SDeepak Katragadda };
18412a1d7eb8SDeepak Katragadda
18422a1d7eb8SDeepak Katragadda /* Clock ON depends on external parent 'PIPE' clock, so dont poll */
18432a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_pipe_clk = {
18442a1d7eb8SDeepak Katragadda .halt_reg = 0x6b024,
18452a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
18462a1d7eb8SDeepak Katragadda .clkr = {
18472a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
18482a1d7eb8SDeepak Katragadda .enable_mask = BIT(4),
18492a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18502a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_pipe_clk",
18512a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18522a1d7eb8SDeepak Katragadda },
18532a1d7eb8SDeepak Katragadda },
18542a1d7eb8SDeepak Katragadda };
18552a1d7eb8SDeepak Katragadda
18562a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_slv_axi_clk = {
18572a1d7eb8SDeepak Katragadda .halt_reg = 0x6b014,
18582a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
18592a1d7eb8SDeepak Katragadda .hwcg_reg = 0x6b014,
18602a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
18612a1d7eb8SDeepak Katragadda .clkr = {
18622a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
18632a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
18642a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18652a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_slv_axi_clk",
18662a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18672a1d7eb8SDeepak Katragadda },
18682a1d7eb8SDeepak Katragadda },
18692a1d7eb8SDeepak Katragadda };
18702a1d7eb8SDeepak Katragadda
18712a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
18722a1d7eb8SDeepak Katragadda .halt_reg = 0x6b010,
18732a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
18742a1d7eb8SDeepak Katragadda .clkr = {
18752a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
18762a1d7eb8SDeepak Katragadda .enable_mask = BIT(5),
18772a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18782a1d7eb8SDeepak Katragadda .name = "gcc_pcie_0_slv_q2a_axi_clk",
18792a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18802a1d7eb8SDeepak Katragadda },
18812a1d7eb8SDeepak Katragadda },
18822a1d7eb8SDeepak Katragadda };
18832a1d7eb8SDeepak Katragadda
18842a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_aux_clk = {
18852a1d7eb8SDeepak Katragadda .halt_reg = 0x8d020,
18862a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
18872a1d7eb8SDeepak Katragadda .clkr = {
18882a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
18892a1d7eb8SDeepak Katragadda .enable_mask = BIT(29),
18902a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
18912a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_aux_clk",
18922a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
18932a1d7eb8SDeepak Katragadda &gcc_pcie_1_aux_clk_src.clkr.hw },
18942a1d7eb8SDeepak Katragadda .num_parents = 1,
18952a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
18962a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
18972a1d7eb8SDeepak Katragadda },
18982a1d7eb8SDeepak Katragadda },
18992a1d7eb8SDeepak Katragadda };
19002a1d7eb8SDeepak Katragadda
19012a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
19022a1d7eb8SDeepak Katragadda .halt_reg = 0x8d01c,
19032a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
19042a1d7eb8SDeepak Katragadda .hwcg_reg = 0x8d01c,
19052a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
19062a1d7eb8SDeepak Katragadda .clkr = {
19072a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
19082a1d7eb8SDeepak Katragadda .enable_mask = BIT(28),
19092a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19102a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_cfg_ahb_clk",
19112a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19122a1d7eb8SDeepak Katragadda },
19132a1d7eb8SDeepak Katragadda },
19142a1d7eb8SDeepak Katragadda };
19152a1d7eb8SDeepak Katragadda
19162a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_clkref_clk = {
19172a1d7eb8SDeepak Katragadda .halt_reg = 0x8c02c,
19182a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
19192a1d7eb8SDeepak Katragadda .clkr = {
19202a1d7eb8SDeepak Katragadda .enable_reg = 0x8c02c,
19212a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
19222a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19232a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_clkref_clk",
19242a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19252a1d7eb8SDeepak Katragadda },
19262a1d7eb8SDeepak Katragadda },
19272a1d7eb8SDeepak Katragadda };
19282a1d7eb8SDeepak Katragadda
19292a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
19302a1d7eb8SDeepak Katragadda .halt_reg = 0x8d018,
19312a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
19322a1d7eb8SDeepak Katragadda .clkr = {
19332a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
19342a1d7eb8SDeepak Katragadda .enable_mask = BIT(27),
19352a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19362a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_mstr_axi_clk",
19372a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19382a1d7eb8SDeepak Katragadda },
19392a1d7eb8SDeepak Katragadda },
19402a1d7eb8SDeepak Katragadda };
19412a1d7eb8SDeepak Katragadda
19422a1d7eb8SDeepak Katragadda /* Clock ON depends on external parent 'PIPE' clock, so dont poll */
19432a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_pipe_clk = {
19442a1d7eb8SDeepak Katragadda .halt_reg = 0x8d024,
19452a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
19462a1d7eb8SDeepak Katragadda .clkr = {
19472a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
19482a1d7eb8SDeepak Katragadda .enable_mask = BIT(30),
19492a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19502a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_pipe_clk",
19512a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19522a1d7eb8SDeepak Katragadda },
19532a1d7eb8SDeepak Katragadda },
19542a1d7eb8SDeepak Katragadda };
19552a1d7eb8SDeepak Katragadda
19562a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_slv_axi_clk = {
19572a1d7eb8SDeepak Katragadda .halt_reg = 0x8d014,
19582a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
19592a1d7eb8SDeepak Katragadda .hwcg_reg = 0x8d014,
19602a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
19612a1d7eb8SDeepak Katragadda .clkr = {
19622a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
19632a1d7eb8SDeepak Katragadda .enable_mask = BIT(26),
19642a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19652a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_slv_axi_clk",
19662a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19672a1d7eb8SDeepak Katragadda },
19682a1d7eb8SDeepak Katragadda },
19692a1d7eb8SDeepak Katragadda };
19702a1d7eb8SDeepak Katragadda
19712a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
19722a1d7eb8SDeepak Katragadda .halt_reg = 0x8d010,
19732a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
19742a1d7eb8SDeepak Katragadda .clkr = {
19752a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
19762a1d7eb8SDeepak Katragadda .enable_mask = BIT(25),
19772a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19782a1d7eb8SDeepak Katragadda .name = "gcc_pcie_1_slv_q2a_axi_clk",
19792a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19802a1d7eb8SDeepak Katragadda },
19812a1d7eb8SDeepak Katragadda },
19822a1d7eb8SDeepak Katragadda };
19832a1d7eb8SDeepak Katragadda
19842a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pcie_phy_aux_clk = {
19852a1d7eb8SDeepak Katragadda .halt_reg = 0x6f004,
19862a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
19872a1d7eb8SDeepak Katragadda .clkr = {
19882a1d7eb8SDeepak Katragadda .enable_reg = 0x6f004,
19892a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
19902a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
19912a1d7eb8SDeepak Katragadda .name = "gcc_pcie_phy_aux_clk",
19922a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
19932a1d7eb8SDeepak Katragadda &gcc_pcie_0_aux_clk_src.clkr.hw },
19942a1d7eb8SDeepak Katragadda .num_parents = 1,
19952a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
19962a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
19972a1d7eb8SDeepak Katragadda },
19982a1d7eb8SDeepak Katragadda },
19992a1d7eb8SDeepak Katragadda };
20002a1d7eb8SDeepak Katragadda
20012a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pdm2_clk = {
20022a1d7eb8SDeepak Katragadda .halt_reg = 0x3300c,
20032a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20042a1d7eb8SDeepak Katragadda .clkr = {
20052a1d7eb8SDeepak Katragadda .enable_reg = 0x3300c,
20062a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20072a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20082a1d7eb8SDeepak Katragadda .name = "gcc_pdm2_clk",
20092a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
20102a1d7eb8SDeepak Katragadda &gcc_pdm2_clk_src.clkr.hw },
20112a1d7eb8SDeepak Katragadda .num_parents = 1,
20122a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
20132a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20142a1d7eb8SDeepak Katragadda },
20152a1d7eb8SDeepak Katragadda },
20162a1d7eb8SDeepak Katragadda };
20172a1d7eb8SDeepak Katragadda
20182a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pdm_ahb_clk = {
20192a1d7eb8SDeepak Katragadda .halt_reg = 0x33004,
20202a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20212a1d7eb8SDeepak Katragadda .hwcg_reg = 0x33004,
20222a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
20232a1d7eb8SDeepak Katragadda .clkr = {
20242a1d7eb8SDeepak Katragadda .enable_reg = 0x33004,
20252a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20262a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20272a1d7eb8SDeepak Katragadda .name = "gcc_pdm_ahb_clk",
20282a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20292a1d7eb8SDeepak Katragadda },
20302a1d7eb8SDeepak Katragadda },
20312a1d7eb8SDeepak Katragadda };
20322a1d7eb8SDeepak Katragadda
20332a1d7eb8SDeepak Katragadda static struct clk_branch gcc_pdm_xo4_clk = {
20342a1d7eb8SDeepak Katragadda .halt_reg = 0x33008,
20352a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20362a1d7eb8SDeepak Katragadda .clkr = {
20372a1d7eb8SDeepak Katragadda .enable_reg = 0x33008,
20382a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20392a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20402a1d7eb8SDeepak Katragadda .name = "gcc_pdm_xo4_clk",
20412a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20422a1d7eb8SDeepak Katragadda },
20432a1d7eb8SDeepak Katragadda },
20442a1d7eb8SDeepak Katragadda };
20452a1d7eb8SDeepak Katragadda
20462a1d7eb8SDeepak Katragadda static struct clk_branch gcc_prng_ahb_clk = {
20472a1d7eb8SDeepak Katragadda .halt_reg = 0x34004,
20482a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
20492a1d7eb8SDeepak Katragadda .clkr = {
20502a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
20512a1d7eb8SDeepak Katragadda .enable_mask = BIT(13),
20522a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20532a1d7eb8SDeepak Katragadda .name = "gcc_prng_ahb_clk",
20542a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20552a1d7eb8SDeepak Katragadda },
20562a1d7eb8SDeepak Katragadda },
20572a1d7eb8SDeepak Katragadda };
20582a1d7eb8SDeepak Katragadda
20592a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
20602a1d7eb8SDeepak Katragadda .halt_reg = 0xb018,
20612a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20622a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb018,
20632a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
20642a1d7eb8SDeepak Katragadda .clkr = {
20652a1d7eb8SDeepak Katragadda .enable_reg = 0xb018,
20662a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20672a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20682a1d7eb8SDeepak Katragadda .name = "gcc_qmip_camera_nrt_ahb_clk",
20692a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20702a1d7eb8SDeepak Katragadda },
20712a1d7eb8SDeepak Katragadda },
20722a1d7eb8SDeepak Katragadda };
20732a1d7eb8SDeepak Katragadda
20742a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
20752a1d7eb8SDeepak Katragadda .halt_reg = 0xb01c,
20762a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20772a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb01c,
20782a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
20792a1d7eb8SDeepak Katragadda .clkr = {
20802a1d7eb8SDeepak Katragadda .enable_reg = 0xb01c,
20812a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20822a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20832a1d7eb8SDeepak Katragadda .name = "gcc_qmip_camera_rt_ahb_clk",
20842a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
20852a1d7eb8SDeepak Katragadda },
20862a1d7eb8SDeepak Katragadda },
20872a1d7eb8SDeepak Katragadda };
20882a1d7eb8SDeepak Katragadda
20892a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qmip_disp_ahb_clk = {
20902a1d7eb8SDeepak Katragadda .halt_reg = 0xb020,
20912a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
20922a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb020,
20932a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
20942a1d7eb8SDeepak Katragadda .clkr = {
20952a1d7eb8SDeepak Katragadda .enable_reg = 0xb020,
20962a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
20972a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
20982a1d7eb8SDeepak Katragadda .name = "gcc_qmip_disp_ahb_clk",
20992a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21002a1d7eb8SDeepak Katragadda },
21012a1d7eb8SDeepak Katragadda },
21022a1d7eb8SDeepak Katragadda };
21032a1d7eb8SDeepak Katragadda
21042a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
21052a1d7eb8SDeepak Katragadda .halt_reg = 0xb010,
21062a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
21072a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb010,
21082a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
21092a1d7eb8SDeepak Katragadda .clkr = {
21102a1d7eb8SDeepak Katragadda .enable_reg = 0xb010,
21112a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
21122a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21132a1d7eb8SDeepak Katragadda .name = "gcc_qmip_video_cvp_ahb_clk",
21142a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21152a1d7eb8SDeepak Katragadda },
21162a1d7eb8SDeepak Katragadda },
21172a1d7eb8SDeepak Katragadda };
21182a1d7eb8SDeepak Katragadda
21192a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
21202a1d7eb8SDeepak Katragadda .halt_reg = 0xb014,
21212a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
21222a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb014,
21232a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
21242a1d7eb8SDeepak Katragadda .clkr = {
21252a1d7eb8SDeepak Katragadda .enable_reg = 0xb014,
21262a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
21272a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21282a1d7eb8SDeepak Katragadda .name = "gcc_qmip_video_vcodec_ahb_clk",
21292a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21302a1d7eb8SDeepak Katragadda },
21312a1d7eb8SDeepak Katragadda },
21322a1d7eb8SDeepak Katragadda };
21332a1d7eb8SDeepak Katragadda
21342a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {
21352a1d7eb8SDeepak Katragadda .halt_reg = 0x4b000,
21362a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
21372a1d7eb8SDeepak Katragadda .clkr = {
21382a1d7eb8SDeepak Katragadda .enable_reg = 0x4b000,
21392a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
21402a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21412a1d7eb8SDeepak Katragadda .name = "gcc_qspi_cnoc_periph_ahb_clk",
21422a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21432a1d7eb8SDeepak Katragadda },
21442a1d7eb8SDeepak Katragadda },
21452a1d7eb8SDeepak Katragadda };
21462a1d7eb8SDeepak Katragadda
21472a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qspi_core_clk = {
21482a1d7eb8SDeepak Katragadda .halt_reg = 0x4b004,
21492a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
21502a1d7eb8SDeepak Katragadda .clkr = {
21512a1d7eb8SDeepak Katragadda .enable_reg = 0x4b004,
21522a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
21532a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21542a1d7eb8SDeepak Katragadda .name = "gcc_qspi_core_clk",
21552a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
21562a1d7eb8SDeepak Katragadda &gcc_qspi_core_clk_src.clkr.hw },
21572a1d7eb8SDeepak Katragadda .num_parents = 1,
21582a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
21592a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21602a1d7eb8SDeepak Katragadda },
21612a1d7eb8SDeepak Katragadda },
21622a1d7eb8SDeepak Katragadda };
21632a1d7eb8SDeepak Katragadda
21642a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
21652a1d7eb8SDeepak Katragadda .halt_reg = 0x17144,
21662a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
21672a1d7eb8SDeepak Katragadda .clkr = {
21682a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
21692a1d7eb8SDeepak Katragadda .enable_mask = BIT(10),
21702a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21712a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s0_clk",
21722a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
21732a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s0_clk_src.clkr.hw },
21742a1d7eb8SDeepak Katragadda .num_parents = 1,
21752a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
21762a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21772a1d7eb8SDeepak Katragadda },
21782a1d7eb8SDeepak Katragadda },
21792a1d7eb8SDeepak Katragadda };
21802a1d7eb8SDeepak Katragadda
21812a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
21822a1d7eb8SDeepak Katragadda .halt_reg = 0x17274,
21832a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
21842a1d7eb8SDeepak Katragadda .clkr = {
21852a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
21862a1d7eb8SDeepak Katragadda .enable_mask = BIT(11),
21872a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
21882a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s1_clk",
21892a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
21902a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s1_clk_src.clkr.hw },
21912a1d7eb8SDeepak Katragadda .num_parents = 1,
21922a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
21932a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
21942a1d7eb8SDeepak Katragadda },
21952a1d7eb8SDeepak Katragadda },
21962a1d7eb8SDeepak Katragadda };
21972a1d7eb8SDeepak Katragadda
21982a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
21992a1d7eb8SDeepak Katragadda .halt_reg = 0x173a4,
22002a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22012a1d7eb8SDeepak Katragadda .clkr = {
22022a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22032a1d7eb8SDeepak Katragadda .enable_mask = BIT(12),
22042a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22052a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s2_clk",
22062a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22072a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s2_clk_src.clkr.hw },
22082a1d7eb8SDeepak Katragadda .num_parents = 1,
22092a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22102a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22112a1d7eb8SDeepak Katragadda },
22122a1d7eb8SDeepak Katragadda },
22132a1d7eb8SDeepak Katragadda };
22142a1d7eb8SDeepak Katragadda
22152a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
22162a1d7eb8SDeepak Katragadda .halt_reg = 0x174d4,
22172a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22182a1d7eb8SDeepak Katragadda .clkr = {
22192a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22202a1d7eb8SDeepak Katragadda .enable_mask = BIT(13),
22212a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22222a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s3_clk",
22232a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22242a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s3_clk_src.clkr.hw },
22252a1d7eb8SDeepak Katragadda .num_parents = 1,
22262a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22272a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22282a1d7eb8SDeepak Katragadda },
22292a1d7eb8SDeepak Katragadda },
22302a1d7eb8SDeepak Katragadda };
22312a1d7eb8SDeepak Katragadda
22322a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
22332a1d7eb8SDeepak Katragadda .halt_reg = 0x17604,
22342a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22352a1d7eb8SDeepak Katragadda .clkr = {
22362a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22372a1d7eb8SDeepak Katragadda .enable_mask = BIT(14),
22382a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22392a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s4_clk",
22402a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22412a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s4_clk_src.clkr.hw },
22422a1d7eb8SDeepak Katragadda .num_parents = 1,
22432a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22442a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22452a1d7eb8SDeepak Katragadda },
22462a1d7eb8SDeepak Katragadda },
22472a1d7eb8SDeepak Katragadda };
22482a1d7eb8SDeepak Katragadda
22492a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
22502a1d7eb8SDeepak Katragadda .halt_reg = 0x17734,
22512a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22522a1d7eb8SDeepak Katragadda .clkr = {
22532a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22542a1d7eb8SDeepak Katragadda .enable_mask = BIT(15),
22552a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22562a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s5_clk",
22572a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22582a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s5_clk_src.clkr.hw },
22592a1d7eb8SDeepak Katragadda .num_parents = 1,
22602a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22612a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22622a1d7eb8SDeepak Katragadda },
22632a1d7eb8SDeepak Katragadda },
22642a1d7eb8SDeepak Katragadda };
22652a1d7eb8SDeepak Katragadda
22662a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
22672a1d7eb8SDeepak Katragadda .halt_reg = 0x17864,
22682a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22692a1d7eb8SDeepak Katragadda .clkr = {
22702a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22712a1d7eb8SDeepak Katragadda .enable_mask = BIT(16),
22722a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22732a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s6_clk",
22742a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22752a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s6_clk_src.clkr.hw },
22762a1d7eb8SDeepak Katragadda .num_parents = 1,
22772a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22782a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22792a1d7eb8SDeepak Katragadda },
22802a1d7eb8SDeepak Katragadda },
22812a1d7eb8SDeepak Katragadda };
22822a1d7eb8SDeepak Katragadda
22832a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
22842a1d7eb8SDeepak Katragadda .halt_reg = 0x17994,
22852a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
22862a1d7eb8SDeepak Katragadda .clkr = {
22872a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
22882a1d7eb8SDeepak Katragadda .enable_mask = BIT(17),
22892a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
22902a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap0_s7_clk",
22912a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
22922a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap0_s7_clk_src.clkr.hw },
22932a1d7eb8SDeepak Katragadda .num_parents = 1,
22942a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
22952a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
22962a1d7eb8SDeepak Katragadda },
22972a1d7eb8SDeepak Katragadda },
22982a1d7eb8SDeepak Katragadda };
22992a1d7eb8SDeepak Katragadda
23002a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
23012a1d7eb8SDeepak Katragadda .halt_reg = 0x18144,
23022a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23032a1d7eb8SDeepak Katragadda .clkr = {
23042a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23052a1d7eb8SDeepak Katragadda .enable_mask = BIT(22),
23062a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23072a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s0_clk",
23082a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23092a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s0_clk_src.clkr.hw },
23102a1d7eb8SDeepak Katragadda .num_parents = 1,
23112a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23122a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23132a1d7eb8SDeepak Katragadda },
23142a1d7eb8SDeepak Katragadda },
23152a1d7eb8SDeepak Katragadda };
23162a1d7eb8SDeepak Katragadda
23172a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
23182a1d7eb8SDeepak Katragadda .halt_reg = 0x18274,
23192a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23202a1d7eb8SDeepak Katragadda .clkr = {
23212a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23222a1d7eb8SDeepak Katragadda .enable_mask = BIT(23),
23232a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23242a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s1_clk",
23252a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23262a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s1_clk_src.clkr.hw },
23272a1d7eb8SDeepak Katragadda .num_parents = 1,
23282a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23292a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23302a1d7eb8SDeepak Katragadda },
23312a1d7eb8SDeepak Katragadda },
23322a1d7eb8SDeepak Katragadda };
23332a1d7eb8SDeepak Katragadda
23342a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
23352a1d7eb8SDeepak Katragadda .halt_reg = 0x183a4,
23362a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23372a1d7eb8SDeepak Katragadda .clkr = {
23382a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23392a1d7eb8SDeepak Katragadda .enable_mask = BIT(24),
23402a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23412a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s2_clk",
23422a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23432a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s2_clk_src.clkr.hw },
23442a1d7eb8SDeepak Katragadda .num_parents = 1,
23452a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23462a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23472a1d7eb8SDeepak Katragadda },
23482a1d7eb8SDeepak Katragadda },
23492a1d7eb8SDeepak Katragadda };
23502a1d7eb8SDeepak Katragadda
23512a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
23522a1d7eb8SDeepak Katragadda .halt_reg = 0x184d4,
23532a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23542a1d7eb8SDeepak Katragadda .clkr = {
23552a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23562a1d7eb8SDeepak Katragadda .enable_mask = BIT(25),
23572a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23582a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s3_clk",
23592a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23602a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s3_clk_src.clkr.hw },
23612a1d7eb8SDeepak Katragadda .num_parents = 1,
23622a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23632a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23642a1d7eb8SDeepak Katragadda },
23652a1d7eb8SDeepak Katragadda },
23662a1d7eb8SDeepak Katragadda };
23672a1d7eb8SDeepak Katragadda
23682a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
23692a1d7eb8SDeepak Katragadda .halt_reg = 0x18604,
23702a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23712a1d7eb8SDeepak Katragadda .clkr = {
23722a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23732a1d7eb8SDeepak Katragadda .enable_mask = BIT(26),
23742a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23752a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s4_clk",
23762a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23772a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s4_clk_src.clkr.hw },
23782a1d7eb8SDeepak Katragadda .num_parents = 1,
23792a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23802a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23812a1d7eb8SDeepak Katragadda },
23822a1d7eb8SDeepak Katragadda },
23832a1d7eb8SDeepak Katragadda };
23842a1d7eb8SDeepak Katragadda
23852a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
23862a1d7eb8SDeepak Katragadda .halt_reg = 0x18734,
23872a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
23882a1d7eb8SDeepak Katragadda .clkr = {
23892a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
23902a1d7eb8SDeepak Katragadda .enable_mask = BIT(27),
23912a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
23922a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap1_s5_clk",
23932a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
23942a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap1_s5_clk_src.clkr.hw },
23952a1d7eb8SDeepak Katragadda .num_parents = 1,
23962a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
23972a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
23982a1d7eb8SDeepak Katragadda },
23992a1d7eb8SDeepak Katragadda },
24002a1d7eb8SDeepak Katragadda };
24012a1d7eb8SDeepak Katragadda
24022a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
24032a1d7eb8SDeepak Katragadda .halt_reg = 0x1e144,
24042a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24052a1d7eb8SDeepak Katragadda .clkr = {
24062a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24072a1d7eb8SDeepak Katragadda .enable_mask = BIT(4),
24082a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24092a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s0_clk",
24102a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24112a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s0_clk_src.clkr.hw },
24122a1d7eb8SDeepak Katragadda .num_parents = 1,
24132a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24142a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
24152a1d7eb8SDeepak Katragadda },
24162a1d7eb8SDeepak Katragadda },
24172a1d7eb8SDeepak Katragadda };
24182a1d7eb8SDeepak Katragadda
24192a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
24202a1d7eb8SDeepak Katragadda .halt_reg = 0x1e274,
24212a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24222a1d7eb8SDeepak Katragadda .clkr = {
24232a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24242a1d7eb8SDeepak Katragadda .enable_mask = BIT(5),
24252a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24262a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s1_clk",
24272a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24282a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s1_clk_src.clkr.hw },
24292a1d7eb8SDeepak Katragadda .num_parents = 1,
24302a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24312a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
24322a1d7eb8SDeepak Katragadda },
24332a1d7eb8SDeepak Katragadda },
24342a1d7eb8SDeepak Katragadda };
24352a1d7eb8SDeepak Katragadda
24362a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
24372a1d7eb8SDeepak Katragadda .halt_reg = 0x1e3a4,
24382a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24392a1d7eb8SDeepak Katragadda .clkr = {
24402a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24412a1d7eb8SDeepak Katragadda .enable_mask = BIT(6),
24422a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24432a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s2_clk",
24442a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24452a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s2_clk_src.clkr.hw },
24462a1d7eb8SDeepak Katragadda .num_parents = 1,
24472a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24482a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
24492a1d7eb8SDeepak Katragadda },
24502a1d7eb8SDeepak Katragadda },
24512a1d7eb8SDeepak Katragadda };
24522a1d7eb8SDeepak Katragadda
24532a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
24542a1d7eb8SDeepak Katragadda .halt_reg = 0x1e4d4,
24552a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24562a1d7eb8SDeepak Katragadda .clkr = {
24572a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24582a1d7eb8SDeepak Katragadda .enable_mask = BIT(7),
24592a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24602a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s3_clk",
24612a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24622a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s3_clk_src.clkr.hw },
24632a1d7eb8SDeepak Katragadda .num_parents = 1,
24642a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24652a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
24662a1d7eb8SDeepak Katragadda },
24672a1d7eb8SDeepak Katragadda },
24682a1d7eb8SDeepak Katragadda };
24692a1d7eb8SDeepak Katragadda
24702a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
24712a1d7eb8SDeepak Katragadda .halt_reg = 0x1e604,
24722a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24732a1d7eb8SDeepak Katragadda .clkr = {
24742a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24752a1d7eb8SDeepak Katragadda .enable_mask = BIT(8),
24762a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24772a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s4_clk",
24782a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24792a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s4_clk_src.clkr.hw },
24802a1d7eb8SDeepak Katragadda .num_parents = 1,
24812a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24822a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
24832a1d7eb8SDeepak Katragadda },
24842a1d7eb8SDeepak Katragadda },
24852a1d7eb8SDeepak Katragadda };
24862a1d7eb8SDeepak Katragadda
24872a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
24882a1d7eb8SDeepak Katragadda .halt_reg = 0x1e734,
24892a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
24902a1d7eb8SDeepak Katragadda .clkr = {
24912a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
24922a1d7eb8SDeepak Katragadda .enable_mask = BIT(9),
24932a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
24942a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap2_s5_clk",
24952a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
24962a1d7eb8SDeepak Katragadda &gcc_qupv3_wrap2_s5_clk_src.clkr.hw },
24972a1d7eb8SDeepak Katragadda .num_parents = 1,
24982a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
24992a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25002a1d7eb8SDeepak Katragadda },
25012a1d7eb8SDeepak Katragadda },
25022a1d7eb8SDeepak Katragadda };
25032a1d7eb8SDeepak Katragadda
25042a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
25052a1d7eb8SDeepak Katragadda .halt_reg = 0x17004,
25062a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25072a1d7eb8SDeepak Katragadda .clkr = {
25082a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
25092a1d7eb8SDeepak Katragadda .enable_mask = BIT(6),
25102a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25112a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_0_m_ahb_clk",
25122a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25132a1d7eb8SDeepak Katragadda },
25142a1d7eb8SDeepak Katragadda },
25152a1d7eb8SDeepak Katragadda };
25162a1d7eb8SDeepak Katragadda
25172a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
25182a1d7eb8SDeepak Katragadda .halt_reg = 0x17008,
25192a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25202a1d7eb8SDeepak Katragadda .hwcg_reg = 0x17008,
25212a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
25222a1d7eb8SDeepak Katragadda .clkr = {
25232a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
25242a1d7eb8SDeepak Katragadda .enable_mask = BIT(7),
25252a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25262a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_0_s_ahb_clk",
25272a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25282a1d7eb8SDeepak Katragadda },
25292a1d7eb8SDeepak Katragadda },
25302a1d7eb8SDeepak Katragadda };
25312a1d7eb8SDeepak Katragadda
25322a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
25332a1d7eb8SDeepak Katragadda .halt_reg = 0x18004,
25342a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25352a1d7eb8SDeepak Katragadda .clkr = {
25362a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
25372a1d7eb8SDeepak Katragadda .enable_mask = BIT(20),
25382a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25392a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_1_m_ahb_clk",
25402a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25412a1d7eb8SDeepak Katragadda },
25422a1d7eb8SDeepak Katragadda },
25432a1d7eb8SDeepak Katragadda };
25442a1d7eb8SDeepak Katragadda
25452a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
25462a1d7eb8SDeepak Katragadda .halt_reg = 0x18008,
25472a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25482a1d7eb8SDeepak Katragadda .hwcg_reg = 0x18008,
25492a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
25502a1d7eb8SDeepak Katragadda .clkr = {
25512a1d7eb8SDeepak Katragadda .enable_reg = 0x5200c,
25522a1d7eb8SDeepak Katragadda .enable_mask = BIT(21),
25532a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25542a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_1_s_ahb_clk",
25552a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25562a1d7eb8SDeepak Katragadda },
25572a1d7eb8SDeepak Katragadda },
25582a1d7eb8SDeepak Katragadda };
25592a1d7eb8SDeepak Katragadda
25602a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
25612a1d7eb8SDeepak Katragadda .halt_reg = 0x1e004,
25622a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25632a1d7eb8SDeepak Katragadda .clkr = {
25642a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
25652a1d7eb8SDeepak Katragadda .enable_mask = BIT(2),
25662a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25672a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_2_m_ahb_clk",
25682a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25692a1d7eb8SDeepak Katragadda },
25702a1d7eb8SDeepak Katragadda },
25712a1d7eb8SDeepak Katragadda };
25722a1d7eb8SDeepak Katragadda
25732a1d7eb8SDeepak Katragadda static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
25742a1d7eb8SDeepak Katragadda .halt_reg = 0x1e008,
25752a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
25762a1d7eb8SDeepak Katragadda .hwcg_reg = 0x1e008,
25772a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
25782a1d7eb8SDeepak Katragadda .clkr = {
25792a1d7eb8SDeepak Katragadda .enable_reg = 0x52014,
25802a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
25812a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25822a1d7eb8SDeepak Katragadda .name = "gcc_qupv3_wrap_2_s_ahb_clk",
25832a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25842a1d7eb8SDeepak Katragadda },
25852a1d7eb8SDeepak Katragadda },
25862a1d7eb8SDeepak Katragadda };
25872a1d7eb8SDeepak Katragadda
25882a1d7eb8SDeepak Katragadda static struct clk_branch gcc_sdcc2_ahb_clk = {
25892a1d7eb8SDeepak Katragadda .halt_reg = 0x14008,
25902a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
25912a1d7eb8SDeepak Katragadda .clkr = {
25922a1d7eb8SDeepak Katragadda .enable_reg = 0x14008,
25932a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
25942a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
25952a1d7eb8SDeepak Katragadda .name = "gcc_sdcc2_ahb_clk",
25962a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
25972a1d7eb8SDeepak Katragadda },
25982a1d7eb8SDeepak Katragadda },
25992a1d7eb8SDeepak Katragadda };
26002a1d7eb8SDeepak Katragadda
26012a1d7eb8SDeepak Katragadda static struct clk_branch gcc_sdcc2_apps_clk = {
26022a1d7eb8SDeepak Katragadda .halt_reg = 0x14004,
26032a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26042a1d7eb8SDeepak Katragadda .clkr = {
26052a1d7eb8SDeepak Katragadda .enable_reg = 0x14004,
26062a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26072a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26082a1d7eb8SDeepak Katragadda .name = "gcc_sdcc2_apps_clk",
26092a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
26102a1d7eb8SDeepak Katragadda &gcc_sdcc2_apps_clk_src.clkr.hw },
26112a1d7eb8SDeepak Katragadda .num_parents = 1,
26122a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
26132a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26142a1d7eb8SDeepak Katragadda },
26152a1d7eb8SDeepak Katragadda },
26162a1d7eb8SDeepak Katragadda };
26172a1d7eb8SDeepak Katragadda
26182a1d7eb8SDeepak Katragadda static struct clk_branch gcc_sdcc4_ahb_clk = {
26192a1d7eb8SDeepak Katragadda .halt_reg = 0x16008,
26202a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26212a1d7eb8SDeepak Katragadda .clkr = {
26222a1d7eb8SDeepak Katragadda .enable_reg = 0x16008,
26232a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26242a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26252a1d7eb8SDeepak Katragadda .name = "gcc_sdcc4_ahb_clk",
26262a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26272a1d7eb8SDeepak Katragadda },
26282a1d7eb8SDeepak Katragadda },
26292a1d7eb8SDeepak Katragadda };
26302a1d7eb8SDeepak Katragadda
26312a1d7eb8SDeepak Katragadda static struct clk_branch gcc_sdcc4_apps_clk = {
26322a1d7eb8SDeepak Katragadda .halt_reg = 0x16004,
26332a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26342a1d7eb8SDeepak Katragadda .clkr = {
26352a1d7eb8SDeepak Katragadda .enable_reg = 0x16004,
26362a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26372a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26382a1d7eb8SDeepak Katragadda .name = "gcc_sdcc4_apps_clk",
26392a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
26402a1d7eb8SDeepak Katragadda &gcc_sdcc4_apps_clk_src.clkr.hw },
26412a1d7eb8SDeepak Katragadda .num_parents = 1,
26422a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
26432a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26442a1d7eb8SDeepak Katragadda },
26452a1d7eb8SDeepak Katragadda },
26462a1d7eb8SDeepak Katragadda };
26472a1d7eb8SDeepak Katragadda
26482a1d7eb8SDeepak Katragadda static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
26492a1d7eb8SDeepak Katragadda .halt_reg = 0x4819c,
26502a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_VOTED,
26512a1d7eb8SDeepak Katragadda .clkr = {
26522a1d7eb8SDeepak Katragadda .enable_reg = 0x52004,
26532a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26542a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26552a1d7eb8SDeepak Katragadda .name = "gcc_sys_noc_cpuss_ahb_clk",
26562a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
26572a1d7eb8SDeepak Katragadda &gcc_cpuss_ahb_clk_src.clkr.hw },
26582a1d7eb8SDeepak Katragadda .num_parents = 1,
26592a1d7eb8SDeepak Katragadda /* required for cpuss */
26602a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
26612a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26622a1d7eb8SDeepak Katragadda },
26632a1d7eb8SDeepak Katragadda },
26642a1d7eb8SDeepak Katragadda };
26652a1d7eb8SDeepak Katragadda
26662a1d7eb8SDeepak Katragadda static struct clk_branch gcc_tsif_ahb_clk = {
26672a1d7eb8SDeepak Katragadda .halt_reg = 0x36004,
26682a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26692a1d7eb8SDeepak Katragadda .clkr = {
26702a1d7eb8SDeepak Katragadda .enable_reg = 0x36004,
26712a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26722a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26732a1d7eb8SDeepak Katragadda .name = "gcc_tsif_ahb_clk",
26742a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26752a1d7eb8SDeepak Katragadda },
26762a1d7eb8SDeepak Katragadda },
26772a1d7eb8SDeepak Katragadda };
26782a1d7eb8SDeepak Katragadda
26792a1d7eb8SDeepak Katragadda static struct clk_branch gcc_tsif_inactivity_timers_clk = {
26802a1d7eb8SDeepak Katragadda .halt_reg = 0x3600c,
26812a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26822a1d7eb8SDeepak Katragadda .clkr = {
26832a1d7eb8SDeepak Katragadda .enable_reg = 0x3600c,
26842a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26852a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26862a1d7eb8SDeepak Katragadda .name = "gcc_tsif_inactivity_timers_clk",
26872a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
26882a1d7eb8SDeepak Katragadda },
26892a1d7eb8SDeepak Katragadda },
26902a1d7eb8SDeepak Katragadda };
26912a1d7eb8SDeepak Katragadda
26922a1d7eb8SDeepak Katragadda static struct clk_branch gcc_tsif_ref_clk = {
26932a1d7eb8SDeepak Katragadda .halt_reg = 0x36008,
26942a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
26952a1d7eb8SDeepak Katragadda .clkr = {
26962a1d7eb8SDeepak Katragadda .enable_reg = 0x36008,
26972a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
26982a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
26992a1d7eb8SDeepak Katragadda .name = "gcc_tsif_ref_clk",
27002a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
27012a1d7eb8SDeepak Katragadda &gcc_tsif_ref_clk_src.clkr.hw },
27022a1d7eb8SDeepak Katragadda .num_parents = 1,
27032a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
27042a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
27052a1d7eb8SDeepak Katragadda },
27062a1d7eb8SDeepak Katragadda },
27072a1d7eb8SDeepak Katragadda };
27082a1d7eb8SDeepak Katragadda
27092a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_ahb_clk = {
27102a1d7eb8SDeepak Katragadda .halt_reg = 0x75014,
27112a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27122a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75014,
27132a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
27142a1d7eb8SDeepak Katragadda .clkr = {
27152a1d7eb8SDeepak Katragadda .enable_reg = 0x75014,
27162a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
27172a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
27182a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_ahb_clk",
27192a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
27202a1d7eb8SDeepak Katragadda },
27212a1d7eb8SDeepak Katragadda },
27222a1d7eb8SDeepak Katragadda };
27232a1d7eb8SDeepak Katragadda
27242a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_axi_clk = {
27252a1d7eb8SDeepak Katragadda .halt_reg = 0x75010,
27262a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27272a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75010,
27282a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
27292a1d7eb8SDeepak Katragadda .clkr = {
27302a1d7eb8SDeepak Katragadda .enable_reg = 0x75010,
27312a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
27322a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
27332a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_axi_clk",
27342a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
27352a1d7eb8SDeepak Katragadda &gcc_ufs_card_axi_clk_src.clkr.hw },
27362a1d7eb8SDeepak Katragadda .num_parents = 1,
27372a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
27382a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
27392a1d7eb8SDeepak Katragadda },
27402a1d7eb8SDeepak Katragadda },
27412a1d7eb8SDeepak Katragadda };
27422a1d7eb8SDeepak Katragadda
27432a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
27442a1d7eb8SDeepak Katragadda .halt_reg = 0x75010,
27452a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27462a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75010,
27472a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
27482a1d7eb8SDeepak Katragadda .clkr = {
27492a1d7eb8SDeepak Katragadda .enable_reg = 0x75010,
27502a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
27512a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
27522a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_axi_hw_ctl_clk",
27532a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
27542a1d7eb8SDeepak Katragadda &gcc_ufs_card_axi_clk.clkr.hw },
27552a1d7eb8SDeepak Katragadda .num_parents = 1,
27562a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
27572a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
27582a1d7eb8SDeepak Katragadda },
27592a1d7eb8SDeepak Katragadda },
27602a1d7eb8SDeepak Katragadda };
27612a1d7eb8SDeepak Katragadda
27622a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_clkref_clk = {
27632a1d7eb8SDeepak Katragadda .halt_reg = 0x8c004,
27642a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27652a1d7eb8SDeepak Katragadda .clkr = {
27662a1d7eb8SDeepak Katragadda .enable_reg = 0x8c004,
27672a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
27682a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
27692a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_clkref_clk",
27702a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
27712a1d7eb8SDeepak Katragadda },
27722a1d7eb8SDeepak Katragadda },
27732a1d7eb8SDeepak Katragadda };
27742a1d7eb8SDeepak Katragadda
27752a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_ice_core_clk = {
27762a1d7eb8SDeepak Katragadda .halt_reg = 0x7505c,
27772a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27782a1d7eb8SDeepak Katragadda .hwcg_reg = 0x7505c,
27792a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
27802a1d7eb8SDeepak Katragadda .clkr = {
27812a1d7eb8SDeepak Katragadda .enable_reg = 0x7505c,
27822a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
27832a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
27842a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_ice_core_clk",
27852a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
27862a1d7eb8SDeepak Katragadda &gcc_ufs_card_ice_core_clk_src.clkr.hw },
27872a1d7eb8SDeepak Katragadda .num_parents = 1,
27882a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
27892a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
27902a1d7eb8SDeepak Katragadda },
27912a1d7eb8SDeepak Katragadda },
27922a1d7eb8SDeepak Katragadda };
27932a1d7eb8SDeepak Katragadda
27942a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
27952a1d7eb8SDeepak Katragadda .halt_reg = 0x7505c,
27962a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
27972a1d7eb8SDeepak Katragadda .hwcg_reg = 0x7505c,
27982a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
27992a1d7eb8SDeepak Katragadda .clkr = {
28002a1d7eb8SDeepak Katragadda .enable_reg = 0x7505c,
28012a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
28022a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
28032a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_ice_core_hw_ctl_clk",
28042a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
28052a1d7eb8SDeepak Katragadda &gcc_ufs_card_ice_core_clk.clkr.hw },
28062a1d7eb8SDeepak Katragadda .num_parents = 1,
28072a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
28082a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
28092a1d7eb8SDeepak Katragadda },
28102a1d7eb8SDeepak Katragadda },
28112a1d7eb8SDeepak Katragadda };
28122a1d7eb8SDeepak Katragadda
28132a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_phy_aux_clk = {
28142a1d7eb8SDeepak Katragadda .halt_reg = 0x75090,
28152a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
28162a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75090,
28172a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
28182a1d7eb8SDeepak Katragadda .clkr = {
28192a1d7eb8SDeepak Katragadda .enable_reg = 0x75090,
28202a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
28212a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
28222a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_phy_aux_clk",
28232a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
28242a1d7eb8SDeepak Katragadda &gcc_ufs_card_phy_aux_clk_src.clkr.hw },
28252a1d7eb8SDeepak Katragadda .num_parents = 1,
28262a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
28272a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
28282a1d7eb8SDeepak Katragadda },
28292a1d7eb8SDeepak Katragadda },
28302a1d7eb8SDeepak Katragadda };
28312a1d7eb8SDeepak Katragadda
28322a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
28332a1d7eb8SDeepak Katragadda .halt_reg = 0x75090,
28342a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
28352a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75090,
28362a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
28372a1d7eb8SDeepak Katragadda .clkr = {
28382a1d7eb8SDeepak Katragadda .enable_reg = 0x75090,
28392a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
28402a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
28412a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
28422a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
28432a1d7eb8SDeepak Katragadda &gcc_ufs_card_phy_aux_clk.clkr.hw },
28442a1d7eb8SDeepak Katragadda .num_parents = 1,
28452a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
28462a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
28472a1d7eb8SDeepak Katragadda },
28482a1d7eb8SDeepak Katragadda },
28492a1d7eb8SDeepak Katragadda };
28502a1d7eb8SDeepak Katragadda
285137c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
285237c72e4cSVinod Koul static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
285337c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
285437c72e4cSVinod Koul .clkr = {
285537c72e4cSVinod Koul .enable_reg = 0x7501c,
285637c72e4cSVinod Koul .enable_mask = BIT(0),
285737c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
285837c72e4cSVinod Koul .name = "gcc_ufs_card_rx_symbol_0_clk",
285937c72e4cSVinod Koul .ops = &clk_branch2_ops,
286037c72e4cSVinod Koul },
286137c72e4cSVinod Koul },
286237c72e4cSVinod Koul };
286337c72e4cSVinod Koul
286437c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
286537c72e4cSVinod Koul static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
286637c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
286737c72e4cSVinod Koul .clkr = {
286837c72e4cSVinod Koul .enable_reg = 0x750ac,
286937c72e4cSVinod Koul .enable_mask = BIT(0),
287037c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
287137c72e4cSVinod Koul .name = "gcc_ufs_card_rx_symbol_1_clk",
287237c72e4cSVinod Koul .ops = &clk_branch2_ops,
287337c72e4cSVinod Koul },
287437c72e4cSVinod Koul },
287537c72e4cSVinod Koul };
287637c72e4cSVinod Koul
287737c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
287837c72e4cSVinod Koul static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
287937c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
288037c72e4cSVinod Koul .clkr = {
288137c72e4cSVinod Koul .enable_reg = 0x75018,
288237c72e4cSVinod Koul .enable_mask = BIT(0),
288337c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
288437c72e4cSVinod Koul .name = "gcc_ufs_card_tx_symbol_0_clk",
288537c72e4cSVinod Koul .ops = &clk_branch2_ops,
288637c72e4cSVinod Koul },
288737c72e4cSVinod Koul },
288837c72e4cSVinod Koul };
288937c72e4cSVinod Koul
28902a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_unipro_core_clk = {
28912a1d7eb8SDeepak Katragadda .halt_reg = 0x75058,
28922a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
28932a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75058,
28942a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
28952a1d7eb8SDeepak Katragadda .clkr = {
28962a1d7eb8SDeepak Katragadda .enable_reg = 0x75058,
28972a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
28982a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
28992a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_unipro_core_clk",
29002a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
29012a1d7eb8SDeepak Katragadda &gcc_ufs_card_unipro_core_clk_src.clkr.hw },
29022a1d7eb8SDeepak Katragadda .num_parents = 1,
29032a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
29042a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
29052a1d7eb8SDeepak Katragadda },
29062a1d7eb8SDeepak Katragadda },
29072a1d7eb8SDeepak Katragadda };
29082a1d7eb8SDeepak Katragadda
29092a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
29102a1d7eb8SDeepak Katragadda .halt_reg = 0x75058,
29112a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29122a1d7eb8SDeepak Katragadda .hwcg_reg = 0x75058,
29132a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
29142a1d7eb8SDeepak Katragadda .clkr = {
29152a1d7eb8SDeepak Katragadda .enable_reg = 0x75058,
29162a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
29172a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
29182a1d7eb8SDeepak Katragadda .name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
29192a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
29202a1d7eb8SDeepak Katragadda &gcc_ufs_card_unipro_core_clk.clkr.hw },
29212a1d7eb8SDeepak Katragadda .num_parents = 1,
29222a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
29232a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
29242a1d7eb8SDeepak Katragadda },
29252a1d7eb8SDeepak Katragadda },
29262a1d7eb8SDeepak Katragadda };
29272a1d7eb8SDeepak Katragadda
29282a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_mem_clkref_clk = {
29292a1d7eb8SDeepak Katragadda .halt_reg = 0x8c000,
29302a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29312a1d7eb8SDeepak Katragadda .clkr = {
29322a1d7eb8SDeepak Katragadda .enable_reg = 0x8c000,
29332a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
29342a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
29352a1d7eb8SDeepak Katragadda .name = "gcc_ufs_mem_clkref_clk",
29362a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
29372a1d7eb8SDeepak Katragadda },
29382a1d7eb8SDeepak Katragadda },
29392a1d7eb8SDeepak Katragadda };
29402a1d7eb8SDeepak Katragadda
29412a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_ahb_clk = {
29422a1d7eb8SDeepak Katragadda .halt_reg = 0x77014,
29432a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29442a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77014,
29452a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
29462a1d7eb8SDeepak Katragadda .clkr = {
29472a1d7eb8SDeepak Katragadda .enable_reg = 0x77014,
29482a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
29492a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
29502a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_ahb_clk",
29512a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
29522a1d7eb8SDeepak Katragadda },
29532a1d7eb8SDeepak Katragadda },
29542a1d7eb8SDeepak Katragadda };
29552a1d7eb8SDeepak Katragadda
29562a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_axi_clk = {
29572a1d7eb8SDeepak Katragadda .halt_reg = 0x77010,
29582a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29592a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77010,
29602a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
29612a1d7eb8SDeepak Katragadda .clkr = {
29622a1d7eb8SDeepak Katragadda .enable_reg = 0x77010,
29632a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
29642a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
29652a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_axi_clk",
29662a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
29672a1d7eb8SDeepak Katragadda &gcc_ufs_phy_axi_clk_src.clkr.hw },
29682a1d7eb8SDeepak Katragadda .num_parents = 1,
29692a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
29702a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
29712a1d7eb8SDeepak Katragadda },
29722a1d7eb8SDeepak Katragadda },
29732a1d7eb8SDeepak Katragadda };
29742a1d7eb8SDeepak Katragadda
29752a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
29762a1d7eb8SDeepak Katragadda .halt_reg = 0x77010,
29772a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29782a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77010,
29792a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
29802a1d7eb8SDeepak Katragadda .clkr = {
29812a1d7eb8SDeepak Katragadda .enable_reg = 0x77010,
29822a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
29832a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
29842a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_axi_hw_ctl_clk",
29852a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
29862a1d7eb8SDeepak Katragadda &gcc_ufs_phy_axi_clk.clkr.hw },
29872a1d7eb8SDeepak Katragadda .num_parents = 1,
29882a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
29892a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
29902a1d7eb8SDeepak Katragadda },
29912a1d7eb8SDeepak Katragadda },
29922a1d7eb8SDeepak Katragadda };
29932a1d7eb8SDeepak Katragadda
29942a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_ice_core_clk = {
29952a1d7eb8SDeepak Katragadda .halt_reg = 0x7705c,
29962a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
29972a1d7eb8SDeepak Katragadda .hwcg_reg = 0x7705c,
29982a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
29992a1d7eb8SDeepak Katragadda .clkr = {
30002a1d7eb8SDeepak Katragadda .enable_reg = 0x7705c,
30012a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
30022a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
30032a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_ice_core_clk",
30042a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
30052a1d7eb8SDeepak Katragadda &gcc_ufs_phy_ice_core_clk_src.clkr.hw },
30062a1d7eb8SDeepak Katragadda .num_parents = 1,
30072a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
30082a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
30092a1d7eb8SDeepak Katragadda },
30102a1d7eb8SDeepak Katragadda },
30112a1d7eb8SDeepak Katragadda };
30122a1d7eb8SDeepak Katragadda
30132a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
30142a1d7eb8SDeepak Katragadda .halt_reg = 0x7705c,
30152a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
30162a1d7eb8SDeepak Katragadda .hwcg_reg = 0x7705c,
30172a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
30182a1d7eb8SDeepak Katragadda .clkr = {
30192a1d7eb8SDeepak Katragadda .enable_reg = 0x7705c,
30202a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
30212a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
30222a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
30232a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
30242a1d7eb8SDeepak Katragadda &gcc_ufs_phy_ice_core_clk.clkr.hw },
30252a1d7eb8SDeepak Katragadda .num_parents = 1,
30262a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
30272a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
30282a1d7eb8SDeepak Katragadda },
30292a1d7eb8SDeepak Katragadda },
30302a1d7eb8SDeepak Katragadda };
30312a1d7eb8SDeepak Katragadda
30322a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
30332a1d7eb8SDeepak Katragadda .halt_reg = 0x77090,
30342a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
30352a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77090,
30362a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
30372a1d7eb8SDeepak Katragadda .clkr = {
30382a1d7eb8SDeepak Katragadda .enable_reg = 0x77090,
30392a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
30402a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
30412a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_phy_aux_clk",
30422a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
30432a1d7eb8SDeepak Katragadda &gcc_ufs_phy_phy_aux_clk_src.clkr.hw },
30442a1d7eb8SDeepak Katragadda .num_parents = 1,
30452a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
30462a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
30472a1d7eb8SDeepak Katragadda },
30482a1d7eb8SDeepak Katragadda },
30492a1d7eb8SDeepak Katragadda };
30502a1d7eb8SDeepak Katragadda
30512a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
30522a1d7eb8SDeepak Katragadda .halt_reg = 0x77090,
30532a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
30542a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77090,
30552a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
30562a1d7eb8SDeepak Katragadda .clkr = {
30572a1d7eb8SDeepak Katragadda .enable_reg = 0x77090,
30582a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
30592a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
30602a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
30612a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
30622a1d7eb8SDeepak Katragadda &gcc_ufs_phy_phy_aux_clk.clkr.hw },
30632a1d7eb8SDeepak Katragadda .num_parents = 1,
30642a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
30652a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
30662a1d7eb8SDeepak Katragadda },
30672a1d7eb8SDeepak Katragadda },
30682a1d7eb8SDeepak Katragadda };
30692a1d7eb8SDeepak Katragadda
307037c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
307137c72e4cSVinod Koul static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
307237c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
307337c72e4cSVinod Koul .clkr = {
307437c72e4cSVinod Koul .enable_reg = 0x7701c,
307537c72e4cSVinod Koul .enable_mask = BIT(0),
307637c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
307737c72e4cSVinod Koul .name = "gcc_ufs_phy_rx_symbol_0_clk",
307837c72e4cSVinod Koul .ops = &clk_branch2_ops,
307937c72e4cSVinod Koul },
308037c72e4cSVinod Koul },
308137c72e4cSVinod Koul };
308237c72e4cSVinod Koul
308337c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
308437c72e4cSVinod Koul static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
308537c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
308637c72e4cSVinod Koul .clkr = {
308737c72e4cSVinod Koul .enable_reg = 0x770ac,
308837c72e4cSVinod Koul .enable_mask = BIT(0),
308937c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
309037c72e4cSVinod Koul .name = "gcc_ufs_phy_rx_symbol_1_clk",
309137c72e4cSVinod Koul .ops = &clk_branch2_ops,
309237c72e4cSVinod Koul },
309337c72e4cSVinod Koul },
309437c72e4cSVinod Koul };
309537c72e4cSVinod Koul
309637c72e4cSVinod Koul /* external clocks so add BRANCH_HALT_SKIP */
309737c72e4cSVinod Koul static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
309837c72e4cSVinod Koul .halt_check = BRANCH_HALT_SKIP,
309937c72e4cSVinod Koul .clkr = {
310037c72e4cSVinod Koul .enable_reg = 0x77018,
310137c72e4cSVinod Koul .enable_mask = BIT(0),
310237c72e4cSVinod Koul .hw.init = &(struct clk_init_data){
310337c72e4cSVinod Koul .name = "gcc_ufs_phy_tx_symbol_0_clk",
310437c72e4cSVinod Koul .ops = &clk_branch2_ops,
310537c72e4cSVinod Koul },
310637c72e4cSVinod Koul },
310737c72e4cSVinod Koul };
310837c72e4cSVinod Koul
31092a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
31102a1d7eb8SDeepak Katragadda .halt_reg = 0x77058,
31112a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31122a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77058,
31132a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
31142a1d7eb8SDeepak Katragadda .clkr = {
31152a1d7eb8SDeepak Katragadda .enable_reg = 0x77058,
31162a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
31172a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
31182a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_unipro_core_clk",
31192a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
31202a1d7eb8SDeepak Katragadda &gcc_ufs_phy_unipro_core_clk_src.clkr.hw },
31212a1d7eb8SDeepak Katragadda .num_parents = 1,
31222a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
31232a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
31242a1d7eb8SDeepak Katragadda },
31252a1d7eb8SDeepak Katragadda },
31262a1d7eb8SDeepak Katragadda };
31272a1d7eb8SDeepak Katragadda
31282a1d7eb8SDeepak Katragadda static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
31292a1d7eb8SDeepak Katragadda .halt_reg = 0x77058,
31302a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31312a1d7eb8SDeepak Katragadda .hwcg_reg = 0x77058,
31322a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
31332a1d7eb8SDeepak Katragadda .clkr = {
31342a1d7eb8SDeepak Katragadda .enable_reg = 0x77058,
31352a1d7eb8SDeepak Katragadda .enable_mask = BIT(1),
31362a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
31372a1d7eb8SDeepak Katragadda .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
31382a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
31392a1d7eb8SDeepak Katragadda &gcc_ufs_phy_unipro_core_clk.clkr.hw },
31402a1d7eb8SDeepak Katragadda .num_parents = 1,
31412a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
31422a1d7eb8SDeepak Katragadda .ops = &clk_branch_simple_ops,
31432a1d7eb8SDeepak Katragadda },
31442a1d7eb8SDeepak Katragadda },
31452a1d7eb8SDeepak Katragadda };
31462a1d7eb8SDeepak Katragadda
31472a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_prim_master_clk = {
31482a1d7eb8SDeepak Katragadda .halt_reg = 0xf010,
31492a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31502a1d7eb8SDeepak Katragadda .clkr = {
31512a1d7eb8SDeepak Katragadda .enable_reg = 0xf010,
31522a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
31532a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
31542a1d7eb8SDeepak Katragadda .name = "gcc_usb30_prim_master_clk",
31552a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
31562a1d7eb8SDeepak Katragadda &gcc_usb30_prim_master_clk_src.clkr.hw },
31572a1d7eb8SDeepak Katragadda .num_parents = 1,
31582a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
31592a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
31602a1d7eb8SDeepak Katragadda },
31612a1d7eb8SDeepak Katragadda },
31622a1d7eb8SDeepak Katragadda };
31632a1d7eb8SDeepak Katragadda
31642a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
31652a1d7eb8SDeepak Katragadda .halt_reg = 0xf018,
31662a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31672a1d7eb8SDeepak Katragadda .clkr = {
31682a1d7eb8SDeepak Katragadda .enable_reg = 0xf018,
31692a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
31702a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
31712a1d7eb8SDeepak Katragadda .name = "gcc_usb30_prim_mock_utmi_clk",
31722a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
31732a1d7eb8SDeepak Katragadda &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw },
31742a1d7eb8SDeepak Katragadda .num_parents = 1,
31752a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
31762a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
31772a1d7eb8SDeepak Katragadda },
31782a1d7eb8SDeepak Katragadda },
31792a1d7eb8SDeepak Katragadda };
31802a1d7eb8SDeepak Katragadda
31812a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_prim_sleep_clk = {
31822a1d7eb8SDeepak Katragadda .halt_reg = 0xf014,
31832a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31842a1d7eb8SDeepak Katragadda .clkr = {
31852a1d7eb8SDeepak Katragadda .enable_reg = 0xf014,
31862a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
31872a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
31882a1d7eb8SDeepak Katragadda .name = "gcc_usb30_prim_sleep_clk",
31892a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
31902a1d7eb8SDeepak Katragadda },
31912a1d7eb8SDeepak Katragadda },
31922a1d7eb8SDeepak Katragadda };
31932a1d7eb8SDeepak Katragadda
31942a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_sec_master_clk = {
31952a1d7eb8SDeepak Katragadda .halt_reg = 0x10010,
31962a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
31972a1d7eb8SDeepak Katragadda .clkr = {
31982a1d7eb8SDeepak Katragadda .enable_reg = 0x10010,
31992a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32002a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32012a1d7eb8SDeepak Katragadda .name = "gcc_usb30_sec_master_clk",
32022a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
32032a1d7eb8SDeepak Katragadda &gcc_usb30_sec_master_clk_src.clkr.hw },
32042a1d7eb8SDeepak Katragadda .num_parents = 1,
32052a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
32062a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32072a1d7eb8SDeepak Katragadda },
32082a1d7eb8SDeepak Katragadda },
32092a1d7eb8SDeepak Katragadda };
32102a1d7eb8SDeepak Katragadda
32112a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
32122a1d7eb8SDeepak Katragadda .halt_reg = 0x10018,
32132a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
32142a1d7eb8SDeepak Katragadda .clkr = {
32152a1d7eb8SDeepak Katragadda .enable_reg = 0x10018,
32162a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32172a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32182a1d7eb8SDeepak Katragadda .name = "gcc_usb30_sec_mock_utmi_clk",
32192a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
32202a1d7eb8SDeepak Katragadda &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw },
32212a1d7eb8SDeepak Katragadda .num_parents = 1,
32222a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
32232a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32242a1d7eb8SDeepak Katragadda },
32252a1d7eb8SDeepak Katragadda },
32262a1d7eb8SDeepak Katragadda };
32272a1d7eb8SDeepak Katragadda
32282a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb30_sec_sleep_clk = {
32292a1d7eb8SDeepak Katragadda .halt_reg = 0x10014,
32302a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
32312a1d7eb8SDeepak Katragadda .clkr = {
32322a1d7eb8SDeepak Katragadda .enable_reg = 0x10014,
32332a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32342a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32352a1d7eb8SDeepak Katragadda .name = "gcc_usb30_sec_sleep_clk",
32362a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32372a1d7eb8SDeepak Katragadda },
32382a1d7eb8SDeepak Katragadda },
32392a1d7eb8SDeepak Katragadda };
32402a1d7eb8SDeepak Katragadda
32412a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_prim_clkref_clk = {
32422a1d7eb8SDeepak Katragadda .halt_reg = 0x8c008,
32432a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
32442a1d7eb8SDeepak Katragadda .clkr = {
32452a1d7eb8SDeepak Katragadda .enable_reg = 0x8c008,
32462a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32472a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32482a1d7eb8SDeepak Katragadda .name = "gcc_usb3_prim_clkref_clk",
32492a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32502a1d7eb8SDeepak Katragadda },
32512a1d7eb8SDeepak Katragadda },
32522a1d7eb8SDeepak Katragadda };
32532a1d7eb8SDeepak Katragadda
32542a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
32552a1d7eb8SDeepak Katragadda .halt_reg = 0xf050,
32562a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
32572a1d7eb8SDeepak Katragadda .clkr = {
32582a1d7eb8SDeepak Katragadda .enable_reg = 0xf050,
32592a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32602a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32612a1d7eb8SDeepak Katragadda .name = "gcc_usb3_prim_phy_aux_clk",
32622a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
32632a1d7eb8SDeepak Katragadda &gcc_usb3_prim_phy_aux_clk_src.clkr.hw },
32642a1d7eb8SDeepak Katragadda .num_parents = 1,
32652a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
32662a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32672a1d7eb8SDeepak Katragadda },
32682a1d7eb8SDeepak Katragadda },
32692a1d7eb8SDeepak Katragadda };
32702a1d7eb8SDeepak Katragadda
32712a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
32722a1d7eb8SDeepak Katragadda .halt_reg = 0xf054,
32732a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
32742a1d7eb8SDeepak Katragadda .clkr = {
32752a1d7eb8SDeepak Katragadda .enable_reg = 0xf054,
32762a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
32772a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
32782a1d7eb8SDeepak Katragadda .name = "gcc_usb3_prim_phy_com_aux_clk",
32792a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
32802a1d7eb8SDeepak Katragadda &gcc_usb3_prim_phy_aux_clk_src.clkr.hw },
32812a1d7eb8SDeepak Katragadda .num_parents = 1,
32822a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
32832a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
32842a1d7eb8SDeepak Katragadda },
32852a1d7eb8SDeepak Katragadda },
32862a1d7eb8SDeepak Katragadda };
32872a1d7eb8SDeepak Katragadda
32888411aa50SWesley Cheng static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
32898411aa50SWesley Cheng .halt_check = BRANCH_HALT_SKIP,
32908411aa50SWesley Cheng .clkr = {
32918411aa50SWesley Cheng .enable_reg = 0xf058,
32928411aa50SWesley Cheng .enable_mask = BIT(0),
32938411aa50SWesley Cheng .hw.init = &(struct clk_init_data){
32948411aa50SWesley Cheng .name = "gcc_usb3_prim_phy_pipe_clk",
32958411aa50SWesley Cheng .ops = &clk_branch2_ops,
32968411aa50SWesley Cheng },
32978411aa50SWesley Cheng },
32988411aa50SWesley Cheng };
32998411aa50SWesley Cheng
33002a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_sec_clkref_clk = {
33012a1d7eb8SDeepak Katragadda .halt_reg = 0x8c028,
33022a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
33032a1d7eb8SDeepak Katragadda .clkr = {
33042a1d7eb8SDeepak Katragadda .enable_reg = 0x8c028,
33052a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33062a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33072a1d7eb8SDeepak Katragadda .name = "gcc_usb3_sec_clkref_clk",
33082a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
33092a1d7eb8SDeepak Katragadda },
33102a1d7eb8SDeepak Katragadda },
33112a1d7eb8SDeepak Katragadda };
33122a1d7eb8SDeepak Katragadda
33132a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
33142a1d7eb8SDeepak Katragadda .halt_reg = 0x10050,
33152a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
33162a1d7eb8SDeepak Katragadda .clkr = {
33172a1d7eb8SDeepak Katragadda .enable_reg = 0x10050,
33182a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33192a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33202a1d7eb8SDeepak Katragadda .name = "gcc_usb3_sec_phy_aux_clk",
33212a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
33222a1d7eb8SDeepak Katragadda &gcc_usb3_sec_phy_aux_clk_src.clkr.hw },
33232a1d7eb8SDeepak Katragadda .num_parents = 1,
33242a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
33252a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
33262a1d7eb8SDeepak Katragadda },
33272a1d7eb8SDeepak Katragadda },
33282a1d7eb8SDeepak Katragadda };
33292a1d7eb8SDeepak Katragadda
33302a1d7eb8SDeepak Katragadda static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
33312a1d7eb8SDeepak Katragadda .halt_reg = 0x10054,
33322a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
33332a1d7eb8SDeepak Katragadda .clkr = {
33342a1d7eb8SDeepak Katragadda .enable_reg = 0x10054,
33352a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33362a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33372a1d7eb8SDeepak Katragadda .name = "gcc_usb3_sec_phy_com_aux_clk",
33382a1d7eb8SDeepak Katragadda .parent_hws = (const struct clk_hw *[]){
33392a1d7eb8SDeepak Katragadda &gcc_usb3_sec_phy_aux_clk_src.clkr.hw },
33402a1d7eb8SDeepak Katragadda .num_parents = 1,
33412a1d7eb8SDeepak Katragadda .flags = CLK_SET_RATE_PARENT,
33422a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
33432a1d7eb8SDeepak Katragadda },
33442a1d7eb8SDeepak Katragadda },
33452a1d7eb8SDeepak Katragadda };
33462a1d7eb8SDeepak Katragadda
33478411aa50SWesley Cheng static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
33488411aa50SWesley Cheng .halt_check = BRANCH_HALT_SKIP,
33498411aa50SWesley Cheng .clkr = {
33508411aa50SWesley Cheng .enable_reg = 0x10058,
33518411aa50SWesley Cheng .enable_mask = BIT(0),
33528411aa50SWesley Cheng .hw.init = &(struct clk_init_data){
33538411aa50SWesley Cheng .name = "gcc_usb3_sec_phy_pipe_clk",
33548411aa50SWesley Cheng .ops = &clk_branch2_ops,
33558411aa50SWesley Cheng },
33568411aa50SWesley Cheng },
33578411aa50SWesley Cheng };
33588411aa50SWesley Cheng
33592a1d7eb8SDeepak Katragadda /*
33602a1d7eb8SDeepak Katragadda * Clock ON depends on external parent 'config noc', so cant poll
33612a1d7eb8SDeepak Katragadda * delay and also mark as crtitical for video boot
33622a1d7eb8SDeepak Katragadda */
33632a1d7eb8SDeepak Katragadda static struct clk_branch gcc_video_ahb_clk = {
33642a1d7eb8SDeepak Katragadda .halt_reg = 0xb004,
33652a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
33662a1d7eb8SDeepak Katragadda .hwcg_reg = 0xb004,
33672a1d7eb8SDeepak Katragadda .hwcg_bit = 1,
33682a1d7eb8SDeepak Katragadda .clkr = {
33692a1d7eb8SDeepak Katragadda .enable_reg = 0xb004,
33702a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33712a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33722a1d7eb8SDeepak Katragadda .name = "gcc_video_ahb_clk",
33732a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
33742a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
33752a1d7eb8SDeepak Katragadda },
33762a1d7eb8SDeepak Katragadda },
33772a1d7eb8SDeepak Katragadda };
33782a1d7eb8SDeepak Katragadda
33792a1d7eb8SDeepak Katragadda static struct clk_branch gcc_video_axi0_clk = {
33802a1d7eb8SDeepak Katragadda .halt_reg = 0xb024,
33812a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
33822a1d7eb8SDeepak Katragadda .clkr = {
33832a1d7eb8SDeepak Katragadda .enable_reg = 0xb024,
33842a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33852a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33862a1d7eb8SDeepak Katragadda .name = "gcc_video_axi0_clk",
33872a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
33882a1d7eb8SDeepak Katragadda },
33892a1d7eb8SDeepak Katragadda },
33902a1d7eb8SDeepak Katragadda };
33912a1d7eb8SDeepak Katragadda
33922a1d7eb8SDeepak Katragadda static struct clk_branch gcc_video_axi1_clk = {
33932a1d7eb8SDeepak Katragadda .halt_reg = 0xb028,
33942a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
33952a1d7eb8SDeepak Katragadda .clkr = {
33962a1d7eb8SDeepak Katragadda .enable_reg = 0xb028,
33972a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
33982a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
33992a1d7eb8SDeepak Katragadda .name = "gcc_video_axi1_clk",
34002a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
34012a1d7eb8SDeepak Katragadda },
34022a1d7eb8SDeepak Katragadda },
34032a1d7eb8SDeepak Katragadda };
34042a1d7eb8SDeepak Katragadda
34052a1d7eb8SDeepak Katragadda static struct clk_branch gcc_video_axic_clk = {
34062a1d7eb8SDeepak Katragadda .halt_reg = 0xb02c,
34072a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT,
34082a1d7eb8SDeepak Katragadda .clkr = {
34092a1d7eb8SDeepak Katragadda .enable_reg = 0xb02c,
34102a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
34112a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
34122a1d7eb8SDeepak Katragadda .name = "gcc_video_axic_clk",
34132a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
34142a1d7eb8SDeepak Katragadda },
34152a1d7eb8SDeepak Katragadda },
34162a1d7eb8SDeepak Katragadda };
34172a1d7eb8SDeepak Katragadda
34182a1d7eb8SDeepak Katragadda /* XO critical input to video, so no need to poll */
34192a1d7eb8SDeepak Katragadda static struct clk_branch gcc_video_xo_clk = {
34202a1d7eb8SDeepak Katragadda .halt_reg = 0xb040,
34212a1d7eb8SDeepak Katragadda .halt_check = BRANCH_HALT_DELAY,
34222a1d7eb8SDeepak Katragadda .clkr = {
34232a1d7eb8SDeepak Katragadda .enable_reg = 0xb040,
34242a1d7eb8SDeepak Katragadda .enable_mask = BIT(0),
34252a1d7eb8SDeepak Katragadda .hw.init = &(struct clk_init_data){
34262a1d7eb8SDeepak Katragadda .name = "gcc_video_xo_clk",
34272a1d7eb8SDeepak Katragadda .flags = CLK_IS_CRITICAL,
34282a1d7eb8SDeepak Katragadda .ops = &clk_branch2_ops,
34292a1d7eb8SDeepak Katragadda },
34302a1d7eb8SDeepak Katragadda },
34312a1d7eb8SDeepak Katragadda };
34322a1d7eb8SDeepak Katragadda
34332dc63e76SBhupesh Sharma static struct gdsc pcie_0_gdsc = {
34342dc63e76SBhupesh Sharma .gdscr = 0x6b004,
34352dc63e76SBhupesh Sharma .pd = {
34362dc63e76SBhupesh Sharma .name = "pcie_0_gdsc",
34372dc63e76SBhupesh Sharma },
34382dc63e76SBhupesh Sharma .pwrsts = PWRSTS_OFF_ON,
34392dc63e76SBhupesh Sharma .flags = POLL_CFG_GDSCR,
34402dc63e76SBhupesh Sharma };
34412dc63e76SBhupesh Sharma
34422dc63e76SBhupesh Sharma static struct gdsc pcie_1_gdsc = {
34432dc63e76SBhupesh Sharma .gdscr = 0x8d004,
34442dc63e76SBhupesh Sharma .pd = {
34452dc63e76SBhupesh Sharma .name = "pcie_1_gdsc",
34462dc63e76SBhupesh Sharma },
34472dc63e76SBhupesh Sharma .pwrsts = PWRSTS_OFF_ON,
34482dc63e76SBhupesh Sharma .flags = POLL_CFG_GDSCR,
34492dc63e76SBhupesh Sharma };
34502dc63e76SBhupesh Sharma
34512fb605a1SBhupesh Sharma static struct gdsc ufs_card_gdsc = {
34522fb605a1SBhupesh Sharma .gdscr = 0x75004,
34532fb605a1SBhupesh Sharma .pd = {
34542fb605a1SBhupesh Sharma .name = "ufs_card_gdsc",
34552fb605a1SBhupesh Sharma },
34562fb605a1SBhupesh Sharma .pwrsts = PWRSTS_OFF_ON,
34572fb605a1SBhupesh Sharma .flags = POLL_CFG_GDSCR,
34582fb605a1SBhupesh Sharma };
34592fb605a1SBhupesh Sharma
34602fb605a1SBhupesh Sharma static struct gdsc ufs_phy_gdsc = {
34612fb605a1SBhupesh Sharma .gdscr = 0x77004,
34622fb605a1SBhupesh Sharma .pd = {
34632fb605a1SBhupesh Sharma .name = "ufs_phy_gdsc",
34642fb605a1SBhupesh Sharma },
34652fb605a1SBhupesh Sharma .pwrsts = PWRSTS_OFF_ON,
34662fb605a1SBhupesh Sharma .flags = POLL_CFG_GDSCR,
34672fb605a1SBhupesh Sharma };
34682fb605a1SBhupesh Sharma
3469d1a16e34SBhupesh Sharma static struct gdsc emac_gdsc = {
3470d1a16e34SBhupesh Sharma .gdscr = 0x6004,
3471d1a16e34SBhupesh Sharma .pd = {
3472d1a16e34SBhupesh Sharma .name = "emac_gdsc",
3473d1a16e34SBhupesh Sharma },
3474d1a16e34SBhupesh Sharma .pwrsts = PWRSTS_OFF_ON,
3475d1a16e34SBhupesh Sharma .flags = POLL_CFG_GDSCR,
3476d1a16e34SBhupesh Sharma };
3477d1a16e34SBhupesh Sharma
34788411aa50SWesley Cheng static struct gdsc usb30_prim_gdsc = {
34798411aa50SWesley Cheng .gdscr = 0xf004,
34808411aa50SWesley Cheng .pd = {
34818411aa50SWesley Cheng .name = "usb30_prim_gdsc",
34828411aa50SWesley Cheng },
34838411aa50SWesley Cheng .pwrsts = PWRSTS_OFF_ON,
34848411aa50SWesley Cheng .flags = POLL_CFG_GDSCR,
34858411aa50SWesley Cheng };
34868411aa50SWesley Cheng
34878411aa50SWesley Cheng static struct gdsc usb30_sec_gdsc = {
34888411aa50SWesley Cheng .gdscr = 0x10004,
34898411aa50SWesley Cheng .pd = {
34908411aa50SWesley Cheng .name = "usb30_sec_gdsc",
34918411aa50SWesley Cheng },
34928411aa50SWesley Cheng .pwrsts = PWRSTS_OFF_ON,
34938411aa50SWesley Cheng .flags = POLL_CFG_GDSCR,
34948411aa50SWesley Cheng };
34958411aa50SWesley Cheng
34962a1d7eb8SDeepak Katragadda static struct clk_regmap *gcc_sm8150_clocks[] = {
34972a1d7eb8SDeepak Katragadda [GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
34982a1d7eb8SDeepak Katragadda [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
34992a1d7eb8SDeepak Katragadda [GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] =
35002a1d7eb8SDeepak Katragadda &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
35012a1d7eb8SDeepak Katragadda [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
35022a1d7eb8SDeepak Katragadda [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] =
35032a1d7eb8SDeepak Katragadda &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
35042a1d7eb8SDeepak Katragadda [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
35052a1d7eb8SDeepak Katragadda [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
35062a1d7eb8SDeepak Katragadda [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
35072a1d7eb8SDeepak Katragadda [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
35082a1d7eb8SDeepak Katragadda [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
35092a1d7eb8SDeepak Katragadda [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
35102a1d7eb8SDeepak Katragadda [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
35112a1d7eb8SDeepak Katragadda [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
35122a1d7eb8SDeepak Katragadda [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
35132a1d7eb8SDeepak Katragadda [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
35142a1d7eb8SDeepak Katragadda [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
35152a1d7eb8SDeepak Katragadda [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
35162a1d7eb8SDeepak Katragadda [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
35172a1d7eb8SDeepak Katragadda [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
35182a1d7eb8SDeepak Katragadda [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
35192a1d7eb8SDeepak Katragadda [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
35202a1d7eb8SDeepak Katragadda [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
35212a1d7eb8SDeepak Katragadda [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
35222a1d7eb8SDeepak Katragadda [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
35232a1d7eb8SDeepak Katragadda [GCC_EMAC_AXI_CLK] = &gcc_emac_axi_clk.clkr,
35242a1d7eb8SDeepak Katragadda [GCC_EMAC_PTP_CLK] = &gcc_emac_ptp_clk.clkr,
35252a1d7eb8SDeepak Katragadda [GCC_EMAC_PTP_CLK_SRC] = &gcc_emac_ptp_clk_src.clkr,
35262a1d7eb8SDeepak Katragadda [GCC_EMAC_RGMII_CLK] = &gcc_emac_rgmii_clk.clkr,
35272a1d7eb8SDeepak Katragadda [GCC_EMAC_RGMII_CLK_SRC] = &gcc_emac_rgmii_clk_src.clkr,
35282a1d7eb8SDeepak Katragadda [GCC_EMAC_SLV_AHB_CLK] = &gcc_emac_slv_ahb_clk.clkr,
35292a1d7eb8SDeepak Katragadda [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
35302a1d7eb8SDeepak Katragadda [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
35312a1d7eb8SDeepak Katragadda [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
35322a1d7eb8SDeepak Katragadda [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
35332a1d7eb8SDeepak Katragadda [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
35342a1d7eb8SDeepak Katragadda [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
35352a1d7eb8SDeepak Katragadda [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3536f73a4230SVinod Koul [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3537f73a4230SVinod Koul [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
35382a1d7eb8SDeepak Katragadda [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,
35392a1d7eb8SDeepak Katragadda [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
35402a1d7eb8SDeepak Katragadda [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
35412a1d7eb8SDeepak Katragadda [GCC_NPU_AT_CLK] = &gcc_npu_at_clk.clkr,
35422a1d7eb8SDeepak Katragadda [GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr,
35432a1d7eb8SDeepak Katragadda [GCC_NPU_CFG_AHB_CLK] = &gcc_npu_cfg_ahb_clk.clkr,
3544f73a4230SVinod Koul [GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr,
3545f73a4230SVinod Koul [GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr,
35462a1d7eb8SDeepak Katragadda [GCC_NPU_TRIG_CLK] = &gcc_npu_trig_clk.clkr,
35472a1d7eb8SDeepak Katragadda [GCC_PCIE0_PHY_REFGEN_CLK] = &gcc_pcie0_phy_refgen_clk.clkr,
35482a1d7eb8SDeepak Katragadda [GCC_PCIE1_PHY_REFGEN_CLK] = &gcc_pcie1_phy_refgen_clk.clkr,
35492a1d7eb8SDeepak Katragadda [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
35502a1d7eb8SDeepak Katragadda [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
35512a1d7eb8SDeepak Katragadda [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
35522a1d7eb8SDeepak Katragadda [GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
35532a1d7eb8SDeepak Katragadda [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
35542a1d7eb8SDeepak Katragadda [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
35552a1d7eb8SDeepak Katragadda [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
35562a1d7eb8SDeepak Katragadda [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
35572a1d7eb8SDeepak Katragadda [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
35582a1d7eb8SDeepak Katragadda [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
35592a1d7eb8SDeepak Katragadda [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
35602a1d7eb8SDeepak Katragadda [GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
35612a1d7eb8SDeepak Katragadda [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
35622a1d7eb8SDeepak Katragadda [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
35632a1d7eb8SDeepak Katragadda [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
35642a1d7eb8SDeepak Katragadda [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
35652a1d7eb8SDeepak Katragadda [GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
35662a1d7eb8SDeepak Katragadda [GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
35672a1d7eb8SDeepak Katragadda [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
35682a1d7eb8SDeepak Katragadda [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
35692a1d7eb8SDeepak Katragadda [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
35702a1d7eb8SDeepak Katragadda [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
35712a1d7eb8SDeepak Katragadda [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
35722a1d7eb8SDeepak Katragadda [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
35732a1d7eb8SDeepak Katragadda [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
35742a1d7eb8SDeepak Katragadda [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
35752a1d7eb8SDeepak Katragadda [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
35762a1d7eb8SDeepak Katragadda [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
35772a1d7eb8SDeepak Katragadda [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
35782a1d7eb8SDeepak Katragadda [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
35792a1d7eb8SDeepak Katragadda [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
35802a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
35812a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
35822a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
35832a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
35842a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
35852a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
35862a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
35872a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
35882a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
35892a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
35902a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
35912a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
35922a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
35932a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
35942a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
35952a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
35962a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
35972a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
35982a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
35992a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
36002a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
36012a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
36022a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
36032a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
36042a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
36052a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
36062a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
36072a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
36082a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
36092a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
36102a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
36112a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
36122a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
36132a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
36142a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
36152a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
36162a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
36172a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
36182a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
36192a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
36202a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
36212a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
36222a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
36232a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
36242a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
36252a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
36262a1d7eb8SDeepak Katragadda [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
36272a1d7eb8SDeepak Katragadda [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
36282a1d7eb8SDeepak Katragadda [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
36292a1d7eb8SDeepak Katragadda [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
36302a1d7eb8SDeepak Katragadda [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
36312a1d7eb8SDeepak Katragadda [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
36322a1d7eb8SDeepak Katragadda [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
36332a1d7eb8SDeepak Katragadda [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
36342a1d7eb8SDeepak Katragadda [GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
36352a1d7eb8SDeepak Katragadda [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
36362a1d7eb8SDeepak Katragadda [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
36372a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
36382a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
36392a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
36402a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
36412a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,
36422a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
36432a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
36442a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] =
36452a1d7eb8SDeepak Katragadda &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
36462a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
36472a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
36482a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] =
36492a1d7eb8SDeepak Katragadda &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
365037c72e4cSVinod Koul [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
365137c72e4cSVinod Koul [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
365237c72e4cSVinod Koul [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
36532a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
36542a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] =
36552a1d7eb8SDeepak Katragadda &gcc_ufs_card_unipro_core_clk_src.clkr,
36562a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] =
36572a1d7eb8SDeepak Katragadda &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
36582a1d7eb8SDeepak Katragadda [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
36592a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
36602a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
36612a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
36622a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
36632a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
36642a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
36652a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] =
36662a1d7eb8SDeepak Katragadda &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
36672a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
36682a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
36692a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
367037c72e4cSVinod Koul [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
367137c72e4cSVinod Koul [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
367237c72e4cSVinod Koul [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
36732a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
36742a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
36752a1d7eb8SDeepak Katragadda &gcc_ufs_phy_unipro_core_clk_src.clkr,
36762a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] =
36772a1d7eb8SDeepak Katragadda &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
36782a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
36792a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
36802a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
36812a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
36822a1d7eb8SDeepak Katragadda &gcc_usb30_prim_mock_utmi_clk_src.clkr,
36832a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
36842a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
36852a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
36862a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
36872a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] =
36882a1d7eb8SDeepak Katragadda &gcc_usb30_sec_mock_utmi_clk_src.clkr,
36892a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
36902a1d7eb8SDeepak Katragadda [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
36912a1d7eb8SDeepak Katragadda [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
36922a1d7eb8SDeepak Katragadda [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
36932a1d7eb8SDeepak Katragadda [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
36948411aa50SWesley Cheng [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
36952a1d7eb8SDeepak Katragadda [GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
36962a1d7eb8SDeepak Katragadda [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
36972a1d7eb8SDeepak Katragadda [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
36982a1d7eb8SDeepak Katragadda [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
36998411aa50SWesley Cheng [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
37002a1d7eb8SDeepak Katragadda [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
37012a1d7eb8SDeepak Katragadda [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
37022a1d7eb8SDeepak Katragadda [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
37032a1d7eb8SDeepak Katragadda [GCC_VIDEO_AXIC_CLK] = &gcc_video_axic_clk.clkr,
37042a1d7eb8SDeepak Katragadda [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
37052a1d7eb8SDeepak Katragadda [GPLL0] = &gpll0.clkr,
37062a1d7eb8SDeepak Katragadda [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
37072a1d7eb8SDeepak Katragadda [GPLL7] = &gpll7.clkr,
37082a1d7eb8SDeepak Katragadda [GPLL9] = &gpll9.clkr,
37092a1d7eb8SDeepak Katragadda };
37102a1d7eb8SDeepak Katragadda
37112a1d7eb8SDeepak Katragadda static const struct qcom_reset_map gcc_sm8150_resets[] = {
37122a1d7eb8SDeepak Katragadda [GCC_EMAC_BCR] = { 0x6000 },
37132a1d7eb8SDeepak Katragadda [GCC_GPU_BCR] = { 0x71000 },
37142a1d7eb8SDeepak Katragadda [GCC_MMSS_BCR] = { 0xb000 },
37152a1d7eb8SDeepak Katragadda [GCC_NPU_BCR] = { 0x4d000 },
37162a1d7eb8SDeepak Katragadda [GCC_PCIE_0_BCR] = { 0x6b000 },
37172a1d7eb8SDeepak Katragadda [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
37182a1d7eb8SDeepak Katragadda [GCC_PCIE_1_BCR] = { 0x8d000 },
37192a1d7eb8SDeepak Katragadda [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
37202a1d7eb8SDeepak Katragadda [GCC_PCIE_PHY_BCR] = { 0x6f000 },
37212a1d7eb8SDeepak Katragadda [GCC_PDM_BCR] = { 0x33000 },
37222a1d7eb8SDeepak Katragadda [GCC_PRNG_BCR] = { 0x34000 },
37232a1d7eb8SDeepak Katragadda [GCC_QSPI_BCR] = { 0x24008 },
37242a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
37252a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
37262a1d7eb8SDeepak Katragadda [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
37272a1d7eb8SDeepak Katragadda [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
37282a1d7eb8SDeepak Katragadda [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
37292a1d7eb8SDeepak Katragadda [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
37302a1d7eb8SDeepak Katragadda [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
37312a1d7eb8SDeepak Katragadda [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
37322a1d7eb8SDeepak Katragadda [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
37332a1d7eb8SDeepak Katragadda [GCC_SDCC2_BCR] = { 0x14000 },
37342a1d7eb8SDeepak Katragadda [GCC_SDCC4_BCR] = { 0x16000 },
37352a1d7eb8SDeepak Katragadda [GCC_TSIF_BCR] = { 0x36000 },
37362a1d7eb8SDeepak Katragadda [GCC_UFS_CARD_BCR] = { 0x75000 },
37372a1d7eb8SDeepak Katragadda [GCC_UFS_PHY_BCR] = { 0x77000 },
37382a1d7eb8SDeepak Katragadda [GCC_USB30_PRIM_BCR] = { 0xf000 },
37392a1d7eb8SDeepak Katragadda [GCC_USB30_SEC_BCR] = { 0x10000 },
37402a1d7eb8SDeepak Katragadda [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
37412a1d7eb8SDeepak Katragadda };
37422a1d7eb8SDeepak Katragadda
37438411aa50SWesley Cheng static struct gdsc *gcc_sm8150_gdscs[] = {
3744d1a16e34SBhupesh Sharma [EMAC_GDSC] = &emac_gdsc,
37452dc63e76SBhupesh Sharma [PCIE_0_GDSC] = &pcie_0_gdsc,
37462dc63e76SBhupesh Sharma [PCIE_1_GDSC] = &pcie_1_gdsc,
37472fb605a1SBhupesh Sharma [UFS_CARD_GDSC] = &ufs_card_gdsc,
37482fb605a1SBhupesh Sharma [UFS_PHY_GDSC] = &ufs_phy_gdsc,
37498411aa50SWesley Cheng [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
37508411aa50SWesley Cheng [USB30_SEC_GDSC] = &usb30_sec_gdsc,
37518411aa50SWesley Cheng };
37528411aa50SWesley Cheng
37532a1d7eb8SDeepak Katragadda static const struct regmap_config gcc_sm8150_regmap_config = {
37542a1d7eb8SDeepak Katragadda .reg_bits = 32,
37552a1d7eb8SDeepak Katragadda .reg_stride = 4,
37562a1d7eb8SDeepak Katragadda .val_bits = 32,
37572a1d7eb8SDeepak Katragadda .max_register = 0x9c040,
37582a1d7eb8SDeepak Katragadda .fast_io = true,
37592a1d7eb8SDeepak Katragadda };
37602a1d7eb8SDeepak Katragadda
37612a1d7eb8SDeepak Katragadda static const struct qcom_cc_desc gcc_sm8150_desc = {
37622a1d7eb8SDeepak Katragadda .config = &gcc_sm8150_regmap_config,
37632a1d7eb8SDeepak Katragadda .clks = gcc_sm8150_clocks,
37642a1d7eb8SDeepak Katragadda .num_clks = ARRAY_SIZE(gcc_sm8150_clocks),
37652a1d7eb8SDeepak Katragadda .resets = gcc_sm8150_resets,
37662a1d7eb8SDeepak Katragadda .num_resets = ARRAY_SIZE(gcc_sm8150_resets),
37678411aa50SWesley Cheng .gdscs = gcc_sm8150_gdscs,
37688411aa50SWesley Cheng .num_gdscs = ARRAY_SIZE(gcc_sm8150_gdscs),
37692a1d7eb8SDeepak Katragadda };
37702a1d7eb8SDeepak Katragadda
37712a1d7eb8SDeepak Katragadda static const struct of_device_id gcc_sm8150_match_table[] = {
37722a1d7eb8SDeepak Katragadda { .compatible = "qcom,gcc-sm8150" },
37732a1d7eb8SDeepak Katragadda { }
37742a1d7eb8SDeepak Katragadda };
37752a1d7eb8SDeepak Katragadda MODULE_DEVICE_TABLE(of, gcc_sm8150_match_table);
37762a1d7eb8SDeepak Katragadda
gcc_sm8150_probe(struct platform_device * pdev)37772a1d7eb8SDeepak Katragadda static int gcc_sm8150_probe(struct platform_device *pdev)
37782a1d7eb8SDeepak Katragadda {
37792a1d7eb8SDeepak Katragadda struct regmap *regmap;
37802a1d7eb8SDeepak Katragadda
37812a1d7eb8SDeepak Katragadda regmap = qcom_cc_map(pdev, &gcc_sm8150_desc);
37822a1d7eb8SDeepak Katragadda if (IS_ERR(regmap))
37832a1d7eb8SDeepak Katragadda return PTR_ERR(regmap);
37842a1d7eb8SDeepak Katragadda
37852a1d7eb8SDeepak Katragadda /* Disable the GPLL0 active input to NPU and GPU via MISC registers */
37862a1d7eb8SDeepak Katragadda regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
37872a1d7eb8SDeepak Katragadda regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
37882a1d7eb8SDeepak Katragadda
37892a1d7eb8SDeepak Katragadda return qcom_cc_really_probe(pdev, &gcc_sm8150_desc, regmap);
37902a1d7eb8SDeepak Katragadda }
37912a1d7eb8SDeepak Katragadda
37922a1d7eb8SDeepak Katragadda static struct platform_driver gcc_sm8150_driver = {
37932a1d7eb8SDeepak Katragadda .probe = gcc_sm8150_probe,
37942a1d7eb8SDeepak Katragadda .driver = {
37952a1d7eb8SDeepak Katragadda .name = "gcc-sm8150",
37962a1d7eb8SDeepak Katragadda .of_match_table = gcc_sm8150_match_table,
37972a1d7eb8SDeepak Katragadda },
37982a1d7eb8SDeepak Katragadda };
37992a1d7eb8SDeepak Katragadda
gcc_sm8150_init(void)38002a1d7eb8SDeepak Katragadda static int __init gcc_sm8150_init(void)
38012a1d7eb8SDeepak Katragadda {
38022a1d7eb8SDeepak Katragadda return platform_driver_register(&gcc_sm8150_driver);
38032a1d7eb8SDeepak Katragadda }
38042a1d7eb8SDeepak Katragadda subsys_initcall(gcc_sm8150_init);
38052a1d7eb8SDeepak Katragadda
gcc_sm8150_exit(void)38062a1d7eb8SDeepak Katragadda static void __exit gcc_sm8150_exit(void)
38072a1d7eb8SDeepak Katragadda {
38082a1d7eb8SDeepak Katragadda platform_driver_unregister(&gcc_sm8150_driver);
38092a1d7eb8SDeepak Katragadda }
38102a1d7eb8SDeepak Katragadda module_exit(gcc_sm8150_exit);
38112a1d7eb8SDeepak Katragadda
38122a1d7eb8SDeepak Katragadda MODULE_DESCRIPTION("QTI GCC SM8150 Driver");
38132a1d7eb8SDeepak Katragadda MODULE_LICENSE("GPL v2");
3814