Lines Matching +full:clkr +full:- +full:- +full:-

1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2018-2020, 2022, The Linux Foundation. All rights reserved.
6 #include <linux/clk-provider.h>
11 #include <linux/reset-controller.h>
13 #include <dt-bindings/clock/qcom,dispcc-sm8250.h>
15 #include "clk-alpha-pll.h"
16 #include "clk-branch.h"
17 #include "clk-rcg.h"
18 #include "clk-regmap-divider.h"
75 .clkr.hw.init = &disp_cc_pll0_init
103 .clkr.hw.init = &disp_cc_pll1_init
153 { .hw = &disp_cc_pll1.clkr.hw },
176 { .hw = &disp_cc_pll0.clkr.hw },
177 { .hw = &disp_cc_pll1.clkr.hw },
200 { .hw = &disp_cc_pll1.clkr.hw },
201 /* { .hw = &disp_cc_pll1_out_even.clkr.hw }, */
217 .clkr.hw.init = &(const struct clk_init_data) {
236 .clkr.hw.init = &(const struct clk_init_data) {
250 .clkr.hw.init = &(const struct clk_init_data) {
265 .clkr.hw.init = &(const struct clk_init_data) {
280 .clkr.hw.init = &(const struct clk_init_data) {
294 .clkr.hw.init = &(const struct clk_init_data) {
307 .clkr.hw.init = &(const struct clk_init_data) {
320 .clkr.hw.init = &(const struct clk_init_data) {
333 .clkr.hw.init = &(const struct clk_init_data) {
346 .clkr.hw.init = &(const struct clk_init_data) {
360 .clkr.hw.init = &(const struct clk_init_data) {
375 .clkr.hw.init = &(const struct clk_init_data) {
389 .clkr.hw.init = &(const struct clk_init_data) {
403 .clkr.hw.init = &(const struct clk_init_data) {
414 .clkr = {
420 &disp_cc_mdss_edp_aux_clk_src.clkr.hw,
432 .clkr = {
438 &disp_cc_mdss_edp_gtc_clk_src.clkr.hw,
450 .clkr = {
456 &disp_cc_mdss_edp_link_clk_src.clkr.hw,
469 .clkr.hw.init = &(const struct clk_init_data) {
472 &disp_cc_mdss_edp_link_clk_src.clkr.hw,
482 .clkr = {
488 &disp_cc_mdss_edp_link_div_clk_src.clkr.hw,
500 .clkr = {
506 &disp_cc_mdss_edp_pixel_clk_src.clkr.hw,
521 .clkr.hw.init = &(const struct clk_init_data) {
536 .clkr.hw.init = &(const struct clk_init_data) {
563 .clkr.hw.init = &(const struct clk_init_data) {
577 .clkr.hw.init = &(const struct clk_init_data) {
591 .clkr.hw.init = &(const struct clk_init_data) {
615 .clkr.hw.init = &(const struct clk_init_data) {
630 .clkr.hw.init = &(const struct clk_init_data) {
643 .clkr.hw.init = &(const struct clk_init_data) {
646 &disp_cc_mdss_byte0_clk_src.clkr.hw,
658 .clkr.hw.init = &(const struct clk_init_data) {
661 &disp_cc_mdss_byte1_clk_src.clkr.hw,
672 .clkr.hw.init = &(const struct clk_init_data) {
675 &disp_cc_mdss_dp_link1_clk_src.clkr.hw,
686 .clkr.hw.init = &(const struct clk_init_data) {
689 &disp_cc_mdss_dp_link_clk_src.clkr.hw,
699 .clkr = {
705 &disp_cc_mdss_ahb_clk_src.clkr.hw,
717 .clkr = {
723 &disp_cc_mdss_byte0_clk_src.clkr.hw,
735 .clkr = {
741 &disp_cc_mdss_byte0_div_clk_src.clkr.hw,
753 .clkr = {
759 &disp_cc_mdss_byte1_clk_src.clkr.hw,
771 .clkr = {
777 &disp_cc_mdss_byte1_div_clk_src.clkr.hw,
789 .clkr = {
795 &disp_cc_mdss_dp_aux1_clk_src.clkr.hw,
807 .clkr = {
813 &disp_cc_mdss_dp_aux_clk_src.clkr.hw,
825 .clkr = {
831 &disp_cc_mdss_dp_link1_clk_src.clkr.hw,
843 .clkr = {
849 &disp_cc_mdss_dp_link1_div_clk_src.clkr.hw,
861 .clkr = {
867 &disp_cc_mdss_dp_link_clk_src.clkr.hw,
879 .clkr = {
885 &disp_cc_mdss_dp_link_div_clk_src.clkr.hw,
897 .clkr = {
903 &disp_cc_mdss_dp_pixel1_clk_src.clkr.hw,
915 .clkr = {
921 &disp_cc_mdss_dp_pixel2_clk_src.clkr.hw,
933 .clkr = {
939 &disp_cc_mdss_dp_pixel_clk_src.clkr.hw,
951 .clkr = {
957 &disp_cc_mdss_esc0_clk_src.clkr.hw,
969 .clkr = {
975 &disp_cc_mdss_esc1_clk_src.clkr.hw,
987 .clkr = {
993 &disp_cc_mdss_mdp_clk_src.clkr.hw,
1005 .clkr = {
1011 &disp_cc_mdss_mdp_clk_src.clkr.hw,
1023 .clkr = {
1029 &disp_cc_mdss_ahb_clk_src.clkr.hw,
1041 .clkr = {
1047 &disp_cc_mdss_pclk0_clk_src.clkr.hw,
1059 .clkr = {
1065 &disp_cc_mdss_pclk1_clk_src.clkr.hw,
1077 .clkr = {
1083 &disp_cc_mdss_rot_clk_src.clkr.hw,
1095 .clkr = {
1101 &disp_cc_mdss_ahb_clk_src.clkr.hw,
1113 .clkr = {
1119 &disp_cc_mdss_vsync_clk_src.clkr.hw,
1131 .clkr = {
1137 &disp_cc_mdss_vsync_clk_src.clkr.hw,
1159 [DISP_CC_MDSS_AHB_CLK] = &disp_cc_mdss_ahb_clk.clkr,
1160 [DISP_CC_MDSS_AHB_CLK_SRC] = &disp_cc_mdss_ahb_clk_src.clkr,
1161 [DISP_CC_MDSS_BYTE0_CLK] = &disp_cc_mdss_byte0_clk.clkr,
1162 [DISP_CC_MDSS_BYTE0_CLK_SRC] = &disp_cc_mdss_byte0_clk_src.clkr,
1163 [DISP_CC_MDSS_BYTE0_DIV_CLK_SRC] = &disp_cc_mdss_byte0_div_clk_src.clkr,
1164 [DISP_CC_MDSS_BYTE0_INTF_CLK] = &disp_cc_mdss_byte0_intf_clk.clkr,
1165 [DISP_CC_MDSS_BYTE1_CLK] = &disp_cc_mdss_byte1_clk.clkr,
1166 [DISP_CC_MDSS_BYTE1_CLK_SRC] = &disp_cc_mdss_byte1_clk_src.clkr,
1167 [DISP_CC_MDSS_BYTE1_DIV_CLK_SRC] = &disp_cc_mdss_byte1_div_clk_src.clkr,
1168 [DISP_CC_MDSS_BYTE1_INTF_CLK] = &disp_cc_mdss_byte1_intf_clk.clkr,
1169 [DISP_CC_MDSS_DP_AUX1_CLK] = &disp_cc_mdss_dp_aux1_clk.clkr,
1170 [DISP_CC_MDSS_DP_AUX1_CLK_SRC] = &disp_cc_mdss_dp_aux1_clk_src.clkr,
1171 [DISP_CC_MDSS_DP_AUX_CLK] = &disp_cc_mdss_dp_aux_clk.clkr,
1172 [DISP_CC_MDSS_DP_AUX_CLK_SRC] = &disp_cc_mdss_dp_aux_clk_src.clkr,
1173 [DISP_CC_MDSS_DP_LINK1_CLK] = &disp_cc_mdss_dp_link1_clk.clkr,
1174 [DISP_CC_MDSS_DP_LINK1_CLK_SRC] = &disp_cc_mdss_dp_link1_clk_src.clkr,
1175 [DISP_CC_MDSS_DP_LINK1_DIV_CLK_SRC] = &disp_cc_mdss_dp_link1_div_clk_src.clkr,
1176 [DISP_CC_MDSS_DP_LINK1_INTF_CLK] = &disp_cc_mdss_dp_link1_intf_clk.clkr,
1177 [DISP_CC_MDSS_DP_LINK_CLK] = &disp_cc_mdss_dp_link_clk.clkr,
1178 [DISP_CC_MDSS_DP_LINK_CLK_SRC] = &disp_cc_mdss_dp_link_clk_src.clkr,
1179 [DISP_CC_MDSS_DP_LINK_DIV_CLK_SRC] = &disp_cc_mdss_dp_link_div_clk_src.clkr,
1180 [DISP_CC_MDSS_DP_LINK_INTF_CLK] = &disp_cc_mdss_dp_link_intf_clk.clkr,
1181 [DISP_CC_MDSS_DP_PIXEL1_CLK] = &disp_cc_mdss_dp_pixel1_clk.clkr,
1182 [DISP_CC_MDSS_DP_PIXEL1_CLK_SRC] = &disp_cc_mdss_dp_pixel1_clk_src.clkr,
1183 [DISP_CC_MDSS_DP_PIXEL2_CLK] = &disp_cc_mdss_dp_pixel2_clk.clkr,
1184 [DISP_CC_MDSS_DP_PIXEL2_CLK_SRC] = &disp_cc_mdss_dp_pixel2_clk_src.clkr,
1185 [DISP_CC_MDSS_DP_PIXEL_CLK] = &disp_cc_mdss_dp_pixel_clk.clkr,
1186 [DISP_CC_MDSS_DP_PIXEL_CLK_SRC] = &disp_cc_mdss_dp_pixel_clk_src.clkr,
1187 [DISP_CC_MDSS_EDP_AUX_CLK] = &disp_cc_mdss_edp_aux_clk.clkr,
1188 [DISP_CC_MDSS_EDP_AUX_CLK_SRC] = &disp_cc_mdss_edp_aux_clk_src.clkr,
1189 [DISP_CC_MDSS_EDP_GTC_CLK] = &disp_cc_mdss_edp_gtc_clk.clkr,
1190 [DISP_CC_MDSS_EDP_GTC_CLK_SRC] = &disp_cc_mdss_edp_gtc_clk_src.clkr,
1191 [DISP_CC_MDSS_EDP_LINK_CLK] = &disp_cc_mdss_edp_link_clk.clkr,
1192 [DISP_CC_MDSS_EDP_LINK_CLK_SRC] = &disp_cc_mdss_edp_link_clk_src.clkr,
1193 [DISP_CC_MDSS_EDP_LINK_DIV_CLK_SRC] = &disp_cc_mdss_edp_link_div_clk_src.clkr,
1194 [DISP_CC_MDSS_EDP_LINK_INTF_CLK] = &disp_cc_mdss_edp_link_intf_clk.clkr,
1195 [DISP_CC_MDSS_EDP_PIXEL_CLK] = &disp_cc_mdss_edp_pixel_clk.clkr,
1196 [DISP_CC_MDSS_EDP_PIXEL_CLK_SRC] = &disp_cc_mdss_edp_pixel_clk_src.clkr,
1197 [DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr,
1198 [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr,
1199 [DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr,
1200 [DISP_CC_MDSS_ESC1_CLK_SRC] = &disp_cc_mdss_esc1_clk_src.clkr,
1201 [DISP_CC_MDSS_MDP_CLK] = &disp_cc_mdss_mdp_clk.clkr,
1202 [DISP_CC_MDSS_MDP_CLK_SRC] = &disp_cc_mdss_mdp_clk_src.clkr,
1203 [DISP_CC_MDSS_MDP_LUT_CLK] = &disp_cc_mdss_mdp_lut_clk.clkr,
1204 [DISP_CC_MDSS_NON_GDSC_AHB_CLK] = &disp_cc_mdss_non_gdsc_ahb_clk.clkr,
1205 [DISP_CC_MDSS_PCLK0_CLK] = &disp_cc_mdss_pclk0_clk.clkr,
1206 [DISP_CC_MDSS_PCLK0_CLK_SRC] = &disp_cc_mdss_pclk0_clk_src.clkr,
1207 [DISP_CC_MDSS_PCLK1_CLK] = &disp_cc_mdss_pclk1_clk.clkr,
1208 [DISP_CC_MDSS_PCLK1_CLK_SRC] = &disp_cc_mdss_pclk1_clk_src.clkr,
1209 [DISP_CC_MDSS_ROT_CLK] = &disp_cc_mdss_rot_clk.clkr,
1210 [DISP_CC_MDSS_ROT_CLK_SRC] = &disp_cc_mdss_rot_clk_src.clkr,
1211 [DISP_CC_MDSS_RSCC_AHB_CLK] = &disp_cc_mdss_rscc_ahb_clk.clkr,
1212 [DISP_CC_MDSS_RSCC_VSYNC_CLK] = &disp_cc_mdss_rscc_vsync_clk.clkr,
1213 [DISP_CC_MDSS_VSYNC_CLK] = &disp_cc_mdss_vsync_clk.clkr,
1214 [DISP_CC_MDSS_VSYNC_CLK_SRC] = &disp_cc_mdss_vsync_clk_src.clkr,
1215 [DISP_CC_PLL0] = &disp_cc_pll0.clkr,
1216 [DISP_CC_PLL1] = &disp_cc_pll1.clkr,
1247 { .compatible = "qcom,sc8180x-dispcc" },
1248 { .compatible = "qcom,sm8150-dispcc" },
1249 { .compatible = "qcom,sm8250-dispcc" },
1250 { .compatible = "qcom,sm8350-dispcc" },
1260 ret = devm_pm_runtime_enable(&pdev->dev); in disp_cc_sm8250_probe()
1264 ret = pm_runtime_resume_and_get(&pdev->dev); in disp_cc_sm8250_probe()
1270 pm_runtime_put(&pdev->dev); in disp_cc_sm8250_probe()
1276 if (of_device_is_compatible(pdev->dev.of_node, "qcom,sc8180x-dispcc") || in disp_cc_sm8250_probe()
1277 of_device_is_compatible(pdev->dev.of_node, "qcom,sm8150-dispcc")) { in disp_cc_sm8250_probe()
1287 disp_cc_mdss_dp_link_intf_clk.clkr.hw.init->parent_hws[0] = in disp_cc_sm8250_probe()
1288 &disp_cc_mdss_dp_link_clk_src.clkr.hw; in disp_cc_sm8250_probe()
1289 disp_cc_mdss_dp_link1_intf_clk.clkr.hw.init->parent_hws[0] = in disp_cc_sm8250_probe()
1290 &disp_cc_mdss_dp_link1_clk_src.clkr.hw; in disp_cc_sm8250_probe()
1291 disp_cc_mdss_edp_link_intf_clk.clkr.hw.init->parent_hws[0] = in disp_cc_sm8250_probe()
1292 &disp_cc_mdss_edp_link_clk_src.clkr.hw; in disp_cc_sm8250_probe()
1297 } else if (of_device_is_compatible(pdev->dev.of_node, "qcom,sm8350-dispcc")) { in disp_cc_sm8250_probe()
1335 rcgs[i]->cmd_rcgr -= 4; in disp_cc_sm8250_probe()
1338 divs[i]->reg -= 4; in disp_cc_sm8250_probe()
1339 divs[i]->width = 4; in disp_cc_sm8250_probe()
1342 disp_cc_mdss_ahb_clk.halt_reg -= 4; in disp_cc_sm8250_probe()
1343 disp_cc_mdss_ahb_clk.clkr.enable_reg -= 4; in disp_cc_sm8250_probe()
1363 if (of_device_is_compatible(pdev->dev.of_node, "qcom,sm8350-dispcc")) { in disp_cc_sm8250_probe()
1374 /* Keep some clocks always-on */ in disp_cc_sm8250_probe()
1377 ret = qcom_cc_really_probe(&pdev->dev, &disp_cc_sm8250_desc, regmap); in disp_cc_sm8250_probe()
1379 pm_runtime_put(&pdev->dev); in disp_cc_sm8250_probe()
1387 .name = "disp_cc-sm8250",