1955f2ea3SAbel Vesa // SPDX-License-Identifier: GPL-2.0-only 2955f2ea3SAbel Vesa /* 3955f2ea3SAbel Vesa * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4955f2ea3SAbel Vesa * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 5955f2ea3SAbel Vesa * Copyright (c) 2022, Linaro Limited 6955f2ea3SAbel Vesa */ 7955f2ea3SAbel Vesa 8955f2ea3SAbel Vesa #include <linux/clk-provider.h> 9955f2ea3SAbel Vesa #include <linux/module.h> 10a96cbb14SRob Herring #include <linux/of.h> 11a96cbb14SRob Herring #include <linux/platform_device.h> 12955f2ea3SAbel Vesa #include <linux/regmap.h> 13955f2ea3SAbel Vesa 14955f2ea3SAbel Vesa #include <dt-bindings/clock/qcom,sm8550-gcc.h> 15955f2ea3SAbel Vesa 16955f2ea3SAbel Vesa #include "clk-alpha-pll.h" 17955f2ea3SAbel Vesa #include "clk-branch.h" 18955f2ea3SAbel Vesa #include "clk-rcg.h" 19955f2ea3SAbel Vesa #include "clk-regmap.h" 20955f2ea3SAbel Vesa #include "clk-regmap-divider.h" 21955f2ea3SAbel Vesa #include "clk-regmap-mux.h" 22955f2ea3SAbel Vesa #include "clk-regmap-phy-mux.h" 23955f2ea3SAbel Vesa #include "gdsc.h" 24955f2ea3SAbel Vesa #include "reset.h" 25955f2ea3SAbel Vesa 26955f2ea3SAbel Vesa enum { 27955f2ea3SAbel Vesa DT_BI_TCXO, 28955f2ea3SAbel Vesa DT_SLEEP_CLK, 29955f2ea3SAbel Vesa DT_PCIE_0_PIPE, 30955f2ea3SAbel Vesa DT_PCIE_1_PIPE, 31955f2ea3SAbel Vesa DT_PCIE_1_PHY_AUX, 32955f2ea3SAbel Vesa DT_UFS_PHY_RX_SYMBOL_0, 33955f2ea3SAbel Vesa DT_UFS_PHY_RX_SYMBOL_1, 34955f2ea3SAbel Vesa DT_UFS_PHY_TX_SYMBOL_0, 35955f2ea3SAbel Vesa DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE, 36955f2ea3SAbel Vesa }; 37955f2ea3SAbel Vesa 38955f2ea3SAbel Vesa enum { 39955f2ea3SAbel Vesa P_BI_TCXO, 40955f2ea3SAbel Vesa P_GCC_GPLL0_OUT_EVEN, 41955f2ea3SAbel Vesa P_GCC_GPLL0_OUT_MAIN, 42955f2ea3SAbel Vesa P_GCC_GPLL4_OUT_MAIN, 43955f2ea3SAbel Vesa P_GCC_GPLL7_OUT_MAIN, 44955f2ea3SAbel Vesa P_GCC_GPLL9_OUT_MAIN, 45955f2ea3SAbel Vesa P_PCIE_0_PIPE_CLK, 46955f2ea3SAbel Vesa P_PCIE_1_PHY_AUX_CLK, 47955f2ea3SAbel Vesa P_PCIE_1_PIPE_CLK, 48955f2ea3SAbel Vesa P_SLEEP_CLK, 49955f2ea3SAbel Vesa P_UFS_PHY_RX_SYMBOL_0_CLK, 50955f2ea3SAbel Vesa P_UFS_PHY_RX_SYMBOL_1_CLK, 51955f2ea3SAbel Vesa P_UFS_PHY_TX_SYMBOL_0_CLK, 52955f2ea3SAbel Vesa P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 53955f2ea3SAbel Vesa }; 54955f2ea3SAbel Vesa 55955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll0 = { 56955f2ea3SAbel Vesa .offset = 0x0, 57955f2ea3SAbel Vesa .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 58955f2ea3SAbel Vesa .clkr = { 59955f2ea3SAbel Vesa .enable_reg = 0x52018, 60955f2ea3SAbel Vesa .enable_mask = BIT(0), 61955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 62955f2ea3SAbel Vesa .name = "gcc_gpll0", 63955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 64955f2ea3SAbel Vesa .index = DT_BI_TCXO, 65955f2ea3SAbel Vesa }, 66955f2ea3SAbel Vesa .num_parents = 1, 67955f2ea3SAbel Vesa .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 68955f2ea3SAbel Vesa }, 69955f2ea3SAbel Vesa }, 70955f2ea3SAbel Vesa }; 71955f2ea3SAbel Vesa 72955f2ea3SAbel Vesa static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = { 73955f2ea3SAbel Vesa { 0x1, 2 }, 74955f2ea3SAbel Vesa { } 75955f2ea3SAbel Vesa }; 76955f2ea3SAbel Vesa 77955f2ea3SAbel Vesa static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = { 78955f2ea3SAbel Vesa .offset = 0x0, 79955f2ea3SAbel Vesa .post_div_shift = 10, 80955f2ea3SAbel Vesa .post_div_table = post_div_table_gcc_gpll0_out_even, 81955f2ea3SAbel Vesa .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even), 82955f2ea3SAbel Vesa .width = 4, 83955f2ea3SAbel Vesa .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 84955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 85955f2ea3SAbel Vesa .name = "gcc_gpll0_out_even", 8618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 8718aa0dc2SDmitry Baryshkov &gcc_gpll0.clkr.hw, 88955f2ea3SAbel Vesa }, 89955f2ea3SAbel Vesa .num_parents = 1, 90955f2ea3SAbel Vesa .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 91955f2ea3SAbel Vesa }, 92955f2ea3SAbel Vesa }; 93955f2ea3SAbel Vesa 94955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll4 = { 95955f2ea3SAbel Vesa .offset = 0x4000, 96955f2ea3SAbel Vesa .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 97955f2ea3SAbel Vesa .clkr = { 98955f2ea3SAbel Vesa .enable_reg = 0x52018, 99955f2ea3SAbel Vesa .enable_mask = BIT(4), 100955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 101955f2ea3SAbel Vesa .name = "gcc_gpll4", 102955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 103955f2ea3SAbel Vesa .index = DT_BI_TCXO, 104955f2ea3SAbel Vesa }, 105955f2ea3SAbel Vesa .num_parents = 1, 106955f2ea3SAbel Vesa .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 107955f2ea3SAbel Vesa }, 108955f2ea3SAbel Vesa }, 109955f2ea3SAbel Vesa }; 110955f2ea3SAbel Vesa 111955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll7 = { 112955f2ea3SAbel Vesa .offset = 0x7000, 113955f2ea3SAbel Vesa .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 114955f2ea3SAbel Vesa .clkr = { 115955f2ea3SAbel Vesa .enable_reg = 0x52018, 116955f2ea3SAbel Vesa .enable_mask = BIT(7), 117955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 118955f2ea3SAbel Vesa .name = "gcc_gpll7", 119955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 120955f2ea3SAbel Vesa .index = DT_BI_TCXO, 121955f2ea3SAbel Vesa }, 122955f2ea3SAbel Vesa .num_parents = 1, 123955f2ea3SAbel Vesa .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 124955f2ea3SAbel Vesa }, 125955f2ea3SAbel Vesa }, 126955f2ea3SAbel Vesa }; 127955f2ea3SAbel Vesa 128955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll9 = { 129955f2ea3SAbel Vesa .offset = 0x9000, 130955f2ea3SAbel Vesa .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 131955f2ea3SAbel Vesa .clkr = { 132955f2ea3SAbel Vesa .enable_reg = 0x52018, 133955f2ea3SAbel Vesa .enable_mask = BIT(9), 134955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 135955f2ea3SAbel Vesa .name = "gcc_gpll9", 136955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 137955f2ea3SAbel Vesa .index = DT_BI_TCXO, 138955f2ea3SAbel Vesa }, 139955f2ea3SAbel Vesa .num_parents = 1, 140955f2ea3SAbel Vesa .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 141955f2ea3SAbel Vesa }, 142955f2ea3SAbel Vesa }, 143955f2ea3SAbel Vesa }; 144955f2ea3SAbel Vesa 145955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_0[] = { 146955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 147955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_MAIN, 1 }, 148955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_EVEN, 6 }, 149955f2ea3SAbel Vesa }; 150955f2ea3SAbel Vesa 151955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_0[] = { 152955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 153955f2ea3SAbel Vesa { .hw = &gcc_gpll0.clkr.hw }, 154955f2ea3SAbel Vesa { .hw = &gcc_gpll0_out_even.clkr.hw }, 155955f2ea3SAbel Vesa }; 156955f2ea3SAbel Vesa 157955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_1[] = { 158955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 159955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_MAIN, 1 }, 160955f2ea3SAbel Vesa { P_SLEEP_CLK, 5 }, 161955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_EVEN, 6 }, 162955f2ea3SAbel Vesa }; 163955f2ea3SAbel Vesa 164955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_1[] = { 165955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 166955f2ea3SAbel Vesa { .hw = &gcc_gpll0.clkr.hw }, 167955f2ea3SAbel Vesa { .index = DT_SLEEP_CLK }, 168955f2ea3SAbel Vesa { .hw = &gcc_gpll0_out_even.clkr.hw }, 169955f2ea3SAbel Vesa }; 170955f2ea3SAbel Vesa 171955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_2[] = { 172955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 173955f2ea3SAbel Vesa { P_SLEEP_CLK, 5 }, 174955f2ea3SAbel Vesa }; 175955f2ea3SAbel Vesa 176955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_2[] = { 177955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 178955f2ea3SAbel Vesa { .index = DT_SLEEP_CLK }, 179955f2ea3SAbel Vesa }; 180955f2ea3SAbel Vesa 181955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_3[] = { 182955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 183955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_MAIN, 1 }, 184955f2ea3SAbel Vesa { P_GCC_GPLL4_OUT_MAIN, 5 }, 185955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_EVEN, 6 }, 186955f2ea3SAbel Vesa }; 187955f2ea3SAbel Vesa 188955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_3[] = { 189955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 190955f2ea3SAbel Vesa { .hw = &gcc_gpll0.clkr.hw }, 191955f2ea3SAbel Vesa { .hw = &gcc_gpll4.clkr.hw }, 192955f2ea3SAbel Vesa { .hw = &gcc_gpll0_out_even.clkr.hw }, 193955f2ea3SAbel Vesa }; 194955f2ea3SAbel Vesa 195955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_4[] = { 196955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 197955f2ea3SAbel Vesa }; 198955f2ea3SAbel Vesa 199955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_4[] = { 200955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 201955f2ea3SAbel Vesa }; 202955f2ea3SAbel Vesa 203955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_6[] = { 204955f2ea3SAbel Vesa { P_PCIE_1_PHY_AUX_CLK, 0 }, 205955f2ea3SAbel Vesa { P_BI_TCXO, 2 }, 206955f2ea3SAbel Vesa }; 207955f2ea3SAbel Vesa 208955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_6[] = { 209955f2ea3SAbel Vesa { .index = DT_PCIE_1_PHY_AUX }, 210955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 211955f2ea3SAbel Vesa }; 212955f2ea3SAbel Vesa 213955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_8[] = { 214955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 215955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_MAIN, 1 }, 216955f2ea3SAbel Vesa { P_GCC_GPLL7_OUT_MAIN, 2 }, 217955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_EVEN, 6 }, 218955f2ea3SAbel Vesa }; 219955f2ea3SAbel Vesa 220955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_8[] = { 221955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 222955f2ea3SAbel Vesa { .hw = &gcc_gpll0.clkr.hw }, 223955f2ea3SAbel Vesa { .hw = &gcc_gpll7.clkr.hw }, 224955f2ea3SAbel Vesa { .hw = &gcc_gpll0_out_even.clkr.hw }, 225955f2ea3SAbel Vesa }; 226955f2ea3SAbel Vesa 227955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_9[] = { 228955f2ea3SAbel Vesa { P_BI_TCXO, 0 }, 229955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_MAIN, 1 }, 230955f2ea3SAbel Vesa { P_GCC_GPLL9_OUT_MAIN, 2 }, 231955f2ea3SAbel Vesa { P_GCC_GPLL4_OUT_MAIN, 5 }, 232955f2ea3SAbel Vesa { P_GCC_GPLL0_OUT_EVEN, 6 }, 233955f2ea3SAbel Vesa }; 234955f2ea3SAbel Vesa 235955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_9[] = { 236955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 237955f2ea3SAbel Vesa { .hw = &gcc_gpll0.clkr.hw }, 238955f2ea3SAbel Vesa { .hw = &gcc_gpll9.clkr.hw }, 239955f2ea3SAbel Vesa { .hw = &gcc_gpll4.clkr.hw }, 240955f2ea3SAbel Vesa { .hw = &gcc_gpll0_out_even.clkr.hw }, 241955f2ea3SAbel Vesa }; 242955f2ea3SAbel Vesa 243955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_10[] = { 244955f2ea3SAbel Vesa { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 }, 245955f2ea3SAbel Vesa { P_BI_TCXO, 2 }, 246955f2ea3SAbel Vesa }; 247955f2ea3SAbel Vesa 248955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_10[] = { 249955f2ea3SAbel Vesa { .index = DT_UFS_PHY_RX_SYMBOL_0 }, 250955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 251955f2ea3SAbel Vesa }; 252955f2ea3SAbel Vesa 253955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_11[] = { 254955f2ea3SAbel Vesa { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 }, 255955f2ea3SAbel Vesa { P_BI_TCXO, 2 }, 256955f2ea3SAbel Vesa }; 257955f2ea3SAbel Vesa 258955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_11[] = { 259955f2ea3SAbel Vesa { .index = DT_UFS_PHY_RX_SYMBOL_1 }, 260955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 261955f2ea3SAbel Vesa }; 262955f2ea3SAbel Vesa 263955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_12[] = { 264955f2ea3SAbel Vesa { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 }, 265955f2ea3SAbel Vesa { P_BI_TCXO, 2 }, 266955f2ea3SAbel Vesa }; 267955f2ea3SAbel Vesa 268955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_12[] = { 269955f2ea3SAbel Vesa { .index = DT_UFS_PHY_TX_SYMBOL_0 }, 270955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 271955f2ea3SAbel Vesa }; 272955f2ea3SAbel Vesa 273955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_13[] = { 274955f2ea3SAbel Vesa { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 }, 275955f2ea3SAbel Vesa { P_BI_TCXO, 2 }, 276955f2ea3SAbel Vesa }; 277955f2ea3SAbel Vesa 278955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_13[] = { 279955f2ea3SAbel Vesa { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE }, 280955f2ea3SAbel Vesa { .index = DT_BI_TCXO }, 281955f2ea3SAbel Vesa }; 282955f2ea3SAbel Vesa 283955f2ea3SAbel Vesa static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = { 284955f2ea3SAbel Vesa .reg = 0x6b070, 285955f2ea3SAbel Vesa .clkr = { 286955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 287955f2ea3SAbel Vesa .name = "gcc_pcie_0_pipe_clk_src", 288955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 289955f2ea3SAbel Vesa .index = DT_PCIE_0_PIPE, 290955f2ea3SAbel Vesa }, 291955f2ea3SAbel Vesa .num_parents = 1, 292955f2ea3SAbel Vesa .ops = &clk_regmap_phy_mux_ops, 293955f2ea3SAbel Vesa }, 294955f2ea3SAbel Vesa }, 295955f2ea3SAbel Vesa }; 296955f2ea3SAbel Vesa 297955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = { 298955f2ea3SAbel Vesa .reg = 0x8d094, 299955f2ea3SAbel Vesa .shift = 0, 300955f2ea3SAbel Vesa .width = 2, 301955f2ea3SAbel Vesa .parent_map = gcc_parent_map_6, 302955f2ea3SAbel Vesa .clkr = { 303955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 304955f2ea3SAbel Vesa .name = "gcc_pcie_1_phy_aux_clk_src", 305955f2ea3SAbel Vesa .parent_data = gcc_parent_data_6, 306955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_6), 307955f2ea3SAbel Vesa .ops = &clk_regmap_mux_closest_ops, 308955f2ea3SAbel Vesa }, 309955f2ea3SAbel Vesa }, 310955f2ea3SAbel Vesa }; 311955f2ea3SAbel Vesa 312955f2ea3SAbel Vesa static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = { 313955f2ea3SAbel Vesa .reg = 0x8d078, 314955f2ea3SAbel Vesa .clkr = { 315955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 316955f2ea3SAbel Vesa .name = "gcc_pcie_1_pipe_clk_src", 317955f2ea3SAbel Vesa .parent_data = &(const struct clk_parent_data){ 318955f2ea3SAbel Vesa .index = DT_PCIE_1_PIPE, 319955f2ea3SAbel Vesa }, 320955f2ea3SAbel Vesa .num_parents = 1, 321955f2ea3SAbel Vesa .ops = &clk_regmap_phy_mux_ops, 322955f2ea3SAbel Vesa }, 323955f2ea3SAbel Vesa }, 324955f2ea3SAbel Vesa }; 325955f2ea3SAbel Vesa 326955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = { 327955f2ea3SAbel Vesa .reg = 0x77064, 328955f2ea3SAbel Vesa .shift = 0, 329955f2ea3SAbel Vesa .width = 2, 330955f2ea3SAbel Vesa .parent_map = gcc_parent_map_10, 331955f2ea3SAbel Vesa .clkr = { 332955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 333955f2ea3SAbel Vesa .name = "gcc_ufs_phy_rx_symbol_0_clk_src", 334955f2ea3SAbel Vesa .parent_data = gcc_parent_data_10, 335955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_10), 336955f2ea3SAbel Vesa .ops = &clk_regmap_mux_closest_ops, 337955f2ea3SAbel Vesa }, 338955f2ea3SAbel Vesa }, 339955f2ea3SAbel Vesa }; 340955f2ea3SAbel Vesa 341955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = { 342955f2ea3SAbel Vesa .reg = 0x770e0, 343955f2ea3SAbel Vesa .shift = 0, 344955f2ea3SAbel Vesa .width = 2, 345955f2ea3SAbel Vesa .parent_map = gcc_parent_map_11, 346955f2ea3SAbel Vesa .clkr = { 347955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 348955f2ea3SAbel Vesa .name = "gcc_ufs_phy_rx_symbol_1_clk_src", 349955f2ea3SAbel Vesa .parent_data = gcc_parent_data_11, 350955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_11), 351955f2ea3SAbel Vesa .ops = &clk_regmap_mux_closest_ops, 352955f2ea3SAbel Vesa }, 353955f2ea3SAbel Vesa }, 354955f2ea3SAbel Vesa }; 355955f2ea3SAbel Vesa 356955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = { 357955f2ea3SAbel Vesa .reg = 0x77054, 358955f2ea3SAbel Vesa .shift = 0, 359955f2ea3SAbel Vesa .width = 2, 360955f2ea3SAbel Vesa .parent_map = gcc_parent_map_12, 361955f2ea3SAbel Vesa .clkr = { 362955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 363955f2ea3SAbel Vesa .name = "gcc_ufs_phy_tx_symbol_0_clk_src", 364955f2ea3SAbel Vesa .parent_data = gcc_parent_data_12, 365955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_12), 366955f2ea3SAbel Vesa .ops = &clk_regmap_mux_closest_ops, 367955f2ea3SAbel Vesa }, 368955f2ea3SAbel Vesa }, 369955f2ea3SAbel Vesa }; 370955f2ea3SAbel Vesa 371955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = { 372955f2ea3SAbel Vesa .reg = 0x3906c, 373955f2ea3SAbel Vesa .shift = 0, 374955f2ea3SAbel Vesa .width = 2, 375955f2ea3SAbel Vesa .parent_map = gcc_parent_map_13, 376955f2ea3SAbel Vesa .clkr = { 377955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 378955f2ea3SAbel Vesa .name = "gcc_usb3_prim_phy_pipe_clk_src", 379955f2ea3SAbel Vesa .parent_data = gcc_parent_data_13, 380955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_13), 381955f2ea3SAbel Vesa .ops = &clk_regmap_mux_closest_ops, 382955f2ea3SAbel Vesa }, 383955f2ea3SAbel Vesa }, 384955f2ea3SAbel Vesa }; 385955f2ea3SAbel Vesa 386955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 387955f2ea3SAbel Vesa F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 388955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 389955f2ea3SAbel Vesa F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 390955f2ea3SAbel Vesa { } 391955f2ea3SAbel Vesa }; 392955f2ea3SAbel Vesa 393955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp1_clk_src = { 394955f2ea3SAbel Vesa .cmd_rcgr = 0x64004, 395955f2ea3SAbel Vesa .mnd_width = 16, 396955f2ea3SAbel Vesa .hid_width = 5, 397955f2ea3SAbel Vesa .parent_map = gcc_parent_map_1, 398955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_gp1_clk_src, 399955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 400955f2ea3SAbel Vesa .name = "gcc_gp1_clk_src", 401955f2ea3SAbel Vesa .parent_data = gcc_parent_data_1, 402955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_1), 403955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 404955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 405955f2ea3SAbel Vesa }, 406955f2ea3SAbel Vesa }; 407955f2ea3SAbel Vesa 408955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp2_clk_src = { 409955f2ea3SAbel Vesa .cmd_rcgr = 0x65004, 410955f2ea3SAbel Vesa .mnd_width = 16, 411955f2ea3SAbel Vesa .hid_width = 5, 412955f2ea3SAbel Vesa .parent_map = gcc_parent_map_1, 413955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_gp1_clk_src, 414955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 415955f2ea3SAbel Vesa .name = "gcc_gp2_clk_src", 416955f2ea3SAbel Vesa .parent_data = gcc_parent_data_1, 417955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_1), 418955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 419955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 420955f2ea3SAbel Vesa }, 421955f2ea3SAbel Vesa }; 422955f2ea3SAbel Vesa 423955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp3_clk_src = { 424955f2ea3SAbel Vesa .cmd_rcgr = 0x66004, 425955f2ea3SAbel Vesa .mnd_width = 16, 426955f2ea3SAbel Vesa .hid_width = 5, 427955f2ea3SAbel Vesa .parent_map = gcc_parent_map_1, 428955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_gp1_clk_src, 429955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 430955f2ea3SAbel Vesa .name = "gcc_gp3_clk_src", 431955f2ea3SAbel Vesa .parent_data = gcc_parent_data_1, 432955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_1), 433955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 434955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 435955f2ea3SAbel Vesa }, 436955f2ea3SAbel Vesa }; 437955f2ea3SAbel Vesa 438955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = { 439955f2ea3SAbel Vesa F(19200000, P_BI_TCXO, 1, 0, 0), 440955f2ea3SAbel Vesa { } 441955f2ea3SAbel Vesa }; 442955f2ea3SAbel Vesa 443955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_0_aux_clk_src = { 444955f2ea3SAbel Vesa .cmd_rcgr = 0x6b074, 445955f2ea3SAbel Vesa .mnd_width = 16, 446955f2ea3SAbel Vesa .hid_width = 5, 447955f2ea3SAbel Vesa .parent_map = gcc_parent_map_2, 448955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 449955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 450955f2ea3SAbel Vesa .name = "gcc_pcie_0_aux_clk_src", 451955f2ea3SAbel Vesa .parent_data = gcc_parent_data_2, 452955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_2), 453955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 454955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 455955f2ea3SAbel Vesa }, 456955f2ea3SAbel Vesa }; 457955f2ea3SAbel Vesa 458955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = { 459955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 460955f2ea3SAbel Vesa { } 461955f2ea3SAbel Vesa }; 462955f2ea3SAbel Vesa 463955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = { 464955f2ea3SAbel Vesa .cmd_rcgr = 0x6b058, 465955f2ea3SAbel Vesa .mnd_width = 0, 466955f2ea3SAbel Vesa .hid_width = 5, 467955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 468955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 469955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 470955f2ea3SAbel Vesa .name = "gcc_pcie_0_phy_rchng_clk_src", 471955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 472955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 473955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 474955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 475955f2ea3SAbel Vesa }, 476955f2ea3SAbel Vesa }; 477955f2ea3SAbel Vesa 478955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_1_aux_clk_src = { 479955f2ea3SAbel Vesa .cmd_rcgr = 0x8d07c, 480955f2ea3SAbel Vesa .mnd_width = 16, 481955f2ea3SAbel Vesa .hid_width = 5, 482955f2ea3SAbel Vesa .parent_map = gcc_parent_map_2, 483955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 484955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 485955f2ea3SAbel Vesa .name = "gcc_pcie_1_aux_clk_src", 486955f2ea3SAbel Vesa .parent_data = gcc_parent_data_2, 487955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_2), 488955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 489955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 490955f2ea3SAbel Vesa }, 491955f2ea3SAbel Vesa }; 492955f2ea3SAbel Vesa 493955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = { 494955f2ea3SAbel Vesa .cmd_rcgr = 0x8d060, 495955f2ea3SAbel Vesa .mnd_width = 0, 496955f2ea3SAbel Vesa .hid_width = 5, 497955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 498955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 499955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 500955f2ea3SAbel Vesa .name = "gcc_pcie_1_phy_rchng_clk_src", 501955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 502955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 503955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 504955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 505955f2ea3SAbel Vesa }, 506955f2ea3SAbel Vesa }; 507955f2ea3SAbel Vesa 508955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 509955f2ea3SAbel Vesa F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0), 510955f2ea3SAbel Vesa { } 511955f2ea3SAbel Vesa }; 512955f2ea3SAbel Vesa 513955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pdm2_clk_src = { 514955f2ea3SAbel Vesa .cmd_rcgr = 0x33010, 515955f2ea3SAbel Vesa .mnd_width = 0, 516955f2ea3SAbel Vesa .hid_width = 5, 517955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 518955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pdm2_clk_src, 519955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 520955f2ea3SAbel Vesa .name = "gcc_pdm2_clk_src", 521955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 522955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 523955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 524955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 525955f2ea3SAbel Vesa }, 526955f2ea3SAbel Vesa }; 527955f2ea3SAbel Vesa 528955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = { 529955f2ea3SAbel Vesa .cmd_rcgr = 0x17008, 530955f2ea3SAbel Vesa .mnd_width = 0, 531955f2ea3SAbel Vesa .hid_width = 5, 532955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 533955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 534955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 535955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s0_clk_src", 536955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 537955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 538955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 539955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 540955f2ea3SAbel Vesa }, 541955f2ea3SAbel Vesa }; 542955f2ea3SAbel Vesa 543955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = { 544955f2ea3SAbel Vesa .cmd_rcgr = 0x17024, 545955f2ea3SAbel Vesa .mnd_width = 0, 546955f2ea3SAbel Vesa .hid_width = 5, 547955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 548955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 549955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 550955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s1_clk_src", 551955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 552955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 553955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 554955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 555955f2ea3SAbel Vesa }, 556955f2ea3SAbel Vesa }; 557955f2ea3SAbel Vesa 558955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = { 559955f2ea3SAbel Vesa .cmd_rcgr = 0x17040, 560955f2ea3SAbel Vesa .mnd_width = 0, 561955f2ea3SAbel Vesa .hid_width = 5, 562955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 563955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 564955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 565955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s2_clk_src", 566955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 567955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 568955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 569955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 570955f2ea3SAbel Vesa }, 571955f2ea3SAbel Vesa }; 572955f2ea3SAbel Vesa 573955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = { 574955f2ea3SAbel Vesa .cmd_rcgr = 0x1705c, 575955f2ea3SAbel Vesa .mnd_width = 0, 576955f2ea3SAbel Vesa .hid_width = 5, 577955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 578955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 579955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 580955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s3_clk_src", 581955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 582955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 583955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 584955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 585955f2ea3SAbel Vesa }, 586955f2ea3SAbel Vesa }; 587955f2ea3SAbel Vesa 588955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = { 589955f2ea3SAbel Vesa .cmd_rcgr = 0x17078, 590955f2ea3SAbel Vesa .mnd_width = 0, 591955f2ea3SAbel Vesa .hid_width = 5, 592955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 593955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 594955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 595955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s4_clk_src", 596955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 597955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 598955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 599955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 600955f2ea3SAbel Vesa }, 601955f2ea3SAbel Vesa }; 602955f2ea3SAbel Vesa 603955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = { 604955f2ea3SAbel Vesa .cmd_rcgr = 0x17094, 605955f2ea3SAbel Vesa .mnd_width = 0, 606955f2ea3SAbel Vesa .hid_width = 5, 607955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 608955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 609955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 610955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s5_clk_src", 611955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 612955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 613955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 614955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 615955f2ea3SAbel Vesa }, 616955f2ea3SAbel Vesa }; 617955f2ea3SAbel Vesa 618955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = { 619955f2ea3SAbel Vesa .cmd_rcgr = 0x170b0, 620955f2ea3SAbel Vesa .mnd_width = 0, 621955f2ea3SAbel Vesa .hid_width = 5, 622955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 623955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 624955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 625955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s6_clk_src", 626955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 627955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 628955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 629955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 630955f2ea3SAbel Vesa }, 631955f2ea3SAbel Vesa }; 632955f2ea3SAbel Vesa 633955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = { 634955f2ea3SAbel Vesa .cmd_rcgr = 0x170cc, 635955f2ea3SAbel Vesa .mnd_width = 0, 636955f2ea3SAbel Vesa .hid_width = 5, 637955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 638955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 639955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 640955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s7_clk_src", 641955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 642955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 643955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 644955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 645955f2ea3SAbel Vesa }, 646955f2ea3SAbel Vesa }; 647955f2ea3SAbel Vesa 648955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = { 649955f2ea3SAbel Vesa .cmd_rcgr = 0x170e8, 650955f2ea3SAbel Vesa .mnd_width = 0, 651955f2ea3SAbel Vesa .hid_width = 5, 652955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 653955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 654955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 655955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s8_clk_src", 656955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 657955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 658955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 659955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 660955f2ea3SAbel Vesa }, 661955f2ea3SAbel Vesa }; 662955f2ea3SAbel Vesa 663955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = { 664955f2ea3SAbel Vesa .cmd_rcgr = 0x17104, 665955f2ea3SAbel Vesa .mnd_width = 0, 666955f2ea3SAbel Vesa .hid_width = 5, 667955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 668955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 669955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 670955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s9_clk_src", 671955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 672955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 673955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 674955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 675955f2ea3SAbel Vesa }, 676955f2ea3SAbel Vesa }; 677955f2ea3SAbel Vesa 678955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = { 679955f2ea3SAbel Vesa F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 680955f2ea3SAbel Vesa F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 681955f2ea3SAbel Vesa F(19200000, P_BI_TCXO, 1, 0, 0), 682955f2ea3SAbel Vesa F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 683955f2ea3SAbel Vesa F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 684955f2ea3SAbel Vesa F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 685955f2ea3SAbel Vesa F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 686955f2ea3SAbel Vesa F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 687955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 688955f2ea3SAbel Vesa F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 689955f2ea3SAbel Vesa F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 690955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 691955f2ea3SAbel Vesa F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 692955f2ea3SAbel Vesa F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 693955f2ea3SAbel Vesa F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 694955f2ea3SAbel Vesa F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 695955f2ea3SAbel Vesa { } 696955f2ea3SAbel Vesa }; 697955f2ea3SAbel Vesa 698955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 699955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s0_clk_src", 700955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 701955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 702955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 703955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 704955f2ea3SAbel Vesa }; 705955f2ea3SAbel Vesa 706955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 707955f2ea3SAbel Vesa .cmd_rcgr = 0x18010, 708955f2ea3SAbel Vesa .mnd_width = 16, 709955f2ea3SAbel Vesa .hid_width = 5, 710955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 711955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 712955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 713955f2ea3SAbel Vesa }; 714955f2ea3SAbel Vesa 715955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 716955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s1_clk_src", 717955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 718955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 719955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 720955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 721955f2ea3SAbel Vesa }; 722955f2ea3SAbel Vesa 723955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 724955f2ea3SAbel Vesa .cmd_rcgr = 0x18148, 725955f2ea3SAbel Vesa .mnd_width = 16, 726955f2ea3SAbel Vesa .hid_width = 5, 727955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 728955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 729955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 730955f2ea3SAbel Vesa }; 731955f2ea3SAbel Vesa 732955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s2_clk_src[] = { 733955f2ea3SAbel Vesa F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 734955f2ea3SAbel Vesa F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 735955f2ea3SAbel Vesa F(19200000, P_BI_TCXO, 1, 0, 0), 736955f2ea3SAbel Vesa F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 737955f2ea3SAbel Vesa F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 738955f2ea3SAbel Vesa F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 739955f2ea3SAbel Vesa F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 740955f2ea3SAbel Vesa F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 741955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 742955f2ea3SAbel Vesa F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 743955f2ea3SAbel Vesa F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 744955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 745955f2ea3SAbel Vesa { } 746955f2ea3SAbel Vesa }; 747955f2ea3SAbel Vesa 748955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = { 749955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s2_clk_src", 750955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 751955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 752955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 753955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 754955f2ea3SAbel Vesa }; 755955f2ea3SAbel Vesa 756955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = { 757955f2ea3SAbel Vesa .cmd_rcgr = 0x18280, 758955f2ea3SAbel Vesa .mnd_width = 16, 759955f2ea3SAbel Vesa .hid_width = 5, 760955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 761955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 762955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init, 763955f2ea3SAbel Vesa }; 764955f2ea3SAbel Vesa 765955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 766955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s3_clk_src", 767955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 768955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 769955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 770955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 771955f2ea3SAbel Vesa }; 772955f2ea3SAbel Vesa 773955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 774955f2ea3SAbel Vesa .cmd_rcgr = 0x183b8, 775955f2ea3SAbel Vesa .mnd_width = 16, 776955f2ea3SAbel Vesa .hid_width = 5, 777955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 778955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 779955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 780955f2ea3SAbel Vesa }; 781955f2ea3SAbel Vesa 782955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 783955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s4_clk_src", 784955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 785955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 786955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 787955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 788955f2ea3SAbel Vesa }; 789955f2ea3SAbel Vesa 790955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 791955f2ea3SAbel Vesa .cmd_rcgr = 0x184f0, 792955f2ea3SAbel Vesa .mnd_width = 16, 793955f2ea3SAbel Vesa .hid_width = 5, 794955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 795955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 796955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 797955f2ea3SAbel Vesa }; 798955f2ea3SAbel Vesa 799955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 800955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s5_clk_src", 801955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 802955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 803955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 804955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 805955f2ea3SAbel Vesa }; 806955f2ea3SAbel Vesa 807955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 808955f2ea3SAbel Vesa .cmd_rcgr = 0x18628, 809955f2ea3SAbel Vesa .mnd_width = 16, 810955f2ea3SAbel Vesa .hid_width = 5, 811955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 812955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 813955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 814955f2ea3SAbel Vesa }; 815955f2ea3SAbel Vesa 816955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { 817955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s6_clk_src", 818955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 819955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 820955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 821955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 822955f2ea3SAbel Vesa }; 823955f2ea3SAbel Vesa 824955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { 825955f2ea3SAbel Vesa .cmd_rcgr = 0x18760, 826955f2ea3SAbel Vesa .mnd_width = 16, 827955f2ea3SAbel Vesa .hid_width = 5, 828955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 829955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 830955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init, 831955f2ea3SAbel Vesa }; 832955f2ea3SAbel Vesa 833955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { 834955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s7_clk_src", 835955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 836955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 837955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 838955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 839955f2ea3SAbel Vesa }; 840955f2ea3SAbel Vesa 841955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { 842955f2ea3SAbel Vesa .cmd_rcgr = 0x18898, 843955f2ea3SAbel Vesa .mnd_width = 16, 844955f2ea3SAbel Vesa .hid_width = 5, 845955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 846955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 847955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init, 848955f2ea3SAbel Vesa }; 849955f2ea3SAbel Vesa 850955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = { 851955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s0_clk_src", 852955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 853955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 854955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 855955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 856955f2ea3SAbel Vesa }; 857955f2ea3SAbel Vesa 858955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = { 859955f2ea3SAbel Vesa .cmd_rcgr = 0x1e010, 860955f2ea3SAbel Vesa .mnd_width = 16, 861955f2ea3SAbel Vesa .hid_width = 5, 862955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 863955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 864955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init, 865955f2ea3SAbel Vesa }; 866955f2ea3SAbel Vesa 867955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = { 868955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s1_clk_src", 869955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 870955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 871955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 872955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 873955f2ea3SAbel Vesa }; 874955f2ea3SAbel Vesa 875955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = { 876955f2ea3SAbel Vesa .cmd_rcgr = 0x1e148, 877955f2ea3SAbel Vesa .mnd_width = 16, 878955f2ea3SAbel Vesa .hid_width = 5, 879955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 880955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 881955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init, 882955f2ea3SAbel Vesa }; 883955f2ea3SAbel Vesa 884955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = { 885955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s2_clk_src", 886955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 887955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 888955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 889955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 890955f2ea3SAbel Vesa }; 891955f2ea3SAbel Vesa 892955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = { 893955f2ea3SAbel Vesa .cmd_rcgr = 0x1e280, 894955f2ea3SAbel Vesa .mnd_width = 16, 895955f2ea3SAbel Vesa .hid_width = 5, 896955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 897955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 898955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init, 899955f2ea3SAbel Vesa }; 900955f2ea3SAbel Vesa 901955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = { 902955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s3_clk_src", 903955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 904955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 905955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 906955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 907955f2ea3SAbel Vesa }; 908955f2ea3SAbel Vesa 909955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = { 910955f2ea3SAbel Vesa .cmd_rcgr = 0x1e3b8, 911955f2ea3SAbel Vesa .mnd_width = 16, 912955f2ea3SAbel Vesa .hid_width = 5, 913955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 914955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 915955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init, 916955f2ea3SAbel Vesa }; 917955f2ea3SAbel Vesa 918955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = { 919955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s4_clk_src", 920955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 921955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 922955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 923955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 924955f2ea3SAbel Vesa }; 925955f2ea3SAbel Vesa 926955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = { 927955f2ea3SAbel Vesa .cmd_rcgr = 0x1e4f0, 928955f2ea3SAbel Vesa .mnd_width = 16, 929955f2ea3SAbel Vesa .hid_width = 5, 930955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 931955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 932955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init, 933955f2ea3SAbel Vesa }; 934955f2ea3SAbel Vesa 935955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = { 936955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s5_clk_src", 937955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 938955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 939955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 940955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 941955f2ea3SAbel Vesa }; 942955f2ea3SAbel Vesa 943955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = { 944955f2ea3SAbel Vesa .cmd_rcgr = 0x1e628, 945955f2ea3SAbel Vesa .mnd_width = 16, 946955f2ea3SAbel Vesa .hid_width = 5, 947955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 948955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 949955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init, 950955f2ea3SAbel Vesa }; 951955f2ea3SAbel Vesa 952955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap2_s6_clk_src[] = { 953955f2ea3SAbel Vesa F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 954955f2ea3SAbel Vesa F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 955955f2ea3SAbel Vesa F(19200000, P_BI_TCXO, 1, 0, 0), 956955f2ea3SAbel Vesa F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 957955f2ea3SAbel Vesa F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 958955f2ea3SAbel Vesa F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 959955f2ea3SAbel Vesa F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 960955f2ea3SAbel Vesa F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 961955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 962955f2ea3SAbel Vesa F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 963955f2ea3SAbel Vesa F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 964955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 965955f2ea3SAbel Vesa F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 966955f2ea3SAbel Vesa F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 967955f2ea3SAbel Vesa F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 968955f2ea3SAbel Vesa F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 969955f2ea3SAbel Vesa F(125000000, P_GCC_GPLL0_OUT_MAIN, 1, 5, 24), 970955f2ea3SAbel Vesa { } 971955f2ea3SAbel Vesa }; 972955f2ea3SAbel Vesa 973955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = { 974955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s6_clk_src", 975955f2ea3SAbel Vesa .parent_data = gcc_parent_data_8, 976955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_8), 977955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 978955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 979955f2ea3SAbel Vesa }; 980955f2ea3SAbel Vesa 981955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = { 982955f2ea3SAbel Vesa .cmd_rcgr = 0x1e760, 983955f2ea3SAbel Vesa .mnd_width = 16, 984955f2ea3SAbel Vesa .hid_width = 5, 985955f2ea3SAbel Vesa .parent_map = gcc_parent_map_8, 986955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap2_s6_clk_src, 987955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init, 988955f2ea3SAbel Vesa }; 989955f2ea3SAbel Vesa 990955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = { 991955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s7_clk_src", 992955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 993955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 994955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 995955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 996955f2ea3SAbel Vesa }; 997955f2ea3SAbel Vesa 998955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = { 999955f2ea3SAbel Vesa .cmd_rcgr = 0x1e898, 1000955f2ea3SAbel Vesa .mnd_width = 16, 1001955f2ea3SAbel Vesa .hid_width = 5, 1002955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1003955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src, 1004955f2ea3SAbel Vesa .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init, 1005955f2ea3SAbel Vesa }; 1006955f2ea3SAbel Vesa 1007955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 1008955f2ea3SAbel Vesa F(400000, P_BI_TCXO, 12, 1, 4), 1009955f2ea3SAbel Vesa F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1010955f2ea3SAbel Vesa F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), 1011955f2ea3SAbel Vesa F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 1012955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1013955f2ea3SAbel Vesa F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0), 1014955f2ea3SAbel Vesa { } 1015955f2ea3SAbel Vesa }; 1016955f2ea3SAbel Vesa 1017955f2ea3SAbel Vesa static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 1018955f2ea3SAbel Vesa .cmd_rcgr = 0x14018, 1019955f2ea3SAbel Vesa .mnd_width = 8, 1020955f2ea3SAbel Vesa .hid_width = 5, 1021955f2ea3SAbel Vesa .parent_map = gcc_parent_map_9, 1022955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 1023955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1024955f2ea3SAbel Vesa .name = "gcc_sdcc2_apps_clk_src", 1025955f2ea3SAbel Vesa .parent_data = gcc_parent_data_9, 1026955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_9), 1027955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1028955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1029955f2ea3SAbel Vesa }, 1030955f2ea3SAbel Vesa }; 1031955f2ea3SAbel Vesa 1032955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { 1033955f2ea3SAbel Vesa F(400000, P_BI_TCXO, 12, 1, 4), 1034955f2ea3SAbel Vesa F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1035955f2ea3SAbel Vesa F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), 1036955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1037955f2ea3SAbel Vesa { } 1038955f2ea3SAbel Vesa }; 1039955f2ea3SAbel Vesa 1040955f2ea3SAbel Vesa static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { 1041955f2ea3SAbel Vesa .cmd_rcgr = 0x16018, 1042955f2ea3SAbel Vesa .mnd_width = 8, 1043955f2ea3SAbel Vesa .hid_width = 5, 1044955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1045955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src, 1046955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1047955f2ea3SAbel Vesa .name = "gcc_sdcc4_apps_clk_src", 1048955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 1049955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1050955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1051955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1052955f2ea3SAbel Vesa }, 1053955f2ea3SAbel Vesa }; 1054955f2ea3SAbel Vesa 1055955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = { 1056955f2ea3SAbel Vesa F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1057955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1058955f2ea3SAbel Vesa F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 1059955f2ea3SAbel Vesa F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 1060955f2ea3SAbel Vesa { } 1061955f2ea3SAbel Vesa }; 1062955f2ea3SAbel Vesa 1063955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 1064955f2ea3SAbel Vesa .cmd_rcgr = 0x77030, 1065955f2ea3SAbel Vesa .mnd_width = 8, 1066955f2ea3SAbel Vesa .hid_width = 5, 1067955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1068955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src, 1069955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1070955f2ea3SAbel Vesa .name = "gcc_ufs_phy_axi_clk_src", 1071955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 1072955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1073955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1074955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1075955f2ea3SAbel Vesa }, 1076955f2ea3SAbel Vesa }; 1077955f2ea3SAbel Vesa 1078955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = { 1079955f2ea3SAbel Vesa F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1080955f2ea3SAbel Vesa F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0), 1081955f2ea3SAbel Vesa F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0), 1082955f2ea3SAbel Vesa { } 1083955f2ea3SAbel Vesa }; 1084955f2ea3SAbel Vesa 1085955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 1086955f2ea3SAbel Vesa .cmd_rcgr = 0x77080, 1087955f2ea3SAbel Vesa .mnd_width = 0, 1088955f2ea3SAbel Vesa .hid_width = 5, 1089955f2ea3SAbel Vesa .parent_map = gcc_parent_map_3, 1090955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src, 1091955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1092955f2ea3SAbel Vesa .name = "gcc_ufs_phy_ice_core_clk_src", 1093955f2ea3SAbel Vesa .parent_data = gcc_parent_data_3, 1094955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_3), 1095955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1096955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1097955f2ea3SAbel Vesa }, 1098955f2ea3SAbel Vesa }; 1099955f2ea3SAbel Vesa 1100955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = { 1101955f2ea3SAbel Vesa F(9600000, P_BI_TCXO, 2, 0, 0), 1102955f2ea3SAbel Vesa F(19200000, P_BI_TCXO, 1, 0, 0), 1103955f2ea3SAbel Vesa { } 1104955f2ea3SAbel Vesa }; 1105955f2ea3SAbel Vesa 1106955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 1107955f2ea3SAbel Vesa .cmd_rcgr = 0x770b4, 1108955f2ea3SAbel Vesa .mnd_width = 0, 1109955f2ea3SAbel Vesa .hid_width = 5, 1110955f2ea3SAbel Vesa .parent_map = gcc_parent_map_4, 1111955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src, 1112955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1113955f2ea3SAbel Vesa .name = "gcc_ufs_phy_phy_aux_clk_src", 1114955f2ea3SAbel Vesa .parent_data = gcc_parent_data_4, 1115955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_4), 1116955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1117955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1118955f2ea3SAbel Vesa }, 1119955f2ea3SAbel Vesa }; 1120955f2ea3SAbel Vesa 1121955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = { 1122955f2ea3SAbel Vesa F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1123955f2ea3SAbel Vesa F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 1124955f2ea3SAbel Vesa F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 1125955f2ea3SAbel Vesa { } 1126955f2ea3SAbel Vesa }; 1127955f2ea3SAbel Vesa 1128955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = { 1129955f2ea3SAbel Vesa .cmd_rcgr = 0x77098, 1130955f2ea3SAbel Vesa .mnd_width = 0, 1131955f2ea3SAbel Vesa .hid_width = 5, 1132955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1133955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src, 1134955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1135955f2ea3SAbel Vesa .name = "gcc_ufs_phy_unipro_core_clk_src", 1136955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 1137955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1138955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1139955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1140955f2ea3SAbel Vesa }, 1141955f2ea3SAbel Vesa }; 1142955f2ea3SAbel Vesa 1143955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = { 1144955f2ea3SAbel Vesa F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0), 1145955f2ea3SAbel Vesa F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0), 1146955f2ea3SAbel Vesa F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 1147955f2ea3SAbel Vesa F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 1148955f2ea3SAbel Vesa { } 1149955f2ea3SAbel Vesa }; 1150955f2ea3SAbel Vesa 1151955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 1152955f2ea3SAbel Vesa .cmd_rcgr = 0x3902c, 1153955f2ea3SAbel Vesa .mnd_width = 8, 1154955f2ea3SAbel Vesa .hid_width = 5, 1155955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1156955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 1157955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1158955f2ea3SAbel Vesa .name = "gcc_usb30_prim_master_clk_src", 1159955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 1160955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1161955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1162955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1163955f2ea3SAbel Vesa }, 1164955f2ea3SAbel Vesa }; 1165955f2ea3SAbel Vesa 1166955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 1167955f2ea3SAbel Vesa .cmd_rcgr = 0x39044, 1168955f2ea3SAbel Vesa .mnd_width = 0, 1169955f2ea3SAbel Vesa .hid_width = 5, 1170955f2ea3SAbel Vesa .parent_map = gcc_parent_map_0, 1171955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1172955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1173955f2ea3SAbel Vesa .name = "gcc_usb30_prim_mock_utmi_clk_src", 1174955f2ea3SAbel Vesa .parent_data = gcc_parent_data_0, 1175955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1176955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1177955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1178955f2ea3SAbel Vesa }, 1179955f2ea3SAbel Vesa }; 1180955f2ea3SAbel Vesa 1181955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 1182955f2ea3SAbel Vesa .cmd_rcgr = 0x39070, 1183955f2ea3SAbel Vesa .mnd_width = 0, 1184955f2ea3SAbel Vesa .hid_width = 5, 1185955f2ea3SAbel Vesa .parent_map = gcc_parent_map_2, 1186955f2ea3SAbel Vesa .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1187955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data){ 1188955f2ea3SAbel Vesa .name = "gcc_usb3_prim_phy_aux_clk_src", 1189955f2ea3SAbel Vesa .parent_data = gcc_parent_data_2, 1190955f2ea3SAbel Vesa .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1191955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1192955f2ea3SAbel Vesa .ops = &clk_rcg2_ops, 1193955f2ea3SAbel Vesa }, 1194955f2ea3SAbel Vesa }; 1195955f2ea3SAbel Vesa 1196955f2ea3SAbel Vesa static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = { 1197955f2ea3SAbel Vesa .reg = 0x3905c, 1198955f2ea3SAbel Vesa .shift = 0, 1199955f2ea3SAbel Vesa .width = 4, 1200955f2ea3SAbel Vesa .clkr.hw.init = &(struct clk_init_data) { 1201955f2ea3SAbel Vesa .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src", 120218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 120318aa0dc2SDmitry Baryshkov &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 1204955f2ea3SAbel Vesa }, 1205955f2ea3SAbel Vesa .num_parents = 1, 1206955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1207955f2ea3SAbel Vesa .ops = &clk_regmap_div_ro_ops, 1208955f2ea3SAbel Vesa }, 1209955f2ea3SAbel Vesa }; 1210955f2ea3SAbel Vesa 1211955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_noc_pcie_axi_clk = { 1212955f2ea3SAbel Vesa .halt_reg = 0x1003c, 1213955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1214955f2ea3SAbel Vesa .hwcg_reg = 0x1003c, 1215955f2ea3SAbel Vesa .hwcg_bit = 1, 1216955f2ea3SAbel Vesa .clkr = { 1217955f2ea3SAbel Vesa .enable_reg = 0x52000, 1218955f2ea3SAbel Vesa .enable_mask = BIT(12), 1219955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1220955f2ea3SAbel Vesa .name = "gcc_aggre_noc_pcie_axi_clk", 1221955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1222955f2ea3SAbel Vesa }, 1223955f2ea3SAbel Vesa }, 1224955f2ea3SAbel Vesa }; 1225955f2ea3SAbel Vesa 1226955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 1227955f2ea3SAbel Vesa .halt_reg = 0x770e4, 1228955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1229955f2ea3SAbel Vesa .hwcg_reg = 0x770e4, 1230955f2ea3SAbel Vesa .hwcg_bit = 1, 1231955f2ea3SAbel Vesa .clkr = { 1232955f2ea3SAbel Vesa .enable_reg = 0x770e4, 1233955f2ea3SAbel Vesa .enable_mask = BIT(0), 1234955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1235955f2ea3SAbel Vesa .name = "gcc_aggre_ufs_phy_axi_clk", 123618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 123718aa0dc2SDmitry Baryshkov &gcc_ufs_phy_axi_clk_src.clkr.hw, 1238955f2ea3SAbel Vesa }, 1239955f2ea3SAbel Vesa .num_parents = 1, 1240955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1241955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1242955f2ea3SAbel Vesa }, 1243955f2ea3SAbel Vesa }, 1244955f2ea3SAbel Vesa }; 1245955f2ea3SAbel Vesa 1246955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = { 1247955f2ea3SAbel Vesa .halt_reg = 0x770e4, 1248955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1249955f2ea3SAbel Vesa .hwcg_reg = 0x770e4, 1250955f2ea3SAbel Vesa .hwcg_bit = 1, 1251955f2ea3SAbel Vesa .clkr = { 1252955f2ea3SAbel Vesa .enable_reg = 0x770e4, 1253955f2ea3SAbel Vesa .enable_mask = BIT(1), 1254955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1255955f2ea3SAbel Vesa .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk", 125618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 125718aa0dc2SDmitry Baryshkov &gcc_ufs_phy_axi_clk_src.clkr.hw, 1258955f2ea3SAbel Vesa }, 1259955f2ea3SAbel Vesa .num_parents = 1, 1260955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1261955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1262955f2ea3SAbel Vesa }, 1263955f2ea3SAbel Vesa }, 1264955f2ea3SAbel Vesa }; 1265955f2ea3SAbel Vesa 1266955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_usb3_prim_axi_clk = { 1267955f2ea3SAbel Vesa .halt_reg = 0x3908c, 1268955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1269955f2ea3SAbel Vesa .hwcg_reg = 0x3908c, 1270955f2ea3SAbel Vesa .hwcg_bit = 1, 1271955f2ea3SAbel Vesa .clkr = { 1272955f2ea3SAbel Vesa .enable_reg = 0x3908c, 1273955f2ea3SAbel Vesa .enable_mask = BIT(0), 1274955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1275955f2ea3SAbel Vesa .name = "gcc_aggre_usb3_prim_axi_clk", 127618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 127718aa0dc2SDmitry Baryshkov &gcc_usb30_prim_master_clk_src.clkr.hw, 1278955f2ea3SAbel Vesa }, 1279955f2ea3SAbel Vesa .num_parents = 1, 1280955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1281955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1282955f2ea3SAbel Vesa }, 1283955f2ea3SAbel Vesa }, 1284955f2ea3SAbel Vesa }; 1285955f2ea3SAbel Vesa 1286955f2ea3SAbel Vesa static struct clk_branch gcc_boot_rom_ahb_clk = { 1287955f2ea3SAbel Vesa .halt_reg = 0x38004, 1288955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1289955f2ea3SAbel Vesa .hwcg_reg = 0x38004, 1290955f2ea3SAbel Vesa .hwcg_bit = 1, 1291955f2ea3SAbel Vesa .clkr = { 1292955f2ea3SAbel Vesa .enable_reg = 0x52000, 1293955f2ea3SAbel Vesa .enable_mask = BIT(10), 1294955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1295955f2ea3SAbel Vesa .name = "gcc_boot_rom_ahb_clk", 1296955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1297955f2ea3SAbel Vesa }, 1298955f2ea3SAbel Vesa }, 1299955f2ea3SAbel Vesa }; 1300955f2ea3SAbel Vesa 1301955f2ea3SAbel Vesa static struct clk_branch gcc_camera_hf_axi_clk = { 1302955f2ea3SAbel Vesa .halt_reg = 0x26010, 1303955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1304955f2ea3SAbel Vesa .hwcg_reg = 0x26010, 1305955f2ea3SAbel Vesa .hwcg_bit = 1, 1306955f2ea3SAbel Vesa .clkr = { 1307955f2ea3SAbel Vesa .enable_reg = 0x26010, 1308955f2ea3SAbel Vesa .enable_mask = BIT(0), 1309955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1310955f2ea3SAbel Vesa .name = "gcc_camera_hf_axi_clk", 1311955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1312955f2ea3SAbel Vesa }, 1313955f2ea3SAbel Vesa }, 1314955f2ea3SAbel Vesa }; 1315955f2ea3SAbel Vesa 1316955f2ea3SAbel Vesa static struct clk_branch gcc_camera_sf_axi_clk = { 1317955f2ea3SAbel Vesa .halt_reg = 0x2601c, 1318955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1319955f2ea3SAbel Vesa .hwcg_reg = 0x2601c, 1320955f2ea3SAbel Vesa .hwcg_bit = 1, 1321955f2ea3SAbel Vesa .clkr = { 1322955f2ea3SAbel Vesa .enable_reg = 0x2601c, 1323955f2ea3SAbel Vesa .enable_mask = BIT(0), 1324955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1325955f2ea3SAbel Vesa .name = "gcc_camera_sf_axi_clk", 1326955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1327955f2ea3SAbel Vesa }, 1328955f2ea3SAbel Vesa }, 1329955f2ea3SAbel Vesa }; 1330955f2ea3SAbel Vesa 1331955f2ea3SAbel Vesa static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = { 1332955f2ea3SAbel Vesa .halt_reg = 0x10028, 1333955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1334955f2ea3SAbel Vesa .hwcg_reg = 0x10028, 1335955f2ea3SAbel Vesa .hwcg_bit = 1, 1336955f2ea3SAbel Vesa .clkr = { 1337955f2ea3SAbel Vesa .enable_reg = 0x52000, 1338955f2ea3SAbel Vesa .enable_mask = BIT(20), 1339955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1340955f2ea3SAbel Vesa .name = "gcc_cfg_noc_pcie_anoc_ahb_clk", 1341955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1342955f2ea3SAbel Vesa }, 1343955f2ea3SAbel Vesa }, 1344955f2ea3SAbel Vesa }; 1345955f2ea3SAbel Vesa 1346955f2ea3SAbel Vesa static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 1347955f2ea3SAbel Vesa .halt_reg = 0x39088, 1348955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1349955f2ea3SAbel Vesa .hwcg_reg = 0x39088, 1350955f2ea3SAbel Vesa .hwcg_bit = 1, 1351955f2ea3SAbel Vesa .clkr = { 1352955f2ea3SAbel Vesa .enable_reg = 0x39088, 1353955f2ea3SAbel Vesa .enable_mask = BIT(0), 1354955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1355955f2ea3SAbel Vesa .name = "gcc_cfg_noc_usb3_prim_axi_clk", 135618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 135718aa0dc2SDmitry Baryshkov &gcc_usb30_prim_master_clk_src.clkr.hw, 1358955f2ea3SAbel Vesa }, 1359955f2ea3SAbel Vesa .num_parents = 1, 1360955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1361955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1362955f2ea3SAbel Vesa }, 1363955f2ea3SAbel Vesa }, 1364955f2ea3SAbel Vesa }; 1365955f2ea3SAbel Vesa 1366955f2ea3SAbel Vesa static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = { 1367955f2ea3SAbel Vesa .halt_reg = 0x10030, 1368955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1369955f2ea3SAbel Vesa .hwcg_reg = 0x10030, 1370955f2ea3SAbel Vesa .hwcg_bit = 1, 1371955f2ea3SAbel Vesa .clkr = { 1372955f2ea3SAbel Vesa .enable_reg = 0x52008, 1373955f2ea3SAbel Vesa .enable_mask = BIT(6), 1374955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1375955f2ea3SAbel Vesa .name = "gcc_cnoc_pcie_sf_axi_clk", 1376955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1377955f2ea3SAbel Vesa }, 1378955f2ea3SAbel Vesa }, 1379955f2ea3SAbel Vesa }; 1380955f2ea3SAbel Vesa 1381955f2ea3SAbel Vesa static struct clk_branch gcc_ddrss_gpu_axi_clk = { 1382955f2ea3SAbel Vesa .halt_reg = 0x71154, 1383955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1384955f2ea3SAbel Vesa .hwcg_reg = 0x71154, 1385955f2ea3SAbel Vesa .hwcg_bit = 1, 1386955f2ea3SAbel Vesa .clkr = { 1387955f2ea3SAbel Vesa .enable_reg = 0x71154, 1388955f2ea3SAbel Vesa .enable_mask = BIT(0), 1389955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1390955f2ea3SAbel Vesa .name = "gcc_ddrss_gpu_axi_clk", 1391955f2ea3SAbel Vesa .ops = &clk_branch2_aon_ops, 1392955f2ea3SAbel Vesa }, 1393955f2ea3SAbel Vesa }, 1394955f2ea3SAbel Vesa }; 1395955f2ea3SAbel Vesa 1396955f2ea3SAbel Vesa static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk = { 1397955f2ea3SAbel Vesa .halt_reg = 0x1004c, 1398955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1399955f2ea3SAbel Vesa .hwcg_reg = 0x1004c, 1400955f2ea3SAbel Vesa .hwcg_bit = 1, 1401955f2ea3SAbel Vesa .clkr = { 1402955f2ea3SAbel Vesa .enable_reg = 0x52000, 1403955f2ea3SAbel Vesa .enable_mask = BIT(19), 1404955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1405955f2ea3SAbel Vesa .name = "gcc_ddrss_pcie_sf_qtb_clk", 1406955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1407955f2ea3SAbel Vesa }, 1408955f2ea3SAbel Vesa }, 1409955f2ea3SAbel Vesa }; 1410955f2ea3SAbel Vesa 1411955f2ea3SAbel Vesa static struct clk_branch gcc_disp_hf_axi_clk = { 1412955f2ea3SAbel Vesa .halt_reg = 0x2700c, 1413955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1414955f2ea3SAbel Vesa .hwcg_reg = 0x2700c, 1415955f2ea3SAbel Vesa .hwcg_bit = 1, 1416955f2ea3SAbel Vesa .clkr = { 1417955f2ea3SAbel Vesa .enable_reg = 0x2700c, 1418955f2ea3SAbel Vesa .enable_mask = BIT(0), 1419955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1420955f2ea3SAbel Vesa .name = "gcc_disp_hf_axi_clk", 1421955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1422955f2ea3SAbel Vesa }, 1423955f2ea3SAbel Vesa }, 1424955f2ea3SAbel Vesa }; 1425955f2ea3SAbel Vesa 1426955f2ea3SAbel Vesa static struct clk_branch gcc_gp1_clk = { 1427955f2ea3SAbel Vesa .halt_reg = 0x64000, 1428955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 1429955f2ea3SAbel Vesa .clkr = { 1430955f2ea3SAbel Vesa .enable_reg = 0x64000, 1431955f2ea3SAbel Vesa .enable_mask = BIT(0), 1432955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1433955f2ea3SAbel Vesa .name = "gcc_gp1_clk", 143418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 143518aa0dc2SDmitry Baryshkov &gcc_gp1_clk_src.clkr.hw, 1436955f2ea3SAbel Vesa }, 1437955f2ea3SAbel Vesa .num_parents = 1, 1438955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1439955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1440955f2ea3SAbel Vesa }, 1441955f2ea3SAbel Vesa }, 1442955f2ea3SAbel Vesa }; 1443955f2ea3SAbel Vesa 1444955f2ea3SAbel Vesa static struct clk_branch gcc_gp2_clk = { 1445955f2ea3SAbel Vesa .halt_reg = 0x65000, 1446955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 1447955f2ea3SAbel Vesa .clkr = { 1448955f2ea3SAbel Vesa .enable_reg = 0x65000, 1449955f2ea3SAbel Vesa .enable_mask = BIT(0), 1450955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1451955f2ea3SAbel Vesa .name = "gcc_gp2_clk", 145218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 145318aa0dc2SDmitry Baryshkov &gcc_gp2_clk_src.clkr.hw, 1454955f2ea3SAbel Vesa }, 1455955f2ea3SAbel Vesa .num_parents = 1, 1456955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1457955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1458955f2ea3SAbel Vesa }, 1459955f2ea3SAbel Vesa }, 1460955f2ea3SAbel Vesa }; 1461955f2ea3SAbel Vesa 1462955f2ea3SAbel Vesa static struct clk_branch gcc_gp3_clk = { 1463955f2ea3SAbel Vesa .halt_reg = 0x66000, 1464955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 1465955f2ea3SAbel Vesa .clkr = { 1466955f2ea3SAbel Vesa .enable_reg = 0x66000, 1467955f2ea3SAbel Vesa .enable_mask = BIT(0), 1468955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1469955f2ea3SAbel Vesa .name = "gcc_gp3_clk", 147018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 147118aa0dc2SDmitry Baryshkov &gcc_gp3_clk_src.clkr.hw, 1472955f2ea3SAbel Vesa }, 1473955f2ea3SAbel Vesa .num_parents = 1, 1474955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1475955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1476955f2ea3SAbel Vesa }, 1477955f2ea3SAbel Vesa }, 1478955f2ea3SAbel Vesa }; 1479955f2ea3SAbel Vesa 1480955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_gpll0_clk_src = { 1481955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 1482955f2ea3SAbel Vesa .clkr = { 1483955f2ea3SAbel Vesa .enable_reg = 0x52000, 1484955f2ea3SAbel Vesa .enable_mask = BIT(15), 1485955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1486955f2ea3SAbel Vesa .name = "gcc_gpu_gpll0_clk_src", 148718aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 148818aa0dc2SDmitry Baryshkov &gcc_gpll0.clkr.hw, 1489955f2ea3SAbel Vesa }, 1490955f2ea3SAbel Vesa .num_parents = 1, 1491955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1492955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1493955f2ea3SAbel Vesa }, 1494955f2ea3SAbel Vesa }, 1495955f2ea3SAbel Vesa }; 1496955f2ea3SAbel Vesa 1497955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 1498955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 1499955f2ea3SAbel Vesa .clkr = { 1500955f2ea3SAbel Vesa .enable_reg = 0x52000, 1501955f2ea3SAbel Vesa .enable_mask = BIT(16), 1502955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1503955f2ea3SAbel Vesa .name = "gcc_gpu_gpll0_div_clk_src", 150418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 150518aa0dc2SDmitry Baryshkov &gcc_gpll0_out_even.clkr.hw, 1506955f2ea3SAbel Vesa }, 1507955f2ea3SAbel Vesa .num_parents = 1, 1508955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1509955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1510955f2ea3SAbel Vesa }, 1511955f2ea3SAbel Vesa }, 1512955f2ea3SAbel Vesa }; 1513955f2ea3SAbel Vesa 1514955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_memnoc_gfx_clk = { 1515955f2ea3SAbel Vesa .halt_reg = 0x71010, 1516955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1517955f2ea3SAbel Vesa .hwcg_reg = 0x71010, 1518955f2ea3SAbel Vesa .hwcg_bit = 1, 1519955f2ea3SAbel Vesa .clkr = { 1520955f2ea3SAbel Vesa .enable_reg = 0x71010, 1521955f2ea3SAbel Vesa .enable_mask = BIT(0), 1522955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1523955f2ea3SAbel Vesa .name = "gcc_gpu_memnoc_gfx_clk", 1524955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1525955f2ea3SAbel Vesa }, 1526955f2ea3SAbel Vesa }, 1527955f2ea3SAbel Vesa }; 1528955f2ea3SAbel Vesa 1529955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = { 1530955f2ea3SAbel Vesa .halt_reg = 0x71018, 1531955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 1532955f2ea3SAbel Vesa .clkr = { 1533955f2ea3SAbel Vesa .enable_reg = 0x71018, 1534955f2ea3SAbel Vesa .enable_mask = BIT(0), 1535955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1536955f2ea3SAbel Vesa .name = "gcc_gpu_snoc_dvm_gfx_clk", 1537955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1538955f2ea3SAbel Vesa }, 1539955f2ea3SAbel Vesa }, 1540955f2ea3SAbel Vesa }; 1541955f2ea3SAbel Vesa 1542955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_aux_clk = { 1543955f2ea3SAbel Vesa .halt_reg = 0x6b03c, 1544955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1545955f2ea3SAbel Vesa .clkr = { 1546955f2ea3SAbel Vesa .enable_reg = 0x52008, 1547955f2ea3SAbel Vesa .enable_mask = BIT(3), 1548955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1549955f2ea3SAbel Vesa .name = "gcc_pcie_0_aux_clk", 155018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 155118aa0dc2SDmitry Baryshkov &gcc_pcie_0_aux_clk_src.clkr.hw, 1552955f2ea3SAbel Vesa }, 1553955f2ea3SAbel Vesa .num_parents = 1, 1554955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1555955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1556955f2ea3SAbel Vesa }, 1557955f2ea3SAbel Vesa }, 1558955f2ea3SAbel Vesa }; 1559955f2ea3SAbel Vesa 1560955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 1561955f2ea3SAbel Vesa .halt_reg = 0x6b038, 1562955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1563955f2ea3SAbel Vesa .hwcg_reg = 0x6b038, 1564955f2ea3SAbel Vesa .hwcg_bit = 1, 1565955f2ea3SAbel Vesa .clkr = { 1566955f2ea3SAbel Vesa .enable_reg = 0x52008, 1567955f2ea3SAbel Vesa .enable_mask = BIT(2), 1568955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1569955f2ea3SAbel Vesa .name = "gcc_pcie_0_cfg_ahb_clk", 1570955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1571955f2ea3SAbel Vesa }, 1572955f2ea3SAbel Vesa }, 1573955f2ea3SAbel Vesa }; 1574955f2ea3SAbel Vesa 1575955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 1576955f2ea3SAbel Vesa .halt_reg = 0x6b02c, 1577955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1578955f2ea3SAbel Vesa .hwcg_reg = 0x6b02c, 1579955f2ea3SAbel Vesa .hwcg_bit = 1, 1580955f2ea3SAbel Vesa .clkr = { 1581955f2ea3SAbel Vesa .enable_reg = 0x52008, 1582955f2ea3SAbel Vesa .enable_mask = BIT(1), 1583955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1584955f2ea3SAbel Vesa .name = "gcc_pcie_0_mstr_axi_clk", 1585955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1586955f2ea3SAbel Vesa }, 1587955f2ea3SAbel Vesa }, 1588955f2ea3SAbel Vesa }; 1589955f2ea3SAbel Vesa 1590955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_phy_rchng_clk = { 1591955f2ea3SAbel Vesa .halt_reg = 0x6b054, 1592955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1593955f2ea3SAbel Vesa .clkr = { 1594955f2ea3SAbel Vesa .enable_reg = 0x52000, 1595955f2ea3SAbel Vesa .enable_mask = BIT(22), 1596955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1597955f2ea3SAbel Vesa .name = "gcc_pcie_0_phy_rchng_clk", 159818aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 159918aa0dc2SDmitry Baryshkov &gcc_pcie_0_phy_rchng_clk_src.clkr.hw, 1600955f2ea3SAbel Vesa }, 1601955f2ea3SAbel Vesa .num_parents = 1, 1602955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1603955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1604955f2ea3SAbel Vesa }, 1605955f2ea3SAbel Vesa }, 1606955f2ea3SAbel Vesa }; 1607955f2ea3SAbel Vesa 1608955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_pipe_clk = { 1609955f2ea3SAbel Vesa .halt_reg = 0x6b048, 1610955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1611955f2ea3SAbel Vesa .clkr = { 1612955f2ea3SAbel Vesa .enable_reg = 0x52008, 1613955f2ea3SAbel Vesa .enable_mask = BIT(4), 1614955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1615955f2ea3SAbel Vesa .name = "gcc_pcie_0_pipe_clk", 161618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 161718aa0dc2SDmitry Baryshkov &gcc_pcie_0_pipe_clk_src.clkr.hw, 1618955f2ea3SAbel Vesa }, 1619955f2ea3SAbel Vesa .num_parents = 1, 1620955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1621955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1622955f2ea3SAbel Vesa }, 1623955f2ea3SAbel Vesa }, 1624955f2ea3SAbel Vesa }; 1625955f2ea3SAbel Vesa 1626955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_slv_axi_clk = { 1627955f2ea3SAbel Vesa .halt_reg = 0x6b020, 1628955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1629955f2ea3SAbel Vesa .hwcg_reg = 0x6b020, 1630955f2ea3SAbel Vesa .hwcg_bit = 1, 1631955f2ea3SAbel Vesa .clkr = { 1632955f2ea3SAbel Vesa .enable_reg = 0x52008, 1633955f2ea3SAbel Vesa .enable_mask = BIT(0), 1634955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1635955f2ea3SAbel Vesa .name = "gcc_pcie_0_slv_axi_clk", 1636955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1637955f2ea3SAbel Vesa }, 1638955f2ea3SAbel Vesa }, 1639955f2ea3SAbel Vesa }; 1640955f2ea3SAbel Vesa 1641955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = { 1642955f2ea3SAbel Vesa .halt_reg = 0x6b01c, 1643955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1644955f2ea3SAbel Vesa .clkr = { 1645955f2ea3SAbel Vesa .enable_reg = 0x52008, 1646955f2ea3SAbel Vesa .enable_mask = BIT(5), 1647955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1648955f2ea3SAbel Vesa .name = "gcc_pcie_0_slv_q2a_axi_clk", 1649955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1650955f2ea3SAbel Vesa }, 1651955f2ea3SAbel Vesa }, 1652955f2ea3SAbel Vesa }; 1653955f2ea3SAbel Vesa 1654955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_aux_clk = { 1655955f2ea3SAbel Vesa .halt_reg = 0x8d038, 1656955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1657955f2ea3SAbel Vesa .clkr = { 1658955f2ea3SAbel Vesa .enable_reg = 0x52000, 1659955f2ea3SAbel Vesa .enable_mask = BIT(29), 1660955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1661955f2ea3SAbel Vesa .name = "gcc_pcie_1_aux_clk", 166218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 166318aa0dc2SDmitry Baryshkov &gcc_pcie_1_aux_clk_src.clkr.hw, 1664955f2ea3SAbel Vesa }, 1665955f2ea3SAbel Vesa .num_parents = 1, 1666955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1667955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1668955f2ea3SAbel Vesa }, 1669955f2ea3SAbel Vesa }, 1670955f2ea3SAbel Vesa }; 1671955f2ea3SAbel Vesa 1672955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 1673955f2ea3SAbel Vesa .halt_reg = 0x8d034, 1674955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1675955f2ea3SAbel Vesa .hwcg_reg = 0x8d034, 1676955f2ea3SAbel Vesa .hwcg_bit = 1, 1677955f2ea3SAbel Vesa .clkr = { 1678955f2ea3SAbel Vesa .enable_reg = 0x52000, 1679955f2ea3SAbel Vesa .enable_mask = BIT(28), 1680955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1681955f2ea3SAbel Vesa .name = "gcc_pcie_1_cfg_ahb_clk", 1682955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1683955f2ea3SAbel Vesa }, 1684955f2ea3SAbel Vesa }, 1685955f2ea3SAbel Vesa }; 1686955f2ea3SAbel Vesa 1687955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 1688955f2ea3SAbel Vesa .halt_reg = 0x8d028, 1689955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1690955f2ea3SAbel Vesa .hwcg_reg = 0x8d028, 1691955f2ea3SAbel Vesa .hwcg_bit = 1, 1692955f2ea3SAbel Vesa .clkr = { 1693955f2ea3SAbel Vesa .enable_reg = 0x52000, 1694955f2ea3SAbel Vesa .enable_mask = BIT(27), 1695955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1696955f2ea3SAbel Vesa .name = "gcc_pcie_1_mstr_axi_clk", 1697955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1698955f2ea3SAbel Vesa }, 1699955f2ea3SAbel Vesa }, 1700955f2ea3SAbel Vesa }; 1701955f2ea3SAbel Vesa 1702955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_phy_aux_clk = { 1703955f2ea3SAbel Vesa .halt_reg = 0x8d044, 1704955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1705955f2ea3SAbel Vesa .clkr = { 1706955f2ea3SAbel Vesa .enable_reg = 0x52000, 1707955f2ea3SAbel Vesa .enable_mask = BIT(24), 1708955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1709955f2ea3SAbel Vesa .name = "gcc_pcie_1_phy_aux_clk", 171018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 171118aa0dc2SDmitry Baryshkov &gcc_pcie_1_phy_aux_clk_src.clkr.hw, 1712955f2ea3SAbel Vesa }, 1713955f2ea3SAbel Vesa .num_parents = 1, 1714955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1715955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1716955f2ea3SAbel Vesa }, 1717955f2ea3SAbel Vesa }, 1718955f2ea3SAbel Vesa }; 1719955f2ea3SAbel Vesa 1720955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_phy_rchng_clk = { 1721955f2ea3SAbel Vesa .halt_reg = 0x8d05c, 1722955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1723955f2ea3SAbel Vesa .clkr = { 1724955f2ea3SAbel Vesa .enable_reg = 0x52000, 1725955f2ea3SAbel Vesa .enable_mask = BIT(23), 1726955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1727955f2ea3SAbel Vesa .name = "gcc_pcie_1_phy_rchng_clk", 172818aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 172918aa0dc2SDmitry Baryshkov &gcc_pcie_1_phy_rchng_clk_src.clkr.hw, 1730955f2ea3SAbel Vesa }, 1731955f2ea3SAbel Vesa .num_parents = 1, 1732955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1733955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1734955f2ea3SAbel Vesa }, 1735955f2ea3SAbel Vesa }, 1736955f2ea3SAbel Vesa }; 1737955f2ea3SAbel Vesa 1738955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_pipe_clk = { 1739955f2ea3SAbel Vesa .halt_reg = 0x8d050, 1740955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 1741955f2ea3SAbel Vesa .clkr = { 1742955f2ea3SAbel Vesa .enable_reg = 0x52000, 1743955f2ea3SAbel Vesa .enable_mask = BIT(30), 1744955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1745955f2ea3SAbel Vesa .name = "gcc_pcie_1_pipe_clk", 174618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 174718aa0dc2SDmitry Baryshkov &gcc_pcie_1_pipe_clk_src.clkr.hw, 1748955f2ea3SAbel Vesa }, 1749955f2ea3SAbel Vesa .num_parents = 1, 1750955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1751955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1752955f2ea3SAbel Vesa }, 1753955f2ea3SAbel Vesa }, 1754955f2ea3SAbel Vesa }; 1755955f2ea3SAbel Vesa 1756955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_slv_axi_clk = { 1757955f2ea3SAbel Vesa .halt_reg = 0x8d01c, 1758955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1759955f2ea3SAbel Vesa .hwcg_reg = 0x8d01c, 1760955f2ea3SAbel Vesa .hwcg_bit = 1, 1761955f2ea3SAbel Vesa .clkr = { 1762955f2ea3SAbel Vesa .enable_reg = 0x52000, 1763955f2ea3SAbel Vesa .enable_mask = BIT(26), 1764955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1765955f2ea3SAbel Vesa .name = "gcc_pcie_1_slv_axi_clk", 1766955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1767955f2ea3SAbel Vesa }, 1768955f2ea3SAbel Vesa }, 1769955f2ea3SAbel Vesa }; 1770955f2ea3SAbel Vesa 1771955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = { 1772955f2ea3SAbel Vesa .halt_reg = 0x8d018, 1773955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1774955f2ea3SAbel Vesa .clkr = { 1775955f2ea3SAbel Vesa .enable_reg = 0x52000, 1776955f2ea3SAbel Vesa .enable_mask = BIT(25), 1777955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1778955f2ea3SAbel Vesa .name = "gcc_pcie_1_slv_q2a_axi_clk", 1779955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1780955f2ea3SAbel Vesa }, 1781955f2ea3SAbel Vesa }, 1782955f2ea3SAbel Vesa }; 1783955f2ea3SAbel Vesa 1784955f2ea3SAbel Vesa static struct clk_branch gcc_pdm2_clk = { 1785955f2ea3SAbel Vesa .halt_reg = 0x3300c, 1786955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 1787955f2ea3SAbel Vesa .clkr = { 1788955f2ea3SAbel Vesa .enable_reg = 0x3300c, 1789955f2ea3SAbel Vesa .enable_mask = BIT(0), 1790955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1791955f2ea3SAbel Vesa .name = "gcc_pdm2_clk", 179218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 179318aa0dc2SDmitry Baryshkov &gcc_pdm2_clk_src.clkr.hw, 1794955f2ea3SAbel Vesa }, 1795955f2ea3SAbel Vesa .num_parents = 1, 1796955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1797955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1798955f2ea3SAbel Vesa }, 1799955f2ea3SAbel Vesa }, 1800955f2ea3SAbel Vesa }; 1801955f2ea3SAbel Vesa 1802955f2ea3SAbel Vesa static struct clk_branch gcc_pdm_ahb_clk = { 1803955f2ea3SAbel Vesa .halt_reg = 0x33004, 1804955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1805955f2ea3SAbel Vesa .hwcg_reg = 0x33004, 1806955f2ea3SAbel Vesa .hwcg_bit = 1, 1807955f2ea3SAbel Vesa .clkr = { 1808955f2ea3SAbel Vesa .enable_reg = 0x33004, 1809955f2ea3SAbel Vesa .enable_mask = BIT(0), 1810955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1811955f2ea3SAbel Vesa .name = "gcc_pdm_ahb_clk", 1812955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1813955f2ea3SAbel Vesa }, 1814955f2ea3SAbel Vesa }, 1815955f2ea3SAbel Vesa }; 1816955f2ea3SAbel Vesa 1817955f2ea3SAbel Vesa static struct clk_branch gcc_pdm_xo4_clk = { 1818955f2ea3SAbel Vesa .halt_reg = 0x33008, 1819955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 1820955f2ea3SAbel Vesa .clkr = { 1821955f2ea3SAbel Vesa .enable_reg = 0x33008, 1822955f2ea3SAbel Vesa .enable_mask = BIT(0), 1823955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1824955f2ea3SAbel Vesa .name = "gcc_pdm_xo4_clk", 1825955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1826955f2ea3SAbel Vesa }, 1827955f2ea3SAbel Vesa }, 1828955f2ea3SAbel Vesa }; 1829955f2ea3SAbel Vesa 1830955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = { 1831955f2ea3SAbel Vesa .halt_reg = 0x26008, 1832955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1833955f2ea3SAbel Vesa .hwcg_reg = 0x26008, 1834955f2ea3SAbel Vesa .hwcg_bit = 1, 1835955f2ea3SAbel Vesa .clkr = { 1836955f2ea3SAbel Vesa .enable_reg = 0x26008, 1837955f2ea3SAbel Vesa .enable_mask = BIT(0), 1838955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1839955f2ea3SAbel Vesa .name = "gcc_qmip_camera_nrt_ahb_clk", 1840955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1841955f2ea3SAbel Vesa }, 1842955f2ea3SAbel Vesa }, 1843955f2ea3SAbel Vesa }; 1844955f2ea3SAbel Vesa 1845955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_camera_rt_ahb_clk = { 1846955f2ea3SAbel Vesa .halt_reg = 0x2600c, 1847955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1848955f2ea3SAbel Vesa .hwcg_reg = 0x2600c, 1849955f2ea3SAbel Vesa .hwcg_bit = 1, 1850955f2ea3SAbel Vesa .clkr = { 1851955f2ea3SAbel Vesa .enable_reg = 0x2600c, 1852955f2ea3SAbel Vesa .enable_mask = BIT(0), 1853955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1854955f2ea3SAbel Vesa .name = "gcc_qmip_camera_rt_ahb_clk", 1855955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1856955f2ea3SAbel Vesa }, 1857955f2ea3SAbel Vesa }, 1858955f2ea3SAbel Vesa }; 1859955f2ea3SAbel Vesa 1860955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_disp_ahb_clk = { 1861955f2ea3SAbel Vesa .halt_reg = 0x27008, 1862955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1863955f2ea3SAbel Vesa .hwcg_reg = 0x27008, 1864955f2ea3SAbel Vesa .hwcg_bit = 1, 1865955f2ea3SAbel Vesa .clkr = { 1866955f2ea3SAbel Vesa .enable_reg = 0x27008, 1867955f2ea3SAbel Vesa .enable_mask = BIT(0), 1868955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1869955f2ea3SAbel Vesa .name = "gcc_qmip_disp_ahb_clk", 1870955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1871955f2ea3SAbel Vesa }, 1872955f2ea3SAbel Vesa }, 1873955f2ea3SAbel Vesa }; 1874955f2ea3SAbel Vesa 1875955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_gpu_ahb_clk = { 1876955f2ea3SAbel Vesa .halt_reg = 0x71008, 1877955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1878955f2ea3SAbel Vesa .hwcg_reg = 0x71008, 1879955f2ea3SAbel Vesa .hwcg_bit = 1, 1880955f2ea3SAbel Vesa .clkr = { 1881955f2ea3SAbel Vesa .enable_reg = 0x71008, 1882955f2ea3SAbel Vesa .enable_mask = BIT(0), 1883955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1884955f2ea3SAbel Vesa .name = "gcc_qmip_gpu_ahb_clk", 1885955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1886955f2ea3SAbel Vesa }, 1887955f2ea3SAbel Vesa }, 1888955f2ea3SAbel Vesa }; 1889955f2ea3SAbel Vesa 1890955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_pcie_ahb_clk = { 1891955f2ea3SAbel Vesa .halt_reg = 0x6b018, 1892955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1893955f2ea3SAbel Vesa .hwcg_reg = 0x6b018, 1894955f2ea3SAbel Vesa .hwcg_bit = 1, 1895955f2ea3SAbel Vesa .clkr = { 1896955f2ea3SAbel Vesa .enable_reg = 0x52000, 1897955f2ea3SAbel Vesa .enable_mask = BIT(11), 1898955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1899955f2ea3SAbel Vesa .name = "gcc_qmip_pcie_ahb_clk", 1900955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1901955f2ea3SAbel Vesa }, 1902955f2ea3SAbel Vesa }, 1903955f2ea3SAbel Vesa }; 1904955f2ea3SAbel Vesa 1905955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = { 1906955f2ea3SAbel Vesa .halt_reg = 0x32014, 1907955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1908955f2ea3SAbel Vesa .hwcg_reg = 0x32014, 1909955f2ea3SAbel Vesa .hwcg_bit = 1, 1910955f2ea3SAbel Vesa .clkr = { 1911955f2ea3SAbel Vesa .enable_reg = 0x32014, 1912955f2ea3SAbel Vesa .enable_mask = BIT(0), 1913955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1914955f2ea3SAbel Vesa .name = "gcc_qmip_video_cv_cpu_ahb_clk", 1915955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1916955f2ea3SAbel Vesa }, 1917955f2ea3SAbel Vesa }, 1918955f2ea3SAbel Vesa }; 1919955f2ea3SAbel Vesa 1920955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_cvp_ahb_clk = { 1921955f2ea3SAbel Vesa .halt_reg = 0x32008, 1922955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1923955f2ea3SAbel Vesa .hwcg_reg = 0x32008, 1924955f2ea3SAbel Vesa .hwcg_bit = 1, 1925955f2ea3SAbel Vesa .clkr = { 1926955f2ea3SAbel Vesa .enable_reg = 0x32008, 1927955f2ea3SAbel Vesa .enable_mask = BIT(0), 1928955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1929955f2ea3SAbel Vesa .name = "gcc_qmip_video_cvp_ahb_clk", 1930955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1931955f2ea3SAbel Vesa }, 1932955f2ea3SAbel Vesa }, 1933955f2ea3SAbel Vesa }; 1934955f2ea3SAbel Vesa 1935955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = { 1936955f2ea3SAbel Vesa .halt_reg = 0x32010, 1937955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1938955f2ea3SAbel Vesa .hwcg_reg = 0x32010, 1939955f2ea3SAbel Vesa .hwcg_bit = 1, 1940955f2ea3SAbel Vesa .clkr = { 1941955f2ea3SAbel Vesa .enable_reg = 0x32010, 1942955f2ea3SAbel Vesa .enable_mask = BIT(0), 1943955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1944955f2ea3SAbel Vesa .name = "gcc_qmip_video_v_cpu_ahb_clk", 1945955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1946955f2ea3SAbel Vesa }, 1947955f2ea3SAbel Vesa }, 1948955f2ea3SAbel Vesa }; 1949955f2ea3SAbel Vesa 1950955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = { 1951955f2ea3SAbel Vesa .halt_reg = 0x3200c, 1952955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1953955f2ea3SAbel Vesa .hwcg_reg = 0x3200c, 1954955f2ea3SAbel Vesa .hwcg_bit = 1, 1955955f2ea3SAbel Vesa .clkr = { 1956955f2ea3SAbel Vesa .enable_reg = 0x3200c, 1957955f2ea3SAbel Vesa .enable_mask = BIT(0), 1958955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1959955f2ea3SAbel Vesa .name = "gcc_qmip_video_vcodec_ahb_clk", 1960955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1961955f2ea3SAbel Vesa }, 1962955f2ea3SAbel Vesa }, 1963955f2ea3SAbel Vesa }; 1964955f2ea3SAbel Vesa 1965955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_core_clk = { 1966955f2ea3SAbel Vesa .halt_reg = 0x23144, 1967955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1968955f2ea3SAbel Vesa .clkr = { 1969955f2ea3SAbel Vesa .enable_reg = 0x52008, 1970955f2ea3SAbel Vesa .enable_mask = BIT(8), 1971955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1972955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_core_clk", 1973955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1974955f2ea3SAbel Vesa }, 1975955f2ea3SAbel Vesa }, 1976955f2ea3SAbel Vesa }; 1977955f2ea3SAbel Vesa 1978955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s0_clk = { 1979955f2ea3SAbel Vesa .halt_reg = 0x17004, 1980955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1981955f2ea3SAbel Vesa .clkr = { 1982955f2ea3SAbel Vesa .enable_reg = 0x52008, 1983955f2ea3SAbel Vesa .enable_mask = BIT(10), 1984955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 1985955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s0_clk", 198618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 198718aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s0_clk_src.clkr.hw, 1988955f2ea3SAbel Vesa }, 1989955f2ea3SAbel Vesa .num_parents = 1, 1990955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 1991955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 1992955f2ea3SAbel Vesa }, 1993955f2ea3SAbel Vesa }, 1994955f2ea3SAbel Vesa }; 1995955f2ea3SAbel Vesa 1996955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s1_clk = { 1997955f2ea3SAbel Vesa .halt_reg = 0x17020, 1998955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 1999955f2ea3SAbel Vesa .clkr = { 2000955f2ea3SAbel Vesa .enable_reg = 0x52008, 2001955f2ea3SAbel Vesa .enable_mask = BIT(11), 2002955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2003955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s1_clk", 200418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 200518aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s1_clk_src.clkr.hw, 2006955f2ea3SAbel Vesa }, 2007955f2ea3SAbel Vesa .num_parents = 1, 2008955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2009955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2010955f2ea3SAbel Vesa }, 2011955f2ea3SAbel Vesa }, 2012955f2ea3SAbel Vesa }; 2013955f2ea3SAbel Vesa 2014955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s2_clk = { 2015955f2ea3SAbel Vesa .halt_reg = 0x1703c, 2016955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2017955f2ea3SAbel Vesa .clkr = { 2018955f2ea3SAbel Vesa .enable_reg = 0x52008, 2019955f2ea3SAbel Vesa .enable_mask = BIT(12), 2020955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2021955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s2_clk", 202218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 202318aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s2_clk_src.clkr.hw, 2024955f2ea3SAbel Vesa }, 2025955f2ea3SAbel Vesa .num_parents = 1, 2026955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2027955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2028955f2ea3SAbel Vesa }, 2029955f2ea3SAbel Vesa }, 2030955f2ea3SAbel Vesa }; 2031955f2ea3SAbel Vesa 2032955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s3_clk = { 2033955f2ea3SAbel Vesa .halt_reg = 0x17058, 2034955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2035955f2ea3SAbel Vesa .clkr = { 2036955f2ea3SAbel Vesa .enable_reg = 0x52008, 2037955f2ea3SAbel Vesa .enable_mask = BIT(13), 2038955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2039955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s3_clk", 204018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 204118aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s3_clk_src.clkr.hw, 2042955f2ea3SAbel Vesa }, 2043955f2ea3SAbel Vesa .num_parents = 1, 2044955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2045955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2046955f2ea3SAbel Vesa }, 2047955f2ea3SAbel Vesa }, 2048955f2ea3SAbel Vesa }; 2049955f2ea3SAbel Vesa 2050955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s4_clk = { 2051955f2ea3SAbel Vesa .halt_reg = 0x17074, 2052955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2053955f2ea3SAbel Vesa .clkr = { 2054955f2ea3SAbel Vesa .enable_reg = 0x52008, 2055955f2ea3SAbel Vesa .enable_mask = BIT(14), 2056955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2057955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s4_clk", 205818aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 205918aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s4_clk_src.clkr.hw, 2060955f2ea3SAbel Vesa }, 2061955f2ea3SAbel Vesa .num_parents = 1, 2062955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2063955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2064955f2ea3SAbel Vesa }, 2065955f2ea3SAbel Vesa }, 2066955f2ea3SAbel Vesa }; 2067955f2ea3SAbel Vesa 2068955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s5_clk = { 2069955f2ea3SAbel Vesa .halt_reg = 0x17090, 2070955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2071955f2ea3SAbel Vesa .clkr = { 2072955f2ea3SAbel Vesa .enable_reg = 0x52008, 2073955f2ea3SAbel Vesa .enable_mask = BIT(15), 2074955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2075955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s5_clk", 207618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 207718aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s5_clk_src.clkr.hw, 2078955f2ea3SAbel Vesa }, 2079955f2ea3SAbel Vesa .num_parents = 1, 2080955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2081955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2082955f2ea3SAbel Vesa }, 2083955f2ea3SAbel Vesa }, 2084955f2ea3SAbel Vesa }; 2085955f2ea3SAbel Vesa 2086955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s6_clk = { 2087955f2ea3SAbel Vesa .halt_reg = 0x170ac, 2088955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2089955f2ea3SAbel Vesa .clkr = { 2090955f2ea3SAbel Vesa .enable_reg = 0x52008, 2091955f2ea3SAbel Vesa .enable_mask = BIT(16), 2092955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2093955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s6_clk", 209418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 209518aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s6_clk_src.clkr.hw, 2096955f2ea3SAbel Vesa }, 2097955f2ea3SAbel Vesa .num_parents = 1, 2098955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2099955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2100955f2ea3SAbel Vesa }, 2101955f2ea3SAbel Vesa }, 2102955f2ea3SAbel Vesa }; 2103955f2ea3SAbel Vesa 2104955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s7_clk = { 2105955f2ea3SAbel Vesa .halt_reg = 0x170c8, 2106955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2107955f2ea3SAbel Vesa .clkr = { 2108955f2ea3SAbel Vesa .enable_reg = 0x52008, 2109955f2ea3SAbel Vesa .enable_mask = BIT(17), 2110955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2111955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s7_clk", 211218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 211318aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s7_clk_src.clkr.hw, 2114955f2ea3SAbel Vesa }, 2115955f2ea3SAbel Vesa .num_parents = 1, 2116955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2117955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2118955f2ea3SAbel Vesa }, 2119955f2ea3SAbel Vesa }, 2120955f2ea3SAbel Vesa }; 2121955f2ea3SAbel Vesa 2122955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s8_clk = { 2123955f2ea3SAbel Vesa .halt_reg = 0x170e4, 2124955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2125955f2ea3SAbel Vesa .clkr = { 2126955f2ea3SAbel Vesa .enable_reg = 0x52010, 2127955f2ea3SAbel Vesa .enable_mask = BIT(14), 2128955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2129955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s8_clk", 213018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 213118aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s8_clk_src.clkr.hw, 2132955f2ea3SAbel Vesa }, 2133955f2ea3SAbel Vesa .num_parents = 1, 2134955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2135955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2136955f2ea3SAbel Vesa }, 2137955f2ea3SAbel Vesa }, 2138955f2ea3SAbel Vesa }; 2139955f2ea3SAbel Vesa 2140955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s9_clk = { 2141955f2ea3SAbel Vesa .halt_reg = 0x17100, 2142955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2143955f2ea3SAbel Vesa .clkr = { 2144955f2ea3SAbel Vesa .enable_reg = 0x52010, 2145955f2ea3SAbel Vesa .enable_mask = BIT(15), 2146955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2147955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s9_clk", 214818aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 214918aa0dc2SDmitry Baryshkov &gcc_qupv3_i2c_s9_clk_src.clkr.hw, 2150955f2ea3SAbel Vesa }, 2151955f2ea3SAbel Vesa .num_parents = 1, 2152955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2153955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2154955f2ea3SAbel Vesa }, 2155955f2ea3SAbel Vesa }, 2156955f2ea3SAbel Vesa }; 2157955f2ea3SAbel Vesa 2158955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = { 2159955f2ea3SAbel Vesa .halt_reg = 0x23140, 2160955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2161955f2ea3SAbel Vesa .hwcg_reg = 0x23140, 2162955f2ea3SAbel Vesa .hwcg_bit = 1, 2163955f2ea3SAbel Vesa .clkr = { 2164955f2ea3SAbel Vesa .enable_reg = 0x52008, 2165955f2ea3SAbel Vesa .enable_mask = BIT(7), 2166955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2167955f2ea3SAbel Vesa .name = "gcc_qupv3_i2c_s_ahb_clk", 2168955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2169955f2ea3SAbel Vesa }, 2170955f2ea3SAbel Vesa }, 2171955f2ea3SAbel Vesa }; 2172955f2ea3SAbel Vesa 2173955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = { 2174955f2ea3SAbel Vesa .halt_reg = 0x23294, 2175955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2176955f2ea3SAbel Vesa .clkr = { 2177955f2ea3SAbel Vesa .enable_reg = 0x52008, 2178955f2ea3SAbel Vesa .enable_mask = BIT(18), 2179955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2180955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_core_2x_clk", 2181955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2182955f2ea3SAbel Vesa }, 2183955f2ea3SAbel Vesa }, 2184955f2ea3SAbel Vesa }; 2185955f2ea3SAbel Vesa 2186955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_core_clk = { 2187955f2ea3SAbel Vesa .halt_reg = 0x23284, 2188955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2189955f2ea3SAbel Vesa .clkr = { 2190955f2ea3SAbel Vesa .enable_reg = 0x52008, 2191955f2ea3SAbel Vesa .enable_mask = BIT(19), 2192955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2193955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_core_clk", 2194955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2195955f2ea3SAbel Vesa }, 2196955f2ea3SAbel Vesa }, 2197955f2ea3SAbel Vesa }; 2198955f2ea3SAbel Vesa 2199955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 2200955f2ea3SAbel Vesa .halt_reg = 0x18004, 2201955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2202955f2ea3SAbel Vesa .clkr = { 2203955f2ea3SAbel Vesa .enable_reg = 0x52008, 2204955f2ea3SAbel Vesa .enable_mask = BIT(22), 2205955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2206955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s0_clk", 220718aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 220818aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 2209955f2ea3SAbel Vesa }, 2210955f2ea3SAbel Vesa .num_parents = 1, 2211955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2212955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2213955f2ea3SAbel Vesa }, 2214955f2ea3SAbel Vesa }, 2215955f2ea3SAbel Vesa }; 2216955f2ea3SAbel Vesa 2217955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 2218955f2ea3SAbel Vesa .halt_reg = 0x1813c, 2219955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2220955f2ea3SAbel Vesa .clkr = { 2221955f2ea3SAbel Vesa .enable_reg = 0x52008, 2222955f2ea3SAbel Vesa .enable_mask = BIT(23), 2223955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2224955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s1_clk", 222518aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 222618aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 2227955f2ea3SAbel Vesa }, 2228955f2ea3SAbel Vesa .num_parents = 1, 2229955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2230955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2231955f2ea3SAbel Vesa }, 2232955f2ea3SAbel Vesa }, 2233955f2ea3SAbel Vesa }; 2234955f2ea3SAbel Vesa 2235955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 2236955f2ea3SAbel Vesa .halt_reg = 0x18274, 2237955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2238955f2ea3SAbel Vesa .clkr = { 2239955f2ea3SAbel Vesa .enable_reg = 0x52008, 2240955f2ea3SAbel Vesa .enable_mask = BIT(24), 2241955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2242955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s2_clk", 224318aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 224418aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 2245955f2ea3SAbel Vesa }, 2246955f2ea3SAbel Vesa .num_parents = 1, 2247955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2248955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2249955f2ea3SAbel Vesa }, 2250955f2ea3SAbel Vesa }, 2251955f2ea3SAbel Vesa }; 2252955f2ea3SAbel Vesa 2253955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 2254955f2ea3SAbel Vesa .halt_reg = 0x183ac, 2255955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2256955f2ea3SAbel Vesa .clkr = { 2257955f2ea3SAbel Vesa .enable_reg = 0x52008, 2258955f2ea3SAbel Vesa .enable_mask = BIT(25), 2259955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2260955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s3_clk", 226118aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 226218aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 2263955f2ea3SAbel Vesa }, 2264955f2ea3SAbel Vesa .num_parents = 1, 2265955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2266955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2267955f2ea3SAbel Vesa }, 2268955f2ea3SAbel Vesa }, 2269955f2ea3SAbel Vesa }; 2270955f2ea3SAbel Vesa 2271955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 2272955f2ea3SAbel Vesa .halt_reg = 0x184e4, 2273955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2274955f2ea3SAbel Vesa .clkr = { 2275955f2ea3SAbel Vesa .enable_reg = 0x52008, 2276955f2ea3SAbel Vesa .enable_mask = BIT(26), 2277955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2278955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s4_clk", 227918aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 228018aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 2281955f2ea3SAbel Vesa }, 2282955f2ea3SAbel Vesa .num_parents = 1, 2283955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2284955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2285955f2ea3SAbel Vesa }, 2286955f2ea3SAbel Vesa }, 2287955f2ea3SAbel Vesa }; 2288955f2ea3SAbel Vesa 2289955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 2290955f2ea3SAbel Vesa .halt_reg = 0x1861c, 2291955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2292955f2ea3SAbel Vesa .clkr = { 2293955f2ea3SAbel Vesa .enable_reg = 0x52008, 2294955f2ea3SAbel Vesa .enable_mask = BIT(27), 2295955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2296955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s5_clk", 229718aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 229818aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 2299955f2ea3SAbel Vesa }, 2300955f2ea3SAbel Vesa .num_parents = 1, 2301955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2302955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2303955f2ea3SAbel Vesa }, 2304955f2ea3SAbel Vesa }, 2305955f2ea3SAbel Vesa }; 2306955f2ea3SAbel Vesa 2307955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s6_clk = { 2308955f2ea3SAbel Vesa .halt_reg = 0x18754, 2309955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2310955f2ea3SAbel Vesa .clkr = { 2311955f2ea3SAbel Vesa .enable_reg = 0x52008, 2312955f2ea3SAbel Vesa .enable_mask = BIT(28), 2313955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2314955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s6_clk", 231518aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 231618aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 2317955f2ea3SAbel Vesa }, 2318955f2ea3SAbel Vesa .num_parents = 1, 2319955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2320955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2321955f2ea3SAbel Vesa }, 2322955f2ea3SAbel Vesa }, 2323955f2ea3SAbel Vesa }; 2324955f2ea3SAbel Vesa 2325955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s7_clk = { 2326955f2ea3SAbel Vesa .halt_reg = 0x1888c, 2327955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2328955f2ea3SAbel Vesa .clkr = { 2329955f2ea3SAbel Vesa .enable_reg = 0x52010, 2330955f2ea3SAbel Vesa .enable_mask = BIT(16), 2331955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2332955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap1_s7_clk", 233318aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 233418aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap1_s7_clk_src.clkr.hw, 2335955f2ea3SAbel Vesa }, 2336955f2ea3SAbel Vesa .num_parents = 1, 2337955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2338955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2339955f2ea3SAbel Vesa }, 2340955f2ea3SAbel Vesa }, 2341955f2ea3SAbel Vesa }; 2342955f2ea3SAbel Vesa 2343955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = { 2344955f2ea3SAbel Vesa .halt_reg = 0x23004, 2345955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2346955f2ea3SAbel Vesa .clkr = { 2347955f2ea3SAbel Vesa .enable_reg = 0x52010, 2348955f2ea3SAbel Vesa .enable_mask = BIT(3), 2349955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2350955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_core_2x_clk", 2351955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2352955f2ea3SAbel Vesa }, 2353955f2ea3SAbel Vesa }, 2354955f2ea3SAbel Vesa }; 2355955f2ea3SAbel Vesa 2356955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_core_clk = { 2357955f2ea3SAbel Vesa .halt_reg = 0x233d4, 2358955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2359955f2ea3SAbel Vesa .clkr = { 2360955f2ea3SAbel Vesa .enable_reg = 0x52010, 2361955f2ea3SAbel Vesa .enable_mask = BIT(0), 2362955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2363955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_core_clk", 2364955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2365955f2ea3SAbel Vesa }, 2366955f2ea3SAbel Vesa }, 2367955f2ea3SAbel Vesa }; 2368955f2ea3SAbel Vesa 2369955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s0_clk = { 2370955f2ea3SAbel Vesa .halt_reg = 0x1e004, 2371955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2372955f2ea3SAbel Vesa .clkr = { 2373955f2ea3SAbel Vesa .enable_reg = 0x52010, 2374955f2ea3SAbel Vesa .enable_mask = BIT(4), 2375955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2376955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s0_clk", 237718aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 237818aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s0_clk_src.clkr.hw, 2379955f2ea3SAbel Vesa }, 2380955f2ea3SAbel Vesa .num_parents = 1, 2381955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2382955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2383955f2ea3SAbel Vesa }, 2384955f2ea3SAbel Vesa }, 2385955f2ea3SAbel Vesa }; 2386955f2ea3SAbel Vesa 2387955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s1_clk = { 2388955f2ea3SAbel Vesa .halt_reg = 0x1e13c, 2389955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2390955f2ea3SAbel Vesa .clkr = { 2391955f2ea3SAbel Vesa .enable_reg = 0x52010, 2392955f2ea3SAbel Vesa .enable_mask = BIT(5), 2393955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2394955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s1_clk", 239518aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 239618aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s1_clk_src.clkr.hw, 2397955f2ea3SAbel Vesa }, 2398955f2ea3SAbel Vesa .num_parents = 1, 2399955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2400955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2401955f2ea3SAbel Vesa }, 2402955f2ea3SAbel Vesa }, 2403955f2ea3SAbel Vesa }; 2404955f2ea3SAbel Vesa 2405955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s2_clk = { 2406955f2ea3SAbel Vesa .halt_reg = 0x1e274, 2407955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2408955f2ea3SAbel Vesa .clkr = { 2409955f2ea3SAbel Vesa .enable_reg = 0x52010, 2410955f2ea3SAbel Vesa .enable_mask = BIT(6), 2411955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2412955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s2_clk", 241318aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 241418aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s2_clk_src.clkr.hw, 2415955f2ea3SAbel Vesa }, 2416955f2ea3SAbel Vesa .num_parents = 1, 2417955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2418955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2419955f2ea3SAbel Vesa }, 2420955f2ea3SAbel Vesa }, 2421955f2ea3SAbel Vesa }; 2422955f2ea3SAbel Vesa 2423955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s3_clk = { 2424955f2ea3SAbel Vesa .halt_reg = 0x1e3ac, 2425955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2426955f2ea3SAbel Vesa .clkr = { 2427955f2ea3SAbel Vesa .enable_reg = 0x52010, 2428955f2ea3SAbel Vesa .enable_mask = BIT(7), 2429955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2430955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s3_clk", 243118aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 243218aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s3_clk_src.clkr.hw, 2433955f2ea3SAbel Vesa }, 2434955f2ea3SAbel Vesa .num_parents = 1, 2435955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2436955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2437955f2ea3SAbel Vesa }, 2438955f2ea3SAbel Vesa }, 2439955f2ea3SAbel Vesa }; 2440955f2ea3SAbel Vesa 2441955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s4_clk = { 2442955f2ea3SAbel Vesa .halt_reg = 0x1e4e4, 2443955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2444955f2ea3SAbel Vesa .clkr = { 2445955f2ea3SAbel Vesa .enable_reg = 0x52010, 2446955f2ea3SAbel Vesa .enable_mask = BIT(8), 2447955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2448955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s4_clk", 244918aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 245018aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s4_clk_src.clkr.hw, 2451955f2ea3SAbel Vesa }, 2452955f2ea3SAbel Vesa .num_parents = 1, 2453955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2454955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2455955f2ea3SAbel Vesa }, 2456955f2ea3SAbel Vesa }, 2457955f2ea3SAbel Vesa }; 2458955f2ea3SAbel Vesa 2459955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s5_clk = { 2460955f2ea3SAbel Vesa .halt_reg = 0x1e61c, 2461955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2462955f2ea3SAbel Vesa .clkr = { 2463955f2ea3SAbel Vesa .enable_reg = 0x52010, 2464955f2ea3SAbel Vesa .enable_mask = BIT(9), 2465955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2466955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s5_clk", 246718aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 246818aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s5_clk_src.clkr.hw, 2469955f2ea3SAbel Vesa }, 2470955f2ea3SAbel Vesa .num_parents = 1, 2471955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2472955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2473955f2ea3SAbel Vesa }, 2474955f2ea3SAbel Vesa }, 2475955f2ea3SAbel Vesa }; 2476955f2ea3SAbel Vesa 2477955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s6_clk = { 2478955f2ea3SAbel Vesa .halt_reg = 0x1e754, 2479955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2480955f2ea3SAbel Vesa .clkr = { 2481955f2ea3SAbel Vesa .enable_reg = 0x52010, 2482955f2ea3SAbel Vesa .enable_mask = BIT(10), 2483955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2484955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s6_clk", 248518aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 248618aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s6_clk_src.clkr.hw, 2487955f2ea3SAbel Vesa }, 2488955f2ea3SAbel Vesa .num_parents = 1, 2489955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2490955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2491955f2ea3SAbel Vesa }, 2492955f2ea3SAbel Vesa }, 2493955f2ea3SAbel Vesa }; 2494955f2ea3SAbel Vesa 2495955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s7_clk = { 2496955f2ea3SAbel Vesa .halt_reg = 0x1e88c, 2497955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2498955f2ea3SAbel Vesa .clkr = { 2499955f2ea3SAbel Vesa .enable_reg = 0x52010, 2500955f2ea3SAbel Vesa .enable_mask = BIT(17), 2501955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2502955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap2_s7_clk", 250318aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 250418aa0dc2SDmitry Baryshkov &gcc_qupv3_wrap2_s7_clk_src.clkr.hw, 2505955f2ea3SAbel Vesa }, 2506955f2ea3SAbel Vesa .num_parents = 1, 2507955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2508955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2509955f2ea3SAbel Vesa }, 2510955f2ea3SAbel Vesa }, 2511955f2ea3SAbel Vesa }; 2512955f2ea3SAbel Vesa 2513955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = { 2514955f2ea3SAbel Vesa .halt_reg = 0x2327c, 2515955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2516955f2ea3SAbel Vesa .hwcg_reg = 0x2327c, 2517955f2ea3SAbel Vesa .hwcg_bit = 1, 2518955f2ea3SAbel Vesa .clkr = { 2519955f2ea3SAbel Vesa .enable_reg = 0x52008, 2520955f2ea3SAbel Vesa .enable_mask = BIT(20), 2521955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2522955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap_1_m_ahb_clk", 2523955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2524955f2ea3SAbel Vesa }, 2525955f2ea3SAbel Vesa }, 2526955f2ea3SAbel Vesa }; 2527955f2ea3SAbel Vesa 2528955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 2529955f2ea3SAbel Vesa .halt_reg = 0x23280, 2530955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2531955f2ea3SAbel Vesa .hwcg_reg = 0x23280, 2532955f2ea3SAbel Vesa .hwcg_bit = 1, 2533955f2ea3SAbel Vesa .clkr = { 2534955f2ea3SAbel Vesa .enable_reg = 0x52008, 2535955f2ea3SAbel Vesa .enable_mask = BIT(21), 2536955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2537955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap_1_s_ahb_clk", 2538955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2539955f2ea3SAbel Vesa }, 2540955f2ea3SAbel Vesa }, 2541955f2ea3SAbel Vesa }; 2542955f2ea3SAbel Vesa 2543955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = { 2544955f2ea3SAbel Vesa .halt_reg = 0x233cc, 2545955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2546955f2ea3SAbel Vesa .hwcg_reg = 0x233cc, 2547955f2ea3SAbel Vesa .hwcg_bit = 1, 2548955f2ea3SAbel Vesa .clkr = { 2549955f2ea3SAbel Vesa .enable_reg = 0x52010, 2550955f2ea3SAbel Vesa .enable_mask = BIT(2), 2551955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2552955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap_2_m_ahb_clk", 2553955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2554955f2ea3SAbel Vesa }, 2555955f2ea3SAbel Vesa }, 2556955f2ea3SAbel Vesa }; 2557955f2ea3SAbel Vesa 2558955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = { 2559955f2ea3SAbel Vesa .halt_reg = 0x233d0, 2560955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2561955f2ea3SAbel Vesa .hwcg_reg = 0x233d0, 2562955f2ea3SAbel Vesa .hwcg_bit = 1, 2563955f2ea3SAbel Vesa .clkr = { 2564955f2ea3SAbel Vesa .enable_reg = 0x52010, 2565955f2ea3SAbel Vesa .enable_mask = BIT(1), 2566955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2567955f2ea3SAbel Vesa .name = "gcc_qupv3_wrap_2_s_ahb_clk", 2568955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2569955f2ea3SAbel Vesa }, 2570955f2ea3SAbel Vesa }, 2571955f2ea3SAbel Vesa }; 2572955f2ea3SAbel Vesa 2573955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc2_ahb_clk = { 2574955f2ea3SAbel Vesa .halt_reg = 0x14010, 2575955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2576955f2ea3SAbel Vesa .clkr = { 2577955f2ea3SAbel Vesa .enable_reg = 0x14010, 2578955f2ea3SAbel Vesa .enable_mask = BIT(0), 2579955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2580955f2ea3SAbel Vesa .name = "gcc_sdcc2_ahb_clk", 2581955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2582955f2ea3SAbel Vesa }, 2583955f2ea3SAbel Vesa }, 2584955f2ea3SAbel Vesa }; 2585955f2ea3SAbel Vesa 2586955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc2_apps_clk = { 2587955f2ea3SAbel Vesa .halt_reg = 0x14004, 2588955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2589955f2ea3SAbel Vesa .clkr = { 2590955f2ea3SAbel Vesa .enable_reg = 0x14004, 2591955f2ea3SAbel Vesa .enable_mask = BIT(0), 2592955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2593955f2ea3SAbel Vesa .name = "gcc_sdcc2_apps_clk", 259418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 259518aa0dc2SDmitry Baryshkov &gcc_sdcc2_apps_clk_src.clkr.hw, 2596955f2ea3SAbel Vesa }, 2597955f2ea3SAbel Vesa .num_parents = 1, 2598955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2599955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2600955f2ea3SAbel Vesa }, 2601955f2ea3SAbel Vesa }, 2602955f2ea3SAbel Vesa }; 2603955f2ea3SAbel Vesa 2604955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc4_ahb_clk = { 2605955f2ea3SAbel Vesa .halt_reg = 0x16010, 2606955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2607955f2ea3SAbel Vesa .clkr = { 2608955f2ea3SAbel Vesa .enable_reg = 0x16010, 2609955f2ea3SAbel Vesa .enable_mask = BIT(0), 2610955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2611955f2ea3SAbel Vesa .name = "gcc_sdcc4_ahb_clk", 2612955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2613955f2ea3SAbel Vesa }, 2614955f2ea3SAbel Vesa }, 2615955f2ea3SAbel Vesa }; 2616955f2ea3SAbel Vesa 2617955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc4_apps_clk = { 2618955f2ea3SAbel Vesa .halt_reg = 0x16004, 2619955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2620955f2ea3SAbel Vesa .clkr = { 2621955f2ea3SAbel Vesa .enable_reg = 0x16004, 2622955f2ea3SAbel Vesa .enable_mask = BIT(0), 2623955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2624955f2ea3SAbel Vesa .name = "gcc_sdcc4_apps_clk", 262518aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 262618aa0dc2SDmitry Baryshkov &gcc_sdcc4_apps_clk_src.clkr.hw, 2627955f2ea3SAbel Vesa }, 2628955f2ea3SAbel Vesa .num_parents = 1, 2629955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2630955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2631955f2ea3SAbel Vesa }, 2632955f2ea3SAbel Vesa }, 2633955f2ea3SAbel Vesa }; 2634955f2ea3SAbel Vesa 2635955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ahb_clk = { 2636955f2ea3SAbel Vesa .halt_reg = 0x77024, 2637955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2638955f2ea3SAbel Vesa .hwcg_reg = 0x77024, 2639955f2ea3SAbel Vesa .hwcg_bit = 1, 2640955f2ea3SAbel Vesa .clkr = { 2641955f2ea3SAbel Vesa .enable_reg = 0x77024, 2642955f2ea3SAbel Vesa .enable_mask = BIT(0), 2643955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2644955f2ea3SAbel Vesa .name = "gcc_ufs_phy_ahb_clk", 2645955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2646955f2ea3SAbel Vesa }, 2647955f2ea3SAbel Vesa }, 2648955f2ea3SAbel Vesa }; 2649955f2ea3SAbel Vesa 2650955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_axi_clk = { 2651955f2ea3SAbel Vesa .halt_reg = 0x77018, 2652955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2653955f2ea3SAbel Vesa .hwcg_reg = 0x77018, 2654955f2ea3SAbel Vesa .hwcg_bit = 1, 2655955f2ea3SAbel Vesa .clkr = { 2656955f2ea3SAbel Vesa .enable_reg = 0x77018, 2657955f2ea3SAbel Vesa .enable_mask = BIT(0), 2658955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2659955f2ea3SAbel Vesa .name = "gcc_ufs_phy_axi_clk", 266018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 266118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_axi_clk_src.clkr.hw, 2662955f2ea3SAbel Vesa }, 2663955f2ea3SAbel Vesa .num_parents = 1, 2664955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2665955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2666955f2ea3SAbel Vesa }, 2667955f2ea3SAbel Vesa }, 2668955f2ea3SAbel Vesa }; 2669955f2ea3SAbel Vesa 2670955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = { 2671955f2ea3SAbel Vesa .halt_reg = 0x77018, 2672955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2673955f2ea3SAbel Vesa .hwcg_reg = 0x77018, 2674955f2ea3SAbel Vesa .hwcg_bit = 1, 2675955f2ea3SAbel Vesa .clkr = { 2676955f2ea3SAbel Vesa .enable_reg = 0x77018, 2677955f2ea3SAbel Vesa .enable_mask = BIT(1), 2678955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2679955f2ea3SAbel Vesa .name = "gcc_ufs_phy_axi_hw_ctl_clk", 268018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 268118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_axi_clk_src.clkr.hw, 2682955f2ea3SAbel Vesa }, 2683955f2ea3SAbel Vesa .num_parents = 1, 2684955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2685955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2686955f2ea3SAbel Vesa }, 2687955f2ea3SAbel Vesa }, 2688955f2ea3SAbel Vesa }; 2689955f2ea3SAbel Vesa 2690955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ice_core_clk = { 2691955f2ea3SAbel Vesa .halt_reg = 0x77074, 2692955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2693955f2ea3SAbel Vesa .hwcg_reg = 0x77074, 2694955f2ea3SAbel Vesa .hwcg_bit = 1, 2695955f2ea3SAbel Vesa .clkr = { 2696955f2ea3SAbel Vesa .enable_reg = 0x77074, 2697955f2ea3SAbel Vesa .enable_mask = BIT(0), 2698955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2699955f2ea3SAbel Vesa .name = "gcc_ufs_phy_ice_core_clk", 270018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 270118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2702955f2ea3SAbel Vesa }, 2703955f2ea3SAbel Vesa .num_parents = 1, 2704955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2705955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2706955f2ea3SAbel Vesa }, 2707955f2ea3SAbel Vesa }, 2708955f2ea3SAbel Vesa }; 2709955f2ea3SAbel Vesa 2710955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = { 2711955f2ea3SAbel Vesa .halt_reg = 0x77074, 2712955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2713955f2ea3SAbel Vesa .hwcg_reg = 0x77074, 2714955f2ea3SAbel Vesa .hwcg_bit = 1, 2715955f2ea3SAbel Vesa .clkr = { 2716955f2ea3SAbel Vesa .enable_reg = 0x77074, 2717955f2ea3SAbel Vesa .enable_mask = BIT(1), 2718955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2719955f2ea3SAbel Vesa .name = "gcc_ufs_phy_ice_core_hw_ctl_clk", 272018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 272118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2722955f2ea3SAbel Vesa }, 2723955f2ea3SAbel Vesa .num_parents = 1, 2724955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2725955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2726955f2ea3SAbel Vesa }, 2727955f2ea3SAbel Vesa }, 2728955f2ea3SAbel Vesa }; 2729955f2ea3SAbel Vesa 2730955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 2731955f2ea3SAbel Vesa .halt_reg = 0x770b0, 2732955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2733955f2ea3SAbel Vesa .hwcg_reg = 0x770b0, 2734955f2ea3SAbel Vesa .hwcg_bit = 1, 2735955f2ea3SAbel Vesa .clkr = { 2736955f2ea3SAbel Vesa .enable_reg = 0x770b0, 2737955f2ea3SAbel Vesa .enable_mask = BIT(0), 2738955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2739955f2ea3SAbel Vesa .name = "gcc_ufs_phy_phy_aux_clk", 274018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 274118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2742955f2ea3SAbel Vesa }, 2743955f2ea3SAbel Vesa .num_parents = 1, 2744955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2745955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2746955f2ea3SAbel Vesa }, 2747955f2ea3SAbel Vesa }, 2748955f2ea3SAbel Vesa }; 2749955f2ea3SAbel Vesa 2750955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = { 2751955f2ea3SAbel Vesa .halt_reg = 0x770b0, 2752955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2753955f2ea3SAbel Vesa .hwcg_reg = 0x770b0, 2754955f2ea3SAbel Vesa .hwcg_bit = 1, 2755955f2ea3SAbel Vesa .clkr = { 2756955f2ea3SAbel Vesa .enable_reg = 0x770b0, 2757955f2ea3SAbel Vesa .enable_mask = BIT(1), 2758955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2759955f2ea3SAbel Vesa .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk", 276018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 276118aa0dc2SDmitry Baryshkov &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2762955f2ea3SAbel Vesa }, 2763955f2ea3SAbel Vesa .num_parents = 1, 2764955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2765955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2766955f2ea3SAbel Vesa }, 2767955f2ea3SAbel Vesa }, 2768955f2ea3SAbel Vesa }; 2769955f2ea3SAbel Vesa 2770955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 2771955f2ea3SAbel Vesa .halt_reg = 0x7702c, 2772955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 2773955f2ea3SAbel Vesa .clkr = { 2774955f2ea3SAbel Vesa .enable_reg = 0x7702c, 2775955f2ea3SAbel Vesa .enable_mask = BIT(0), 2776955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2777955f2ea3SAbel Vesa .name = "gcc_ufs_phy_rx_symbol_0_clk", 277818aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 277918aa0dc2SDmitry Baryshkov &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw, 2780955f2ea3SAbel Vesa }, 2781955f2ea3SAbel Vesa .num_parents = 1, 2782955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2783955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2784955f2ea3SAbel Vesa }, 2785955f2ea3SAbel Vesa }, 2786955f2ea3SAbel Vesa }; 2787955f2ea3SAbel Vesa 2788955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = { 2789955f2ea3SAbel Vesa .halt_reg = 0x770cc, 2790955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 2791955f2ea3SAbel Vesa .clkr = { 2792955f2ea3SAbel Vesa .enable_reg = 0x770cc, 2793955f2ea3SAbel Vesa .enable_mask = BIT(0), 2794955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2795955f2ea3SAbel Vesa .name = "gcc_ufs_phy_rx_symbol_1_clk", 279618aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 279718aa0dc2SDmitry Baryshkov &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw, 2798955f2ea3SAbel Vesa }, 2799955f2ea3SAbel Vesa .num_parents = 1, 2800955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2801955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2802955f2ea3SAbel Vesa }, 2803955f2ea3SAbel Vesa }, 2804955f2ea3SAbel Vesa }; 2805955f2ea3SAbel Vesa 2806955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 2807955f2ea3SAbel Vesa .halt_reg = 0x77028, 2808955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 2809955f2ea3SAbel Vesa .clkr = { 2810955f2ea3SAbel Vesa .enable_reg = 0x77028, 2811955f2ea3SAbel Vesa .enable_mask = BIT(0), 2812955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2813955f2ea3SAbel Vesa .name = "gcc_ufs_phy_tx_symbol_0_clk", 281418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 281518aa0dc2SDmitry Baryshkov &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw, 2816955f2ea3SAbel Vesa }, 2817955f2ea3SAbel Vesa .num_parents = 1, 2818955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2819955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2820955f2ea3SAbel Vesa }, 2821955f2ea3SAbel Vesa }, 2822955f2ea3SAbel Vesa }; 2823955f2ea3SAbel Vesa 2824955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_unipro_core_clk = { 2825955f2ea3SAbel Vesa .halt_reg = 0x77068, 2826955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2827955f2ea3SAbel Vesa .hwcg_reg = 0x77068, 2828955f2ea3SAbel Vesa .hwcg_bit = 1, 2829955f2ea3SAbel Vesa .clkr = { 2830955f2ea3SAbel Vesa .enable_reg = 0x77068, 2831955f2ea3SAbel Vesa .enable_mask = BIT(0), 2832955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2833955f2ea3SAbel Vesa .name = "gcc_ufs_phy_unipro_core_clk", 283418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 283518aa0dc2SDmitry Baryshkov &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 2836955f2ea3SAbel Vesa }, 2837955f2ea3SAbel Vesa .num_parents = 1, 2838955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2839955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2840955f2ea3SAbel Vesa }, 2841955f2ea3SAbel Vesa }, 2842955f2ea3SAbel Vesa }; 2843955f2ea3SAbel Vesa 2844955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = { 2845955f2ea3SAbel Vesa .halt_reg = 0x77068, 2846955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_VOTED, 2847955f2ea3SAbel Vesa .hwcg_reg = 0x77068, 2848955f2ea3SAbel Vesa .hwcg_bit = 1, 2849955f2ea3SAbel Vesa .clkr = { 2850955f2ea3SAbel Vesa .enable_reg = 0x77068, 2851955f2ea3SAbel Vesa .enable_mask = BIT(1), 2852955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2853955f2ea3SAbel Vesa .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk", 285418aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 285518aa0dc2SDmitry Baryshkov &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 2856955f2ea3SAbel Vesa }, 2857955f2ea3SAbel Vesa .num_parents = 1, 2858955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2859955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2860955f2ea3SAbel Vesa }, 2861955f2ea3SAbel Vesa }, 2862955f2ea3SAbel Vesa }; 2863955f2ea3SAbel Vesa 2864955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_master_clk = { 2865955f2ea3SAbel Vesa .halt_reg = 0x39018, 2866955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2867955f2ea3SAbel Vesa .clkr = { 2868955f2ea3SAbel Vesa .enable_reg = 0x39018, 2869955f2ea3SAbel Vesa .enable_mask = BIT(0), 2870955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2871955f2ea3SAbel Vesa .name = "gcc_usb30_prim_master_clk", 287218aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 287318aa0dc2SDmitry Baryshkov &gcc_usb30_prim_master_clk_src.clkr.hw, 2874955f2ea3SAbel Vesa }, 2875955f2ea3SAbel Vesa .num_parents = 1, 2876955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2877955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2878955f2ea3SAbel Vesa }, 2879955f2ea3SAbel Vesa }, 2880955f2ea3SAbel Vesa }; 2881955f2ea3SAbel Vesa 2882955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 2883955f2ea3SAbel Vesa .halt_reg = 0x39028, 2884955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2885955f2ea3SAbel Vesa .clkr = { 2886955f2ea3SAbel Vesa .enable_reg = 0x39028, 2887955f2ea3SAbel Vesa .enable_mask = BIT(0), 2888955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2889955f2ea3SAbel Vesa .name = "gcc_usb30_prim_mock_utmi_clk", 289018aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 289118aa0dc2SDmitry Baryshkov &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw, 2892955f2ea3SAbel Vesa }, 2893955f2ea3SAbel Vesa .num_parents = 1, 2894955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2895955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2896955f2ea3SAbel Vesa }, 2897955f2ea3SAbel Vesa }, 2898955f2ea3SAbel Vesa }; 2899955f2ea3SAbel Vesa 2900955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_sleep_clk = { 2901955f2ea3SAbel Vesa .halt_reg = 0x39024, 2902955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2903955f2ea3SAbel Vesa .clkr = { 2904955f2ea3SAbel Vesa .enable_reg = 0x39024, 2905955f2ea3SAbel Vesa .enable_mask = BIT(0), 2906955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2907955f2ea3SAbel Vesa .name = "gcc_usb30_prim_sleep_clk", 2908955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2909955f2ea3SAbel Vesa }, 2910955f2ea3SAbel Vesa }, 2911955f2ea3SAbel Vesa }; 2912955f2ea3SAbel Vesa 2913955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 2914955f2ea3SAbel Vesa .halt_reg = 0x39060, 2915955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2916955f2ea3SAbel Vesa .clkr = { 2917955f2ea3SAbel Vesa .enable_reg = 0x39060, 2918955f2ea3SAbel Vesa .enable_mask = BIT(0), 2919955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2920955f2ea3SAbel Vesa .name = "gcc_usb3_prim_phy_aux_clk", 292118aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 292218aa0dc2SDmitry Baryshkov &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2923955f2ea3SAbel Vesa }, 2924955f2ea3SAbel Vesa .num_parents = 1, 2925955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2926955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2927955f2ea3SAbel Vesa }, 2928955f2ea3SAbel Vesa }, 2929955f2ea3SAbel Vesa }; 2930955f2ea3SAbel Vesa 2931955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 2932955f2ea3SAbel Vesa .halt_reg = 0x39064, 2933955f2ea3SAbel Vesa .halt_check = BRANCH_HALT, 2934955f2ea3SAbel Vesa .clkr = { 2935955f2ea3SAbel Vesa .enable_reg = 0x39064, 2936955f2ea3SAbel Vesa .enable_mask = BIT(0), 2937955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2938955f2ea3SAbel Vesa .name = "gcc_usb3_prim_phy_com_aux_clk", 293918aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 294018aa0dc2SDmitry Baryshkov &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2941955f2ea3SAbel Vesa }, 2942955f2ea3SAbel Vesa .num_parents = 1, 2943955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2944955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2945955f2ea3SAbel Vesa }, 2946955f2ea3SAbel Vesa }, 2947955f2ea3SAbel Vesa }; 2948955f2ea3SAbel Vesa 2949955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 2950955f2ea3SAbel Vesa .halt_reg = 0x39068, 2951955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_DELAY, 2952955f2ea3SAbel Vesa .hwcg_reg = 0x39068, 2953955f2ea3SAbel Vesa .hwcg_bit = 1, 2954955f2ea3SAbel Vesa .clkr = { 2955955f2ea3SAbel Vesa .enable_reg = 0x39068, 2956955f2ea3SAbel Vesa .enable_mask = BIT(0), 2957955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2958955f2ea3SAbel Vesa .name = "gcc_usb3_prim_phy_pipe_clk", 295918aa0dc2SDmitry Baryshkov .parent_hws = (const struct clk_hw*[]) { 296018aa0dc2SDmitry Baryshkov &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, 2961955f2ea3SAbel Vesa }, 2962955f2ea3SAbel Vesa .num_parents = 1, 2963955f2ea3SAbel Vesa .flags = CLK_SET_RATE_PARENT, 2964955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2965955f2ea3SAbel Vesa }, 2966955f2ea3SAbel Vesa }, 2967955f2ea3SAbel Vesa }; 2968955f2ea3SAbel Vesa 2969955f2ea3SAbel Vesa static struct clk_branch gcc_video_axi0_clk = { 2970955f2ea3SAbel Vesa .halt_reg = 0x32018, 2971955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 2972955f2ea3SAbel Vesa .hwcg_reg = 0x32018, 2973955f2ea3SAbel Vesa .hwcg_bit = 1, 2974955f2ea3SAbel Vesa .clkr = { 2975955f2ea3SAbel Vesa .enable_reg = 0x32018, 2976955f2ea3SAbel Vesa .enable_mask = BIT(0), 2977955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2978955f2ea3SAbel Vesa .name = "gcc_video_axi0_clk", 2979955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2980955f2ea3SAbel Vesa }, 2981955f2ea3SAbel Vesa }, 2982955f2ea3SAbel Vesa }; 2983955f2ea3SAbel Vesa 2984955f2ea3SAbel Vesa static struct clk_branch gcc_video_axi1_clk = { 2985955f2ea3SAbel Vesa .halt_reg = 0x32024, 2986955f2ea3SAbel Vesa .halt_check = BRANCH_HALT_SKIP, 2987955f2ea3SAbel Vesa .hwcg_reg = 0x32024, 2988955f2ea3SAbel Vesa .hwcg_bit = 1, 2989955f2ea3SAbel Vesa .clkr = { 2990955f2ea3SAbel Vesa .enable_reg = 0x32024, 2991955f2ea3SAbel Vesa .enable_mask = BIT(0), 2992955f2ea3SAbel Vesa .hw.init = &(struct clk_init_data){ 2993955f2ea3SAbel Vesa .name = "gcc_video_axi1_clk", 2994955f2ea3SAbel Vesa .ops = &clk_branch2_ops, 2995955f2ea3SAbel Vesa }, 2996955f2ea3SAbel Vesa }, 2997955f2ea3SAbel Vesa }; 2998955f2ea3SAbel Vesa 2999955f2ea3SAbel Vesa static struct gdsc pcie_0_gdsc = { 3000955f2ea3SAbel Vesa .gdscr = 0x6b004, 3001955f2ea3SAbel Vesa .pd = { 3002955f2ea3SAbel Vesa .name = "pcie_0_gdsc", 3003955f2ea3SAbel Vesa }, 3004955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3005*62f53fe9SKonrad Dybcio .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3006955f2ea3SAbel Vesa }; 3007955f2ea3SAbel Vesa 3008955f2ea3SAbel Vesa static struct gdsc pcie_0_phy_gdsc = { 3009955f2ea3SAbel Vesa .gdscr = 0x6c000, 3010955f2ea3SAbel Vesa .pd = { 3011955f2ea3SAbel Vesa .name = "pcie_0_phy_gdsc", 3012955f2ea3SAbel Vesa }, 3013955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3014*62f53fe9SKonrad Dybcio .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3015955f2ea3SAbel Vesa }; 3016955f2ea3SAbel Vesa 3017955f2ea3SAbel Vesa static struct gdsc pcie_1_gdsc = { 3018955f2ea3SAbel Vesa .gdscr = 0x8d004, 3019955f2ea3SAbel Vesa .pd = { 3020955f2ea3SAbel Vesa .name = "pcie_1_gdsc", 3021955f2ea3SAbel Vesa }, 3022955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3023*62f53fe9SKonrad Dybcio .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3024955f2ea3SAbel Vesa }; 3025955f2ea3SAbel Vesa 3026955f2ea3SAbel Vesa static struct gdsc pcie_1_phy_gdsc = { 3027955f2ea3SAbel Vesa .gdscr = 0x8e000, 3028955f2ea3SAbel Vesa .pd = { 3029955f2ea3SAbel Vesa .name = "pcie_1_phy_gdsc", 3030955f2ea3SAbel Vesa }, 3031955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3032*62f53fe9SKonrad Dybcio .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3033955f2ea3SAbel Vesa }; 3034955f2ea3SAbel Vesa 3035955f2ea3SAbel Vesa static struct gdsc ufs_phy_gdsc = { 3036955f2ea3SAbel Vesa .gdscr = 0x77004, 3037955f2ea3SAbel Vesa .pd = { 3038955f2ea3SAbel Vesa .name = "ufs_phy_gdsc", 3039955f2ea3SAbel Vesa }, 3040955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3041b5782964SKonrad Dybcio .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3042955f2ea3SAbel Vesa }; 3043955f2ea3SAbel Vesa 3044955f2ea3SAbel Vesa static struct gdsc ufs_mem_phy_gdsc = { 3045955f2ea3SAbel Vesa .gdscr = 0x9e000, 3046955f2ea3SAbel Vesa .pd = { 3047955f2ea3SAbel Vesa .name = "ufs_mem_phy_gdsc", 3048955f2ea3SAbel Vesa }, 3049955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3050b5782964SKonrad Dybcio .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3051955f2ea3SAbel Vesa }; 3052955f2ea3SAbel Vesa 3053955f2ea3SAbel Vesa static struct gdsc usb30_prim_gdsc = { 3054955f2ea3SAbel Vesa .gdscr = 0x39004, 3055955f2ea3SAbel Vesa .pd = { 3056955f2ea3SAbel Vesa .name = "usb30_prim_gdsc", 3057955f2ea3SAbel Vesa }, 3058955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3059b5782964SKonrad Dybcio .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3060955f2ea3SAbel Vesa }; 3061955f2ea3SAbel Vesa 3062955f2ea3SAbel Vesa static struct gdsc usb3_phy_gdsc = { 3063955f2ea3SAbel Vesa .gdscr = 0x50018, 3064955f2ea3SAbel Vesa .pd = { 3065955f2ea3SAbel Vesa .name = "usb3_phy_gdsc", 3066955f2ea3SAbel Vesa }, 3067955f2ea3SAbel Vesa .pwrsts = PWRSTS_OFF_ON, 3068b5782964SKonrad Dybcio .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3069955f2ea3SAbel Vesa }; 3070955f2ea3SAbel Vesa 3071955f2ea3SAbel Vesa static struct clk_regmap *gcc_sm8550_clocks[] = { 3072955f2ea3SAbel Vesa [GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr, 3073955f2ea3SAbel Vesa [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 3074955f2ea3SAbel Vesa [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr, 3075955f2ea3SAbel Vesa [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 3076955f2ea3SAbel Vesa [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3077955f2ea3SAbel Vesa [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr, 3078955f2ea3SAbel Vesa [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr, 3079955f2ea3SAbel Vesa [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr, 3080955f2ea3SAbel Vesa [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 3081955f2ea3SAbel Vesa [GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr, 3082955f2ea3SAbel Vesa [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 3083955f2ea3SAbel Vesa [GCC_DDRSS_PCIE_SF_QTB_CLK] = &gcc_ddrss_pcie_sf_qtb_clk.clkr, 3084955f2ea3SAbel Vesa [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr, 3085955f2ea3SAbel Vesa [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3086955f2ea3SAbel Vesa [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 3087955f2ea3SAbel Vesa [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3088955f2ea3SAbel Vesa [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 3089955f2ea3SAbel Vesa [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3090955f2ea3SAbel Vesa [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 3091955f2ea3SAbel Vesa [GCC_GPLL0] = &gcc_gpll0.clkr, 3092955f2ea3SAbel Vesa [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr, 3093955f2ea3SAbel Vesa [GCC_GPLL4] = &gcc_gpll4.clkr, 3094955f2ea3SAbel Vesa [GCC_GPLL7] = &gcc_gpll7.clkr, 3095955f2ea3SAbel Vesa [GCC_GPLL9] = &gcc_gpll9.clkr, 3096955f2ea3SAbel Vesa [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 3097955f2ea3SAbel Vesa [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 3098955f2ea3SAbel Vesa [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 3099955f2ea3SAbel Vesa [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 3100955f2ea3SAbel Vesa [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 3101955f2ea3SAbel Vesa [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr, 3102955f2ea3SAbel Vesa [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 3103955f2ea3SAbel Vesa [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 3104955f2ea3SAbel Vesa [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr, 3105955f2ea3SAbel Vesa [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr, 3106955f2ea3SAbel Vesa [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 3107955f2ea3SAbel Vesa [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr, 3108955f2ea3SAbel Vesa [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 3109955f2ea3SAbel Vesa [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr, 3110955f2ea3SAbel Vesa [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 3111955f2ea3SAbel Vesa [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr, 3112955f2ea3SAbel Vesa [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 3113955f2ea3SAbel Vesa [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 3114955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr, 3115955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr, 3116955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr, 3117955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr, 3118955f2ea3SAbel Vesa [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 3119955f2ea3SAbel Vesa [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr, 3120955f2ea3SAbel Vesa [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 3121955f2ea3SAbel Vesa [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr, 3122955f2ea3SAbel Vesa [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3123955f2ea3SAbel Vesa [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 3124955f2ea3SAbel Vesa [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3125955f2ea3SAbel Vesa [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 3126955f2ea3SAbel Vesa [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr, 3127955f2ea3SAbel Vesa [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr, 3128955f2ea3SAbel Vesa [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr, 3129955f2ea3SAbel Vesa [GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr, 3130955f2ea3SAbel Vesa [GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr, 3131955f2ea3SAbel Vesa [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr, 3132955f2ea3SAbel Vesa [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr, 3133955f2ea3SAbel Vesa [GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr, 3134955f2ea3SAbel Vesa [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr, 3135955f2ea3SAbel Vesa [GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr, 3136955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr, 3137955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr, 3138955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr, 3139955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr, 3140955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr, 3141955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr, 3142955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr, 3143955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr, 3144955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr, 3145955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr, 3146955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S5_CLK] = &gcc_qupv3_i2c_s5_clk.clkr, 3147955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S5_CLK_SRC] = &gcc_qupv3_i2c_s5_clk_src.clkr, 3148955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S6_CLK] = &gcc_qupv3_i2c_s6_clk.clkr, 3149955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S6_CLK_SRC] = &gcc_qupv3_i2c_s6_clk_src.clkr, 3150955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S7_CLK] = &gcc_qupv3_i2c_s7_clk.clkr, 3151955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S7_CLK_SRC] = &gcc_qupv3_i2c_s7_clk_src.clkr, 3152955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S8_CLK] = &gcc_qupv3_i2c_s8_clk.clkr, 3153955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S8_CLK_SRC] = &gcc_qupv3_i2c_s8_clk_src.clkr, 3154955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S9_CLK] = &gcc_qupv3_i2c_s9_clk.clkr, 3155955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S9_CLK_SRC] = &gcc_qupv3_i2c_s9_clk_src.clkr, 3156955f2ea3SAbel Vesa [GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr, 3157955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr, 3158955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr, 3159955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 3160955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 3161955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 3162955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 3163955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 3164955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 3165955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 3166955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 3167955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 3168955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 3169955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 3170955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 3171955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 3172955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 3173955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr, 3174955f2ea3SAbel Vesa [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr, 3175955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr, 3176955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr, 3177955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr, 3178955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr, 3179955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr, 3180955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr, 3181955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr, 3182955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr, 3183955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr, 3184955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr, 3185955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr, 3186955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr, 3187955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr, 3188955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr, 3189955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr, 3190955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr, 3191955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr, 3192955f2ea3SAbel Vesa [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr, 3193955f2ea3SAbel Vesa [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 3194955f2ea3SAbel Vesa [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 3195955f2ea3SAbel Vesa [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr, 3196955f2ea3SAbel Vesa [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr, 3197955f2ea3SAbel Vesa [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3198955f2ea3SAbel Vesa [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3199955f2ea3SAbel Vesa [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 3200955f2ea3SAbel Vesa [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 3201955f2ea3SAbel Vesa [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 3202955f2ea3SAbel Vesa [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr, 3203955f2ea3SAbel Vesa [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 3204955f2ea3SAbel Vesa [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 3205955f2ea3SAbel Vesa [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 3206955f2ea3SAbel Vesa [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr, 3207955f2ea3SAbel Vesa [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 3208955f2ea3SAbel Vesa [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 3209955f2ea3SAbel Vesa [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr, 3210955f2ea3SAbel Vesa [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 3211955f2ea3SAbel Vesa [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 3212955f2ea3SAbel Vesa [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr, 3213955f2ea3SAbel Vesa [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 3214955f2ea3SAbel Vesa [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr, 3215955f2ea3SAbel Vesa [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr, 3216955f2ea3SAbel Vesa [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr, 3217955f2ea3SAbel Vesa [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 3218955f2ea3SAbel Vesa [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr, 3219955f2ea3SAbel Vesa [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 3220955f2ea3SAbel Vesa [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr, 3221955f2ea3SAbel Vesa [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr, 3222955f2ea3SAbel Vesa [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 3223955f2ea3SAbel Vesa [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 3224955f2ea3SAbel Vesa [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 3225955f2ea3SAbel Vesa [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr, 3226955f2ea3SAbel Vesa [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr, 3227955f2ea3SAbel Vesa [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 3228955f2ea3SAbel Vesa [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 3229955f2ea3SAbel Vesa [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 3230955f2ea3SAbel Vesa [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 3231955f2ea3SAbel Vesa [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 3232955f2ea3SAbel Vesa [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr, 3233955f2ea3SAbel Vesa [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr, 3234955f2ea3SAbel Vesa [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr, 3235955f2ea3SAbel Vesa }; 3236955f2ea3SAbel Vesa 3237955f2ea3SAbel Vesa static const struct qcom_reset_map gcc_sm8550_resets[] = { 3238955f2ea3SAbel Vesa [GCC_CAMERA_BCR] = { 0x26000 }, 3239955f2ea3SAbel Vesa [GCC_DISPLAY_BCR] = { 0x27000 }, 3240955f2ea3SAbel Vesa [GCC_GPU_BCR] = { 0x71000 }, 3241955f2ea3SAbel Vesa [GCC_PCIE_0_BCR] = { 0x6b000 }, 3242955f2ea3SAbel Vesa [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 }, 3243955f2ea3SAbel Vesa [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 }, 3244955f2ea3SAbel Vesa [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, 3245955f2ea3SAbel Vesa [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 }, 3246955f2ea3SAbel Vesa [GCC_PCIE_1_BCR] = { 0x8d000 }, 3247955f2ea3SAbel Vesa [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 }, 3248955f2ea3SAbel Vesa [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 }, 3249955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, 3250955f2ea3SAbel Vesa [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 }, 3251955f2ea3SAbel Vesa [GCC_PCIE_PHY_BCR] = { 0x6f000 }, 3252955f2ea3SAbel Vesa [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c }, 3253955f2ea3SAbel Vesa [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 }, 3254955f2ea3SAbel Vesa [GCC_PDM_BCR] = { 0x33000 }, 3255955f2ea3SAbel Vesa [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 }, 3256955f2ea3SAbel Vesa [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 }, 3257955f2ea3SAbel Vesa [GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 }, 3258955f2ea3SAbel Vesa [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, 3259955f2ea3SAbel Vesa [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, 3260955f2ea3SAbel Vesa [GCC_SDCC2_BCR] = { 0x14000 }, 3261955f2ea3SAbel Vesa [GCC_SDCC4_BCR] = { 0x16000 }, 3262955f2ea3SAbel Vesa [GCC_UFS_PHY_BCR] = { 0x77000 }, 3263955f2ea3SAbel Vesa [GCC_USB30_PRIM_BCR] = { 0x39000 }, 3264955f2ea3SAbel Vesa [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 3265955f2ea3SAbel Vesa [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 }, 3266955f2ea3SAbel Vesa [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 3267955f2ea3SAbel Vesa [GCC_USB3_PHY_SEC_BCR] = { 0x5000c }, 3268955f2ea3SAbel Vesa [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 3269955f2ea3SAbel Vesa [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 }, 3270955f2ea3SAbel Vesa [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, 3271955f2ea3SAbel Vesa [GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 }, 3272955f2ea3SAbel Vesa [GCC_VIDEO_AXI1_CLK_ARES] = { 0x32024, 2 }, 3273955f2ea3SAbel Vesa [GCC_VIDEO_BCR] = { 0x32000 }, 3274955f2ea3SAbel Vesa }; 3275955f2ea3SAbel Vesa 3276955f2ea3SAbel Vesa static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = { 3277955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 3278955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 3279955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src), 3280955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 3281955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 3282955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 3283955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src), 3284955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src), 3285955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src), 3286955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src), 3287955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src), 3288955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src), 3289955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src), 3290955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src), 3291955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src), 3292955f2ea3SAbel Vesa DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src), 3293955f2ea3SAbel Vesa }; 3294955f2ea3SAbel Vesa 3295955f2ea3SAbel Vesa static struct gdsc *gcc_sm8550_gdscs[] = { 3296955f2ea3SAbel Vesa [PCIE_0_GDSC] = &pcie_0_gdsc, 3297955f2ea3SAbel Vesa [PCIE_0_PHY_GDSC] = &pcie_0_phy_gdsc, 3298955f2ea3SAbel Vesa [PCIE_1_GDSC] = &pcie_1_gdsc, 3299955f2ea3SAbel Vesa [PCIE_1_PHY_GDSC] = &pcie_1_phy_gdsc, 3300955f2ea3SAbel Vesa [UFS_PHY_GDSC] = &ufs_phy_gdsc, 3301955f2ea3SAbel Vesa [UFS_MEM_PHY_GDSC] = &ufs_mem_phy_gdsc, 3302955f2ea3SAbel Vesa [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 3303955f2ea3SAbel Vesa [USB3_PHY_GDSC] = &usb3_phy_gdsc, 3304955f2ea3SAbel Vesa }; 3305955f2ea3SAbel Vesa 3306955f2ea3SAbel Vesa static const struct regmap_config gcc_sm8550_regmap_config = { 3307955f2ea3SAbel Vesa .reg_bits = 32, 3308955f2ea3SAbel Vesa .reg_stride = 4, 3309955f2ea3SAbel Vesa .val_bits = 32, 3310955f2ea3SAbel Vesa .max_register = 0x1f41f0, 3311955f2ea3SAbel Vesa .fast_io = true, 3312955f2ea3SAbel Vesa }; 3313955f2ea3SAbel Vesa 3314955f2ea3SAbel Vesa static const struct qcom_cc_desc gcc_sm8550_desc = { 3315955f2ea3SAbel Vesa .config = &gcc_sm8550_regmap_config, 3316955f2ea3SAbel Vesa .clks = gcc_sm8550_clocks, 3317955f2ea3SAbel Vesa .num_clks = ARRAY_SIZE(gcc_sm8550_clocks), 3318955f2ea3SAbel Vesa .resets = gcc_sm8550_resets, 3319955f2ea3SAbel Vesa .num_resets = ARRAY_SIZE(gcc_sm8550_resets), 3320955f2ea3SAbel Vesa .gdscs = gcc_sm8550_gdscs, 3321955f2ea3SAbel Vesa .num_gdscs = ARRAY_SIZE(gcc_sm8550_gdscs), 3322955f2ea3SAbel Vesa }; 3323955f2ea3SAbel Vesa 3324955f2ea3SAbel Vesa static const struct of_device_id gcc_sm8550_match_table[] = { 3325955f2ea3SAbel Vesa { .compatible = "qcom,sm8550-gcc" }, 3326955f2ea3SAbel Vesa { } 3327955f2ea3SAbel Vesa }; 3328955f2ea3SAbel Vesa MODULE_DEVICE_TABLE(of, gcc_sm8550_match_table); 3329955f2ea3SAbel Vesa 3330955f2ea3SAbel Vesa static int gcc_sm8550_probe(struct platform_device *pdev) 3331955f2ea3SAbel Vesa { 3332955f2ea3SAbel Vesa struct regmap *regmap; 3333955f2ea3SAbel Vesa int ret; 3334955f2ea3SAbel Vesa 3335955f2ea3SAbel Vesa regmap = qcom_cc_map(pdev, &gcc_sm8550_desc); 3336955f2ea3SAbel Vesa if (IS_ERR(regmap)) 3337955f2ea3SAbel Vesa return PTR_ERR(regmap); 3338955f2ea3SAbel Vesa 3339955f2ea3SAbel Vesa ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, 3340955f2ea3SAbel Vesa ARRAY_SIZE(gcc_dfs_clocks)); 3341955f2ea3SAbel Vesa if (ret) 3342955f2ea3SAbel Vesa return ret; 3343955f2ea3SAbel Vesa 3344955f2ea3SAbel Vesa /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */ 3345955f2ea3SAbel Vesa regmap_update_bits(regmap, gcc_ufs_phy_ice_core_clk.halt_reg, BIT(14), BIT(14)); 3346955f2ea3SAbel Vesa 3347955f2ea3SAbel Vesa /* 3348955f2ea3SAbel Vesa * Keep the critical clock always-On 3349955f2ea3SAbel Vesa * gcc_camera_ahb_clk, gcc_camera_xo_clk, gcc_disp_ahb_clk, 3350955f2ea3SAbel Vesa * gcc_disp_xo_clk, gcc_gpu_cfg_ahb_clk, gcc_video_ahb_clk, 3351955f2ea3SAbel Vesa * gcc_video_xo_clk 3352955f2ea3SAbel Vesa */ 3353955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x26004, BIT(0), BIT(0)); 3354955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x26028, BIT(0), BIT(0)); 3355955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x27004, BIT(0), BIT(0)); 3356955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x27018, BIT(0), BIT(0)); 3357955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0)); 3358955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x32004, BIT(0), BIT(0)); 3359955f2ea3SAbel Vesa regmap_update_bits(regmap, 0x32030, BIT(0), BIT(0)); 3360955f2ea3SAbel Vesa 3361955f2ea3SAbel Vesa /* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */ 3362955f2ea3SAbel Vesa regmap_write(regmap, 0x52024, 0x0); 3363955f2ea3SAbel Vesa 3364955f2ea3SAbel Vesa return qcom_cc_really_probe(pdev, &gcc_sm8550_desc, regmap); 3365955f2ea3SAbel Vesa } 3366955f2ea3SAbel Vesa 3367955f2ea3SAbel Vesa static struct platform_driver gcc_sm8550_driver = { 3368955f2ea3SAbel Vesa .probe = gcc_sm8550_probe, 3369955f2ea3SAbel Vesa .driver = { 3370955f2ea3SAbel Vesa .name = "gcc-sm8550", 3371955f2ea3SAbel Vesa .of_match_table = gcc_sm8550_match_table, 3372955f2ea3SAbel Vesa }, 3373955f2ea3SAbel Vesa }; 3374955f2ea3SAbel Vesa 3375955f2ea3SAbel Vesa static int __init gcc_sm8550_init(void) 3376955f2ea3SAbel Vesa { 3377955f2ea3SAbel Vesa return platform_driver_register(&gcc_sm8550_driver); 3378955f2ea3SAbel Vesa } 3379955f2ea3SAbel Vesa subsys_initcall(gcc_sm8550_init); 3380955f2ea3SAbel Vesa 3381955f2ea3SAbel Vesa static void __exit gcc_sm8550_exit(void) 3382955f2ea3SAbel Vesa { 3383955f2ea3SAbel Vesa platform_driver_unregister(&gcc_sm8550_driver); 3384955f2ea3SAbel Vesa } 3385955f2ea3SAbel Vesa module_exit(gcc_sm8550_exit); 3386955f2ea3SAbel Vesa 3387955f2ea3SAbel Vesa MODULE_DESCRIPTION("QTI GCC SM8550 Driver"); 3388955f2ea3SAbel Vesa MODULE_LICENSE("GPL"); 3389