Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: dispcc-sm8250: Add EDP clocks

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20210511041719.591969-2-bjorn.andersson@linaro.org
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Bjorn Andersson and committed by
Stephen Boyd
2ebdd326 8ff48c82

+193 -2
+184 -2
drivers/clk/qcom/dispcc-sm8250.c
··· 26 26 P_DISP_CC_PLL1_OUT_MAIN, 27 27 P_DP_PHY_PLL_LINK_CLK, 28 28 P_DP_PHY_PLL_VCO_DIV_CLK, 29 + P_EDP_PHY_PLL_LINK_CLK, 30 + P_EDP_PHY_PLL_VCO_DIV_CLK, 29 31 P_DSI0_PHY_PLL_OUT_BYTECLK, 30 32 P_DSI0_PHY_PLL_OUT_DSICLK, 31 33 P_DSI1_PHY_PLL_OUT_BYTECLK, ··· 136 134 { .hw = &disp_cc_pll1.clkr.hw }, 137 135 }; 138 136 137 + static const struct parent_map disp_cc_parent_map_4[] = { 138 + { P_BI_TCXO, 0 }, 139 + { P_EDP_PHY_PLL_LINK_CLK, 1 }, 140 + { P_EDP_PHY_PLL_VCO_DIV_CLK, 2}, 141 + }; 142 + 143 + static const struct clk_parent_data disp_cc_parent_data_4[] = { 144 + { .fw_name = "bi_tcxo" }, 145 + { .fw_name = "edp_phy_pll_link_clk" }, 146 + { .fw_name = "edp_phy_pll_vco_div_clk" }, 147 + }; 148 + 139 149 static const struct parent_map disp_cc_parent_map_5[] = { 140 150 { P_BI_TCXO, 0 }, 141 151 { P_DISP_CC_PLL0_OUT_MAIN, 1 }, ··· 170 156 { .fw_name = "bi_tcxo" }, 171 157 { .fw_name = "dsi0_phy_pll_out_dsiclk" }, 172 158 { .fw_name = "dsi1_phy_pll_out_dsiclk" }, 159 + }; 160 + 161 + static const struct parent_map disp_cc_parent_map_7[] = { 162 + { P_BI_TCXO, 0 }, 163 + { P_DISP_CC_PLL1_OUT_MAIN, 4 }, 164 + /* { P_DISP_CC_PLL1_OUT_EVEN, 5 }, */ 165 + }; 166 + 167 + static const struct clk_parent_data disp_cc_parent_data_7[] = { 168 + { .fw_name = "bi_tcxo" }, 169 + { .hw = &disp_cc_pll1.clkr.hw }, 170 + /* { .hw = &disp_cc_pll1_out_even.clkr.hw }, */ 173 171 }; 174 172 175 173 static const struct freq_tbl ftbl_disp_cc_mdss_ahb_clk_src[] = { ··· 287 261 .name = "disp_cc_mdss_dp_link1_clk_src", 288 262 .parent_data = disp_cc_parent_data_0, 289 263 .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 290 - .ops = &clk_rcg2_ops, 264 + .ops = &clk_byte2_ops, 291 265 }, 292 266 }; 293 267 ··· 301 275 .name = "disp_cc_mdss_dp_link_clk_src", 302 276 .parent_data = disp_cc_parent_data_0, 303 277 .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 304 - .ops = &clk_rcg2_ops, 278 + .ops = &clk_byte2_ops, 305 279 }, 306 280 }; 307 281 ··· 341 315 .parent_data = disp_cc_parent_data_0, 342 316 .num_parents = ARRAY_SIZE(disp_cc_parent_data_0), 343 317 .ops = &clk_dp_ops, 318 + }, 319 + }; 320 + 321 + static struct clk_rcg2 disp_cc_mdss_edp_aux_clk_src = { 322 + .cmd_rcgr = 0x228c, 323 + .mnd_width = 0, 324 + .hid_width = 5, 325 + .parent_map = disp_cc_parent_map_1, 326 + .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 327 + .clkr.hw.init = &(struct clk_init_data){ 328 + .name = "disp_cc_mdss_edp_aux_clk_src", 329 + .parent_data = disp_cc_parent_data_1, 330 + .num_parents = ARRAY_SIZE(disp_cc_parent_data_1), 331 + .flags = CLK_SET_RATE_PARENT, 332 + .ops = &clk_rcg2_ops, 333 + }, 334 + }; 335 + 336 + static struct clk_rcg2 disp_cc_mdss_edp_gtc_clk_src = { 337 + .cmd_rcgr = 0x22a4, 338 + .mnd_width = 0, 339 + .hid_width = 5, 340 + .parent_map = disp_cc_parent_map_7, 341 + .freq_tbl = ftbl_disp_cc_mdss_byte0_clk_src, 342 + .clkr.hw.init = &(struct clk_init_data){ 343 + .name = "disp_cc_mdss_edp_gtc_clk_src", 344 + .parent_data = disp_cc_parent_data_7, 345 + .num_parents = ARRAY_SIZE(disp_cc_parent_data_7), 346 + .flags = CLK_SET_RATE_PARENT, 347 + .ops = &clk_rcg2_ops, 348 + }, 349 + }; 350 + 351 + static struct clk_rcg2 disp_cc_mdss_edp_link_clk_src = { 352 + .cmd_rcgr = 0x2270, 353 + .mnd_width = 0, 354 + .hid_width = 5, 355 + .parent_map = disp_cc_parent_map_4, 356 + .clkr.hw.init = &(struct clk_init_data){ 357 + .name = "disp_cc_mdss_edp_link_clk_src", 358 + .parent_data = disp_cc_parent_data_4, 359 + .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 360 + .flags = CLK_SET_RATE_PARENT, 361 + .ops = &clk_byte2_ops, 362 + }, 363 + }; 364 + 365 + static struct clk_rcg2 disp_cc_mdss_edp_pixel_clk_src = { 366 + .cmd_rcgr = 0x2258, 367 + .mnd_width = 16, 368 + .hid_width = 5, 369 + .parent_map = disp_cc_parent_map_4, 370 + .clkr.hw.init = &(struct clk_init_data){ 371 + .name = "disp_cc_mdss_edp_pixel_clk_src", 372 + .parent_data = disp_cc_parent_data_4, 373 + .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), 374 + .ops = &clk_dp_ops, 375 + }, 376 + }; 377 + 378 + static struct clk_branch disp_cc_mdss_edp_aux_clk = { 379 + .halt_reg = 0x2078, 380 + .halt_check = BRANCH_HALT, 381 + .clkr = { 382 + .enable_reg = 0x2078, 383 + .enable_mask = BIT(0), 384 + .hw.init = &(struct clk_init_data){ 385 + .name = "disp_cc_mdss_edp_aux_clk", 386 + .parent_hws = (const struct clk_hw*[]){ 387 + &disp_cc_mdss_edp_aux_clk_src.clkr.hw, 388 + }, 389 + .num_parents = 1, 390 + .flags = CLK_SET_RATE_PARENT, 391 + .ops = &clk_branch2_ops, 392 + }, 393 + }, 394 + }; 395 + 396 + static struct clk_branch disp_cc_mdss_edp_gtc_clk = { 397 + .halt_reg = 0x207c, 398 + .halt_check = BRANCH_HALT, 399 + .clkr = { 400 + .enable_reg = 0x207c, 401 + .enable_mask = BIT(0), 402 + .hw.init = &(struct clk_init_data){ 403 + .name = "disp_cc_mdss_edp_gtc_clk", 404 + .parent_hws = (const struct clk_hw*[]){ 405 + &disp_cc_mdss_edp_gtc_clk_src.clkr.hw, 406 + }, 407 + .num_parents = 1, 408 + .flags = CLK_SET_RATE_PARENT, 409 + .ops = &clk_branch2_ops, 410 + }, 411 + }, 412 + }; 413 + 414 + static struct clk_branch disp_cc_mdss_edp_link_clk = { 415 + .halt_reg = 0x2070, 416 + .halt_check = BRANCH_HALT, 417 + .clkr = { 418 + .enable_reg = 0x2070, 419 + .enable_mask = BIT(0), 420 + .hw.init = &(struct clk_init_data){ 421 + .name = "disp_cc_mdss_edp_link_clk", 422 + .parent_hws = (const struct clk_hw*[]){ 423 + &disp_cc_mdss_edp_link_clk_src.clkr.hw, 424 + }, 425 + .num_parents = 1, 426 + .flags = CLK_SET_RATE_PARENT, 427 + .ops = &clk_branch2_ops, 428 + }, 429 + }, 430 + }; 431 + 432 + static struct clk_branch disp_cc_mdss_edp_link_intf_clk = { 433 + .halt_reg = 0x2074, 434 + .halt_check = BRANCH_HALT, 435 + .clkr = { 436 + .enable_reg = 0x2074, 437 + .enable_mask = BIT(0), 438 + .hw.init = &(struct clk_init_data){ 439 + .name = "disp_cc_mdss_edp_link_intf_clk", 440 + .parent_hws = (const struct clk_hw*[]){ 441 + &disp_cc_mdss_edp_link_clk_src.clkr.hw, 442 + }, 443 + .num_parents = 1, 444 + .flags = CLK_GET_RATE_NOCACHE, 445 + .ops = &clk_branch2_ops, 446 + }, 447 + }, 448 + }; 449 + 450 + static struct clk_branch disp_cc_mdss_edp_pixel_clk = { 451 + .halt_reg = 0x206c, 452 + .halt_check = BRANCH_HALT, 453 + .clkr = { 454 + .enable_reg = 0x206c, 455 + .enable_mask = BIT(0), 456 + .hw.init = &(struct clk_init_data){ 457 + .name = "disp_cc_mdss_edp_pixel_clk", 458 + .parent_hws = (const struct clk_hw*[]){ 459 + &disp_cc_mdss_edp_pixel_clk_src.clkr.hw, 460 + }, 461 + .num_parents = 1, 462 + .flags = CLK_SET_RATE_PARENT, 463 + .ops = &clk_branch2_ops, 464 + }, 344 465 }, 345 466 }; 346 467 ··· 1160 987 [DISP_CC_MDSS_DP_PIXEL2_CLK_SRC] = &disp_cc_mdss_dp_pixel2_clk_src.clkr, 1161 988 [DISP_CC_MDSS_DP_PIXEL_CLK] = &disp_cc_mdss_dp_pixel_clk.clkr, 1162 989 [DISP_CC_MDSS_DP_PIXEL_CLK_SRC] = &disp_cc_mdss_dp_pixel_clk_src.clkr, 990 + [DISP_CC_MDSS_EDP_AUX_CLK] = &disp_cc_mdss_edp_aux_clk.clkr, 991 + [DISP_CC_MDSS_EDP_AUX_CLK_SRC] = &disp_cc_mdss_edp_aux_clk_src.clkr, 992 + [DISP_CC_MDSS_EDP_GTC_CLK] = &disp_cc_mdss_edp_gtc_clk.clkr, 993 + [DISP_CC_MDSS_EDP_GTC_CLK_SRC] = &disp_cc_mdss_edp_gtc_clk_src.clkr, 994 + [DISP_CC_MDSS_EDP_LINK_CLK] = &disp_cc_mdss_edp_link_clk.clkr, 995 + [DISP_CC_MDSS_EDP_LINK_CLK_SRC] = &disp_cc_mdss_edp_link_clk_src.clkr, 996 + [DISP_CC_MDSS_EDP_LINK_INTF_CLK] = &disp_cc_mdss_edp_link_intf_clk.clkr, 997 + [DISP_CC_MDSS_EDP_PIXEL_CLK] = &disp_cc_mdss_edp_pixel_clk.clkr, 998 + [DISP_CC_MDSS_EDP_PIXEL_CLK_SRC] = &disp_cc_mdss_edp_pixel_clk_src.clkr, 1163 999 [DISP_CC_MDSS_ESC0_CLK] = &disp_cc_mdss_esc0_clk.clkr, 1164 1000 [DISP_CC_MDSS_ESC0_CLK_SRC] = &disp_cc_mdss_esc0_clk_src.clkr, 1165 1001 [DISP_CC_MDSS_ESC1_CLK] = &disp_cc_mdss_esc1_clk.clkr,
+9
include/dt-bindings/clock/qcom,dispcc-sm8250.h
··· 55 55 #define DISP_CC_MDSS_VSYNC_CLK_SRC 45 56 56 #define DISP_CC_PLL0 46 57 57 #define DISP_CC_PLL1 47 58 + #define DISP_CC_MDSS_EDP_AUX_CLK 48 59 + #define DISP_CC_MDSS_EDP_AUX_CLK_SRC 49 60 + #define DISP_CC_MDSS_EDP_GTC_CLK 50 61 + #define DISP_CC_MDSS_EDP_GTC_CLK_SRC 51 62 + #define DISP_CC_MDSS_EDP_LINK_CLK 52 63 + #define DISP_CC_MDSS_EDP_LINK_CLK_SRC 53 64 + #define DISP_CC_MDSS_EDP_LINK_INTF_CLK 54 65 + #define DISP_CC_MDSS_EDP_PIXEL_CLK 55 66 + #define DISP_CC_MDSS_EDP_PIXEL_CLK_SRC 56 58 67 59 68 /* DISP_CC Reset */ 60 69 #define DISP_CC_MDSS_CORE_BCR 0