diff options
-rw-r--r-- | Documentation/devicetree/bindings/clock/qcom,rpmcc.txt | 1 | ||||
-rw-r--r-- | drivers/acpi/acpi_lpss.c | 2 | ||||
-rw-r--r-- | drivers/clk/clk-fractional-divider.c | 2 | ||||
-rw-r--r-- | drivers/clk/clk-qoriq.c | 4 | ||||
-rw-r--r-- | drivers/clk/mediatek/clk-mt2712.c | 1 | ||||
-rw-r--r-- | drivers/clk/qcom/clk-smd-rpm.c | 63 | ||||
-rw-r--r-- | drivers/clk/qcom/common.c | 8 | ||||
-rw-r--r-- | drivers/clk/qcom/common.h | 2 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-ipq8074.c | 10 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-mdm9615.c | 11 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-msm8996.c | 10 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-msm8998.c | 61 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-qcs404.c | 9 | ||||
-rw-r--r-- | drivers/clk/qcom/gcc-sdm660.c | 11 | ||||
-rw-r--r-- | drivers/clk/qcom/mmcc-msm8996.c | 10 | ||||
-rw-r--r-- | drivers/clk/tegra/clk-dfll.c | 18 | ||||
-rw-r--r-- | drivers/clk/x86/clk-lpt.c | 2 | ||||
-rw-r--r-- | include/dt-bindings/clock/qcom,rpmcc.h | 10 | ||||
-rw-r--r-- | include/linux/clk-provider.h | 3 | ||||
-rw-r--r-- | include/linux/platform_data/x86/clk-lpss.h (renamed from include/linux/platform_data/clk-lpss.h) | 0 |
20 files changed, 170 insertions, 68 deletions
diff --git a/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt b/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt index 87b4949e9bc8..944719bd586f 100644 --- a/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt +++ b/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt | |||
@@ -16,6 +16,7 @@ Required properties : | |||
16 | "qcom,rpmcc-msm8974", "qcom,rpmcc" | 16 | "qcom,rpmcc-msm8974", "qcom,rpmcc" |
17 | "qcom,rpmcc-apq8064", "qcom,rpmcc" | 17 | "qcom,rpmcc-apq8064", "qcom,rpmcc" |
18 | "qcom,rpmcc-msm8996", "qcom,rpmcc" | 18 | "qcom,rpmcc-msm8996", "qcom,rpmcc" |
19 | "qcom,rpmcc-msm8998", "qcom,rpmcc" | ||
19 | "qcom,rpmcc-qcs404", "qcom,rpmcc" | 20 | "qcom,rpmcc-qcs404", "qcom,rpmcc" |
20 | 21 | ||
21 | - #clock-cells : shall contain 1 | 22 | - #clock-cells : shall contain 1 |
diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c index 5f94c35d165f..1e2a10a06b9d 100644 --- a/drivers/acpi/acpi_lpss.c +++ b/drivers/acpi/acpi_lpss.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/mutex.h> | 18 | #include <linux/mutex.h> |
19 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/platform_data/clk-lpss.h> | 21 | #include <linux/platform_data/x86/clk-lpss.h> |
22 | #include <linux/platform_data/x86/pmc_atom.h> | 22 | #include <linux/platform_data/x86/pmc_atom.h> |
23 | #include <linux/pm_domain.h> | 23 | #include <linux/pm_domain.h> |
24 | #include <linux/pm_runtime.h> | 24 | #include <linux/pm_runtime.h> |
diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk-fractional-divider.c index 545dceec0bbf..fdfe2e423d15 100644 --- a/drivers/clk/clk-fractional-divider.c +++ b/drivers/clk/clk-fractional-divider.c | |||
@@ -79,7 +79,7 @@ static long clk_fd_round_rate(struct clk_hw *hw, unsigned long rate, | |||
79 | unsigned long m, n; | 79 | unsigned long m, n; |
80 | u64 ret; | 80 | u64 ret; |
81 | 81 | ||
82 | if (!rate || rate >= *parent_rate) | 82 | if (!rate || (!clk_hw_can_set_rate_parent(hw) && rate >= *parent_rate)) |
83 | return *parent_rate; | 83 | return *parent_rate; |
84 | 84 | ||
85 | if (fd->approximation) | 85 | if (fd->approximation) |
diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c index 0e84f6dfa54e..1212a9be7e80 100644 --- a/drivers/clk/clk-qoriq.c +++ b/drivers/clk/clk-qoriq.c | |||
@@ -1148,8 +1148,8 @@ static void __init create_one_pll(struct clockgen *cg, int idx) | |||
1148 | pll->div[i].clk = clk; | 1148 | pll->div[i].clk = clk; |
1149 | ret = clk_register_clkdev(clk, pll->div[i].name, NULL); | 1149 | ret = clk_register_clkdev(clk, pll->div[i].name, NULL); |
1150 | if (ret != 0) | 1150 | if (ret != 0) |
1151 | pr_err("%s: %s: register to lookup table failed %ld\n", | 1151 | pr_err("%s: %s: register to lookup table failed %d\n", |
1152 | __func__, pll->div[i].name, PTR_ERR(clk)); | 1152 | __func__, pll->div[i].name, ret); |
1153 | 1153 | ||
1154 | } | 1154 | } |
1155 | } | 1155 | } |
diff --git a/drivers/clk/mediatek/clk-mt2712.c b/drivers/clk/mediatek/clk-mt2712.c index 991d4093726e..2895a5ae814d 100644 --- a/drivers/clk/mediatek/clk-mt2712.c +++ b/drivers/clk/mediatek/clk-mt2712.c | |||
@@ -1463,7 +1463,6 @@ static struct platform_driver clk_mt2712_drv = { | |||
1463 | .probe = clk_mt2712_probe, | 1463 | .probe = clk_mt2712_probe, |
1464 | .driver = { | 1464 | .driver = { |
1465 | .name = "clk-mt2712", | 1465 | .name = "clk-mt2712", |
1466 | .owner = THIS_MODULE, | ||
1467 | .of_match_table = of_match_clk_mt2712, | 1466 | .of_match_table = of_match_clk_mt2712, |
1468 | }, | 1467 | }, |
1469 | }; | 1468 | }; |
diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index d3aadaeb2903..22dd42ad9223 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c | |||
@@ -655,10 +655,73 @@ static const struct rpm_smd_clk_desc rpm_clk_qcs404 = { | |||
655 | .num_clks = ARRAY_SIZE(qcs404_clks), | 655 | .num_clks = ARRAY_SIZE(qcs404_clks), |
656 | }; | 656 | }; |
657 | 657 | ||
658 | /* msm8998 */ | ||
659 | DEFINE_CLK_SMD_RPM(msm8998, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1); | ||
660 | DEFINE_CLK_SMD_RPM(msm8998, cnoc_clk, cnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2); | ||
661 | DEFINE_CLK_SMD_RPM(msm8998, ce1_clk, ce1_a_clk, QCOM_SMD_RPM_CE_CLK, 0); | ||
662 | DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, div_clk1, div_clk1_a, 0xb); | ||
663 | DEFINE_CLK_SMD_RPM(msm8998, ipa_clk, ipa_a_clk, QCOM_SMD_RPM_IPA_CLK, 0); | ||
664 | DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, ln_bb_clk1, ln_bb_clk1_a, 1); | ||
665 | DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, ln_bb_clk2, ln_bb_clk2_a, 2); | ||
666 | DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, ln_bb_clk3_pin, ln_bb_clk3_a_pin, | ||
667 | 3); | ||
668 | DEFINE_CLK_SMD_RPM(msm8998, mmssnoc_axi_rpm_clk, mmssnoc_axi_rpm_a_clk, | ||
669 | QCOM_SMD_RPM_MMAXI_CLK, 0); | ||
670 | DEFINE_CLK_SMD_RPM(msm8998, aggre1_noc_clk, aggre1_noc_a_clk, | ||
671 | QCOM_SMD_RPM_AGGR_CLK, 1); | ||
672 | DEFINE_CLK_SMD_RPM(msm8998, aggre2_noc_clk, aggre2_noc_a_clk, | ||
673 | QCOM_SMD_RPM_AGGR_CLK, 2); | ||
674 | DEFINE_CLK_SMD_RPM_QDSS(msm8998, qdss_clk, qdss_a_clk, | ||
675 | QCOM_SMD_RPM_MISC_CLK, 1); | ||
676 | DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, rf_clk1, rf_clk1_a, 4); | ||
677 | DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, rf_clk2_pin, rf_clk2_a_pin, 5); | ||
678 | DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, rf_clk3, rf_clk3_a, 6); | ||
679 | DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, rf_clk3_pin, rf_clk3_a_pin, 6); | ||
680 | static struct clk_smd_rpm *msm8998_clks[] = { | ||
681 | [RPM_SMD_SNOC_CLK] = &msm8998_snoc_clk, | ||
682 | [RPM_SMD_SNOC_A_CLK] = &msm8998_snoc_a_clk, | ||
683 | [RPM_SMD_CNOC_CLK] = &msm8998_cnoc_clk, | ||
684 | [RPM_SMD_CNOC_A_CLK] = &msm8998_cnoc_a_clk, | ||
685 | [RPM_SMD_CE1_CLK] = &msm8998_ce1_clk, | ||
686 | [RPM_SMD_CE1_A_CLK] = &msm8998_ce1_a_clk, | ||
687 | [RPM_SMD_DIV_CLK1] = &msm8998_div_clk1, | ||
688 | [RPM_SMD_DIV_A_CLK1] = &msm8998_div_clk1_a, | ||
689 | [RPM_SMD_IPA_CLK] = &msm8998_ipa_clk, | ||
690 | [RPM_SMD_IPA_A_CLK] = &msm8998_ipa_a_clk, | ||
691 | [RPM_SMD_LN_BB_CLK1] = &msm8998_ln_bb_clk1, | ||
692 | [RPM_SMD_LN_BB_CLK1_A] = &msm8998_ln_bb_clk1_a, | ||
693 | [RPM_SMD_LN_BB_CLK2] = &msm8998_ln_bb_clk2, | ||
694 | [RPM_SMD_LN_BB_CLK2_A] = &msm8998_ln_bb_clk2_a, | ||
695 | [RPM_SMD_LN_BB_CLK3_PIN] = &msm8998_ln_bb_clk3_pin, | ||
696 | [RPM_SMD_LN_BB_CLK3_A_PIN] = &msm8998_ln_bb_clk3_a_pin, | ||
697 | [RPM_SMD_MMAXI_CLK] = &msm8998_mmssnoc_axi_rpm_clk, | ||
698 | [RPM_SMD_MMAXI_A_CLK] = &msm8998_mmssnoc_axi_rpm_a_clk, | ||
699 | [RPM_SMD_AGGR1_NOC_CLK] = &msm8998_aggre1_noc_clk, | ||
700 | [RPM_SMD_AGGR1_NOC_A_CLK] = &msm8998_aggre1_noc_a_clk, | ||
701 | [RPM_SMD_AGGR2_NOC_CLK] = &msm8998_aggre2_noc_clk, | ||
702 | [RPM_SMD_AGGR2_NOC_A_CLK] = &msm8998_aggre2_noc_a_clk, | ||
703 | [RPM_SMD_QDSS_CLK] = &msm8998_qdss_clk, | ||
704 | [RPM_SMD_QDSS_A_CLK] = &msm8998_qdss_a_clk, | ||
705 | [RPM_SMD_RF_CLK1] = &msm8998_rf_clk1, | ||
706 | [RPM_SMD_RF_CLK1_A] = &msm8998_rf_clk1_a, | ||
707 | [RPM_SMD_RF_CLK2_PIN] = &msm8998_rf_clk2_pin, | ||
708 | [RPM_SMD_RF_CLK2_A_PIN] = &msm8998_rf_clk2_a_pin, | ||
709 | [RPM_SMD_RF_CLK3] = &msm8998_rf_clk3, | ||
710 | [RPM_SMD_RF_CLK3_A] = &msm8998_rf_clk3_a, | ||
711 | [RPM_SMD_RF_CLK3_PIN] = &msm8998_rf_clk3_pin, | ||
712 | [RPM_SMD_RF_CLK3_A_PIN] = &msm8998_rf_clk3_a_pin, | ||
713 | }; | ||
714 | |||
715 | static const struct rpm_smd_clk_desc rpm_clk_msm8998 = { | ||
716 | .clks = msm8998_clks, | ||
717 | .num_clks = ARRAY_SIZE(msm8998_clks), | ||
718 | }; | ||
719 | |||
658 | static const struct of_device_id rpm_smd_clk_match_table[] = { | 720 | static const struct of_device_id rpm_smd_clk_match_table[] = { |
659 | { .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 }, | 721 | { .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 }, |
660 | { .compatible = "qcom,rpmcc-msm8974", .data = &rpm_clk_msm8974 }, | 722 | { .compatible = "qcom,rpmcc-msm8974", .data = &rpm_clk_msm8974 }, |
661 | { .compatible = "qcom,rpmcc-msm8996", .data = &rpm_clk_msm8996 }, | 723 | { .compatible = "qcom,rpmcc-msm8996", .data = &rpm_clk_msm8996 }, |
724 | { .compatible = "qcom,rpmcc-msm8998", .data = &rpm_clk_msm8998 }, | ||
662 | { .compatible = "qcom,rpmcc-qcs404", .data = &rpm_clk_qcs404 }, | 725 | { .compatible = "qcom,rpmcc-qcs404", .data = &rpm_clk_qcs404 }, |
663 | { } | 726 | { } |
664 | }; | 727 | }; |
diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c index 0a48ed56833b..a6b2f86112d8 100644 --- a/drivers/clk/qcom/common.c +++ b/drivers/clk/qcom/common.c | |||
@@ -231,6 +231,8 @@ int qcom_cc_really_probe(struct platform_device *pdev, | |||
231 | struct gdsc_desc *scd; | 231 | struct gdsc_desc *scd; |
232 | size_t num_clks = desc->num_clks; | 232 | size_t num_clks = desc->num_clks; |
233 | struct clk_regmap **rclks = desc->clks; | 233 | struct clk_regmap **rclks = desc->clks; |
234 | size_t num_clk_hws = desc->num_clk_hws; | ||
235 | struct clk_hw **clk_hws = desc->clk_hws; | ||
234 | 236 | ||
235 | cc = devm_kzalloc(dev, sizeof(*cc), GFP_KERNEL); | 237 | cc = devm_kzalloc(dev, sizeof(*cc), GFP_KERNEL); |
236 | if (!cc) | 238 | if (!cc) |
@@ -269,6 +271,12 @@ int qcom_cc_really_probe(struct platform_device *pdev, | |||
269 | 271 | ||
270 | qcom_cc_drop_protected(dev, cc); | 272 | qcom_cc_drop_protected(dev, cc); |
271 | 273 | ||
274 | for (i = 0; i < num_clk_hws; i++) { | ||
275 | ret = devm_clk_hw_register(dev, clk_hws[i]); | ||
276 | if (ret) | ||
277 | return ret; | ||
278 | } | ||
279 | |||
272 | for (i = 0; i < num_clks; i++) { | 280 | for (i = 0; i < num_clks; i++) { |
273 | if (!rclks[i]) | 281 | if (!rclks[i]) |
274 | continue; | 282 | continue; |
diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h index 4aa33ee70bae..1e2a8bdac55a 100644 --- a/drivers/clk/qcom/common.h +++ b/drivers/clk/qcom/common.h | |||
@@ -27,6 +27,8 @@ struct qcom_cc_desc { | |||
27 | size_t num_resets; | 27 | size_t num_resets; |
28 | struct gdsc **gdscs; | 28 | struct gdsc **gdscs; |
29 | size_t num_gdscs; | 29 | size_t num_gdscs; |
30 | struct clk_hw **clk_hws; | ||
31 | size_t num_clk_hws; | ||
30 | }; | 32 | }; |
31 | 33 | ||
32 | /** | 34 | /** |
diff --git a/drivers/clk/qcom/gcc-ipq8074.c b/drivers/clk/qcom/gcc-ipq8074.c index 505c6263141d..0e32892b438c 100644 --- a/drivers/clk/qcom/gcc-ipq8074.c +++ b/drivers/clk/qcom/gcc-ipq8074.c | |||
@@ -4715,18 +4715,12 @@ static const struct qcom_cc_desc gcc_ipq8074_desc = { | |||
4715 | .num_clks = ARRAY_SIZE(gcc_ipq8074_clks), | 4715 | .num_clks = ARRAY_SIZE(gcc_ipq8074_clks), |
4716 | .resets = gcc_ipq8074_resets, | 4716 | .resets = gcc_ipq8074_resets, |
4717 | .num_resets = ARRAY_SIZE(gcc_ipq8074_resets), | 4717 | .num_resets = ARRAY_SIZE(gcc_ipq8074_resets), |
4718 | .clk_hws = gcc_ipq8074_hws, | ||
4719 | .num_clk_hws = ARRAY_SIZE(gcc_ipq8074_hws), | ||
4718 | }; | 4720 | }; |
4719 | 4721 | ||
4720 | static int gcc_ipq8074_probe(struct platform_device *pdev) | 4722 | static int gcc_ipq8074_probe(struct platform_device *pdev) |
4721 | { | 4723 | { |
4722 | int ret, i; | ||
4723 | |||
4724 | for (i = 0; i < ARRAY_SIZE(gcc_ipq8074_hws); i++) { | ||
4725 | ret = devm_clk_hw_register(&pdev->dev, gcc_ipq8074_hws[i]); | ||
4726 | if (ret) | ||
4727 | return ret; | ||
4728 | } | ||
4729 | |||
4730 | return qcom_cc_probe(pdev, &gcc_ipq8074_desc); | 4724 | return qcom_cc_probe(pdev, &gcc_ipq8074_desc); |
4731 | } | 4725 | } |
4732 | 4726 | ||
diff --git a/drivers/clk/qcom/gcc-mdm9615.c b/drivers/clk/qcom/gcc-mdm9615.c index 849046fbed6d..8c6d93144b9c 100644 --- a/drivers/clk/qcom/gcc-mdm9615.c +++ b/drivers/clk/qcom/gcc-mdm9615.c | |||
@@ -1702,6 +1702,8 @@ static const struct qcom_cc_desc gcc_mdm9615_desc = { | |||
1702 | .num_clks = ARRAY_SIZE(gcc_mdm9615_clks), | 1702 | .num_clks = ARRAY_SIZE(gcc_mdm9615_clks), |
1703 | .resets = gcc_mdm9615_resets, | 1703 | .resets = gcc_mdm9615_resets, |
1704 | .num_resets = ARRAY_SIZE(gcc_mdm9615_resets), | 1704 | .num_resets = ARRAY_SIZE(gcc_mdm9615_resets), |
1705 | .clk_hws = gcc_mdm9615_hws, | ||
1706 | .num_clk_hws = ARRAY_SIZE(gcc_mdm9615_hws), | ||
1705 | }; | 1707 | }; |
1706 | 1708 | ||
1707 | static const struct of_device_id gcc_mdm9615_match_table[] = { | 1709 | static const struct of_device_id gcc_mdm9615_match_table[] = { |
@@ -1712,21 +1714,12 @@ MODULE_DEVICE_TABLE(of, gcc_mdm9615_match_table); | |||
1712 | 1714 | ||
1713 | static int gcc_mdm9615_probe(struct platform_device *pdev) | 1715 | static int gcc_mdm9615_probe(struct platform_device *pdev) |
1714 | { | 1716 | { |
1715 | struct device *dev = &pdev->dev; | ||
1716 | struct regmap *regmap; | 1717 | struct regmap *regmap; |
1717 | int ret; | ||
1718 | int i; | ||
1719 | 1718 | ||
1720 | regmap = qcom_cc_map(pdev, &gcc_mdm9615_desc); | 1719 | regmap = qcom_cc_map(pdev, &gcc_mdm9615_desc); |
1721 | if (IS_ERR(regmap)) | 1720 | if (IS_ERR(regmap)) |
1722 | return PTR_ERR(regmap); | 1721 | return PTR_ERR(regmap); |
1723 | 1722 | ||
1724 | for (i = 0; i < ARRAY_SIZE(gcc_mdm9615_hws); i++) { | ||
1725 | ret = devm_clk_hw_register(dev, gcc_mdm9615_hws[i]); | ||
1726 | if (ret) | ||
1727 | return ret; | ||
1728 | } | ||
1729 | |||
1730 | return qcom_cc_really_probe(pdev, &gcc_mdm9615_desc, regmap); | 1723 | return qcom_cc_really_probe(pdev, &gcc_mdm9615_desc, regmap); |
1731 | } | 1724 | } |
1732 | 1725 | ||
diff --git a/drivers/clk/qcom/gcc-msm8996.c b/drivers/clk/qcom/gcc-msm8996.c index 9d136172c27c..4632b9272b7f 100644 --- a/drivers/clk/qcom/gcc-msm8996.c +++ b/drivers/clk/qcom/gcc-msm8996.c | |||
@@ -3656,6 +3656,8 @@ static const struct qcom_cc_desc gcc_msm8996_desc = { | |||
3656 | .num_resets = ARRAY_SIZE(gcc_msm8996_resets), | 3656 | .num_resets = ARRAY_SIZE(gcc_msm8996_resets), |
3657 | .gdscs = gcc_msm8996_gdscs, | 3657 | .gdscs = gcc_msm8996_gdscs, |
3658 | .num_gdscs = ARRAY_SIZE(gcc_msm8996_gdscs), | 3658 | .num_gdscs = ARRAY_SIZE(gcc_msm8996_gdscs), |
3659 | .clk_hws = gcc_msm8996_hws, | ||
3660 | .num_clk_hws = ARRAY_SIZE(gcc_msm8996_hws), | ||
3659 | }; | 3661 | }; |
3660 | 3662 | ||
3661 | static const struct of_device_id gcc_msm8996_match_table[] = { | 3663 | static const struct of_device_id gcc_msm8996_match_table[] = { |
@@ -3666,8 +3668,6 @@ MODULE_DEVICE_TABLE(of, gcc_msm8996_match_table); | |||
3666 | 3668 | ||
3667 | static int gcc_msm8996_probe(struct platform_device *pdev) | 3669 | static int gcc_msm8996_probe(struct platform_device *pdev) |
3668 | { | 3670 | { |
3669 | struct device *dev = &pdev->dev; | ||
3670 | int i, ret; | ||
3671 | struct regmap *regmap; | 3671 | struct regmap *regmap; |
3672 | 3672 | ||
3673 | regmap = qcom_cc_map(pdev, &gcc_msm8996_desc); | 3673 | regmap = qcom_cc_map(pdev, &gcc_msm8996_desc); |
@@ -3680,12 +3680,6 @@ static int gcc_msm8996_probe(struct platform_device *pdev) | |||
3680 | */ | 3680 | */ |
3681 | regmap_update_bits(regmap, 0x52008, BIT(21), BIT(21)); | 3681 | regmap_update_bits(regmap, 0x52008, BIT(21), BIT(21)); |
3682 | 3682 | ||
3683 | for (i = 0; i < ARRAY_SIZE(gcc_msm8996_hws); i++) { | ||
3684 | ret = devm_clk_hw_register(dev, gcc_msm8996_hws[i]); | ||
3685 | if (ret) | ||
3686 | return ret; | ||
3687 | } | ||
3688 | |||
3689 | return qcom_cc_really_probe(pdev, &gcc_msm8996_desc, regmap); | 3683 | return qcom_cc_really_probe(pdev, &gcc_msm8996_desc, regmap); |
3690 | } | 3684 | } |
3691 | 3685 | ||
diff --git a/drivers/clk/qcom/gcc-msm8998.c b/drivers/clk/qcom/gcc-msm8998.c index 1b779396e04f..c240fba794c7 100644 --- a/drivers/clk/qcom/gcc-msm8998.c +++ b/drivers/clk/qcom/gcc-msm8998.c | |||
@@ -1112,6 +1112,7 @@ static struct clk_rcg2 ufs_axi_clk_src = { | |||
1112 | 1112 | ||
1113 | static const struct freq_tbl ftbl_usb30_master_clk_src[] = { | 1113 | static const struct freq_tbl ftbl_usb30_master_clk_src[] = { |
1114 | F(19200000, P_XO, 1, 0, 0), | 1114 | F(19200000, P_XO, 1, 0, 0), |
1115 | F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0), | ||
1115 | F(120000000, P_GPLL0_OUT_MAIN, 5, 0, 0), | 1116 | F(120000000, P_GPLL0_OUT_MAIN, 5, 0, 0), |
1116 | F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), | 1117 | F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), |
1117 | { } | 1118 | { } |
@@ -1189,6 +1190,7 @@ static struct clk_branch gcc_aggre1_ufs_axi_clk = { | |||
1189 | "ufs_axi_clk_src", | 1190 | "ufs_axi_clk_src", |
1190 | }, | 1191 | }, |
1191 | .num_parents = 1, | 1192 | .num_parents = 1, |
1193 | .flags = CLK_SET_RATE_PARENT, | ||
1192 | .ops = &clk_branch2_ops, | 1194 | .ops = &clk_branch2_ops, |
1193 | }, | 1195 | }, |
1194 | }, | 1196 | }, |
@@ -1206,6 +1208,7 @@ static struct clk_branch gcc_aggre1_usb3_axi_clk = { | |||
1206 | "usb30_master_clk_src", | 1208 | "usb30_master_clk_src", |
1207 | }, | 1209 | }, |
1208 | .num_parents = 1, | 1210 | .num_parents = 1, |
1211 | .flags = CLK_SET_RATE_PARENT, | ||
1209 | .ops = &clk_branch2_ops, | 1212 | .ops = &clk_branch2_ops, |
1210 | }, | 1213 | }, |
1211 | }, | 1214 | }, |
@@ -1288,6 +1291,7 @@ static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { | |||
1288 | "blsp1_qup1_i2c_apps_clk_src", | 1291 | "blsp1_qup1_i2c_apps_clk_src", |
1289 | }, | 1292 | }, |
1290 | .num_parents = 1, | 1293 | .num_parents = 1, |
1294 | .flags = CLK_SET_RATE_PARENT, | ||
1291 | .ops = &clk_branch2_ops, | 1295 | .ops = &clk_branch2_ops, |
1292 | }, | 1296 | }, |
1293 | }, | 1297 | }, |
@@ -1305,6 +1309,7 @@ static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { | |||
1305 | "blsp1_qup1_spi_apps_clk_src", | 1309 | "blsp1_qup1_spi_apps_clk_src", |
1306 | }, | 1310 | }, |
1307 | .num_parents = 1, | 1311 | .num_parents = 1, |
1312 | .flags = CLK_SET_RATE_PARENT, | ||
1308 | .ops = &clk_branch2_ops, | 1313 | .ops = &clk_branch2_ops, |
1309 | }, | 1314 | }, |
1310 | }, | 1315 | }, |
@@ -1322,6 +1327,7 @@ static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { | |||
1322 | "blsp1_qup2_i2c_apps_clk_src", | 1327 | "blsp1_qup2_i2c_apps_clk_src", |
1323 | }, | 1328 | }, |
1324 | .num_parents = 1, | 1329 | .num_parents = 1, |
1330 | .flags = CLK_SET_RATE_PARENT, | ||
1325 | .ops = &clk_branch2_ops, | 1331 | .ops = &clk_branch2_ops, |
1326 | }, | 1332 | }, |
1327 | }, | 1333 | }, |
@@ -1339,6 +1345,7 @@ static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { | |||
1339 | "blsp1_qup2_spi_apps_clk_src", | 1345 | "blsp1_qup2_spi_apps_clk_src", |
1340 | }, | 1346 | }, |
1341 | .num_parents = 1, | 1347 | .num_parents = 1, |
1348 | .flags = CLK_SET_RATE_PARENT, | ||
1342 | .ops = &clk_branch2_ops, | 1349 | .ops = &clk_branch2_ops, |
1343 | }, | 1350 | }, |
1344 | }, | 1351 | }, |
@@ -1356,6 +1363,7 @@ static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { | |||
1356 | "blsp1_qup3_i2c_apps_clk_src", | 1363 | "blsp1_qup3_i2c_apps_clk_src", |
1357 | }, | 1364 | }, |
1358 | .num_parents = 1, | 1365 | .num_parents = 1, |
1366 | .flags = CLK_SET_RATE_PARENT, | ||
1359 | .ops = &clk_branch2_ops, | 1367 | .ops = &clk_branch2_ops, |
1360 | }, | 1368 | }, |
1361 | }, | 1369 | }, |
@@ -1373,6 +1381,7 @@ static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { | |||
1373 | "blsp1_qup3_spi_apps_clk_src", | 1381 | "blsp1_qup3_spi_apps_clk_src", |
1374 | }, | 1382 | }, |
1375 | .num_parents = 1, | 1383 | .num_parents = 1, |
1384 | .flags = CLK_SET_RATE_PARENT, | ||
1376 | .ops = &clk_branch2_ops, | 1385 | .ops = &clk_branch2_ops, |
1377 | }, | 1386 | }, |
1378 | }, | 1387 | }, |
@@ -1390,6 +1399,7 @@ static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { | |||
1390 | "blsp1_qup4_i2c_apps_clk_src", | 1399 | "blsp1_qup4_i2c_apps_clk_src", |
1391 | }, | 1400 | }, |
1392 | .num_parents = 1, | 1401 | .num_parents = 1, |
1402 | .flags = CLK_SET_RATE_PARENT, | ||
1393 | .ops = &clk_branch2_ops, | 1403 | .ops = &clk_branch2_ops, |
1394 | }, | 1404 | }, |
1395 | }, | 1405 | }, |
@@ -1407,6 +1417,7 @@ static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { | |||
1407 | "blsp1_qup4_spi_apps_clk_src", | 1417 | "blsp1_qup4_spi_apps_clk_src", |
1408 | }, | 1418 | }, |
1409 | .num_parents = 1, | 1419 | .num_parents = 1, |
1420 | .flags = CLK_SET_RATE_PARENT, | ||
1410 | .ops = &clk_branch2_ops, | 1421 | .ops = &clk_branch2_ops, |
1411 | }, | 1422 | }, |
1412 | }, | 1423 | }, |
@@ -1424,6 +1435,7 @@ static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { | |||
1424 | "blsp1_qup5_i2c_apps_clk_src", | 1435 | "blsp1_qup5_i2c_apps_clk_src", |
1425 | }, | 1436 | }, |
1426 | .num_parents = 1, | 1437 | .num_parents = 1, |
1438 | .flags = CLK_SET_RATE_PARENT, | ||
1427 | .ops = &clk_branch2_ops, | 1439 | .ops = &clk_branch2_ops, |
1428 | }, | 1440 | }, |
1429 | }, | 1441 | }, |
@@ -1441,6 +1453,7 @@ static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { | |||
1441 | "blsp1_qup5_spi_apps_clk_src", | 1453 | "blsp1_qup5_spi_apps_clk_src", |
1442 | }, | 1454 | }, |
1443 | .num_parents = 1, | 1455 | .num_parents = 1, |
1456 | .flags = CLK_SET_RATE_PARENT, | ||
1444 | .ops = &clk_branch2_ops, | 1457 | .ops = &clk_branch2_ops, |
1445 | }, | 1458 | }, |
1446 | }, | 1459 | }, |
@@ -1458,6 +1471,7 @@ static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { | |||
1458 | "blsp1_qup6_i2c_apps_clk_src", | 1471 | "blsp1_qup6_i2c_apps_clk_src", |
1459 | }, | 1472 | }, |
1460 | .num_parents = 1, | 1473 | .num_parents = 1, |
1474 | .flags = CLK_SET_RATE_PARENT, | ||
1461 | .ops = &clk_branch2_ops, | 1475 | .ops = &clk_branch2_ops, |
1462 | }, | 1476 | }, |
1463 | }, | 1477 | }, |
@@ -1475,6 +1489,7 @@ static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { | |||
1475 | "blsp1_qup6_spi_apps_clk_src", | 1489 | "blsp1_qup6_spi_apps_clk_src", |
1476 | }, | 1490 | }, |
1477 | .num_parents = 1, | 1491 | .num_parents = 1, |
1492 | .flags = CLK_SET_RATE_PARENT, | ||
1478 | .ops = &clk_branch2_ops, | 1493 | .ops = &clk_branch2_ops, |
1479 | }, | 1494 | }, |
1480 | }, | 1495 | }, |
@@ -1505,6 +1520,7 @@ static struct clk_branch gcc_blsp1_uart1_apps_clk = { | |||
1505 | "blsp1_uart1_apps_clk_src", | 1520 | "blsp1_uart1_apps_clk_src", |
1506 | }, | 1521 | }, |
1507 | .num_parents = 1, | 1522 | .num_parents = 1, |
1523 | .flags = CLK_SET_RATE_PARENT, | ||
1508 | .ops = &clk_branch2_ops, | 1524 | .ops = &clk_branch2_ops, |
1509 | }, | 1525 | }, |
1510 | }, | 1526 | }, |
@@ -1522,6 +1538,7 @@ static struct clk_branch gcc_blsp1_uart2_apps_clk = { | |||
1522 | "blsp1_uart2_apps_clk_src", | 1538 | "blsp1_uart2_apps_clk_src", |
1523 | }, | 1539 | }, |
1524 | .num_parents = 1, | 1540 | .num_parents = 1, |
1541 | .flags = CLK_SET_RATE_PARENT, | ||
1525 | .ops = &clk_branch2_ops, | 1542 | .ops = &clk_branch2_ops, |
1526 | }, | 1543 | }, |
1527 | }, | 1544 | }, |
@@ -1539,6 +1556,7 @@ static struct clk_branch gcc_blsp1_uart3_apps_clk = { | |||
1539 | "blsp1_uart3_apps_clk_src", | 1556 | "blsp1_uart3_apps_clk_src", |
1540 | }, | 1557 | }, |
1541 | .num_parents = 1, | 1558 | .num_parents = 1, |
1559 | .flags = CLK_SET_RATE_PARENT, | ||
1542 | .ops = &clk_branch2_ops, | 1560 | .ops = &clk_branch2_ops, |
1543 | }, | 1561 | }, |
1544 | }, | 1562 | }, |
@@ -1569,6 +1587,7 @@ static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { | |||
1569 | "blsp2_qup1_i2c_apps_clk_src", | 1587 | "blsp2_qup1_i2c_apps_clk_src", |
1570 | }, | 1588 | }, |
1571 | .num_parents = 1, | 1589 | .num_parents = 1, |
1590 | .flags = CLK_SET_RATE_PARENT, | ||
1572 | .ops = &clk_branch2_ops, | 1591 | .ops = &clk_branch2_ops, |
1573 | }, | 1592 | }, |
1574 | }, | 1593 | }, |
@@ -1586,6 +1605,7 @@ static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { | |||
1586 | "blsp2_qup1_spi_apps_clk_src", | 1605 | "blsp2_qup1_spi_apps_clk_src", |
1587 | }, | 1606 | }, |
1588 | .num_parents = 1, | 1607 | .num_parents = 1, |
1608 | .flags = CLK_SET_RATE_PARENT, | ||
1589 | .ops = &clk_branch2_ops, | 1609 | .ops = &clk_branch2_ops, |
1590 | }, | 1610 | }, |
1591 | }, | 1611 | }, |
@@ -1603,6 +1623,7 @@ static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { | |||
1603 | "blsp2_qup2_i2c_apps_clk_src", | 1623 | "blsp2_qup2_i2c_apps_clk_src", |
1604 | }, | 1624 | }, |
1605 | .num_parents = 1, | 1625 | .num_parents = 1, |
1626 | .flags = CLK_SET_RATE_PARENT, | ||
1606 | .ops = &clk_branch2_ops, | 1627 | .ops = &clk_branch2_ops, |
1607 | }, | 1628 | }, |
1608 | }, | 1629 | }, |
@@ -1620,6 +1641,7 @@ static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { | |||
1620 | "blsp2_qup2_spi_apps_clk_src", | 1641 | "blsp2_qup2_spi_apps_clk_src", |
1621 | }, | 1642 | }, |
1622 | .num_parents = 1, | 1643 | .num_parents = 1, |
1644 | .flags = CLK_SET_RATE_PARENT, | ||
1623 | .ops = &clk_branch2_ops, | 1645 | .ops = &clk_branch2_ops, |
1624 | }, | 1646 | }, |
1625 | }, | 1647 | }, |
@@ -1637,6 +1659,7 @@ static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { | |||
1637 | "blsp2_qup3_i2c_apps_clk_src", | 1659 | "blsp2_qup3_i2c_apps_clk_src", |
1638 | }, | 1660 | }, |
1639 | .num_parents = 1, | 1661 | .num_parents = 1, |
1662 | .flags = CLK_SET_RATE_PARENT, | ||
1640 | .ops = &clk_branch2_ops, | 1663 | .ops = &clk_branch2_ops, |
1641 | }, | 1664 | }, |
1642 | }, | 1665 | }, |
@@ -1654,6 +1677,7 @@ static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { | |||
1654 | "blsp2_qup3_spi_apps_clk_src", | 1677 | "blsp2_qup3_spi_apps_clk_src", |
1655 | }, | 1678 | }, |
1656 | .num_parents = 1, | 1679 | .num_parents = 1, |
1680 | .flags = CLK_SET_RATE_PARENT, | ||
1657 | .ops = &clk_branch2_ops, | 1681 | .ops = &clk_branch2_ops, |
1658 | }, | 1682 | }, |
1659 | }, | 1683 | }, |
@@ -1671,6 +1695,7 @@ static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { | |||
1671 | "blsp2_qup4_i2c_apps_clk_src", | 1695 | "blsp2_qup4_i2c_apps_clk_src", |
1672 | }, | 1696 | }, |
1673 | .num_parents = 1, | 1697 | .num_parents = 1, |
1698 | .flags = CLK_SET_RATE_PARENT, | ||
1674 | .ops = &clk_branch2_ops, | 1699 | .ops = &clk_branch2_ops, |
1675 | }, | 1700 | }, |
1676 | }, | 1701 | }, |
@@ -1688,6 +1713,7 @@ static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { | |||
1688 | "blsp2_qup4_spi_apps_clk_src", | 1713 | "blsp2_qup4_spi_apps_clk_src", |
1689 | }, | 1714 | }, |
1690 | .num_parents = 1, | 1715 | .num_parents = 1, |
1716 | .flags = CLK_SET_RATE_PARENT, | ||
1691 | .ops = &clk_branch2_ops, | 1717 | .ops = &clk_branch2_ops, |
1692 | }, | 1718 | }, |
1693 | }, | 1719 | }, |
@@ -1705,6 +1731,7 @@ static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { | |||
1705 | "blsp2_qup5_i2c_apps_clk_src", | 1731 | "blsp2_qup5_i2c_apps_clk_src", |
1706 | }, | 1732 | }, |
1707 | .num_parents = 1, | 1733 | .num_parents = 1, |
1734 | .flags = CLK_SET_RATE_PARENT, | ||
1708 | .ops = &clk_branch2_ops, | 1735 | .ops = &clk_branch2_ops, |
1709 | }, | 1736 | }, |
1710 | }, | 1737 | }, |
@@ -1722,6 +1749,7 @@ static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { | |||
1722 | "blsp2_qup5_spi_apps_clk_src", | 1749 | "blsp2_qup5_spi_apps_clk_src", |
1723 | }, | 1750 | }, |
1724 | .num_parents = 1, | 1751 | .num_parents = 1, |
1752 | .flags = CLK_SET_RATE_PARENT, | ||
1725 | .ops = &clk_branch2_ops, | 1753 | .ops = &clk_branch2_ops, |
1726 | }, | 1754 | }, |
1727 | }, | 1755 | }, |
@@ -1739,6 +1767,7 @@ static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { | |||
1739 | "blsp2_qup6_i2c_apps_clk_src", | 1767 | "blsp2_qup6_i2c_apps_clk_src", |
1740 | }, | 1768 | }, |
1741 | .num_parents = 1, | 1769 | .num_parents = 1, |
1770 | .flags = CLK_SET_RATE_PARENT, | ||
1742 | .ops = &clk_branch2_ops, | 1771 | .ops = &clk_branch2_ops, |
1743 | }, | 1772 | }, |
1744 | }, | 1773 | }, |
@@ -1756,6 +1785,7 @@ static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { | |||
1756 | "blsp2_qup6_spi_apps_clk_src", | 1785 | "blsp2_qup6_spi_apps_clk_src", |
1757 | }, | 1786 | }, |
1758 | .num_parents = 1, | 1787 | .num_parents = 1, |
1788 | .flags = CLK_SET_RATE_PARENT, | ||
1759 | .ops = &clk_branch2_ops, | 1789 | .ops = &clk_branch2_ops, |
1760 | }, | 1790 | }, |
1761 | }, | 1791 | }, |
@@ -1786,6 +1816,7 @@ static struct clk_branch gcc_blsp2_uart1_apps_clk = { | |||
1786 | "blsp2_uart1_apps_clk_src", | 1816 | "blsp2_uart1_apps_clk_src", |
1787 | }, | 1817 | }, |
1788 | .num_parents = 1, | 1818 | .num_parents = 1, |
1819 | .flags = CLK_SET_RATE_PARENT, | ||
1789 | .ops = &clk_branch2_ops, | 1820 | .ops = &clk_branch2_ops, |
1790 | }, | 1821 | }, |
1791 | }, | 1822 | }, |
@@ -1803,6 +1834,7 @@ static struct clk_branch gcc_blsp2_uart2_apps_clk = { | |||
1803 | "blsp2_uart2_apps_clk_src", | 1834 | "blsp2_uart2_apps_clk_src", |
1804 | }, | 1835 | }, |
1805 | .num_parents = 1, | 1836 | .num_parents = 1, |
1837 | .flags = CLK_SET_RATE_PARENT, | ||
1806 | .ops = &clk_branch2_ops, | 1838 | .ops = &clk_branch2_ops, |
1807 | }, | 1839 | }, |
1808 | }, | 1840 | }, |
@@ -1820,6 +1852,7 @@ static struct clk_branch gcc_blsp2_uart3_apps_clk = { | |||
1820 | "blsp2_uart3_apps_clk_src", | 1852 | "blsp2_uart3_apps_clk_src", |
1821 | }, | 1853 | }, |
1822 | .num_parents = 1, | 1854 | .num_parents = 1, |
1855 | .flags = CLK_SET_RATE_PARENT, | ||
1823 | .ops = &clk_branch2_ops, | 1856 | .ops = &clk_branch2_ops, |
1824 | }, | 1857 | }, |
1825 | }, | 1858 | }, |
@@ -1837,6 +1870,7 @@ static struct clk_branch gcc_cfg_noc_usb3_axi_clk = { | |||
1837 | "usb30_master_clk_src", | 1870 | "usb30_master_clk_src", |
1838 | }, | 1871 | }, |
1839 | .num_parents = 1, | 1872 | .num_parents = 1, |
1873 | .flags = CLK_SET_RATE_PARENT, | ||
1840 | .ops = &clk_branch2_ops, | 1874 | .ops = &clk_branch2_ops, |
1841 | }, | 1875 | }, |
1842 | }, | 1876 | }, |
@@ -1854,6 +1888,7 @@ static struct clk_branch gcc_gp1_clk = { | |||
1854 | "gp1_clk_src", | 1888 | "gp1_clk_src", |
1855 | }, | 1889 | }, |
1856 | .num_parents = 1, | 1890 | .num_parents = 1, |
1891 | .flags = CLK_SET_RATE_PARENT, | ||
1857 | .ops = &clk_branch2_ops, | 1892 | .ops = &clk_branch2_ops, |
1858 | }, | 1893 | }, |
1859 | }, | 1894 | }, |
@@ -1871,6 +1906,7 @@ static struct clk_branch gcc_gp2_clk = { | |||
1871 | "gp2_clk_src", | 1906 | "gp2_clk_src", |
1872 | }, | 1907 | }, |
1873 | .num_parents = 1, | 1908 | .num_parents = 1, |
1909 | .flags = CLK_SET_RATE_PARENT, | ||
1874 | .ops = &clk_branch2_ops, | 1910 | .ops = &clk_branch2_ops, |
1875 | }, | 1911 | }, |
1876 | }, | 1912 | }, |
@@ -1888,6 +1924,7 @@ static struct clk_branch gcc_gp3_clk = { | |||
1888 | "gp3_clk_src", | 1924 | "gp3_clk_src", |
1889 | }, | 1925 | }, |
1890 | .num_parents = 1, | 1926 | .num_parents = 1, |
1927 | .flags = CLK_SET_RATE_PARENT, | ||
1891 | .ops = &clk_branch2_ops, | 1928 | .ops = &clk_branch2_ops, |
1892 | }, | 1929 | }, |
1893 | }, | 1930 | }, |
@@ -1957,6 +1994,7 @@ static struct clk_branch gcc_hmss_ahb_clk = { | |||
1957 | "hmss_ahb_clk_src", | 1994 | "hmss_ahb_clk_src", |
1958 | }, | 1995 | }, |
1959 | .num_parents = 1, | 1996 | .num_parents = 1, |
1997 | .flags = CLK_SET_RATE_PARENT, | ||
1960 | .ops = &clk_branch2_ops, | 1998 | .ops = &clk_branch2_ops, |
1961 | }, | 1999 | }, |
1962 | }, | 2000 | }, |
@@ -1987,6 +2025,7 @@ static struct clk_branch gcc_hmss_rbcpr_clk = { | |||
1987 | "hmss_rbcpr_clk_src", | 2025 | "hmss_rbcpr_clk_src", |
1988 | }, | 2026 | }, |
1989 | .num_parents = 1, | 2027 | .num_parents = 1, |
2028 | .flags = CLK_SET_RATE_PARENT, | ||
1990 | .ops = &clk_branch2_ops, | 2029 | .ops = &clk_branch2_ops, |
1991 | }, | 2030 | }, |
1992 | }, | 2031 | }, |
@@ -2088,6 +2127,7 @@ static struct clk_branch gcc_pcie_0_aux_clk = { | |||
2088 | "pcie_aux_clk_src", | 2127 | "pcie_aux_clk_src", |
2089 | }, | 2128 | }, |
2090 | .num_parents = 1, | 2129 | .num_parents = 1, |
2130 | .flags = CLK_SET_RATE_PARENT, | ||
2091 | .ops = &clk_branch2_ops, | 2131 | .ops = &clk_branch2_ops, |
2092 | }, | 2132 | }, |
2093 | }, | 2133 | }, |
@@ -2157,6 +2197,7 @@ static struct clk_branch gcc_pcie_phy_aux_clk = { | |||
2157 | "pcie_aux_clk_src", | 2197 | "pcie_aux_clk_src", |
2158 | }, | 2198 | }, |
2159 | .num_parents = 1, | 2199 | .num_parents = 1, |
2200 | .flags = CLK_SET_RATE_PARENT, | ||
2160 | .ops = &clk_branch2_ops, | 2201 | .ops = &clk_branch2_ops, |
2161 | }, | 2202 | }, |
2162 | }, | 2203 | }, |
@@ -2174,6 +2215,7 @@ static struct clk_branch gcc_pdm2_clk = { | |||
2174 | "pdm2_clk_src", | 2215 | "pdm2_clk_src", |
2175 | }, | 2216 | }, |
2176 | .num_parents = 1, | 2217 | .num_parents = 1, |
2218 | .flags = CLK_SET_RATE_PARENT, | ||
2177 | .ops = &clk_branch2_ops, | 2219 | .ops = &clk_branch2_ops, |
2178 | }, | 2220 | }, |
2179 | }, | 2221 | }, |
@@ -2243,6 +2285,7 @@ static struct clk_branch gcc_sdcc2_apps_clk = { | |||
2243 | "sdcc2_apps_clk_src", | 2285 | "sdcc2_apps_clk_src", |
2244 | }, | 2286 | }, |
2245 | .num_parents = 1, | 2287 | .num_parents = 1, |
2288 | .flags = CLK_SET_RATE_PARENT, | ||
2246 | .ops = &clk_branch2_ops, | 2289 | .ops = &clk_branch2_ops, |
2247 | }, | 2290 | }, |
2248 | }, | 2291 | }, |
@@ -2273,6 +2316,7 @@ static struct clk_branch gcc_sdcc4_apps_clk = { | |||
2273 | "sdcc4_apps_clk_src", | 2316 | "sdcc4_apps_clk_src", |
2274 | }, | 2317 | }, |
2275 | .num_parents = 1, | 2318 | .num_parents = 1, |
2319 | .flags = CLK_SET_RATE_PARENT, | ||
2276 | .ops = &clk_branch2_ops, | 2320 | .ops = &clk_branch2_ops, |
2277 | }, | 2321 | }, |
2278 | }, | 2322 | }, |
@@ -2316,6 +2360,7 @@ static struct clk_branch gcc_tsif_ref_clk = { | |||
2316 | "tsif_ref_clk_src", | 2360 | "tsif_ref_clk_src", |
2317 | }, | 2361 | }, |
2318 | .num_parents = 1, | 2362 | .num_parents = 1, |
2363 | .flags = CLK_SET_RATE_PARENT, | ||
2319 | .ops = &clk_branch2_ops, | 2364 | .ops = &clk_branch2_ops, |
2320 | }, | 2365 | }, |
2321 | }, | 2366 | }, |
@@ -2346,6 +2391,7 @@ static struct clk_branch gcc_ufs_axi_clk = { | |||
2346 | "ufs_axi_clk_src", | 2391 | "ufs_axi_clk_src", |
2347 | }, | 2392 | }, |
2348 | .num_parents = 1, | 2393 | .num_parents = 1, |
2394 | .flags = CLK_SET_RATE_PARENT, | ||
2349 | .ops = &clk_branch2_ops, | 2395 | .ops = &clk_branch2_ops, |
2350 | }, | 2396 | }, |
2351 | }, | 2397 | }, |
@@ -2441,6 +2487,7 @@ static struct clk_branch gcc_usb30_master_clk = { | |||
2441 | "usb30_master_clk_src", | 2487 | "usb30_master_clk_src", |
2442 | }, | 2488 | }, |
2443 | .num_parents = 1, | 2489 | .num_parents = 1, |
2490 | .flags = CLK_SET_RATE_PARENT, | ||
2444 | .ops = &clk_branch2_ops, | 2491 | .ops = &clk_branch2_ops, |
2445 | }, | 2492 | }, |
2446 | }, | 2493 | }, |
@@ -2458,6 +2505,7 @@ static struct clk_branch gcc_usb30_mock_utmi_clk = { | |||
2458 | "usb30_mock_utmi_clk_src", | 2505 | "usb30_mock_utmi_clk_src", |
2459 | }, | 2506 | }, |
2460 | .num_parents = 1, | 2507 | .num_parents = 1, |
2508 | .flags = CLK_SET_RATE_PARENT, | ||
2461 | .ops = &clk_branch2_ops, | 2509 | .ops = &clk_branch2_ops, |
2462 | }, | 2510 | }, |
2463 | }, | 2511 | }, |
@@ -2488,6 +2536,7 @@ static struct clk_branch gcc_usb3_phy_aux_clk = { | |||
2488 | "usb3_phy_aux_clk_src", | 2536 | "usb3_phy_aux_clk_src", |
2489 | }, | 2537 | }, |
2490 | .num_parents = 1, | 2538 | .num_parents = 1, |
2539 | .flags = CLK_SET_RATE_PARENT, | ||
2491 | .ops = &clk_branch2_ops, | 2540 | .ops = &clk_branch2_ops, |
2492 | }, | 2541 | }, |
2493 | }, | 2542 | }, |
@@ -2495,7 +2544,7 @@ static struct clk_branch gcc_usb3_phy_aux_clk = { | |||
2495 | 2544 | ||
2496 | static struct clk_branch gcc_usb3_phy_pipe_clk = { | 2545 | static struct clk_branch gcc_usb3_phy_pipe_clk = { |
2497 | .halt_reg = 0x50004, | 2546 | .halt_reg = 0x50004, |
2498 | .halt_check = BRANCH_HALT, | 2547 | .halt_check = BRANCH_HALT_SKIP, |
2499 | .clkr = { | 2548 | .clkr = { |
2500 | .enable_reg = 0x50004, | 2549 | .enable_reg = 0x50004, |
2501 | .enable_mask = BIT(0), | 2550 | .enable_mask = BIT(0), |
@@ -2910,6 +2959,10 @@ static const struct regmap_config gcc_msm8998_regmap_config = { | |||
2910 | .fast_io = true, | 2959 | .fast_io = true, |
2911 | }; | 2960 | }; |
2912 | 2961 | ||
2962 | static struct clk_hw *gcc_msm8998_hws[] = { | ||
2963 | &xo.hw, | ||
2964 | }; | ||
2965 | |||
2913 | static const struct qcom_cc_desc gcc_msm8998_desc = { | 2966 | static const struct qcom_cc_desc gcc_msm8998_desc = { |
2914 | .config = &gcc_msm8998_regmap_config, | 2967 | .config = &gcc_msm8998_regmap_config, |
2915 | .clks = gcc_msm8998_clocks, | 2968 | .clks = gcc_msm8998_clocks, |
@@ -2918,6 +2971,8 @@ static const struct qcom_cc_desc gcc_msm8998_desc = { | |||
2918 | .num_resets = ARRAY_SIZE(gcc_msm8998_resets), | 2971 | .num_resets = ARRAY_SIZE(gcc_msm8998_resets), |
2919 | .gdscs = gcc_msm8998_gdscs, | 2972 | .gdscs = gcc_msm8998_gdscs, |
2920 | .num_gdscs = ARRAY_SIZE(gcc_msm8998_gdscs), | 2973 | .num_gdscs = ARRAY_SIZE(gcc_msm8998_gdscs), |
2974 | .clk_hws = gcc_msm8998_hws, | ||
2975 | .num_clk_hws = ARRAY_SIZE(gcc_msm8998_hws), | ||
2921 | }; | 2976 | }; |
2922 | 2977 | ||
2923 | static int gcc_msm8998_probe(struct platform_device *pdev) | 2978 | static int gcc_msm8998_probe(struct platform_device *pdev) |
@@ -2937,10 +2992,6 @@ static int gcc_msm8998_probe(struct platform_device *pdev) | |||
2937 | if (ret) | 2992 | if (ret) |
2938 | return ret; | 2993 | return ret; |
2939 | 2994 | ||
2940 | ret = devm_clk_hw_register(&pdev->dev, &xo.hw); | ||
2941 | if (ret) | ||
2942 | return ret; | ||
2943 | |||
2944 | return qcom_cc_really_probe(pdev, &gcc_msm8998_desc, regmap); | 2995 | return qcom_cc_really_probe(pdev, &gcc_msm8998_desc, regmap); |
2945 | } | 2996 | } |
2946 | 2997 | ||
diff --git a/drivers/clk/qcom/gcc-qcs404.c b/drivers/clk/qcom/gcc-qcs404.c index 493e055299b4..5a62f64ada93 100644 --- a/drivers/clk/qcom/gcc-qcs404.c +++ b/drivers/clk/qcom/gcc-qcs404.c | |||
@@ -2693,6 +2693,8 @@ static const struct qcom_cc_desc gcc_qcs404_desc = { | |||
2693 | .num_clks = ARRAY_SIZE(gcc_qcs404_clocks), | 2693 | .num_clks = ARRAY_SIZE(gcc_qcs404_clocks), |
2694 | .resets = gcc_qcs404_resets, | 2694 | .resets = gcc_qcs404_resets, |
2695 | .num_resets = ARRAY_SIZE(gcc_qcs404_resets), | 2695 | .num_resets = ARRAY_SIZE(gcc_qcs404_resets), |
2696 | .clk_hws = gcc_qcs404_hws, | ||
2697 | .num_clk_hws = ARRAY_SIZE(gcc_qcs404_hws), | ||
2696 | }; | 2698 | }; |
2697 | 2699 | ||
2698 | static const struct of_device_id gcc_qcs404_match_table[] = { | 2700 | static const struct of_device_id gcc_qcs404_match_table[] = { |
@@ -2704,7 +2706,6 @@ MODULE_DEVICE_TABLE(of, gcc_qcs404_match_table); | |||
2704 | static int gcc_qcs404_probe(struct platform_device *pdev) | 2706 | static int gcc_qcs404_probe(struct platform_device *pdev) |
2705 | { | 2707 | { |
2706 | struct regmap *regmap; | 2708 | struct regmap *regmap; |
2707 | int ret, i; | ||
2708 | 2709 | ||
2709 | regmap = qcom_cc_map(pdev, &gcc_qcs404_desc); | 2710 | regmap = qcom_cc_map(pdev, &gcc_qcs404_desc); |
2710 | if (IS_ERR(regmap)) | 2711 | if (IS_ERR(regmap)) |
@@ -2712,12 +2713,6 @@ static int gcc_qcs404_probe(struct platform_device *pdev) | |||
2712 | 2713 | ||
2713 | clk_alpha_pll_configure(&gpll3_out_main, regmap, &gpll3_config); | 2714 | clk_alpha_pll_configure(&gpll3_out_main, regmap, &gpll3_config); |
2714 | 2715 | ||
2715 | for (i = 0; i < ARRAY_SIZE(gcc_qcs404_hws); i++) { | ||
2716 | ret = devm_clk_hw_register(&pdev->dev, gcc_qcs404_hws[i]); | ||
2717 | if (ret) | ||
2718 | return ret; | ||
2719 | } | ||
2720 | |||
2721 | return qcom_cc_really_probe(pdev, &gcc_qcs404_desc, regmap); | 2716 | return qcom_cc_really_probe(pdev, &gcc_qcs404_desc, regmap); |
2722 | } | 2717 | } |
2723 | 2718 | ||
diff --git a/drivers/clk/qcom/gcc-sdm660.c b/drivers/clk/qcom/gcc-sdm660.c index ba239ea4c842..8827db23066f 100644 --- a/drivers/clk/qcom/gcc-sdm660.c +++ b/drivers/clk/qcom/gcc-sdm660.c | |||
@@ -2420,6 +2420,8 @@ static const struct qcom_cc_desc gcc_sdm660_desc = { | |||
2420 | .num_resets = ARRAY_SIZE(gcc_sdm660_resets), | 2420 | .num_resets = ARRAY_SIZE(gcc_sdm660_resets), |
2421 | .gdscs = gcc_sdm660_gdscs, | 2421 | .gdscs = gcc_sdm660_gdscs, |
2422 | .num_gdscs = ARRAY_SIZE(gcc_sdm660_gdscs), | 2422 | .num_gdscs = ARRAY_SIZE(gcc_sdm660_gdscs), |
2423 | .clk_hws = gcc_sdm660_hws, | ||
2424 | .num_clk_hws = ARRAY_SIZE(gcc_sdm660_hws), | ||
2423 | }; | 2425 | }; |
2424 | 2426 | ||
2425 | static const struct of_device_id gcc_sdm660_match_table[] = { | 2427 | static const struct of_device_id gcc_sdm660_match_table[] = { |
@@ -2431,7 +2433,7 @@ MODULE_DEVICE_TABLE(of, gcc_sdm660_match_table); | |||
2431 | 2433 | ||
2432 | static int gcc_sdm660_probe(struct platform_device *pdev) | 2434 | static int gcc_sdm660_probe(struct platform_device *pdev) |
2433 | { | 2435 | { |
2434 | int i, ret; | 2436 | int ret; |
2435 | struct regmap *regmap; | 2437 | struct regmap *regmap; |
2436 | 2438 | ||
2437 | regmap = qcom_cc_map(pdev, &gcc_sdm660_desc); | 2439 | regmap = qcom_cc_map(pdev, &gcc_sdm660_desc); |
@@ -2446,13 +2448,6 @@ static int gcc_sdm660_probe(struct platform_device *pdev) | |||
2446 | if (ret) | 2448 | if (ret) |
2447 | return ret; | 2449 | return ret; |
2448 | 2450 | ||
2449 | /* Register the hws */ | ||
2450 | for (i = 0; i < ARRAY_SIZE(gcc_sdm660_hws); i++) { | ||
2451 | ret = devm_clk_hw_register(&pdev->dev, gcc_sdm660_hws[i]); | ||
2452 | if (ret) | ||
2453 | return ret; | ||
2454 | } | ||
2455 | |||
2456 | return qcom_cc_really_probe(pdev, &gcc_sdm660_desc, regmap); | 2451 | return qcom_cc_really_probe(pdev, &gcc_sdm660_desc, regmap); |
2457 | } | 2452 | } |
2458 | 2453 | ||
diff --git a/drivers/clk/qcom/mmcc-msm8996.c b/drivers/clk/qcom/mmcc-msm8996.c index 7d4ee109435c..7235510eac94 100644 --- a/drivers/clk/qcom/mmcc-msm8996.c +++ b/drivers/clk/qcom/mmcc-msm8996.c | |||
@@ -3347,6 +3347,8 @@ static const struct qcom_cc_desc mmcc_msm8996_desc = { | |||
3347 | .num_resets = ARRAY_SIZE(mmcc_msm8996_resets), | 3347 | .num_resets = ARRAY_SIZE(mmcc_msm8996_resets), |
3348 | .gdscs = mmcc_msm8996_gdscs, | 3348 | .gdscs = mmcc_msm8996_gdscs, |
3349 | .num_gdscs = ARRAY_SIZE(mmcc_msm8996_gdscs), | 3349 | .num_gdscs = ARRAY_SIZE(mmcc_msm8996_gdscs), |
3350 | .clk_hws = mmcc_msm8996_hws, | ||
3351 | .num_clk_hws = ARRAY_SIZE(mmcc_msm8996_hws), | ||
3350 | }; | 3352 | }; |
3351 | 3353 | ||
3352 | static const struct of_device_id mmcc_msm8996_match_table[] = { | 3354 | static const struct of_device_id mmcc_msm8996_match_table[] = { |
@@ -3357,8 +3359,6 @@ MODULE_DEVICE_TABLE(of, mmcc_msm8996_match_table); | |||
3357 | 3359 | ||
3358 | static int mmcc_msm8996_probe(struct platform_device *pdev) | 3360 | static int mmcc_msm8996_probe(struct platform_device *pdev) |
3359 | { | 3361 | { |
3360 | struct device *dev = &pdev->dev; | ||
3361 | int i, ret; | ||
3362 | struct regmap *regmap; | 3362 | struct regmap *regmap; |
3363 | 3363 | ||
3364 | regmap = qcom_cc_map(pdev, &mmcc_msm8996_desc); | 3364 | regmap = qcom_cc_map(pdev, &mmcc_msm8996_desc); |
@@ -3370,12 +3370,6 @@ static int mmcc_msm8996_probe(struct platform_device *pdev) | |||
3370 | /* Disable the NoC FSM for mmss_mmagic_cfg_ahb_clk */ | 3370 | /* Disable the NoC FSM for mmss_mmagic_cfg_ahb_clk */ |
3371 | regmap_update_bits(regmap, 0x5054, BIT(15), 0); | 3371 | regmap_update_bits(regmap, 0x5054, BIT(15), 0); |
3372 | 3372 | ||
3373 | for (i = 0; i < ARRAY_SIZE(mmcc_msm8996_hws); i++) { | ||
3374 | ret = devm_clk_hw_register(dev, mmcc_msm8996_hws[i]); | ||
3375 | if (ret) | ||
3376 | return ret; | ||
3377 | } | ||
3378 | |||
3379 | return qcom_cc_really_probe(pdev, &mmcc_msm8996_desc, regmap); | 3373 | return qcom_cc_really_probe(pdev, &mmcc_msm8996_desc, regmap); |
3380 | } | 3374 | } |
3381 | 3375 | ||
diff --git a/drivers/clk/tegra/clk-dfll.c b/drivers/clk/tegra/clk-dfll.c index 609e363dabf8..7ec752ed3499 100644 --- a/drivers/clk/tegra/clk-dfll.c +++ b/drivers/clk/tegra/clk-dfll.c | |||
@@ -1112,8 +1112,8 @@ static int attr_enable_set(void *data, u64 val) | |||
1112 | 1112 | ||
1113 | return val ? dfll_enable(td) : dfll_disable(td); | 1113 | return val ? dfll_enable(td) : dfll_disable(td); |
1114 | } | 1114 | } |
1115 | DEFINE_SIMPLE_ATTRIBUTE(enable_fops, attr_enable_get, attr_enable_set, | 1115 | DEFINE_DEBUGFS_ATTRIBUTE(enable_fops, attr_enable_get, attr_enable_set, |
1116 | "%llu\n"); | 1116 | "%llu\n"); |
1117 | 1117 | ||
1118 | static int attr_lock_get(void *data, u64 *val) | 1118 | static int attr_lock_get(void *data, u64 *val) |
1119 | { | 1119 | { |
@@ -1129,8 +1129,7 @@ static int attr_lock_set(void *data, u64 val) | |||
1129 | 1129 | ||
1130 | return val ? dfll_lock(td) : dfll_unlock(td); | 1130 | return val ? dfll_lock(td) : dfll_unlock(td); |
1131 | } | 1131 | } |
1132 | DEFINE_SIMPLE_ATTRIBUTE(lock_fops, attr_lock_get, attr_lock_set, | 1132 | DEFINE_DEBUGFS_ATTRIBUTE(lock_fops, attr_lock_get, attr_lock_set, "%llu\n"); |
1133 | "%llu\n"); | ||
1134 | 1133 | ||
1135 | static int attr_rate_get(void *data, u64 *val) | 1134 | static int attr_rate_get(void *data, u64 *val) |
1136 | { | 1135 | { |
@@ -1147,7 +1146,7 @@ static int attr_rate_set(void *data, u64 val) | |||
1147 | 1146 | ||
1148 | return dfll_request_rate(td, val); | 1147 | return dfll_request_rate(td, val); |
1149 | } | 1148 | } |
1150 | DEFINE_SIMPLE_ATTRIBUTE(rate_fops, attr_rate_get, attr_rate_set, "%llu\n"); | 1149 | DEFINE_DEBUGFS_ATTRIBUTE(rate_fops, attr_rate_get, attr_rate_set, "%llu\n"); |
1151 | 1150 | ||
1152 | static int attr_registers_show(struct seq_file *s, void *data) | 1151 | static int attr_registers_show(struct seq_file *s, void *data) |
1153 | { | 1152 | { |
@@ -1196,10 +1195,11 @@ static void dfll_debug_init(struct tegra_dfll *td) | |||
1196 | root = debugfs_create_dir("tegra_dfll_fcpu", NULL); | 1195 | root = debugfs_create_dir("tegra_dfll_fcpu", NULL); |
1197 | td->debugfs_dir = root; | 1196 | td->debugfs_dir = root; |
1198 | 1197 | ||
1199 | debugfs_create_file("enable", S_IRUGO | S_IWUSR, root, td, &enable_fops); | 1198 | debugfs_create_file_unsafe("enable", 0644, root, td, |
1200 | debugfs_create_file("lock", S_IRUGO, root, td, &lock_fops); | 1199 | &enable_fops); |
1201 | debugfs_create_file("rate", S_IRUGO, root, td, &rate_fops); | 1200 | debugfs_create_file_unsafe("lock", 0444, root, td, &lock_fops); |
1202 | debugfs_create_file("registers", S_IRUGO, root, td, &attr_registers_fops); | 1201 | debugfs_create_file_unsafe("rate", 0444, root, td, &rate_fops); |
1202 | debugfs_create_file("registers", 0444, root, td, &attr_registers_fops); | ||
1203 | } | 1203 | } |
1204 | 1204 | ||
1205 | #else | 1205 | #else |
diff --git a/drivers/clk/x86/clk-lpt.c b/drivers/clk/x86/clk-lpt.c index 6b40eb89ae19..68bd3abaef2c 100644 --- a/drivers/clk/x86/clk-lpt.c +++ b/drivers/clk/x86/clk-lpt.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/clk-provider.h> | 13 | #include <linux/clk-provider.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | #include <linux/platform_data/clk-lpss.h> | 16 | #include <linux/platform_data/x86/clk-lpss.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | 18 | ||
19 | static int lpt_clk_probe(struct platform_device *pdev) | 19 | static int lpt_clk_probe(struct platform_device *pdev) |
diff --git a/include/dt-bindings/clock/qcom,rpmcc.h b/include/dt-bindings/clock/qcom,rpmcc.h index 3658b0c14966..ede93a0ca156 100644 --- a/include/dt-bindings/clock/qcom,rpmcc.h +++ b/include/dt-bindings/clock/qcom,rpmcc.h | |||
@@ -127,5 +127,15 @@ | |||
127 | #define RPM_SMD_BIMC_GPU_A_CLK 77 | 127 | #define RPM_SMD_BIMC_GPU_A_CLK 77 |
128 | #define RPM_SMD_QPIC_CLK 78 | 128 | #define RPM_SMD_QPIC_CLK 78 |
129 | #define RPM_SMD_QPIC_CLK_A 79 | 129 | #define RPM_SMD_QPIC_CLK_A 79 |
130 | #define RPM_SMD_LN_BB_CLK1 80 | ||
131 | #define RPM_SMD_LN_BB_CLK1_A 81 | ||
132 | #define RPM_SMD_LN_BB_CLK2 82 | ||
133 | #define RPM_SMD_LN_BB_CLK2_A 83 | ||
134 | #define RPM_SMD_LN_BB_CLK3_PIN 84 | ||
135 | #define RPM_SMD_LN_BB_CLK3_A_PIN 85 | ||
136 | #define RPM_SMD_RF_CLK3 86 | ||
137 | #define RPM_SMD_RF_CLK3_A 87 | ||
138 | #define RPM_SMD_RF_CLK3_PIN 88 | ||
139 | #define RPM_SMD_RF_CLK3_A_PIN 89 | ||
130 | 140 | ||
131 | #endif | 141 | #endif |
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index e443fa9fa859..b7cf80a71293 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h | |||
@@ -792,6 +792,9 @@ unsigned int __clk_get_enable_count(struct clk *clk); | |||
792 | unsigned long clk_hw_get_rate(const struct clk_hw *hw); | 792 | unsigned long clk_hw_get_rate(const struct clk_hw *hw); |
793 | unsigned long __clk_get_flags(struct clk *clk); | 793 | unsigned long __clk_get_flags(struct clk *clk); |
794 | unsigned long clk_hw_get_flags(const struct clk_hw *hw); | 794 | unsigned long clk_hw_get_flags(const struct clk_hw *hw); |
795 | #define clk_hw_can_set_rate_parent(hw) \ | ||
796 | (clk_hw_get_flags((hw)) & CLK_SET_RATE_PARENT) | ||
797 | |||
795 | bool clk_hw_is_prepared(const struct clk_hw *hw); | 798 | bool clk_hw_is_prepared(const struct clk_hw *hw); |
796 | bool clk_hw_rate_is_protected(const struct clk_hw *hw); | 799 | bool clk_hw_rate_is_protected(const struct clk_hw *hw); |
797 | bool clk_hw_is_enabled(const struct clk_hw *hw); | 800 | bool clk_hw_is_enabled(const struct clk_hw *hw); |
diff --git a/include/linux/platform_data/clk-lpss.h b/include/linux/platform_data/x86/clk-lpss.h index 23901992b9dd..23901992b9dd 100644 --- a/include/linux/platform_data/clk-lpss.h +++ b/include/linux/platform_data/x86/clk-lpss.h | |||