1e700bfd2STaniya Das // SPDX-License-Identifier: GPL-2.0-only 2e700bfd2STaniya Das /* 3e700bfd2STaniya Das * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. 4e700bfd2STaniya Das */ 5e700bfd2STaniya Das 6e700bfd2STaniya Das #include <linux/clk-provider.h> 7e700bfd2STaniya Das #include <linux/module.h> 8e700bfd2STaniya Das #include <linux/mod_devicetable.h> 9e700bfd2STaniya Das #include <linux/platform_device.h> 10e700bfd2STaniya Das #include <linux/pm_runtime.h> 11e700bfd2STaniya Das #include <linux/regmap.h> 12e700bfd2STaniya Das 13e700bfd2STaniya Das #include <dt-bindings/clock/qcom,sa8775p-dispcc.h> 14e700bfd2STaniya Das 15e700bfd2STaniya Das #include "clk-alpha-pll.h" 16e700bfd2STaniya Das #include "clk-branch.h" 17e700bfd2STaniya Das #include "clk-pll.h" 18e700bfd2STaniya Das #include "clk-rcg.h" 19e700bfd2STaniya Das #include "clk-regmap.h" 20e700bfd2STaniya Das #include "clk-regmap-divider.h" 21e700bfd2STaniya Das #include "clk-regmap-mux.h" 22e700bfd2STaniya Das #include "common.h" 23e700bfd2STaniya Das #include "gdsc.h" 24e700bfd2STaniya Das #include "reset.h" 25e700bfd2STaniya Das 26e700bfd2STaniya Das enum { 27e700bfd2STaniya Das DT_IFACE, 28e700bfd2STaniya Das DT_BI_TCXO, 29e700bfd2STaniya Das DT_BI_TCXO_AO, 30e700bfd2STaniya Das DT_SLEEP_CLK, 31e700bfd2STaniya Das DT_DP0_PHY_PLL_LINK_CLK, 32e700bfd2STaniya Das DT_DP0_PHY_PLL_VCO_DIV_CLK, 33e700bfd2STaniya Das DT_DP1_PHY_PLL_LINK_CLK, 34e700bfd2STaniya Das DT_DP1_PHY_PLL_VCO_DIV_CLK, 35e700bfd2STaniya Das DT_DSI0_PHY_PLL_OUT_BYTECLK, 36e700bfd2STaniya Das DT_DSI0_PHY_PLL_OUT_DSICLK, 37e700bfd2STaniya Das DT_DSI1_PHY_PLL_OUT_BYTECLK, 38e700bfd2STaniya Das DT_DSI1_PHY_PLL_OUT_DSICLK, 39e700bfd2STaniya Das }; 40e700bfd2STaniya Das 41e700bfd2STaniya Das enum { 42e700bfd2STaniya Das P_BI_TCXO, 43e700bfd2STaniya Das P_DP0_PHY_PLL_LINK_CLK, 44e700bfd2STaniya Das P_DP0_PHY_PLL_VCO_DIV_CLK, 45e700bfd2STaniya Das P_DP1_PHY_PLL_LINK_CLK, 46e700bfd2STaniya Das P_DP1_PHY_PLL_VCO_DIV_CLK, 47e700bfd2STaniya Das P_DSI0_PHY_PLL_OUT_BYTECLK, 48e700bfd2STaniya Das P_DSI0_PHY_PLL_OUT_DSICLK, 49e700bfd2STaniya Das P_DSI1_PHY_PLL_OUT_BYTECLK, 50e700bfd2STaniya Das P_DSI1_PHY_PLL_OUT_DSICLK, 51e700bfd2STaniya Das P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 52e700bfd2STaniya Das P_MDSS_1_DISP_CC_PLL1_OUT_EVEN, 53e700bfd2STaniya Das P_MDSS_1_DISP_CC_PLL1_OUT_MAIN, 54e700bfd2STaniya Das P_SLEEP_CLK, 55e700bfd2STaniya Das }; 56e700bfd2STaniya Das 57e700bfd2STaniya Das static const struct pll_vco lucid_evo_vco[] = { 58e700bfd2STaniya Das { 249600000, 2020000000, 0 }, 59e700bfd2STaniya Das }; 60e700bfd2STaniya Das 61e700bfd2STaniya Das static const struct alpha_pll_config mdss_1_disp_cc_pll0_config = { 62e700bfd2STaniya Das .l = 0x3a, 63e700bfd2STaniya Das .alpha = 0x9800, 64e700bfd2STaniya Das .config_ctl_val = 0x20485699, 65e700bfd2STaniya Das .config_ctl_hi_val = 0x00182261, 66e700bfd2STaniya Das .config_ctl_hi1_val = 0x32aa299c, 67e700bfd2STaniya Das .user_ctl_val = 0x00000000, 68e700bfd2STaniya Das .user_ctl_hi_val = 0x00400805, 69e700bfd2STaniya Das }; 70e700bfd2STaniya Das 71e700bfd2STaniya Das static struct clk_alpha_pll mdss_1_disp_cc_pll0 = { 72e700bfd2STaniya Das .offset = 0x0, 73e700bfd2STaniya Das .vco_table = lucid_evo_vco, 74e700bfd2STaniya Das .num_vco = ARRAY_SIZE(lucid_evo_vco), 75e700bfd2STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 76e700bfd2STaniya Das .clkr = { 77e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 78e700bfd2STaniya Das .name = "mdss_1_disp_cc_pll0", 79e700bfd2STaniya Das .parent_data = &(const struct clk_parent_data) { 80e700bfd2STaniya Das .index = DT_BI_TCXO, 81e700bfd2STaniya Das }, 82e700bfd2STaniya Das .num_parents = 1, 83e700bfd2STaniya Das .ops = &clk_alpha_pll_lucid_evo_ops, 84e700bfd2STaniya Das }, 85e700bfd2STaniya Das }, 86e700bfd2STaniya Das }; 87e700bfd2STaniya Das 88e700bfd2STaniya Das static const struct alpha_pll_config mdss_1_disp_cc_pll1_config = { 89e700bfd2STaniya Das .l = 0x1f, 90e700bfd2STaniya Das .alpha = 0x4000, 91e700bfd2STaniya Das .config_ctl_val = 0x20485699, 92e700bfd2STaniya Das .config_ctl_hi_val = 0x00182261, 93e700bfd2STaniya Das .config_ctl_hi1_val = 0x32aa299c, 94e700bfd2STaniya Das .user_ctl_val = 0x00000000, 95e700bfd2STaniya Das .user_ctl_hi_val = 0x00400805, 96e700bfd2STaniya Das }; 97e700bfd2STaniya Das 98e700bfd2STaniya Das static struct clk_alpha_pll mdss_1_disp_cc_pll1 = { 99e700bfd2STaniya Das .offset = 0x1000, 100e700bfd2STaniya Das .vco_table = lucid_evo_vco, 101e700bfd2STaniya Das .num_vco = ARRAY_SIZE(lucid_evo_vco), 102e700bfd2STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 103e700bfd2STaniya Das .clkr = { 104e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 105e700bfd2STaniya Das .name = "mdss_1_disp_cc_pll1", 106e700bfd2STaniya Das .parent_data = &(const struct clk_parent_data) { 107e700bfd2STaniya Das .index = DT_BI_TCXO, 108e700bfd2STaniya Das }, 109e700bfd2STaniya Das .num_parents = 1, 110e700bfd2STaniya Das .ops = &clk_alpha_pll_lucid_evo_ops, 111e700bfd2STaniya Das }, 112e700bfd2STaniya Das }, 113e700bfd2STaniya Das }; 114e700bfd2STaniya Das 115e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_0[] = { 116e700bfd2STaniya Das { P_BI_TCXO, 0 }, 117e700bfd2STaniya Das { P_DP0_PHY_PLL_LINK_CLK, 1 }, 118e700bfd2STaniya Das { P_DP0_PHY_PLL_VCO_DIV_CLK, 2 }, 119e700bfd2STaniya Das { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 120e700bfd2STaniya Das }; 121e700bfd2STaniya Das 122e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_0[] = { 123e700bfd2STaniya Das { .index = DT_BI_TCXO }, 124e700bfd2STaniya Das { .index = DT_DP0_PHY_PLL_LINK_CLK }, 125e700bfd2STaniya Das { .index = DT_DP0_PHY_PLL_VCO_DIV_CLK }, 126e700bfd2STaniya Das { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 127e700bfd2STaniya Das }; 128e700bfd2STaniya Das 129e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_1[] = { 130e700bfd2STaniya Das { P_BI_TCXO, 0 }, 131e700bfd2STaniya Das { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 132e700bfd2STaniya Das { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 133e700bfd2STaniya Das { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 134e700bfd2STaniya Das { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 135e700bfd2STaniya Das }; 136e700bfd2STaniya Das 137e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_1[] = { 138e700bfd2STaniya Das { .index = DT_BI_TCXO }, 139e700bfd2STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 140e700bfd2STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 141e700bfd2STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 142e700bfd2STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 143e700bfd2STaniya Das }; 144e700bfd2STaniya Das 145e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_2[] = { 146e700bfd2STaniya Das { P_BI_TCXO, 0 }, 147e700bfd2STaniya Das }; 148e700bfd2STaniya Das 149e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_2[] = { 150e700bfd2STaniya Das { .index = DT_BI_TCXO }, 151e700bfd2STaniya Das }; 152e700bfd2STaniya Das 153e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_2_ao[] = { 154e700bfd2STaniya Das { .index = DT_BI_TCXO_AO }, 155e700bfd2STaniya Das }; 156e700bfd2STaniya Das 157e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_3[] = { 158e700bfd2STaniya Das { P_BI_TCXO, 0 }, 159e700bfd2STaniya Das { P_DP0_PHY_PLL_LINK_CLK, 1 }, 160e700bfd2STaniya Das { P_DP1_PHY_PLL_LINK_CLK, 2 }, 161e700bfd2STaniya Das }; 162e700bfd2STaniya Das 163e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_3[] = { 164e700bfd2STaniya Das { .index = DT_BI_TCXO }, 165e700bfd2STaniya Das { .index = DT_DP0_PHY_PLL_LINK_CLK }, 166e700bfd2STaniya Das { .index = DT_DP1_PHY_PLL_LINK_CLK }, 167e700bfd2STaniya Das }; 168e700bfd2STaniya Das 169e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_4[] = { 170e700bfd2STaniya Das { P_BI_TCXO, 0 }, 171e700bfd2STaniya Das { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 172e700bfd2STaniya Das { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 173e700bfd2STaniya Das }; 174e700bfd2STaniya Das 175e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_4[] = { 176e700bfd2STaniya Das { .index = DT_BI_TCXO }, 177e700bfd2STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 178e700bfd2STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 179e700bfd2STaniya Das }; 180e700bfd2STaniya Das 181e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_5[] = { 182e700bfd2STaniya Das { P_BI_TCXO, 0 }, 183e700bfd2STaniya Das { P_MDSS_1_DISP_CC_PLL1_OUT_MAIN, 4 }, 184e700bfd2STaniya Das { P_MDSS_1_DISP_CC_PLL1_OUT_EVEN, 6 }, 185e700bfd2STaniya Das }; 186e700bfd2STaniya Das 187e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_5[] = { 188e700bfd2STaniya Das { .index = DT_BI_TCXO }, 189e700bfd2STaniya Das { .hw = &mdss_1_disp_cc_pll1.clkr.hw }, 190e700bfd2STaniya Das { .hw = &mdss_1_disp_cc_pll1.clkr.hw }, 191e700bfd2STaniya Das }; 192e700bfd2STaniya Das 193e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_6[] = { 194e700bfd2STaniya Das { P_BI_TCXO, 0 }, 195e700bfd2STaniya Das { P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 1 }, 196e700bfd2STaniya Das { P_MDSS_1_DISP_CC_PLL1_OUT_MAIN, 4 }, 197e700bfd2STaniya Das { P_MDSS_1_DISP_CC_PLL1_OUT_EVEN, 6 }, 198e700bfd2STaniya Das }; 199e700bfd2STaniya Das 200e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_6[] = { 201e700bfd2STaniya Das { .index = DT_BI_TCXO }, 202e700bfd2STaniya Das { .hw = &mdss_1_disp_cc_pll0.clkr.hw }, 203e700bfd2STaniya Das { .hw = &mdss_1_disp_cc_pll1.clkr.hw }, 204e700bfd2STaniya Das { .hw = &mdss_1_disp_cc_pll1.clkr.hw }, 205e700bfd2STaniya Das }; 206e700bfd2STaniya Das 207e700bfd2STaniya Das static const struct parent_map disp_cc_1_parent_map_7[] = { 208e700bfd2STaniya Das { P_SLEEP_CLK, 0 }, 209e700bfd2STaniya Das }; 210e700bfd2STaniya Das 211e700bfd2STaniya Das static const struct clk_parent_data disp_cc_1_parent_data_7_ao[] = { 212e700bfd2STaniya Das { .index = DT_SLEEP_CLK }, 213e700bfd2STaniya Das }; 214e700bfd2STaniya Das 215e700bfd2STaniya Das static const struct freq_tbl ftbl_mdss_1_disp_cc_mdss_ahb_clk_src[] = { 216e700bfd2STaniya Das F(37500000, P_MDSS_1_DISP_CC_PLL1_OUT_MAIN, 16, 0, 0), 217e700bfd2STaniya Das F(75000000, P_MDSS_1_DISP_CC_PLL1_OUT_MAIN, 8, 0, 0), 218e700bfd2STaniya Das { } 219e700bfd2STaniya Das }; 220e700bfd2STaniya Das 221e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_ahb_clk_src = { 222e700bfd2STaniya Das .cmd_rcgr = 0x824c, 223e700bfd2STaniya Das .mnd_width = 0, 224e700bfd2STaniya Das .hid_width = 5, 225e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_5, 226e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_ahb_clk_src, 227e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 228e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_ahb_clk_src", 229e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_5, 230e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_5), 231e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 232e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 233e700bfd2STaniya Das }, 234e700bfd2STaniya Das }; 235e700bfd2STaniya Das 236e700bfd2STaniya Das static const struct freq_tbl ftbl_mdss_1_disp_cc_mdss_byte0_clk_src[] = { 237e700bfd2STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 238e700bfd2STaniya Das { } 239e700bfd2STaniya Das }; 240e700bfd2STaniya Das 241e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_byte0_clk_src = { 242e700bfd2STaniya Das .cmd_rcgr = 0x80ec, 243e700bfd2STaniya Das .mnd_width = 0, 244e700bfd2STaniya Das .hid_width = 5, 245e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_1, 246e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 247e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 248e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte0_clk_src", 249e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_1, 250e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_1), 251e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 252e700bfd2STaniya Das .ops = &clk_byte2_ops, 253e700bfd2STaniya Das }, 254e700bfd2STaniya Das }; 255e700bfd2STaniya Das 256e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_byte1_clk_src = { 257e700bfd2STaniya Das .cmd_rcgr = 0x8108, 258e700bfd2STaniya Das .mnd_width = 0, 259e700bfd2STaniya Das .hid_width = 5, 260e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_1, 261e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 262e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 263e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte1_clk_src", 264e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_1, 265e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_1), 266e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 267e700bfd2STaniya Das .ops = &clk_byte2_ops, 268e700bfd2STaniya Das }, 269e700bfd2STaniya Das }; 270e700bfd2STaniya Das 271e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_aux_clk_src = { 272e700bfd2STaniya Das .cmd_rcgr = 0x81b8, 273e700bfd2STaniya Das .mnd_width = 0, 274e700bfd2STaniya Das .hid_width = 5, 275e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_2, 276e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 277e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 278e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_aux_clk_src", 279e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_2, 280e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_2), 281e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 282e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 283e700bfd2STaniya Das }, 284e700bfd2STaniya Das }; 285e700bfd2STaniya Das 286e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_crypto_clk_src = { 287e700bfd2STaniya Das .cmd_rcgr = 0x8170, 288e700bfd2STaniya Das .mnd_width = 0, 289e700bfd2STaniya Das .hid_width = 5, 290e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_3, 291e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 292e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 293e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_crypto_clk_src", 294e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_3, 295e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_3), 296e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 297e700bfd2STaniya Das .ops = &clk_byte2_ops, 298e700bfd2STaniya Das }, 299e700bfd2STaniya Das }; 300e700bfd2STaniya Das 301e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_link_clk_src = { 302e700bfd2STaniya Das .cmd_rcgr = 0x8154, 303e700bfd2STaniya Das .mnd_width = 0, 304e700bfd2STaniya Das .hid_width = 5, 305e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_3, 306e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 307e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 308e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_link_clk_src", 309e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_3, 310e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_3), 311e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 312e700bfd2STaniya Das .ops = &clk_byte2_ops, 313e700bfd2STaniya Das }, 314e700bfd2STaniya Das }; 315e700bfd2STaniya Das 316e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_pixel0_clk_src = { 317e700bfd2STaniya Das .cmd_rcgr = 0x8188, 318e700bfd2STaniya Das .mnd_width = 16, 319e700bfd2STaniya Das .hid_width = 5, 320e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 321e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 322e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 323e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel0_clk_src", 324e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 325e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 326e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 327e700bfd2STaniya Das .ops = &clk_dp_ops, 328e700bfd2STaniya Das }, 329e700bfd2STaniya Das }; 330e700bfd2STaniya Das 331e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_pixel1_clk_src = { 332e700bfd2STaniya Das .cmd_rcgr = 0x81a0, 333e700bfd2STaniya Das .mnd_width = 16, 334e700bfd2STaniya Das .hid_width = 5, 335e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 336e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 337e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 338e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel1_clk_src", 339e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 340e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 341e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 342e700bfd2STaniya Das .ops = &clk_dp_ops, 343e700bfd2STaniya Das }, 344e700bfd2STaniya Das }; 345e700bfd2STaniya Das 346e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_pixel2_clk_src = { 347e700bfd2STaniya Das .cmd_rcgr = 0x826c, 348e700bfd2STaniya Das .mnd_width = 16, 349e700bfd2STaniya Das .hid_width = 5, 350e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 351e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 352e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 353e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel2_clk_src", 354e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 355e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 356e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 357e700bfd2STaniya Das .ops = &clk_dp_ops, 358e700bfd2STaniya Das }, 359e700bfd2STaniya Das }; 360e700bfd2STaniya Das 361e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx0_pixel3_clk_src = { 362e700bfd2STaniya Das .cmd_rcgr = 0x8284, 363e700bfd2STaniya Das .mnd_width = 16, 364e700bfd2STaniya Das .hid_width = 5, 365e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 366e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 367e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 368e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel3_clk_src", 369e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 370e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 371e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 372e700bfd2STaniya Das .ops = &clk_dp_ops, 373e700bfd2STaniya Das }, 374e700bfd2STaniya Das }; 375e700bfd2STaniya Das 376e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx1_aux_clk_src = { 377e700bfd2STaniya Das .cmd_rcgr = 0x8234, 378e700bfd2STaniya Das .mnd_width = 0, 379e700bfd2STaniya Das .hid_width = 5, 380e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_2, 381e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 382e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 383e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_aux_clk_src", 384e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_2, 385e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_2), 386e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 387e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 388e700bfd2STaniya Das }, 389e700bfd2STaniya Das }; 390e700bfd2STaniya Das 391e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx1_crypto_clk_src = { 392e700bfd2STaniya Das .cmd_rcgr = 0x821c, 393e700bfd2STaniya Das .mnd_width = 0, 394e700bfd2STaniya Das .hid_width = 5, 395e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_3, 396e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 397e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 398e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_crypto_clk_src", 399e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_3, 400e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_3), 401e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 402e700bfd2STaniya Das .ops = &clk_byte2_ops, 403e700bfd2STaniya Das }, 404e700bfd2STaniya Das }; 405e700bfd2STaniya Das 406e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx1_link_clk_src = { 407e700bfd2STaniya Das .cmd_rcgr = 0x8200, 408e700bfd2STaniya Das .mnd_width = 0, 409e700bfd2STaniya Das .hid_width = 5, 410e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_3, 411e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 412e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 413e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_link_clk_src", 414e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_3, 415e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_3), 416e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 417e700bfd2STaniya Das .ops = &clk_byte2_ops, 418e700bfd2STaniya Das }, 419e700bfd2STaniya Das }; 420e700bfd2STaniya Das 421e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx1_pixel0_clk_src = { 422e700bfd2STaniya Das .cmd_rcgr = 0x81d0, 423e700bfd2STaniya Das .mnd_width = 16, 424e700bfd2STaniya Das .hid_width = 5, 425e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 426e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 427e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 428e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_pixel0_clk_src", 429e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 430e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 431e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 432e700bfd2STaniya Das .ops = &clk_dp_ops, 433e700bfd2STaniya Das }, 434e700bfd2STaniya Das }; 435e700bfd2STaniya Das 436e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_dptx1_pixel1_clk_src = { 437e700bfd2STaniya Das .cmd_rcgr = 0x81e8, 438e700bfd2STaniya Das .mnd_width = 16, 439e700bfd2STaniya Das .hid_width = 5, 440e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_0, 441e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 442e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 443e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_pixel1_clk_src", 444e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_0, 445e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_0), 446e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 447e700bfd2STaniya Das .ops = &clk_dp_ops, 448e700bfd2STaniya Das }, 449e700bfd2STaniya Das }; 450e700bfd2STaniya Das 451e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_esc0_clk_src = { 452e700bfd2STaniya Das .cmd_rcgr = 0x8124, 453e700bfd2STaniya Das .mnd_width = 0, 454e700bfd2STaniya Das .hid_width = 5, 455e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_4, 456e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 457e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 458e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_esc0_clk_src", 459e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_4, 460e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_4), 461e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 462e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 463e700bfd2STaniya Das }, 464e700bfd2STaniya Das }; 465e700bfd2STaniya Das 466e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_esc1_clk_src = { 467e700bfd2STaniya Das .cmd_rcgr = 0x813c, 468e700bfd2STaniya Das .mnd_width = 0, 469e700bfd2STaniya Das .hid_width = 5, 470e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_4, 471e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 472e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 473e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_esc1_clk_src", 474e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_4, 475e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_4), 476e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 477e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 478e700bfd2STaniya Das }, 479e700bfd2STaniya Das }; 480e700bfd2STaniya Das 481e700bfd2STaniya Das static const struct freq_tbl ftbl_mdss_1_disp_cc_mdss_mdp_clk_src[] = { 482e700bfd2STaniya Das F(375000000, P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 483e700bfd2STaniya Das F(500000000, P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 484e700bfd2STaniya Das F(575000000, P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 485e700bfd2STaniya Das F(650000000, P_MDSS_1_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 486e700bfd2STaniya Das { } 487e700bfd2STaniya Das }; 488e700bfd2STaniya Das 489e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_mdp_clk_src = { 490e700bfd2STaniya Das .cmd_rcgr = 0x80bc, 491e700bfd2STaniya Das .mnd_width = 0, 492e700bfd2STaniya Das .hid_width = 5, 493e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_6, 494e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_mdp_clk_src, 495e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 496e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_mdp_clk_src", 497e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_6, 498e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_6), 499e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 500e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 501e700bfd2STaniya Das }, 502e700bfd2STaniya Das }; 503e700bfd2STaniya Das 504e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_pclk0_clk_src = { 505e700bfd2STaniya Das .cmd_rcgr = 0x808c, 506e700bfd2STaniya Das .mnd_width = 8, 507e700bfd2STaniya Das .hid_width = 5, 508e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_1, 509e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 510e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 511e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_pclk0_clk_src", 512e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_1, 513e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_1), 514e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 515e700bfd2STaniya Das .ops = &clk_pixel_ops, 516e700bfd2STaniya Das }, 517e700bfd2STaniya Das }; 518e700bfd2STaniya Das 519e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_pclk1_clk_src = { 520e700bfd2STaniya Das .cmd_rcgr = 0x80a4, 521e700bfd2STaniya Das .mnd_width = 8, 522e700bfd2STaniya Das .hid_width = 5, 523e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_1, 524e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 525e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 526e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_pclk1_clk_src", 527e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_1, 528e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_1), 529e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 530e700bfd2STaniya Das .ops = &clk_pixel_ops, 531e700bfd2STaniya Das }, 532e700bfd2STaniya Das }; 533e700bfd2STaniya Das 534e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_mdss_vsync_clk_src = { 535e700bfd2STaniya Das .cmd_rcgr = 0x80d4, 536e700bfd2STaniya Das .mnd_width = 0, 537e700bfd2STaniya Das .hid_width = 5, 538e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_2, 539e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 540e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 541e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_vsync_clk_src", 542e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_2, 543e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_2), 544e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 545e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 546e700bfd2STaniya Das }, 547e700bfd2STaniya Das }; 548e700bfd2STaniya Das 549e700bfd2STaniya Das static const struct freq_tbl ftbl_mdss_1_disp_cc_sleep_clk_src[] = { 550e700bfd2STaniya Das F(32000, P_SLEEP_CLK, 1, 0, 0), 551e700bfd2STaniya Das { } 552e700bfd2STaniya Das }; 553e700bfd2STaniya Das 554e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_sleep_clk_src = { 555e700bfd2STaniya Das .cmd_rcgr = 0xc058, 556e700bfd2STaniya Das .mnd_width = 0, 557e700bfd2STaniya Das .hid_width = 5, 558e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_7, 559e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_sleep_clk_src, 560e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 561e700bfd2STaniya Das .name = "mdss_1_disp_cc_sleep_clk_src", 562e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_7_ao, 563e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_7_ao), 564e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 565e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 566e700bfd2STaniya Das }, 567e700bfd2STaniya Das }; 568e700bfd2STaniya Das 569e700bfd2STaniya Das static struct clk_rcg2 mdss_1_disp_cc_xo_clk_src = { 570e700bfd2STaniya Das .cmd_rcgr = 0xc03c, 571e700bfd2STaniya Das .mnd_width = 0, 572e700bfd2STaniya Das .hid_width = 5, 573e700bfd2STaniya Das .parent_map = disp_cc_1_parent_map_2, 574e700bfd2STaniya Das .freq_tbl = ftbl_mdss_1_disp_cc_mdss_byte0_clk_src, 575e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 576e700bfd2STaniya Das .name = "mdss_1_disp_cc_xo_clk_src", 577e700bfd2STaniya Das .parent_data = disp_cc_1_parent_data_2_ao, 578e700bfd2STaniya Das .num_parents = ARRAY_SIZE(disp_cc_1_parent_data_2_ao), 579e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 580e700bfd2STaniya Das .ops = &clk_rcg2_shared_ops, 581e700bfd2STaniya Das }, 582e700bfd2STaniya Das }; 583e700bfd2STaniya Das 584e700bfd2STaniya Das static struct clk_regmap_div mdss_1_disp_cc_mdss_byte0_div_clk_src = { 585e700bfd2STaniya Das .reg = 0x8104, 586e700bfd2STaniya Das .shift = 0, 587e700bfd2STaniya Das .width = 4, 588e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 589e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte0_div_clk_src", 590e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 591e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte0_clk_src.clkr.hw, 592e700bfd2STaniya Das }, 593e700bfd2STaniya Das .num_parents = 1, 594e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 595e700bfd2STaniya Das .ops = &clk_regmap_div_ops, 596e700bfd2STaniya Das }, 597e700bfd2STaniya Das }; 598e700bfd2STaniya Das 599e700bfd2STaniya Das static struct clk_regmap_div mdss_1_disp_cc_mdss_byte1_div_clk_src = { 600e700bfd2STaniya Das .reg = 0x8120, 601e700bfd2STaniya Das .shift = 0, 602e700bfd2STaniya Das .width = 4, 603e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 604e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte1_div_clk_src", 605e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 606e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte1_clk_src.clkr.hw, 607e700bfd2STaniya Das }, 608e700bfd2STaniya Das .num_parents = 1, 609e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 610e700bfd2STaniya Das .ops = &clk_regmap_div_ops, 611e700bfd2STaniya Das }, 612e700bfd2STaniya Das }; 613e700bfd2STaniya Das 614e700bfd2STaniya Das static struct clk_regmap_div mdss_1_disp_cc_mdss_dptx0_link_div_clk_src = { 615e700bfd2STaniya Das .reg = 0x816c, 616e700bfd2STaniya Das .shift = 0, 617e700bfd2STaniya Das .width = 4, 618e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 619e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_link_div_clk_src", 620e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 621e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 622e700bfd2STaniya Das }, 623e700bfd2STaniya Das .num_parents = 1, 624e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 625e700bfd2STaniya Das .ops = &clk_regmap_div_ro_ops, 626e700bfd2STaniya Das }, 627e700bfd2STaniya Das }; 628e700bfd2STaniya Das 629e700bfd2STaniya Das static struct clk_regmap_div mdss_1_disp_cc_mdss_dptx1_link_div_clk_src = { 630e700bfd2STaniya Das .reg = 0x8218, 631e700bfd2STaniya Das .shift = 0, 632e700bfd2STaniya Das .width = 4, 633e700bfd2STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 634e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_link_div_clk_src", 635e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 636e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 637e700bfd2STaniya Das }, 638e700bfd2STaniya Das .num_parents = 1, 639e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 640e700bfd2STaniya Das .ops = &clk_regmap_div_ro_ops, 641e700bfd2STaniya Das }, 642e700bfd2STaniya Das }; 643e700bfd2STaniya Das 644e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_ahb1_clk = { 645e700bfd2STaniya Das .halt_reg = 0x8088, 646e700bfd2STaniya Das .halt_check = BRANCH_HALT, 647e700bfd2STaniya Das .clkr = { 648e700bfd2STaniya Das .enable_reg = 0x8088, 649e700bfd2STaniya Das .enable_mask = BIT(0), 650e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 651e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_ahb1_clk", 652e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 653e700bfd2STaniya Das &mdss_1_disp_cc_mdss_ahb_clk_src.clkr.hw, 654e700bfd2STaniya Das }, 655e700bfd2STaniya Das .num_parents = 1, 656e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 657e700bfd2STaniya Das .ops = &clk_branch2_ops, 658e700bfd2STaniya Das }, 659e700bfd2STaniya Das }, 660e700bfd2STaniya Das }; 661e700bfd2STaniya Das 662e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_ahb_clk = { 663e700bfd2STaniya Das .halt_reg = 0x8084, 664e700bfd2STaniya Das .halt_check = BRANCH_HALT, 665e700bfd2STaniya Das .clkr = { 666e700bfd2STaniya Das .enable_reg = 0x8084, 667e700bfd2STaniya Das .enable_mask = BIT(0), 668e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 669e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_ahb_clk", 670e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 671e700bfd2STaniya Das &mdss_1_disp_cc_mdss_ahb_clk_src.clkr.hw, 672e700bfd2STaniya Das }, 673e700bfd2STaniya Das .num_parents = 1, 674e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 675e700bfd2STaniya Das .ops = &clk_branch2_ops, 676e700bfd2STaniya Das }, 677e700bfd2STaniya Das }, 678e700bfd2STaniya Das }; 679e700bfd2STaniya Das 680e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_byte0_clk = { 681e700bfd2STaniya Das .halt_reg = 0x8034, 682e700bfd2STaniya Das .halt_check = BRANCH_HALT, 683e700bfd2STaniya Das .clkr = { 684e700bfd2STaniya Das .enable_reg = 0x8034, 685e700bfd2STaniya Das .enable_mask = BIT(0), 686e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 687e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte0_clk", 688e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 689e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte0_clk_src.clkr.hw, 690e700bfd2STaniya Das }, 691e700bfd2STaniya Das .num_parents = 1, 692e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 693e700bfd2STaniya Das .ops = &clk_branch2_ops, 694e700bfd2STaniya Das }, 695e700bfd2STaniya Das }, 696e700bfd2STaniya Das }; 697e700bfd2STaniya Das 698e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_byte0_intf_clk = { 699e700bfd2STaniya Das .halt_reg = 0x8038, 700e700bfd2STaniya Das .halt_check = BRANCH_HALT, 701e700bfd2STaniya Das .clkr = { 702e700bfd2STaniya Das .enable_reg = 0x8038, 703e700bfd2STaniya Das .enable_mask = BIT(0), 704e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 705e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte0_intf_clk", 706e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 707e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte0_div_clk_src.clkr.hw, 708e700bfd2STaniya Das }, 709e700bfd2STaniya Das .num_parents = 1, 710e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 711e700bfd2STaniya Das .ops = &clk_branch2_ops, 712e700bfd2STaniya Das }, 713e700bfd2STaniya Das }, 714e700bfd2STaniya Das }; 715e700bfd2STaniya Das 716e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_byte1_clk = { 717e700bfd2STaniya Das .halt_reg = 0x803c, 718e700bfd2STaniya Das .halt_check = BRANCH_HALT, 719e700bfd2STaniya Das .clkr = { 720e700bfd2STaniya Das .enable_reg = 0x803c, 721e700bfd2STaniya Das .enable_mask = BIT(0), 722e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 723e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte1_clk", 724e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 725e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte1_clk_src.clkr.hw, 726e700bfd2STaniya Das }, 727e700bfd2STaniya Das .num_parents = 1, 728e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 729e700bfd2STaniya Das .ops = &clk_branch2_ops, 730e700bfd2STaniya Das }, 731e700bfd2STaniya Das }, 732e700bfd2STaniya Das }; 733e700bfd2STaniya Das 734e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_byte1_intf_clk = { 735e700bfd2STaniya Das .halt_reg = 0x8040, 736e700bfd2STaniya Das .halt_check = BRANCH_HALT, 737e700bfd2STaniya Das .clkr = { 738e700bfd2STaniya Das .enable_reg = 0x8040, 739e700bfd2STaniya Das .enable_mask = BIT(0), 740e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 741e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_byte1_intf_clk", 742e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 743e700bfd2STaniya Das &mdss_1_disp_cc_mdss_byte1_div_clk_src.clkr.hw, 744e700bfd2STaniya Das }, 745e700bfd2STaniya Das .num_parents = 1, 746e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 747e700bfd2STaniya Das .ops = &clk_branch2_ops, 748e700bfd2STaniya Das }, 749e700bfd2STaniya Das }, 750e700bfd2STaniya Das }; 751e700bfd2STaniya Das 752e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_aux_clk = { 753e700bfd2STaniya Das .halt_reg = 0x805c, 754e700bfd2STaniya Das .halt_check = BRANCH_HALT, 755e700bfd2STaniya Das .clkr = { 756e700bfd2STaniya Das .enable_reg = 0x805c, 757e700bfd2STaniya Das .enable_mask = BIT(0), 758e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 759e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_aux_clk", 760e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 761e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_aux_clk_src.clkr.hw, 762e700bfd2STaniya Das }, 763e700bfd2STaniya Das .num_parents = 1, 764e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 765e700bfd2STaniya Das .ops = &clk_branch2_ops, 766e700bfd2STaniya Das }, 767e700bfd2STaniya Das }, 768e700bfd2STaniya Das }; 769e700bfd2STaniya Das 770e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_crypto_clk = { 771e700bfd2STaniya Das .halt_reg = 0x8058, 772e700bfd2STaniya Das .halt_check = BRANCH_HALT, 773e700bfd2STaniya Das .clkr = { 774e700bfd2STaniya Das .enable_reg = 0x8058, 775e700bfd2STaniya Das .enable_mask = BIT(0), 776e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 777e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_crypto_clk", 778e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 779e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_crypto_clk_src.clkr.hw, 780e700bfd2STaniya Das }, 781e700bfd2STaniya Das .num_parents = 1, 782e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 783e700bfd2STaniya Das .ops = &clk_branch2_ops, 784e700bfd2STaniya Das }, 785e700bfd2STaniya Das }, 786e700bfd2STaniya Das }; 787e700bfd2STaniya Das 788e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_link_clk = { 789e700bfd2STaniya Das .halt_reg = 0x804c, 790e700bfd2STaniya Das .halt_check = BRANCH_HALT, 791e700bfd2STaniya Das .clkr = { 792e700bfd2STaniya Das .enable_reg = 0x804c, 793e700bfd2STaniya Das .enable_mask = BIT(0), 794e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 795e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_link_clk", 796e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 797e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 798e700bfd2STaniya Das }, 799e700bfd2STaniya Das .num_parents = 1, 800e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 801e700bfd2STaniya Das .ops = &clk_branch2_ops, 802e700bfd2STaniya Das }, 803e700bfd2STaniya Das }, 804e700bfd2STaniya Das }; 805e700bfd2STaniya Das 806e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_link_intf_clk = { 807e700bfd2STaniya Das .halt_reg = 0x8050, 808e700bfd2STaniya Das .halt_check = BRANCH_HALT, 809e700bfd2STaniya Das .clkr = { 810e700bfd2STaniya Das .enable_reg = 0x8050, 811e700bfd2STaniya Das .enable_mask = BIT(0), 812e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 813e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_link_intf_clk", 814e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 815e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 816e700bfd2STaniya Das }, 817e700bfd2STaniya Das .num_parents = 1, 818e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 819e700bfd2STaniya Das .ops = &clk_branch2_ops, 820e700bfd2STaniya Das }, 821e700bfd2STaniya Das }, 822e700bfd2STaniya Das }; 823e700bfd2STaniya Das 824e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_pixel0_clk = { 825e700bfd2STaniya Das .halt_reg = 0x8060, 826e700bfd2STaniya Das .halt_check = BRANCH_HALT, 827e700bfd2STaniya Das .clkr = { 828e700bfd2STaniya Das .enable_reg = 0x8060, 829e700bfd2STaniya Das .enable_mask = BIT(0), 830e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 831e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel0_clk", 832e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 833e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_pixel0_clk_src.clkr.hw, 834e700bfd2STaniya Das }, 835e700bfd2STaniya Das .num_parents = 1, 836e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 837e700bfd2STaniya Das .ops = &clk_branch2_ops, 838e700bfd2STaniya Das }, 839e700bfd2STaniya Das }, 840e700bfd2STaniya Das }; 841e700bfd2STaniya Das 842e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_pixel1_clk = { 843e700bfd2STaniya Das .halt_reg = 0x8064, 844e700bfd2STaniya Das .halt_check = BRANCH_HALT, 845e700bfd2STaniya Das .clkr = { 846e700bfd2STaniya Das .enable_reg = 0x8064, 847e700bfd2STaniya Das .enable_mask = BIT(0), 848e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 849e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel1_clk", 850e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 851e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_pixel1_clk_src.clkr.hw, 852e700bfd2STaniya Das }, 853e700bfd2STaniya Das .num_parents = 1, 854e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 855e700bfd2STaniya Das .ops = &clk_branch2_ops, 856e700bfd2STaniya Das }, 857e700bfd2STaniya Das }, 858e700bfd2STaniya Das }; 859e700bfd2STaniya Das 860e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_pixel2_clk = { 861e700bfd2STaniya Das .halt_reg = 0x8264, 862e700bfd2STaniya Das .halt_check = BRANCH_HALT, 863e700bfd2STaniya Das .clkr = { 864e700bfd2STaniya Das .enable_reg = 0x8264, 865e700bfd2STaniya Das .enable_mask = BIT(0), 866e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 867e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel2_clk", 868e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 869e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_pixel2_clk_src.clkr.hw, 870e700bfd2STaniya Das }, 871e700bfd2STaniya Das .num_parents = 1, 872e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 873e700bfd2STaniya Das .ops = &clk_branch2_ops, 874e700bfd2STaniya Das }, 875e700bfd2STaniya Das }, 876e700bfd2STaniya Das }; 877e700bfd2STaniya Das 878e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_pixel3_clk = { 879e700bfd2STaniya Das .halt_reg = 0x8268, 880e700bfd2STaniya Das .halt_check = BRANCH_HALT, 881e700bfd2STaniya Das .clkr = { 882e700bfd2STaniya Das .enable_reg = 0x8268, 883e700bfd2STaniya Das .enable_mask = BIT(0), 884e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 885e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_pixel3_clk", 886e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 887e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_pixel3_clk_src.clkr.hw, 888e700bfd2STaniya Das }, 889e700bfd2STaniya Das .num_parents = 1, 890e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 891e700bfd2STaniya Das .ops = &clk_branch2_ops, 892e700bfd2STaniya Das }, 893e700bfd2STaniya Das }, 894e700bfd2STaniya Das }; 895e700bfd2STaniya Das 896e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx0_usb_router_link_intf_clk = { 897e700bfd2STaniya Das .halt_reg = 0x8054, 898e700bfd2STaniya Das .halt_check = BRANCH_HALT, 899e700bfd2STaniya Das .clkr = { 900e700bfd2STaniya Das .enable_reg = 0x8054, 901e700bfd2STaniya Das .enable_mask = BIT(0), 902e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 903e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx0_usb_router_link_intf_clk", 904e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 905e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 906e700bfd2STaniya Das }, 907e700bfd2STaniya Das .num_parents = 1, 908e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 909e700bfd2STaniya Das .ops = &clk_branch2_ops, 910e700bfd2STaniya Das }, 911e700bfd2STaniya Das }, 912e700bfd2STaniya Das }; 913e700bfd2STaniya Das 914e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_aux_clk = { 915e700bfd2STaniya Das .halt_reg = 0x8080, 916e700bfd2STaniya Das .halt_check = BRANCH_HALT, 917e700bfd2STaniya Das .clkr = { 918e700bfd2STaniya Das .enable_reg = 0x8080, 919e700bfd2STaniya Das .enable_mask = BIT(0), 920e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 921e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_aux_clk", 922e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 923e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_aux_clk_src.clkr.hw, 924e700bfd2STaniya Das }, 925e700bfd2STaniya Das .num_parents = 1, 926e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 927e700bfd2STaniya Das .ops = &clk_branch2_ops, 928e700bfd2STaniya Das }, 929e700bfd2STaniya Das }, 930e700bfd2STaniya Das }; 931e700bfd2STaniya Das 932e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_crypto_clk = { 933e700bfd2STaniya Das .halt_reg = 0x807c, 934e700bfd2STaniya Das .halt_check = BRANCH_HALT, 935e700bfd2STaniya Das .clkr = { 936e700bfd2STaniya Das .enable_reg = 0x807c, 937e700bfd2STaniya Das .enable_mask = BIT(0), 938e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 939e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_crypto_clk", 940e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 941e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_crypto_clk_src.clkr.hw, 942e700bfd2STaniya Das }, 943e700bfd2STaniya Das .num_parents = 1, 944e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 945e700bfd2STaniya Das .ops = &clk_branch2_ops, 946e700bfd2STaniya Das }, 947e700bfd2STaniya Das }, 948e700bfd2STaniya Das }; 949e700bfd2STaniya Das 950e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_link_clk = { 951e700bfd2STaniya Das .halt_reg = 0x8070, 952e700bfd2STaniya Das .halt_check = BRANCH_HALT, 953e700bfd2STaniya Das .clkr = { 954e700bfd2STaniya Das .enable_reg = 0x8070, 955e700bfd2STaniya Das .enable_mask = BIT(0), 956e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 957e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_link_clk", 958e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 959e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 960e700bfd2STaniya Das }, 961e700bfd2STaniya Das .num_parents = 1, 962e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 963e700bfd2STaniya Das .ops = &clk_branch2_ops, 964e700bfd2STaniya Das }, 965e700bfd2STaniya Das }, 966e700bfd2STaniya Das }; 967e700bfd2STaniya Das 968e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_link_intf_clk = { 969e700bfd2STaniya Das .halt_reg = 0x8074, 970e700bfd2STaniya Das .halt_check = BRANCH_HALT, 971e700bfd2STaniya Das .clkr = { 972e700bfd2STaniya Das .enable_reg = 0x8074, 973e700bfd2STaniya Das .enable_mask = BIT(0), 974e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 975e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_link_intf_clk", 976e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 977e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 978e700bfd2STaniya Das }, 979e700bfd2STaniya Das .num_parents = 1, 980e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 981e700bfd2STaniya Das .ops = &clk_branch2_ops, 982e700bfd2STaniya Das }, 983e700bfd2STaniya Das }, 984e700bfd2STaniya Das }; 985e700bfd2STaniya Das 986e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_pixel0_clk = { 987e700bfd2STaniya Das .halt_reg = 0x8068, 988e700bfd2STaniya Das .halt_check = BRANCH_HALT, 989e700bfd2STaniya Das .clkr = { 990e700bfd2STaniya Das .enable_reg = 0x8068, 991e700bfd2STaniya Das .enable_mask = BIT(0), 992e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 993e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_pixel0_clk", 994e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 995e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_pixel0_clk_src.clkr.hw, 996e700bfd2STaniya Das }, 997e700bfd2STaniya Das .num_parents = 1, 998e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 999e700bfd2STaniya Das .ops = &clk_branch2_ops, 1000e700bfd2STaniya Das }, 1001e700bfd2STaniya Das }, 1002e700bfd2STaniya Das }; 1003e700bfd2STaniya Das 1004e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_pixel1_clk = { 1005e700bfd2STaniya Das .halt_reg = 0x806c, 1006e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1007e700bfd2STaniya Das .clkr = { 1008e700bfd2STaniya Das .enable_reg = 0x806c, 1009e700bfd2STaniya Das .enable_mask = BIT(0), 1010e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1011e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_pixel1_clk", 1012e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1013e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_pixel1_clk_src.clkr.hw, 1014e700bfd2STaniya Das }, 1015e700bfd2STaniya Das .num_parents = 1, 1016e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1017e700bfd2STaniya Das .ops = &clk_branch2_ops, 1018e700bfd2STaniya Das }, 1019e700bfd2STaniya Das }, 1020e700bfd2STaniya Das }; 1021e700bfd2STaniya Das 1022e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_dptx1_usb_router_link_intf_clk = { 1023e700bfd2STaniya Das .halt_reg = 0x8078, 1024e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1025e700bfd2STaniya Das .clkr = { 1026e700bfd2STaniya Das .enable_reg = 0x8078, 1027e700bfd2STaniya Das .enable_mask = BIT(0), 1028e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1029e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_dptx1_usb_router_link_intf_clk", 1030e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1031e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1032e700bfd2STaniya Das }, 1033e700bfd2STaniya Das .num_parents = 1, 1034e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1035e700bfd2STaniya Das .ops = &clk_branch2_ops, 1036e700bfd2STaniya Das }, 1037e700bfd2STaniya Das }, 1038e700bfd2STaniya Das }; 1039e700bfd2STaniya Das 1040e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_esc0_clk = { 1041e700bfd2STaniya Das .halt_reg = 0x8044, 1042e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1043e700bfd2STaniya Das .clkr = { 1044e700bfd2STaniya Das .enable_reg = 0x8044, 1045e700bfd2STaniya Das .enable_mask = BIT(0), 1046e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1047e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_esc0_clk", 1048e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1049e700bfd2STaniya Das &mdss_1_disp_cc_mdss_esc0_clk_src.clkr.hw, 1050e700bfd2STaniya Das }, 1051e700bfd2STaniya Das .num_parents = 1, 1052e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1053e700bfd2STaniya Das .ops = &clk_branch2_ops, 1054e700bfd2STaniya Das }, 1055e700bfd2STaniya Das }, 1056e700bfd2STaniya Das }; 1057e700bfd2STaniya Das 1058e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_esc1_clk = { 1059e700bfd2STaniya Das .halt_reg = 0x8048, 1060e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1061e700bfd2STaniya Das .clkr = { 1062e700bfd2STaniya Das .enable_reg = 0x8048, 1063e700bfd2STaniya Das .enable_mask = BIT(0), 1064e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1065e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_esc1_clk", 1066e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1067e700bfd2STaniya Das &mdss_1_disp_cc_mdss_esc1_clk_src.clkr.hw, 1068e700bfd2STaniya Das }, 1069e700bfd2STaniya Das .num_parents = 1, 1070e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1071e700bfd2STaniya Das .ops = &clk_branch2_ops, 1072e700bfd2STaniya Das }, 1073e700bfd2STaniya Das }, 1074e700bfd2STaniya Das }; 1075e700bfd2STaniya Das 1076e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_mdp1_clk = { 1077e700bfd2STaniya Das .halt_reg = 0x8014, 1078e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1079e700bfd2STaniya Das .clkr = { 1080e700bfd2STaniya Das .enable_reg = 0x8014, 1081e700bfd2STaniya Das .enable_mask = BIT(0), 1082e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1083e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_mdp1_clk", 1084e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1085e700bfd2STaniya Das &mdss_1_disp_cc_mdss_mdp_clk_src.clkr.hw, 1086e700bfd2STaniya Das }, 1087e700bfd2STaniya Das .num_parents = 1, 1088e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1089e700bfd2STaniya Das .ops = &clk_branch2_ops, 1090e700bfd2STaniya Das }, 1091e700bfd2STaniya Das }, 1092e700bfd2STaniya Das }; 1093e700bfd2STaniya Das 1094e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_mdp_clk = { 1095e700bfd2STaniya Das .halt_reg = 0x800c, 1096e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1097e700bfd2STaniya Das .clkr = { 1098e700bfd2STaniya Das .enable_reg = 0x800c, 1099e700bfd2STaniya Das .enable_mask = BIT(0), 1100e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1101e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_mdp_clk", 1102e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1103e700bfd2STaniya Das &mdss_1_disp_cc_mdss_mdp_clk_src.clkr.hw, 1104e700bfd2STaniya Das }, 1105e700bfd2STaniya Das .num_parents = 1, 1106e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1107e700bfd2STaniya Das .ops = &clk_branch2_ops, 1108e700bfd2STaniya Das }, 1109e700bfd2STaniya Das }, 1110e700bfd2STaniya Das }; 1111e700bfd2STaniya Das 1112e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_mdp_lut1_clk = { 1113e700bfd2STaniya Das .halt_reg = 0x8024, 1114e700bfd2STaniya Das .halt_check = BRANCH_HALT_VOTED, 1115e700bfd2STaniya Das .clkr = { 1116e700bfd2STaniya Das .enable_reg = 0x8024, 1117e700bfd2STaniya Das .enable_mask = BIT(0), 1118e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1119e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_mdp_lut1_clk", 1120e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1121e700bfd2STaniya Das &mdss_1_disp_cc_mdss_mdp_clk_src.clkr.hw, 1122e700bfd2STaniya Das }, 1123e700bfd2STaniya Das .num_parents = 1, 1124e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1125e700bfd2STaniya Das .ops = &clk_branch2_ops, 1126e700bfd2STaniya Das }, 1127e700bfd2STaniya Das }, 1128e700bfd2STaniya Das }; 1129e700bfd2STaniya Das 1130e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_mdp_lut_clk = { 1131e700bfd2STaniya Das .halt_reg = 0x801c, 1132e700bfd2STaniya Das .halt_check = BRANCH_HALT_VOTED, 1133e700bfd2STaniya Das .clkr = { 1134e700bfd2STaniya Das .enable_reg = 0x801c, 1135e700bfd2STaniya Das .enable_mask = BIT(0), 1136e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1137e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_mdp_lut_clk", 1138e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1139e700bfd2STaniya Das &mdss_1_disp_cc_mdss_mdp_clk_src.clkr.hw, 1140e700bfd2STaniya Das }, 1141e700bfd2STaniya Das .num_parents = 1, 1142e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1143e700bfd2STaniya Das .ops = &clk_branch2_ops, 1144e700bfd2STaniya Das }, 1145e700bfd2STaniya Das }, 1146e700bfd2STaniya Das }; 1147e700bfd2STaniya Das 1148e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_non_gdsc_ahb_clk = { 1149e700bfd2STaniya Das .halt_reg = 0xa004, 1150e700bfd2STaniya Das .halt_check = BRANCH_HALT_VOTED, 1151e700bfd2STaniya Das .clkr = { 1152e700bfd2STaniya Das .enable_reg = 0xa004, 1153e700bfd2STaniya Das .enable_mask = BIT(0), 1154e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1155e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_non_gdsc_ahb_clk", 1156e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1157e700bfd2STaniya Das &mdss_1_disp_cc_mdss_ahb_clk_src.clkr.hw, 1158e700bfd2STaniya Das }, 1159e700bfd2STaniya Das .num_parents = 1, 1160e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1161e700bfd2STaniya Das .ops = &clk_branch2_ops, 1162e700bfd2STaniya Das }, 1163e700bfd2STaniya Das }, 1164e700bfd2STaniya Das }; 1165e700bfd2STaniya Das 1166e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_pclk0_clk = { 1167e700bfd2STaniya Das .halt_reg = 0x8004, 1168e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1169e700bfd2STaniya Das .clkr = { 1170e700bfd2STaniya Das .enable_reg = 0x8004, 1171e700bfd2STaniya Das .enable_mask = BIT(0), 1172e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1173e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_pclk0_clk", 1174e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1175e700bfd2STaniya Das &mdss_1_disp_cc_mdss_pclk0_clk_src.clkr.hw, 1176e700bfd2STaniya Das }, 1177e700bfd2STaniya Das .num_parents = 1, 1178e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1179e700bfd2STaniya Das .ops = &clk_branch2_ops, 1180e700bfd2STaniya Das }, 1181e700bfd2STaniya Das }, 1182e700bfd2STaniya Das }; 1183e700bfd2STaniya Das 1184e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_pclk1_clk = { 1185e700bfd2STaniya Das .halt_reg = 0x8008, 1186e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1187e700bfd2STaniya Das .clkr = { 1188e700bfd2STaniya Das .enable_reg = 0x8008, 1189e700bfd2STaniya Das .enable_mask = BIT(0), 1190e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1191e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_pclk1_clk", 1192e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1193e700bfd2STaniya Das &mdss_1_disp_cc_mdss_pclk1_clk_src.clkr.hw, 1194e700bfd2STaniya Das }, 1195e700bfd2STaniya Das .num_parents = 1, 1196e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1197e700bfd2STaniya Das .ops = &clk_branch2_ops, 1198e700bfd2STaniya Das }, 1199e700bfd2STaniya Das }, 1200e700bfd2STaniya Das }; 1201e700bfd2STaniya Das 1202e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_pll_lock_monitor_clk = { 1203e700bfd2STaniya Das .halt_reg = 0xe000, 1204e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1205e700bfd2STaniya Das .clkr = { 1206e700bfd2STaniya Das .enable_reg = 0xe000, 1207e700bfd2STaniya Das .enable_mask = BIT(0), 1208e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1209e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_pll_lock_monitor_clk", 1210e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1211e700bfd2STaniya Das &mdss_1_disp_cc_xo_clk_src.clkr.hw, 1212e700bfd2STaniya Das }, 1213e700bfd2STaniya Das .num_parents = 1, 1214e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1215e700bfd2STaniya Das .ops = &clk_branch2_ops, 1216e700bfd2STaniya Das }, 1217e700bfd2STaniya Das }, 1218e700bfd2STaniya Das }; 1219e700bfd2STaniya Das 1220e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_rscc_ahb_clk = { 1221e700bfd2STaniya Das .halt_reg = 0xa00c, 1222e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1223e700bfd2STaniya Das .clkr = { 1224e700bfd2STaniya Das .enable_reg = 0xa00c, 1225e700bfd2STaniya Das .enable_mask = BIT(0), 1226e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1227e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_rscc_ahb_clk", 1228e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1229e700bfd2STaniya Das &mdss_1_disp_cc_mdss_ahb_clk_src.clkr.hw, 1230e700bfd2STaniya Das }, 1231e700bfd2STaniya Das .num_parents = 1, 1232e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1233e700bfd2STaniya Das .ops = &clk_branch2_ops, 1234e700bfd2STaniya Das }, 1235e700bfd2STaniya Das }, 1236e700bfd2STaniya Das }; 1237e700bfd2STaniya Das 1238e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_rscc_vsync_clk = { 1239e700bfd2STaniya Das .halt_reg = 0xa008, 1240e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1241e700bfd2STaniya Das .clkr = { 1242e700bfd2STaniya Das .enable_reg = 0xa008, 1243e700bfd2STaniya Das .enable_mask = BIT(0), 1244e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1245e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_rscc_vsync_clk", 1246e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1247e700bfd2STaniya Das &mdss_1_disp_cc_mdss_vsync_clk_src.clkr.hw, 1248e700bfd2STaniya Das }, 1249e700bfd2STaniya Das .num_parents = 1, 1250e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1251e700bfd2STaniya Das .ops = &clk_branch2_ops, 1252e700bfd2STaniya Das }, 1253e700bfd2STaniya Das }, 1254e700bfd2STaniya Das }; 1255e700bfd2STaniya Das 1256e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_vsync1_clk = { 1257e700bfd2STaniya Das .halt_reg = 0x8030, 1258e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1259e700bfd2STaniya Das .clkr = { 1260e700bfd2STaniya Das .enable_reg = 0x8030, 1261e700bfd2STaniya Das .enable_mask = BIT(0), 1262e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1263e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_vsync1_clk", 1264e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1265e700bfd2STaniya Das &mdss_1_disp_cc_mdss_vsync_clk_src.clkr.hw, 1266e700bfd2STaniya Das }, 1267e700bfd2STaniya Das .num_parents = 1, 1268e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1269e700bfd2STaniya Das .ops = &clk_branch2_ops, 1270e700bfd2STaniya Das }, 1271e700bfd2STaniya Das }, 1272e700bfd2STaniya Das }; 1273e700bfd2STaniya Das 1274e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_mdss_vsync_clk = { 1275e700bfd2STaniya Das .halt_reg = 0x802c, 1276e700bfd2STaniya Das .halt_check = BRANCH_HALT, 1277e700bfd2STaniya Das .clkr = { 1278e700bfd2STaniya Das .enable_reg = 0x802c, 1279e700bfd2STaniya Das .enable_mask = BIT(0), 1280e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1281e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_vsync_clk", 1282e700bfd2STaniya Das .parent_hws = (const struct clk_hw*[]) { 1283e700bfd2STaniya Das &mdss_1_disp_cc_mdss_vsync_clk_src.clkr.hw, 1284e700bfd2STaniya Das }, 1285e700bfd2STaniya Das .num_parents = 1, 1286e700bfd2STaniya Das .flags = CLK_SET_RATE_PARENT, 1287e700bfd2STaniya Das .ops = &clk_branch2_ops, 1288e700bfd2STaniya Das }, 1289e700bfd2STaniya Das }, 1290e700bfd2STaniya Das }; 1291e700bfd2STaniya Das 1292e700bfd2STaniya Das static struct clk_branch mdss_1_disp_cc_sm_obs_clk = { 1293e700bfd2STaniya Das .halt_reg = 0x11014, 1294e700bfd2STaniya Das .halt_check = BRANCH_HALT_SKIP, 1295e700bfd2STaniya Das .clkr = { 1296e700bfd2STaniya Das .enable_reg = 0x11014, 1297e700bfd2STaniya Das .enable_mask = BIT(0), 1298e700bfd2STaniya Das .hw.init = &(const struct clk_init_data) { 1299e700bfd2STaniya Das .name = "mdss_1_disp_cc_sm_obs_clk", 1300e700bfd2STaniya Das .ops = &clk_branch2_ops, 1301e700bfd2STaniya Das }, 1302e700bfd2STaniya Das }, 1303e700bfd2STaniya Das }; 1304e700bfd2STaniya Das 1305e700bfd2STaniya Das static struct gdsc mdss_1_disp_cc_mdss_core_gdsc = { 1306e700bfd2STaniya Das .gdscr = 0x9000, 1307e700bfd2STaniya Das .en_rest_wait_val = 0x2, 1308e700bfd2STaniya Das .en_few_wait_val = 0x2, 1309e700bfd2STaniya Das .clk_dis_wait_val = 0xf, 1310e700bfd2STaniya Das .pd = { 1311e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_core_gdsc", 1312e700bfd2STaniya Das }, 1313e700bfd2STaniya Das .pwrsts = PWRSTS_OFF_ON, 1314e700bfd2STaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL, 1315e700bfd2STaniya Das }; 1316e700bfd2STaniya Das 1317e700bfd2STaniya Das static struct gdsc mdss_1_disp_cc_mdss_core_int2_gdsc = { 1318e700bfd2STaniya Das .gdscr = 0xd000, 1319e700bfd2STaniya Das .en_rest_wait_val = 0x2, 1320e700bfd2STaniya Das .en_few_wait_val = 0x2, 1321e700bfd2STaniya Das .clk_dis_wait_val = 0xf, 1322e700bfd2STaniya Das .pd = { 1323e700bfd2STaniya Das .name = "mdss_1_disp_cc_mdss_core_int2_gdsc", 1324e700bfd2STaniya Das }, 1325e700bfd2STaniya Das .pwrsts = PWRSTS_OFF_ON, 1326e700bfd2STaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL, 1327e700bfd2STaniya Das }; 1328e700bfd2STaniya Das 1329e700bfd2STaniya Das static struct clk_regmap *disp_cc_1_sa8775p_clocks[] = { 1330e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_AHB1_CLK] = &mdss_1_disp_cc_mdss_ahb1_clk.clkr, 1331e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_AHB_CLK] = &mdss_1_disp_cc_mdss_ahb_clk.clkr, 1332e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_AHB_CLK_SRC] = &mdss_1_disp_cc_mdss_ahb_clk_src.clkr, 1333e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE0_CLK] = &mdss_1_disp_cc_mdss_byte0_clk.clkr, 1334e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE0_CLK_SRC] = &mdss_1_disp_cc_mdss_byte0_clk_src.clkr, 1335e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &mdss_1_disp_cc_mdss_byte0_div_clk_src.clkr, 1336e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE0_INTF_CLK] = &mdss_1_disp_cc_mdss_byte0_intf_clk.clkr, 1337e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE1_CLK] = &mdss_1_disp_cc_mdss_byte1_clk.clkr, 1338e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE1_CLK_SRC] = &mdss_1_disp_cc_mdss_byte1_clk_src.clkr, 1339e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &mdss_1_disp_cc_mdss_byte1_div_clk_src.clkr, 1340e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_BYTE1_INTF_CLK] = &mdss_1_disp_cc_mdss_byte1_intf_clk.clkr, 1341e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_AUX_CLK] = &mdss_1_disp_cc_mdss_dptx0_aux_clk.clkr, 1342e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_aux_clk_src.clkr, 1343e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_CRYPTO_CLK] = &mdss_1_disp_cc_mdss_dptx0_crypto_clk.clkr, 1344e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_CRYPTO_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_crypto_clk_src.clkr, 1345e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_LINK_CLK] = &mdss_1_disp_cc_mdss_dptx0_link_clk.clkr, 1346e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_link_clk_src.clkr, 1347e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = 1348e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_link_div_clk_src.clkr, 1349e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &mdss_1_disp_cc_mdss_dptx0_link_intf_clk.clkr, 1350e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &mdss_1_disp_cc_mdss_dptx0_pixel0_clk.clkr, 1351e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_pixel0_clk_src.clkr, 1352e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &mdss_1_disp_cc_mdss_dptx0_pixel1_clk.clkr, 1353e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_pixel1_clk_src.clkr, 1354e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL2_CLK] = &mdss_1_disp_cc_mdss_dptx0_pixel2_clk.clkr, 1355e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL2_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_pixel2_clk_src.clkr, 1356e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL3_CLK] = &mdss_1_disp_cc_mdss_dptx0_pixel3_clk.clkr, 1357e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_PIXEL3_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx0_pixel3_clk_src.clkr, 1358e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = 1359e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx0_usb_router_link_intf_clk.clkr, 1360e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_AUX_CLK] = &mdss_1_disp_cc_mdss_dptx1_aux_clk.clkr, 1361e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx1_aux_clk_src.clkr, 1362e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_CRYPTO_CLK] = &mdss_1_disp_cc_mdss_dptx1_crypto_clk.clkr, 1363e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_CRYPTO_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx1_crypto_clk_src.clkr, 1364e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_LINK_CLK] = &mdss_1_disp_cc_mdss_dptx1_link_clk.clkr, 1365e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx1_link_clk_src.clkr, 1366e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = 1367e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_link_div_clk_src.clkr, 1368e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &mdss_1_disp_cc_mdss_dptx1_link_intf_clk.clkr, 1369e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &mdss_1_disp_cc_mdss_dptx1_pixel0_clk.clkr, 1370e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx1_pixel0_clk_src.clkr, 1371e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &mdss_1_disp_cc_mdss_dptx1_pixel1_clk.clkr, 1372e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &mdss_1_disp_cc_mdss_dptx1_pixel1_clk_src.clkr, 1373e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = 1374e700bfd2STaniya Das &mdss_1_disp_cc_mdss_dptx1_usb_router_link_intf_clk.clkr, 1375e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_ESC0_CLK] = &mdss_1_disp_cc_mdss_esc0_clk.clkr, 1376e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_ESC0_CLK_SRC] = &mdss_1_disp_cc_mdss_esc0_clk_src.clkr, 1377e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_ESC1_CLK] = &mdss_1_disp_cc_mdss_esc1_clk.clkr, 1378e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_ESC1_CLK_SRC] = &mdss_1_disp_cc_mdss_esc1_clk_src.clkr, 1379e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_MDP1_CLK] = &mdss_1_disp_cc_mdss_mdp1_clk.clkr, 1380e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_MDP_CLK] = &mdss_1_disp_cc_mdss_mdp_clk.clkr, 1381e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_MDP_CLK_SRC] = &mdss_1_disp_cc_mdss_mdp_clk_src.clkr, 1382e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_MDP_LUT1_CLK] = &mdss_1_disp_cc_mdss_mdp_lut1_clk.clkr, 1383e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_MDP_LUT_CLK] = &mdss_1_disp_cc_mdss_mdp_lut_clk.clkr, 1384e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &mdss_1_disp_cc_mdss_non_gdsc_ahb_clk.clkr, 1385e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_PCLK0_CLK] = &mdss_1_disp_cc_mdss_pclk0_clk.clkr, 1386e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_PCLK0_CLK_SRC] = &mdss_1_disp_cc_mdss_pclk0_clk_src.clkr, 1387e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_PCLK1_CLK] = &mdss_1_disp_cc_mdss_pclk1_clk.clkr, 1388e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_PCLK1_CLK_SRC] = &mdss_1_disp_cc_mdss_pclk1_clk_src.clkr, 1389e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_PLL_LOCK_MONITOR_CLK] = &mdss_1_disp_cc_mdss_pll_lock_monitor_clk.clkr, 1390e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_RSCC_AHB_CLK] = &mdss_1_disp_cc_mdss_rscc_ahb_clk.clkr, 1391e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_RSCC_VSYNC_CLK] = &mdss_1_disp_cc_mdss_rscc_vsync_clk.clkr, 1392e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_VSYNC1_CLK] = &mdss_1_disp_cc_mdss_vsync1_clk.clkr, 1393e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_VSYNC_CLK] = &mdss_1_disp_cc_mdss_vsync_clk.clkr, 1394e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_VSYNC_CLK_SRC] = &mdss_1_disp_cc_mdss_vsync_clk_src.clkr, 1395e700bfd2STaniya Das [MDSS_DISP_CC_PLL0] = &mdss_1_disp_cc_pll0.clkr, 1396e700bfd2STaniya Das [MDSS_DISP_CC_PLL1] = &mdss_1_disp_cc_pll1.clkr, 1397e700bfd2STaniya Das [MDSS_DISP_CC_SLEEP_CLK_SRC] = &mdss_1_disp_cc_sleep_clk_src.clkr, 1398e700bfd2STaniya Das [MDSS_DISP_CC_SM_OBS_CLK] = &mdss_1_disp_cc_sm_obs_clk.clkr, 1399e700bfd2STaniya Das [MDSS_DISP_CC_XO_CLK_SRC] = &mdss_1_disp_cc_xo_clk_src.clkr, 1400e700bfd2STaniya Das }; 1401e700bfd2STaniya Das 1402e700bfd2STaniya Das static struct gdsc *disp_cc_1_sa8775p_gdscs[] = { 1403e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_CORE_GDSC] = &mdss_1_disp_cc_mdss_core_gdsc, 1404e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_CORE_INT2_GDSC] = &mdss_1_disp_cc_mdss_core_int2_gdsc, 1405e700bfd2STaniya Das }; 1406e700bfd2STaniya Das 1407e700bfd2STaniya Das static const struct qcom_reset_map disp_cc_1_sa8775p_resets[] = { 1408e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_CORE_BCR] = { 0x8000 }, 1409e700bfd2STaniya Das [MDSS_DISP_CC_MDSS_RSCC_BCR] = { 0xa000 }, 1410e700bfd2STaniya Das }; 1411e700bfd2STaniya Das 1412e700bfd2STaniya Das static const struct regmap_config disp_cc_1_sa8775p_regmap_config = { 1413e700bfd2STaniya Das .reg_bits = 32, 1414e700bfd2STaniya Das .reg_stride = 4, 1415e700bfd2STaniya Das .val_bits = 32, 1416e700bfd2STaniya Das .max_register = 0x12414, 1417e700bfd2STaniya Das .fast_io = true, 1418e700bfd2STaniya Das }; 1419e700bfd2STaniya Das 1420*1801cee7SKrzysztof Kozlowski static const struct qcom_cc_desc disp_cc_1_sa8775p_desc = { 1421e700bfd2STaniya Das .config = &disp_cc_1_sa8775p_regmap_config, 1422e700bfd2STaniya Das .clks = disp_cc_1_sa8775p_clocks, 1423e700bfd2STaniya Das .num_clks = ARRAY_SIZE(disp_cc_1_sa8775p_clocks), 1424e700bfd2STaniya Das .resets = disp_cc_1_sa8775p_resets, 1425e700bfd2STaniya Das .num_resets = ARRAY_SIZE(disp_cc_1_sa8775p_resets), 1426e700bfd2STaniya Das .gdscs = disp_cc_1_sa8775p_gdscs, 1427e700bfd2STaniya Das .num_gdscs = ARRAY_SIZE(disp_cc_1_sa8775p_gdscs), 1428e700bfd2STaniya Das }; 1429e700bfd2STaniya Das 1430e700bfd2STaniya Das static const struct of_device_id disp_cc_1_sa8775p_match_table[] = { 1431e700bfd2STaniya Das { .compatible = "qcom,sa8775p-dispcc1" }, 1432e700bfd2STaniya Das { } 1433e700bfd2STaniya Das }; 1434e700bfd2STaniya Das MODULE_DEVICE_TABLE(of, disp_cc_1_sa8775p_match_table); 1435e700bfd2STaniya Das 1436e700bfd2STaniya Das static int disp_cc_1_sa8775p_probe(struct platform_device *pdev) 1437e700bfd2STaniya Das { 1438e700bfd2STaniya Das struct regmap *regmap; 1439e700bfd2STaniya Das int ret; 1440e700bfd2STaniya Das 1441e700bfd2STaniya Das ret = devm_pm_runtime_enable(&pdev->dev); 1442e700bfd2STaniya Das if (ret) 1443e700bfd2STaniya Das return ret; 1444e700bfd2STaniya Das 1445e700bfd2STaniya Das ret = pm_runtime_resume_and_get(&pdev->dev); 1446e700bfd2STaniya Das if (ret) 1447e700bfd2STaniya Das return ret; 1448e700bfd2STaniya Das 1449e700bfd2STaniya Das regmap = qcom_cc_map(pdev, &disp_cc_1_sa8775p_desc); 1450e700bfd2STaniya Das if (IS_ERR(regmap)) { 1451e700bfd2STaniya Das pm_runtime_put(&pdev->dev); 1452e700bfd2STaniya Das return PTR_ERR(regmap); 1453e700bfd2STaniya Das } 1454e700bfd2STaniya Das 1455e700bfd2STaniya Das clk_lucid_evo_pll_configure(&mdss_1_disp_cc_pll0, regmap, &mdss_1_disp_cc_pll0_config); 1456e700bfd2STaniya Das clk_lucid_evo_pll_configure(&mdss_1_disp_cc_pll1, regmap, &mdss_1_disp_cc_pll1_config); 1457e700bfd2STaniya Das 1458e700bfd2STaniya Das /* Keep some clocks always enabled */ 1459e700bfd2STaniya Das qcom_branch_set_clk_en(regmap, 0xc070); /* MDSS_1_DISP_CC_SLEEP_CLK */ 1460e700bfd2STaniya Das qcom_branch_set_clk_en(regmap, 0xc054); /* MDSS_1_DISP_CC_XO_CLK */ 1461e700bfd2STaniya Das 1462e700bfd2STaniya Das ret = qcom_cc_really_probe(&pdev->dev, &disp_cc_1_sa8775p_desc, regmap); 1463e700bfd2STaniya Das 1464e700bfd2STaniya Das pm_runtime_put(&pdev->dev); 1465e700bfd2STaniya Das 1466e700bfd2STaniya Das return ret; 1467e700bfd2STaniya Das } 1468e700bfd2STaniya Das 1469e700bfd2STaniya Das static struct platform_driver disp_cc_1_sa8775p_driver = { 1470e700bfd2STaniya Das .probe = disp_cc_1_sa8775p_probe, 1471e700bfd2STaniya Das .driver = { 1472e700bfd2STaniya Das .name = "dispcc1-sa8775p", 1473e700bfd2STaniya Das .of_match_table = disp_cc_1_sa8775p_match_table, 1474e700bfd2STaniya Das }, 1475e700bfd2STaniya Das }; 1476e700bfd2STaniya Das 1477e700bfd2STaniya Das module_platform_driver(disp_cc_1_sa8775p_driver); 1478e700bfd2STaniya Das 1479e700bfd2STaniya Das MODULE_DESCRIPTION("QTI DISPCC1 SA8775P Driver"); 1480e700bfd2STaniya Das MODULE_LICENSE("GPL"); 1481