1*4a66e76fSBjorn Andersson // SPDX-License-Identifier: GPL-2.0-only 2*4a66e76fSBjorn Andersson /* 3*4a66e76fSBjorn Andersson * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4*4a66e76fSBjorn Andersson * Copyright (c) 2022, Linaro Ltd. 5*4a66e76fSBjorn Andersson */ 6*4a66e76fSBjorn Andersson 7*4a66e76fSBjorn Andersson #include <linux/clk-provider.h> 8*4a66e76fSBjorn Andersson #include <linux/module.h> 9*4a66e76fSBjorn Andersson #include <linux/platform_device.h> 10*4a66e76fSBjorn Andersson #include <linux/property.h> 11*4a66e76fSBjorn Andersson #include <linux/pm_clock.h> 12*4a66e76fSBjorn Andersson #include <linux/pm_runtime.h> 13*4a66e76fSBjorn Andersson #include <linux/regmap.h> 14*4a66e76fSBjorn Andersson #include <linux/reset-controller.h> 15*4a66e76fSBjorn Andersson 16*4a66e76fSBjorn Andersson #include <dt-bindings/clock/qcom,dispcc-sc8280xp.h> 17*4a66e76fSBjorn Andersson 18*4a66e76fSBjorn Andersson #include "clk-alpha-pll.h" 19*4a66e76fSBjorn Andersson #include "clk-branch.h" 20*4a66e76fSBjorn Andersson #include "clk-rcg.h" 21*4a66e76fSBjorn Andersson #include "clk-regmap-divider.h" 22*4a66e76fSBjorn Andersson #include "common.h" 23*4a66e76fSBjorn Andersson #include "gdsc.h" 24*4a66e76fSBjorn Andersson #include "reset.h" 25*4a66e76fSBjorn Andersson 26*4a66e76fSBjorn Andersson /* Need to match the order of clocks in DT binding */ 27*4a66e76fSBjorn Andersson enum { 28*4a66e76fSBjorn Andersson DT_IFACE, 29*4a66e76fSBjorn Andersson DT_BI_TCXO, 30*4a66e76fSBjorn Andersson DT_SLEEP_CLK, 31*4a66e76fSBjorn Andersson DT_DP0_PHY_PLL_LINK_CLK, 32*4a66e76fSBjorn Andersson DT_DP0_PHY_PLL_VCO_DIV_CLK, 33*4a66e76fSBjorn Andersson DT_DP1_PHY_PLL_LINK_CLK, 34*4a66e76fSBjorn Andersson DT_DP1_PHY_PLL_VCO_DIV_CLK, 35*4a66e76fSBjorn Andersson DT_DP2_PHY_PLL_LINK_CLK, 36*4a66e76fSBjorn Andersson DT_DP2_PHY_PLL_VCO_DIV_CLK, 37*4a66e76fSBjorn Andersson DT_DP3_PHY_PLL_LINK_CLK, 38*4a66e76fSBjorn Andersson DT_DP3_PHY_PLL_VCO_DIV_CLK, 39*4a66e76fSBjorn Andersson DT_DSI0_PHY_PLL_OUT_BYTECLK, 40*4a66e76fSBjorn Andersson DT_DSI0_PHY_PLL_OUT_DSICLK, 41*4a66e76fSBjorn Andersson DT_DSI1_PHY_PLL_OUT_BYTECLK, 42*4a66e76fSBjorn Andersson DT_DSI1_PHY_PLL_OUT_DSICLK, 43*4a66e76fSBjorn Andersson }; 44*4a66e76fSBjorn Andersson 45*4a66e76fSBjorn Andersson enum { 46*4a66e76fSBjorn Andersson P_BI_TCXO, 47*4a66e76fSBjorn Andersson P_DP0_PHY_PLL_LINK_CLK, 48*4a66e76fSBjorn Andersson P_DP0_PHY_PLL_VCO_DIV_CLK, 49*4a66e76fSBjorn Andersson P_DP1_PHY_PLL_LINK_CLK, 50*4a66e76fSBjorn Andersson P_DP1_PHY_PLL_VCO_DIV_CLK, 51*4a66e76fSBjorn Andersson P_DP2_PHY_PLL_LINK_CLK, 52*4a66e76fSBjorn Andersson P_DP2_PHY_PLL_VCO_DIV_CLK, 53*4a66e76fSBjorn Andersson P_DP3_PHY_PLL_LINK_CLK, 54*4a66e76fSBjorn Andersson P_DP3_PHY_PLL_VCO_DIV_CLK, 55*4a66e76fSBjorn Andersson P_DSI0_PHY_PLL_OUT_BYTECLK, 56*4a66e76fSBjorn Andersson P_DSI0_PHY_PLL_OUT_DSICLK, 57*4a66e76fSBjorn Andersson P_DSI1_PHY_PLL_OUT_BYTECLK, 58*4a66e76fSBjorn Andersson P_DSI1_PHY_PLL_OUT_DSICLK, 59*4a66e76fSBjorn Andersson P_DISPn_CC_PLL0_OUT_MAIN, 60*4a66e76fSBjorn Andersson P_DISPn_CC_PLL1_OUT_EVEN, 61*4a66e76fSBjorn Andersson P_DISPn_CC_PLL1_OUT_MAIN, 62*4a66e76fSBjorn Andersson P_DISPn_CC_PLL2_OUT_MAIN, 63*4a66e76fSBjorn Andersson P_SLEEP_CLK, 64*4a66e76fSBjorn Andersson }; 65*4a66e76fSBjorn Andersson 66*4a66e76fSBjorn Andersson static const struct clk_parent_data parent_data_tcxo = { .index = DT_BI_TCXO }; 67*4a66e76fSBjorn Andersson 68*4a66e76fSBjorn Andersson static const struct pll_vco lucid_5lpe_vco[] = { 69*4a66e76fSBjorn Andersson { 249600000, 1800000000, 0 }, 70*4a66e76fSBjorn Andersson }; 71*4a66e76fSBjorn Andersson 72*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll0_config = { 73*4a66e76fSBjorn Andersson .l = 0x4e, 74*4a66e76fSBjorn Andersson .alpha = 0x2000, 75*4a66e76fSBjorn Andersson .config_ctl_val = 0x20485699, 76*4a66e76fSBjorn Andersson .config_ctl_hi_val = 0x00002261, 77*4a66e76fSBjorn Andersson .config_ctl_hi1_val = 0x2a9a699c, 78*4a66e76fSBjorn Andersson .test_ctl_val = 0x00000000, 79*4a66e76fSBjorn Andersson .test_ctl_hi_val = 0x00000000, 80*4a66e76fSBjorn Andersson .test_ctl_hi1_val = 0x01800000, 81*4a66e76fSBjorn Andersson .user_ctl_val = 0x00000000, 82*4a66e76fSBjorn Andersson .user_ctl_hi_val = 0x00000805, 83*4a66e76fSBjorn Andersson .user_ctl_hi1_val = 0x00000000, 84*4a66e76fSBjorn Andersson }; 85*4a66e76fSBjorn Andersson 86*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll0 = { 87*4a66e76fSBjorn Andersson .offset = 0x0, 88*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 89*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 90*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 91*4a66e76fSBjorn Andersson .clkr = { 92*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 93*4a66e76fSBjorn Andersson .name = "disp0_cc_pll0", 94*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 95*4a66e76fSBjorn Andersson .num_parents = 1, 96*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 97*4a66e76fSBjorn Andersson }, 98*4a66e76fSBjorn Andersson }, 99*4a66e76fSBjorn Andersson }; 100*4a66e76fSBjorn Andersson 101*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll0 = { 102*4a66e76fSBjorn Andersson .offset = 0x0, 103*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 104*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 105*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 106*4a66e76fSBjorn Andersson .clkr = { 107*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 108*4a66e76fSBjorn Andersson .name = "disp1_cc_pll0", 109*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 110*4a66e76fSBjorn Andersson .num_parents = 1, 111*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 112*4a66e76fSBjorn Andersson }, 113*4a66e76fSBjorn Andersson }, 114*4a66e76fSBjorn Andersson }; 115*4a66e76fSBjorn Andersson 116*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll1_config = { 117*4a66e76fSBjorn Andersson .l = 0x1f, 118*4a66e76fSBjorn Andersson .alpha = 0x4000, 119*4a66e76fSBjorn Andersson .config_ctl_val = 0x20485699, 120*4a66e76fSBjorn Andersson .config_ctl_hi_val = 0x00002261, 121*4a66e76fSBjorn Andersson .config_ctl_hi1_val = 0x2a9a699c, 122*4a66e76fSBjorn Andersson .test_ctl_val = 0x00000000, 123*4a66e76fSBjorn Andersson .test_ctl_hi_val = 0x00000000, 124*4a66e76fSBjorn Andersson .test_ctl_hi1_val = 0x01800000, 125*4a66e76fSBjorn Andersson .user_ctl_val = 0x00000100, 126*4a66e76fSBjorn Andersson .user_ctl_hi_val = 0x00000805, 127*4a66e76fSBjorn Andersson .user_ctl_hi1_val = 0x00000000, 128*4a66e76fSBjorn Andersson }; 129*4a66e76fSBjorn Andersson 130*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll1 = { 131*4a66e76fSBjorn Andersson .offset = 0x1000, 132*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 133*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 134*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 135*4a66e76fSBjorn Andersson .clkr = { 136*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 137*4a66e76fSBjorn Andersson .name = "disp0_cc_pll1", 138*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 139*4a66e76fSBjorn Andersson .num_parents = 1, 140*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 141*4a66e76fSBjorn Andersson }, 142*4a66e76fSBjorn Andersson }, 143*4a66e76fSBjorn Andersson }; 144*4a66e76fSBjorn Andersson 145*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll1 = { 146*4a66e76fSBjorn Andersson .offset = 0x1000, 147*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 148*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 149*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 150*4a66e76fSBjorn Andersson .clkr = { 151*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 152*4a66e76fSBjorn Andersson .name = "disp1_cc_pll1", 153*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 154*4a66e76fSBjorn Andersson .num_parents = 1, 155*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 156*4a66e76fSBjorn Andersson }, 157*4a66e76fSBjorn Andersson }, 158*4a66e76fSBjorn Andersson }; 159*4a66e76fSBjorn Andersson 160*4a66e76fSBjorn Andersson static const struct clk_div_table post_div_table_disp_cc_pll1_out_even[] = { 161*4a66e76fSBjorn Andersson { 0x1, 2 }, 162*4a66e76fSBjorn Andersson { } 163*4a66e76fSBjorn Andersson }; 164*4a66e76fSBjorn Andersson 165*4a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp0_cc_pll1_out_even = { 166*4a66e76fSBjorn Andersson .offset = 0x1000, 167*4a66e76fSBjorn Andersson .post_div_shift = 8, 168*4a66e76fSBjorn Andersson .post_div_table = post_div_table_disp_cc_pll1_out_even, 169*4a66e76fSBjorn Andersson .num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even), 170*4a66e76fSBjorn Andersson .width = 4, 171*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 172*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 173*4a66e76fSBjorn Andersson .name = "disp0_cc_pll1_out_even", 174*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 175*4a66e76fSBjorn Andersson &disp0_cc_pll1.clkr.hw, 176*4a66e76fSBjorn Andersson }, 177*4a66e76fSBjorn Andersson .num_parents = 1, 178*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops, 179*4a66e76fSBjorn Andersson }, 180*4a66e76fSBjorn Andersson }; 181*4a66e76fSBjorn Andersson 182*4a66e76fSBjorn Andersson static struct clk_alpha_pll_postdiv disp1_cc_pll1_out_even = { 183*4a66e76fSBjorn Andersson .offset = 0x1000, 184*4a66e76fSBjorn Andersson .post_div_shift = 8, 185*4a66e76fSBjorn Andersson .post_div_table = post_div_table_disp_cc_pll1_out_even, 186*4a66e76fSBjorn Andersson .num_post_div = ARRAY_SIZE(post_div_table_disp_cc_pll1_out_even), 187*4a66e76fSBjorn Andersson .width = 4, 188*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 189*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 190*4a66e76fSBjorn Andersson .name = "disp1_cc_pll1_out_even", 191*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 192*4a66e76fSBjorn Andersson &disp1_cc_pll1.clkr.hw, 193*4a66e76fSBjorn Andersson }, 194*4a66e76fSBjorn Andersson .num_parents = 1, 195*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops, 196*4a66e76fSBjorn Andersson }, 197*4a66e76fSBjorn Andersson }; 198*4a66e76fSBjorn Andersson 199*4a66e76fSBjorn Andersson static const struct alpha_pll_config disp_cc_pll2_config = { 200*4a66e76fSBjorn Andersson .l = 0x46, 201*4a66e76fSBjorn Andersson .alpha = 0x5000, 202*4a66e76fSBjorn Andersson .config_ctl_val = 0x20485699, 203*4a66e76fSBjorn Andersson .config_ctl_hi_val = 0x00002261, 204*4a66e76fSBjorn Andersson .config_ctl_hi1_val = 0x2a9a699c, 205*4a66e76fSBjorn Andersson .test_ctl_val = 0x00000000, 206*4a66e76fSBjorn Andersson .test_ctl_hi_val = 0x00000000, 207*4a66e76fSBjorn Andersson .test_ctl_hi1_val = 0x01800000, 208*4a66e76fSBjorn Andersson .user_ctl_val = 0x00000000, 209*4a66e76fSBjorn Andersson .user_ctl_hi_val = 0x00000805, 210*4a66e76fSBjorn Andersson .user_ctl_hi1_val = 0x00000000, 211*4a66e76fSBjorn Andersson }; 212*4a66e76fSBjorn Andersson 213*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp0_cc_pll2 = { 214*4a66e76fSBjorn Andersson .offset = 0x9000, 215*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 216*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 217*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 218*4a66e76fSBjorn Andersson .clkr = { 219*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 220*4a66e76fSBjorn Andersson .name = "disp0_cc_pll2", 221*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 222*4a66e76fSBjorn Andersson .num_parents = 1, 223*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 224*4a66e76fSBjorn Andersson }, 225*4a66e76fSBjorn Andersson }, 226*4a66e76fSBjorn Andersson }; 227*4a66e76fSBjorn Andersson 228*4a66e76fSBjorn Andersson static struct clk_alpha_pll disp1_cc_pll2 = { 229*4a66e76fSBjorn Andersson .offset = 0x9000, 230*4a66e76fSBjorn Andersson .vco_table = lucid_5lpe_vco, 231*4a66e76fSBjorn Andersson .num_vco = ARRAY_SIZE(lucid_5lpe_vco), 232*4a66e76fSBjorn Andersson .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 233*4a66e76fSBjorn Andersson .clkr = { 234*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 235*4a66e76fSBjorn Andersson .name = "disp1_cc_pll2", 236*4a66e76fSBjorn Andersson .parent_data = &parent_data_tcxo, 237*4a66e76fSBjorn Andersson .num_parents = 1, 238*4a66e76fSBjorn Andersson .ops = &clk_alpha_pll_lucid_5lpe_ops, 239*4a66e76fSBjorn Andersson }, 240*4a66e76fSBjorn Andersson }, 241*4a66e76fSBjorn Andersson }; 242*4a66e76fSBjorn Andersson 243*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_0[] = { 244*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 245*4a66e76fSBjorn Andersson { P_DP0_PHY_PLL_LINK_CLK, 1 }, 246*4a66e76fSBjorn Andersson { P_DP1_PHY_PLL_LINK_CLK, 2 }, 247*4a66e76fSBjorn Andersson { P_DP2_PHY_PLL_LINK_CLK, 3 }, 248*4a66e76fSBjorn Andersson { P_DP3_PHY_PLL_LINK_CLK, 4 }, 249*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL2_OUT_MAIN, 5 }, 250*4a66e76fSBjorn Andersson }; 251*4a66e76fSBjorn Andersson 252*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_0[] = { 253*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 254*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_LINK_CLK }, 255*4a66e76fSBjorn Andersson { .index = DT_DP1_PHY_PLL_LINK_CLK }, 256*4a66e76fSBjorn Andersson { .index = DT_DP2_PHY_PLL_LINK_CLK }, 257*4a66e76fSBjorn Andersson { .index = DT_DP3_PHY_PLL_LINK_CLK }, 258*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll2.clkr.hw }, 259*4a66e76fSBjorn Andersson }; 260*4a66e76fSBjorn Andersson 261*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_0[] = { 262*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 263*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_LINK_CLK }, 264*4a66e76fSBjorn Andersson { .index = DT_DP1_PHY_PLL_LINK_CLK }, 265*4a66e76fSBjorn Andersson { .index = DT_DP2_PHY_PLL_LINK_CLK }, 266*4a66e76fSBjorn Andersson { .index = DT_DP3_PHY_PLL_LINK_CLK }, 267*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll2.clkr.hw }, 268*4a66e76fSBjorn Andersson }; 269*4a66e76fSBjorn Andersson 270*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_1[] = { 271*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 272*4a66e76fSBjorn Andersson { P_DP0_PHY_PLL_LINK_CLK, 1 }, 273*4a66e76fSBjorn Andersson { P_DP0_PHY_PLL_VCO_DIV_CLK, 2 }, 274*4a66e76fSBjorn Andersson { P_DP3_PHY_PLL_VCO_DIV_CLK, 3 }, 275*4a66e76fSBjorn Andersson { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 276*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL2_OUT_MAIN, 5 }, 277*4a66e76fSBjorn Andersson { P_DP2_PHY_PLL_VCO_DIV_CLK, 6 }, 278*4a66e76fSBjorn Andersson }; 279*4a66e76fSBjorn Andersson 280*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_1[] = { 281*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 282*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_LINK_CLK }, 283*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_VCO_DIV_CLK }, 284*4a66e76fSBjorn Andersson { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 285*4a66e76fSBjorn Andersson { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 286*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll2.clkr.hw }, 287*4a66e76fSBjorn Andersson { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 288*4a66e76fSBjorn Andersson }; 289*4a66e76fSBjorn Andersson 290*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_1[] = { 291*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 292*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_LINK_CLK }, 293*4a66e76fSBjorn Andersson { .index = DT_DP0_PHY_PLL_VCO_DIV_CLK }, 294*4a66e76fSBjorn Andersson { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 295*4a66e76fSBjorn Andersson { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 296*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll2.clkr.hw }, 297*4a66e76fSBjorn Andersson { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 298*4a66e76fSBjorn Andersson }; 299*4a66e76fSBjorn Andersson 300*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_2[] = { 301*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 302*4a66e76fSBjorn Andersson }; 303*4a66e76fSBjorn Andersson 304*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_2[] = { 305*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 306*4a66e76fSBjorn Andersson }; 307*4a66e76fSBjorn Andersson 308*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_3[] = { 309*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 310*4a66e76fSBjorn Andersson { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 311*4a66e76fSBjorn Andersson { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 312*4a66e76fSBjorn Andersson { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 313*4a66e76fSBjorn Andersson { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 314*4a66e76fSBjorn Andersson }; 315*4a66e76fSBjorn Andersson 316*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_3[] = { 317*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 318*4a66e76fSBjorn Andersson { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 319*4a66e76fSBjorn Andersson { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 320*4a66e76fSBjorn Andersson { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 321*4a66e76fSBjorn Andersson { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 322*4a66e76fSBjorn Andersson }; 323*4a66e76fSBjorn Andersson 324*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_4[] = { 325*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 326*4a66e76fSBjorn Andersson { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 327*4a66e76fSBjorn Andersson { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 328*4a66e76fSBjorn Andersson }; 329*4a66e76fSBjorn Andersson 330*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_4[] = { 331*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 332*4a66e76fSBjorn Andersson { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 333*4a66e76fSBjorn Andersson { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 334*4a66e76fSBjorn Andersson }; 335*4a66e76fSBjorn Andersson 336*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_5[] = { 337*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 338*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL0_OUT_MAIN, 1 }, 339*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL1_OUT_MAIN, 4 }, 340*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL2_OUT_MAIN, 5 }, 341*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL1_OUT_EVEN, 6 }, 342*4a66e76fSBjorn Andersson }; 343*4a66e76fSBjorn Andersson 344*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_5[] = { 345*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 346*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll0.clkr.hw }, 347*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll1.clkr.hw }, 348*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll2.clkr.hw }, 349*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll1_out_even.clkr.hw }, 350*4a66e76fSBjorn Andersson }; 351*4a66e76fSBjorn Andersson 352*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_5[] = { 353*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 354*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll0.clkr.hw }, 355*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll1.clkr.hw }, 356*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll2.clkr.hw }, 357*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll1_out_even.clkr.hw }, 358*4a66e76fSBjorn Andersson }; 359*4a66e76fSBjorn Andersson 360*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_6[] = { 361*4a66e76fSBjorn Andersson { P_BI_TCXO, 0 }, 362*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL1_OUT_MAIN, 4 }, 363*4a66e76fSBjorn Andersson { P_DISPn_CC_PLL1_OUT_EVEN, 6 }, 364*4a66e76fSBjorn Andersson }; 365*4a66e76fSBjorn Andersson 366*4a66e76fSBjorn Andersson static const struct clk_parent_data disp0_cc_parent_data_6[] = { 367*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 368*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll1.clkr.hw }, 369*4a66e76fSBjorn Andersson { .hw = &disp0_cc_pll1_out_even.clkr.hw }, 370*4a66e76fSBjorn Andersson }; 371*4a66e76fSBjorn Andersson 372*4a66e76fSBjorn Andersson static const struct clk_parent_data disp1_cc_parent_data_6[] = { 373*4a66e76fSBjorn Andersson { .index = DT_BI_TCXO }, 374*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll1.clkr.hw }, 375*4a66e76fSBjorn Andersson { .hw = &disp1_cc_pll1_out_even.clkr.hw }, 376*4a66e76fSBjorn Andersson }; 377*4a66e76fSBjorn Andersson 378*4a66e76fSBjorn Andersson static const struct parent_map disp_cc_parent_map_7[] = { 379*4a66e76fSBjorn Andersson { P_SLEEP_CLK, 0 }, 380*4a66e76fSBjorn Andersson }; 381*4a66e76fSBjorn Andersson 382*4a66e76fSBjorn Andersson static const struct clk_parent_data disp_cc_parent_data_7[] = { 383*4a66e76fSBjorn Andersson { .index = DT_SLEEP_CLK }, 384*4a66e76fSBjorn Andersson }; 385*4a66e76fSBjorn Andersson 386*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = { 387*4a66e76fSBjorn Andersson F(19200000, P_BI_TCXO, 1, 0, 0), 388*4a66e76fSBjorn Andersson F(37500000, P_DISPn_CC_PLL1_OUT_EVEN, 8, 0, 0), 389*4a66e76fSBjorn Andersson F(75000000, P_DISPn_CC_PLL1_OUT_MAIN, 8, 0, 0), 390*4a66e76fSBjorn Andersson { } 391*4a66e76fSBjorn Andersson }; 392*4a66e76fSBjorn Andersson 393*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_ahb_clk_src = { 394*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2364, 395*4a66e76fSBjorn Andersson .mnd_width = 0, 396*4a66e76fSBjorn Andersson .hid_width = 5, 397*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_6, 398*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src, 399*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 400*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_ahb_clk_src", 401*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_6, 402*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_6), 403*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 404*4a66e76fSBjorn Andersson }, 405*4a66e76fSBjorn Andersson }; 406*4a66e76fSBjorn Andersson 407*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_ahb_clk_src = { 408*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2364, 409*4a66e76fSBjorn Andersson .mnd_width = 0, 410*4a66e76fSBjorn Andersson .hid_width = 5, 411*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_6, 412*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src, 413*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 414*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_ahb_clk_src", 415*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_6, 416*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_6), 417*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 418*4a66e76fSBjorn Andersson }, 419*4a66e76fSBjorn Andersson }; 420*4a66e76fSBjorn Andersson 421*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_byte0_clk_src[] = { 422*4a66e76fSBjorn Andersson F(19200000, P_BI_TCXO, 1, 0, 0), 423*4a66e76fSBjorn Andersson { } 424*4a66e76fSBjorn Andersson }; 425*4a66e76fSBjorn Andersson 426*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte0_clk_src = { 427*4a66e76fSBjorn Andersson .cmd_rcgr = 0x213c, 428*4a66e76fSBjorn Andersson .mnd_width = 0, 429*4a66e76fSBjorn Andersson .hid_width = 5, 430*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 431*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 432*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte0_clk_src", 433*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 434*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 435*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 436*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 437*4a66e76fSBjorn Andersson }, 438*4a66e76fSBjorn Andersson }; 439*4a66e76fSBjorn Andersson 440*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte0_clk_src = { 441*4a66e76fSBjorn Andersson .cmd_rcgr = 0x213c, 442*4a66e76fSBjorn Andersson .mnd_width = 0, 443*4a66e76fSBjorn Andersson .hid_width = 5, 444*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 445*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 446*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte0_clk_src", 447*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 448*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 449*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 450*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 451*4a66e76fSBjorn Andersson }, 452*4a66e76fSBjorn Andersson }; 453*4a66e76fSBjorn Andersson 454*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_byte1_clk_src = { 455*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2158, 456*4a66e76fSBjorn Andersson .mnd_width = 0, 457*4a66e76fSBjorn Andersson .hid_width = 5, 458*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 459*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 460*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte1_clk_src", 461*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 462*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 463*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 464*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 465*4a66e76fSBjorn Andersson }, 466*4a66e76fSBjorn Andersson }; 467*4a66e76fSBjorn Andersson 468*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_byte1_clk_src = { 469*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2158, 470*4a66e76fSBjorn Andersson .mnd_width = 0, 471*4a66e76fSBjorn Andersson .hid_width = 5, 472*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 473*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 474*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte1_clk_src", 475*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 476*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 477*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 478*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 479*4a66e76fSBjorn Andersson }, 480*4a66e76fSBjorn Andersson }; 481*4a66e76fSBjorn Andersson 482*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_aux_clk_src = { 483*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2238, 484*4a66e76fSBjorn Andersson .mnd_width = 0, 485*4a66e76fSBjorn Andersson .hid_width = 5, 486*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 487*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 488*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 489*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_aux_clk_src", 490*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 491*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 492*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 493*4a66e76fSBjorn Andersson }, 494*4a66e76fSBjorn Andersson }; 495*4a66e76fSBjorn Andersson 496*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_aux_clk_src = { 497*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2238, 498*4a66e76fSBjorn Andersson .mnd_width = 0, 499*4a66e76fSBjorn Andersson .hid_width = 5, 500*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 501*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 502*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 503*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_aux_clk_src", 504*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 505*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 506*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 507*4a66e76fSBjorn Andersson }, 508*4a66e76fSBjorn Andersson }; 509*4a66e76fSBjorn Andersson 510*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_link_clk_src = { 511*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21a4, 512*4a66e76fSBjorn Andersson .mnd_width = 0, 513*4a66e76fSBjorn Andersson .hid_width = 5, 514*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 515*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 516*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_link_clk_src", 517*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_0, 518*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_0), 519*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 520*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 521*4a66e76fSBjorn Andersson }, 522*4a66e76fSBjorn Andersson }; 523*4a66e76fSBjorn Andersson 524*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_link_clk_src = { 525*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21a4, 526*4a66e76fSBjorn Andersson .mnd_width = 0, 527*4a66e76fSBjorn Andersson .hid_width = 5, 528*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 529*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 530*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_link_clk_src", 531*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_0, 532*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_0), 533*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 534*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 535*4a66e76fSBjorn Andersson }, 536*4a66e76fSBjorn Andersson }; 537*4a66e76fSBjorn Andersson 538*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel0_clk_src = { 539*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21d8, 540*4a66e76fSBjorn Andersson .mnd_width = 16, 541*4a66e76fSBjorn Andersson .hid_width = 5, 542*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 543*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 544*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_pixel0_clk_src", 545*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 546*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 547*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 548*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 549*4a66e76fSBjorn Andersson }, 550*4a66e76fSBjorn Andersson }; 551*4a66e76fSBjorn Andersson 552*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel0_clk_src = { 553*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21d8, 554*4a66e76fSBjorn Andersson .mnd_width = 16, 555*4a66e76fSBjorn Andersson .hid_width = 5, 556*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 557*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 558*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_pixel0_clk_src", 559*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 560*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 561*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 562*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 563*4a66e76fSBjorn Andersson }, 564*4a66e76fSBjorn Andersson }; 565*4a66e76fSBjorn Andersson 566*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx0_pixel1_clk_src = { 567*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21f0, 568*4a66e76fSBjorn Andersson .mnd_width = 16, 569*4a66e76fSBjorn Andersson .hid_width = 5, 570*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 571*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 572*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_pixel1_clk_src", 573*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 574*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 575*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 576*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 577*4a66e76fSBjorn Andersson }, 578*4a66e76fSBjorn Andersson }; 579*4a66e76fSBjorn Andersson 580*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx0_pixel1_clk_src = { 581*4a66e76fSBjorn Andersson .cmd_rcgr = 0x21f0, 582*4a66e76fSBjorn Andersson .mnd_width = 16, 583*4a66e76fSBjorn Andersson .hid_width = 5, 584*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 585*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 586*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_pixel1_clk_src", 587*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 588*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 589*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 590*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 591*4a66e76fSBjorn Andersson }, 592*4a66e76fSBjorn Andersson }; 593*4a66e76fSBjorn Andersson 594*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_aux_clk_src = { 595*4a66e76fSBjorn Andersson .cmd_rcgr = 0x22d0, 596*4a66e76fSBjorn Andersson .mnd_width = 0, 597*4a66e76fSBjorn Andersson .hid_width = 5, 598*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 599*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 600*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 601*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_aux_clk_src", 602*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 603*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 604*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 605*4a66e76fSBjorn Andersson }, 606*4a66e76fSBjorn Andersson }; 607*4a66e76fSBjorn Andersson 608*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_aux_clk_src = { 609*4a66e76fSBjorn Andersson .cmd_rcgr = 0x22d0, 610*4a66e76fSBjorn Andersson .mnd_width = 0, 611*4a66e76fSBjorn Andersson .hid_width = 5, 612*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 613*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 614*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 615*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_aux_clk_src", 616*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 617*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 618*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 619*4a66e76fSBjorn Andersson }, 620*4a66e76fSBjorn Andersson }; 621*4a66e76fSBjorn Andersson 622*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_link_clk_src = { 623*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2268, 624*4a66e76fSBjorn Andersson .mnd_width = 0, 625*4a66e76fSBjorn Andersson .hid_width = 5, 626*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 627*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 628*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_link_clk_src", 629*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_0, 630*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_0), 631*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 632*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 633*4a66e76fSBjorn Andersson }, 634*4a66e76fSBjorn Andersson }; 635*4a66e76fSBjorn Andersson 636*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_link_clk_src = { 637*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2268, 638*4a66e76fSBjorn Andersson .mnd_width = 0, 639*4a66e76fSBjorn Andersson .hid_width = 5, 640*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 641*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 642*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_link_clk_src", 643*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_0, 644*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_0), 645*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 646*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 647*4a66e76fSBjorn Andersson }, 648*4a66e76fSBjorn Andersson }; 649*4a66e76fSBjorn Andersson 650*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel0_clk_src = { 651*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2250, 652*4a66e76fSBjorn Andersson .mnd_width = 16, 653*4a66e76fSBjorn Andersson .hid_width = 5, 654*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 655*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 656*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_pixel0_clk_src", 657*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 658*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 659*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 660*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 661*4a66e76fSBjorn Andersson }, 662*4a66e76fSBjorn Andersson }; 663*4a66e76fSBjorn Andersson 664*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel0_clk_src = { 665*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2250, 666*4a66e76fSBjorn Andersson .mnd_width = 16, 667*4a66e76fSBjorn Andersson .hid_width = 5, 668*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 669*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 670*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_pixel0_clk_src", 671*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 672*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 673*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 674*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 675*4a66e76fSBjorn Andersson }, 676*4a66e76fSBjorn Andersson }; 677*4a66e76fSBjorn Andersson 678*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx1_pixel1_clk_src = { 679*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2370, 680*4a66e76fSBjorn Andersson .mnd_width = 16, 681*4a66e76fSBjorn Andersson .hid_width = 5, 682*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 683*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 684*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_pixel1_clk_src", 685*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 686*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 687*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 688*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 689*4a66e76fSBjorn Andersson }, 690*4a66e76fSBjorn Andersson }; 691*4a66e76fSBjorn Andersson 692*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx1_pixel1_clk_src = { 693*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2370, 694*4a66e76fSBjorn Andersson .mnd_width = 16, 695*4a66e76fSBjorn Andersson .hid_width = 5, 696*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 697*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 698*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_pixel1_clk_src", 699*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 700*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 701*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 702*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 703*4a66e76fSBjorn Andersson }, 704*4a66e76fSBjorn Andersson }; 705*4a66e76fSBjorn Andersson 706*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_aux_clk_src = { 707*4a66e76fSBjorn Andersson .cmd_rcgr = 0x22e8, 708*4a66e76fSBjorn Andersson .mnd_width = 0, 709*4a66e76fSBjorn Andersson .hid_width = 5, 710*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 711*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 712*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 713*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_aux_clk_src", 714*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 715*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 716*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 717*4a66e76fSBjorn Andersson }, 718*4a66e76fSBjorn Andersson }; 719*4a66e76fSBjorn Andersson 720*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_aux_clk_src = { 721*4a66e76fSBjorn Andersson .cmd_rcgr = 0x22e8, 722*4a66e76fSBjorn Andersson .mnd_width = 0, 723*4a66e76fSBjorn Andersson .hid_width = 5, 724*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 725*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 726*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 727*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_aux_clk_src", 728*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 729*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 730*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 731*4a66e76fSBjorn Andersson }, 732*4a66e76fSBjorn Andersson }; 733*4a66e76fSBjorn Andersson 734*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_link_clk_src = { 735*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2284, 736*4a66e76fSBjorn Andersson .mnd_width = 0, 737*4a66e76fSBjorn Andersson .hid_width = 5, 738*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 739*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 740*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_link_clk_src", 741*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_0, 742*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_0), 743*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 744*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 745*4a66e76fSBjorn Andersson }, 746*4a66e76fSBjorn Andersson }; 747*4a66e76fSBjorn Andersson 748*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_link_clk_src = { 749*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2284, 750*4a66e76fSBjorn Andersson .mnd_width = 0, 751*4a66e76fSBjorn Andersson .hid_width = 5, 752*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 753*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 754*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_link_clk_src", 755*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_0, 756*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_0), 757*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 758*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 759*4a66e76fSBjorn Andersson }, 760*4a66e76fSBjorn Andersson }; 761*4a66e76fSBjorn Andersson 762*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel0_clk_src = { 763*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2208, 764*4a66e76fSBjorn Andersson .mnd_width = 16, 765*4a66e76fSBjorn Andersson .hid_width = 5, 766*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 767*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 768*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_pixel0_clk_src", 769*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 770*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 771*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 772*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 773*4a66e76fSBjorn Andersson }, 774*4a66e76fSBjorn Andersson }; 775*4a66e76fSBjorn Andersson 776*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel0_clk_src = { 777*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2208, 778*4a66e76fSBjorn Andersson .mnd_width = 16, 779*4a66e76fSBjorn Andersson .hid_width = 5, 780*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 781*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 782*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_pixel0_clk_src", 783*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 784*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 785*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 786*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 787*4a66e76fSBjorn Andersson }, 788*4a66e76fSBjorn Andersson }; 789*4a66e76fSBjorn Andersson 790*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx2_pixel1_clk_src = { 791*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2220, 792*4a66e76fSBjorn Andersson .mnd_width = 16, 793*4a66e76fSBjorn Andersson .hid_width = 5, 794*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 795*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 796*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_pixel1_clk_src", 797*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 798*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 799*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 800*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 801*4a66e76fSBjorn Andersson }, 802*4a66e76fSBjorn Andersson }; 803*4a66e76fSBjorn Andersson 804*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx2_pixel1_clk_src = { 805*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2220, 806*4a66e76fSBjorn Andersson .mnd_width = 16, 807*4a66e76fSBjorn Andersson .hid_width = 5, 808*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 809*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 810*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_pixel1_clk_src", 811*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 812*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 813*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 814*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 815*4a66e76fSBjorn Andersson }, 816*4a66e76fSBjorn Andersson }; 817*4a66e76fSBjorn Andersson 818*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_aux_clk_src = { 819*4a66e76fSBjorn Andersson .cmd_rcgr = 0x234c, 820*4a66e76fSBjorn Andersson .mnd_width = 0, 821*4a66e76fSBjorn Andersson .hid_width = 5, 822*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 823*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 824*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 825*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_aux_clk_src", 826*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 827*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 828*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 829*4a66e76fSBjorn Andersson }, 830*4a66e76fSBjorn Andersson }; 831*4a66e76fSBjorn Andersson 832*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_aux_clk_src = { 833*4a66e76fSBjorn Andersson .cmd_rcgr = 0x234c, 834*4a66e76fSBjorn Andersson .mnd_width = 0, 835*4a66e76fSBjorn Andersson .hid_width = 5, 836*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 837*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 838*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 839*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_aux_clk_src", 840*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 841*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 842*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 843*4a66e76fSBjorn Andersson }, 844*4a66e76fSBjorn Andersson }; 845*4a66e76fSBjorn Andersson 846*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_link_clk_src = { 847*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2318, 848*4a66e76fSBjorn Andersson .mnd_width = 0, 849*4a66e76fSBjorn Andersson .hid_width = 5, 850*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 851*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 852*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_link_clk_src", 853*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_0, 854*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_0), 855*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 856*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 857*4a66e76fSBjorn Andersson }, 858*4a66e76fSBjorn Andersson }; 859*4a66e76fSBjorn Andersson 860*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_link_clk_src = { 861*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2318, 862*4a66e76fSBjorn Andersson .mnd_width = 0, 863*4a66e76fSBjorn Andersson .hid_width = 5, 864*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_0, 865*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 866*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_link_clk_src", 867*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_0, 868*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_0), 869*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 870*4a66e76fSBjorn Andersson .ops = &clk_byte2_ops, 871*4a66e76fSBjorn Andersson }, 872*4a66e76fSBjorn Andersson }; 873*4a66e76fSBjorn Andersson 874*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_dptx3_pixel0_clk_src = { 875*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2300, 876*4a66e76fSBjorn Andersson .mnd_width = 16, 877*4a66e76fSBjorn Andersson .hid_width = 5, 878*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 879*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 880*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_pixel0_clk_src", 881*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_1, 882*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_1), 883*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 884*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 885*4a66e76fSBjorn Andersson }, 886*4a66e76fSBjorn Andersson }; 887*4a66e76fSBjorn Andersson 888*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_dptx3_pixel0_clk_src = { 889*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2300, 890*4a66e76fSBjorn Andersson .mnd_width = 16, 891*4a66e76fSBjorn Andersson .hid_width = 5, 892*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_1, 893*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 894*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_pixel0_clk_src", 895*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_1, 896*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_1), 897*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 898*4a66e76fSBjorn Andersson .ops = &clk_dp_ops, 899*4a66e76fSBjorn Andersson }, 900*4a66e76fSBjorn Andersson }; 901*4a66e76fSBjorn Andersson 902*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc0_clk_src = { 903*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2174, 904*4a66e76fSBjorn Andersson .mnd_width = 0, 905*4a66e76fSBjorn Andersson .hid_width = 5, 906*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_4, 907*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 908*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 909*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_esc0_clk_src", 910*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_4, 911*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 912*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 913*4a66e76fSBjorn Andersson }, 914*4a66e76fSBjorn Andersson }; 915*4a66e76fSBjorn Andersson 916*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc0_clk_src = { 917*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2174, 918*4a66e76fSBjorn Andersson .mnd_width = 0, 919*4a66e76fSBjorn Andersson .hid_width = 5, 920*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_4, 921*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 922*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 923*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_esc0_clk_src", 924*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_4, 925*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 926*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 927*4a66e76fSBjorn Andersson }, 928*4a66e76fSBjorn Andersson }; 929*4a66e76fSBjorn Andersson 930*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_esc1_clk_src = { 931*4a66e76fSBjorn Andersson .cmd_rcgr = 0x218c, 932*4a66e76fSBjorn Andersson .mnd_width = 0, 933*4a66e76fSBjorn Andersson .hid_width = 5, 934*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_4, 935*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 936*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 937*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_esc1_clk_src", 938*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_4, 939*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 940*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 941*4a66e76fSBjorn Andersson }, 942*4a66e76fSBjorn Andersson }; 943*4a66e76fSBjorn Andersson 944*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_esc1_clk_src = { 945*4a66e76fSBjorn Andersson .cmd_rcgr = 0x218c, 946*4a66e76fSBjorn Andersson .mnd_width = 0, 947*4a66e76fSBjorn Andersson .hid_width = 5, 948*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_4, 949*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 950*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 951*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_esc1_clk_src", 952*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_4, 953*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 954*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 955*4a66e76fSBjorn Andersson }, 956*4a66e76fSBjorn Andersson }; 957*4a66e76fSBjorn Andersson 958*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = { 959*4a66e76fSBjorn Andersson F(19200000, P_BI_TCXO, 1, 0, 0), 960*4a66e76fSBjorn Andersson F(85714286, P_DISPn_CC_PLL1_OUT_MAIN, 7, 0, 0), 961*4a66e76fSBjorn Andersson F(100000000, P_DISPn_CC_PLL1_OUT_MAIN, 6, 0, 0), 962*4a66e76fSBjorn Andersson F(150000000, P_DISPn_CC_PLL1_OUT_MAIN, 4, 0, 0), 963*4a66e76fSBjorn Andersson F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0), 964*4a66e76fSBjorn Andersson F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0), 965*4a66e76fSBjorn Andersson F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0), 966*4a66e76fSBjorn Andersson F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0), 967*4a66e76fSBjorn Andersson F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0), 968*4a66e76fSBjorn Andersson { } 969*4a66e76fSBjorn Andersson }; 970*4a66e76fSBjorn Andersson 971*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_mdp_clk_src = { 972*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20f4, 973*4a66e76fSBjorn Andersson .mnd_width = 0, 974*4a66e76fSBjorn Andersson .hid_width = 5, 975*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_5, 976*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src, 977*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 978*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_mdp_clk_src", 979*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_5, 980*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_5), 981*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 982*4a66e76fSBjorn Andersson }, 983*4a66e76fSBjorn Andersson }; 984*4a66e76fSBjorn Andersson 985*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_mdp_clk_src = { 986*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20f4, 987*4a66e76fSBjorn Andersson .mnd_width = 0, 988*4a66e76fSBjorn Andersson .hid_width = 5, 989*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_5, 990*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src, 991*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 992*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_mdp_clk_src", 993*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_5, 994*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_5), 995*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 996*4a66e76fSBjorn Andersson }, 997*4a66e76fSBjorn Andersson }; 998*4a66e76fSBjorn Andersson 999*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk0_clk_src = { 1000*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20c4, 1001*4a66e76fSBjorn Andersson .mnd_width = 8, 1002*4a66e76fSBjorn Andersson .hid_width = 5, 1003*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 1004*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1005*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_pclk0_clk_src", 1006*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 1007*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 1008*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1009*4a66e76fSBjorn Andersson .ops = &clk_pixel_ops, 1010*4a66e76fSBjorn Andersson }, 1011*4a66e76fSBjorn Andersson }; 1012*4a66e76fSBjorn Andersson 1013*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk0_clk_src = { 1014*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20c4, 1015*4a66e76fSBjorn Andersson .mnd_width = 8, 1016*4a66e76fSBjorn Andersson .hid_width = 5, 1017*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 1018*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1019*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_pclk0_clk_src", 1020*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 1021*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 1022*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1023*4a66e76fSBjorn Andersson .ops = &clk_pixel_ops, 1024*4a66e76fSBjorn Andersson }, 1025*4a66e76fSBjorn Andersson }; 1026*4a66e76fSBjorn Andersson 1027*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_pclk1_clk_src = { 1028*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20dc, 1029*4a66e76fSBjorn Andersson .mnd_width = 8, 1030*4a66e76fSBjorn Andersson .hid_width = 5, 1031*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 1032*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1033*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_pclk1_clk_src", 1034*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 1035*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 1036*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1037*4a66e76fSBjorn Andersson .ops = &clk_pixel_ops, 1038*4a66e76fSBjorn Andersson }, 1039*4a66e76fSBjorn Andersson }; 1040*4a66e76fSBjorn Andersson 1041*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_pclk1_clk_src = { 1042*4a66e76fSBjorn Andersson .cmd_rcgr = 0x20dc, 1043*4a66e76fSBjorn Andersson .mnd_width = 8, 1044*4a66e76fSBjorn Andersson .hid_width = 5, 1045*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_3, 1046*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1047*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_pclk1_clk_src", 1048*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_3, 1049*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 1050*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1051*4a66e76fSBjorn Andersson .ops = &clk_pixel_ops, 1052*4a66e76fSBjorn Andersson }, 1053*4a66e76fSBjorn Andersson }; 1054*4a66e76fSBjorn Andersson 1055*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_mdss_rot_clk_src[] = { 1056*4a66e76fSBjorn Andersson F(19200000, P_BI_TCXO, 1, 0, 0), 1057*4a66e76fSBjorn Andersson F(200000000, P_DISPn_CC_PLL1_OUT_MAIN, 3, 0, 0), 1058*4a66e76fSBjorn Andersson F(300000000, P_DISPn_CC_PLL1_OUT_MAIN, 2, 0, 0), 1059*4a66e76fSBjorn Andersson F(375000000, P_DISPn_CC_PLL0_OUT_MAIN, 4, 0, 0), 1060*4a66e76fSBjorn Andersson F(500000000, P_DISPn_CC_PLL0_OUT_MAIN, 3, 0, 0), 1061*4a66e76fSBjorn Andersson F(600000000, P_DISPn_CC_PLL1_OUT_MAIN, 1, 0, 0), 1062*4a66e76fSBjorn Andersson { } 1063*4a66e76fSBjorn Andersson }; 1064*4a66e76fSBjorn Andersson 1065*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_rot_clk_src = { 1066*4a66e76fSBjorn Andersson .cmd_rcgr = 0x210c, 1067*4a66e76fSBjorn Andersson .mnd_width = 0, 1068*4a66e76fSBjorn Andersson .hid_width = 5, 1069*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_5, 1070*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_rot_clk_src, 1071*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1072*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_rot_clk_src", 1073*4a66e76fSBjorn Andersson .parent_data = disp0_cc_parent_data_5, 1074*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp0_cc_parent_data_5), 1075*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 1076*4a66e76fSBjorn Andersson }, 1077*4a66e76fSBjorn Andersson }; 1078*4a66e76fSBjorn Andersson 1079*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_rot_clk_src = { 1080*4a66e76fSBjorn Andersson .cmd_rcgr = 0x210c, 1081*4a66e76fSBjorn Andersson .mnd_width = 0, 1082*4a66e76fSBjorn Andersson .hid_width = 5, 1083*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_5, 1084*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_rot_clk_src, 1085*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1086*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_rot_clk_src", 1087*4a66e76fSBjorn Andersson .parent_data = disp1_cc_parent_data_5, 1088*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp1_cc_parent_data_5), 1089*4a66e76fSBjorn Andersson .ops = &clk_rcg2_shared_ops, 1090*4a66e76fSBjorn Andersson }, 1091*4a66e76fSBjorn Andersson }; 1092*4a66e76fSBjorn Andersson 1093*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_mdss_vsync_clk_src = { 1094*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2124, 1095*4a66e76fSBjorn Andersson .mnd_width = 0, 1096*4a66e76fSBjorn Andersson .hid_width = 5, 1097*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 1098*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 1099*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1100*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_vsync_clk_src", 1101*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 1102*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 1103*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 1104*4a66e76fSBjorn Andersson }, 1105*4a66e76fSBjorn Andersson }; 1106*4a66e76fSBjorn Andersson 1107*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_mdss_vsync_clk_src = { 1108*4a66e76fSBjorn Andersson .cmd_rcgr = 0x2124, 1109*4a66e76fSBjorn Andersson .mnd_width = 0, 1110*4a66e76fSBjorn Andersson .hid_width = 5, 1111*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_2, 1112*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 1113*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1114*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_vsync_clk_src", 1115*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_2, 1116*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 1117*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 1118*4a66e76fSBjorn Andersson }, 1119*4a66e76fSBjorn Andersson }; 1120*4a66e76fSBjorn Andersson 1121*4a66e76fSBjorn Andersson static const struct freq_tbl ftbl_disp_cc_sleep_clk_src[] = { 1122*4a66e76fSBjorn Andersson F(32000, P_SLEEP_CLK, 1, 0, 0), 1123*4a66e76fSBjorn Andersson { } 1124*4a66e76fSBjorn Andersson }; 1125*4a66e76fSBjorn Andersson 1126*4a66e76fSBjorn Andersson static struct clk_rcg2 disp0_cc_sleep_clk_src = { 1127*4a66e76fSBjorn Andersson .cmd_rcgr = 0x6060, 1128*4a66e76fSBjorn Andersson .mnd_width = 0, 1129*4a66e76fSBjorn Andersson .hid_width = 5, 1130*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_7, 1131*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_sleep_clk_src, 1132*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1133*4a66e76fSBjorn Andersson .name = "disp0_cc_sleep_clk_src", 1134*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_7, 1135*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_7), 1136*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 1137*4a66e76fSBjorn Andersson }, 1138*4a66e76fSBjorn Andersson }; 1139*4a66e76fSBjorn Andersson 1140*4a66e76fSBjorn Andersson static struct clk_rcg2 disp1_cc_sleep_clk_src = { 1141*4a66e76fSBjorn Andersson .cmd_rcgr = 0x6060, 1142*4a66e76fSBjorn Andersson .mnd_width = 0, 1143*4a66e76fSBjorn Andersson .hid_width = 5, 1144*4a66e76fSBjorn Andersson .parent_map = disp_cc_parent_map_7, 1145*4a66e76fSBjorn Andersson .freq_tbl = ftbl_disp_cc_sleep_clk_src, 1146*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1147*4a66e76fSBjorn Andersson .name = "disp1_cc_sleep_clk_src", 1148*4a66e76fSBjorn Andersson .parent_data = disp_cc_parent_data_7, 1149*4a66e76fSBjorn Andersson .num_parents = ARRAY_SIZE(disp_cc_parent_data_7), 1150*4a66e76fSBjorn Andersson .ops = &clk_rcg2_ops, 1151*4a66e76fSBjorn Andersson }, 1152*4a66e76fSBjorn Andersson }; 1153*4a66e76fSBjorn Andersson 1154*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte0_div_clk_src = { 1155*4a66e76fSBjorn Andersson .reg = 0x2154, 1156*4a66e76fSBjorn Andersson .shift = 0, 1157*4a66e76fSBjorn Andersson .width = 4, 1158*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1159*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte0_div_clk_src", 1160*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1161*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte0_clk_src.clkr.hw, 1162*4a66e76fSBjorn Andersson }, 1163*4a66e76fSBjorn Andersson .num_parents = 1, 1164*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1165*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ops, 1166*4a66e76fSBjorn Andersson }, 1167*4a66e76fSBjorn Andersson }; 1168*4a66e76fSBjorn Andersson 1169*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte0_div_clk_src = { 1170*4a66e76fSBjorn Andersson .reg = 0x2154, 1171*4a66e76fSBjorn Andersson .shift = 0, 1172*4a66e76fSBjorn Andersson .width = 4, 1173*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1174*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte0_div_clk_src", 1175*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1176*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte0_clk_src.clkr.hw, 1177*4a66e76fSBjorn Andersson }, 1178*4a66e76fSBjorn Andersson .num_parents = 1, 1179*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1180*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ops, 1181*4a66e76fSBjorn Andersson }, 1182*4a66e76fSBjorn Andersson }; 1183*4a66e76fSBjorn Andersson 1184*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_byte1_div_clk_src = { 1185*4a66e76fSBjorn Andersson .reg = 0x2170, 1186*4a66e76fSBjorn Andersson .shift = 0, 1187*4a66e76fSBjorn Andersson .width = 4, 1188*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1189*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte1_div_clk_src", 1190*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1191*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte1_clk_src.clkr.hw, 1192*4a66e76fSBjorn Andersson }, 1193*4a66e76fSBjorn Andersson .num_parents = 1, 1194*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1195*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ops, 1196*4a66e76fSBjorn Andersson }, 1197*4a66e76fSBjorn Andersson }; 1198*4a66e76fSBjorn Andersson 1199*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_byte1_div_clk_src = { 1200*4a66e76fSBjorn Andersson .reg = 0x2170, 1201*4a66e76fSBjorn Andersson .shift = 0, 1202*4a66e76fSBjorn Andersson .width = 4, 1203*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1204*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte1_div_clk_src", 1205*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1206*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte1_clk_src.clkr.hw, 1207*4a66e76fSBjorn Andersson }, 1208*4a66e76fSBjorn Andersson .num_parents = 1, 1209*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1210*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ops, 1211*4a66e76fSBjorn Andersson }, 1212*4a66e76fSBjorn Andersson }; 1213*4a66e76fSBjorn Andersson 1214*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx0_link_div_clk_src = { 1215*4a66e76fSBjorn Andersson .reg = 0x21bc, 1216*4a66e76fSBjorn Andersson .shift = 0, 1217*4a66e76fSBjorn Andersson .width = 4, 1218*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1219*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_link_div_clk_src", 1220*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1221*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_link_clk_src.clkr.hw, 1222*4a66e76fSBjorn Andersson }, 1223*4a66e76fSBjorn Andersson .num_parents = 1, 1224*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1225*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1226*4a66e76fSBjorn Andersson }, 1227*4a66e76fSBjorn Andersson }; 1228*4a66e76fSBjorn Andersson 1229*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx0_link_div_clk_src = { 1230*4a66e76fSBjorn Andersson .reg = 0x21bc, 1231*4a66e76fSBjorn Andersson .shift = 0, 1232*4a66e76fSBjorn Andersson .width = 4, 1233*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1234*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_link_div_clk_src", 1235*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1236*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_link_clk_src.clkr.hw, 1237*4a66e76fSBjorn Andersson }, 1238*4a66e76fSBjorn Andersson .num_parents = 1, 1239*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1240*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1241*4a66e76fSBjorn Andersson }, 1242*4a66e76fSBjorn Andersson }; 1243*4a66e76fSBjorn Andersson 1244*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx1_link_div_clk_src = { 1245*4a66e76fSBjorn Andersson .reg = 0x2280, 1246*4a66e76fSBjorn Andersson .shift = 0, 1247*4a66e76fSBjorn Andersson .width = 4, 1248*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1249*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_link_div_clk_src", 1250*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1251*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_link_clk_src.clkr.hw, 1252*4a66e76fSBjorn Andersson }, 1253*4a66e76fSBjorn Andersson .num_parents = 1, 1254*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1255*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1256*4a66e76fSBjorn Andersson }, 1257*4a66e76fSBjorn Andersson }; 1258*4a66e76fSBjorn Andersson 1259*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx1_link_div_clk_src = { 1260*4a66e76fSBjorn Andersson .reg = 0x2280, 1261*4a66e76fSBjorn Andersson .shift = 0, 1262*4a66e76fSBjorn Andersson .width = 4, 1263*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1264*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_link_div_clk_src", 1265*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1266*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_link_clk_src.clkr.hw, 1267*4a66e76fSBjorn Andersson }, 1268*4a66e76fSBjorn Andersson .num_parents = 1, 1269*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1270*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1271*4a66e76fSBjorn Andersson }, 1272*4a66e76fSBjorn Andersson }; 1273*4a66e76fSBjorn Andersson 1274*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx2_link_div_clk_src = { 1275*4a66e76fSBjorn Andersson .reg = 0x229c, 1276*4a66e76fSBjorn Andersson .shift = 0, 1277*4a66e76fSBjorn Andersson .width = 4, 1278*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1279*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_link_div_clk_src", 1280*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1281*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_link_clk_src.clkr.hw, 1282*4a66e76fSBjorn Andersson }, 1283*4a66e76fSBjorn Andersson .num_parents = 1, 1284*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1285*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1286*4a66e76fSBjorn Andersson }, 1287*4a66e76fSBjorn Andersson }; 1288*4a66e76fSBjorn Andersson 1289*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx2_link_div_clk_src = { 1290*4a66e76fSBjorn Andersson .reg = 0x229c, 1291*4a66e76fSBjorn Andersson .shift = 0, 1292*4a66e76fSBjorn Andersson .width = 4, 1293*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1294*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_link_div_clk_src", 1295*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1296*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_link_clk_src.clkr.hw, 1297*4a66e76fSBjorn Andersson }, 1298*4a66e76fSBjorn Andersson .num_parents = 1, 1299*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1300*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1301*4a66e76fSBjorn Andersson }, 1302*4a66e76fSBjorn Andersson }; 1303*4a66e76fSBjorn Andersson 1304*4a66e76fSBjorn Andersson static struct clk_regmap_div disp0_cc_mdss_dptx3_link_div_clk_src = { 1305*4a66e76fSBjorn Andersson .reg = 0x2330, 1306*4a66e76fSBjorn Andersson .shift = 0, 1307*4a66e76fSBjorn Andersson .width = 4, 1308*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1309*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_link_div_clk_src", 1310*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1311*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx3_link_clk_src.clkr.hw, 1312*4a66e76fSBjorn Andersson }, 1313*4a66e76fSBjorn Andersson .num_parents = 1, 1314*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1315*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1316*4a66e76fSBjorn Andersson }, 1317*4a66e76fSBjorn Andersson }; 1318*4a66e76fSBjorn Andersson 1319*4a66e76fSBjorn Andersson static struct clk_regmap_div disp1_cc_mdss_dptx3_link_div_clk_src = { 1320*4a66e76fSBjorn Andersson .reg = 0x2330, 1321*4a66e76fSBjorn Andersson .shift = 0, 1322*4a66e76fSBjorn Andersson .width = 4, 1323*4a66e76fSBjorn Andersson .clkr.hw.init = &(const struct clk_init_data) { 1324*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_link_div_clk_src", 1325*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1326*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx3_link_clk_src.clkr.hw, 1327*4a66e76fSBjorn Andersson }, 1328*4a66e76fSBjorn Andersson .num_parents = 1, 1329*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1330*4a66e76fSBjorn Andersson .ops = &clk_regmap_div_ro_ops, 1331*4a66e76fSBjorn Andersson }, 1332*4a66e76fSBjorn Andersson }; 1333*4a66e76fSBjorn Andersson 1334*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb1_clk = { 1335*4a66e76fSBjorn Andersson .halt_reg = 0x20c0, 1336*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1337*4a66e76fSBjorn Andersson .clkr = { 1338*4a66e76fSBjorn Andersson .enable_reg = 0x20c0, 1339*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1340*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1341*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_ahb1_clk", 1342*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1343*4a66e76fSBjorn Andersson &disp0_cc_mdss_ahb_clk_src.clkr.hw, 1344*4a66e76fSBjorn Andersson }, 1345*4a66e76fSBjorn Andersson .num_parents = 1, 1346*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1347*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1348*4a66e76fSBjorn Andersson }, 1349*4a66e76fSBjorn Andersson }, 1350*4a66e76fSBjorn Andersson }; 1351*4a66e76fSBjorn Andersson 1352*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb1_clk = { 1353*4a66e76fSBjorn Andersson .halt_reg = 0x20c0, 1354*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1355*4a66e76fSBjorn Andersson .clkr = { 1356*4a66e76fSBjorn Andersson .enable_reg = 0x20c0, 1357*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1358*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1359*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_ahb1_clk", 1360*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1361*4a66e76fSBjorn Andersson &disp1_cc_mdss_ahb_clk_src.clkr.hw, 1362*4a66e76fSBjorn Andersson }, 1363*4a66e76fSBjorn Andersson .num_parents = 1, 1364*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1365*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1366*4a66e76fSBjorn Andersson }, 1367*4a66e76fSBjorn Andersson }, 1368*4a66e76fSBjorn Andersson }; 1369*4a66e76fSBjorn Andersson 1370*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_ahb_clk = { 1371*4a66e76fSBjorn Andersson .halt_reg = 0x20bc, 1372*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1373*4a66e76fSBjorn Andersson .clkr = { 1374*4a66e76fSBjorn Andersson .enable_reg = 0x20bc, 1375*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1376*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1377*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_ahb_clk", 1378*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1379*4a66e76fSBjorn Andersson &disp0_cc_mdss_ahb_clk_src.clkr.hw, 1380*4a66e76fSBjorn Andersson }, 1381*4a66e76fSBjorn Andersson .num_parents = 1, 1382*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1383*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1384*4a66e76fSBjorn Andersson }, 1385*4a66e76fSBjorn Andersson }, 1386*4a66e76fSBjorn Andersson }; 1387*4a66e76fSBjorn Andersson 1388*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_ahb_clk = { 1389*4a66e76fSBjorn Andersson .halt_reg = 0x20bc, 1390*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1391*4a66e76fSBjorn Andersson .clkr = { 1392*4a66e76fSBjorn Andersson .enable_reg = 0x20bc, 1393*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1394*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1395*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_ahb_clk", 1396*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1397*4a66e76fSBjorn Andersson &disp1_cc_mdss_ahb_clk_src.clkr.hw, 1398*4a66e76fSBjorn Andersson }, 1399*4a66e76fSBjorn Andersson .num_parents = 1, 1400*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1401*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1402*4a66e76fSBjorn Andersson }, 1403*4a66e76fSBjorn Andersson }, 1404*4a66e76fSBjorn Andersson }; 1405*4a66e76fSBjorn Andersson 1406*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_clk = { 1407*4a66e76fSBjorn Andersson .halt_reg = 0x2044, 1408*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1409*4a66e76fSBjorn Andersson .clkr = { 1410*4a66e76fSBjorn Andersson .enable_reg = 0x2044, 1411*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1412*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1413*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte0_clk", 1414*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1415*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte0_clk_src.clkr.hw, 1416*4a66e76fSBjorn Andersson }, 1417*4a66e76fSBjorn Andersson .num_parents = 1, 1418*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1419*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1420*4a66e76fSBjorn Andersson }, 1421*4a66e76fSBjorn Andersson }, 1422*4a66e76fSBjorn Andersson }; 1423*4a66e76fSBjorn Andersson 1424*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_clk = { 1425*4a66e76fSBjorn Andersson .halt_reg = 0x2044, 1426*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1427*4a66e76fSBjorn Andersson .clkr = { 1428*4a66e76fSBjorn Andersson .enable_reg = 0x2044, 1429*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1430*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1431*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte0_clk", 1432*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1433*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte0_clk_src.clkr.hw, 1434*4a66e76fSBjorn Andersson }, 1435*4a66e76fSBjorn Andersson .num_parents = 1, 1436*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1437*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1438*4a66e76fSBjorn Andersson }, 1439*4a66e76fSBjorn Andersson }, 1440*4a66e76fSBjorn Andersson }; 1441*4a66e76fSBjorn Andersson 1442*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte0_intf_clk = { 1443*4a66e76fSBjorn Andersson .halt_reg = 0x2048, 1444*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1445*4a66e76fSBjorn Andersson .clkr = { 1446*4a66e76fSBjorn Andersson .enable_reg = 0x2048, 1447*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1448*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1449*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte0_intf_clk", 1450*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1451*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte0_div_clk_src.clkr.hw, 1452*4a66e76fSBjorn Andersson }, 1453*4a66e76fSBjorn Andersson .num_parents = 1, 1454*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1455*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1456*4a66e76fSBjorn Andersson }, 1457*4a66e76fSBjorn Andersson }, 1458*4a66e76fSBjorn Andersson }; 1459*4a66e76fSBjorn Andersson 1460*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte0_intf_clk = { 1461*4a66e76fSBjorn Andersson .halt_reg = 0x2048, 1462*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1463*4a66e76fSBjorn Andersson .clkr = { 1464*4a66e76fSBjorn Andersson .enable_reg = 0x2048, 1465*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1466*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1467*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte0_intf_clk", 1468*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1469*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte0_div_clk_src.clkr.hw, 1470*4a66e76fSBjorn Andersson }, 1471*4a66e76fSBjorn Andersson .num_parents = 1, 1472*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1473*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1474*4a66e76fSBjorn Andersson }, 1475*4a66e76fSBjorn Andersson }, 1476*4a66e76fSBjorn Andersson }; 1477*4a66e76fSBjorn Andersson 1478*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_clk = { 1479*4a66e76fSBjorn Andersson .halt_reg = 0x204c, 1480*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1481*4a66e76fSBjorn Andersson .clkr = { 1482*4a66e76fSBjorn Andersson .enable_reg = 0x204c, 1483*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1484*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1485*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte1_clk", 1486*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1487*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte1_clk_src.clkr.hw, 1488*4a66e76fSBjorn Andersson }, 1489*4a66e76fSBjorn Andersson .num_parents = 1, 1490*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1491*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1492*4a66e76fSBjorn Andersson }, 1493*4a66e76fSBjorn Andersson }, 1494*4a66e76fSBjorn Andersson }; 1495*4a66e76fSBjorn Andersson 1496*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_clk = { 1497*4a66e76fSBjorn Andersson .halt_reg = 0x204c, 1498*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1499*4a66e76fSBjorn Andersson .clkr = { 1500*4a66e76fSBjorn Andersson .enable_reg = 0x204c, 1501*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1502*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1503*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte1_clk", 1504*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1505*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte1_clk_src.clkr.hw, 1506*4a66e76fSBjorn Andersson }, 1507*4a66e76fSBjorn Andersson .num_parents = 1, 1508*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1509*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1510*4a66e76fSBjorn Andersson }, 1511*4a66e76fSBjorn Andersson }, 1512*4a66e76fSBjorn Andersson }; 1513*4a66e76fSBjorn Andersson 1514*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_byte1_intf_clk = { 1515*4a66e76fSBjorn Andersson .halt_reg = 0x2050, 1516*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1517*4a66e76fSBjorn Andersson .clkr = { 1518*4a66e76fSBjorn Andersson .enable_reg = 0x2050, 1519*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1520*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1521*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_byte1_intf_clk", 1522*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1523*4a66e76fSBjorn Andersson &disp0_cc_mdss_byte1_div_clk_src.clkr.hw, 1524*4a66e76fSBjorn Andersson }, 1525*4a66e76fSBjorn Andersson .num_parents = 1, 1526*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1527*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1528*4a66e76fSBjorn Andersson }, 1529*4a66e76fSBjorn Andersson }, 1530*4a66e76fSBjorn Andersson }; 1531*4a66e76fSBjorn Andersson 1532*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_byte1_intf_clk = { 1533*4a66e76fSBjorn Andersson .halt_reg = 0x2050, 1534*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1535*4a66e76fSBjorn Andersson .clkr = { 1536*4a66e76fSBjorn Andersson .enable_reg = 0x2050, 1537*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1538*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1539*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_byte1_intf_clk", 1540*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1541*4a66e76fSBjorn Andersson &disp1_cc_mdss_byte1_div_clk_src.clkr.hw, 1542*4a66e76fSBjorn Andersson }, 1543*4a66e76fSBjorn Andersson .num_parents = 1, 1544*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1545*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1546*4a66e76fSBjorn Andersson }, 1547*4a66e76fSBjorn Andersson }, 1548*4a66e76fSBjorn Andersson }; 1549*4a66e76fSBjorn Andersson 1550*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_aux_clk = { 1551*4a66e76fSBjorn Andersson .halt_reg = 0x206c, 1552*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1553*4a66e76fSBjorn Andersson .clkr = { 1554*4a66e76fSBjorn Andersson .enable_reg = 0x206c, 1555*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1556*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1557*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_aux_clk", 1558*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1559*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_aux_clk_src.clkr.hw, 1560*4a66e76fSBjorn Andersson }, 1561*4a66e76fSBjorn Andersson .num_parents = 1, 1562*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1563*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1564*4a66e76fSBjorn Andersson }, 1565*4a66e76fSBjorn Andersson }, 1566*4a66e76fSBjorn Andersson }; 1567*4a66e76fSBjorn Andersson 1568*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_aux_clk = { 1569*4a66e76fSBjorn Andersson .halt_reg = 0x206c, 1570*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1571*4a66e76fSBjorn Andersson .clkr = { 1572*4a66e76fSBjorn Andersson .enable_reg = 0x206c, 1573*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1574*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1575*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_aux_clk", 1576*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1577*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_aux_clk_src.clkr.hw, 1578*4a66e76fSBjorn Andersson }, 1579*4a66e76fSBjorn Andersson .num_parents = 1, 1580*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1581*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1582*4a66e76fSBjorn Andersson }, 1583*4a66e76fSBjorn Andersson }, 1584*4a66e76fSBjorn Andersson }; 1585*4a66e76fSBjorn Andersson 1586*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_clk = { 1587*4a66e76fSBjorn Andersson .halt_reg = 0x205c, 1588*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1589*4a66e76fSBjorn Andersson .clkr = { 1590*4a66e76fSBjorn Andersson .enable_reg = 0x205c, 1591*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1592*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1593*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_link_clk", 1594*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1595*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_link_clk_src.clkr.hw, 1596*4a66e76fSBjorn Andersson }, 1597*4a66e76fSBjorn Andersson .num_parents = 1, 1598*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1599*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1600*4a66e76fSBjorn Andersson }, 1601*4a66e76fSBjorn Andersson }, 1602*4a66e76fSBjorn Andersson }; 1603*4a66e76fSBjorn Andersson 1604*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_clk = { 1605*4a66e76fSBjorn Andersson .halt_reg = 0x205c, 1606*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1607*4a66e76fSBjorn Andersson .clkr = { 1608*4a66e76fSBjorn Andersson .enable_reg = 0x205c, 1609*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1610*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1611*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_link_clk", 1612*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1613*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_link_clk_src.clkr.hw, 1614*4a66e76fSBjorn Andersson }, 1615*4a66e76fSBjorn Andersson .num_parents = 1, 1616*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1617*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1618*4a66e76fSBjorn Andersson }, 1619*4a66e76fSBjorn Andersson }, 1620*4a66e76fSBjorn Andersson }; 1621*4a66e76fSBjorn Andersson 1622*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_link_intf_clk = { 1623*4a66e76fSBjorn Andersson .halt_reg = 0x2060, 1624*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1625*4a66e76fSBjorn Andersson .clkr = { 1626*4a66e76fSBjorn Andersson .enable_reg = 0x2060, 1627*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1628*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1629*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_link_intf_clk", 1630*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1631*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1632*4a66e76fSBjorn Andersson }, 1633*4a66e76fSBjorn Andersson .num_parents = 1, 1634*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1635*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1636*4a66e76fSBjorn Andersson }, 1637*4a66e76fSBjorn Andersson }, 1638*4a66e76fSBjorn Andersson }; 1639*4a66e76fSBjorn Andersson 1640*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_link_intf_clk = { 1641*4a66e76fSBjorn Andersson .halt_reg = 0x2060, 1642*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1643*4a66e76fSBjorn Andersson .clkr = { 1644*4a66e76fSBjorn Andersson .enable_reg = 0x2060, 1645*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1646*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1647*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_link_intf_clk", 1648*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1649*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1650*4a66e76fSBjorn Andersson }, 1651*4a66e76fSBjorn Andersson .num_parents = 1, 1652*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1653*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1654*4a66e76fSBjorn Andersson }, 1655*4a66e76fSBjorn Andersson }, 1656*4a66e76fSBjorn Andersson }; 1657*4a66e76fSBjorn Andersson 1658*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel0_clk = { 1659*4a66e76fSBjorn Andersson .halt_reg = 0x2070, 1660*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1661*4a66e76fSBjorn Andersson .clkr = { 1662*4a66e76fSBjorn Andersson .enable_reg = 0x2070, 1663*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1664*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1665*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_pixel0_clk", 1666*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1667*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_pixel0_clk_src.clkr.hw, 1668*4a66e76fSBjorn Andersson }, 1669*4a66e76fSBjorn Andersson .num_parents = 1, 1670*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1671*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1672*4a66e76fSBjorn Andersson }, 1673*4a66e76fSBjorn Andersson }, 1674*4a66e76fSBjorn Andersson }; 1675*4a66e76fSBjorn Andersson 1676*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel0_clk = { 1677*4a66e76fSBjorn Andersson .halt_reg = 0x2070, 1678*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1679*4a66e76fSBjorn Andersson .clkr = { 1680*4a66e76fSBjorn Andersson .enable_reg = 0x2070, 1681*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1682*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1683*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_pixel0_clk", 1684*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1685*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_pixel0_clk_src.clkr.hw, 1686*4a66e76fSBjorn Andersson }, 1687*4a66e76fSBjorn Andersson .num_parents = 1, 1688*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1689*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1690*4a66e76fSBjorn Andersson }, 1691*4a66e76fSBjorn Andersson }, 1692*4a66e76fSBjorn Andersson }; 1693*4a66e76fSBjorn Andersson 1694*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_pixel1_clk = { 1695*4a66e76fSBjorn Andersson .halt_reg = 0x2074, 1696*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1697*4a66e76fSBjorn Andersson .clkr = { 1698*4a66e76fSBjorn Andersson .enable_reg = 0x2074, 1699*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1700*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1701*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_pixel1_clk", 1702*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1703*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_pixel1_clk_src.clkr.hw, 1704*4a66e76fSBjorn Andersson }, 1705*4a66e76fSBjorn Andersson .num_parents = 1, 1706*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1707*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1708*4a66e76fSBjorn Andersson }, 1709*4a66e76fSBjorn Andersson }, 1710*4a66e76fSBjorn Andersson }; 1711*4a66e76fSBjorn Andersson 1712*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_pixel1_clk = { 1713*4a66e76fSBjorn Andersson .halt_reg = 0x2074, 1714*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1715*4a66e76fSBjorn Andersson .clkr = { 1716*4a66e76fSBjorn Andersson .enable_reg = 0x2074, 1717*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1718*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1719*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_pixel1_clk", 1720*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1721*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_pixel1_clk_src.clkr.hw, 1722*4a66e76fSBjorn Andersson }, 1723*4a66e76fSBjorn Andersson .num_parents = 1, 1724*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1725*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1726*4a66e76fSBjorn Andersson }, 1727*4a66e76fSBjorn Andersson }, 1728*4a66e76fSBjorn Andersson }; 1729*4a66e76fSBjorn Andersson 1730*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx0_usb_router_link_intf_clk = { 1731*4a66e76fSBjorn Andersson .halt_reg = 0x2064, 1732*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1733*4a66e76fSBjorn Andersson .clkr = { 1734*4a66e76fSBjorn Andersson .enable_reg = 0x2064, 1735*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1736*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1737*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx0_usb_router_link_intf_clk", 1738*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1739*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1740*4a66e76fSBjorn Andersson }, 1741*4a66e76fSBjorn Andersson .num_parents = 1, 1742*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1743*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1744*4a66e76fSBjorn Andersson }, 1745*4a66e76fSBjorn Andersson }, 1746*4a66e76fSBjorn Andersson }; 1747*4a66e76fSBjorn Andersson 1748*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx0_usb_router_link_intf_clk = { 1749*4a66e76fSBjorn Andersson .halt_reg = 0x2064, 1750*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1751*4a66e76fSBjorn Andersson .clkr = { 1752*4a66e76fSBjorn Andersson .enable_reg = 0x2064, 1753*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1754*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1755*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx0_usb_router_link_intf_clk", 1756*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1757*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 1758*4a66e76fSBjorn Andersson }, 1759*4a66e76fSBjorn Andersson .num_parents = 1, 1760*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1761*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1762*4a66e76fSBjorn Andersson }, 1763*4a66e76fSBjorn Andersson }, 1764*4a66e76fSBjorn Andersson }; 1765*4a66e76fSBjorn Andersson 1766*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_aux_clk = { 1767*4a66e76fSBjorn Andersson .halt_reg = 0x20a0, 1768*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1769*4a66e76fSBjorn Andersson .clkr = { 1770*4a66e76fSBjorn Andersson .enable_reg = 0x20a0, 1771*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1772*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1773*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_aux_clk", 1774*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1775*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_aux_clk_src.clkr.hw, 1776*4a66e76fSBjorn Andersson }, 1777*4a66e76fSBjorn Andersson .num_parents = 1, 1778*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1779*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1780*4a66e76fSBjorn Andersson }, 1781*4a66e76fSBjorn Andersson }, 1782*4a66e76fSBjorn Andersson }; 1783*4a66e76fSBjorn Andersson 1784*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_aux_clk = { 1785*4a66e76fSBjorn Andersson .halt_reg = 0x20a0, 1786*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1787*4a66e76fSBjorn Andersson .clkr = { 1788*4a66e76fSBjorn Andersson .enable_reg = 0x20a0, 1789*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1790*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1791*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_aux_clk", 1792*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1793*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_aux_clk_src.clkr.hw, 1794*4a66e76fSBjorn Andersson }, 1795*4a66e76fSBjorn Andersson .num_parents = 1, 1796*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1797*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1798*4a66e76fSBjorn Andersson }, 1799*4a66e76fSBjorn Andersson }, 1800*4a66e76fSBjorn Andersson }; 1801*4a66e76fSBjorn Andersson 1802*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_clk = { 1803*4a66e76fSBjorn Andersson .halt_reg = 0x2084, 1804*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1805*4a66e76fSBjorn Andersson .clkr = { 1806*4a66e76fSBjorn Andersson .enable_reg = 0x2084, 1807*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1808*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1809*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_link_clk", 1810*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1811*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_link_clk_src.clkr.hw, 1812*4a66e76fSBjorn Andersson }, 1813*4a66e76fSBjorn Andersson .num_parents = 1, 1814*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1815*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1816*4a66e76fSBjorn Andersson }, 1817*4a66e76fSBjorn Andersson }, 1818*4a66e76fSBjorn Andersson }; 1819*4a66e76fSBjorn Andersson 1820*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_clk = { 1821*4a66e76fSBjorn Andersson .halt_reg = 0x2084, 1822*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1823*4a66e76fSBjorn Andersson .clkr = { 1824*4a66e76fSBjorn Andersson .enable_reg = 0x2084, 1825*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1826*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1827*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_link_clk", 1828*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1829*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_link_clk_src.clkr.hw, 1830*4a66e76fSBjorn Andersson }, 1831*4a66e76fSBjorn Andersson .num_parents = 1, 1832*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1833*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1834*4a66e76fSBjorn Andersson }, 1835*4a66e76fSBjorn Andersson }, 1836*4a66e76fSBjorn Andersson }; 1837*4a66e76fSBjorn Andersson 1838*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_link_intf_clk = { 1839*4a66e76fSBjorn Andersson .halt_reg = 0x2088, 1840*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1841*4a66e76fSBjorn Andersson .clkr = { 1842*4a66e76fSBjorn Andersson .enable_reg = 0x2088, 1843*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1844*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1845*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_link_intf_clk", 1846*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1847*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1848*4a66e76fSBjorn Andersson }, 1849*4a66e76fSBjorn Andersson .num_parents = 1, 1850*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1851*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1852*4a66e76fSBjorn Andersson }, 1853*4a66e76fSBjorn Andersson }, 1854*4a66e76fSBjorn Andersson }; 1855*4a66e76fSBjorn Andersson 1856*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_link_intf_clk = { 1857*4a66e76fSBjorn Andersson .halt_reg = 0x2088, 1858*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1859*4a66e76fSBjorn Andersson .clkr = { 1860*4a66e76fSBjorn Andersson .enable_reg = 0x2088, 1861*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1862*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1863*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_link_intf_clk", 1864*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1865*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1866*4a66e76fSBjorn Andersson }, 1867*4a66e76fSBjorn Andersson .num_parents = 1, 1868*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1869*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1870*4a66e76fSBjorn Andersson }, 1871*4a66e76fSBjorn Andersson }, 1872*4a66e76fSBjorn Andersson }; 1873*4a66e76fSBjorn Andersson 1874*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel0_clk = { 1875*4a66e76fSBjorn Andersson .halt_reg = 0x2078, 1876*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1877*4a66e76fSBjorn Andersson .clkr = { 1878*4a66e76fSBjorn Andersson .enable_reg = 0x2078, 1879*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1880*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1881*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_pixel0_clk", 1882*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1883*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_pixel0_clk_src.clkr.hw, 1884*4a66e76fSBjorn Andersson }, 1885*4a66e76fSBjorn Andersson .num_parents = 1, 1886*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1887*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1888*4a66e76fSBjorn Andersson }, 1889*4a66e76fSBjorn Andersson }, 1890*4a66e76fSBjorn Andersson }; 1891*4a66e76fSBjorn Andersson 1892*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel0_clk = { 1893*4a66e76fSBjorn Andersson .halt_reg = 0x2078, 1894*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1895*4a66e76fSBjorn Andersson .clkr = { 1896*4a66e76fSBjorn Andersson .enable_reg = 0x2078, 1897*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1898*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1899*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_pixel0_clk", 1900*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1901*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_pixel0_clk_src.clkr.hw, 1902*4a66e76fSBjorn Andersson }, 1903*4a66e76fSBjorn Andersson .num_parents = 1, 1904*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1905*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1906*4a66e76fSBjorn Andersson }, 1907*4a66e76fSBjorn Andersson }, 1908*4a66e76fSBjorn Andersson }; 1909*4a66e76fSBjorn Andersson 1910*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_pixel1_clk = { 1911*4a66e76fSBjorn Andersson .halt_reg = 0x236c, 1912*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1913*4a66e76fSBjorn Andersson .clkr = { 1914*4a66e76fSBjorn Andersson .enable_reg = 0x236c, 1915*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1916*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1917*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_pixel1_clk", 1918*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1919*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_pixel1_clk_src.clkr.hw, 1920*4a66e76fSBjorn Andersson }, 1921*4a66e76fSBjorn Andersson .num_parents = 1, 1922*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1923*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1924*4a66e76fSBjorn Andersson }, 1925*4a66e76fSBjorn Andersson }, 1926*4a66e76fSBjorn Andersson }; 1927*4a66e76fSBjorn Andersson 1928*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_pixel1_clk = { 1929*4a66e76fSBjorn Andersson .halt_reg = 0x236c, 1930*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1931*4a66e76fSBjorn Andersson .clkr = { 1932*4a66e76fSBjorn Andersson .enable_reg = 0x236c, 1933*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1934*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1935*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_pixel1_clk", 1936*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1937*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_pixel1_clk_src.clkr.hw, 1938*4a66e76fSBjorn Andersson }, 1939*4a66e76fSBjorn Andersson .num_parents = 1, 1940*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1941*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1942*4a66e76fSBjorn Andersson }, 1943*4a66e76fSBjorn Andersson }, 1944*4a66e76fSBjorn Andersson }; 1945*4a66e76fSBjorn Andersson 1946*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx1_usb_router_link_intf_clk = { 1947*4a66e76fSBjorn Andersson .halt_reg = 0x208c, 1948*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1949*4a66e76fSBjorn Andersson .clkr = { 1950*4a66e76fSBjorn Andersson .enable_reg = 0x208c, 1951*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1952*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1953*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx1_usb_router_link_intf_clk", 1954*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1955*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1956*4a66e76fSBjorn Andersson }, 1957*4a66e76fSBjorn Andersson .num_parents = 1, 1958*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1959*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1960*4a66e76fSBjorn Andersson }, 1961*4a66e76fSBjorn Andersson }, 1962*4a66e76fSBjorn Andersson }; 1963*4a66e76fSBjorn Andersson 1964*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx1_usb_router_link_intf_clk = { 1965*4a66e76fSBjorn Andersson .halt_reg = 0x208c, 1966*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1967*4a66e76fSBjorn Andersson .clkr = { 1968*4a66e76fSBjorn Andersson .enable_reg = 0x208c, 1969*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1970*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1971*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx1_usb_router_link_intf_clk", 1972*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1973*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 1974*4a66e76fSBjorn Andersson }, 1975*4a66e76fSBjorn Andersson .num_parents = 1, 1976*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1977*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1978*4a66e76fSBjorn Andersson }, 1979*4a66e76fSBjorn Andersson }, 1980*4a66e76fSBjorn Andersson }; 1981*4a66e76fSBjorn Andersson 1982*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_aux_clk = { 1983*4a66e76fSBjorn Andersson .halt_reg = 0x20a4, 1984*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 1985*4a66e76fSBjorn Andersson .clkr = { 1986*4a66e76fSBjorn Andersson .enable_reg = 0x20a4, 1987*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 1988*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 1989*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_aux_clk", 1990*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 1991*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_aux_clk_src.clkr.hw, 1992*4a66e76fSBjorn Andersson }, 1993*4a66e76fSBjorn Andersson .num_parents = 1, 1994*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 1995*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 1996*4a66e76fSBjorn Andersson }, 1997*4a66e76fSBjorn Andersson }, 1998*4a66e76fSBjorn Andersson }; 1999*4a66e76fSBjorn Andersson 2000*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_aux_clk = { 2001*4a66e76fSBjorn Andersson .halt_reg = 0x20a4, 2002*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2003*4a66e76fSBjorn Andersson .clkr = { 2004*4a66e76fSBjorn Andersson .enable_reg = 0x20a4, 2005*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2006*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2007*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_aux_clk", 2008*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2009*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_aux_clk_src.clkr.hw, 2010*4a66e76fSBjorn Andersson }, 2011*4a66e76fSBjorn Andersson .num_parents = 1, 2012*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2013*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2014*4a66e76fSBjorn Andersson }, 2015*4a66e76fSBjorn Andersson }, 2016*4a66e76fSBjorn Andersson }; 2017*4a66e76fSBjorn Andersson 2018*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_clk = { 2019*4a66e76fSBjorn Andersson .halt_reg = 0x2090, 2020*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2021*4a66e76fSBjorn Andersson .clkr = { 2022*4a66e76fSBjorn Andersson .enable_reg = 0x2090, 2023*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2024*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2025*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_link_clk", 2026*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2027*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_link_clk_src.clkr.hw, 2028*4a66e76fSBjorn Andersson }, 2029*4a66e76fSBjorn Andersson .num_parents = 1, 2030*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2031*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2032*4a66e76fSBjorn Andersson }, 2033*4a66e76fSBjorn Andersson }, 2034*4a66e76fSBjorn Andersson }; 2035*4a66e76fSBjorn Andersson 2036*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_clk = { 2037*4a66e76fSBjorn Andersson .halt_reg = 0x2090, 2038*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2039*4a66e76fSBjorn Andersson .clkr = { 2040*4a66e76fSBjorn Andersson .enable_reg = 0x2090, 2041*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2042*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2043*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_link_clk", 2044*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2045*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_link_clk_src.clkr.hw, 2046*4a66e76fSBjorn Andersson }, 2047*4a66e76fSBjorn Andersson .num_parents = 1, 2048*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2049*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2050*4a66e76fSBjorn Andersson }, 2051*4a66e76fSBjorn Andersson }, 2052*4a66e76fSBjorn Andersson }; 2053*4a66e76fSBjorn Andersson 2054*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_link_intf_clk = { 2055*4a66e76fSBjorn Andersson .halt_reg = 0x2094, 2056*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2057*4a66e76fSBjorn Andersson .clkr = { 2058*4a66e76fSBjorn Andersson .enable_reg = 0x2094, 2059*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2060*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2061*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_link_intf_clk", 2062*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2063*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_link_div_clk_src.clkr.hw, 2064*4a66e76fSBjorn Andersson }, 2065*4a66e76fSBjorn Andersson .num_parents = 1, 2066*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2067*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2068*4a66e76fSBjorn Andersson }, 2069*4a66e76fSBjorn Andersson }, 2070*4a66e76fSBjorn Andersson }; 2071*4a66e76fSBjorn Andersson 2072*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_link_intf_clk = { 2073*4a66e76fSBjorn Andersson .halt_reg = 0x2094, 2074*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2075*4a66e76fSBjorn Andersson .clkr = { 2076*4a66e76fSBjorn Andersson .enable_reg = 0x2094, 2077*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2078*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2079*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_link_intf_clk", 2080*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2081*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_link_div_clk_src.clkr.hw, 2082*4a66e76fSBjorn Andersson }, 2083*4a66e76fSBjorn Andersson .num_parents = 1, 2084*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2085*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2086*4a66e76fSBjorn Andersson }, 2087*4a66e76fSBjorn Andersson }, 2088*4a66e76fSBjorn Andersson }; 2089*4a66e76fSBjorn Andersson 2090*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel0_clk = { 2091*4a66e76fSBjorn Andersson .halt_reg = 0x207c, 2092*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2093*4a66e76fSBjorn Andersson .clkr = { 2094*4a66e76fSBjorn Andersson .enable_reg = 0x207c, 2095*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2096*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2097*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_pixel0_clk", 2098*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2099*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_pixel0_clk_src.clkr.hw, 2100*4a66e76fSBjorn Andersson }, 2101*4a66e76fSBjorn Andersson .num_parents = 1, 2102*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2103*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2104*4a66e76fSBjorn Andersson }, 2105*4a66e76fSBjorn Andersson }, 2106*4a66e76fSBjorn Andersson }; 2107*4a66e76fSBjorn Andersson 2108*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel0_clk = { 2109*4a66e76fSBjorn Andersson .halt_reg = 0x207c, 2110*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2111*4a66e76fSBjorn Andersson .clkr = { 2112*4a66e76fSBjorn Andersson .enable_reg = 0x207c, 2113*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2114*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2115*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_pixel0_clk", 2116*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2117*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_pixel0_clk_src.clkr.hw, 2118*4a66e76fSBjorn Andersson }, 2119*4a66e76fSBjorn Andersson .num_parents = 1, 2120*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2121*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2122*4a66e76fSBjorn Andersson }, 2123*4a66e76fSBjorn Andersson }, 2124*4a66e76fSBjorn Andersson }; 2125*4a66e76fSBjorn Andersson 2126*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx2_pixel1_clk = { 2127*4a66e76fSBjorn Andersson .halt_reg = 0x2080, 2128*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2129*4a66e76fSBjorn Andersson .clkr = { 2130*4a66e76fSBjorn Andersson .enable_reg = 0x2080, 2131*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2132*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2133*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx2_pixel1_clk", 2134*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2135*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx2_pixel1_clk_src.clkr.hw, 2136*4a66e76fSBjorn Andersson }, 2137*4a66e76fSBjorn Andersson .num_parents = 1, 2138*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2139*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2140*4a66e76fSBjorn Andersson }, 2141*4a66e76fSBjorn Andersson }, 2142*4a66e76fSBjorn Andersson }; 2143*4a66e76fSBjorn Andersson 2144*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx2_pixel1_clk = { 2145*4a66e76fSBjorn Andersson .halt_reg = 0x2080, 2146*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2147*4a66e76fSBjorn Andersson .clkr = { 2148*4a66e76fSBjorn Andersson .enable_reg = 0x2080, 2149*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2150*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2151*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx2_pixel1_clk", 2152*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2153*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx2_pixel1_clk_src.clkr.hw, 2154*4a66e76fSBjorn Andersson }, 2155*4a66e76fSBjorn Andersson .num_parents = 1, 2156*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2157*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2158*4a66e76fSBjorn Andersson }, 2159*4a66e76fSBjorn Andersson }, 2160*4a66e76fSBjorn Andersson }; 2161*4a66e76fSBjorn Andersson 2162*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_aux_clk = { 2163*4a66e76fSBjorn Andersson .halt_reg = 0x20b8, 2164*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2165*4a66e76fSBjorn Andersson .clkr = { 2166*4a66e76fSBjorn Andersson .enable_reg = 0x20b8, 2167*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2168*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2169*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_aux_clk", 2170*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2171*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx3_aux_clk_src.clkr.hw, 2172*4a66e76fSBjorn Andersson }, 2173*4a66e76fSBjorn Andersson .num_parents = 1, 2174*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2175*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2176*4a66e76fSBjorn Andersson }, 2177*4a66e76fSBjorn Andersson }, 2178*4a66e76fSBjorn Andersson }; 2179*4a66e76fSBjorn Andersson 2180*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_aux_clk = { 2181*4a66e76fSBjorn Andersson .halt_reg = 0x20b8, 2182*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2183*4a66e76fSBjorn Andersson .clkr = { 2184*4a66e76fSBjorn Andersson .enable_reg = 0x20b8, 2185*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2186*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2187*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_aux_clk", 2188*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2189*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx3_aux_clk_src.clkr.hw, 2190*4a66e76fSBjorn Andersson }, 2191*4a66e76fSBjorn Andersson .num_parents = 1, 2192*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2193*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2194*4a66e76fSBjorn Andersson }, 2195*4a66e76fSBjorn Andersson }, 2196*4a66e76fSBjorn Andersson }; 2197*4a66e76fSBjorn Andersson 2198*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_clk = { 2199*4a66e76fSBjorn Andersson .halt_reg = 0x20ac, 2200*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2201*4a66e76fSBjorn Andersson .clkr = { 2202*4a66e76fSBjorn Andersson .enable_reg = 0x20ac, 2203*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2204*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2205*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_link_clk", 2206*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2207*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx3_link_clk_src.clkr.hw, 2208*4a66e76fSBjorn Andersson }, 2209*4a66e76fSBjorn Andersson .num_parents = 1, 2210*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2211*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2212*4a66e76fSBjorn Andersson }, 2213*4a66e76fSBjorn Andersson }, 2214*4a66e76fSBjorn Andersson }; 2215*4a66e76fSBjorn Andersson 2216*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_clk = { 2217*4a66e76fSBjorn Andersson .halt_reg = 0x20ac, 2218*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2219*4a66e76fSBjorn Andersson .clkr = { 2220*4a66e76fSBjorn Andersson .enable_reg = 0x20ac, 2221*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2222*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2223*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_link_clk", 2224*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2225*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx3_link_clk_src.clkr.hw, 2226*4a66e76fSBjorn Andersson }, 2227*4a66e76fSBjorn Andersson .num_parents = 1, 2228*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2229*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2230*4a66e76fSBjorn Andersson }, 2231*4a66e76fSBjorn Andersson }, 2232*4a66e76fSBjorn Andersson }; 2233*4a66e76fSBjorn Andersson 2234*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_link_intf_clk = { 2235*4a66e76fSBjorn Andersson .halt_reg = 0x20b0, 2236*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2237*4a66e76fSBjorn Andersson .clkr = { 2238*4a66e76fSBjorn Andersson .enable_reg = 0x20b0, 2239*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2240*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2241*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_link_intf_clk", 2242*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2243*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx3_link_div_clk_src.clkr.hw, 2244*4a66e76fSBjorn Andersson }, 2245*4a66e76fSBjorn Andersson .num_parents = 1, 2246*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2247*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2248*4a66e76fSBjorn Andersson }, 2249*4a66e76fSBjorn Andersson }, 2250*4a66e76fSBjorn Andersson }; 2251*4a66e76fSBjorn Andersson 2252*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_link_intf_clk = { 2253*4a66e76fSBjorn Andersson .halt_reg = 0x20b0, 2254*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2255*4a66e76fSBjorn Andersson .clkr = { 2256*4a66e76fSBjorn Andersson .enable_reg = 0x20b0, 2257*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2258*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2259*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_link_intf_clk", 2260*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2261*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx3_link_div_clk_src.clkr.hw, 2262*4a66e76fSBjorn Andersson }, 2263*4a66e76fSBjorn Andersson .num_parents = 1, 2264*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2265*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2266*4a66e76fSBjorn Andersson }, 2267*4a66e76fSBjorn Andersson }, 2268*4a66e76fSBjorn Andersson }; 2269*4a66e76fSBjorn Andersson 2270*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_dptx3_pixel0_clk = { 2271*4a66e76fSBjorn Andersson .halt_reg = 0x20a8, 2272*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2273*4a66e76fSBjorn Andersson .clkr = { 2274*4a66e76fSBjorn Andersson .enable_reg = 0x20a8, 2275*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2276*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2277*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_dptx3_pixel0_clk", 2278*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2279*4a66e76fSBjorn Andersson &disp0_cc_mdss_dptx3_pixel0_clk_src.clkr.hw, 2280*4a66e76fSBjorn Andersson }, 2281*4a66e76fSBjorn Andersson .num_parents = 1, 2282*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2283*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2284*4a66e76fSBjorn Andersson }, 2285*4a66e76fSBjorn Andersson }, 2286*4a66e76fSBjorn Andersson }; 2287*4a66e76fSBjorn Andersson 2288*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_dptx3_pixel0_clk = { 2289*4a66e76fSBjorn Andersson .halt_reg = 0x20a8, 2290*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2291*4a66e76fSBjorn Andersson .clkr = { 2292*4a66e76fSBjorn Andersson .enable_reg = 0x20a8, 2293*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2294*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2295*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_dptx3_pixel0_clk", 2296*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2297*4a66e76fSBjorn Andersson &disp1_cc_mdss_dptx3_pixel0_clk_src.clkr.hw, 2298*4a66e76fSBjorn Andersson }, 2299*4a66e76fSBjorn Andersson .num_parents = 1, 2300*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2301*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2302*4a66e76fSBjorn Andersson }, 2303*4a66e76fSBjorn Andersson }, 2304*4a66e76fSBjorn Andersson }; 2305*4a66e76fSBjorn Andersson 2306*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc0_clk = { 2307*4a66e76fSBjorn Andersson .halt_reg = 0x2054, 2308*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2309*4a66e76fSBjorn Andersson .clkr = { 2310*4a66e76fSBjorn Andersson .enable_reg = 0x2054, 2311*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2312*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2313*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_esc0_clk", 2314*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2315*4a66e76fSBjorn Andersson &disp0_cc_mdss_esc0_clk_src.clkr.hw, 2316*4a66e76fSBjorn Andersson }, 2317*4a66e76fSBjorn Andersson .num_parents = 1, 2318*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2319*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2320*4a66e76fSBjorn Andersson }, 2321*4a66e76fSBjorn Andersson }, 2322*4a66e76fSBjorn Andersson }; 2323*4a66e76fSBjorn Andersson 2324*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc0_clk = { 2325*4a66e76fSBjorn Andersson .halt_reg = 0x2054, 2326*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2327*4a66e76fSBjorn Andersson .clkr = { 2328*4a66e76fSBjorn Andersson .enable_reg = 0x2054, 2329*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2330*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2331*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_esc0_clk", 2332*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2333*4a66e76fSBjorn Andersson &disp1_cc_mdss_esc0_clk_src.clkr.hw, 2334*4a66e76fSBjorn Andersson }, 2335*4a66e76fSBjorn Andersson .num_parents = 1, 2336*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2337*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2338*4a66e76fSBjorn Andersson }, 2339*4a66e76fSBjorn Andersson }, 2340*4a66e76fSBjorn Andersson }; 2341*4a66e76fSBjorn Andersson 2342*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_esc1_clk = { 2343*4a66e76fSBjorn Andersson .halt_reg = 0x2058, 2344*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2345*4a66e76fSBjorn Andersson .clkr = { 2346*4a66e76fSBjorn Andersson .enable_reg = 0x2058, 2347*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2348*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2349*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_esc1_clk", 2350*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2351*4a66e76fSBjorn Andersson &disp0_cc_mdss_esc1_clk_src.clkr.hw, 2352*4a66e76fSBjorn Andersson }, 2353*4a66e76fSBjorn Andersson .num_parents = 1, 2354*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2355*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2356*4a66e76fSBjorn Andersson }, 2357*4a66e76fSBjorn Andersson }, 2358*4a66e76fSBjorn Andersson }; 2359*4a66e76fSBjorn Andersson 2360*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_esc1_clk = { 2361*4a66e76fSBjorn Andersson .halt_reg = 0x2058, 2362*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2363*4a66e76fSBjorn Andersson .clkr = { 2364*4a66e76fSBjorn Andersson .enable_reg = 0x2058, 2365*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2366*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2367*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_esc1_clk", 2368*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2369*4a66e76fSBjorn Andersson &disp1_cc_mdss_esc1_clk_src.clkr.hw, 2370*4a66e76fSBjorn Andersson }, 2371*4a66e76fSBjorn Andersson .num_parents = 1, 2372*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2373*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2374*4a66e76fSBjorn Andersson }, 2375*4a66e76fSBjorn Andersson }, 2376*4a66e76fSBjorn Andersson }; 2377*4a66e76fSBjorn Andersson 2378*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp1_clk = { 2379*4a66e76fSBjorn Andersson .halt_reg = 0x2014, 2380*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2381*4a66e76fSBjorn Andersson .clkr = { 2382*4a66e76fSBjorn Andersson .enable_reg = 0x2014, 2383*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2384*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2385*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_mdp1_clk", 2386*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2387*4a66e76fSBjorn Andersson &disp0_cc_mdss_mdp_clk_src.clkr.hw, 2388*4a66e76fSBjorn Andersson }, 2389*4a66e76fSBjorn Andersson .num_parents = 1, 2390*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2391*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2392*4a66e76fSBjorn Andersson }, 2393*4a66e76fSBjorn Andersson }, 2394*4a66e76fSBjorn Andersson }; 2395*4a66e76fSBjorn Andersson 2396*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp1_clk = { 2397*4a66e76fSBjorn Andersson .halt_reg = 0x2014, 2398*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2399*4a66e76fSBjorn Andersson .clkr = { 2400*4a66e76fSBjorn Andersson .enable_reg = 0x2014, 2401*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2402*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2403*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_mdp1_clk", 2404*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2405*4a66e76fSBjorn Andersson &disp1_cc_mdss_mdp_clk_src.clkr.hw, 2406*4a66e76fSBjorn Andersson }, 2407*4a66e76fSBjorn Andersson .num_parents = 1, 2408*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2409*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2410*4a66e76fSBjorn Andersson }, 2411*4a66e76fSBjorn Andersson }, 2412*4a66e76fSBjorn Andersson }; 2413*4a66e76fSBjorn Andersson 2414*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_clk = { 2415*4a66e76fSBjorn Andersson .halt_reg = 0x200c, 2416*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2417*4a66e76fSBjorn Andersson .clkr = { 2418*4a66e76fSBjorn Andersson .enable_reg = 0x200c, 2419*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2420*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2421*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_mdp_clk", 2422*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2423*4a66e76fSBjorn Andersson &disp0_cc_mdss_mdp_clk_src.clkr.hw, 2424*4a66e76fSBjorn Andersson }, 2425*4a66e76fSBjorn Andersson .num_parents = 1, 2426*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2427*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2428*4a66e76fSBjorn Andersson }, 2429*4a66e76fSBjorn Andersson }, 2430*4a66e76fSBjorn Andersson }; 2431*4a66e76fSBjorn Andersson 2432*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_clk = { 2433*4a66e76fSBjorn Andersson .halt_reg = 0x200c, 2434*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2435*4a66e76fSBjorn Andersson .clkr = { 2436*4a66e76fSBjorn Andersson .enable_reg = 0x200c, 2437*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2438*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2439*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_mdp_clk", 2440*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2441*4a66e76fSBjorn Andersson &disp1_cc_mdss_mdp_clk_src.clkr.hw, 2442*4a66e76fSBjorn Andersson }, 2443*4a66e76fSBjorn Andersson .num_parents = 1, 2444*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2445*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2446*4a66e76fSBjorn Andersson }, 2447*4a66e76fSBjorn Andersson }, 2448*4a66e76fSBjorn Andersson }; 2449*4a66e76fSBjorn Andersson 2450*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut1_clk = { 2451*4a66e76fSBjorn Andersson .halt_reg = 0x2034, 2452*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2453*4a66e76fSBjorn Andersson .clkr = { 2454*4a66e76fSBjorn Andersson .enable_reg = 0x2034, 2455*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2456*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2457*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_mdp_lut1_clk", 2458*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2459*4a66e76fSBjorn Andersson &disp0_cc_mdss_mdp_clk_src.clkr.hw, 2460*4a66e76fSBjorn Andersson }, 2461*4a66e76fSBjorn Andersson .num_parents = 1, 2462*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2463*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2464*4a66e76fSBjorn Andersson }, 2465*4a66e76fSBjorn Andersson }, 2466*4a66e76fSBjorn Andersson }; 2467*4a66e76fSBjorn Andersson 2468*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut1_clk = { 2469*4a66e76fSBjorn Andersson .halt_reg = 0x2034, 2470*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2471*4a66e76fSBjorn Andersson .clkr = { 2472*4a66e76fSBjorn Andersson .enable_reg = 0x2034, 2473*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2474*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2475*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_mdp_lut1_clk", 2476*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2477*4a66e76fSBjorn Andersson &disp1_cc_mdss_mdp_clk_src.clkr.hw, 2478*4a66e76fSBjorn Andersson }, 2479*4a66e76fSBjorn Andersson .num_parents = 1, 2480*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2481*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2482*4a66e76fSBjorn Andersson }, 2483*4a66e76fSBjorn Andersson }, 2484*4a66e76fSBjorn Andersson }; 2485*4a66e76fSBjorn Andersson 2486*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_mdp_lut_clk = { 2487*4a66e76fSBjorn Andersson .halt_reg = 0x202c, 2488*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT_VOTED, 2489*4a66e76fSBjorn Andersson .clkr = { 2490*4a66e76fSBjorn Andersson .enable_reg = 0x202c, 2491*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2492*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2493*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_mdp_lut_clk", 2494*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2495*4a66e76fSBjorn Andersson &disp0_cc_mdss_mdp_clk_src.clkr.hw, 2496*4a66e76fSBjorn Andersson }, 2497*4a66e76fSBjorn Andersson .num_parents = 1, 2498*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2499*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2500*4a66e76fSBjorn Andersson }, 2501*4a66e76fSBjorn Andersson }, 2502*4a66e76fSBjorn Andersson }; 2503*4a66e76fSBjorn Andersson 2504*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_mdp_lut_clk = { 2505*4a66e76fSBjorn Andersson .halt_reg = 0x202c, 2506*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT_VOTED, 2507*4a66e76fSBjorn Andersson .clkr = { 2508*4a66e76fSBjorn Andersson .enable_reg = 0x202c, 2509*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2510*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2511*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_mdp_lut_clk", 2512*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2513*4a66e76fSBjorn Andersson &disp1_cc_mdss_mdp_clk_src.clkr.hw, 2514*4a66e76fSBjorn Andersson }, 2515*4a66e76fSBjorn Andersson .num_parents = 1, 2516*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2517*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2518*4a66e76fSBjorn Andersson }, 2519*4a66e76fSBjorn Andersson }, 2520*4a66e76fSBjorn Andersson }; 2521*4a66e76fSBjorn Andersson 2522*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_non_gdsc_ahb_clk = { 2523*4a66e76fSBjorn Andersson .halt_reg = 0x4004, 2524*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT_VOTED, 2525*4a66e76fSBjorn Andersson .clkr = { 2526*4a66e76fSBjorn Andersson .enable_reg = 0x4004, 2527*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2528*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2529*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_non_gdsc_ahb_clk", 2530*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2531*4a66e76fSBjorn Andersson &disp0_cc_mdss_ahb_clk_src.clkr.hw, 2532*4a66e76fSBjorn Andersson }, 2533*4a66e76fSBjorn Andersson .num_parents = 1, 2534*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2535*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2536*4a66e76fSBjorn Andersson }, 2537*4a66e76fSBjorn Andersson }, 2538*4a66e76fSBjorn Andersson }; 2539*4a66e76fSBjorn Andersson 2540*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_non_gdsc_ahb_clk = { 2541*4a66e76fSBjorn Andersson .halt_reg = 0x4004, 2542*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT_VOTED, 2543*4a66e76fSBjorn Andersson .clkr = { 2544*4a66e76fSBjorn Andersson .enable_reg = 0x4004, 2545*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2546*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2547*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_non_gdsc_ahb_clk", 2548*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2549*4a66e76fSBjorn Andersson &disp1_cc_mdss_ahb_clk_src.clkr.hw, 2550*4a66e76fSBjorn Andersson }, 2551*4a66e76fSBjorn Andersson .num_parents = 1, 2552*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2553*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2554*4a66e76fSBjorn Andersson }, 2555*4a66e76fSBjorn Andersson }, 2556*4a66e76fSBjorn Andersson }; 2557*4a66e76fSBjorn Andersson 2558*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk0_clk = { 2559*4a66e76fSBjorn Andersson .halt_reg = 0x2004, 2560*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2561*4a66e76fSBjorn Andersson .clkr = { 2562*4a66e76fSBjorn Andersson .enable_reg = 0x2004, 2563*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2564*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2565*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_pclk0_clk", 2566*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2567*4a66e76fSBjorn Andersson &disp0_cc_mdss_pclk0_clk_src.clkr.hw, 2568*4a66e76fSBjorn Andersson }, 2569*4a66e76fSBjorn Andersson .num_parents = 1, 2570*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2571*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2572*4a66e76fSBjorn Andersson }, 2573*4a66e76fSBjorn Andersson }, 2574*4a66e76fSBjorn Andersson }; 2575*4a66e76fSBjorn Andersson 2576*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk0_clk = { 2577*4a66e76fSBjorn Andersson .halt_reg = 0x2004, 2578*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2579*4a66e76fSBjorn Andersson .clkr = { 2580*4a66e76fSBjorn Andersson .enable_reg = 0x2004, 2581*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2582*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2583*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_pclk0_clk", 2584*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2585*4a66e76fSBjorn Andersson &disp1_cc_mdss_pclk0_clk_src.clkr.hw, 2586*4a66e76fSBjorn Andersson }, 2587*4a66e76fSBjorn Andersson .num_parents = 1, 2588*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2589*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2590*4a66e76fSBjorn Andersson }, 2591*4a66e76fSBjorn Andersson }, 2592*4a66e76fSBjorn Andersson }; 2593*4a66e76fSBjorn Andersson 2594*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_pclk1_clk = { 2595*4a66e76fSBjorn Andersson .halt_reg = 0x2008, 2596*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2597*4a66e76fSBjorn Andersson .clkr = { 2598*4a66e76fSBjorn Andersson .enable_reg = 0x2008, 2599*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2600*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2601*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_pclk1_clk", 2602*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2603*4a66e76fSBjorn Andersson &disp0_cc_mdss_pclk1_clk_src.clkr.hw, 2604*4a66e76fSBjorn Andersson }, 2605*4a66e76fSBjorn Andersson .num_parents = 1, 2606*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2607*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2608*4a66e76fSBjorn Andersson }, 2609*4a66e76fSBjorn Andersson }, 2610*4a66e76fSBjorn Andersson }; 2611*4a66e76fSBjorn Andersson 2612*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_pclk1_clk = { 2613*4a66e76fSBjorn Andersson .halt_reg = 0x2008, 2614*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2615*4a66e76fSBjorn Andersson .clkr = { 2616*4a66e76fSBjorn Andersson .enable_reg = 0x2008, 2617*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2618*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2619*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_pclk1_clk", 2620*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2621*4a66e76fSBjorn Andersson &disp1_cc_mdss_pclk1_clk_src.clkr.hw, 2622*4a66e76fSBjorn Andersson }, 2623*4a66e76fSBjorn Andersson .num_parents = 1, 2624*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2625*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2626*4a66e76fSBjorn Andersson }, 2627*4a66e76fSBjorn Andersson }, 2628*4a66e76fSBjorn Andersson }; 2629*4a66e76fSBjorn Andersson 2630*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot1_clk = { 2631*4a66e76fSBjorn Andersson .halt_reg = 0x2024, 2632*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2633*4a66e76fSBjorn Andersson .clkr = { 2634*4a66e76fSBjorn Andersson .enable_reg = 0x2024, 2635*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2636*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2637*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_rot1_clk", 2638*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2639*4a66e76fSBjorn Andersson &disp0_cc_mdss_rot_clk_src.clkr.hw, 2640*4a66e76fSBjorn Andersson }, 2641*4a66e76fSBjorn Andersson .num_parents = 1, 2642*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2643*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2644*4a66e76fSBjorn Andersson }, 2645*4a66e76fSBjorn Andersson }, 2646*4a66e76fSBjorn Andersson }; 2647*4a66e76fSBjorn Andersson 2648*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot1_clk = { 2649*4a66e76fSBjorn Andersson .halt_reg = 0x2024, 2650*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2651*4a66e76fSBjorn Andersson .clkr = { 2652*4a66e76fSBjorn Andersson .enable_reg = 0x2024, 2653*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2654*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2655*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_rot1_clk", 2656*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2657*4a66e76fSBjorn Andersson &disp1_cc_mdss_rot_clk_src.clkr.hw, 2658*4a66e76fSBjorn Andersson }, 2659*4a66e76fSBjorn Andersson .num_parents = 1, 2660*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2661*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2662*4a66e76fSBjorn Andersson }, 2663*4a66e76fSBjorn Andersson }, 2664*4a66e76fSBjorn Andersson }; 2665*4a66e76fSBjorn Andersson 2666*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rot_clk = { 2667*4a66e76fSBjorn Andersson .halt_reg = 0x201c, 2668*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2669*4a66e76fSBjorn Andersson .clkr = { 2670*4a66e76fSBjorn Andersson .enable_reg = 0x201c, 2671*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2672*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2673*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_rot_clk", 2674*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2675*4a66e76fSBjorn Andersson &disp0_cc_mdss_rot_clk_src.clkr.hw, 2676*4a66e76fSBjorn Andersson }, 2677*4a66e76fSBjorn Andersson .num_parents = 1, 2678*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2679*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2680*4a66e76fSBjorn Andersson }, 2681*4a66e76fSBjorn Andersson }, 2682*4a66e76fSBjorn Andersson }; 2683*4a66e76fSBjorn Andersson 2684*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rot_clk = { 2685*4a66e76fSBjorn Andersson .halt_reg = 0x201c, 2686*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2687*4a66e76fSBjorn Andersson .clkr = { 2688*4a66e76fSBjorn Andersson .enable_reg = 0x201c, 2689*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2690*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2691*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_rot_clk", 2692*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2693*4a66e76fSBjorn Andersson &disp1_cc_mdss_rot_clk_src.clkr.hw, 2694*4a66e76fSBjorn Andersson }, 2695*4a66e76fSBjorn Andersson .num_parents = 1, 2696*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2697*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2698*4a66e76fSBjorn Andersson }, 2699*4a66e76fSBjorn Andersson }, 2700*4a66e76fSBjorn Andersson }; 2701*4a66e76fSBjorn Andersson 2702*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_ahb_clk = { 2703*4a66e76fSBjorn Andersson .halt_reg = 0x400c, 2704*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2705*4a66e76fSBjorn Andersson .clkr = { 2706*4a66e76fSBjorn Andersson .enable_reg = 0x400c, 2707*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2708*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2709*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_rscc_ahb_clk", 2710*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2711*4a66e76fSBjorn Andersson &disp0_cc_mdss_ahb_clk_src.clkr.hw, 2712*4a66e76fSBjorn Andersson }, 2713*4a66e76fSBjorn Andersson .num_parents = 1, 2714*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2715*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2716*4a66e76fSBjorn Andersson }, 2717*4a66e76fSBjorn Andersson }, 2718*4a66e76fSBjorn Andersson }; 2719*4a66e76fSBjorn Andersson 2720*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_ahb_clk = { 2721*4a66e76fSBjorn Andersson .halt_reg = 0x400c, 2722*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2723*4a66e76fSBjorn Andersson .clkr = { 2724*4a66e76fSBjorn Andersson .enable_reg = 0x400c, 2725*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2726*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2727*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_rscc_ahb_clk", 2728*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2729*4a66e76fSBjorn Andersson &disp1_cc_mdss_ahb_clk_src.clkr.hw, 2730*4a66e76fSBjorn Andersson }, 2731*4a66e76fSBjorn Andersson .num_parents = 1, 2732*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2733*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2734*4a66e76fSBjorn Andersson }, 2735*4a66e76fSBjorn Andersson }, 2736*4a66e76fSBjorn Andersson }; 2737*4a66e76fSBjorn Andersson 2738*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_rscc_vsync_clk = { 2739*4a66e76fSBjorn Andersson .halt_reg = 0x4008, 2740*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2741*4a66e76fSBjorn Andersson .clkr = { 2742*4a66e76fSBjorn Andersson .enable_reg = 0x4008, 2743*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2744*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2745*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_rscc_vsync_clk", 2746*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2747*4a66e76fSBjorn Andersson &disp0_cc_mdss_vsync_clk_src.clkr.hw, 2748*4a66e76fSBjorn Andersson }, 2749*4a66e76fSBjorn Andersson .num_parents = 1, 2750*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2751*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2752*4a66e76fSBjorn Andersson }, 2753*4a66e76fSBjorn Andersson }, 2754*4a66e76fSBjorn Andersson }; 2755*4a66e76fSBjorn Andersson 2756*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_rscc_vsync_clk = { 2757*4a66e76fSBjorn Andersson .halt_reg = 0x4008, 2758*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2759*4a66e76fSBjorn Andersson .clkr = { 2760*4a66e76fSBjorn Andersson .enable_reg = 0x4008, 2761*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2762*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2763*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_rscc_vsync_clk", 2764*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2765*4a66e76fSBjorn Andersson &disp1_cc_mdss_vsync_clk_src.clkr.hw, 2766*4a66e76fSBjorn Andersson }, 2767*4a66e76fSBjorn Andersson .num_parents = 1, 2768*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2769*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2770*4a66e76fSBjorn Andersson }, 2771*4a66e76fSBjorn Andersson }, 2772*4a66e76fSBjorn Andersson }; 2773*4a66e76fSBjorn Andersson 2774*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync1_clk = { 2775*4a66e76fSBjorn Andersson .halt_reg = 0x2040, 2776*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2777*4a66e76fSBjorn Andersson .clkr = { 2778*4a66e76fSBjorn Andersson .enable_reg = 0x2040, 2779*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2780*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2781*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_vsync1_clk", 2782*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2783*4a66e76fSBjorn Andersson &disp0_cc_mdss_vsync_clk_src.clkr.hw, 2784*4a66e76fSBjorn Andersson }, 2785*4a66e76fSBjorn Andersson .num_parents = 1, 2786*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2787*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2788*4a66e76fSBjorn Andersson }, 2789*4a66e76fSBjorn Andersson }, 2790*4a66e76fSBjorn Andersson }; 2791*4a66e76fSBjorn Andersson 2792*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync1_clk = { 2793*4a66e76fSBjorn Andersson .halt_reg = 0x2040, 2794*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2795*4a66e76fSBjorn Andersson .clkr = { 2796*4a66e76fSBjorn Andersson .enable_reg = 0x2040, 2797*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2798*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2799*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_vsync1_clk", 2800*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2801*4a66e76fSBjorn Andersson &disp1_cc_mdss_vsync_clk_src.clkr.hw, 2802*4a66e76fSBjorn Andersson }, 2803*4a66e76fSBjorn Andersson .num_parents = 1, 2804*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2805*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2806*4a66e76fSBjorn Andersson }, 2807*4a66e76fSBjorn Andersson }, 2808*4a66e76fSBjorn Andersson }; 2809*4a66e76fSBjorn Andersson 2810*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_mdss_vsync_clk = { 2811*4a66e76fSBjorn Andersson .halt_reg = 0x203c, 2812*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2813*4a66e76fSBjorn Andersson .clkr = { 2814*4a66e76fSBjorn Andersson .enable_reg = 0x203c, 2815*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2816*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2817*4a66e76fSBjorn Andersson .name = "disp0_cc_mdss_vsync_clk", 2818*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2819*4a66e76fSBjorn Andersson &disp0_cc_mdss_vsync_clk_src.clkr.hw, 2820*4a66e76fSBjorn Andersson }, 2821*4a66e76fSBjorn Andersson .num_parents = 1, 2822*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2823*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2824*4a66e76fSBjorn Andersson }, 2825*4a66e76fSBjorn Andersson }, 2826*4a66e76fSBjorn Andersson }; 2827*4a66e76fSBjorn Andersson 2828*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_mdss_vsync_clk = { 2829*4a66e76fSBjorn Andersson .halt_reg = 0x203c, 2830*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2831*4a66e76fSBjorn Andersson .clkr = { 2832*4a66e76fSBjorn Andersson .enable_reg = 0x203c, 2833*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2834*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2835*4a66e76fSBjorn Andersson .name = "disp1_cc_mdss_vsync_clk", 2836*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2837*4a66e76fSBjorn Andersson &disp1_cc_mdss_vsync_clk_src.clkr.hw, 2838*4a66e76fSBjorn Andersson }, 2839*4a66e76fSBjorn Andersson .num_parents = 1, 2840*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2841*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2842*4a66e76fSBjorn Andersson }, 2843*4a66e76fSBjorn Andersson }, 2844*4a66e76fSBjorn Andersson }; 2845*4a66e76fSBjorn Andersson 2846*4a66e76fSBjorn Andersson static struct clk_branch disp0_cc_sleep_clk = { 2847*4a66e76fSBjorn Andersson .halt_reg = 0x6078, 2848*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2849*4a66e76fSBjorn Andersson .clkr = { 2850*4a66e76fSBjorn Andersson .enable_reg = 0x6078, 2851*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2852*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2853*4a66e76fSBjorn Andersson .name = "disp0_cc_sleep_clk", 2854*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2855*4a66e76fSBjorn Andersson &disp0_cc_sleep_clk_src.clkr.hw, 2856*4a66e76fSBjorn Andersson }, 2857*4a66e76fSBjorn Andersson .num_parents = 1, 2858*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2859*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2860*4a66e76fSBjorn Andersson }, 2861*4a66e76fSBjorn Andersson }, 2862*4a66e76fSBjorn Andersson }; 2863*4a66e76fSBjorn Andersson 2864*4a66e76fSBjorn Andersson static struct clk_branch disp1_cc_sleep_clk = { 2865*4a66e76fSBjorn Andersson .halt_reg = 0x6078, 2866*4a66e76fSBjorn Andersson .halt_check = BRANCH_HALT, 2867*4a66e76fSBjorn Andersson .clkr = { 2868*4a66e76fSBjorn Andersson .enable_reg = 0x6078, 2869*4a66e76fSBjorn Andersson .enable_mask = BIT(0), 2870*4a66e76fSBjorn Andersson .hw.init = &(const struct clk_init_data) { 2871*4a66e76fSBjorn Andersson .name = "disp1_cc_sleep_clk", 2872*4a66e76fSBjorn Andersson .parent_hws = (const struct clk_hw*[]){ 2873*4a66e76fSBjorn Andersson &disp1_cc_sleep_clk_src.clkr.hw, 2874*4a66e76fSBjorn Andersson }, 2875*4a66e76fSBjorn Andersson .num_parents = 1, 2876*4a66e76fSBjorn Andersson .flags = CLK_SET_RATE_PARENT, 2877*4a66e76fSBjorn Andersson .ops = &clk_branch2_ops, 2878*4a66e76fSBjorn Andersson }, 2879*4a66e76fSBjorn Andersson }, 2880*4a66e76fSBjorn Andersson }; 2881*4a66e76fSBjorn Andersson 2882*4a66e76fSBjorn Andersson static struct clk_regmap *disp0_cc_sc8280xp_clocks[] = { 2883*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB1_CLK] = &disp0_cc_mdss_ahb1_clk.clkr, 2884*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB_CLK] = &disp0_cc_mdss_ahb_clk.clkr, 2885*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB_CLK_SRC] = &disp0_cc_mdss_ahb_clk_src.clkr, 2886*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_CLK] = &disp0_cc_mdss_byte0_clk.clkr, 2887*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp0_cc_mdss_byte0_clk_src.clkr, 2888*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp0_cc_mdss_byte0_div_clk_src.clkr, 2889*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp0_cc_mdss_byte0_intf_clk.clkr, 2890*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_CLK] = &disp0_cc_mdss_byte1_clk.clkr, 2891*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp0_cc_mdss_byte1_clk_src.clkr, 2892*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp0_cc_mdss_byte1_div_clk_src.clkr, 2893*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp0_cc_mdss_byte1_intf_clk.clkr, 2894*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp0_cc_mdss_dptx0_aux_clk.clkr, 2895*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp0_cc_mdss_dptx0_aux_clk_src.clkr, 2896*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp0_cc_mdss_dptx0_link_clk.clkr, 2897*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp0_cc_mdss_dptx0_link_clk_src.clkr, 2898*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx0_link_div_clk_src.clkr, 2899*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_link_intf_clk.clkr, 2900*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp0_cc_mdss_dptx0_pixel0_clk.clkr, 2901*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel0_clk_src.clkr, 2902*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp0_cc_mdss_dptx0_pixel1_clk.clkr, 2903*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx0_pixel1_clk_src.clkr, 2904*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx0_usb_router_link_intf_clk.clkr, 2905*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp0_cc_mdss_dptx1_aux_clk.clkr, 2906*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp0_cc_mdss_dptx1_aux_clk_src.clkr, 2907*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp0_cc_mdss_dptx1_link_clk.clkr, 2908*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp0_cc_mdss_dptx1_link_clk_src.clkr, 2909*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx1_link_div_clk_src.clkr, 2910*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_link_intf_clk.clkr, 2911*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp0_cc_mdss_dptx1_pixel0_clk.clkr, 2912*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel0_clk_src.clkr, 2913*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp0_cc_mdss_dptx1_pixel1_clk.clkr, 2914*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx1_pixel1_clk_src.clkr, 2915*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp0_cc_mdss_dptx1_usb_router_link_intf_clk.clkr, 2916*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp0_cc_mdss_dptx2_aux_clk.clkr, 2917*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp0_cc_mdss_dptx2_aux_clk_src.clkr, 2918*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp0_cc_mdss_dptx2_link_clk.clkr, 2919*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp0_cc_mdss_dptx2_link_clk_src.clkr, 2920*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx2_link_div_clk_src.clkr, 2921*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp0_cc_mdss_dptx2_link_intf_clk.clkr, 2922*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp0_cc_mdss_dptx2_pixel0_clk.clkr, 2923*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel0_clk_src.clkr, 2924*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp0_cc_mdss_dptx2_pixel1_clk.clkr, 2925*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp0_cc_mdss_dptx2_pixel1_clk_src.clkr, 2926*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp0_cc_mdss_dptx3_aux_clk.clkr, 2927*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp0_cc_mdss_dptx3_aux_clk_src.clkr, 2928*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp0_cc_mdss_dptx3_link_clk.clkr, 2929*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp0_cc_mdss_dptx3_link_clk_src.clkr, 2930*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp0_cc_mdss_dptx3_link_div_clk_src.clkr, 2931*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp0_cc_mdss_dptx3_link_intf_clk.clkr, 2932*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp0_cc_mdss_dptx3_pixel0_clk.clkr, 2933*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp0_cc_mdss_dptx3_pixel0_clk_src.clkr, 2934*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC0_CLK] = &disp0_cc_mdss_esc0_clk.clkr, 2935*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp0_cc_mdss_esc0_clk_src.clkr, 2936*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC1_CLK] = &disp0_cc_mdss_esc1_clk.clkr, 2937*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC1_CLK_SRC] = &disp0_cc_mdss_esc1_clk_src.clkr, 2938*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP1_CLK] = &disp0_cc_mdss_mdp1_clk.clkr, 2939*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_CLK] = &disp0_cc_mdss_mdp_clk.clkr, 2940*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_CLK_SRC] = &disp0_cc_mdss_mdp_clk_src.clkr, 2941*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_LUT1_CLK] = &disp0_cc_mdss_mdp_lut1_clk.clkr, 2942*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_LUT_CLK] = &disp0_cc_mdss_mdp_lut_clk.clkr, 2943*4a66e76fSBjorn Andersson [DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp0_cc_mdss_non_gdsc_ahb_clk.clkr, 2944*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK0_CLK] = &disp0_cc_mdss_pclk0_clk.clkr, 2945*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp0_cc_mdss_pclk0_clk_src.clkr, 2946*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK1_CLK] = &disp0_cc_mdss_pclk1_clk.clkr, 2947*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp0_cc_mdss_pclk1_clk_src.clkr, 2948*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT1_CLK] = &disp0_cc_mdss_rot1_clk.clkr, 2949*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT_CLK] = &disp0_cc_mdss_rot_clk.clkr, 2950*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT_CLK_SRC] = &disp0_cc_mdss_rot_clk_src.clkr, 2951*4a66e76fSBjorn Andersson [DISP_CC_MDSS_RSCC_AHB_CLK] = &disp0_cc_mdss_rscc_ahb_clk.clkr, 2952*4a66e76fSBjorn Andersson [DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp0_cc_mdss_rscc_vsync_clk.clkr, 2953*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC1_CLK] = &disp0_cc_mdss_vsync1_clk.clkr, 2954*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC_CLK] = &disp0_cc_mdss_vsync_clk.clkr, 2955*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp0_cc_mdss_vsync_clk_src.clkr, 2956*4a66e76fSBjorn Andersson [DISP_CC_PLL0] = &disp0_cc_pll0.clkr, 2957*4a66e76fSBjorn Andersson [DISP_CC_PLL1] = &disp0_cc_pll1.clkr, 2958*4a66e76fSBjorn Andersson [DISP_CC_PLL1_OUT_EVEN] = &disp0_cc_pll1_out_even.clkr, 2959*4a66e76fSBjorn Andersson [DISP_CC_PLL2] = &disp0_cc_pll2.clkr, 2960*4a66e76fSBjorn Andersson [DISP_CC_SLEEP_CLK] = &disp0_cc_sleep_clk.clkr, 2961*4a66e76fSBjorn Andersson [DISP_CC_SLEEP_CLK_SRC] = &disp0_cc_sleep_clk_src.clkr, 2962*4a66e76fSBjorn Andersson }; 2963*4a66e76fSBjorn Andersson 2964*4a66e76fSBjorn Andersson static struct clk_regmap *disp1_cc_sc8280xp_clocks[] = { 2965*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB1_CLK] = &disp1_cc_mdss_ahb1_clk.clkr, 2966*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB_CLK] = &disp1_cc_mdss_ahb_clk.clkr, 2967*4a66e76fSBjorn Andersson [DISP_CC_MDSS_AHB_CLK_SRC] = &disp1_cc_mdss_ahb_clk_src.clkr, 2968*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_CLK] = &disp1_cc_mdss_byte0_clk.clkr, 2969*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp1_cc_mdss_byte0_clk_src.clkr, 2970*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp1_cc_mdss_byte0_div_clk_src.clkr, 2971*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp1_cc_mdss_byte0_intf_clk.clkr, 2972*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_CLK] = &disp1_cc_mdss_byte1_clk.clkr, 2973*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp1_cc_mdss_byte1_clk_src.clkr, 2974*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp1_cc_mdss_byte1_div_clk_src.clkr, 2975*4a66e76fSBjorn Andersson [DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp1_cc_mdss_byte1_intf_clk.clkr, 2976*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp1_cc_mdss_dptx0_aux_clk.clkr, 2977*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp1_cc_mdss_dptx0_aux_clk_src.clkr, 2978*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp1_cc_mdss_dptx0_link_clk.clkr, 2979*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp1_cc_mdss_dptx0_link_clk_src.clkr, 2980*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx0_link_div_clk_src.clkr, 2981*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_link_intf_clk.clkr, 2982*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp1_cc_mdss_dptx0_pixel0_clk.clkr, 2983*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel0_clk_src.clkr, 2984*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp1_cc_mdss_dptx0_pixel1_clk.clkr, 2985*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx0_pixel1_clk_src.clkr, 2986*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx0_usb_router_link_intf_clk.clkr, 2987*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp1_cc_mdss_dptx1_aux_clk.clkr, 2988*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp1_cc_mdss_dptx1_aux_clk_src.clkr, 2989*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp1_cc_mdss_dptx1_link_clk.clkr, 2990*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp1_cc_mdss_dptx1_link_clk_src.clkr, 2991*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx1_link_div_clk_src.clkr, 2992*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_link_intf_clk.clkr, 2993*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp1_cc_mdss_dptx1_pixel0_clk.clkr, 2994*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel0_clk_src.clkr, 2995*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp1_cc_mdss_dptx1_pixel1_clk.clkr, 2996*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx1_pixel1_clk_src.clkr, 2997*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = &disp1_cc_mdss_dptx1_usb_router_link_intf_clk.clkr, 2998*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp1_cc_mdss_dptx2_aux_clk.clkr, 2999*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp1_cc_mdss_dptx2_aux_clk_src.clkr, 3000*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp1_cc_mdss_dptx2_link_clk.clkr, 3001*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp1_cc_mdss_dptx2_link_clk_src.clkr, 3002*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx2_link_div_clk_src.clkr, 3003*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp1_cc_mdss_dptx2_link_intf_clk.clkr, 3004*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp1_cc_mdss_dptx2_pixel0_clk.clkr, 3005*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel0_clk_src.clkr, 3006*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp1_cc_mdss_dptx2_pixel1_clk.clkr, 3007*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp1_cc_mdss_dptx2_pixel1_clk_src.clkr, 3008*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp1_cc_mdss_dptx3_aux_clk.clkr, 3009*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp1_cc_mdss_dptx3_aux_clk_src.clkr, 3010*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp1_cc_mdss_dptx3_link_clk.clkr, 3011*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp1_cc_mdss_dptx3_link_clk_src.clkr, 3012*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp1_cc_mdss_dptx3_link_div_clk_src.clkr, 3013*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp1_cc_mdss_dptx3_link_intf_clk.clkr, 3014*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp1_cc_mdss_dptx3_pixel0_clk.clkr, 3015*4a66e76fSBjorn Andersson [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp1_cc_mdss_dptx3_pixel0_clk_src.clkr, 3016*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC0_CLK] = &disp1_cc_mdss_esc0_clk.clkr, 3017*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp1_cc_mdss_esc0_clk_src.clkr, 3018*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC1_CLK] = &disp1_cc_mdss_esc1_clk.clkr, 3019*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ESC1_CLK_SRC] = &disp1_cc_mdss_esc1_clk_src.clkr, 3020*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP1_CLK] = &disp1_cc_mdss_mdp1_clk.clkr, 3021*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_CLK] = &disp1_cc_mdss_mdp_clk.clkr, 3022*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_CLK_SRC] = &disp1_cc_mdss_mdp_clk_src.clkr, 3023*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_LUT1_CLK] = &disp1_cc_mdss_mdp_lut1_clk.clkr, 3024*4a66e76fSBjorn Andersson [DISP_CC_MDSS_MDP_LUT_CLK] = &disp1_cc_mdss_mdp_lut_clk.clkr, 3025*4a66e76fSBjorn Andersson [DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp1_cc_mdss_non_gdsc_ahb_clk.clkr, 3026*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK0_CLK] = &disp1_cc_mdss_pclk0_clk.clkr, 3027*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp1_cc_mdss_pclk0_clk_src.clkr, 3028*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK1_CLK] = &disp1_cc_mdss_pclk1_clk.clkr, 3029*4a66e76fSBjorn Andersson [DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp1_cc_mdss_pclk1_clk_src.clkr, 3030*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT1_CLK] = &disp1_cc_mdss_rot1_clk.clkr, 3031*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT_CLK] = &disp1_cc_mdss_rot_clk.clkr, 3032*4a66e76fSBjorn Andersson [DISP_CC_MDSS_ROT_CLK_SRC] = &disp1_cc_mdss_rot_clk_src.clkr, 3033*4a66e76fSBjorn Andersson [DISP_CC_MDSS_RSCC_AHB_CLK] = &disp1_cc_mdss_rscc_ahb_clk.clkr, 3034*4a66e76fSBjorn Andersson [DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp1_cc_mdss_rscc_vsync_clk.clkr, 3035*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC1_CLK] = &disp1_cc_mdss_vsync1_clk.clkr, 3036*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC_CLK] = &disp1_cc_mdss_vsync_clk.clkr, 3037*4a66e76fSBjorn Andersson [DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp1_cc_mdss_vsync_clk_src.clkr, 3038*4a66e76fSBjorn Andersson [DISP_CC_PLL0] = &disp1_cc_pll0.clkr, 3039*4a66e76fSBjorn Andersson [DISP_CC_PLL1] = &disp1_cc_pll1.clkr, 3040*4a66e76fSBjorn Andersson [DISP_CC_PLL1_OUT_EVEN] = &disp1_cc_pll1_out_even.clkr, 3041*4a66e76fSBjorn Andersson [DISP_CC_PLL2] = &disp1_cc_pll2.clkr, 3042*4a66e76fSBjorn Andersson [DISP_CC_SLEEP_CLK] = &disp1_cc_sleep_clk.clkr, 3043*4a66e76fSBjorn Andersson [DISP_CC_SLEEP_CLK_SRC] = &disp1_cc_sleep_clk_src.clkr, 3044*4a66e76fSBjorn Andersson }; 3045*4a66e76fSBjorn Andersson 3046*4a66e76fSBjorn Andersson static const struct qcom_reset_map disp_cc_sc8280xp_resets[] = { 3047*4a66e76fSBjorn Andersson [DISP_CC_MDSS_CORE_BCR] = { 0x2000 }, 3048*4a66e76fSBjorn Andersson [DISP_CC_MDSS_RSCC_BCR] = { 0x4000 }, 3049*4a66e76fSBjorn Andersson }; 3050*4a66e76fSBjorn Andersson 3051*4a66e76fSBjorn Andersson static struct gdsc disp0_mdss_gdsc = { 3052*4a66e76fSBjorn Andersson .gdscr = 0x3000, 3053*4a66e76fSBjorn Andersson .en_rest_wait_val = 0x2, 3054*4a66e76fSBjorn Andersson .en_few_wait_val = 0x2, 3055*4a66e76fSBjorn Andersson .clk_dis_wait_val = 0xf, 3056*4a66e76fSBjorn Andersson .pd = { 3057*4a66e76fSBjorn Andersson .name = "disp0_mdss_gdsc", 3058*4a66e76fSBjorn Andersson }, 3059*4a66e76fSBjorn Andersson .pwrsts = PWRSTS_OFF_ON, 3060*4a66e76fSBjorn Andersson .flags = HW_CTRL, 3061*4a66e76fSBjorn Andersson }; 3062*4a66e76fSBjorn Andersson 3063*4a66e76fSBjorn Andersson static struct gdsc disp1_mdss_gdsc = { 3064*4a66e76fSBjorn Andersson .gdscr = 0x3000, 3065*4a66e76fSBjorn Andersson .en_rest_wait_val = 0x2, 3066*4a66e76fSBjorn Andersson .en_few_wait_val = 0x2, 3067*4a66e76fSBjorn Andersson .clk_dis_wait_val = 0xf, 3068*4a66e76fSBjorn Andersson .pd = { 3069*4a66e76fSBjorn Andersson .name = "disp1_mdss_gdsc", 3070*4a66e76fSBjorn Andersson }, 3071*4a66e76fSBjorn Andersson .pwrsts = PWRSTS_OFF_ON, 3072*4a66e76fSBjorn Andersson .flags = HW_CTRL, 3073*4a66e76fSBjorn Andersson }; 3074*4a66e76fSBjorn Andersson 3075*4a66e76fSBjorn Andersson static struct gdsc disp0_mdss_int2_gdsc = { 3076*4a66e76fSBjorn Andersson .gdscr = 0xa000, 3077*4a66e76fSBjorn Andersson .en_rest_wait_val = 0x2, 3078*4a66e76fSBjorn Andersson .en_few_wait_val = 0x2, 3079*4a66e76fSBjorn Andersson .clk_dis_wait_val = 0xf, 3080*4a66e76fSBjorn Andersson .pd = { 3081*4a66e76fSBjorn Andersson .name = "disp0_mdss_int2_gdsc", 3082*4a66e76fSBjorn Andersson }, 3083*4a66e76fSBjorn Andersson .pwrsts = PWRSTS_OFF_ON, 3084*4a66e76fSBjorn Andersson .flags = HW_CTRL, 3085*4a66e76fSBjorn Andersson }; 3086*4a66e76fSBjorn Andersson 3087*4a66e76fSBjorn Andersson static struct gdsc disp1_mdss_int2_gdsc = { 3088*4a66e76fSBjorn Andersson .gdscr = 0xa000, 3089*4a66e76fSBjorn Andersson .en_rest_wait_val = 0x2, 3090*4a66e76fSBjorn Andersson .en_few_wait_val = 0x2, 3091*4a66e76fSBjorn Andersson .clk_dis_wait_val = 0xf, 3092*4a66e76fSBjorn Andersson .pd = { 3093*4a66e76fSBjorn Andersson .name = "disp1_mdss_int2_gdsc", 3094*4a66e76fSBjorn Andersson }, 3095*4a66e76fSBjorn Andersson .pwrsts = PWRSTS_OFF_ON, 3096*4a66e76fSBjorn Andersson .flags = HW_CTRL, 3097*4a66e76fSBjorn Andersson }; 3098*4a66e76fSBjorn Andersson 3099*4a66e76fSBjorn Andersson static struct gdsc *disp0_cc_sc8280xp_gdscs[] = { 3100*4a66e76fSBjorn Andersson [MDSS_GDSC] = &disp0_mdss_gdsc, 3101*4a66e76fSBjorn Andersson [MDSS_INT2_GDSC] = &disp0_mdss_int2_gdsc, 3102*4a66e76fSBjorn Andersson }; 3103*4a66e76fSBjorn Andersson 3104*4a66e76fSBjorn Andersson static struct gdsc *disp1_cc_sc8280xp_gdscs[] = { 3105*4a66e76fSBjorn Andersson [MDSS_GDSC] = &disp1_mdss_gdsc, 3106*4a66e76fSBjorn Andersson [MDSS_INT2_GDSC] = &disp1_mdss_int2_gdsc, 3107*4a66e76fSBjorn Andersson }; 3108*4a66e76fSBjorn Andersson 3109*4a66e76fSBjorn Andersson static const struct regmap_config disp_cc_sc8280xp_regmap_config = { 3110*4a66e76fSBjorn Andersson .reg_bits = 32, 3111*4a66e76fSBjorn Andersson .reg_stride = 4, 3112*4a66e76fSBjorn Andersson .val_bits = 32, 3113*4a66e76fSBjorn Andersson .max_register = 0x10000, 3114*4a66e76fSBjorn Andersson .fast_io = true, 3115*4a66e76fSBjorn Andersson }; 3116*4a66e76fSBjorn Andersson 3117*4a66e76fSBjorn Andersson static struct qcom_cc_desc disp0_cc_sc8280xp_desc = { 3118*4a66e76fSBjorn Andersson .config = &disp_cc_sc8280xp_regmap_config, 3119*4a66e76fSBjorn Andersson .clks = disp0_cc_sc8280xp_clocks, 3120*4a66e76fSBjorn Andersson .num_clks = ARRAY_SIZE(disp0_cc_sc8280xp_clocks), 3121*4a66e76fSBjorn Andersson .resets = disp_cc_sc8280xp_resets, 3122*4a66e76fSBjorn Andersson .num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets), 3123*4a66e76fSBjorn Andersson .gdscs = disp0_cc_sc8280xp_gdscs, 3124*4a66e76fSBjorn Andersson .num_gdscs = ARRAY_SIZE(disp0_cc_sc8280xp_gdscs), 3125*4a66e76fSBjorn Andersson }; 3126*4a66e76fSBjorn Andersson 3127*4a66e76fSBjorn Andersson static struct qcom_cc_desc disp1_cc_sc8280xp_desc = { 3128*4a66e76fSBjorn Andersson .config = &disp_cc_sc8280xp_regmap_config, 3129*4a66e76fSBjorn Andersson .clks = disp1_cc_sc8280xp_clocks, 3130*4a66e76fSBjorn Andersson .num_clks = ARRAY_SIZE(disp1_cc_sc8280xp_clocks), 3131*4a66e76fSBjorn Andersson .resets = disp_cc_sc8280xp_resets, 3132*4a66e76fSBjorn Andersson .num_resets = ARRAY_SIZE(disp_cc_sc8280xp_resets), 3133*4a66e76fSBjorn Andersson .gdscs = disp1_cc_sc8280xp_gdscs, 3134*4a66e76fSBjorn Andersson .num_gdscs = ARRAY_SIZE(disp1_cc_sc8280xp_gdscs), 3135*4a66e76fSBjorn Andersson }; 3136*4a66e76fSBjorn Andersson 3137*4a66e76fSBjorn Andersson #define clkr_to_alpha_clk_pll(_clkr) container_of(_clkr, struct clk_alpha_pll, clkr) 3138*4a66e76fSBjorn Andersson 3139*4a66e76fSBjorn Andersson static int disp_cc_sc8280xp_probe(struct platform_device *pdev) 3140*4a66e76fSBjorn Andersson { 3141*4a66e76fSBjorn Andersson const struct qcom_cc_desc *desc; 3142*4a66e76fSBjorn Andersson struct regmap *regmap; 3143*4a66e76fSBjorn Andersson int ret; 3144*4a66e76fSBjorn Andersson 3145*4a66e76fSBjorn Andersson desc = device_get_match_data(&pdev->dev); 3146*4a66e76fSBjorn Andersson 3147*4a66e76fSBjorn Andersson ret = devm_pm_runtime_enable(&pdev->dev); 3148*4a66e76fSBjorn Andersson if (ret) 3149*4a66e76fSBjorn Andersson return ret; 3150*4a66e76fSBjorn Andersson 3151*4a66e76fSBjorn Andersson ret = devm_pm_clk_create(&pdev->dev); 3152*4a66e76fSBjorn Andersson if (ret) 3153*4a66e76fSBjorn Andersson return ret; 3154*4a66e76fSBjorn Andersson 3155*4a66e76fSBjorn Andersson ret = pm_clk_add(&pdev->dev, NULL); 3156*4a66e76fSBjorn Andersson if (ret < 0) { 3157*4a66e76fSBjorn Andersson dev_err(&pdev->dev, "failed to acquire ahb clock\n"); 3158*4a66e76fSBjorn Andersson return ret; 3159*4a66e76fSBjorn Andersson } 3160*4a66e76fSBjorn Andersson 3161*4a66e76fSBjorn Andersson ret = pm_runtime_resume_and_get(&pdev->dev); 3162*4a66e76fSBjorn Andersson if (ret) 3163*4a66e76fSBjorn Andersson return ret; 3164*4a66e76fSBjorn Andersson 3165*4a66e76fSBjorn Andersson regmap = qcom_cc_map(pdev, desc); 3166*4a66e76fSBjorn Andersson if (IS_ERR(regmap)) { 3167*4a66e76fSBjorn Andersson ret = PTR_ERR(regmap); 3168*4a66e76fSBjorn Andersson goto out_pm_runtime_put; 3169*4a66e76fSBjorn Andersson } 3170*4a66e76fSBjorn Andersson 3171*4a66e76fSBjorn Andersson clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL0]), regmap, &disp_cc_pll0_config); 3172*4a66e76fSBjorn Andersson clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL1]), regmap, &disp_cc_pll1_config); 3173*4a66e76fSBjorn Andersson clk_lucid_pll_configure(clkr_to_alpha_clk_pll(desc->clks[DISP_CC_PLL2]), regmap, &disp_cc_pll2_config); 3174*4a66e76fSBjorn Andersson 3175*4a66e76fSBjorn Andersson ret = qcom_cc_really_probe(pdev, desc, regmap); 3176*4a66e76fSBjorn Andersson if (ret) { 3177*4a66e76fSBjorn Andersson dev_err(&pdev->dev, "Failed to register display clock controller\n"); 3178*4a66e76fSBjorn Andersson goto out_pm_runtime_put; 3179*4a66e76fSBjorn Andersson } 3180*4a66e76fSBjorn Andersson 3181*4a66e76fSBjorn Andersson /* DISP_CC_XO_CLK always-on */ 3182*4a66e76fSBjorn Andersson regmap_update_bits(regmap, 0x605c, BIT(0), BIT(0)); 3183*4a66e76fSBjorn Andersson 3184*4a66e76fSBjorn Andersson out_pm_runtime_put: 3185*4a66e76fSBjorn Andersson pm_runtime_put_sync(&pdev->dev); 3186*4a66e76fSBjorn Andersson 3187*4a66e76fSBjorn Andersson return ret; 3188*4a66e76fSBjorn Andersson } 3189*4a66e76fSBjorn Andersson 3190*4a66e76fSBjorn Andersson static const struct of_device_id disp_cc_sc8280xp_match_table[] = { 3191*4a66e76fSBjorn Andersson { .compatible = "qcom,sc8280xp-dispcc0", .data = &disp0_cc_sc8280xp_desc }, 3192*4a66e76fSBjorn Andersson { .compatible = "qcom,sc8280xp-dispcc1", .data = &disp1_cc_sc8280xp_desc }, 3193*4a66e76fSBjorn Andersson { } 3194*4a66e76fSBjorn Andersson }; 3195*4a66e76fSBjorn Andersson MODULE_DEVICE_TABLE(of, disp_cc_sc8280xp_match_table); 3196*4a66e76fSBjorn Andersson 3197*4a66e76fSBjorn Andersson static struct platform_driver disp_cc_sc8280xp_driver = { 3198*4a66e76fSBjorn Andersson .probe = disp_cc_sc8280xp_probe, 3199*4a66e76fSBjorn Andersson .driver = { 3200*4a66e76fSBjorn Andersson .name = "disp_cc-sc8280xp", 3201*4a66e76fSBjorn Andersson .of_match_table = disp_cc_sc8280xp_match_table, 3202*4a66e76fSBjorn Andersson }, 3203*4a66e76fSBjorn Andersson }; 3204*4a66e76fSBjorn Andersson 3205*4a66e76fSBjorn Andersson static int __init disp_cc_sc8280xp_init(void) 3206*4a66e76fSBjorn Andersson { 3207*4a66e76fSBjorn Andersson return platform_driver_register(&disp_cc_sc8280xp_driver); 3208*4a66e76fSBjorn Andersson } 3209*4a66e76fSBjorn Andersson subsys_initcall(disp_cc_sc8280xp_init); 3210*4a66e76fSBjorn Andersson 3211*4a66e76fSBjorn Andersson static void __exit disp_cc_sc8280xp_exit(void) 3212*4a66e76fSBjorn Andersson { 3213*4a66e76fSBjorn Andersson platform_driver_unregister(&disp_cc_sc8280xp_driver); 3214*4a66e76fSBjorn Andersson } 3215*4a66e76fSBjorn Andersson module_exit(disp_cc_sc8280xp_exit); 3216*4a66e76fSBjorn Andersson 3217*4a66e76fSBjorn Andersson MODULE_DESCRIPTION("Qualcomm SC8280XP dispcc driver"); 3218*4a66e76fSBjorn Andersson MODULE_LICENSE("GPL"); 3219