1*6c6750b7STaniya Das // SPDX-License-Identifier: GPL-2.0-only 2*6c6750b7STaniya Das /* 3*6c6750b7STaniya Das * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*6c6750b7STaniya Das */ 5*6c6750b7STaniya Das 6*6c6750b7STaniya Das #include <linux/clk-provider.h> 7*6c6750b7STaniya Das #include <linux/mod_devicetable.h> 8*6c6750b7STaniya Das #include <linux/module.h> 9*6c6750b7STaniya Das #include <linux/of.h> 10*6c6750b7STaniya Das #include <linux/platform_device.h> 11*6c6750b7STaniya Das #include <linux/pm_runtime.h> 12*6c6750b7STaniya Das #include <linux/regmap.h> 13*6c6750b7STaniya Das 14*6c6750b7STaniya Das #include <dt-bindings/clock/qcom,kaanapali-dispcc.h> 15*6c6750b7STaniya Das 16*6c6750b7STaniya Das #include "clk-alpha-pll.h" 17*6c6750b7STaniya Das #include "clk-branch.h" 18*6c6750b7STaniya Das #include "clk-pll.h" 19*6c6750b7STaniya Das #include "clk-rcg.h" 20*6c6750b7STaniya Das #include "clk-regmap.h" 21*6c6750b7STaniya Das #include "clk-regmap-divider.h" 22*6c6750b7STaniya Das #include "clk-regmap-mux.h" 23*6c6750b7STaniya Das #include "common.h" 24*6c6750b7STaniya Das #include "gdsc.h" 25*6c6750b7STaniya Das #include "reset.h" 26*6c6750b7STaniya Das 27*6c6750b7STaniya Das #define DISP_CC_MISC_CMD 0xF000 28*6c6750b7STaniya Das 29*6c6750b7STaniya Das enum { 30*6c6750b7STaniya Das DT_BI_TCXO, 31*6c6750b7STaniya Das DT_BI_TCXO_AO, 32*6c6750b7STaniya Das DT_AHB_CLK, 33*6c6750b7STaniya Das DT_SLEEP_CLK, 34*6c6750b7STaniya Das DT_DP0_PHY_PLL_LINK_CLK, 35*6c6750b7STaniya Das DT_DP0_PHY_PLL_VCO_DIV_CLK, 36*6c6750b7STaniya Das DT_DP1_PHY_PLL_LINK_CLK, 37*6c6750b7STaniya Das DT_DP1_PHY_PLL_VCO_DIV_CLK, 38*6c6750b7STaniya Das DT_DP2_PHY_PLL_LINK_CLK, 39*6c6750b7STaniya Das DT_DP2_PHY_PLL_VCO_DIV_CLK, 40*6c6750b7STaniya Das DT_DP3_PHY_PLL_LINK_CLK, 41*6c6750b7STaniya Das DT_DP3_PHY_PLL_VCO_DIV_CLK, 42*6c6750b7STaniya Das DT_DSI0_PHY_PLL_OUT_BYTECLK, 43*6c6750b7STaniya Das DT_DSI0_PHY_PLL_OUT_DSICLK, 44*6c6750b7STaniya Das DT_DSI1_PHY_PLL_OUT_BYTECLK, 45*6c6750b7STaniya Das DT_DSI1_PHY_PLL_OUT_DSICLK, 46*6c6750b7STaniya Das }; 47*6c6750b7STaniya Das 48*6c6750b7STaniya Das enum { 49*6c6750b7STaniya Das P_BI_TCXO, 50*6c6750b7STaniya Das P_DISP_CC_PLL0_OUT_MAIN, 51*6c6750b7STaniya Das P_DISP_CC_PLL1_OUT_EVEN, 52*6c6750b7STaniya Das P_DISP_CC_PLL1_OUT_MAIN, 53*6c6750b7STaniya Das P_DISP_CC_PLL2_OUT_MAIN, 54*6c6750b7STaniya Das P_DP0_PHY_PLL_LINK_CLK, 55*6c6750b7STaniya Das P_DP0_PHY_PLL_VCO_DIV_CLK, 56*6c6750b7STaniya Das P_DP1_PHY_PLL_LINK_CLK, 57*6c6750b7STaniya Das P_DP1_PHY_PLL_VCO_DIV_CLK, 58*6c6750b7STaniya Das P_DP2_PHY_PLL_LINK_CLK, 59*6c6750b7STaniya Das P_DP2_PHY_PLL_VCO_DIV_CLK, 60*6c6750b7STaniya Das P_DP3_PHY_PLL_LINK_CLK, 61*6c6750b7STaniya Das P_DP3_PHY_PLL_VCO_DIV_CLK, 62*6c6750b7STaniya Das P_DSI0_PHY_PLL_OUT_BYTECLK, 63*6c6750b7STaniya Das P_DSI0_PHY_PLL_OUT_DSICLK, 64*6c6750b7STaniya Das P_DSI1_PHY_PLL_OUT_BYTECLK, 65*6c6750b7STaniya Das P_DSI1_PHY_PLL_OUT_DSICLK, 66*6c6750b7STaniya Das }; 67*6c6750b7STaniya Das 68*6c6750b7STaniya Das static const struct pll_vco pongo_eko_t_vco[] = { 69*6c6750b7STaniya Das { 38400000, 153600000, 0 }, 70*6c6750b7STaniya Das }; 71*6c6750b7STaniya Das 72*6c6750b7STaniya Das static const struct pll_vco taycan_eko_t_vco[] = { 73*6c6750b7STaniya Das { 249600000, 2500000000, 0 }, 74*6c6750b7STaniya Das }; 75*6c6750b7STaniya Das 76*6c6750b7STaniya Das /* 257.142858 MHz Configuration */ 77*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll0_config = { 78*6c6750b7STaniya Das .l = 0xd, 79*6c6750b7STaniya Das .cal_l = 0x48, 80*6c6750b7STaniya Das .alpha = 0x6492, 81*6c6750b7STaniya Das .config_ctl_val = 0x25c400e7, 82*6c6750b7STaniya Das .config_ctl_hi_val = 0x0a8062e0, 83*6c6750b7STaniya Das .config_ctl_hi1_val = 0xf51dea20, 84*6c6750b7STaniya Das .user_ctl_val = 0x00000008, 85*6c6750b7STaniya Das .user_ctl_hi_val = 0x00000002, 86*6c6750b7STaniya Das }; 87*6c6750b7STaniya Das 88*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll0 = { 89*6c6750b7STaniya Das .offset = 0x0, 90*6c6750b7STaniya Das .config = &disp_cc_pll0_config, 91*6c6750b7STaniya Das .vco_table = taycan_eko_t_vco, 92*6c6750b7STaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 93*6c6750b7STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 94*6c6750b7STaniya Das .clkr = { 95*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 96*6c6750b7STaniya Das .name = "disp_cc_pll0", 97*6c6750b7STaniya Das .parent_data = &(const struct clk_parent_data) { 98*6c6750b7STaniya Das .index = DT_BI_TCXO, 99*6c6750b7STaniya Das }, 100*6c6750b7STaniya Das .num_parents = 1, 101*6c6750b7STaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 102*6c6750b7STaniya Das }, 103*6c6750b7STaniya Das }, 104*6c6750b7STaniya Das }; 105*6c6750b7STaniya Das 106*6c6750b7STaniya Das /* 300.0 MHz Configuration */ 107*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll1_config = { 108*6c6750b7STaniya Das .l = 0xf, 109*6c6750b7STaniya Das .cal_l = 0x48, 110*6c6750b7STaniya Das .alpha = 0xa000, 111*6c6750b7STaniya Das .config_ctl_val = 0x25c400e7, 112*6c6750b7STaniya Das .config_ctl_hi_val = 0x0a8062e0, 113*6c6750b7STaniya Das .config_ctl_hi1_val = 0xf51dea20, 114*6c6750b7STaniya Das .user_ctl_val = 0x00000008, 115*6c6750b7STaniya Das .user_ctl_hi_val = 0x00000002, 116*6c6750b7STaniya Das }; 117*6c6750b7STaniya Das 118*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll1 = { 119*6c6750b7STaniya Das .offset = 0x1000, 120*6c6750b7STaniya Das .config = &disp_cc_pll1_config, 121*6c6750b7STaniya Das .vco_table = taycan_eko_t_vco, 122*6c6750b7STaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 123*6c6750b7STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 124*6c6750b7STaniya Das .clkr = { 125*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 126*6c6750b7STaniya Das .name = "disp_cc_pll1", 127*6c6750b7STaniya Das .parent_data = &(const struct clk_parent_data) { 128*6c6750b7STaniya Das .index = DT_BI_TCXO, 129*6c6750b7STaniya Das }, 130*6c6750b7STaniya Das .num_parents = 1, 131*6c6750b7STaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 132*6c6750b7STaniya Das }, 133*6c6750b7STaniya Das }, 134*6c6750b7STaniya Das }; 135*6c6750b7STaniya Das 136*6c6750b7STaniya Das /* 38.4 MHz Configuration */ 137*6c6750b7STaniya Das static const struct alpha_pll_config disp_cc_pll2_config = { 138*6c6750b7STaniya Das .l = 0x493, 139*6c6750b7STaniya Das .cal_l = 0x493, 140*6c6750b7STaniya Das .alpha = 0x0, 141*6c6750b7STaniya Das .config_ctl_val = 0x60000f68, 142*6c6750b7STaniya Das .config_ctl_hi_val = 0x0001c808, 143*6c6750b7STaniya Das .config_ctl_hi1_val = 0x00000000, 144*6c6750b7STaniya Das .config_ctl_hi2_val = 0x040082f4, 145*6c6750b7STaniya Das .test_ctl_val = 0x00000000, 146*6c6750b7STaniya Das .test_ctl_hi_val = 0x0080c496, 147*6c6750b7STaniya Das .test_ctl_hi1_val = 0x40100080, 148*6c6750b7STaniya Das .test_ctl_hi2_val = 0x001001bc, 149*6c6750b7STaniya Das .test_ctl_hi3_val = 0x002003d8, 150*6c6750b7STaniya Das .user_ctl_val = 0x00000400, 151*6c6750b7STaniya Das .user_ctl_hi_val = 0x00e50302, 152*6c6750b7STaniya Das }; 153*6c6750b7STaniya Das 154*6c6750b7STaniya Das static struct clk_alpha_pll disp_cc_pll2 = { 155*6c6750b7STaniya Das .offset = 0x2000, 156*6c6750b7STaniya Das .config = &disp_cc_pll2_config, 157*6c6750b7STaniya Das .vco_table = pongo_eko_t_vco, 158*6c6750b7STaniya Das .num_vco = ARRAY_SIZE(pongo_eko_t_vco), 159*6c6750b7STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_PONGO_EKO_T], 160*6c6750b7STaniya Das .clkr = { 161*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 162*6c6750b7STaniya Das .name = "disp_cc_pll2", 163*6c6750b7STaniya Das .parent_data = &(const struct clk_parent_data) { 164*6c6750b7STaniya Das .index = DT_SLEEP_CLK, 165*6c6750b7STaniya Das }, 166*6c6750b7STaniya Das .num_parents = 1, 167*6c6750b7STaniya Das .ops = &clk_alpha_pll_pongo_eko_t_ops, 168*6c6750b7STaniya Das }, 169*6c6750b7STaniya Das }, 170*6c6750b7STaniya Das }; 171*6c6750b7STaniya Das 172*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_0[] = { 173*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 174*6c6750b7STaniya Das }; 175*6c6750b7STaniya Das 176*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_0[] = { 177*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 178*6c6750b7STaniya Das }; 179*6c6750b7STaniya Das 180*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_1[] = { 181*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 182*6c6750b7STaniya Das { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 183*6c6750b7STaniya Das { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 184*6c6750b7STaniya Das { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 185*6c6750b7STaniya Das { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 186*6c6750b7STaniya Das }; 187*6c6750b7STaniya Das 188*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_1[] = { 189*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 190*6c6750b7STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 191*6c6750b7STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 192*6c6750b7STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 193*6c6750b7STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 194*6c6750b7STaniya Das }; 195*6c6750b7STaniya Das 196*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_2[] = { 197*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 198*6c6750b7STaniya Das { P_DP3_PHY_PLL_VCO_DIV_CLK, 3 }, 199*6c6750b7STaniya Das { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 200*6c6750b7STaniya Das { P_DP2_PHY_PLL_VCO_DIV_CLK, 6 }, 201*6c6750b7STaniya Das }; 202*6c6750b7STaniya Das 203*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_2[] = { 204*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 205*6c6750b7STaniya Das { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 206*6c6750b7STaniya Das { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 207*6c6750b7STaniya Das { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 208*6c6750b7STaniya Das }; 209*6c6750b7STaniya Das 210*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_3[] = { 211*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 212*6c6750b7STaniya Das { P_DP1_PHY_PLL_LINK_CLK, 2 }, 213*6c6750b7STaniya Das { P_DP2_PHY_PLL_LINK_CLK, 3 }, 214*6c6750b7STaniya Das { P_DP3_PHY_PLL_LINK_CLK, 4 }, 215*6c6750b7STaniya Das }; 216*6c6750b7STaniya Das 217*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_3[] = { 218*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 219*6c6750b7STaniya Das { .index = DT_DP1_PHY_PLL_LINK_CLK }, 220*6c6750b7STaniya Das { .index = DT_DP2_PHY_PLL_LINK_CLK }, 221*6c6750b7STaniya Das { .index = DT_DP3_PHY_PLL_LINK_CLK }, 222*6c6750b7STaniya Das }; 223*6c6750b7STaniya Das 224*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_4[] = { 225*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 226*6c6750b7STaniya Das { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 227*6c6750b7STaniya Das { P_DISP_CC_PLL2_OUT_MAIN, 2 }, 228*6c6750b7STaniya Das { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 229*6c6750b7STaniya Das }; 230*6c6750b7STaniya Das 231*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_4[] = { 232*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 233*6c6750b7STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 234*6c6750b7STaniya Das { .hw = &disp_cc_pll2.clkr.hw }, 235*6c6750b7STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 236*6c6750b7STaniya Das }; 237*6c6750b7STaniya Das 238*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_5[] = { 239*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 240*6c6750b7STaniya Das { P_DP0_PHY_PLL_LINK_CLK, 1 }, 241*6c6750b7STaniya Das { P_DP0_PHY_PLL_VCO_DIV_CLK, 2 }, 242*6c6750b7STaniya Das { P_DP3_PHY_PLL_VCO_DIV_CLK, 3 }, 243*6c6750b7STaniya Das { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 244*6c6750b7STaniya Das { P_DP2_PHY_PLL_VCO_DIV_CLK, 6 }, 245*6c6750b7STaniya Das }; 246*6c6750b7STaniya Das 247*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_5[] = { 248*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 249*6c6750b7STaniya Das { .index = DT_DP0_PHY_PLL_LINK_CLK }, 250*6c6750b7STaniya Das { .index = DT_DP0_PHY_PLL_VCO_DIV_CLK }, 251*6c6750b7STaniya Das { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 252*6c6750b7STaniya Das { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 253*6c6750b7STaniya Das { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 254*6c6750b7STaniya Das }; 255*6c6750b7STaniya Das 256*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_6[] = { 257*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 258*6c6750b7STaniya Das { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 259*6c6750b7STaniya Das { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 260*6c6750b7STaniya Das }; 261*6c6750b7STaniya Das 262*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_6[] = { 263*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 264*6c6750b7STaniya Das { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 265*6c6750b7STaniya Das { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 266*6c6750b7STaniya Das }; 267*6c6750b7STaniya Das 268*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_7[] = { 269*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 270*6c6750b7STaniya Das { P_DISP_CC_PLL1_OUT_MAIN, 4 }, 271*6c6750b7STaniya Das { P_DISP_CC_PLL1_OUT_EVEN, 6 }, 272*6c6750b7STaniya Das }; 273*6c6750b7STaniya Das 274*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_7[] = { 275*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 276*6c6750b7STaniya Das { .hw = &disp_cc_pll1.clkr.hw }, 277*6c6750b7STaniya Das { .hw = &disp_cc_pll1.clkr.hw }, 278*6c6750b7STaniya Das }; 279*6c6750b7STaniya Das 280*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_8[] = { 281*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 282*6c6750b7STaniya Das { P_DP0_PHY_PLL_LINK_CLK, 1 }, 283*6c6750b7STaniya Das { P_DP1_PHY_PLL_LINK_CLK, 2 }, 284*6c6750b7STaniya Das { P_DP2_PHY_PLL_LINK_CLK, 3 }, 285*6c6750b7STaniya Das { P_DP3_PHY_PLL_LINK_CLK, 4 }, 286*6c6750b7STaniya Das }; 287*6c6750b7STaniya Das 288*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_8[] = { 289*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 290*6c6750b7STaniya Das { .index = DT_DP0_PHY_PLL_LINK_CLK }, 291*6c6750b7STaniya Das { .index = DT_DP1_PHY_PLL_LINK_CLK }, 292*6c6750b7STaniya Das { .index = DT_DP2_PHY_PLL_LINK_CLK }, 293*6c6750b7STaniya Das { .index = DT_DP3_PHY_PLL_LINK_CLK }, 294*6c6750b7STaniya Das }; 295*6c6750b7STaniya Das 296*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_9[] = { 297*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 298*6c6750b7STaniya Das { P_DISP_CC_PLL0_OUT_MAIN, 1 }, 299*6c6750b7STaniya Das { P_DISP_CC_PLL1_OUT_MAIN, 4 }, 300*6c6750b7STaniya Das { P_DISP_CC_PLL1_OUT_EVEN, 6 }, 301*6c6750b7STaniya Das }; 302*6c6750b7STaniya Das 303*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_9[] = { 304*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 305*6c6750b7STaniya Das { .hw = &disp_cc_pll0.clkr.hw }, 306*6c6750b7STaniya Das { .hw = &disp_cc_pll1.clkr.hw }, 307*6c6750b7STaniya Das { .hw = &disp_cc_pll1.clkr.hw }, 308*6c6750b7STaniya Das }; 309*6c6750b7STaniya Das 310*6c6750b7STaniya Das static const struct parent_map disp_cc_parent_map_10[] = { 311*6c6750b7STaniya Das { P_BI_TCXO, 0 }, 312*6c6750b7STaniya Das { P_DISP_CC_PLL2_OUT_MAIN, 2 }, 313*6c6750b7STaniya Das }; 314*6c6750b7STaniya Das 315*6c6750b7STaniya Das static const struct clk_parent_data disp_cc_parent_data_10[] = { 316*6c6750b7STaniya Das { .index = DT_BI_TCXO }, 317*6c6750b7STaniya Das { .hw = &disp_cc_pll2.clkr.hw }, 318*6c6750b7STaniya Das }; 319*6c6750b7STaniya Das 320*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_esync0_clk_src[] = { 321*6c6750b7STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 322*6c6750b7STaniya Das { } 323*6c6750b7STaniya Das }; 324*6c6750b7STaniya Das 325*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_esync0_clk_src = { 326*6c6750b7STaniya Das .cmd_rcgr = 0x80d4, 327*6c6750b7STaniya Das .mnd_width = 16, 328*6c6750b7STaniya Das .hid_width = 5, 329*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_4, 330*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 331*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 332*6c6750b7STaniya Das .name = "disp_cc_esync0_clk_src", 333*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_4, 334*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 335*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 336*6c6750b7STaniya Das .ops = &clk_pixel_ops, 337*6c6750b7STaniya Das }, 338*6c6750b7STaniya Das }; 339*6c6750b7STaniya Das 340*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_esync1_clk_src = { 341*6c6750b7STaniya Das .cmd_rcgr = 0x80ec, 342*6c6750b7STaniya Das .mnd_width = 16, 343*6c6750b7STaniya Das .hid_width = 5, 344*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_4, 345*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 346*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 347*6c6750b7STaniya Das .name = "disp_cc_esync1_clk_src", 348*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_4, 349*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 350*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 351*6c6750b7STaniya Das .ops = &clk_pixel_ops, 352*6c6750b7STaniya Das }, 353*6c6750b7STaniya Das }; 354*6c6750b7STaniya Das 355*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = { 356*6c6750b7STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 357*6c6750b7STaniya Das F(100000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 358*6c6750b7STaniya Das F(120000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 359*6c6750b7STaniya Das F(165000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 360*6c6750b7STaniya Das F(200000000, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 361*6c6750b7STaniya Das F(233333333, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 362*6c6750b7STaniya Das F(261666667, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 363*6c6750b7STaniya Das F(283333333, P_DISP_CC_PLL1_OUT_EVEN, 3, 0, 0), 364*6c6750b7STaniya Das { } 365*6c6750b7STaniya Das }; 366*6c6750b7STaniya Das 367*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_ahb_clk_src = { 368*6c6750b7STaniya Das .cmd_rcgr = 0x8378, 369*6c6750b7STaniya Das .mnd_width = 0, 370*6c6750b7STaniya Das .hid_width = 5, 371*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_7, 372*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src, 373*6c6750b7STaniya Das .hw_clk_ctrl = true, 374*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 375*6c6750b7STaniya Das .name = "disp_cc_mdss_ahb_clk_src", 376*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_7, 377*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_7), 378*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 379*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 380*6c6750b7STaniya Das }, 381*6c6750b7STaniya Das }; 382*6c6750b7STaniya Das 383*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_byte0_clk_src = { 384*6c6750b7STaniya Das .cmd_rcgr = 0x8194, 385*6c6750b7STaniya Das .mnd_width = 0, 386*6c6750b7STaniya Das .hid_width = 5, 387*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_1, 388*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 389*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 390*6c6750b7STaniya Das .name = "disp_cc_mdss_byte0_clk_src", 391*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_1, 392*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 393*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 394*6c6750b7STaniya Das .ops = &clk_byte2_ops, 395*6c6750b7STaniya Das }, 396*6c6750b7STaniya Das }; 397*6c6750b7STaniya Das 398*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_byte1_clk_src = { 399*6c6750b7STaniya Das .cmd_rcgr = 0x81b0, 400*6c6750b7STaniya Das .mnd_width = 0, 401*6c6750b7STaniya Das .hid_width = 5, 402*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_1, 403*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 404*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 405*6c6750b7STaniya Das .name = "disp_cc_mdss_byte1_clk_src", 406*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_1, 407*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 408*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 409*6c6750b7STaniya Das .ops = &clk_byte2_ops, 410*6c6750b7STaniya Das }, 411*6c6750b7STaniya Das }; 412*6c6750b7STaniya Das 413*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_aux_clk_src = { 414*6c6750b7STaniya Das .cmd_rcgr = 0x8248, 415*6c6750b7STaniya Das .mnd_width = 0, 416*6c6750b7STaniya Das .hid_width = 5, 417*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_0, 418*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 419*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 420*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_aux_clk_src", 421*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_0, 422*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 423*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 424*6c6750b7STaniya Das .ops = &clk_rcg2_ops, 425*6c6750b7STaniya Das }, 426*6c6750b7STaniya Das }; 427*6c6750b7STaniya Das 428*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_link_clk_src = { 429*6c6750b7STaniya Das .cmd_rcgr = 0x81fc, 430*6c6750b7STaniya Das .mnd_width = 0, 431*6c6750b7STaniya Das .hid_width = 5, 432*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_8, 433*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 434*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 435*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_link_clk_src", 436*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_8, 437*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_8), 438*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 439*6c6750b7STaniya Das .ops = &clk_byte2_ops, 440*6c6750b7STaniya Das }, 441*6c6750b7STaniya Das }; 442*6c6750b7STaniya Das 443*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_pixel0_clk_src = { 444*6c6750b7STaniya Das .cmd_rcgr = 0x8218, 445*6c6750b7STaniya Das .mnd_width = 16, 446*6c6750b7STaniya Das .hid_width = 5, 447*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_5, 448*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 449*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 450*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_pixel0_clk_src", 451*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_5, 452*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_5), 453*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 454*6c6750b7STaniya Das .ops = &clk_dp_ops, 455*6c6750b7STaniya Das }, 456*6c6750b7STaniya Das }; 457*6c6750b7STaniya Das 458*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx0_pixel1_clk_src = { 459*6c6750b7STaniya Das .cmd_rcgr = 0x8230, 460*6c6750b7STaniya Das .mnd_width = 16, 461*6c6750b7STaniya Das .hid_width = 5, 462*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_5, 463*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 464*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 465*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_pixel1_clk_src", 466*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_5, 467*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_5), 468*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 469*6c6750b7STaniya Das .ops = &clk_dp_ops, 470*6c6750b7STaniya Das }, 471*6c6750b7STaniya Das }; 472*6c6750b7STaniya Das 473*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_aux_clk_src = { 474*6c6750b7STaniya Das .cmd_rcgr = 0x82ac, 475*6c6750b7STaniya Das .mnd_width = 0, 476*6c6750b7STaniya Das .hid_width = 5, 477*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_0, 478*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 479*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 480*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_aux_clk_src", 481*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_0, 482*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 483*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 484*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 485*6c6750b7STaniya Das }, 486*6c6750b7STaniya Das }; 487*6c6750b7STaniya Das 488*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_link_clk_src = { 489*6c6750b7STaniya Das .cmd_rcgr = 0x8290, 490*6c6750b7STaniya Das .mnd_width = 0, 491*6c6750b7STaniya Das .hid_width = 5, 492*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_3, 493*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 494*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 495*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_link_clk_src", 496*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_3, 497*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 498*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 499*6c6750b7STaniya Das .ops = &clk_byte2_ops, 500*6c6750b7STaniya Das }, 501*6c6750b7STaniya Das }; 502*6c6750b7STaniya Das 503*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_pixel0_clk_src = { 504*6c6750b7STaniya Das .cmd_rcgr = 0x8260, 505*6c6750b7STaniya Das .mnd_width = 16, 506*6c6750b7STaniya Das .hid_width = 5, 507*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_2, 508*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 509*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 510*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_pixel0_clk_src", 511*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_2, 512*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 513*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 514*6c6750b7STaniya Das .ops = &clk_dp_ops, 515*6c6750b7STaniya Das }, 516*6c6750b7STaniya Das }; 517*6c6750b7STaniya Das 518*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx1_pixel1_clk_src = { 519*6c6750b7STaniya Das .cmd_rcgr = 0x8278, 520*6c6750b7STaniya Das .mnd_width = 16, 521*6c6750b7STaniya Das .hid_width = 5, 522*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_2, 523*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 524*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 525*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_pixel1_clk_src", 526*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_2, 527*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 528*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 529*6c6750b7STaniya Das .ops = &clk_dp_ops, 530*6c6750b7STaniya Das }, 531*6c6750b7STaniya Das }; 532*6c6750b7STaniya Das 533*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_aux_clk_src = { 534*6c6750b7STaniya Das .cmd_rcgr = 0x8310, 535*6c6750b7STaniya Das .mnd_width = 0, 536*6c6750b7STaniya Das .hid_width = 5, 537*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_0, 538*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 539*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 540*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_aux_clk_src", 541*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_0, 542*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 543*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 544*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 545*6c6750b7STaniya Das }, 546*6c6750b7STaniya Das }; 547*6c6750b7STaniya Das 548*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_link_clk_src = { 549*6c6750b7STaniya Das .cmd_rcgr = 0x82c4, 550*6c6750b7STaniya Das .mnd_width = 0, 551*6c6750b7STaniya Das .hid_width = 5, 552*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_3, 553*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 554*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 555*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_link_clk_src", 556*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_3, 557*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 558*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 559*6c6750b7STaniya Das .ops = &clk_byte2_ops, 560*6c6750b7STaniya Das }, 561*6c6750b7STaniya Das }; 562*6c6750b7STaniya Das 563*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_pixel0_clk_src = { 564*6c6750b7STaniya Das .cmd_rcgr = 0x82e0, 565*6c6750b7STaniya Das .mnd_width = 16, 566*6c6750b7STaniya Das .hid_width = 5, 567*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_2, 568*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 569*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 570*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_pixel0_clk_src", 571*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_2, 572*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 573*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 574*6c6750b7STaniya Das .ops = &clk_dp_ops, 575*6c6750b7STaniya Das }, 576*6c6750b7STaniya Das }; 577*6c6750b7STaniya Das 578*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx2_pixel1_clk_src = { 579*6c6750b7STaniya Das .cmd_rcgr = 0x82f8, 580*6c6750b7STaniya Das .mnd_width = 16, 581*6c6750b7STaniya Das .hid_width = 5, 582*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_2, 583*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 584*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 585*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_pixel1_clk_src", 586*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_2, 587*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 588*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 589*6c6750b7STaniya Das .ops = &clk_dp_ops, 590*6c6750b7STaniya Das }, 591*6c6750b7STaniya Das }; 592*6c6750b7STaniya Das 593*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_aux_clk_src = { 594*6c6750b7STaniya Das .cmd_rcgr = 0x835c, 595*6c6750b7STaniya Das .mnd_width = 0, 596*6c6750b7STaniya Das .hid_width = 5, 597*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_0, 598*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 599*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 600*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_aux_clk_src", 601*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_0, 602*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 603*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 604*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 605*6c6750b7STaniya Das }, 606*6c6750b7STaniya Das }; 607*6c6750b7STaniya Das 608*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_link_clk_src = { 609*6c6750b7STaniya Das .cmd_rcgr = 0x8340, 610*6c6750b7STaniya Das .mnd_width = 0, 611*6c6750b7STaniya Das .hid_width = 5, 612*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_3, 613*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 614*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 615*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_link_clk_src", 616*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_3, 617*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 618*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 619*6c6750b7STaniya Das .ops = &clk_byte2_ops, 620*6c6750b7STaniya Das }, 621*6c6750b7STaniya Das }; 622*6c6750b7STaniya Das 623*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_dptx3_pixel0_clk_src = { 624*6c6750b7STaniya Das .cmd_rcgr = 0x8328, 625*6c6750b7STaniya Das .mnd_width = 16, 626*6c6750b7STaniya Das .hid_width = 5, 627*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_2, 628*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 629*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 630*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_pixel0_clk_src", 631*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_2, 632*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 633*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 634*6c6750b7STaniya Das .ops = &clk_dp_ops, 635*6c6750b7STaniya Das }, 636*6c6750b7STaniya Das }; 637*6c6750b7STaniya Das 638*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_esc0_clk_src = { 639*6c6750b7STaniya Das .cmd_rcgr = 0x81cc, 640*6c6750b7STaniya Das .mnd_width = 0, 641*6c6750b7STaniya Das .hid_width = 5, 642*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_6, 643*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 644*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 645*6c6750b7STaniya Das .name = "disp_cc_mdss_esc0_clk_src", 646*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_6, 647*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_6), 648*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 649*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 650*6c6750b7STaniya Das }, 651*6c6750b7STaniya Das }; 652*6c6750b7STaniya Das 653*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_esc1_clk_src = { 654*6c6750b7STaniya Das .cmd_rcgr = 0x81e4, 655*6c6750b7STaniya Das .mnd_width = 0, 656*6c6750b7STaniya Das .hid_width = 5, 657*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_6, 658*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 659*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 660*6c6750b7STaniya Das .name = "disp_cc_mdss_esc1_clk_src", 661*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_6, 662*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_6), 663*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 664*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 665*6c6750b7STaniya Das }, 666*6c6750b7STaniya Das }; 667*6c6750b7STaniya Das 668*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = { 669*6c6750b7STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 670*6c6750b7STaniya Das F(85714286, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 671*6c6750b7STaniya Das F(100000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 672*6c6750b7STaniya Das F(156000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 673*6c6750b7STaniya Das F(207000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 674*6c6750b7STaniya Das F(337000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 675*6c6750b7STaniya Das F(417000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 676*6c6750b7STaniya Das F(532000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 677*6c6750b7STaniya Das F(600000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 678*6c6750b7STaniya Das F(650000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 679*6c6750b7STaniya Das { } 680*6c6750b7STaniya Das }; 681*6c6750b7STaniya Das 682*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_mdp_clk_src = { 683*6c6750b7STaniya Das .cmd_rcgr = 0x8164, 684*6c6750b7STaniya Das .mnd_width = 0, 685*6c6750b7STaniya Das .hid_width = 5, 686*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_9, 687*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src, 688*6c6750b7STaniya Das .hw_clk_ctrl = true, 689*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 690*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp_clk_src", 691*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_9, 692*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_9), 693*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 694*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 695*6c6750b7STaniya Das }, 696*6c6750b7STaniya Das }; 697*6c6750b7STaniya Das 698*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk0_clk_src = { 699*6c6750b7STaniya Das .cmd_rcgr = 0x811c, 700*6c6750b7STaniya Das .mnd_width = 8, 701*6c6750b7STaniya Das .hid_width = 5, 702*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_1, 703*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 704*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 705*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk0_clk_src", 706*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_1, 707*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 708*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 709*6c6750b7STaniya Das .ops = &clk_pixel_ops, 710*6c6750b7STaniya Das }, 711*6c6750b7STaniya Das }; 712*6c6750b7STaniya Das 713*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk1_clk_src = { 714*6c6750b7STaniya Das .cmd_rcgr = 0x8134, 715*6c6750b7STaniya Das .mnd_width = 8, 716*6c6750b7STaniya Das .hid_width = 5, 717*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_1, 718*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 719*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 720*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk1_clk_src", 721*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_1, 722*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 723*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 724*6c6750b7STaniya Das .ops = &clk_pixel_ops, 725*6c6750b7STaniya Das }, 726*6c6750b7STaniya Das }; 727*6c6750b7STaniya Das 728*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_pclk2_clk_src = { 729*6c6750b7STaniya Das .cmd_rcgr = 0x814c, 730*6c6750b7STaniya Das .mnd_width = 8, 731*6c6750b7STaniya Das .hid_width = 5, 732*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_1, 733*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 734*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 735*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk2_clk_src", 736*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_1, 737*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 738*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 739*6c6750b7STaniya Das .ops = &clk_pixel_ops, 740*6c6750b7STaniya Das }, 741*6c6750b7STaniya Das }; 742*6c6750b7STaniya Das 743*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_mdss_vsync_clk_src = { 744*6c6750b7STaniya Das .cmd_rcgr = 0x817c, 745*6c6750b7STaniya Das .mnd_width = 0, 746*6c6750b7STaniya Das .hid_width = 5, 747*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_0, 748*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_esync0_clk_src, 749*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 750*6c6750b7STaniya Das .name = "disp_cc_mdss_vsync_clk_src", 751*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_0, 752*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 753*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 754*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 755*6c6750b7STaniya Das }, 756*6c6750b7STaniya Das }; 757*6c6750b7STaniya Das 758*6c6750b7STaniya Das static const struct freq_tbl ftbl_disp_cc_osc_clk_src[] = { 759*6c6750b7STaniya Das F(38400000, P_DISP_CC_PLL2_OUT_MAIN, 1, 0, 0), 760*6c6750b7STaniya Das { } 761*6c6750b7STaniya Das }; 762*6c6750b7STaniya Das 763*6c6750b7STaniya Das static struct clk_rcg2 disp_cc_osc_clk_src = { 764*6c6750b7STaniya Das .cmd_rcgr = 0x8104, 765*6c6750b7STaniya Das .mnd_width = 0, 766*6c6750b7STaniya Das .hid_width = 5, 767*6c6750b7STaniya Das .parent_map = disp_cc_parent_map_10, 768*6c6750b7STaniya Das .freq_tbl = ftbl_disp_cc_osc_clk_src, 769*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 770*6c6750b7STaniya Das .name = "disp_cc_osc_clk_src", 771*6c6750b7STaniya Das .parent_data = disp_cc_parent_data_10, 772*6c6750b7STaniya Das .num_parents = ARRAY_SIZE(disp_cc_parent_data_10), 773*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 774*6c6750b7STaniya Das .ops = &clk_rcg2_shared_ops, 775*6c6750b7STaniya Das }, 776*6c6750b7STaniya Das }; 777*6c6750b7STaniya Das 778*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_ahb_swi_div_clk_src = { 779*6c6750b7STaniya Das .reg = 0x8374, 780*6c6750b7STaniya Das .shift = 0, 781*6c6750b7STaniya Das .width = 4, 782*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 783*6c6750b7STaniya Das .name = "disp_cc_mdss_ahb_swi_div_clk_src", 784*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 785*6c6750b7STaniya Das &disp_cc_mdss_ahb_clk_src.clkr.hw, 786*6c6750b7STaniya Das }, 787*6c6750b7STaniya Das .num_parents = 1, 788*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 789*6c6750b7STaniya Das .ops = &clk_regmap_div_ro_ops, 790*6c6750b7STaniya Das }, 791*6c6750b7STaniya Das }; 792*6c6750b7STaniya Das 793*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_byte0_div_clk_src = { 794*6c6750b7STaniya Das .reg = 0x81ac, 795*6c6750b7STaniya Das .shift = 0, 796*6c6750b7STaniya Das .width = 4, 797*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 798*6c6750b7STaniya Das .name = "disp_cc_mdss_byte0_div_clk_src", 799*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 800*6c6750b7STaniya Das &disp_cc_mdss_byte0_clk_src.clkr.hw, 801*6c6750b7STaniya Das }, 802*6c6750b7STaniya Das .num_parents = 1, 803*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 804*6c6750b7STaniya Das .ops = &clk_regmap_div_ops, 805*6c6750b7STaniya Das }, 806*6c6750b7STaniya Das }; 807*6c6750b7STaniya Das 808*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_byte1_div_clk_src = { 809*6c6750b7STaniya Das .reg = 0x81c8, 810*6c6750b7STaniya Das .shift = 0, 811*6c6750b7STaniya Das .width = 4, 812*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 813*6c6750b7STaniya Das .name = "disp_cc_mdss_byte1_div_clk_src", 814*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 815*6c6750b7STaniya Das &disp_cc_mdss_byte1_clk_src.clkr.hw, 816*6c6750b7STaniya Das }, 817*6c6750b7STaniya Das .num_parents = 1, 818*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 819*6c6750b7STaniya Das .ops = &clk_regmap_div_ops, 820*6c6750b7STaniya Das }, 821*6c6750b7STaniya Das }; 822*6c6750b7STaniya Das 823*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx0_link_div_clk_src = { 824*6c6750b7STaniya Das .reg = 0x8214, 825*6c6750b7STaniya Das .shift = 0, 826*6c6750b7STaniya Das .width = 4, 827*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 828*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_link_div_clk_src", 829*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 830*6c6750b7STaniya Das &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 831*6c6750b7STaniya Das }, 832*6c6750b7STaniya Das .num_parents = 1, 833*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 834*6c6750b7STaniya Das .ops = &clk_regmap_div_ro_ops, 835*6c6750b7STaniya Das }, 836*6c6750b7STaniya Das }; 837*6c6750b7STaniya Das 838*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx1_link_div_clk_src = { 839*6c6750b7STaniya Das .reg = 0x82a8, 840*6c6750b7STaniya Das .shift = 0, 841*6c6750b7STaniya Das .width = 4, 842*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 843*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_link_div_clk_src", 844*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 845*6c6750b7STaniya Das &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 846*6c6750b7STaniya Das }, 847*6c6750b7STaniya Das .num_parents = 1, 848*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 849*6c6750b7STaniya Das .ops = &clk_regmap_div_ro_ops, 850*6c6750b7STaniya Das }, 851*6c6750b7STaniya Das }; 852*6c6750b7STaniya Das 853*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx2_link_div_clk_src = { 854*6c6750b7STaniya Das .reg = 0x82dc, 855*6c6750b7STaniya Das .shift = 0, 856*6c6750b7STaniya Das .width = 4, 857*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 858*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_link_div_clk_src", 859*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 860*6c6750b7STaniya Das &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 861*6c6750b7STaniya Das }, 862*6c6750b7STaniya Das .num_parents = 1, 863*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 864*6c6750b7STaniya Das .ops = &clk_regmap_div_ro_ops, 865*6c6750b7STaniya Das }, 866*6c6750b7STaniya Das }; 867*6c6750b7STaniya Das 868*6c6750b7STaniya Das static struct clk_regmap_div disp_cc_mdss_dptx3_link_div_clk_src = { 869*6c6750b7STaniya Das .reg = 0x8358, 870*6c6750b7STaniya Das .shift = 0, 871*6c6750b7STaniya Das .width = 4, 872*6c6750b7STaniya Das .clkr.hw.init = &(const struct clk_init_data) { 873*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_link_div_clk_src", 874*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 875*6c6750b7STaniya Das &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 876*6c6750b7STaniya Das }, 877*6c6750b7STaniya Das .num_parents = 1, 878*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 879*6c6750b7STaniya Das .ops = &clk_regmap_div_ro_ops, 880*6c6750b7STaniya Das }, 881*6c6750b7STaniya Das }; 882*6c6750b7STaniya Das 883*6c6750b7STaniya Das static struct clk_branch disp_cc_esync0_clk = { 884*6c6750b7STaniya Das .halt_reg = 0x80cc, 885*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 886*6c6750b7STaniya Das .clkr = { 887*6c6750b7STaniya Das .enable_reg = 0x80cc, 888*6c6750b7STaniya Das .enable_mask = BIT(0), 889*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 890*6c6750b7STaniya Das .name = "disp_cc_esync0_clk", 891*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 892*6c6750b7STaniya Das &disp_cc_esync0_clk_src.clkr.hw, 893*6c6750b7STaniya Das }, 894*6c6750b7STaniya Das .num_parents = 1, 895*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 896*6c6750b7STaniya Das .ops = &clk_branch2_ops, 897*6c6750b7STaniya Das }, 898*6c6750b7STaniya Das }, 899*6c6750b7STaniya Das }; 900*6c6750b7STaniya Das 901*6c6750b7STaniya Das static struct clk_branch disp_cc_esync1_clk = { 902*6c6750b7STaniya Das .halt_reg = 0x80d0, 903*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 904*6c6750b7STaniya Das .clkr = { 905*6c6750b7STaniya Das .enable_reg = 0x80d0, 906*6c6750b7STaniya Das .enable_mask = BIT(0), 907*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 908*6c6750b7STaniya Das .name = "disp_cc_esync1_clk", 909*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 910*6c6750b7STaniya Das &disp_cc_esync1_clk_src.clkr.hw, 911*6c6750b7STaniya Das }, 912*6c6750b7STaniya Das .num_parents = 1, 913*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 914*6c6750b7STaniya Das .ops = &clk_branch2_ops, 915*6c6750b7STaniya Das }, 916*6c6750b7STaniya Das }, 917*6c6750b7STaniya Das }; 918*6c6750b7STaniya Das 919*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_accu_shift_clk = { 920*6c6750b7STaniya Das .halt_reg = 0xe060, 921*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 922*6c6750b7STaniya Das .clkr = { 923*6c6750b7STaniya Das .enable_reg = 0xe060, 924*6c6750b7STaniya Das .enable_mask = BIT(0), 925*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 926*6c6750b7STaniya Das .name = "disp_cc_mdss_accu_shift_clk", 927*6c6750b7STaniya Das .ops = &clk_branch2_ops, 928*6c6750b7STaniya Das }, 929*6c6750b7STaniya Das }, 930*6c6750b7STaniya Das }; 931*6c6750b7STaniya Das 932*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb1_clk = { 933*6c6750b7STaniya Das .halt_reg = 0xa028, 934*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 935*6c6750b7STaniya Das .clkr = { 936*6c6750b7STaniya Das .enable_reg = 0xa028, 937*6c6750b7STaniya Das .enable_mask = BIT(0), 938*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 939*6c6750b7STaniya Das .name = "disp_cc_mdss_ahb1_clk", 940*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 941*6c6750b7STaniya Das &disp_cc_mdss_ahb_clk_src.clkr.hw, 942*6c6750b7STaniya Das }, 943*6c6750b7STaniya Das .num_parents = 1, 944*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 945*6c6750b7STaniya Das .ops = &clk_branch2_ops, 946*6c6750b7STaniya Das }, 947*6c6750b7STaniya Das }, 948*6c6750b7STaniya Das }; 949*6c6750b7STaniya Das 950*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb_clk = { 951*6c6750b7STaniya Das .halt_reg = 0x80c4, 952*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 953*6c6750b7STaniya Das .clkr = { 954*6c6750b7STaniya Das .enable_reg = 0x80c4, 955*6c6750b7STaniya Das .enable_mask = BIT(0), 956*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 957*6c6750b7STaniya Das .name = "disp_cc_mdss_ahb_clk", 958*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 959*6c6750b7STaniya Das &disp_cc_mdss_ahb_clk_src.clkr.hw, 960*6c6750b7STaniya Das }, 961*6c6750b7STaniya Das .num_parents = 1, 962*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 963*6c6750b7STaniya Das .ops = &clk_branch2_ops, 964*6c6750b7STaniya Das }, 965*6c6750b7STaniya Das }, 966*6c6750b7STaniya Das }; 967*6c6750b7STaniya Das 968*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_ahb_swi_clk = { 969*6c6750b7STaniya Das .halt_reg = 0x80c0, 970*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 971*6c6750b7STaniya Das .clkr = { 972*6c6750b7STaniya Das .enable_reg = 0x80c0, 973*6c6750b7STaniya Das .enable_mask = BIT(0), 974*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 975*6c6750b7STaniya Das .name = "disp_cc_mdss_ahb_swi_clk", 976*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 977*6c6750b7STaniya Das &disp_cc_mdss_ahb_swi_div_clk_src.clkr.hw, 978*6c6750b7STaniya Das }, 979*6c6750b7STaniya Das .num_parents = 1, 980*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 981*6c6750b7STaniya Das .ops = &clk_branch2_ops, 982*6c6750b7STaniya Das }, 983*6c6750b7STaniya Das }, 984*6c6750b7STaniya Das }; 985*6c6750b7STaniya Das 986*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte0_clk = { 987*6c6750b7STaniya Das .halt_reg = 0x8044, 988*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 989*6c6750b7STaniya Das .clkr = { 990*6c6750b7STaniya Das .enable_reg = 0x8044, 991*6c6750b7STaniya Das .enable_mask = BIT(0), 992*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 993*6c6750b7STaniya Das .name = "disp_cc_mdss_byte0_clk", 994*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 995*6c6750b7STaniya Das &disp_cc_mdss_byte0_clk_src.clkr.hw, 996*6c6750b7STaniya Das }, 997*6c6750b7STaniya Das .num_parents = 1, 998*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 999*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1000*6c6750b7STaniya Das }, 1001*6c6750b7STaniya Das }, 1002*6c6750b7STaniya Das }; 1003*6c6750b7STaniya Das 1004*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte0_intf_clk = { 1005*6c6750b7STaniya Das .halt_reg = 0x8048, 1006*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1007*6c6750b7STaniya Das .clkr = { 1008*6c6750b7STaniya Das .enable_reg = 0x8048, 1009*6c6750b7STaniya Das .enable_mask = BIT(0), 1010*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1011*6c6750b7STaniya Das .name = "disp_cc_mdss_byte0_intf_clk", 1012*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1013*6c6750b7STaniya Das &disp_cc_mdss_byte0_div_clk_src.clkr.hw, 1014*6c6750b7STaniya Das }, 1015*6c6750b7STaniya Das .num_parents = 1, 1016*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1017*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1018*6c6750b7STaniya Das }, 1019*6c6750b7STaniya Das }, 1020*6c6750b7STaniya Das }; 1021*6c6750b7STaniya Das 1022*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte1_clk = { 1023*6c6750b7STaniya Das .halt_reg = 0x804c, 1024*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1025*6c6750b7STaniya Das .clkr = { 1026*6c6750b7STaniya Das .enable_reg = 0x804c, 1027*6c6750b7STaniya Das .enable_mask = BIT(0), 1028*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1029*6c6750b7STaniya Das .name = "disp_cc_mdss_byte1_clk", 1030*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1031*6c6750b7STaniya Das &disp_cc_mdss_byte1_clk_src.clkr.hw, 1032*6c6750b7STaniya Das }, 1033*6c6750b7STaniya Das .num_parents = 1, 1034*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1035*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1036*6c6750b7STaniya Das }, 1037*6c6750b7STaniya Das }, 1038*6c6750b7STaniya Das }; 1039*6c6750b7STaniya Das 1040*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_byte1_intf_clk = { 1041*6c6750b7STaniya Das .halt_reg = 0x8050, 1042*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1043*6c6750b7STaniya Das .clkr = { 1044*6c6750b7STaniya Das .enable_reg = 0x8050, 1045*6c6750b7STaniya Das .enable_mask = BIT(0), 1046*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1047*6c6750b7STaniya Das .name = "disp_cc_mdss_byte1_intf_clk", 1048*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1049*6c6750b7STaniya Das &disp_cc_mdss_byte1_div_clk_src.clkr.hw, 1050*6c6750b7STaniya Das }, 1051*6c6750b7STaniya Das .num_parents = 1, 1052*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1053*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1054*6c6750b7STaniya Das }, 1055*6c6750b7STaniya Das }, 1056*6c6750b7STaniya Das }; 1057*6c6750b7STaniya Das 1058*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_aux_clk = { 1059*6c6750b7STaniya Das .halt_reg = 0x8074, 1060*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1061*6c6750b7STaniya Das .clkr = { 1062*6c6750b7STaniya Das .enable_reg = 0x8074, 1063*6c6750b7STaniya Das .enable_mask = BIT(0), 1064*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1065*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_aux_clk", 1066*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1067*6c6750b7STaniya Das &disp_cc_mdss_dptx0_aux_clk_src.clkr.hw, 1068*6c6750b7STaniya Das }, 1069*6c6750b7STaniya Das .num_parents = 1, 1070*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1071*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1072*6c6750b7STaniya Das }, 1073*6c6750b7STaniya Das }, 1074*6c6750b7STaniya Das }; 1075*6c6750b7STaniya Das 1076*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_crypto_clk = { 1077*6c6750b7STaniya Das .halt_reg = 0x8068, 1078*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1079*6c6750b7STaniya Das .clkr = { 1080*6c6750b7STaniya Das .enable_reg = 0x8068, 1081*6c6750b7STaniya Das .enable_mask = BIT(0), 1082*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1083*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_crypto_clk", 1084*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1085*6c6750b7STaniya Das &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 1086*6c6750b7STaniya Das }, 1087*6c6750b7STaniya Das .num_parents = 1, 1088*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1089*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1090*6c6750b7STaniya Das }, 1091*6c6750b7STaniya Das }, 1092*6c6750b7STaniya Das }; 1093*6c6750b7STaniya Das 1094*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_link_clk = { 1095*6c6750b7STaniya Das .halt_reg = 0x805c, 1096*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1097*6c6750b7STaniya Das .clkr = { 1098*6c6750b7STaniya Das .enable_reg = 0x805c, 1099*6c6750b7STaniya Das .enable_mask = BIT(0), 1100*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1101*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_link_clk", 1102*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1103*6c6750b7STaniya Das &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 1104*6c6750b7STaniya Das }, 1105*6c6750b7STaniya Das .num_parents = 1, 1106*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1107*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1108*6c6750b7STaniya Das }, 1109*6c6750b7STaniya Das }, 1110*6c6750b7STaniya Das }; 1111*6c6750b7STaniya Das 1112*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_link_intf_clk = { 1113*6c6750b7STaniya Das .halt_reg = 0x8064, 1114*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1115*6c6750b7STaniya Das .clkr = { 1116*6c6750b7STaniya Das .enable_reg = 0x8064, 1117*6c6750b7STaniya Das .enable_mask = BIT(0), 1118*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1119*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_link_intf_clk", 1120*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1121*6c6750b7STaniya Das &disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1122*6c6750b7STaniya Das }, 1123*6c6750b7STaniya Das .num_parents = 1, 1124*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1125*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1126*6c6750b7STaniya Das }, 1127*6c6750b7STaniya Das }, 1128*6c6750b7STaniya Das }; 1129*6c6750b7STaniya Das 1130*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_pixel0_clk = { 1131*6c6750b7STaniya Das .halt_reg = 0x806c, 1132*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1133*6c6750b7STaniya Das .clkr = { 1134*6c6750b7STaniya Das .enable_reg = 0x806c, 1135*6c6750b7STaniya Das .enable_mask = BIT(0), 1136*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1137*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_pixel0_clk", 1138*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1139*6c6750b7STaniya Das &disp_cc_mdss_dptx0_pixel0_clk_src.clkr.hw, 1140*6c6750b7STaniya Das }, 1141*6c6750b7STaniya Das .num_parents = 1, 1142*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1143*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1144*6c6750b7STaniya Das }, 1145*6c6750b7STaniya Das }, 1146*6c6750b7STaniya Das }; 1147*6c6750b7STaniya Das 1148*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_pixel1_clk = { 1149*6c6750b7STaniya Das .halt_reg = 0x8070, 1150*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1151*6c6750b7STaniya Das .clkr = { 1152*6c6750b7STaniya Das .enable_reg = 0x8070, 1153*6c6750b7STaniya Das .enable_mask = BIT(0), 1154*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1155*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_pixel1_clk", 1156*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1157*6c6750b7STaniya Das &disp_cc_mdss_dptx0_pixel1_clk_src.clkr.hw, 1158*6c6750b7STaniya Das }, 1159*6c6750b7STaniya Das .num_parents = 1, 1160*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1161*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1162*6c6750b7STaniya Das }, 1163*6c6750b7STaniya Das }, 1164*6c6750b7STaniya Das }; 1165*6c6750b7STaniya Das 1166*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx0_usb_router_link_intf_clk = { 1167*6c6750b7STaniya Das .halt_reg = 0x8060, 1168*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1169*6c6750b7STaniya Das .clkr = { 1170*6c6750b7STaniya Das .enable_reg = 0x8060, 1171*6c6750b7STaniya Das .enable_mask = BIT(0), 1172*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1173*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx0_usb_router_link_intf_clk", 1174*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1175*6c6750b7STaniya Das &disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1176*6c6750b7STaniya Das }, 1177*6c6750b7STaniya Das .num_parents = 1, 1178*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1179*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1180*6c6750b7STaniya Das }, 1181*6c6750b7STaniya Das }, 1182*6c6750b7STaniya Das }; 1183*6c6750b7STaniya Das 1184*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_aux_clk = { 1185*6c6750b7STaniya Das .halt_reg = 0x8090, 1186*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1187*6c6750b7STaniya Das .clkr = { 1188*6c6750b7STaniya Das .enable_reg = 0x8090, 1189*6c6750b7STaniya Das .enable_mask = BIT(0), 1190*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1191*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_aux_clk", 1192*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1193*6c6750b7STaniya Das &disp_cc_mdss_dptx1_aux_clk_src.clkr.hw, 1194*6c6750b7STaniya Das }, 1195*6c6750b7STaniya Das .num_parents = 1, 1196*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1197*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1198*6c6750b7STaniya Das }, 1199*6c6750b7STaniya Das }, 1200*6c6750b7STaniya Das }; 1201*6c6750b7STaniya Das 1202*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_crypto_clk = { 1203*6c6750b7STaniya Das .halt_reg = 0x808c, 1204*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1205*6c6750b7STaniya Das .clkr = { 1206*6c6750b7STaniya Das .enable_reg = 0x808c, 1207*6c6750b7STaniya Das .enable_mask = BIT(0), 1208*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1209*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_crypto_clk", 1210*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1211*6c6750b7STaniya Das &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 1212*6c6750b7STaniya Das }, 1213*6c6750b7STaniya Das .num_parents = 1, 1214*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1215*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1216*6c6750b7STaniya Das }, 1217*6c6750b7STaniya Das }, 1218*6c6750b7STaniya Das }; 1219*6c6750b7STaniya Das 1220*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_link_clk = { 1221*6c6750b7STaniya Das .halt_reg = 0x8080, 1222*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1223*6c6750b7STaniya Das .clkr = { 1224*6c6750b7STaniya Das .enable_reg = 0x8080, 1225*6c6750b7STaniya Das .enable_mask = BIT(0), 1226*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1227*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_link_clk", 1228*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1229*6c6750b7STaniya Das &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 1230*6c6750b7STaniya Das }, 1231*6c6750b7STaniya Das .num_parents = 1, 1232*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1233*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1234*6c6750b7STaniya Das }, 1235*6c6750b7STaniya Das }, 1236*6c6750b7STaniya Das }; 1237*6c6750b7STaniya Das 1238*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_link_intf_clk = { 1239*6c6750b7STaniya Das .halt_reg = 0x8088, 1240*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1241*6c6750b7STaniya Das .clkr = { 1242*6c6750b7STaniya Das .enable_reg = 0x8088, 1243*6c6750b7STaniya Das .enable_mask = BIT(0), 1244*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1245*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_link_intf_clk", 1246*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1247*6c6750b7STaniya Das &disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1248*6c6750b7STaniya Das }, 1249*6c6750b7STaniya Das .num_parents = 1, 1250*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1251*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1252*6c6750b7STaniya Das }, 1253*6c6750b7STaniya Das }, 1254*6c6750b7STaniya Das }; 1255*6c6750b7STaniya Das 1256*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_pixel0_clk = { 1257*6c6750b7STaniya Das .halt_reg = 0x8078, 1258*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1259*6c6750b7STaniya Das .clkr = { 1260*6c6750b7STaniya Das .enable_reg = 0x8078, 1261*6c6750b7STaniya Das .enable_mask = BIT(0), 1262*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1263*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_pixel0_clk", 1264*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1265*6c6750b7STaniya Das &disp_cc_mdss_dptx1_pixel0_clk_src.clkr.hw, 1266*6c6750b7STaniya Das }, 1267*6c6750b7STaniya Das .num_parents = 1, 1268*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1269*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1270*6c6750b7STaniya Das }, 1271*6c6750b7STaniya Das }, 1272*6c6750b7STaniya Das }; 1273*6c6750b7STaniya Das 1274*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_pixel1_clk = { 1275*6c6750b7STaniya Das .halt_reg = 0x807c, 1276*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1277*6c6750b7STaniya Das .clkr = { 1278*6c6750b7STaniya Das .enable_reg = 0x807c, 1279*6c6750b7STaniya Das .enable_mask = BIT(0), 1280*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1281*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_pixel1_clk", 1282*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1283*6c6750b7STaniya Das &disp_cc_mdss_dptx1_pixel1_clk_src.clkr.hw, 1284*6c6750b7STaniya Das }, 1285*6c6750b7STaniya Das .num_parents = 1, 1286*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1287*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1288*6c6750b7STaniya Das }, 1289*6c6750b7STaniya Das }, 1290*6c6750b7STaniya Das }; 1291*6c6750b7STaniya Das 1292*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx1_usb_router_link_intf_clk = { 1293*6c6750b7STaniya Das .halt_reg = 0x8084, 1294*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1295*6c6750b7STaniya Das .clkr = { 1296*6c6750b7STaniya Das .enable_reg = 0x8084, 1297*6c6750b7STaniya Das .enable_mask = BIT(0), 1298*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1299*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx1_usb_router_link_intf_clk", 1300*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1301*6c6750b7STaniya Das &disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1302*6c6750b7STaniya Das }, 1303*6c6750b7STaniya Das .num_parents = 1, 1304*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1305*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1306*6c6750b7STaniya Das }, 1307*6c6750b7STaniya Das }, 1308*6c6750b7STaniya Das }; 1309*6c6750b7STaniya Das 1310*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_aux_clk = { 1311*6c6750b7STaniya Das .halt_reg = 0x80a8, 1312*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1313*6c6750b7STaniya Das .clkr = { 1314*6c6750b7STaniya Das .enable_reg = 0x80a8, 1315*6c6750b7STaniya Das .enable_mask = BIT(0), 1316*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1317*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_aux_clk", 1318*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1319*6c6750b7STaniya Das &disp_cc_mdss_dptx2_aux_clk_src.clkr.hw, 1320*6c6750b7STaniya Das }, 1321*6c6750b7STaniya Das .num_parents = 1, 1322*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1323*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1324*6c6750b7STaniya Das }, 1325*6c6750b7STaniya Das }, 1326*6c6750b7STaniya Das }; 1327*6c6750b7STaniya Das 1328*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_crypto_clk = { 1329*6c6750b7STaniya Das .halt_reg = 0x80a4, 1330*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1331*6c6750b7STaniya Das .clkr = { 1332*6c6750b7STaniya Das .enable_reg = 0x80a4, 1333*6c6750b7STaniya Das .enable_mask = BIT(0), 1334*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1335*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_crypto_clk", 1336*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1337*6c6750b7STaniya Das &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 1338*6c6750b7STaniya Das }, 1339*6c6750b7STaniya Das .num_parents = 1, 1340*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1341*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1342*6c6750b7STaniya Das }, 1343*6c6750b7STaniya Das }, 1344*6c6750b7STaniya Das }; 1345*6c6750b7STaniya Das 1346*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_link_clk = { 1347*6c6750b7STaniya Das .halt_reg = 0x809c, 1348*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1349*6c6750b7STaniya Das .clkr = { 1350*6c6750b7STaniya Das .enable_reg = 0x809c, 1351*6c6750b7STaniya Das .enable_mask = BIT(0), 1352*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1353*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_link_clk", 1354*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1355*6c6750b7STaniya Das &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 1356*6c6750b7STaniya Das }, 1357*6c6750b7STaniya Das .num_parents = 1, 1358*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1359*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1360*6c6750b7STaniya Das }, 1361*6c6750b7STaniya Das }, 1362*6c6750b7STaniya Das }; 1363*6c6750b7STaniya Das 1364*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_link_intf_clk = { 1365*6c6750b7STaniya Das .halt_reg = 0x80a0, 1366*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1367*6c6750b7STaniya Das .clkr = { 1368*6c6750b7STaniya Das .enable_reg = 0x80a0, 1369*6c6750b7STaniya Das .enable_mask = BIT(0), 1370*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1371*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_link_intf_clk", 1372*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1373*6c6750b7STaniya Das &disp_cc_mdss_dptx2_link_div_clk_src.clkr.hw, 1374*6c6750b7STaniya Das }, 1375*6c6750b7STaniya Das .num_parents = 1, 1376*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1377*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1378*6c6750b7STaniya Das }, 1379*6c6750b7STaniya Das }, 1380*6c6750b7STaniya Das }; 1381*6c6750b7STaniya Das 1382*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_pixel0_clk = { 1383*6c6750b7STaniya Das .halt_reg = 0x8094, 1384*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1385*6c6750b7STaniya Das .clkr = { 1386*6c6750b7STaniya Das .enable_reg = 0x8094, 1387*6c6750b7STaniya Das .enable_mask = BIT(0), 1388*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1389*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_pixel0_clk", 1390*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1391*6c6750b7STaniya Das &disp_cc_mdss_dptx2_pixel0_clk_src.clkr.hw, 1392*6c6750b7STaniya Das }, 1393*6c6750b7STaniya Das .num_parents = 1, 1394*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1395*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1396*6c6750b7STaniya Das }, 1397*6c6750b7STaniya Das }, 1398*6c6750b7STaniya Das }; 1399*6c6750b7STaniya Das 1400*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx2_pixel1_clk = { 1401*6c6750b7STaniya Das .halt_reg = 0x8098, 1402*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1403*6c6750b7STaniya Das .clkr = { 1404*6c6750b7STaniya Das .enable_reg = 0x8098, 1405*6c6750b7STaniya Das .enable_mask = BIT(0), 1406*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1407*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx2_pixel1_clk", 1408*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1409*6c6750b7STaniya Das &disp_cc_mdss_dptx2_pixel1_clk_src.clkr.hw, 1410*6c6750b7STaniya Das }, 1411*6c6750b7STaniya Das .num_parents = 1, 1412*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1413*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1414*6c6750b7STaniya Das }, 1415*6c6750b7STaniya Das }, 1416*6c6750b7STaniya Das }; 1417*6c6750b7STaniya Das 1418*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_aux_clk = { 1419*6c6750b7STaniya Das .halt_reg = 0x80b8, 1420*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1421*6c6750b7STaniya Das .clkr = { 1422*6c6750b7STaniya Das .enable_reg = 0x80b8, 1423*6c6750b7STaniya Das .enable_mask = BIT(0), 1424*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1425*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_aux_clk", 1426*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1427*6c6750b7STaniya Das &disp_cc_mdss_dptx3_aux_clk_src.clkr.hw, 1428*6c6750b7STaniya Das }, 1429*6c6750b7STaniya Das .num_parents = 1, 1430*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1431*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1432*6c6750b7STaniya Das }, 1433*6c6750b7STaniya Das }, 1434*6c6750b7STaniya Das }; 1435*6c6750b7STaniya Das 1436*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_crypto_clk = { 1437*6c6750b7STaniya Das .halt_reg = 0x80bc, 1438*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1439*6c6750b7STaniya Das .clkr = { 1440*6c6750b7STaniya Das .enable_reg = 0x80bc, 1441*6c6750b7STaniya Das .enable_mask = BIT(0), 1442*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1443*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_crypto_clk", 1444*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1445*6c6750b7STaniya Das &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 1446*6c6750b7STaniya Das }, 1447*6c6750b7STaniya Das .num_parents = 1, 1448*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1449*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1450*6c6750b7STaniya Das }, 1451*6c6750b7STaniya Das }, 1452*6c6750b7STaniya Das }; 1453*6c6750b7STaniya Das 1454*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_link_clk = { 1455*6c6750b7STaniya Das .halt_reg = 0x80b0, 1456*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1457*6c6750b7STaniya Das .clkr = { 1458*6c6750b7STaniya Das .enable_reg = 0x80b0, 1459*6c6750b7STaniya Das .enable_mask = BIT(0), 1460*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1461*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_link_clk", 1462*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1463*6c6750b7STaniya Das &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 1464*6c6750b7STaniya Das }, 1465*6c6750b7STaniya Das .num_parents = 1, 1466*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1467*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1468*6c6750b7STaniya Das }, 1469*6c6750b7STaniya Das }, 1470*6c6750b7STaniya Das }; 1471*6c6750b7STaniya Das 1472*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_link_intf_clk = { 1473*6c6750b7STaniya Das .halt_reg = 0x80b4, 1474*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1475*6c6750b7STaniya Das .clkr = { 1476*6c6750b7STaniya Das .enable_reg = 0x80b4, 1477*6c6750b7STaniya Das .enable_mask = BIT(0), 1478*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1479*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_link_intf_clk", 1480*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1481*6c6750b7STaniya Das &disp_cc_mdss_dptx3_link_div_clk_src.clkr.hw, 1482*6c6750b7STaniya Das }, 1483*6c6750b7STaniya Das .num_parents = 1, 1484*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1485*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1486*6c6750b7STaniya Das }, 1487*6c6750b7STaniya Das }, 1488*6c6750b7STaniya Das }; 1489*6c6750b7STaniya Das 1490*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_dptx3_pixel0_clk = { 1491*6c6750b7STaniya Das .halt_reg = 0x80ac, 1492*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1493*6c6750b7STaniya Das .clkr = { 1494*6c6750b7STaniya Das .enable_reg = 0x80ac, 1495*6c6750b7STaniya Das .enable_mask = BIT(0), 1496*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1497*6c6750b7STaniya Das .name = "disp_cc_mdss_dptx3_pixel0_clk", 1498*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1499*6c6750b7STaniya Das &disp_cc_mdss_dptx3_pixel0_clk_src.clkr.hw, 1500*6c6750b7STaniya Das }, 1501*6c6750b7STaniya Das .num_parents = 1, 1502*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1503*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1504*6c6750b7STaniya Das }, 1505*6c6750b7STaniya Das }, 1506*6c6750b7STaniya Das }; 1507*6c6750b7STaniya Das 1508*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_esc0_clk = { 1509*6c6750b7STaniya Das .halt_reg = 0x8054, 1510*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1511*6c6750b7STaniya Das .clkr = { 1512*6c6750b7STaniya Das .enable_reg = 0x8054, 1513*6c6750b7STaniya Das .enable_mask = BIT(0), 1514*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1515*6c6750b7STaniya Das .name = "disp_cc_mdss_esc0_clk", 1516*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1517*6c6750b7STaniya Das &disp_cc_mdss_esc0_clk_src.clkr.hw, 1518*6c6750b7STaniya Das }, 1519*6c6750b7STaniya Das .num_parents = 1, 1520*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1521*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1522*6c6750b7STaniya Das }, 1523*6c6750b7STaniya Das }, 1524*6c6750b7STaniya Das }; 1525*6c6750b7STaniya Das 1526*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_esc1_clk = { 1527*6c6750b7STaniya Das .halt_reg = 0x8058, 1528*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1529*6c6750b7STaniya Das .clkr = { 1530*6c6750b7STaniya Das .enable_reg = 0x8058, 1531*6c6750b7STaniya Das .enable_mask = BIT(0), 1532*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1533*6c6750b7STaniya Das .name = "disp_cc_mdss_esc1_clk", 1534*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1535*6c6750b7STaniya Das &disp_cc_mdss_esc1_clk_src.clkr.hw, 1536*6c6750b7STaniya Das }, 1537*6c6750b7STaniya Das .num_parents = 1, 1538*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1539*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1540*6c6750b7STaniya Das }, 1541*6c6750b7STaniya Das }, 1542*6c6750b7STaniya Das }; 1543*6c6750b7STaniya Das 1544*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp1_clk = { 1545*6c6750b7STaniya Das .halt_reg = 0xa004, 1546*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1547*6c6750b7STaniya Das .clkr = { 1548*6c6750b7STaniya Das .enable_reg = 0xa004, 1549*6c6750b7STaniya Das .enable_mask = BIT(0), 1550*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1551*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp1_clk", 1552*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1553*6c6750b7STaniya Das &disp_cc_mdss_mdp_clk_src.clkr.hw, 1554*6c6750b7STaniya Das }, 1555*6c6750b7STaniya Das .num_parents = 1, 1556*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1557*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1558*6c6750b7STaniya Das }, 1559*6c6750b7STaniya Das }, 1560*6c6750b7STaniya Das }; 1561*6c6750b7STaniya Das 1562*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_clk = { 1563*6c6750b7STaniya Das .halt_reg = 0x8010, 1564*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1565*6c6750b7STaniya Das .clkr = { 1566*6c6750b7STaniya Das .enable_reg = 0x8010, 1567*6c6750b7STaniya Das .enable_mask = BIT(0), 1568*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1569*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp_clk", 1570*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1571*6c6750b7STaniya Das &disp_cc_mdss_mdp_clk_src.clkr.hw, 1572*6c6750b7STaniya Das }, 1573*6c6750b7STaniya Das .num_parents = 1, 1574*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1575*6c6750b7STaniya Das .ops = &clk_branch2_aon_ops, 1576*6c6750b7STaniya Das }, 1577*6c6750b7STaniya Das }, 1578*6c6750b7STaniya Das }; 1579*6c6750b7STaniya Das 1580*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_lut1_clk = { 1581*6c6750b7STaniya Das .halt_reg = 0xa014, 1582*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1583*6c6750b7STaniya Das .clkr = { 1584*6c6750b7STaniya Das .enable_reg = 0xa014, 1585*6c6750b7STaniya Das .enable_mask = BIT(0), 1586*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1587*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp_lut1_clk", 1588*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1589*6c6750b7STaniya Das &disp_cc_mdss_mdp_clk_src.clkr.hw, 1590*6c6750b7STaniya Das }, 1591*6c6750b7STaniya Das .num_parents = 1, 1592*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1593*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1594*6c6750b7STaniya Das }, 1595*6c6750b7STaniya Das }, 1596*6c6750b7STaniya Das }; 1597*6c6750b7STaniya Das 1598*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_lut_clk = { 1599*6c6750b7STaniya Das .halt_reg = 0x8020, 1600*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1601*6c6750b7STaniya Das .clkr = { 1602*6c6750b7STaniya Das .enable_reg = 0x8020, 1603*6c6750b7STaniya Das .enable_mask = BIT(0), 1604*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1605*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp_lut_clk", 1606*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1607*6c6750b7STaniya Das &disp_cc_mdss_mdp_clk_src.clkr.hw, 1608*6c6750b7STaniya Das }, 1609*6c6750b7STaniya Das .num_parents = 1, 1610*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1611*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1612*6c6750b7STaniya Das }, 1613*6c6750b7STaniya Das }, 1614*6c6750b7STaniya Das }; 1615*6c6750b7STaniya Das 1616*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_mdp_ss_ip_clk = { 1617*6c6750b7STaniya Das .halt_reg = 0x8030, 1618*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1619*6c6750b7STaniya Das .clkr = { 1620*6c6750b7STaniya Das .enable_reg = 0x8030, 1621*6c6750b7STaniya Das .enable_mask = BIT(0), 1622*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1623*6c6750b7STaniya Das .name = "disp_cc_mdss_mdp_ss_ip_clk", 1624*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1625*6c6750b7STaniya Das &disp_cc_mdss_mdp_clk_src.clkr.hw, 1626*6c6750b7STaniya Das }, 1627*6c6750b7STaniya Das .num_parents = 1, 1628*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1629*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1630*6c6750b7STaniya Das }, 1631*6c6750b7STaniya Das }, 1632*6c6750b7STaniya Das }; 1633*6c6750b7STaniya Das 1634*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_non_gdsc_ahb_clk = { 1635*6c6750b7STaniya Das .halt_reg = 0xc004, 1636*6c6750b7STaniya Das .halt_check = BRANCH_HALT_VOTED, 1637*6c6750b7STaniya Das .clkr = { 1638*6c6750b7STaniya Das .enable_reg = 0xc004, 1639*6c6750b7STaniya Das .enable_mask = BIT(0), 1640*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1641*6c6750b7STaniya Das .name = "disp_cc_mdss_non_gdsc_ahb_clk", 1642*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1643*6c6750b7STaniya Das &disp_cc_mdss_ahb_clk_src.clkr.hw, 1644*6c6750b7STaniya Das }, 1645*6c6750b7STaniya Das .num_parents = 1, 1646*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1647*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1648*6c6750b7STaniya Das }, 1649*6c6750b7STaniya Das }, 1650*6c6750b7STaniya Das }; 1651*6c6750b7STaniya Das 1652*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk0_clk = { 1653*6c6750b7STaniya Das .halt_reg = 0x8004, 1654*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1655*6c6750b7STaniya Das .clkr = { 1656*6c6750b7STaniya Das .enable_reg = 0x8004, 1657*6c6750b7STaniya Das .enable_mask = BIT(0), 1658*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1659*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk0_clk", 1660*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1661*6c6750b7STaniya Das &disp_cc_mdss_pclk0_clk_src.clkr.hw, 1662*6c6750b7STaniya Das }, 1663*6c6750b7STaniya Das .num_parents = 1, 1664*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1665*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1666*6c6750b7STaniya Das }, 1667*6c6750b7STaniya Das }, 1668*6c6750b7STaniya Das }; 1669*6c6750b7STaniya Das 1670*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk1_clk = { 1671*6c6750b7STaniya Das .halt_reg = 0x8008, 1672*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1673*6c6750b7STaniya Das .clkr = { 1674*6c6750b7STaniya Das .enable_reg = 0x8008, 1675*6c6750b7STaniya Das .enable_mask = BIT(0), 1676*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1677*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk1_clk", 1678*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1679*6c6750b7STaniya Das &disp_cc_mdss_pclk1_clk_src.clkr.hw, 1680*6c6750b7STaniya Das }, 1681*6c6750b7STaniya Das .num_parents = 1, 1682*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1683*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1684*6c6750b7STaniya Das }, 1685*6c6750b7STaniya Das }, 1686*6c6750b7STaniya Das }; 1687*6c6750b7STaniya Das 1688*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_pclk2_clk = { 1689*6c6750b7STaniya Das .halt_reg = 0x800c, 1690*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1691*6c6750b7STaniya Das .clkr = { 1692*6c6750b7STaniya Das .enable_reg = 0x800c, 1693*6c6750b7STaniya Das .enable_mask = BIT(0), 1694*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1695*6c6750b7STaniya Das .name = "disp_cc_mdss_pclk2_clk", 1696*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1697*6c6750b7STaniya Das &disp_cc_mdss_pclk2_clk_src.clkr.hw, 1698*6c6750b7STaniya Das }, 1699*6c6750b7STaniya Das .num_parents = 1, 1700*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1701*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1702*6c6750b7STaniya Das }, 1703*6c6750b7STaniya Das }, 1704*6c6750b7STaniya Das }; 1705*6c6750b7STaniya Das 1706*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_vsync1_clk = { 1707*6c6750b7STaniya Das .halt_reg = 0xa024, 1708*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1709*6c6750b7STaniya Das .clkr = { 1710*6c6750b7STaniya Das .enable_reg = 0xa024, 1711*6c6750b7STaniya Das .enable_mask = BIT(0), 1712*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1713*6c6750b7STaniya Das .name = "disp_cc_mdss_vsync1_clk", 1714*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1715*6c6750b7STaniya Das &disp_cc_mdss_vsync_clk_src.clkr.hw, 1716*6c6750b7STaniya Das }, 1717*6c6750b7STaniya Das .num_parents = 1, 1718*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1719*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1720*6c6750b7STaniya Das }, 1721*6c6750b7STaniya Das }, 1722*6c6750b7STaniya Das }; 1723*6c6750b7STaniya Das 1724*6c6750b7STaniya Das static struct clk_branch disp_cc_mdss_vsync_clk = { 1725*6c6750b7STaniya Das .halt_reg = 0x8040, 1726*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1727*6c6750b7STaniya Das .clkr = { 1728*6c6750b7STaniya Das .enable_reg = 0x8040, 1729*6c6750b7STaniya Das .enable_mask = BIT(0), 1730*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1731*6c6750b7STaniya Das .name = "disp_cc_mdss_vsync_clk", 1732*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1733*6c6750b7STaniya Das &disp_cc_mdss_vsync_clk_src.clkr.hw, 1734*6c6750b7STaniya Das }, 1735*6c6750b7STaniya Das .num_parents = 1, 1736*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1737*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1738*6c6750b7STaniya Das }, 1739*6c6750b7STaniya Das }, 1740*6c6750b7STaniya Das }; 1741*6c6750b7STaniya Das 1742*6c6750b7STaniya Das static struct clk_branch disp_cc_osc_clk = { 1743*6c6750b7STaniya Das .halt_reg = 0x80c8, 1744*6c6750b7STaniya Das .halt_check = BRANCH_HALT, 1745*6c6750b7STaniya Das .clkr = { 1746*6c6750b7STaniya Das .enable_reg = 0x80c8, 1747*6c6750b7STaniya Das .enable_mask = BIT(0), 1748*6c6750b7STaniya Das .hw.init = &(const struct clk_init_data) { 1749*6c6750b7STaniya Das .name = "disp_cc_osc_clk", 1750*6c6750b7STaniya Das .parent_hws = (const struct clk_hw*[]) { 1751*6c6750b7STaniya Das &disp_cc_osc_clk_src.clkr.hw, 1752*6c6750b7STaniya Das }, 1753*6c6750b7STaniya Das .num_parents = 1, 1754*6c6750b7STaniya Das .flags = CLK_SET_RATE_PARENT, 1755*6c6750b7STaniya Das .ops = &clk_branch2_ops, 1756*6c6750b7STaniya Das }, 1757*6c6750b7STaniya Das }, 1758*6c6750b7STaniya Das }; 1759*6c6750b7STaniya Das 1760*6c6750b7STaniya Das static struct gdsc disp_cc_mdss_core_gdsc = { 1761*6c6750b7STaniya Das .gdscr = 0x9000, 1762*6c6750b7STaniya Das .en_rest_wait_val = 0x2, 1763*6c6750b7STaniya Das .en_few_wait_val = 0x2, 1764*6c6750b7STaniya Das .clk_dis_wait_val = 0xf, 1765*6c6750b7STaniya Das .pd = { 1766*6c6750b7STaniya Das .name = "disp_cc_mdss_core_gdsc", 1767*6c6750b7STaniya Das }, 1768*6c6750b7STaniya Das .pwrsts = PWRSTS_OFF_ON, 1769*6c6750b7STaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, 1770*6c6750b7STaniya Das }; 1771*6c6750b7STaniya Das 1772*6c6750b7STaniya Das static struct gdsc disp_cc_mdss_core_int2_gdsc = { 1773*6c6750b7STaniya Das .gdscr = 0xb000, 1774*6c6750b7STaniya Das .en_rest_wait_val = 0x2, 1775*6c6750b7STaniya Das .en_few_wait_val = 0x2, 1776*6c6750b7STaniya Das .clk_dis_wait_val = 0xf, 1777*6c6750b7STaniya Das .pd = { 1778*6c6750b7STaniya Das .name = "disp_cc_mdss_core_int2_gdsc", 1779*6c6750b7STaniya Das }, 1780*6c6750b7STaniya Das .pwrsts = PWRSTS_OFF_ON, 1781*6c6750b7STaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, 1782*6c6750b7STaniya Das }; 1783*6c6750b7STaniya Das 1784*6c6750b7STaniya Das static struct clk_regmap *disp_cc_kaanapali_clocks[] = { 1785*6c6750b7STaniya Das [DISP_CC_ESYNC0_CLK] = &disp_cc_esync0_clk.clkr, 1786*6c6750b7STaniya Das [DISP_CC_ESYNC0_CLK_SRC] = &disp_cc_esync0_clk_src.clkr, 1787*6c6750b7STaniya Das [DISP_CC_ESYNC1_CLK] = &disp_cc_esync1_clk.clkr, 1788*6c6750b7STaniya Das [DISP_CC_ESYNC1_CLK_SRC] = &disp_cc_esync1_clk_src.clkr, 1789*6c6750b7STaniya Das [DISP_CC_MDSS_ACCU_SHIFT_CLK] = &disp_cc_mdss_accu_shift_clk.clkr, 1790*6c6750b7STaniya Das [DISP_CC_MDSS_AHB1_CLK] = &disp_cc_mdss_ahb1_clk.clkr, 1791*6c6750b7STaniya Das [DISP_CC_MDSS_AHB_CLK] = &disp_cc_mdss_ahb_clk.clkr, 1792*6c6750b7STaniya Das [DISP_CC_MDSS_AHB_CLK_SRC] = &disp_cc_mdss_ahb_clk_src.clkr, 1793*6c6750b7STaniya Das [DISP_CC_MDSS_AHB_SWI_CLK] = &disp_cc_mdss_ahb_swi_clk.clkr, 1794*6c6750b7STaniya Das [DISP_CC_MDSS_AHB_SWI_DIV_CLK_SRC] = &disp_cc_mdss_ahb_swi_div_clk_src.clkr, 1795*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE0_CLK] = &disp_cc_mdss_byte0_clk.clkr, 1796*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp_cc_mdss_byte0_clk_src.clkr, 1797*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp_cc_mdss_byte0_div_clk_src.clkr, 1798*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp_cc_mdss_byte0_intf_clk.clkr, 1799*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE1_CLK] = &disp_cc_mdss_byte1_clk.clkr, 1800*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp_cc_mdss_byte1_clk_src.clkr, 1801*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp_cc_mdss_byte1_div_clk_src.clkr, 1802*6c6750b7STaniya Das [DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp_cc_mdss_byte1_intf_clk.clkr, 1803*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp_cc_mdss_dptx0_aux_clk.clkr, 1804*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp_cc_mdss_dptx0_aux_clk_src.clkr, 1805*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_CRYPTO_CLK] = &disp_cc_mdss_dptx0_crypto_clk.clkr, 1806*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp_cc_mdss_dptx0_link_clk.clkr, 1807*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp_cc_mdss_dptx0_link_clk_src.clkr, 1808*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx0_link_div_clk_src.clkr, 1809*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp_cc_mdss_dptx0_link_intf_clk.clkr, 1810*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp_cc_mdss_dptx0_pixel0_clk.clkr, 1811*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx0_pixel0_clk_src.clkr, 1812*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp_cc_mdss_dptx0_pixel1_clk.clkr, 1813*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx0_pixel1_clk_src.clkr, 1814*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = 1815*6c6750b7STaniya Das &disp_cc_mdss_dptx0_usb_router_link_intf_clk.clkr, 1816*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp_cc_mdss_dptx1_aux_clk.clkr, 1817*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp_cc_mdss_dptx1_aux_clk_src.clkr, 1818*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_CRYPTO_CLK] = &disp_cc_mdss_dptx1_crypto_clk.clkr, 1819*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp_cc_mdss_dptx1_link_clk.clkr, 1820*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp_cc_mdss_dptx1_link_clk_src.clkr, 1821*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx1_link_div_clk_src.clkr, 1822*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp_cc_mdss_dptx1_link_intf_clk.clkr, 1823*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp_cc_mdss_dptx1_pixel0_clk.clkr, 1824*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx1_pixel0_clk_src.clkr, 1825*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp_cc_mdss_dptx1_pixel1_clk.clkr, 1826*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx1_pixel1_clk_src.clkr, 1827*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = 1828*6c6750b7STaniya Das &disp_cc_mdss_dptx1_usb_router_link_intf_clk.clkr, 1829*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp_cc_mdss_dptx2_aux_clk.clkr, 1830*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp_cc_mdss_dptx2_aux_clk_src.clkr, 1831*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_CRYPTO_CLK] = &disp_cc_mdss_dptx2_crypto_clk.clkr, 1832*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp_cc_mdss_dptx2_link_clk.clkr, 1833*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp_cc_mdss_dptx2_link_clk_src.clkr, 1834*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx2_link_div_clk_src.clkr, 1835*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp_cc_mdss_dptx2_link_intf_clk.clkr, 1836*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp_cc_mdss_dptx2_pixel0_clk.clkr, 1837*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx2_pixel0_clk_src.clkr, 1838*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp_cc_mdss_dptx2_pixel1_clk.clkr, 1839*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx2_pixel1_clk_src.clkr, 1840*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp_cc_mdss_dptx3_aux_clk.clkr, 1841*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp_cc_mdss_dptx3_aux_clk_src.clkr, 1842*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_CRYPTO_CLK] = &disp_cc_mdss_dptx3_crypto_clk.clkr, 1843*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp_cc_mdss_dptx3_link_clk.clkr, 1844*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp_cc_mdss_dptx3_link_clk_src.clkr, 1845*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx3_link_div_clk_src.clkr, 1846*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp_cc_mdss_dptx3_link_intf_clk.clkr, 1847*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp_cc_mdss_dptx3_pixel0_clk.clkr, 1848*6c6750b7STaniya Das [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx3_pixel0_clk_src.clkr, 1849*6c6750b7STaniya Das [DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr, 1850*6c6750b7STaniya Das [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr, 1851*6c6750b7STaniya Das [DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr, 1852*6c6750b7STaniya Das [DISP_CC_MDSS_ESC1_CLK_SRC] = &disp_cc_mdss_esc1_clk_src.clkr, 1853*6c6750b7STaniya Das [DISP_CC_MDSS_MDP1_CLK] = &disp_cc_mdss_mdp1_clk.clkr, 1854*6c6750b7STaniya Das [DISP_CC_MDSS_MDP_CLK] = &disp_cc_mdss_mdp_clk.clkr, 1855*6c6750b7STaniya Das [DISP_CC_MDSS_MDP_CLK_SRC] = &disp_cc_mdss_mdp_clk_src.clkr, 1856*6c6750b7STaniya Das [DISP_CC_MDSS_MDP_LUT1_CLK] = &disp_cc_mdss_mdp_lut1_clk.clkr, 1857*6c6750b7STaniya Das [DISP_CC_MDSS_MDP_LUT_CLK] = &disp_cc_mdss_mdp_lut_clk.clkr, 1858*6c6750b7STaniya Das [DISP_CC_MDSS_MDP_SS_IP_CLK] = &disp_cc_mdss_mdp_ss_ip_clk.clkr, 1859*6c6750b7STaniya Das [DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp_cc_mdss_non_gdsc_ahb_clk.clkr, 1860*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK0_CLK] = &disp_cc_mdss_pclk0_clk.clkr, 1861*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp_cc_mdss_pclk0_clk_src.clkr, 1862*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK1_CLK] = &disp_cc_mdss_pclk1_clk.clkr, 1863*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp_cc_mdss_pclk1_clk_src.clkr, 1864*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK2_CLK] = &disp_cc_mdss_pclk2_clk.clkr, 1865*6c6750b7STaniya Das [DISP_CC_MDSS_PCLK2_CLK_SRC] = &disp_cc_mdss_pclk2_clk_src.clkr, 1866*6c6750b7STaniya Das [DISP_CC_MDSS_VSYNC1_CLK] = &disp_cc_mdss_vsync1_clk.clkr, 1867*6c6750b7STaniya Das [DISP_CC_MDSS_VSYNC_CLK] = &disp_cc_mdss_vsync_clk.clkr, 1868*6c6750b7STaniya Das [DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp_cc_mdss_vsync_clk_src.clkr, 1869*6c6750b7STaniya Das [DISP_CC_OSC_CLK] = &disp_cc_osc_clk.clkr, 1870*6c6750b7STaniya Das [DISP_CC_OSC_CLK_SRC] = &disp_cc_osc_clk_src.clkr, 1871*6c6750b7STaniya Das [DISP_CC_PLL0] = &disp_cc_pll0.clkr, 1872*6c6750b7STaniya Das [DISP_CC_PLL1] = &disp_cc_pll1.clkr, 1873*6c6750b7STaniya Das [DISP_CC_PLL2] = &disp_cc_pll2.clkr, 1874*6c6750b7STaniya Das }; 1875*6c6750b7STaniya Das 1876*6c6750b7STaniya Das static struct gdsc *disp_cc_kaanapali_gdscs[] = { 1877*6c6750b7STaniya Das [DISP_CC_MDSS_CORE_GDSC] = &disp_cc_mdss_core_gdsc, 1878*6c6750b7STaniya Das [DISP_CC_MDSS_CORE_INT2_GDSC] = &disp_cc_mdss_core_int2_gdsc, 1879*6c6750b7STaniya Das }; 1880*6c6750b7STaniya Das 1881*6c6750b7STaniya Das static const struct qcom_reset_map disp_cc_kaanapali_resets[] = { 1882*6c6750b7STaniya Das [DISP_CC_MDSS_CORE_BCR] = { 0x8000 }, 1883*6c6750b7STaniya Das [DISP_CC_MDSS_CORE_INT2_BCR] = { 0xa000 }, 1884*6c6750b7STaniya Das [DISP_CC_MDSS_RSCC_BCR] = { 0xc000 }, 1885*6c6750b7STaniya Das }; 1886*6c6750b7STaniya Das 1887*6c6750b7STaniya Das static struct clk_alpha_pll *disp_cc_kaanapali_plls[] = { 1888*6c6750b7STaniya Das &disp_cc_pll0, 1889*6c6750b7STaniya Das &disp_cc_pll1, 1890*6c6750b7STaniya Das &disp_cc_pll2, 1891*6c6750b7STaniya Das }; 1892*6c6750b7STaniya Das 1893*6c6750b7STaniya Das static u32 disp_cc_kaanapali_critical_cbcrs[] = { 1894*6c6750b7STaniya Das 0xe064, /* DISP_CC_SLEEP_CLK */ 1895*6c6750b7STaniya Das 0xe05c, /* DISP_CC_XO_CLK */ 1896*6c6750b7STaniya Das 0xc00c, /* DISP_CC_MDSS_RSCC_AHB_CLK */ 1897*6c6750b7STaniya Das 0xc008, /* DISP_CC_MDSS_RSCC_VSYNC_CLK */ 1898*6c6750b7STaniya Das }; 1899*6c6750b7STaniya Das 1900*6c6750b7STaniya Das static const struct regmap_config disp_cc_kaanapali_regmap_config = { 1901*6c6750b7STaniya Das .reg_bits = 32, 1902*6c6750b7STaniya Das .reg_stride = 4, 1903*6c6750b7STaniya Das .val_bits = 32, 1904*6c6750b7STaniya Das .max_register = 0x12094, 1905*6c6750b7STaniya Das .fast_io = true, 1906*6c6750b7STaniya Das }; 1907*6c6750b7STaniya Das 1908*6c6750b7STaniya Das static void clk_kaanapali_regs_configure(struct device *dev, struct regmap *regmap) 1909*6c6750b7STaniya Das { 1910*6c6750b7STaniya Das /* Enable clock gating for MDP clocks */ 1911*6c6750b7STaniya Das regmap_update_bits(regmap, DISP_CC_MISC_CMD, BIT(4), BIT(4)); 1912*6c6750b7STaniya Das } 1913*6c6750b7STaniya Das 1914*6c6750b7STaniya Das static struct qcom_cc_driver_data disp_cc_kaanapali_driver_data = { 1915*6c6750b7STaniya Das .alpha_plls = disp_cc_kaanapali_plls, 1916*6c6750b7STaniya Das .num_alpha_plls = ARRAY_SIZE(disp_cc_kaanapali_plls), 1917*6c6750b7STaniya Das .clk_cbcrs = disp_cc_kaanapali_critical_cbcrs, 1918*6c6750b7STaniya Das .num_clk_cbcrs = ARRAY_SIZE(disp_cc_kaanapali_critical_cbcrs), 1919*6c6750b7STaniya Das .clk_regs_configure = clk_kaanapali_regs_configure, 1920*6c6750b7STaniya Das }; 1921*6c6750b7STaniya Das 1922*6c6750b7STaniya Das static const struct qcom_cc_desc disp_cc_kaanapali_desc = { 1923*6c6750b7STaniya Das .config = &disp_cc_kaanapali_regmap_config, 1924*6c6750b7STaniya Das .clks = disp_cc_kaanapali_clocks, 1925*6c6750b7STaniya Das .num_clks = ARRAY_SIZE(disp_cc_kaanapali_clocks), 1926*6c6750b7STaniya Das .resets = disp_cc_kaanapali_resets, 1927*6c6750b7STaniya Das .num_resets = ARRAY_SIZE(disp_cc_kaanapali_resets), 1928*6c6750b7STaniya Das .gdscs = disp_cc_kaanapali_gdscs, 1929*6c6750b7STaniya Das .num_gdscs = ARRAY_SIZE(disp_cc_kaanapali_gdscs), 1930*6c6750b7STaniya Das .use_rpm = true, 1931*6c6750b7STaniya Das .driver_data = &disp_cc_kaanapali_driver_data, 1932*6c6750b7STaniya Das }; 1933*6c6750b7STaniya Das 1934*6c6750b7STaniya Das static const struct of_device_id disp_cc_kaanapali_match_table[] = { 1935*6c6750b7STaniya Das { .compatible = "qcom,kaanapali-dispcc" }, 1936*6c6750b7STaniya Das { } 1937*6c6750b7STaniya Das }; 1938*6c6750b7STaniya Das MODULE_DEVICE_TABLE(of, disp_cc_kaanapali_match_table); 1939*6c6750b7STaniya Das 1940*6c6750b7STaniya Das static int disp_cc_kaanapali_probe(struct platform_device *pdev) 1941*6c6750b7STaniya Das { 1942*6c6750b7STaniya Das return qcom_cc_probe(pdev, &disp_cc_kaanapali_desc); 1943*6c6750b7STaniya Das } 1944*6c6750b7STaniya Das 1945*6c6750b7STaniya Das static struct platform_driver disp_cc_kaanapali_driver = { 1946*6c6750b7STaniya Das .probe = disp_cc_kaanapali_probe, 1947*6c6750b7STaniya Das .driver = { 1948*6c6750b7STaniya Das .name = "dispcc-kaanapali", 1949*6c6750b7STaniya Das .of_match_table = disp_cc_kaanapali_match_table, 1950*6c6750b7STaniya Das }, 1951*6c6750b7STaniya Das }; 1952*6c6750b7STaniya Das 1953*6c6750b7STaniya Das module_platform_driver(disp_cc_kaanapali_driver); 1954*6c6750b7STaniya Das 1955*6c6750b7STaniya Das MODULE_DESCRIPTION("QTI DISPCC Kaanapali Driver"); 1956*6c6750b7STaniya Das MODULE_LICENSE("GPL"); 1957