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

clk: qcom: smd-rpmcc: Add msm8974 clocks

This adds all RPM based clocks for msm8974, except cxo and
gfx3d_clk_src.

Tested-by: Georgi Djakov <georgi.djakov@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

authored by

Bjorn Andersson and committed by
Stephen Boyd
685dc94b 2aab7a20

+110 -2
+1
Documentation/devicetree/bindings/clock/qcom,rpmcc.txt
··· 11 11 compatible "qcom,rpmcc" should be also included. 12 12 13 13 "qcom,rpmcc-msm8916", "qcom,rpmcc" 14 + "qcom,rpmcc-msm8974", "qcom,rpmcc" 14 15 "qcom,rpmcc-apq8064", "qcom,rpmcc" 15 16 16 17 - #clock-cells : shall contain 1
+71
drivers/clk/qcom/clk-smd-rpm.c
··· 462 462 .num_clks = ARRAY_SIZE(msm8916_clks), 463 463 }; 464 464 465 + /* msm8974 */ 466 + DEFINE_CLK_SMD_RPM(msm8974, pnoc_clk, pnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 0); 467 + DEFINE_CLK_SMD_RPM(msm8974, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1); 468 + DEFINE_CLK_SMD_RPM(msm8974, cnoc_clk, cnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2); 469 + DEFINE_CLK_SMD_RPM(msm8974, mmssnoc_ahb_clk, mmssnoc_ahb_a_clk, QCOM_SMD_RPM_BUS_CLK, 3); 470 + DEFINE_CLK_SMD_RPM(msm8974, bimc_clk, bimc_a_clk, QCOM_SMD_RPM_MEM_CLK, 0); 471 + DEFINE_CLK_SMD_RPM(msm8974, gfx3d_clk_src, gfx3d_a_clk_src, QCOM_SMD_RPM_MEM_CLK, 1); 472 + DEFINE_CLK_SMD_RPM(msm8974, ocmemgx_clk, ocmemgx_a_clk, QCOM_SMD_RPM_MEM_CLK, 2); 473 + DEFINE_CLK_SMD_RPM_QDSS(msm8974, qdss_clk, qdss_a_clk, QCOM_SMD_RPM_MISC_CLK, 1); 474 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, cxo_d0, cxo_d0_a, 1); 475 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, cxo_d1, cxo_d1_a, 2); 476 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, cxo_a0, cxo_a0_a, 4); 477 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, cxo_a1, cxo_a1_a, 5); 478 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, cxo_a2, cxo_a2_a, 6); 479 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, diff_clk, diff_a_clk, 7); 480 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, div_clk1, div_a_clk1, 11); 481 + DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8974, div_clk2, div_a_clk2, 12); 482 + DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8974, cxo_d0_pin, cxo_d0_a_pin, 1); 483 + DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8974, cxo_d1_pin, cxo_d1_a_pin, 2); 484 + DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8974, cxo_a0_pin, cxo_a0_a_pin, 4); 485 + DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8974, cxo_a1_pin, cxo_a1_a_pin, 5); 486 + DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8974, cxo_a2_pin, cxo_a2_a_pin, 6); 487 + 488 + static struct clk_smd_rpm *msm8974_clks[] = { 489 + [RPM_SMD_PNOC_CLK] = &msm8974_pnoc_clk, 490 + [RPM_SMD_PNOC_A_CLK] = &msm8974_pnoc_a_clk, 491 + [RPM_SMD_SNOC_CLK] = &msm8974_snoc_clk, 492 + [RPM_SMD_SNOC_A_CLK] = &msm8974_snoc_a_clk, 493 + [RPM_SMD_CNOC_CLK] = &msm8974_cnoc_clk, 494 + [RPM_SMD_CNOC_A_CLK] = &msm8974_cnoc_a_clk, 495 + [RPM_SMD_MMSSNOC_AHB_CLK] = &msm8974_mmssnoc_ahb_clk, 496 + [RPM_SMD_MMSSNOC_AHB_A_CLK] = &msm8974_mmssnoc_ahb_a_clk, 497 + [RPM_SMD_BIMC_CLK] = &msm8974_bimc_clk, 498 + [RPM_SMD_BIMC_A_CLK] = &msm8974_bimc_a_clk, 499 + [RPM_SMD_OCMEMGX_CLK] = &msm8974_ocmemgx_clk, 500 + [RPM_SMD_OCMEMGX_A_CLK] = &msm8974_ocmemgx_a_clk, 501 + [RPM_SMD_QDSS_CLK] = &msm8974_qdss_clk, 502 + [RPM_SMD_QDSS_A_CLK] = &msm8974_qdss_a_clk, 503 + [RPM_SMD_CXO_D0] = &msm8974_cxo_d0, 504 + [RPM_SMD_CXO_D0_A] = &msm8974_cxo_d0_a, 505 + [RPM_SMD_CXO_D1] = &msm8974_cxo_d1, 506 + [RPM_SMD_CXO_D1_A] = &msm8974_cxo_d1_a, 507 + [RPM_SMD_CXO_A0] = &msm8974_cxo_a0, 508 + [RPM_SMD_CXO_A0_A] = &msm8974_cxo_a0_a, 509 + [RPM_SMD_CXO_A1] = &msm8974_cxo_a1, 510 + [RPM_SMD_CXO_A1_A] = &msm8974_cxo_a1_a, 511 + [RPM_SMD_CXO_A2] = &msm8974_cxo_a2, 512 + [RPM_SMD_CXO_A2_A] = &msm8974_cxo_a2_a, 513 + [RPM_SMD_DIFF_CLK] = &msm8974_diff_clk, 514 + [RPM_SMD_DIFF_A_CLK] = &msm8974_diff_a_clk, 515 + [RPM_SMD_DIV_CLK1] = &msm8974_div_clk1, 516 + [RPM_SMD_DIV_A_CLK1] = &msm8974_div_a_clk1, 517 + [RPM_SMD_DIV_CLK2] = &msm8974_div_clk2, 518 + [RPM_SMD_DIV_A_CLK2] = &msm8974_div_a_clk2, 519 + [RPM_SMD_CXO_D0_PIN] = &msm8974_cxo_d0_pin, 520 + [RPM_SMD_CXO_D0_A_PIN] = &msm8974_cxo_d0_a_pin, 521 + [RPM_SMD_CXO_D1_PIN] = &msm8974_cxo_d1_pin, 522 + [RPM_SMD_CXO_D1_A_PIN] = &msm8974_cxo_d1_a_pin, 523 + [RPM_SMD_CXO_A0_PIN] = &msm8974_cxo_a0_pin, 524 + [RPM_SMD_CXO_A0_A_PIN] = &msm8974_cxo_a0_a_pin, 525 + [RPM_SMD_CXO_A1_PIN] = &msm8974_cxo_a1_pin, 526 + [RPM_SMD_CXO_A1_A_PIN] = &msm8974_cxo_a1_a_pin, 527 + [RPM_SMD_CXO_A2_PIN] = &msm8974_cxo_a2_pin, 528 + [RPM_SMD_CXO_A2_A_PIN] = &msm8974_cxo_a2_a_pin, 529 + }; 530 + 531 + static const struct rpm_smd_clk_desc rpm_clk_msm8974 = { 532 + .clks = msm8974_clks, 533 + .num_clks = ARRAY_SIZE(msm8974_clks), 534 + }; 465 535 static const struct of_device_id rpm_smd_clk_match_table[] = { 466 536 { .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 }, 537 + { .compatible = "qcom,rpmcc-msm8974", .data = &rpm_clk_msm8974 }, 467 538 { } 468 539 }; 469 540 MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
+38 -2
include/dt-bindings/clock/qcom,rpmcc.h
··· 14 14 #ifndef _DT_BINDINGS_CLK_MSM_RPMCC_H 15 15 #define _DT_BINDINGS_CLK_MSM_RPMCC_H 16 16 17 - /* apq8064 */ 17 + /* RPM clocks */ 18 18 #define RPM_PXO_CLK 0 19 19 #define RPM_PXO_A_CLK 1 20 20 #define RPM_CXO_CLK 2 ··· 38 38 #define RPM_SFPB_CLK 20 39 39 #define RPM_SFPB_A_CLK 21 40 40 41 - /* msm8916 */ 41 + /* SMD RPM clocks */ 42 42 #define RPM_SMD_XO_CLK_SRC 0 43 43 #define RPM_SMD_XO_A_CLK_SRC 1 44 44 #define RPM_SMD_PCNOC_CLK 2 ··· 65 65 #define RPM_SMD_RF_CLK1_A_PIN 23 66 66 #define RPM_SMD_RF_CLK2_PIN 24 67 67 #define RPM_SMD_RF_CLK2_A_PIN 25 68 + #define RPM_SMD_PNOC_CLK 26 69 + #define RPM_SMD_PNOC_A_CLK 27 70 + #define RPM_SMD_CNOC_CLK 28 71 + #define RPM_SMD_CNOC_A_CLK 29 72 + #define RPM_SMD_MMSSNOC_AHB_CLK 30 73 + #define RPM_SMD_MMSSNOC_AHB_A_CLK 31 74 + #define RPM_SMD_GFX3D_CLK_SRC 32 75 + #define RPM_SMD_GFX3D_A_CLK_SRC 33 76 + #define RPM_SMD_OCMEMGX_CLK 34 77 + #define RPM_SMD_OCMEMGX_A_CLK 35 78 + #define RPM_SMD_CXO_D0 36 79 + #define RPM_SMD_CXO_D0_A 37 80 + #define RPM_SMD_CXO_D1 38 81 + #define RPM_SMD_CXO_D1_A 39 82 + #define RPM_SMD_CXO_A0 40 83 + #define RPM_SMD_CXO_A0_A 41 84 + #define RPM_SMD_CXO_A1 42 85 + #define RPM_SMD_CXO_A1_A 43 86 + #define RPM_SMD_CXO_A2 44 87 + #define RPM_SMD_CXO_A2_A 45 88 + #define RPM_SMD_DIV_CLK1 46 89 + #define RPM_SMD_DIV_A_CLK1 47 90 + #define RPM_SMD_DIV_CLK2 48 91 + #define RPM_SMD_DIV_A_CLK2 49 92 + #define RPM_SMD_DIFF_CLK 50 93 + #define RPM_SMD_DIFF_A_CLK 51 94 + #define RPM_SMD_CXO_D0_PIN 52 95 + #define RPM_SMD_CXO_D0_A_PIN 53 96 + #define RPM_SMD_CXO_D1_PIN 54 97 + #define RPM_SMD_CXO_D1_A_PIN 55 98 + #define RPM_SMD_CXO_A0_PIN 56 99 + #define RPM_SMD_CXO_A0_A_PIN 57 100 + #define RPM_SMD_CXO_A1_PIN 58 101 + #define RPM_SMD_CXO_A1_A_PIN 59 102 + #define RPM_SMD_CXO_A2_PIN 60 103 + #define RPM_SMD_CXO_A2_A_PIN 61 68 104 69 105 #endif