10e66f109SKrzysztof Kozlowski // SPDX-License-Identifier: GPL-2.0-only 20e66f109SKrzysztof Kozlowski /* 30e66f109SKrzysztof Kozlowski * Copyright (c) 2021, The Linux Foundation. All rights reserved. 40e66f109SKrzysztof Kozlowski * Copyright (c) 2023-2024, Linaro Ltd. 50e66f109SKrzysztof Kozlowski * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 60e66f109SKrzysztof Kozlowski */ 70e66f109SKrzysztof Kozlowski 80e66f109SKrzysztof Kozlowski #include <linux/clk-provider.h> 90e66f109SKrzysztof Kozlowski #include <linux/kernel.h> 100e66f109SKrzysztof Kozlowski #include <linux/mod_devicetable.h> 110e66f109SKrzysztof Kozlowski #include <linux/module.h> 120e66f109SKrzysztof Kozlowski #include <linux/platform_device.h> 130e66f109SKrzysztof Kozlowski #include <linux/regmap.h> 140e66f109SKrzysztof Kozlowski 150e66f109SKrzysztof Kozlowski #include <dt-bindings/clock/qcom,eliza-dispcc.h> 160e66f109SKrzysztof Kozlowski 170e66f109SKrzysztof Kozlowski #include "common.h" 180e66f109SKrzysztof Kozlowski #include "clk-alpha-pll.h" 190e66f109SKrzysztof Kozlowski #include "clk-branch.h" 200e66f109SKrzysztof Kozlowski #include "clk-pll.h" 210e66f109SKrzysztof Kozlowski #include "clk-rcg.h" 220e66f109SKrzysztof Kozlowski #include "clk-regmap.h" 230e66f109SKrzysztof Kozlowski #include "clk-regmap-divider.h" 240e66f109SKrzysztof Kozlowski #include "clk-regmap-mux.h" 250e66f109SKrzysztof Kozlowski #include "gdsc.h" 260e66f109SKrzysztof Kozlowski #include "reset.h" 270e66f109SKrzysztof Kozlowski 280e66f109SKrzysztof Kozlowski /* Need to match the order of clocks in DT binding */ 290e66f109SKrzysztof Kozlowski enum { 300e66f109SKrzysztof Kozlowski DT_BI_TCXO, 310e66f109SKrzysztof Kozlowski DT_BI_TCXO_AO, 320e66f109SKrzysztof Kozlowski DT_AHB_CLK, 330e66f109SKrzysztof Kozlowski DT_SLEEP_CLK, 340e66f109SKrzysztof Kozlowski 350e66f109SKrzysztof Kozlowski DT_DSI0_PHY_PLL_OUT_BYTECLK, 360e66f109SKrzysztof Kozlowski DT_DSI0_PHY_PLL_OUT_DSICLK, 370e66f109SKrzysztof Kozlowski DT_DSI1_PHY_PLL_OUT_BYTECLK, 380e66f109SKrzysztof Kozlowski DT_DSI1_PHY_PLL_OUT_DSICLK, 390e66f109SKrzysztof Kozlowski 400e66f109SKrzysztof Kozlowski DT_DP0_PHY_PLL_LINK_CLK, 410e66f109SKrzysztof Kozlowski DT_DP0_PHY_PLL_VCO_DIV_CLK, 420e66f109SKrzysztof Kozlowski DT_DP1_PHY_PLL_LINK_CLK, 430e66f109SKrzysztof Kozlowski DT_DP1_PHY_PLL_VCO_DIV_CLK, 440e66f109SKrzysztof Kozlowski DT_DP2_PHY_PLL_LINK_CLK, 450e66f109SKrzysztof Kozlowski DT_DP2_PHY_PLL_VCO_DIV_CLK, 460e66f109SKrzysztof Kozlowski DT_DP3_PHY_PLL_LINK_CLK, 470e66f109SKrzysztof Kozlowski DT_DP3_PHY_PLL_VCO_DIV_CLK, 480e66f109SKrzysztof Kozlowski DT_HDMI_PHY_PLL_CLK, 490e66f109SKrzysztof Kozlowski }; 500e66f109SKrzysztof Kozlowski 510e66f109SKrzysztof Kozlowski #define DISP_CC_MISC_CMD 0xF000 520e66f109SKrzysztof Kozlowski 530e66f109SKrzysztof Kozlowski enum { 540e66f109SKrzysztof Kozlowski P_BI_TCXO, 550e66f109SKrzysztof Kozlowski P_DISP_CC_PLL0_OUT_MAIN, 560e66f109SKrzysztof Kozlowski P_DISP_CC_PLL1_OUT_EVEN, 570e66f109SKrzysztof Kozlowski P_DISP_CC_PLL1_OUT_MAIN, 580e66f109SKrzysztof Kozlowski P_DISP_CC_PLL2_OUT_MAIN, 590e66f109SKrzysztof Kozlowski P_DP0_PHY_PLL_LINK_CLK, 600e66f109SKrzysztof Kozlowski P_DP0_PHY_PLL_VCO_DIV_CLK, 610e66f109SKrzysztof Kozlowski P_DP1_PHY_PLL_LINK_CLK, 620e66f109SKrzysztof Kozlowski P_DP1_PHY_PLL_VCO_DIV_CLK, 630e66f109SKrzysztof Kozlowski P_DP2_PHY_PLL_LINK_CLK, 640e66f109SKrzysztof Kozlowski P_DP2_PHY_PLL_VCO_DIV_CLK, 650e66f109SKrzysztof Kozlowski P_DP3_PHY_PLL_LINK_CLK, 660e66f109SKrzysztof Kozlowski P_DP3_PHY_PLL_VCO_DIV_CLK, 670e66f109SKrzysztof Kozlowski P_DSI0_PHY_PLL_OUT_BYTECLK, 680e66f109SKrzysztof Kozlowski P_DSI0_PHY_PLL_OUT_DSICLK, 690e66f109SKrzysztof Kozlowski P_DSI1_PHY_PLL_OUT_BYTECLK, 700e66f109SKrzysztof Kozlowski P_DSI1_PHY_PLL_OUT_DSICLK, 710e66f109SKrzysztof Kozlowski P_HDMI_PHY_PLL_CLK, 720e66f109SKrzysztof Kozlowski P_SLEEP_CLK, 730e66f109SKrzysztof Kozlowski }; 740e66f109SKrzysztof Kozlowski 750e66f109SKrzysztof Kozlowski static const struct pll_vco lucid_ole_vco[] = { 760e66f109SKrzysztof Kozlowski { 249600000, 2300000000, 0 }, 770e66f109SKrzysztof Kozlowski }; 780e66f109SKrzysztof Kozlowski 790e66f109SKrzysztof Kozlowski static const struct pll_vco pongo_ole_vco[] = { 800e66f109SKrzysztof Kozlowski { 38400000, 38400000, 0 }, 810e66f109SKrzysztof Kozlowski }; 820e66f109SKrzysztof Kozlowski 830e66f109SKrzysztof Kozlowski static struct alpha_pll_config disp_cc_pll0_config = { 840e66f109SKrzysztof Kozlowski .l = 0xd, 850e66f109SKrzysztof Kozlowski .cal_l = 0x44, 860e66f109SKrzysztof Kozlowski .alpha = 0x6492, 870e66f109SKrzysztof Kozlowski .config_ctl_val = 0x20485699, 880e66f109SKrzysztof Kozlowski .config_ctl_hi_val = 0x00182261, 890e66f109SKrzysztof Kozlowski .config_ctl_hi1_val = 0x82aa299c, 900e66f109SKrzysztof Kozlowski .test_ctl_val = 0x00000000, 910e66f109SKrzysztof Kozlowski .test_ctl_hi_val = 0x00000003, 920e66f109SKrzysztof Kozlowski .test_ctl_hi1_val = 0x00009000, 930e66f109SKrzysztof Kozlowski .test_ctl_hi2_val = 0x00000034, 940e66f109SKrzysztof Kozlowski .user_ctl_val = 0x00000000, 950e66f109SKrzysztof Kozlowski .user_ctl_hi_val = 0x00000005, 960e66f109SKrzysztof Kozlowski }; 970e66f109SKrzysztof Kozlowski 980e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll0 = { 990e66f109SKrzysztof Kozlowski .offset = 0x0, 1000e66f109SKrzysztof Kozlowski .config = &disp_cc_pll0_config, 1010e66f109SKrzysztof Kozlowski .vco_table = lucid_ole_vco, 1020e66f109SKrzysztof Kozlowski .num_vco = ARRAY_SIZE(lucid_ole_vco), 1030e66f109SKrzysztof Kozlowski .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 1040e66f109SKrzysztof Kozlowski .clkr = { 1050e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 1060e66f109SKrzysztof Kozlowski .name = "disp_cc_pll0", 1070e66f109SKrzysztof Kozlowski .parent_data = &(const struct clk_parent_data) { 1080e66f109SKrzysztof Kozlowski .index = DT_BI_TCXO, 1090e66f109SKrzysztof Kozlowski }, 1100e66f109SKrzysztof Kozlowski .num_parents = 1, 1110e66f109SKrzysztof Kozlowski .ops = &clk_alpha_pll_lucid_evo_ops, 1120e66f109SKrzysztof Kozlowski }, 1130e66f109SKrzysztof Kozlowski }, 1140e66f109SKrzysztof Kozlowski }; 1150e66f109SKrzysztof Kozlowski 1160e66f109SKrzysztof Kozlowski static struct alpha_pll_config disp_cc_pll1_config = { 1170e66f109SKrzysztof Kozlowski .l = 0x1f, 1180e66f109SKrzysztof Kozlowski .cal_l = 0x44, 1190e66f109SKrzysztof Kozlowski .alpha = 0x4000, 1200e66f109SKrzysztof Kozlowski .config_ctl_val = 0x20485699, 1210e66f109SKrzysztof Kozlowski .config_ctl_hi_val = 0x00182261, 1220e66f109SKrzysztof Kozlowski .config_ctl_hi1_val = 0x82aa299c, 1230e66f109SKrzysztof Kozlowski .test_ctl_val = 0x00000000, 1240e66f109SKrzysztof Kozlowski .test_ctl_hi_val = 0x00000003, 1250e66f109SKrzysztof Kozlowski .test_ctl_hi1_val = 0x00009000, 1260e66f109SKrzysztof Kozlowski .test_ctl_hi2_val = 0x00000034, 1270e66f109SKrzysztof Kozlowski .user_ctl_val = 0x00000000, 1280e66f109SKrzysztof Kozlowski .user_ctl_hi_val = 0x00000005, 1290e66f109SKrzysztof Kozlowski }; 1300e66f109SKrzysztof Kozlowski 1310e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll1 = { 1320e66f109SKrzysztof Kozlowski .offset = 0x1000, 1330e66f109SKrzysztof Kozlowski .config = &disp_cc_pll1_config, 1340e66f109SKrzysztof Kozlowski .vco_table = lucid_ole_vco, 1350e66f109SKrzysztof Kozlowski .num_vco = ARRAY_SIZE(lucid_ole_vco), 1360e66f109SKrzysztof Kozlowski .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 1370e66f109SKrzysztof Kozlowski .clkr = { 1380e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 1390e66f109SKrzysztof Kozlowski .name = "disp_cc_pll1", 1400e66f109SKrzysztof Kozlowski .parent_data = &(const struct clk_parent_data) { 1410e66f109SKrzysztof Kozlowski .index = DT_BI_TCXO, 1420e66f109SKrzysztof Kozlowski }, 1430e66f109SKrzysztof Kozlowski .num_parents = 1, 1440e66f109SKrzysztof Kozlowski .ops = &clk_alpha_pll_lucid_evo_ops, 1450e66f109SKrzysztof Kozlowski }, 1460e66f109SKrzysztof Kozlowski }, 1470e66f109SKrzysztof Kozlowski }; 1480e66f109SKrzysztof Kozlowski 1490e66f109SKrzysztof Kozlowski static const struct alpha_pll_config disp_cc_pll2_config = { 1500e66f109SKrzysztof Kozlowski .l = 0x493, 1510e66f109SKrzysztof Kozlowski .cal_l = 0x493, 1520e66f109SKrzysztof Kozlowski .alpha = 0x0, 1530e66f109SKrzysztof Kozlowski .config_ctl_val = 0x60000f6a, 1540e66f109SKrzysztof Kozlowski .config_ctl_hi_val = 0x0001c808, 1550e66f109SKrzysztof Kozlowski .config_ctl_hi1_val = 0x00000000, 1560e66f109SKrzysztof Kozlowski .config_ctl_hi2_val = 0x04008174, 1570e66f109SKrzysztof Kozlowski .test_ctl_val = 0x00000000, 1580e66f109SKrzysztof Kozlowski .test_ctl_hi_val = 0x0080c496, 1590e66f109SKrzysztof Kozlowski .test_ctl_hi1_val = 0x40100180, 1600e66f109SKrzysztof Kozlowski .test_ctl_hi2_val = 0x441001bc, 1610e66f109SKrzysztof Kozlowski .test_ctl_hi3_val = 0x000003d8, 1620e66f109SKrzysztof Kozlowski .user_ctl_val = 0x00000000, 1630e66f109SKrzysztof Kozlowski .user_ctl_hi_val = 0x00e50302, 1640e66f109SKrzysztof Kozlowski }; 1650e66f109SKrzysztof Kozlowski 1660e66f109SKrzysztof Kozlowski static struct clk_alpha_pll disp_cc_pll2 = { 1670e66f109SKrzysztof Kozlowski .offset = 0x2000, 1680e66f109SKrzysztof Kozlowski .config = &disp_cc_pll2_config, 1690e66f109SKrzysztof Kozlowski .vco_table = pongo_ole_vco, 1700e66f109SKrzysztof Kozlowski .num_vco = ARRAY_SIZE(pongo_ole_vco), 1710e66f109SKrzysztof Kozlowski .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_PONGO_ELU], 1720e66f109SKrzysztof Kozlowski .clkr = { 1730e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 1740e66f109SKrzysztof Kozlowski .name = "disp_cc_pll2", 1750e66f109SKrzysztof Kozlowski .parent_data = &(const struct clk_parent_data) { 1760e66f109SKrzysztof Kozlowski .index = DT_SLEEP_CLK, 1770e66f109SKrzysztof Kozlowski }, 1780e66f109SKrzysztof Kozlowski .num_parents = 1, 1790e66f109SKrzysztof Kozlowski .ops = &clk_alpha_pll_pongo_elu_ops, 1800e66f109SKrzysztof Kozlowski }, 1810e66f109SKrzysztof Kozlowski }, 1820e66f109SKrzysztof Kozlowski }; 1830e66f109SKrzysztof Kozlowski 1840e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_0[] = { 1850e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 1860e66f109SKrzysztof Kozlowski }; 1870e66f109SKrzysztof Kozlowski 1880e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_0[] = { 1890e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 1900e66f109SKrzysztof Kozlowski }; 1910e66f109SKrzysztof Kozlowski 1920e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_0_ao[] = { 1930e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO_AO }, 1940e66f109SKrzysztof Kozlowski }; 1950e66f109SKrzysztof Kozlowski 1960e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_1[] = { 1970e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 1980e66f109SKrzysztof Kozlowski { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 1990e66f109SKrzysztof Kozlowski { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 2000e66f109SKrzysztof Kozlowski { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 2010e66f109SKrzysztof Kozlowski { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 2020e66f109SKrzysztof Kozlowski }; 2030e66f109SKrzysztof Kozlowski 2040e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_1[] = { 2050e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2060e66f109SKrzysztof Kozlowski { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 2070e66f109SKrzysztof Kozlowski { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 2080e66f109SKrzysztof Kozlowski { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 2090e66f109SKrzysztof Kozlowski { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 2100e66f109SKrzysztof Kozlowski }; 2110e66f109SKrzysztof Kozlowski 2120e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_2[] = { 2130e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2140e66f109SKrzysztof Kozlowski { P_DP3_PHY_PLL_VCO_DIV_CLK, 3 }, 2150e66f109SKrzysztof Kozlowski { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 2160e66f109SKrzysztof Kozlowski { P_DP2_PHY_PLL_VCO_DIV_CLK, 6 }, 2170e66f109SKrzysztof Kozlowski }; 2180e66f109SKrzysztof Kozlowski 2190e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_2[] = { 2200e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2210e66f109SKrzysztof Kozlowski { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 2220e66f109SKrzysztof Kozlowski { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 2230e66f109SKrzysztof Kozlowski { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 2240e66f109SKrzysztof Kozlowski }; 2250e66f109SKrzysztof Kozlowski 2260e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_3[] = { 2270e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2280e66f109SKrzysztof Kozlowski { P_DP1_PHY_PLL_LINK_CLK, 2 }, 2290e66f109SKrzysztof Kozlowski { P_DP2_PHY_PLL_LINK_CLK, 3 }, 2300e66f109SKrzysztof Kozlowski { P_DP3_PHY_PLL_LINK_CLK, 4 }, 2310e66f109SKrzysztof Kozlowski }; 2320e66f109SKrzysztof Kozlowski 2330e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_3[] = { 2340e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2350e66f109SKrzysztof Kozlowski { .index = DT_DP1_PHY_PLL_LINK_CLK }, 2360e66f109SKrzysztof Kozlowski { .index = DT_DP2_PHY_PLL_LINK_CLK }, 2370e66f109SKrzysztof Kozlowski { .index = DT_DP3_PHY_PLL_LINK_CLK }, 2380e66f109SKrzysztof Kozlowski }; 2390e66f109SKrzysztof Kozlowski 2400e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_4[] = { 2410e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2420e66f109SKrzysztof Kozlowski { P_DSI0_PHY_PLL_OUT_DSICLK, 1 }, 2430e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL2_OUT_MAIN, 2 }, 2440e66f109SKrzysztof Kozlowski { P_DSI1_PHY_PLL_OUT_DSICLK, 3 }, 2450e66f109SKrzysztof Kozlowski }; 2460e66f109SKrzysztof Kozlowski 2470e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_4[] = { 2480e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2490e66f109SKrzysztof Kozlowski { .index = DT_DSI0_PHY_PLL_OUT_DSICLK }, 2500e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll2.clkr.hw }, 2510e66f109SKrzysztof Kozlowski { .index = DT_DSI1_PHY_PLL_OUT_DSICLK }, 2520e66f109SKrzysztof Kozlowski }; 2530e66f109SKrzysztof Kozlowski 2540e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_5[] = { 2550e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2560e66f109SKrzysztof Kozlowski { P_DP0_PHY_PLL_LINK_CLK, 1 }, 2570e66f109SKrzysztof Kozlowski { P_DP0_PHY_PLL_VCO_DIV_CLK, 2 }, 2580e66f109SKrzysztof Kozlowski { P_DP3_PHY_PLL_VCO_DIV_CLK, 3 }, 2590e66f109SKrzysztof Kozlowski { P_DP1_PHY_PLL_VCO_DIV_CLK, 4 }, 2600e66f109SKrzysztof Kozlowski { P_DP2_PHY_PLL_VCO_DIV_CLK, 6 }, 2610e66f109SKrzysztof Kozlowski }; 2620e66f109SKrzysztof Kozlowski 2630e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_5[] = { 2640e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2650e66f109SKrzysztof Kozlowski { .index = DT_DP0_PHY_PLL_LINK_CLK }, 2660e66f109SKrzysztof Kozlowski { .index = DT_DP0_PHY_PLL_VCO_DIV_CLK }, 2670e66f109SKrzysztof Kozlowski { .index = DT_DP3_PHY_PLL_VCO_DIV_CLK }, 2680e66f109SKrzysztof Kozlowski { .index = DT_DP1_PHY_PLL_VCO_DIV_CLK }, 2690e66f109SKrzysztof Kozlowski { .index = DT_DP2_PHY_PLL_VCO_DIV_CLK }, 2700e66f109SKrzysztof Kozlowski }; 2710e66f109SKrzysztof Kozlowski 2720e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_6[] = { 2730e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2740e66f109SKrzysztof Kozlowski { P_DSI0_PHY_PLL_OUT_BYTECLK, 2 }, 2750e66f109SKrzysztof Kozlowski { P_DSI1_PHY_PLL_OUT_BYTECLK, 4 }, 2760e66f109SKrzysztof Kozlowski }; 2770e66f109SKrzysztof Kozlowski 2780e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_6[] = { 2790e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2800e66f109SKrzysztof Kozlowski { .index = DT_DSI0_PHY_PLL_OUT_BYTECLK }, 2810e66f109SKrzysztof Kozlowski { .index = DT_DSI1_PHY_PLL_OUT_BYTECLK }, 2820e66f109SKrzysztof Kozlowski }; 2830e66f109SKrzysztof Kozlowski 2840e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_7[] = { 2850e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2860e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL1_OUT_MAIN, 4 }, 2870e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL1_OUT_EVEN, 6 }, 2880e66f109SKrzysztof Kozlowski }; 2890e66f109SKrzysztof Kozlowski 2900e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_7[] = { 2910e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 2920e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll1.clkr.hw }, 2930e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll1.clkr.hw }, 2940e66f109SKrzysztof Kozlowski }; 2950e66f109SKrzysztof Kozlowski 2960e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_8[] = { 2970e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 2980e66f109SKrzysztof Kozlowski { P_DP0_PHY_PLL_LINK_CLK, 1 }, 2990e66f109SKrzysztof Kozlowski { P_DP1_PHY_PLL_LINK_CLK, 2 }, 3000e66f109SKrzysztof Kozlowski { P_DP2_PHY_PLL_LINK_CLK, 3 }, 3010e66f109SKrzysztof Kozlowski { P_DP3_PHY_PLL_LINK_CLK, 4 }, 3020e66f109SKrzysztof Kozlowski }; 3030e66f109SKrzysztof Kozlowski 3040e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_8[] = { 3050e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 3060e66f109SKrzysztof Kozlowski { .index = DT_DP0_PHY_PLL_LINK_CLK }, 3070e66f109SKrzysztof Kozlowski { .index = DT_DP1_PHY_PLL_LINK_CLK }, 3080e66f109SKrzysztof Kozlowski { .index = DT_DP2_PHY_PLL_LINK_CLK }, 3090e66f109SKrzysztof Kozlowski { .index = DT_DP3_PHY_PLL_LINK_CLK }, 3100e66f109SKrzysztof Kozlowski }; 3110e66f109SKrzysztof Kozlowski 3120e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_9[] = { 3130e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 3140e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL0_OUT_MAIN, 1 }, 3150e66f109SKrzysztof Kozlowski }; 3160e66f109SKrzysztof Kozlowski 3170e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_9[] = { 3180e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 3190e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll0.clkr.hw }, 3200e66f109SKrzysztof Kozlowski }; 3210e66f109SKrzysztof Kozlowski 3220e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_10[] = { 3230e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 3240e66f109SKrzysztof Kozlowski { P_HDMI_PHY_PLL_CLK, 1 }, 3250e66f109SKrzysztof Kozlowski }; 3260e66f109SKrzysztof Kozlowski 3270e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_10[] = { 3280e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 3290e66f109SKrzysztof Kozlowski { .index = DT_HDMI_PHY_PLL_CLK }, 3300e66f109SKrzysztof Kozlowski }; 3310e66f109SKrzysztof Kozlowski 3320e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_11[] = { 3330e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 3340e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL0_OUT_MAIN, 1 }, 3350e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL1_OUT_MAIN, 4 }, 3360e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL1_OUT_EVEN, 6 }, 3370e66f109SKrzysztof Kozlowski }; 3380e66f109SKrzysztof Kozlowski 3390e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_11[] = { 3400e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 3410e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll0.clkr.hw }, 3420e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll1.clkr.hw }, 3430e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll1.clkr.hw }, 3440e66f109SKrzysztof Kozlowski }; 3450e66f109SKrzysztof Kozlowski 3460e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_12[] = { 3470e66f109SKrzysztof Kozlowski { P_BI_TCXO, 0 }, 3480e66f109SKrzysztof Kozlowski { P_DISP_CC_PLL2_OUT_MAIN, 2 }, 3490e66f109SKrzysztof Kozlowski }; 3500e66f109SKrzysztof Kozlowski 3510e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_12[] = { 3520e66f109SKrzysztof Kozlowski { .index = DT_BI_TCXO }, 3530e66f109SKrzysztof Kozlowski { .hw = &disp_cc_pll2.clkr.hw }, 3540e66f109SKrzysztof Kozlowski }; 3550e66f109SKrzysztof Kozlowski 3560e66f109SKrzysztof Kozlowski static const struct parent_map disp_cc_parent_map_13[] = { 3570e66f109SKrzysztof Kozlowski { P_SLEEP_CLK, 0 }, 3580e66f109SKrzysztof Kozlowski }; 3590e66f109SKrzysztof Kozlowski 3600e66f109SKrzysztof Kozlowski static const struct clk_parent_data disp_cc_parent_data_13_ao[] = { 3610e66f109SKrzysztof Kozlowski { .index = DT_SLEEP_CLK }, 3620e66f109SKrzysztof Kozlowski }; 3630e66f109SKrzysztof Kozlowski 3640e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_esync0_clk_src[] = { 3650e66f109SKrzysztof Kozlowski F(19200000, P_BI_TCXO, 1, 0, 0), 3660e66f109SKrzysztof Kozlowski { } 3670e66f109SKrzysztof Kozlowski }; 3680e66f109SKrzysztof Kozlowski 3690e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_esync0_clk_src = { 3700e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x80c0, 3710e66f109SKrzysztof Kozlowski .mnd_width = 16, 3720e66f109SKrzysztof Kozlowski .hid_width = 5, 3730e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_4, 3740e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 3750e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 3760e66f109SKrzysztof Kozlowski .name = "disp_cc_esync0_clk_src", 3770e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_4, 3780e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 3790e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 3800e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 3810e66f109SKrzysztof Kozlowski }, 3820e66f109SKrzysztof Kozlowski }; 3830e66f109SKrzysztof Kozlowski 3840e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_esync1_clk_src = { 3850e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x80d8, 3860e66f109SKrzysztof Kozlowski .mnd_width = 16, 3870e66f109SKrzysztof Kozlowski .hid_width = 5, 3880e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_4, 3890e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 3900e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 3910e66f109SKrzysztof Kozlowski .name = "disp_cc_esync1_clk_src", 3920e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_4, 3930e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 3940e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 3950e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 3960e66f109SKrzysztof Kozlowski }, 3970e66f109SKrzysztof Kozlowski }; 3980e66f109SKrzysztof Kozlowski 3990e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = { 4000e66f109SKrzysztof Kozlowski F(19200000, P_BI_TCXO, 1, 0, 0), 4010e66f109SKrzysztof Kozlowski F(37500000, P_DISP_CC_PLL1_OUT_MAIN, 16, 0, 0), 4020e66f109SKrzysztof Kozlowski F(75000000, P_DISP_CC_PLL1_OUT_MAIN, 8, 0, 0), 4030e66f109SKrzysztof Kozlowski { } 4040e66f109SKrzysztof Kozlowski }; 4050e66f109SKrzysztof Kozlowski 4060e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_ahb_clk_src = { 4070e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8360, 4080e66f109SKrzysztof Kozlowski .mnd_width = 0, 4090e66f109SKrzysztof Kozlowski .hid_width = 5, 4100e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_7, 4110e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_mdss_ahb_clk_src, 4120e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4130e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_ahb_clk_src", 4140e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_7, 4150e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_7), 4160e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 4170e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_shared_ops, 4180e66f109SKrzysztof Kozlowski }, 4190e66f109SKrzysztof Kozlowski }; 4200e66f109SKrzysztof Kozlowski 4210e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_byte0_clk_src = { 4220e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8180, 4230e66f109SKrzysztof Kozlowski .mnd_width = 0, 4240e66f109SKrzysztof Kozlowski .hid_width = 5, 4250e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_1, 4260e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 4270e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4280e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte0_clk_src", 4290e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_1, 4300e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 4310e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 4320e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 4330e66f109SKrzysztof Kozlowski }, 4340e66f109SKrzysztof Kozlowski }; 4350e66f109SKrzysztof Kozlowski 4360e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_byte1_clk_src = { 4370e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x819c, 4380e66f109SKrzysztof Kozlowski .mnd_width = 0, 4390e66f109SKrzysztof Kozlowski .hid_width = 5, 4400e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_1, 4410e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 4420e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4430e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte1_clk_src", 4440e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_1, 4450e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 4460e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 4470e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 4480e66f109SKrzysztof Kozlowski }, 4490e66f109SKrzysztof Kozlowski }; 4500e66f109SKrzysztof Kozlowski 4510e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_aux_clk_src = { 4520e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8234, 4530e66f109SKrzysztof Kozlowski .mnd_width = 0, 4540e66f109SKrzysztof Kozlowski .hid_width = 5, 4550e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 4560e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 4570e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4580e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_aux_clk_src", 4590e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0, 4600e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 4610e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 4620e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 4630e66f109SKrzysztof Kozlowski }, 4640e66f109SKrzysztof Kozlowski }; 4650e66f109SKrzysztof Kozlowski 4660e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_link_clk_src = { 4670e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x81e8, 4680e66f109SKrzysztof Kozlowski .mnd_width = 0, 4690e66f109SKrzysztof Kozlowski .hid_width = 5, 4700e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_8, 4710e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 4720e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4730e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_link_clk_src", 4740e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_8, 4750e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_8), 4760e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 4770e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 4780e66f109SKrzysztof Kozlowski }, 4790e66f109SKrzysztof Kozlowski }; 4800e66f109SKrzysztof Kozlowski 4810e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_pixel0_clk_src = { 4820e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8204, 4830e66f109SKrzysztof Kozlowski .mnd_width = 16, 4840e66f109SKrzysztof Kozlowski .hid_width = 5, 4850e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_5, 4860e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 4870e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 4880e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_pixel0_clk_src", 4890e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_5, 4900e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_5), 4910e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 4920e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 4930e66f109SKrzysztof Kozlowski }, 4940e66f109SKrzysztof Kozlowski }; 4950e66f109SKrzysztof Kozlowski 4960e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx0_pixel1_clk_src = { 4970e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x821c, 4980e66f109SKrzysztof Kozlowski .mnd_width = 16, 4990e66f109SKrzysztof Kozlowski .hid_width = 5, 5000e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_5, 5010e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5020e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5030e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_pixel1_clk_src", 5040e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_5, 5050e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_5), 5060e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5070e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 5080e66f109SKrzysztof Kozlowski }, 5090e66f109SKrzysztof Kozlowski }; 5100e66f109SKrzysztof Kozlowski 5110e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_aux_clk_src = { 5120e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8298, 5130e66f109SKrzysztof Kozlowski .mnd_width = 0, 5140e66f109SKrzysztof Kozlowski .hid_width = 5, 5150e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 5160e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5170e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5180e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_aux_clk_src", 5190e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0, 5200e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 5210e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5220e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 5230e66f109SKrzysztof Kozlowski }, 5240e66f109SKrzysztof Kozlowski }; 5250e66f109SKrzysztof Kozlowski 5260e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_link_clk_src = { 5270e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x827c, 5280e66f109SKrzysztof Kozlowski .mnd_width = 0, 5290e66f109SKrzysztof Kozlowski .hid_width = 5, 5300e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_3, 5310e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5320e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5330e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_link_clk_src", 5340e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_3, 5350e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 5360e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5370e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 5380e66f109SKrzysztof Kozlowski }, 5390e66f109SKrzysztof Kozlowski }; 5400e66f109SKrzysztof Kozlowski 5410e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_pixel0_clk_src = { 5420e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x824c, 5430e66f109SKrzysztof Kozlowski .mnd_width = 16, 5440e66f109SKrzysztof Kozlowski .hid_width = 5, 5450e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_2, 5460e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5470e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5480e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_pixel0_clk_src", 5490e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_2, 5500e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 5510e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5520e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 5530e66f109SKrzysztof Kozlowski }, 5540e66f109SKrzysztof Kozlowski }; 5550e66f109SKrzysztof Kozlowski 5560e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx1_pixel1_clk_src = { 5570e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8264, 5580e66f109SKrzysztof Kozlowski .mnd_width = 16, 5590e66f109SKrzysztof Kozlowski .hid_width = 5, 5600e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_2, 5610e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5620e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5630e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_pixel1_clk_src", 5640e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_2, 5650e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 5660e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5670e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 5680e66f109SKrzysztof Kozlowski }, 5690e66f109SKrzysztof Kozlowski }; 5700e66f109SKrzysztof Kozlowski 5710e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_aux_clk_src = { 5720e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x82fc, 5730e66f109SKrzysztof Kozlowski .mnd_width = 0, 5740e66f109SKrzysztof Kozlowski .hid_width = 5, 5750e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 5760e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5770e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5780e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_aux_clk_src", 5790e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0, 5800e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 5810e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5820e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 5830e66f109SKrzysztof Kozlowski }, 5840e66f109SKrzysztof Kozlowski }; 5850e66f109SKrzysztof Kozlowski 5860e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_link_clk_src = { 5870e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x82b0, 5880e66f109SKrzysztof Kozlowski .mnd_width = 0, 5890e66f109SKrzysztof Kozlowski .hid_width = 5, 5900e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_3, 5910e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 5920e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 5930e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_link_clk_src", 5940e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_3, 5950e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 5960e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 5970e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 5980e66f109SKrzysztof Kozlowski }, 5990e66f109SKrzysztof Kozlowski }; 6000e66f109SKrzysztof Kozlowski 6010e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_pixel0_clk_src = { 6020e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x82cc, 6030e66f109SKrzysztof Kozlowski .mnd_width = 16, 6040e66f109SKrzysztof Kozlowski .hid_width = 5, 6050e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_2, 6060e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6070e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6080e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_pixel0_clk_src", 6090e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_2, 6100e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 6110e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6120e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 6130e66f109SKrzysztof Kozlowski }, 6140e66f109SKrzysztof Kozlowski }; 6150e66f109SKrzysztof Kozlowski 6160e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx2_pixel1_clk_src = { 6170e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x82e4, 6180e66f109SKrzysztof Kozlowski .mnd_width = 16, 6190e66f109SKrzysztof Kozlowski .hid_width = 5, 6200e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_2, 6210e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6220e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6230e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_pixel1_clk_src", 6240e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_2, 6250e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 6260e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6270e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 6280e66f109SKrzysztof Kozlowski }, 6290e66f109SKrzysztof Kozlowski }; 6300e66f109SKrzysztof Kozlowski 6310e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_aux_clk_src = { 6320e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8348, 6330e66f109SKrzysztof Kozlowski .mnd_width = 0, 6340e66f109SKrzysztof Kozlowski .hid_width = 5, 6350e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 6360e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6370e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6380e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_aux_clk_src", 6390e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0, 6400e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 6410e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6420e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 6430e66f109SKrzysztof Kozlowski }, 6440e66f109SKrzysztof Kozlowski }; 6450e66f109SKrzysztof Kozlowski 6460e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_link_clk_src = { 6470e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x832c, 6480e66f109SKrzysztof Kozlowski .mnd_width = 0, 6490e66f109SKrzysztof Kozlowski .hid_width = 5, 6500e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_3, 6510e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6520e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6530e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_link_clk_src", 6540e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_3, 6550e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_3), 6560e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6570e66f109SKrzysztof Kozlowski .ops = &clk_byte2_ops, 6580e66f109SKrzysztof Kozlowski }, 6590e66f109SKrzysztof Kozlowski }; 6600e66f109SKrzysztof Kozlowski 6610e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_dptx3_pixel0_clk_src = { 6620e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8314, 6630e66f109SKrzysztof Kozlowski .mnd_width = 16, 6640e66f109SKrzysztof Kozlowski .hid_width = 5, 6650e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_2, 6660e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6670e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6680e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_pixel0_clk_src", 6690e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_2, 6700e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_2), 6710e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6720e66f109SKrzysztof Kozlowski .ops = &clk_dp_ops, 6730e66f109SKrzysztof Kozlowski }, 6740e66f109SKrzysztof Kozlowski }; 6750e66f109SKrzysztof Kozlowski 6760e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_esc0_clk_src = { 6770e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x81b8, 6780e66f109SKrzysztof Kozlowski .mnd_width = 0, 6790e66f109SKrzysztof Kozlowski .hid_width = 5, 6800e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_6, 6810e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6820e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6830e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_esc0_clk_src", 6840e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_6, 6850e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_6), 6860e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 6870e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_shared_ops, 6880e66f109SKrzysztof Kozlowski }, 6890e66f109SKrzysztof Kozlowski }; 6900e66f109SKrzysztof Kozlowski 6910e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_esc1_clk_src = { 6920e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x81d0, 6930e66f109SKrzysztof Kozlowski .mnd_width = 0, 6940e66f109SKrzysztof Kozlowski .hid_width = 5, 6950e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_6, 6960e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 6970e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 6980e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_esc1_clk_src", 6990e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_6, 7000e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_6), 7010e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 7020e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_shared_ops, 7030e66f109SKrzysztof Kozlowski }, 7040e66f109SKrzysztof Kozlowski }; 7050e66f109SKrzysztof Kozlowski 7060e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_hdmi_app_clk_src = { 7070e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x83a8, 7080e66f109SKrzysztof Kozlowski .mnd_width = 0, 7090e66f109SKrzysztof Kozlowski .hid_width = 5, 7100e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_9, 7110e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 7120e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 7130e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_app_clk_src", 7140e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_9, 7150e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_9), 7160e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 7170e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_shared_ops, 7180e66f109SKrzysztof Kozlowski }, 7190e66f109SKrzysztof Kozlowski }; 7200e66f109SKrzysztof Kozlowski 7210e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_hdmi_pclk_clk_src = { 7220e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8390, 7230e66f109SKrzysztof Kozlowski .mnd_width = 16, 7240e66f109SKrzysztof Kozlowski .hid_width = 5, 7250e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_10, 7260e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 7270e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 7280e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_pclk_clk_src", 7290e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_10, 7300e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_10), 7310e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 7320e66f109SKrzysztof Kozlowski .ops = &clk_pixel_ops, 7330e66f109SKrzysztof Kozlowski }, 7340e66f109SKrzysztof Kozlowski }; 7350e66f109SKrzysztof Kozlowski 7360e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_mdss_mdp_clk_src[] = { 7370e66f109SKrzysztof Kozlowski F(85714286, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7380e66f109SKrzysztof Kozlowski F(100000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7390e66f109SKrzysztof Kozlowski F(150000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7400e66f109SKrzysztof Kozlowski F(207000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7410e66f109SKrzysztof Kozlowski F(342000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7420e66f109SKrzysztof Kozlowski F(417000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7430e66f109SKrzysztof Kozlowski F(535000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7440e66f109SKrzysztof Kozlowski F(600000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7450e66f109SKrzysztof Kozlowski F(660000000, P_DISP_CC_PLL0_OUT_MAIN, 3, 0, 0), 7460e66f109SKrzysztof Kozlowski { } 7470e66f109SKrzysztof Kozlowski }; 7480e66f109SKrzysztof Kozlowski 7490e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_mdp_clk_src = { 7500e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8150, 7510e66f109SKrzysztof Kozlowski .mnd_width = 0, 7520e66f109SKrzysztof Kozlowski .hid_width = 5, 7530e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_11, 7540e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_mdss_mdp_clk_src, 7550e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 7560e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_mdp_clk_src", 7570e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_11, 7580e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_11), 7590e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 7600e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_shared_ops, 7610e66f109SKrzysztof Kozlowski }, 7620e66f109SKrzysztof Kozlowski }; 7630e66f109SKrzysztof Kozlowski 7640e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk0_clk_src = { 7650e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8108, 7660e66f109SKrzysztof Kozlowski .mnd_width = 8, 7670e66f109SKrzysztof Kozlowski .hid_width = 5, 7680e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_1, 7690e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 7700e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 7710e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk0_clk_src", 7720e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_1, 7730e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 7740e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 7750e66f109SKrzysztof Kozlowski .ops = &clk_pixel_ops, 7760e66f109SKrzysztof Kozlowski }, 7770e66f109SKrzysztof Kozlowski }; 7780e66f109SKrzysztof Kozlowski 7790e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk1_clk_src = { 7800e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8120, 7810e66f109SKrzysztof Kozlowski .mnd_width = 8, 7820e66f109SKrzysztof Kozlowski .hid_width = 5, 7830e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_1, 7840e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 7850e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 7860e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk1_clk_src", 7870e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_1, 7880e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 7890e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 7900e66f109SKrzysztof Kozlowski .ops = &clk_pixel_ops, 7910e66f109SKrzysztof Kozlowski }, 7920e66f109SKrzysztof Kozlowski }; 7930e66f109SKrzysztof Kozlowski 7940e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_pclk2_clk_src = { 7950e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8138, 7960e66f109SKrzysztof Kozlowski .mnd_width = 8, 7970e66f109SKrzysztof Kozlowski .hid_width = 5, 7980e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_1, 7990e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 8000e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8010e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk2_clk_src", 8020e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_1, 8030e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 8040e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 8050e66f109SKrzysztof Kozlowski .ops = &clk_pixel_ops, 8060e66f109SKrzysztof Kozlowski }, 8070e66f109SKrzysztof Kozlowski }; 8080e66f109SKrzysztof Kozlowski 8090e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_mdss_vsync_clk_src = { 8100e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x8168, 8110e66f109SKrzysztof Kozlowski .mnd_width = 0, 8120e66f109SKrzysztof Kozlowski .hid_width = 5, 8130e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 8140e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 8150e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8160e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_vsync_clk_src", 8170e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0, 8180e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 8190e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 8200e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 8210e66f109SKrzysztof Kozlowski }, 8220e66f109SKrzysztof Kozlowski }; 8230e66f109SKrzysztof Kozlowski 8240e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_osc_clk_src[] = { 8250e66f109SKrzysztof Kozlowski F(38400000, P_DISP_CC_PLL2_OUT_MAIN, 1, 0, 0), 8260e66f109SKrzysztof Kozlowski { } 8270e66f109SKrzysztof Kozlowski }; 8280e66f109SKrzysztof Kozlowski 8290e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_osc_clk_src = { 8300e66f109SKrzysztof Kozlowski .cmd_rcgr = 0x80f0, 8310e66f109SKrzysztof Kozlowski .mnd_width = 0, 8320e66f109SKrzysztof Kozlowski .hid_width = 5, 8330e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_12, 8340e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_osc_clk_src, 8350e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8360e66f109SKrzysztof Kozlowski .name = "disp_cc_osc_clk_src", 8370e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_12, 8380e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_12), 8390e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 8400e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 8410e66f109SKrzysztof Kozlowski }, 8420e66f109SKrzysztof Kozlowski }; 8430e66f109SKrzysztof Kozlowski 8440e66f109SKrzysztof Kozlowski static const struct freq_tbl ftbl_disp_cc_sleep_clk_src[] = { 8450e66f109SKrzysztof Kozlowski F(32000, P_SLEEP_CLK, 1, 0, 0), 8460e66f109SKrzysztof Kozlowski { } 8470e66f109SKrzysztof Kozlowski }; 8480e66f109SKrzysztof Kozlowski 8490e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_sleep_clk_src = { 8500e66f109SKrzysztof Kozlowski .cmd_rcgr = 0xe064, 8510e66f109SKrzysztof Kozlowski .mnd_width = 0, 8520e66f109SKrzysztof Kozlowski .hid_width = 5, 8530e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_13, 8540e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_sleep_clk_src, 8550e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8560e66f109SKrzysztof Kozlowski .name = "disp_cc_sleep_clk_src", 8570e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_13_ao, 8580e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_13_ao), 8590e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 8600e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 8610e66f109SKrzysztof Kozlowski }, 8620e66f109SKrzysztof Kozlowski }; 8630e66f109SKrzysztof Kozlowski 8640e66f109SKrzysztof Kozlowski static struct clk_rcg2 disp_cc_xo_clk_src = { 8650e66f109SKrzysztof Kozlowski .cmd_rcgr = 0xe044, 8660e66f109SKrzysztof Kozlowski .mnd_width = 0, 8670e66f109SKrzysztof Kozlowski .hid_width = 5, 8680e66f109SKrzysztof Kozlowski .parent_map = disp_cc_parent_map_0, 8690e66f109SKrzysztof Kozlowski .freq_tbl = ftbl_disp_cc_esync0_clk_src, 8700e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8710e66f109SKrzysztof Kozlowski .name = "disp_cc_xo_clk_src", 8720e66f109SKrzysztof Kozlowski .parent_data = disp_cc_parent_data_0_ao, 8730e66f109SKrzysztof Kozlowski .num_parents = ARRAY_SIZE(disp_cc_parent_data_0_ao), 8740e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 8750e66f109SKrzysztof Kozlowski .ops = &clk_rcg2_ops, 8760e66f109SKrzysztof Kozlowski }, 8770e66f109SKrzysztof Kozlowski }; 8780e66f109SKrzysztof Kozlowski 8790e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_byte0_div_clk_src = { 8800e66f109SKrzysztof Kozlowski .reg = 0x8198, 8810e66f109SKrzysztof Kozlowski .shift = 0, 8820e66f109SKrzysztof Kozlowski .width = 4, 8830e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8840e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte0_div_clk_src", 8850e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 8860e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte0_clk_src.clkr.hw, 8870e66f109SKrzysztof Kozlowski }, 8880e66f109SKrzysztof Kozlowski .num_parents = 1, 8890e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ops, 8900e66f109SKrzysztof Kozlowski }, 8910e66f109SKrzysztof Kozlowski }; 8920e66f109SKrzysztof Kozlowski 8930e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_byte1_div_clk_src = { 8940e66f109SKrzysztof Kozlowski .reg = 0x81b4, 8950e66f109SKrzysztof Kozlowski .shift = 0, 8960e66f109SKrzysztof Kozlowski .width = 4, 8970e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 8980e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte1_div_clk_src", 8990e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9000e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte1_clk_src.clkr.hw, 9010e66f109SKrzysztof Kozlowski }, 9020e66f109SKrzysztof Kozlowski .num_parents = 1, 9030e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ops, 9040e66f109SKrzysztof Kozlowski }, 9050e66f109SKrzysztof Kozlowski }; 9060e66f109SKrzysztof Kozlowski 9070e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx0_link_div_clk_src = { 9080e66f109SKrzysztof Kozlowski .reg = 0x8200, 9090e66f109SKrzysztof Kozlowski .shift = 0, 9100e66f109SKrzysztof Kozlowski .width = 4, 9110e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 9120e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_link_div_clk_src", 9130e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9140e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 9150e66f109SKrzysztof Kozlowski }, 9160e66f109SKrzysztof Kozlowski .num_parents = 1, 9170e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9180e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ro_ops, 9190e66f109SKrzysztof Kozlowski }, 9200e66f109SKrzysztof Kozlowski }; 9210e66f109SKrzysztof Kozlowski 9220e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx1_link_div_clk_src = { 9230e66f109SKrzysztof Kozlowski .reg = 0x8294, 9240e66f109SKrzysztof Kozlowski .shift = 0, 9250e66f109SKrzysztof Kozlowski .width = 4, 9260e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 9270e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_link_div_clk_src", 9280e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9290e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 9300e66f109SKrzysztof Kozlowski }, 9310e66f109SKrzysztof Kozlowski .num_parents = 1, 9320e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9330e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ro_ops, 9340e66f109SKrzysztof Kozlowski }, 9350e66f109SKrzysztof Kozlowski }; 9360e66f109SKrzysztof Kozlowski 9370e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx2_link_div_clk_src = { 9380e66f109SKrzysztof Kozlowski .reg = 0x82c8, 9390e66f109SKrzysztof Kozlowski .shift = 0, 9400e66f109SKrzysztof Kozlowski .width = 4, 9410e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 9420e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_link_div_clk_src", 9430e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9440e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 9450e66f109SKrzysztof Kozlowski }, 9460e66f109SKrzysztof Kozlowski .num_parents = 1, 9470e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9480e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ro_ops, 9490e66f109SKrzysztof Kozlowski }, 9500e66f109SKrzysztof Kozlowski }; 9510e66f109SKrzysztof Kozlowski 9520e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_dptx3_link_div_clk_src = { 9530e66f109SKrzysztof Kozlowski .reg = 0x8344, 9540e66f109SKrzysztof Kozlowski .shift = 0, 9550e66f109SKrzysztof Kozlowski .width = 4, 9560e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 9570e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_link_div_clk_src", 9580e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9590e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 9600e66f109SKrzysztof Kozlowski }, 9610e66f109SKrzysztof Kozlowski .num_parents = 1, 9620e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9630e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ro_ops, 9640e66f109SKrzysztof Kozlowski }, 9650e66f109SKrzysztof Kozlowski }; 9660e66f109SKrzysztof Kozlowski 9670e66f109SKrzysztof Kozlowski static struct clk_regmap_div disp_cc_mdss_hdmi_pclk_div_clk_src = { 9680e66f109SKrzysztof Kozlowski .reg = 0x838c, 9690e66f109SKrzysztof Kozlowski .shift = 0, 9700e66f109SKrzysztof Kozlowski .width = 4, 9710e66f109SKrzysztof Kozlowski .clkr.hw.init = &(const struct clk_init_data) { 9720e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_pclk_div_clk_src", 9730e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9740e66f109SKrzysztof Kozlowski &disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw, 9750e66f109SKrzysztof Kozlowski }, 9760e66f109SKrzysztof Kozlowski .num_parents = 1, 9770e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9780e66f109SKrzysztof Kozlowski .ops = &clk_regmap_div_ro_ops, 9790e66f109SKrzysztof Kozlowski }, 9800e66f109SKrzysztof Kozlowski }; 9810e66f109SKrzysztof Kozlowski 9820e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_esync0_clk = { 9830e66f109SKrzysztof Kozlowski .halt_reg = 0x80b8, 9840e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 9850e66f109SKrzysztof Kozlowski .clkr = { 9860e66f109SKrzysztof Kozlowski .enable_reg = 0x80b8, 9870e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 9880e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 9890e66f109SKrzysztof Kozlowski .name = "disp_cc_esync0_clk", 9900e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 9910e66f109SKrzysztof Kozlowski &disp_cc_esync0_clk_src.clkr.hw, 9920e66f109SKrzysztof Kozlowski }, 9930e66f109SKrzysztof Kozlowski .num_parents = 1, 9940e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 9950e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 9960e66f109SKrzysztof Kozlowski }, 9970e66f109SKrzysztof Kozlowski }, 9980e66f109SKrzysztof Kozlowski }; 9990e66f109SKrzysztof Kozlowski 10000e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_esync1_clk = { 10010e66f109SKrzysztof Kozlowski .halt_reg = 0x80bc, 10020e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 10030e66f109SKrzysztof Kozlowski .clkr = { 10040e66f109SKrzysztof Kozlowski .enable_reg = 0x80bc, 10050e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10060e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10070e66f109SKrzysztof Kozlowski .name = "disp_cc_esync1_clk", 10080e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10090e66f109SKrzysztof Kozlowski &disp_cc_esync1_clk_src.clkr.hw, 10100e66f109SKrzysztof Kozlowski }, 10110e66f109SKrzysztof Kozlowski .num_parents = 1, 10120e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 10130e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 10140e66f109SKrzysztof Kozlowski }, 10150e66f109SKrzysztof Kozlowski }, 10160e66f109SKrzysztof Kozlowski }; 10170e66f109SKrzysztof Kozlowski 10180e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_accu_shift_clk = { 10190e66f109SKrzysztof Kozlowski .halt_reg = 0xe060, 10200e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT_VOTED, 10210e66f109SKrzysztof Kozlowski .clkr = { 10220e66f109SKrzysztof Kozlowski .enable_reg = 0xe060, 10230e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10240e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10250e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_accu_shift_clk", 10260e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10270e66f109SKrzysztof Kozlowski &disp_cc_xo_clk_src.clkr.hw, 10280e66f109SKrzysztof Kozlowski }, 10290e66f109SKrzysztof Kozlowski .num_parents = 1, 10300e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 10310e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 10320e66f109SKrzysztof Kozlowski }, 10330e66f109SKrzysztof Kozlowski }, 10340e66f109SKrzysztof Kozlowski }; 10350e66f109SKrzysztof Kozlowski 10360e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_ahb1_clk = { 10370e66f109SKrzysztof Kozlowski .halt_reg = 0xa028, 10380e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 10390e66f109SKrzysztof Kozlowski .clkr = { 10400e66f109SKrzysztof Kozlowski .enable_reg = 0xa028, 10410e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10420e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10430e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_ahb1_clk", 10440e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10450e66f109SKrzysztof Kozlowski &disp_cc_mdss_ahb_clk_src.clkr.hw, 10460e66f109SKrzysztof Kozlowski }, 10470e66f109SKrzysztof Kozlowski .num_parents = 1, 10480e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 10490e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 10500e66f109SKrzysztof Kozlowski }, 10510e66f109SKrzysztof Kozlowski }, 10520e66f109SKrzysztof Kozlowski }; 10530e66f109SKrzysztof Kozlowski 10540e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_ahb_clk = { 10550e66f109SKrzysztof Kozlowski .halt_reg = 0x80b0, 10560e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 10570e66f109SKrzysztof Kozlowski .clkr = { 10580e66f109SKrzysztof Kozlowski .enable_reg = 0x80b0, 10590e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10600e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10610e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_ahb_clk", 10620e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10630e66f109SKrzysztof Kozlowski &disp_cc_mdss_ahb_clk_src.clkr.hw, 10640e66f109SKrzysztof Kozlowski }, 10650e66f109SKrzysztof Kozlowski .num_parents = 1, 10660e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 10670e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 10680e66f109SKrzysztof Kozlowski }, 10690e66f109SKrzysztof Kozlowski }, 10700e66f109SKrzysztof Kozlowski }; 10710e66f109SKrzysztof Kozlowski 10720e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte0_clk = { 10730e66f109SKrzysztof Kozlowski .halt_reg = 0x8034, 10740e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 10750e66f109SKrzysztof Kozlowski .clkr = { 10760e66f109SKrzysztof Kozlowski .enable_reg = 0x8034, 10770e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10780e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10790e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte0_clk", 10800e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10810e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte0_clk_src.clkr.hw, 10820e66f109SKrzysztof Kozlowski }, 10830e66f109SKrzysztof Kozlowski .num_parents = 1, 10840e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 10850e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 10860e66f109SKrzysztof Kozlowski }, 10870e66f109SKrzysztof Kozlowski }, 10880e66f109SKrzysztof Kozlowski }; 10890e66f109SKrzysztof Kozlowski 10900e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte0_intf_clk = { 10910e66f109SKrzysztof Kozlowski .halt_reg = 0x8038, 10920e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 10930e66f109SKrzysztof Kozlowski .clkr = { 10940e66f109SKrzysztof Kozlowski .enable_reg = 0x8038, 10950e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 10960e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 10970e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte0_intf_clk", 10980e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 10990e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte0_div_clk_src.clkr.hw, 11000e66f109SKrzysztof Kozlowski }, 11010e66f109SKrzysztof Kozlowski .num_parents = 1, 11020e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11030e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11040e66f109SKrzysztof Kozlowski }, 11050e66f109SKrzysztof Kozlowski }, 11060e66f109SKrzysztof Kozlowski }; 11070e66f109SKrzysztof Kozlowski 11080e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte1_clk = { 11090e66f109SKrzysztof Kozlowski .halt_reg = 0x803c, 11100e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 11110e66f109SKrzysztof Kozlowski .clkr = { 11120e66f109SKrzysztof Kozlowski .enable_reg = 0x803c, 11130e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 11140e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 11150e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte1_clk", 11160e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 11170e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte1_clk_src.clkr.hw, 11180e66f109SKrzysztof Kozlowski }, 11190e66f109SKrzysztof Kozlowski .num_parents = 1, 11200e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11210e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11220e66f109SKrzysztof Kozlowski }, 11230e66f109SKrzysztof Kozlowski }, 11240e66f109SKrzysztof Kozlowski }; 11250e66f109SKrzysztof Kozlowski 11260e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_byte1_intf_clk = { 11270e66f109SKrzysztof Kozlowski .halt_reg = 0x8040, 11280e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 11290e66f109SKrzysztof Kozlowski .clkr = { 11300e66f109SKrzysztof Kozlowski .enable_reg = 0x8040, 11310e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 11320e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 11330e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_byte1_intf_clk", 11340e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 11350e66f109SKrzysztof Kozlowski &disp_cc_mdss_byte1_div_clk_src.clkr.hw, 11360e66f109SKrzysztof Kozlowski }, 11370e66f109SKrzysztof Kozlowski .num_parents = 1, 11380e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11390e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11400e66f109SKrzysztof Kozlowski }, 11410e66f109SKrzysztof Kozlowski }, 11420e66f109SKrzysztof Kozlowski }; 11430e66f109SKrzysztof Kozlowski 11440e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_aux_clk = { 11450e66f109SKrzysztof Kozlowski .halt_reg = 0x8064, 11460e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 11470e66f109SKrzysztof Kozlowski .clkr = { 11480e66f109SKrzysztof Kozlowski .enable_reg = 0x8064, 11490e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 11500e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 11510e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_aux_clk", 11520e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 11530e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_aux_clk_src.clkr.hw, 11540e66f109SKrzysztof Kozlowski }, 11550e66f109SKrzysztof Kozlowski .num_parents = 1, 11560e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11570e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11580e66f109SKrzysztof Kozlowski }, 11590e66f109SKrzysztof Kozlowski }, 11600e66f109SKrzysztof Kozlowski }; 11610e66f109SKrzysztof Kozlowski 11620e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_crypto_clk = { 11630e66f109SKrzysztof Kozlowski .halt_reg = 0x8058, 11640e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 11650e66f109SKrzysztof Kozlowski .clkr = { 11660e66f109SKrzysztof Kozlowski .enable_reg = 0x8058, 11670e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 11680e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 11690e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_crypto_clk", 11700e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 11710e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 11720e66f109SKrzysztof Kozlowski }, 11730e66f109SKrzysztof Kozlowski .num_parents = 1, 11740e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11750e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11760e66f109SKrzysztof Kozlowski }, 11770e66f109SKrzysztof Kozlowski }, 11780e66f109SKrzysztof Kozlowski }; 11790e66f109SKrzysztof Kozlowski 11800e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_link_clk = { 11810e66f109SKrzysztof Kozlowski .halt_reg = 0x804c, 11820e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 11830e66f109SKrzysztof Kozlowski .clkr = { 11840e66f109SKrzysztof Kozlowski .enable_reg = 0x804c, 11850e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 11860e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 11870e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_link_clk", 11880e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 11890e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_link_clk_src.clkr.hw, 11900e66f109SKrzysztof Kozlowski }, 11910e66f109SKrzysztof Kozlowski .num_parents = 1, 11920e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 11930e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 11940e66f109SKrzysztof Kozlowski }, 11950e66f109SKrzysztof Kozlowski }, 11960e66f109SKrzysztof Kozlowski }; 11970e66f109SKrzysztof Kozlowski 11980e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_link_intf_clk = { 11990e66f109SKrzysztof Kozlowski .halt_reg = 0x8054, 12000e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12010e66f109SKrzysztof Kozlowski .clkr = { 12020e66f109SKrzysztof Kozlowski .enable_reg = 0x8054, 12030e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12040e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12050e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_link_intf_clk", 12060e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12070e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 12080e66f109SKrzysztof Kozlowski }, 12090e66f109SKrzysztof Kozlowski .num_parents = 1, 12100e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 12110e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 12120e66f109SKrzysztof Kozlowski }, 12130e66f109SKrzysztof Kozlowski }, 12140e66f109SKrzysztof Kozlowski }; 12150e66f109SKrzysztof Kozlowski 12160e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_pixel0_clk = { 12170e66f109SKrzysztof Kozlowski .halt_reg = 0x805c, 12180e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12190e66f109SKrzysztof Kozlowski .clkr = { 12200e66f109SKrzysztof Kozlowski .enable_reg = 0x805c, 12210e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12220e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12230e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_pixel0_clk", 12240e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12250e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_pixel0_clk_src.clkr.hw, 12260e66f109SKrzysztof Kozlowski }, 12270e66f109SKrzysztof Kozlowski .num_parents = 1, 12280e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 12290e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 12300e66f109SKrzysztof Kozlowski }, 12310e66f109SKrzysztof Kozlowski }, 12320e66f109SKrzysztof Kozlowski }; 12330e66f109SKrzysztof Kozlowski 12340e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_pixel1_clk = { 12350e66f109SKrzysztof Kozlowski .halt_reg = 0x8060, 12360e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12370e66f109SKrzysztof Kozlowski .clkr = { 12380e66f109SKrzysztof Kozlowski .enable_reg = 0x8060, 12390e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12400e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12410e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_pixel1_clk", 12420e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12430e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_pixel1_clk_src.clkr.hw, 12440e66f109SKrzysztof Kozlowski }, 12450e66f109SKrzysztof Kozlowski .num_parents = 1, 12460e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 12470e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 12480e66f109SKrzysztof Kozlowski }, 12490e66f109SKrzysztof Kozlowski }, 12500e66f109SKrzysztof Kozlowski }; 12510e66f109SKrzysztof Kozlowski 12520e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx0_usb_router_link_intf_clk = { 12530e66f109SKrzysztof Kozlowski .halt_reg = 0x8050, 12540e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12550e66f109SKrzysztof Kozlowski .clkr = { 12560e66f109SKrzysztof Kozlowski .enable_reg = 0x8050, 12570e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12580e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12590e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx0_usb_router_link_intf_clk", 12600e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12610e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_link_div_clk_src.clkr.hw, 12620e66f109SKrzysztof Kozlowski }, 12630e66f109SKrzysztof Kozlowski .num_parents = 1, 12640e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 12650e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 12660e66f109SKrzysztof Kozlowski }, 12670e66f109SKrzysztof Kozlowski }, 12680e66f109SKrzysztof Kozlowski }; 12690e66f109SKrzysztof Kozlowski 12700e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_aux_clk = { 12710e66f109SKrzysztof Kozlowski .halt_reg = 0x8080, 12720e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12730e66f109SKrzysztof Kozlowski .clkr = { 12740e66f109SKrzysztof Kozlowski .enable_reg = 0x8080, 12750e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12760e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12770e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_aux_clk", 12780e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12790e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_aux_clk_src.clkr.hw, 12800e66f109SKrzysztof Kozlowski }, 12810e66f109SKrzysztof Kozlowski .num_parents = 1, 12820e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 12830e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 12840e66f109SKrzysztof Kozlowski }, 12850e66f109SKrzysztof Kozlowski }, 12860e66f109SKrzysztof Kozlowski }; 12870e66f109SKrzysztof Kozlowski 12880e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_crypto_clk = { 12890e66f109SKrzysztof Kozlowski .halt_reg = 0x807c, 12900e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 12910e66f109SKrzysztof Kozlowski .clkr = { 12920e66f109SKrzysztof Kozlowski .enable_reg = 0x807c, 12930e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 12940e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 12950e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_crypto_clk", 12960e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 12970e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 12980e66f109SKrzysztof Kozlowski }, 12990e66f109SKrzysztof Kozlowski .num_parents = 1, 13000e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13010e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13020e66f109SKrzysztof Kozlowski }, 13030e66f109SKrzysztof Kozlowski }, 13040e66f109SKrzysztof Kozlowski }; 13050e66f109SKrzysztof Kozlowski 13060e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_link_clk = { 13070e66f109SKrzysztof Kozlowski .halt_reg = 0x8070, 13080e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13090e66f109SKrzysztof Kozlowski .clkr = { 13100e66f109SKrzysztof Kozlowski .enable_reg = 0x8070, 13110e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 13120e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 13130e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_link_clk", 13140e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 13150e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_link_clk_src.clkr.hw, 13160e66f109SKrzysztof Kozlowski }, 13170e66f109SKrzysztof Kozlowski .num_parents = 1, 13180e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13190e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13200e66f109SKrzysztof Kozlowski }, 13210e66f109SKrzysztof Kozlowski }, 13220e66f109SKrzysztof Kozlowski }; 13230e66f109SKrzysztof Kozlowski 13240e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_link_intf_clk = { 13250e66f109SKrzysztof Kozlowski .halt_reg = 0x8078, 13260e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13270e66f109SKrzysztof Kozlowski .clkr = { 13280e66f109SKrzysztof Kozlowski .enable_reg = 0x8078, 13290e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 13300e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 13310e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_link_intf_clk", 13320e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 13330e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 13340e66f109SKrzysztof Kozlowski }, 13350e66f109SKrzysztof Kozlowski .num_parents = 1, 13360e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13370e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13380e66f109SKrzysztof Kozlowski }, 13390e66f109SKrzysztof Kozlowski }, 13400e66f109SKrzysztof Kozlowski }; 13410e66f109SKrzysztof Kozlowski 13420e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_pixel0_clk = { 13430e66f109SKrzysztof Kozlowski .halt_reg = 0x8068, 13440e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13450e66f109SKrzysztof Kozlowski .clkr = { 13460e66f109SKrzysztof Kozlowski .enable_reg = 0x8068, 13470e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 13480e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 13490e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_pixel0_clk", 13500e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 13510e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_pixel0_clk_src.clkr.hw, 13520e66f109SKrzysztof Kozlowski }, 13530e66f109SKrzysztof Kozlowski .num_parents = 1, 13540e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13550e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13560e66f109SKrzysztof Kozlowski }, 13570e66f109SKrzysztof Kozlowski }, 13580e66f109SKrzysztof Kozlowski }; 13590e66f109SKrzysztof Kozlowski 13600e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_pixel1_clk = { 13610e66f109SKrzysztof Kozlowski .halt_reg = 0x806c, 13620e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13630e66f109SKrzysztof Kozlowski .clkr = { 13640e66f109SKrzysztof Kozlowski .enable_reg = 0x806c, 13650e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 13660e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 13670e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_pixel1_clk", 13680e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 13690e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_pixel1_clk_src.clkr.hw, 13700e66f109SKrzysztof Kozlowski }, 13710e66f109SKrzysztof Kozlowski .num_parents = 1, 13720e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13730e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13740e66f109SKrzysztof Kozlowski }, 13750e66f109SKrzysztof Kozlowski }, 13760e66f109SKrzysztof Kozlowski }; 13770e66f109SKrzysztof Kozlowski 13780e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx1_usb_router_link_intf_clk = { 13790e66f109SKrzysztof Kozlowski .halt_reg = 0x8074, 13800e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13810e66f109SKrzysztof Kozlowski .clkr = { 13820e66f109SKrzysztof Kozlowski .enable_reg = 0x8074, 13830e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 13840e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 13850e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx1_usb_router_link_intf_clk", 13860e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 13870e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_link_div_clk_src.clkr.hw, 13880e66f109SKrzysztof Kozlowski }, 13890e66f109SKrzysztof Kozlowski .num_parents = 1, 13900e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 13910e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 13920e66f109SKrzysztof Kozlowski }, 13930e66f109SKrzysztof Kozlowski }, 13940e66f109SKrzysztof Kozlowski }; 13950e66f109SKrzysztof Kozlowski 13960e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_aux_clk = { 13970e66f109SKrzysztof Kozlowski .halt_reg = 0x8098, 13980e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 13990e66f109SKrzysztof Kozlowski .clkr = { 14000e66f109SKrzysztof Kozlowski .enable_reg = 0x8098, 14010e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14020e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14030e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_aux_clk", 14040e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14050e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_aux_clk_src.clkr.hw, 14060e66f109SKrzysztof Kozlowski }, 14070e66f109SKrzysztof Kozlowski .num_parents = 1, 14080e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14090e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 14100e66f109SKrzysztof Kozlowski }, 14110e66f109SKrzysztof Kozlowski }, 14120e66f109SKrzysztof Kozlowski }; 14130e66f109SKrzysztof Kozlowski 14140e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_crypto_clk = { 14150e66f109SKrzysztof Kozlowski .halt_reg = 0x8094, 14160e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 14170e66f109SKrzysztof Kozlowski .clkr = { 14180e66f109SKrzysztof Kozlowski .enable_reg = 0x8094, 14190e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14200e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14210e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_crypto_clk", 14220e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14230e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 14240e66f109SKrzysztof Kozlowski }, 14250e66f109SKrzysztof Kozlowski .num_parents = 1, 14260e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14270e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 14280e66f109SKrzysztof Kozlowski }, 14290e66f109SKrzysztof Kozlowski }, 14300e66f109SKrzysztof Kozlowski }; 14310e66f109SKrzysztof Kozlowski 14320e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_link_clk = { 14330e66f109SKrzysztof Kozlowski .halt_reg = 0x808c, 14340e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 14350e66f109SKrzysztof Kozlowski .clkr = { 14360e66f109SKrzysztof Kozlowski .enable_reg = 0x808c, 14370e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14380e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14390e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_link_clk", 14400e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14410e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_link_clk_src.clkr.hw, 14420e66f109SKrzysztof Kozlowski }, 14430e66f109SKrzysztof Kozlowski .num_parents = 1, 14440e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14450e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 14460e66f109SKrzysztof Kozlowski }, 14470e66f109SKrzysztof Kozlowski }, 14480e66f109SKrzysztof Kozlowski }; 14490e66f109SKrzysztof Kozlowski 14500e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_link_intf_clk = { 14510e66f109SKrzysztof Kozlowski .halt_reg = 0x8090, 14520e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 14530e66f109SKrzysztof Kozlowski .clkr = { 14540e66f109SKrzysztof Kozlowski .enable_reg = 0x8090, 14550e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14560e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14570e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_link_intf_clk", 14580e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14590e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_link_div_clk_src.clkr.hw, 14600e66f109SKrzysztof Kozlowski }, 14610e66f109SKrzysztof Kozlowski .num_parents = 1, 14620e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14630e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 14640e66f109SKrzysztof Kozlowski }, 14650e66f109SKrzysztof Kozlowski }, 14660e66f109SKrzysztof Kozlowski }; 14670e66f109SKrzysztof Kozlowski 14680e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_pixel0_clk = { 14690e66f109SKrzysztof Kozlowski .halt_reg = 0x8084, 14700e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 14710e66f109SKrzysztof Kozlowski .clkr = { 14720e66f109SKrzysztof Kozlowski .enable_reg = 0x8084, 14730e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14740e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14750e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_pixel0_clk", 14760e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14770e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_pixel0_clk_src.clkr.hw, 14780e66f109SKrzysztof Kozlowski }, 14790e66f109SKrzysztof Kozlowski .num_parents = 1, 14800e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14810e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 14820e66f109SKrzysztof Kozlowski }, 14830e66f109SKrzysztof Kozlowski }, 14840e66f109SKrzysztof Kozlowski }; 14850e66f109SKrzysztof Kozlowski 14860e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx2_pixel1_clk = { 14870e66f109SKrzysztof Kozlowski .halt_reg = 0x8088, 14880e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 14890e66f109SKrzysztof Kozlowski .clkr = { 14900e66f109SKrzysztof Kozlowski .enable_reg = 0x8088, 14910e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 14920e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 14930e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx2_pixel1_clk", 14940e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 14950e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx2_pixel1_clk_src.clkr.hw, 14960e66f109SKrzysztof Kozlowski }, 14970e66f109SKrzysztof Kozlowski .num_parents = 1, 14980e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 14990e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15000e66f109SKrzysztof Kozlowski }, 15010e66f109SKrzysztof Kozlowski }, 15020e66f109SKrzysztof Kozlowski }; 15030e66f109SKrzysztof Kozlowski 15040e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_aux_clk = { 15050e66f109SKrzysztof Kozlowski .halt_reg = 0x80a8, 15060e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15070e66f109SKrzysztof Kozlowski .clkr = { 15080e66f109SKrzysztof Kozlowski .enable_reg = 0x80a8, 15090e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 15100e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 15110e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_aux_clk", 15120e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 15130e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_aux_clk_src.clkr.hw, 15140e66f109SKrzysztof Kozlowski }, 15150e66f109SKrzysztof Kozlowski .num_parents = 1, 15160e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 15170e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15180e66f109SKrzysztof Kozlowski }, 15190e66f109SKrzysztof Kozlowski }, 15200e66f109SKrzysztof Kozlowski }; 15210e66f109SKrzysztof Kozlowski 15220e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_crypto_clk = { 15230e66f109SKrzysztof Kozlowski .halt_reg = 0x80ac, 15240e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15250e66f109SKrzysztof Kozlowski .clkr = { 15260e66f109SKrzysztof Kozlowski .enable_reg = 0x80ac, 15270e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 15280e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 15290e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_crypto_clk", 15300e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 15310e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 15320e66f109SKrzysztof Kozlowski }, 15330e66f109SKrzysztof Kozlowski .num_parents = 1, 15340e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 15350e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15360e66f109SKrzysztof Kozlowski }, 15370e66f109SKrzysztof Kozlowski }, 15380e66f109SKrzysztof Kozlowski }; 15390e66f109SKrzysztof Kozlowski 15400e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_link_clk = { 15410e66f109SKrzysztof Kozlowski .halt_reg = 0x80a0, 15420e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15430e66f109SKrzysztof Kozlowski .clkr = { 15440e66f109SKrzysztof Kozlowski .enable_reg = 0x80a0, 15450e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 15460e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 15470e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_link_clk", 15480e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 15490e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_link_clk_src.clkr.hw, 15500e66f109SKrzysztof Kozlowski }, 15510e66f109SKrzysztof Kozlowski .num_parents = 1, 15520e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 15530e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15540e66f109SKrzysztof Kozlowski }, 15550e66f109SKrzysztof Kozlowski }, 15560e66f109SKrzysztof Kozlowski }; 15570e66f109SKrzysztof Kozlowski 15580e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_link_intf_clk = { 15590e66f109SKrzysztof Kozlowski .halt_reg = 0x80a4, 15600e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15610e66f109SKrzysztof Kozlowski .clkr = { 15620e66f109SKrzysztof Kozlowski .enable_reg = 0x80a4, 15630e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 15640e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 15650e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_link_intf_clk", 15660e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 15670e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_link_div_clk_src.clkr.hw, 15680e66f109SKrzysztof Kozlowski }, 15690e66f109SKrzysztof Kozlowski .num_parents = 1, 15700e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 15710e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15720e66f109SKrzysztof Kozlowski }, 15730e66f109SKrzysztof Kozlowski }, 15740e66f109SKrzysztof Kozlowski }; 15750e66f109SKrzysztof Kozlowski 15760e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_dptx3_pixel0_clk = { 15770e66f109SKrzysztof Kozlowski .halt_reg = 0x809c, 15780e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15790e66f109SKrzysztof Kozlowski .clkr = { 15800e66f109SKrzysztof Kozlowski .enable_reg = 0x809c, 15810e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 15820e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 15830e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_dptx3_pixel0_clk", 15840e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 15850e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx3_pixel0_clk_src.clkr.hw, 15860e66f109SKrzysztof Kozlowski }, 15870e66f109SKrzysztof Kozlowski .num_parents = 1, 15880e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 15890e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 15900e66f109SKrzysztof Kozlowski }, 15910e66f109SKrzysztof Kozlowski }, 15920e66f109SKrzysztof Kozlowski }; 15930e66f109SKrzysztof Kozlowski 15940e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_esc0_clk = { 15950e66f109SKrzysztof Kozlowski .halt_reg = 0x8044, 15960e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 15970e66f109SKrzysztof Kozlowski .clkr = { 15980e66f109SKrzysztof Kozlowski .enable_reg = 0x8044, 15990e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16000e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16010e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_esc0_clk", 16020e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16030e66f109SKrzysztof Kozlowski &disp_cc_mdss_esc0_clk_src.clkr.hw, 16040e66f109SKrzysztof Kozlowski }, 16050e66f109SKrzysztof Kozlowski .num_parents = 1, 16060e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16070e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16080e66f109SKrzysztof Kozlowski }, 16090e66f109SKrzysztof Kozlowski }, 16100e66f109SKrzysztof Kozlowski }; 16110e66f109SKrzysztof Kozlowski 16120e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_esc1_clk = { 16130e66f109SKrzysztof Kozlowski .halt_reg = 0x8048, 16140e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 16150e66f109SKrzysztof Kozlowski .clkr = { 16160e66f109SKrzysztof Kozlowski .enable_reg = 0x8048, 16170e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16180e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16190e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_esc1_clk", 16200e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16210e66f109SKrzysztof Kozlowski &disp_cc_mdss_esc1_clk_src.clkr.hw, 16220e66f109SKrzysztof Kozlowski }, 16230e66f109SKrzysztof Kozlowski .num_parents = 1, 16240e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16250e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16260e66f109SKrzysztof Kozlowski }, 16270e66f109SKrzysztof Kozlowski }, 16280e66f109SKrzysztof Kozlowski }; 16290e66f109SKrzysztof Kozlowski 16300e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_ahbm_clk = { 16310e66f109SKrzysztof Kozlowski .halt_reg = 0x8378, 16320e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 16330e66f109SKrzysztof Kozlowski .clkr = { 16340e66f109SKrzysztof Kozlowski .enable_reg = 0x8378, 16350e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16360e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16370e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_ahbm_clk", 16380e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16390e66f109SKrzysztof Kozlowski &disp_cc_mdss_ahb_clk_src.clkr.hw, 16400e66f109SKrzysztof Kozlowski }, 16410e66f109SKrzysztof Kozlowski .num_parents = 1, 16420e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16430e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16440e66f109SKrzysztof Kozlowski }, 16450e66f109SKrzysztof Kozlowski }, 16460e66f109SKrzysztof Kozlowski }; 16470e66f109SKrzysztof Kozlowski 16480e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_app_clk = { 16490e66f109SKrzysztof Kozlowski .halt_reg = 0x8388, 16500e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 16510e66f109SKrzysztof Kozlowski .clkr = { 16520e66f109SKrzysztof Kozlowski .enable_reg = 0x8388, 16530e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16540e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16550e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_app_clk", 16560e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16570e66f109SKrzysztof Kozlowski &disp_cc_mdss_hdmi_app_clk_src.clkr.hw, 16580e66f109SKrzysztof Kozlowski }, 16590e66f109SKrzysztof Kozlowski .num_parents = 1, 16600e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16610e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16620e66f109SKrzysztof Kozlowski }, 16630e66f109SKrzysztof Kozlowski }, 16640e66f109SKrzysztof Kozlowski }; 16650e66f109SKrzysztof Kozlowski 16660e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_crypto_clk = { 16670e66f109SKrzysztof Kozlowski .halt_reg = 0x8384, 16680e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 16690e66f109SKrzysztof Kozlowski .clkr = { 16700e66f109SKrzysztof Kozlowski .enable_reg = 0x8384, 16710e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16720e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16730e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_crypto_clk", 16740e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16750e66f109SKrzysztof Kozlowski &disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw, 16760e66f109SKrzysztof Kozlowski }, 16770e66f109SKrzysztof Kozlowski .num_parents = 1, 16780e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16790e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16800e66f109SKrzysztof Kozlowski }, 16810e66f109SKrzysztof Kozlowski }, 16820e66f109SKrzysztof Kozlowski }; 16830e66f109SKrzysztof Kozlowski 16840e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_intf_clk = { 16850e66f109SKrzysztof Kozlowski .halt_reg = 0x8380, 16860e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 16870e66f109SKrzysztof Kozlowski .clkr = { 16880e66f109SKrzysztof Kozlowski .enable_reg = 0x8380, 16890e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 16900e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 16910e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_intf_clk", 16920e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 16930e66f109SKrzysztof Kozlowski &disp_cc_mdss_hdmi_pclk_div_clk_src.clkr.hw, 16940e66f109SKrzysztof Kozlowski }, 16950e66f109SKrzysztof Kozlowski .num_parents = 1, 16960e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 16970e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 16980e66f109SKrzysztof Kozlowski }, 16990e66f109SKrzysztof Kozlowski }, 17000e66f109SKrzysztof Kozlowski }; 17010e66f109SKrzysztof Kozlowski 17020e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_hdmi_pclk_clk = { 17030e66f109SKrzysztof Kozlowski .halt_reg = 0x837c, 17040e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 17050e66f109SKrzysztof Kozlowski .clkr = { 17060e66f109SKrzysztof Kozlowski .enable_reg = 0x837c, 17070e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17080e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17090e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_hdmi_pclk_clk", 17100e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 17110e66f109SKrzysztof Kozlowski &disp_cc_mdss_hdmi_pclk_clk_src.clkr.hw, 17120e66f109SKrzysztof Kozlowski }, 17130e66f109SKrzysztof Kozlowski .num_parents = 1, 17140e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 17150e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 17160e66f109SKrzysztof Kozlowski }, 17170e66f109SKrzysztof Kozlowski }, 17180e66f109SKrzysztof Kozlowski }; 17190e66f109SKrzysztof Kozlowski 17200e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp1_clk = { 17210e66f109SKrzysztof Kozlowski .halt_reg = 0xa004, 17220e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 17230e66f109SKrzysztof Kozlowski .clkr = { 17240e66f109SKrzysztof Kozlowski .enable_reg = 0xa004, 17250e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17260e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17270e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_mdp1_clk", 17280e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 17290e66f109SKrzysztof Kozlowski &disp_cc_mdss_mdp_clk_src.clkr.hw, 17300e66f109SKrzysztof Kozlowski }, 17310e66f109SKrzysztof Kozlowski .num_parents = 1, 17320e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 17330e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 17340e66f109SKrzysztof Kozlowski }, 17350e66f109SKrzysztof Kozlowski }, 17360e66f109SKrzysztof Kozlowski }; 17370e66f109SKrzysztof Kozlowski 17380e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_clk = { 17390e66f109SKrzysztof Kozlowski .halt_reg = 0x8010, 17400e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 17410e66f109SKrzysztof Kozlowski .clkr = { 17420e66f109SKrzysztof Kozlowski .enable_reg = 0x8010, 17430e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17440e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17450e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_mdp_clk", 17460e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 17470e66f109SKrzysztof Kozlowski &disp_cc_mdss_mdp_clk_src.clkr.hw, 17480e66f109SKrzysztof Kozlowski }, 17490e66f109SKrzysztof Kozlowski .num_parents = 1, 17500e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 17510e66f109SKrzysztof Kozlowski .ops = &clk_branch2_aon_ops, 17520e66f109SKrzysztof Kozlowski }, 17530e66f109SKrzysztof Kozlowski }, 17540e66f109SKrzysztof Kozlowski }; 17550e66f109SKrzysztof Kozlowski 17560e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_lut1_clk = { 17570e66f109SKrzysztof Kozlowski .halt_reg = 0xa014, 17580e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 17590e66f109SKrzysztof Kozlowski .clkr = { 17600e66f109SKrzysztof Kozlowski .enable_reg = 0xa014, 17610e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17620e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17630e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_mdp_lut1_clk", 17640e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 17650e66f109SKrzysztof Kozlowski &disp_cc_mdss_mdp_clk_src.clkr.hw, 17660e66f109SKrzysztof Kozlowski }, 17670e66f109SKrzysztof Kozlowski .num_parents = 1, 17680e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 17690e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 17700e66f109SKrzysztof Kozlowski }, 17710e66f109SKrzysztof Kozlowski }, 17720e66f109SKrzysztof Kozlowski }; 17730e66f109SKrzysztof Kozlowski 17740e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_mdp_lut_clk = { 17750e66f109SKrzysztof Kozlowski .halt_reg = 0x8020, 17760e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT_VOTED, 17770e66f109SKrzysztof Kozlowski .clkr = { 17780e66f109SKrzysztof Kozlowski .enable_reg = 0x8020, 17790e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17800e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17810e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_mdp_lut_clk", 17820e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 17830e66f109SKrzysztof Kozlowski &disp_cc_mdss_mdp_clk_src.clkr.hw, 17840e66f109SKrzysztof Kozlowski }, 17850e66f109SKrzysztof Kozlowski .num_parents = 1, 17860e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 17870e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 17880e66f109SKrzysztof Kozlowski }, 17890e66f109SKrzysztof Kozlowski }, 17900e66f109SKrzysztof Kozlowski }; 17910e66f109SKrzysztof Kozlowski 17920e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_non_gdsc_ahb_clk = { 17930e66f109SKrzysztof Kozlowski .halt_reg = 0xc004, 17940e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT_VOTED, 17950e66f109SKrzysztof Kozlowski .clkr = { 17960e66f109SKrzysztof Kozlowski .enable_reg = 0xc004, 17970e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 17980e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 17990e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_non_gdsc_ahb_clk", 18000e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18010e66f109SKrzysztof Kozlowski &disp_cc_mdss_ahb_clk_src.clkr.hw, 18020e66f109SKrzysztof Kozlowski }, 18030e66f109SKrzysztof Kozlowski .num_parents = 1, 18040e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18050e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18060e66f109SKrzysztof Kozlowski }, 18070e66f109SKrzysztof Kozlowski }, 18080e66f109SKrzysztof Kozlowski }; 18090e66f109SKrzysztof Kozlowski 18100e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk0_clk = { 18110e66f109SKrzysztof Kozlowski .halt_reg = 0x8004, 18120e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 18130e66f109SKrzysztof Kozlowski .clkr = { 18140e66f109SKrzysztof Kozlowski .enable_reg = 0x8004, 18150e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 18160e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 18170e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk0_clk", 18180e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18190e66f109SKrzysztof Kozlowski &disp_cc_mdss_pclk0_clk_src.clkr.hw, 18200e66f109SKrzysztof Kozlowski }, 18210e66f109SKrzysztof Kozlowski .num_parents = 1, 18220e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18230e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18240e66f109SKrzysztof Kozlowski }, 18250e66f109SKrzysztof Kozlowski }, 18260e66f109SKrzysztof Kozlowski }; 18270e66f109SKrzysztof Kozlowski 18280e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk1_clk = { 18290e66f109SKrzysztof Kozlowski .halt_reg = 0x8008, 18300e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 18310e66f109SKrzysztof Kozlowski .clkr = { 18320e66f109SKrzysztof Kozlowski .enable_reg = 0x8008, 18330e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 18340e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 18350e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk1_clk", 18360e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18370e66f109SKrzysztof Kozlowski &disp_cc_mdss_pclk1_clk_src.clkr.hw, 18380e66f109SKrzysztof Kozlowski }, 18390e66f109SKrzysztof Kozlowski .num_parents = 1, 18400e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18410e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18420e66f109SKrzysztof Kozlowski }, 18430e66f109SKrzysztof Kozlowski }, 18440e66f109SKrzysztof Kozlowski }; 18450e66f109SKrzysztof Kozlowski 18460e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_pclk2_clk = { 18470e66f109SKrzysztof Kozlowski .halt_reg = 0x800c, 18480e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 18490e66f109SKrzysztof Kozlowski .clkr = { 18500e66f109SKrzysztof Kozlowski .enable_reg = 0x800c, 18510e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 18520e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 18530e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_pclk2_clk", 18540e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18550e66f109SKrzysztof Kozlowski &disp_cc_mdss_pclk2_clk_src.clkr.hw, 18560e66f109SKrzysztof Kozlowski }, 18570e66f109SKrzysztof Kozlowski .num_parents = 1, 18580e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18590e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18600e66f109SKrzysztof Kozlowski }, 18610e66f109SKrzysztof Kozlowski }, 18620e66f109SKrzysztof Kozlowski }; 18630e66f109SKrzysztof Kozlowski 18640e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_vsync1_clk = { 18650e66f109SKrzysztof Kozlowski .halt_reg = 0xa024, 18660e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 18670e66f109SKrzysztof Kozlowski .clkr = { 18680e66f109SKrzysztof Kozlowski .enable_reg = 0xa024, 18690e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 18700e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 18710e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_vsync1_clk", 18720e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18730e66f109SKrzysztof Kozlowski &disp_cc_mdss_vsync_clk_src.clkr.hw, 18740e66f109SKrzysztof Kozlowski }, 18750e66f109SKrzysztof Kozlowski .num_parents = 1, 18760e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18770e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18780e66f109SKrzysztof Kozlowski }, 18790e66f109SKrzysztof Kozlowski }, 18800e66f109SKrzysztof Kozlowski }; 18810e66f109SKrzysztof Kozlowski 18820e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_mdss_vsync_clk = { 18830e66f109SKrzysztof Kozlowski .halt_reg = 0x8030, 18840e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 18850e66f109SKrzysztof Kozlowski .clkr = { 18860e66f109SKrzysztof Kozlowski .enable_reg = 0x8030, 18870e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 18880e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 18890e66f109SKrzysztof Kozlowski .name = "disp_cc_mdss_vsync_clk", 18900e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 18910e66f109SKrzysztof Kozlowski &disp_cc_mdss_vsync_clk_src.clkr.hw, 18920e66f109SKrzysztof Kozlowski }, 18930e66f109SKrzysztof Kozlowski .num_parents = 1, 18940e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 18950e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 18960e66f109SKrzysztof Kozlowski }, 18970e66f109SKrzysztof Kozlowski }, 18980e66f109SKrzysztof Kozlowski }; 18990e66f109SKrzysztof Kozlowski 19000e66f109SKrzysztof Kozlowski static struct clk_branch disp_cc_osc_clk = { 19010e66f109SKrzysztof Kozlowski .halt_reg = 0x80b4, 19020e66f109SKrzysztof Kozlowski .halt_check = BRANCH_HALT, 19030e66f109SKrzysztof Kozlowski .clkr = { 19040e66f109SKrzysztof Kozlowski .enable_reg = 0x80b4, 19050e66f109SKrzysztof Kozlowski .enable_mask = BIT(0), 19060e66f109SKrzysztof Kozlowski .hw.init = &(const struct clk_init_data) { 19070e66f109SKrzysztof Kozlowski .name = "disp_cc_osc_clk", 19080e66f109SKrzysztof Kozlowski .parent_hws = (const struct clk_hw*[]) { 19090e66f109SKrzysztof Kozlowski &disp_cc_osc_clk_src.clkr.hw, 19100e66f109SKrzysztof Kozlowski }, 19110e66f109SKrzysztof Kozlowski .num_parents = 1, 19120e66f109SKrzysztof Kozlowski .flags = CLK_SET_RATE_PARENT, 19130e66f109SKrzysztof Kozlowski .ops = &clk_branch2_ops, 19140e66f109SKrzysztof Kozlowski }, 19150e66f109SKrzysztof Kozlowski }, 19160e66f109SKrzysztof Kozlowski }; 19170e66f109SKrzysztof Kozlowski 19180e66f109SKrzysztof Kozlowski static struct gdsc mdss_gdsc = { 19190e66f109SKrzysztof Kozlowski .gdscr = 0x9000, 19200e66f109SKrzysztof Kozlowski .en_rest_wait_val = 0x2, 19210e66f109SKrzysztof Kozlowski .en_few_wait_val = 0x2, 19220e66f109SKrzysztof Kozlowski .clk_dis_wait_val = 0xf, 19230e66f109SKrzysztof Kozlowski .pd = { 19240e66f109SKrzysztof Kozlowski .name = "mdss_gdsc", 19250e66f109SKrzysztof Kozlowski }, 19260e66f109SKrzysztof Kozlowski .pwrsts = PWRSTS_OFF_ON, 19270e66f109SKrzysztof Kozlowski .flags = POLL_CFG_GDSCR | HW_CTRL | RETAIN_FF_ENABLE, 19280e66f109SKrzysztof Kozlowski }; 19290e66f109SKrzysztof Kozlowski 19300e66f109SKrzysztof Kozlowski static struct gdsc mdss_int2_gdsc = { 19310e66f109SKrzysztof Kozlowski .gdscr = 0xb000, 19320e66f109SKrzysztof Kozlowski .en_rest_wait_val = 0x2, 19330e66f109SKrzysztof Kozlowski .en_few_wait_val = 0x2, 19340e66f109SKrzysztof Kozlowski .clk_dis_wait_val = 0xf, 19350e66f109SKrzysztof Kozlowski .pd = { 19360e66f109SKrzysztof Kozlowski .name = "mdss_int2_gdsc", 19370e66f109SKrzysztof Kozlowski }, 19380e66f109SKrzysztof Kozlowski .pwrsts = PWRSTS_OFF_ON, 19390e66f109SKrzysztof Kozlowski .flags = POLL_CFG_GDSCR | HW_CTRL | RETAIN_FF_ENABLE, 19400e66f109SKrzysztof Kozlowski }; 19410e66f109SKrzysztof Kozlowski 19420e66f109SKrzysztof Kozlowski static struct clk_regmap *disp_cc_eliza_clocks[] = { 19430e66f109SKrzysztof Kozlowski [DISP_CC_ESYNC0_CLK] = &disp_cc_esync0_clk.clkr, 19440e66f109SKrzysztof Kozlowski [DISP_CC_ESYNC0_CLK_SRC] = &disp_cc_esync0_clk_src.clkr, 19450e66f109SKrzysztof Kozlowski [DISP_CC_ESYNC1_CLK] = &disp_cc_esync1_clk.clkr, 19460e66f109SKrzysztof Kozlowski [DISP_CC_ESYNC1_CLK_SRC] = &disp_cc_esync1_clk_src.clkr, 19470e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_ACCU_SHIFT_CLK] = &disp_cc_mdss_accu_shift_clk.clkr, 19480e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_AHB1_CLK] = &disp_cc_mdss_ahb1_clk.clkr, 19490e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_AHB_CLK] = &disp_cc_mdss_ahb_clk.clkr, 19500e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_AHB_CLK_SRC] = &disp_cc_mdss_ahb_clk_src.clkr, 19510e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE0_CLK] = &disp_cc_mdss_byte0_clk.clkr, 19520e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp_cc_mdss_byte0_clk_src.clkr, 19530e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp_cc_mdss_byte0_div_clk_src.clkr, 19540e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp_cc_mdss_byte0_intf_clk.clkr, 19550e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE1_CLK] = &disp_cc_mdss_byte1_clk.clkr, 19560e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp_cc_mdss_byte1_clk_src.clkr, 19570e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp_cc_mdss_byte1_div_clk_src.clkr, 19580e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp_cc_mdss_byte1_intf_clk.clkr, 19590e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_AUX_CLK] = &disp_cc_mdss_dptx0_aux_clk.clkr, 19600e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_AUX_CLK_SRC] = &disp_cc_mdss_dptx0_aux_clk_src.clkr, 19610e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_CRYPTO_CLK] = &disp_cc_mdss_dptx0_crypto_clk.clkr, 19620e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_LINK_CLK] = &disp_cc_mdss_dptx0_link_clk.clkr, 19630e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_LINK_CLK_SRC] = &disp_cc_mdss_dptx0_link_clk_src.clkr, 19640e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx0_link_div_clk_src.clkr, 19650e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_LINK_INTF_CLK] = &disp_cc_mdss_dptx0_link_intf_clk.clkr, 19660e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_PIXEL0_CLK] = &disp_cc_mdss_dptx0_pixel0_clk.clkr, 19670e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx0_pixel0_clk_src.clkr, 19680e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_PIXEL1_CLK] = &disp_cc_mdss_dptx0_pixel1_clk.clkr, 19690e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx0_pixel1_clk_src.clkr, 19700e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK] = 19710e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx0_usb_router_link_intf_clk.clkr, 19720e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_AUX_CLK] = &disp_cc_mdss_dptx1_aux_clk.clkr, 19730e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_AUX_CLK_SRC] = &disp_cc_mdss_dptx1_aux_clk_src.clkr, 19740e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_CRYPTO_CLK] = &disp_cc_mdss_dptx1_crypto_clk.clkr, 19750e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_LINK_CLK] = &disp_cc_mdss_dptx1_link_clk.clkr, 19760e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_LINK_CLK_SRC] = &disp_cc_mdss_dptx1_link_clk_src.clkr, 19770e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx1_link_div_clk_src.clkr, 19780e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_LINK_INTF_CLK] = &disp_cc_mdss_dptx1_link_intf_clk.clkr, 19790e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_PIXEL0_CLK] = &disp_cc_mdss_dptx1_pixel0_clk.clkr, 19800e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx1_pixel0_clk_src.clkr, 19810e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_PIXEL1_CLK] = &disp_cc_mdss_dptx1_pixel1_clk.clkr, 19820e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx1_pixel1_clk_src.clkr, 19830e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX1_USB_ROUTER_LINK_INTF_CLK] = 19840e66f109SKrzysztof Kozlowski &disp_cc_mdss_dptx1_usb_router_link_intf_clk.clkr, 19850e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_AUX_CLK] = &disp_cc_mdss_dptx2_aux_clk.clkr, 19860e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_AUX_CLK_SRC] = &disp_cc_mdss_dptx2_aux_clk_src.clkr, 19870e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_CRYPTO_CLK] = &disp_cc_mdss_dptx2_crypto_clk.clkr, 19880e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_LINK_CLK] = &disp_cc_mdss_dptx2_link_clk.clkr, 19890e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_LINK_CLK_SRC] = &disp_cc_mdss_dptx2_link_clk_src.clkr, 19900e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx2_link_div_clk_src.clkr, 19910e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_LINK_INTF_CLK] = &disp_cc_mdss_dptx2_link_intf_clk.clkr, 19920e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_PIXEL0_CLK] = &disp_cc_mdss_dptx2_pixel0_clk.clkr, 19930e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx2_pixel0_clk_src.clkr, 19940e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_PIXEL1_CLK] = &disp_cc_mdss_dptx2_pixel1_clk.clkr, 19950e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX2_PIXEL1_CLK_SRC] = &disp_cc_mdss_dptx2_pixel1_clk_src.clkr, 19960e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_AUX_CLK] = &disp_cc_mdss_dptx3_aux_clk.clkr, 19970e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_AUX_CLK_SRC] = &disp_cc_mdss_dptx3_aux_clk_src.clkr, 19980e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_CRYPTO_CLK] = &disp_cc_mdss_dptx3_crypto_clk.clkr, 19990e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_LINK_CLK] = &disp_cc_mdss_dptx3_link_clk.clkr, 20000e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_LINK_CLK_SRC] = &disp_cc_mdss_dptx3_link_clk_src.clkr, 20010e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dptx3_link_div_clk_src.clkr, 20020e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_LINK_INTF_CLK] = &disp_cc_mdss_dptx3_link_intf_clk.clkr, 20030e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_PIXEL0_CLK] = &disp_cc_mdss_dptx3_pixel0_clk.clkr, 20040e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_DPTX3_PIXEL0_CLK_SRC] = &disp_cc_mdss_dptx3_pixel0_clk_src.clkr, 20050e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr, 20060e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr, 20070e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr, 20080e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_ESC1_CLK_SRC] = &disp_cc_mdss_esc1_clk_src.clkr, 20090e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_AHBM_CLK] = &disp_cc_mdss_hdmi_ahbm_clk.clkr, 20100e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_APP_CLK] = &disp_cc_mdss_hdmi_app_clk.clkr, 20110e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_APP_CLK_SRC] = &disp_cc_mdss_hdmi_app_clk_src.clkr, 20120e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_CRYPTO_CLK] = &disp_cc_mdss_hdmi_crypto_clk.clkr, 20130e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_INTF_CLK] = &disp_cc_mdss_hdmi_intf_clk.clkr, 20140e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_PCLK_CLK] = &disp_cc_mdss_hdmi_pclk_clk.clkr, 20150e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_PCLK_CLK_SRC] = &disp_cc_mdss_hdmi_pclk_clk_src.clkr, 20160e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_HDMI_PCLK_DIV_CLK_SRC] = &disp_cc_mdss_hdmi_pclk_div_clk_src.clkr, 20170e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_MDP1_CLK] = &disp_cc_mdss_mdp1_clk.clkr, 20180e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_MDP_CLK] = &disp_cc_mdss_mdp_clk.clkr, 20190e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_MDP_CLK_SRC] = &disp_cc_mdss_mdp_clk_src.clkr, 20200e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_MDP_LUT1_CLK] = &disp_cc_mdss_mdp_lut1_clk.clkr, 20210e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_MDP_LUT_CLK] = &disp_cc_mdss_mdp_lut_clk.clkr, 20220e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp_cc_mdss_non_gdsc_ahb_clk.clkr, 20230e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK0_CLK] = &disp_cc_mdss_pclk0_clk.clkr, 20240e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp_cc_mdss_pclk0_clk_src.clkr, 20250e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK1_CLK] = &disp_cc_mdss_pclk1_clk.clkr, 20260e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp_cc_mdss_pclk1_clk_src.clkr, 20270e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK2_CLK] = &disp_cc_mdss_pclk2_clk.clkr, 20280e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_PCLK2_CLK_SRC] = &disp_cc_mdss_pclk2_clk_src.clkr, 20290e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_VSYNC1_CLK] = &disp_cc_mdss_vsync1_clk.clkr, 20300e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_VSYNC_CLK] = &disp_cc_mdss_vsync_clk.clkr, 20310e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp_cc_mdss_vsync_clk_src.clkr, 20320e66f109SKrzysztof Kozlowski [DISP_CC_OSC_CLK] = &disp_cc_osc_clk.clkr, 20330e66f109SKrzysztof Kozlowski [DISP_CC_OSC_CLK_SRC] = &disp_cc_osc_clk_src.clkr, 20340e66f109SKrzysztof Kozlowski [DISP_CC_PLL0] = &disp_cc_pll0.clkr, 20350e66f109SKrzysztof Kozlowski [DISP_CC_PLL1] = &disp_cc_pll1.clkr, 20360e66f109SKrzysztof Kozlowski [DISP_CC_PLL2] = &disp_cc_pll2.clkr, 20370e66f109SKrzysztof Kozlowski [DISP_CC_SLEEP_CLK_SRC] = &disp_cc_sleep_clk_src.clkr, 20380e66f109SKrzysztof Kozlowski [DISP_CC_XO_CLK_SRC] = &disp_cc_xo_clk_src.clkr, 20390e66f109SKrzysztof Kozlowski }; 20400e66f109SKrzysztof Kozlowski 20410e66f109SKrzysztof Kozlowski static const struct qcom_reset_map disp_cc_eliza_resets[] = { 20420e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_CORE_BCR] = { 0x8000 }, 20430e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_CORE_INT2_BCR] = { 0xa000 }, 20440e66f109SKrzysztof Kozlowski [DISP_CC_MDSS_RSCC_BCR] = { 0xc000 }, 20450e66f109SKrzysztof Kozlowski }; 20460e66f109SKrzysztof Kozlowski 20470e66f109SKrzysztof Kozlowski static struct gdsc *disp_cc_eliza_gdscs[] = { 20480e66f109SKrzysztof Kozlowski [MDSS_GDSC] = &mdss_gdsc, 20490e66f109SKrzysztof Kozlowski [MDSS_INT2_GDSC] = &mdss_int2_gdsc, 20500e66f109SKrzysztof Kozlowski }; 20510e66f109SKrzysztof Kozlowski 20520e66f109SKrzysztof Kozlowski static const struct regmap_config disp_cc_eliza_regmap_config = { 20530e66f109SKrzysztof Kozlowski .reg_bits = 32, 20540e66f109SKrzysztof Kozlowski .reg_stride = 4, 20550e66f109SKrzysztof Kozlowski .val_bits = 32, 20560e66f109SKrzysztof Kozlowski .max_register = 0xf004, /* 0x10000, 0x10004 and maybe others are for TZ */ 20570e66f109SKrzysztof Kozlowski .fast_io = true, 20580e66f109SKrzysztof Kozlowski }; 20590e66f109SKrzysztof Kozlowski 20600e66f109SKrzysztof Kozlowski static struct clk_alpha_pll *disp_cc_eliza_plls[] = { 20610e66f109SKrzysztof Kozlowski &disp_cc_pll0, 20620e66f109SKrzysztof Kozlowski &disp_cc_pll1, 20630e66f109SKrzysztof Kozlowski &disp_cc_pll2, 20640e66f109SKrzysztof Kozlowski }; 20650e66f109SKrzysztof Kozlowski 2066*87df31eaSKrzysztof Kozlowski static const u32 disp_cc_eliza_critical_cbcrs[] = { 20670e66f109SKrzysztof Kozlowski 0xe07c, /* DISP_CC_SLEEP_CLK */ 20680e66f109SKrzysztof Kozlowski 0xe05c, /* DISP_CC_XO_CLK */ 20690e66f109SKrzysztof Kozlowski 0xc00c, /* DISP_CC_MDSS_RSCC_AHB_CLK */ 20700e66f109SKrzysztof Kozlowski 0xc008, /* DISP_CC_MDSS_RSCC_VSYNC_CLK */ 20710e66f109SKrzysztof Kozlowski }; 20720e66f109SKrzysztof Kozlowski 20730e66f109SKrzysztof Kozlowski static void clk_eliza_regs_configure(struct device *dev, struct regmap *regmap) 20740e66f109SKrzysztof Kozlowski { 20750e66f109SKrzysztof Kozlowski /* Enable clock gating for MDP clocks */ 20760e66f109SKrzysztof Kozlowski regmap_set_bits(regmap, DISP_CC_MISC_CMD, BIT(4)); 20770e66f109SKrzysztof Kozlowski } 20780e66f109SKrzysztof Kozlowski 2079573ddd0dSKrzysztof Kozlowski static const struct qcom_cc_driver_data disp_cc_eliza_driver_data = { 20800e66f109SKrzysztof Kozlowski .alpha_plls = disp_cc_eliza_plls, 20810e66f109SKrzysztof Kozlowski .num_alpha_plls = ARRAY_SIZE(disp_cc_eliza_plls), 20820e66f109SKrzysztof Kozlowski .clk_cbcrs = disp_cc_eliza_critical_cbcrs, 20830e66f109SKrzysztof Kozlowski .num_clk_cbcrs = ARRAY_SIZE(disp_cc_eliza_critical_cbcrs), 20840e66f109SKrzysztof Kozlowski .clk_regs_configure = clk_eliza_regs_configure, 20850e66f109SKrzysztof Kozlowski }; 20860e66f109SKrzysztof Kozlowski 20870e66f109SKrzysztof Kozlowski static const struct qcom_cc_desc disp_cc_eliza_desc = { 20880e66f109SKrzysztof Kozlowski .config = &disp_cc_eliza_regmap_config, 20890e66f109SKrzysztof Kozlowski .clks = disp_cc_eliza_clocks, 20900e66f109SKrzysztof Kozlowski .num_clks = ARRAY_SIZE(disp_cc_eliza_clocks), 20910e66f109SKrzysztof Kozlowski .resets = disp_cc_eliza_resets, 20920e66f109SKrzysztof Kozlowski .num_resets = ARRAY_SIZE(disp_cc_eliza_resets), 20930e66f109SKrzysztof Kozlowski .gdscs = disp_cc_eliza_gdscs, 20940e66f109SKrzysztof Kozlowski .num_gdscs = ARRAY_SIZE(disp_cc_eliza_gdscs), 20950e66f109SKrzysztof Kozlowski .use_rpm = true, 20960e66f109SKrzysztof Kozlowski .driver_data = &disp_cc_eliza_driver_data, 20970e66f109SKrzysztof Kozlowski }; 20980e66f109SKrzysztof Kozlowski 20990e66f109SKrzysztof Kozlowski static const struct of_device_id disp_cc_eliza_match_table[] = { 21000e66f109SKrzysztof Kozlowski { .compatible = "qcom,eliza-dispcc" }, 21010e66f109SKrzysztof Kozlowski { } 21020e66f109SKrzysztof Kozlowski }; 21030e66f109SKrzysztof Kozlowski MODULE_DEVICE_TABLE(of, disp_cc_eliza_match_table); 21040e66f109SKrzysztof Kozlowski 21050e66f109SKrzysztof Kozlowski static int disp_cc_eliza_probe(struct platform_device *pdev) 21060e66f109SKrzysztof Kozlowski { 21070e66f109SKrzysztof Kozlowski return qcom_cc_probe(pdev, &disp_cc_eliza_desc); 21080e66f109SKrzysztof Kozlowski } 21090e66f109SKrzysztof Kozlowski 21100e66f109SKrzysztof Kozlowski static struct platform_driver disp_cc_eliza_driver = { 21110e66f109SKrzysztof Kozlowski .probe = disp_cc_eliza_probe, 21120e66f109SKrzysztof Kozlowski .driver = { 21130e66f109SKrzysztof Kozlowski .name = "dispcc-eliza", 21140e66f109SKrzysztof Kozlowski .of_match_table = disp_cc_eliza_match_table, 21150e66f109SKrzysztof Kozlowski }, 21160e66f109SKrzysztof Kozlowski }; 21170e66f109SKrzysztof Kozlowski 21180e66f109SKrzysztof Kozlowski module_platform_driver(disp_cc_eliza_driver); 21190e66f109SKrzysztof Kozlowski 21200e66f109SKrzysztof Kozlowski MODULE_DESCRIPTION("QTI DISPCC Eliza Driver"); 21210e66f109SKrzysztof Kozlowski MODULE_LICENSE("GPL"); 2122