summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/clock/qcom,rpmcc.txt1
-rw-r--r--drivers/acpi/acpi_lpss.c2
-rw-r--r--drivers/clk/clk-fractional-divider.c2
-rw-r--r--drivers/clk/clk-qoriq.c4
-rw-r--r--drivers/clk/mediatek/clk-mt2712.c1
-rw-r--r--drivers/clk/qcom/clk-smd-rpm.c63
-rw-r--r--drivers/clk/qcom/common.c8
-rw-r--r--drivers/clk/qcom/common.h2
-rw-r--r--drivers/clk/qcom/gcc-ipq8074.c10
-rw-r--r--drivers/clk/qcom/gcc-mdm9615.c11
-rw-r--r--drivers/clk/qcom/gcc-msm8996.c10
-rw-r--r--drivers/clk/qcom/gcc-msm8998.c61
-rw-r--r--drivers/clk/qcom/gcc-qcs404.c9
-rw-r--r--drivers/clk/qcom/gcc-sdm660.c11
-rw-r--r--drivers/clk/qcom/mmcc-msm8996.c10
-rw-r--r--drivers/clk/tegra/clk-dfll.c18
-rw-r--r--drivers/clk/x86/clk-lpt.c2
-rw-r--r--include/dt-bindings/clock/qcom,rpmcc.h10
-rw-r--r--include/linux/clk-provider.h3
-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 */
659DEFINE_CLK_SMD_RPM(msm8998, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1);
660DEFINE_CLK_SMD_RPM(msm8998, cnoc_clk, cnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2);
661DEFINE_CLK_SMD_RPM(msm8998, ce1_clk, ce1_a_clk, QCOM_SMD_RPM_CE_CLK, 0);
662DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, div_clk1, div_clk1_a, 0xb);
663DEFINE_CLK_SMD_RPM(msm8998, ipa_clk, ipa_a_clk, QCOM_SMD_RPM_IPA_CLK, 0);
664DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, ln_bb_clk1, ln_bb_clk1_a, 1);
665DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, ln_bb_clk2, ln_bb_clk2_a, 2);
666DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, ln_bb_clk3_pin, ln_bb_clk3_a_pin,
667 3);
668DEFINE_CLK_SMD_RPM(msm8998, mmssnoc_axi_rpm_clk, mmssnoc_axi_rpm_a_clk,
669 QCOM_SMD_RPM_MMAXI_CLK, 0);
670DEFINE_CLK_SMD_RPM(msm8998, aggre1_noc_clk, aggre1_noc_a_clk,
671 QCOM_SMD_RPM_AGGR_CLK, 1);
672DEFINE_CLK_SMD_RPM(msm8998, aggre2_noc_clk, aggre2_noc_a_clk,
673 QCOM_SMD_RPM_AGGR_CLK, 2);
674DEFINE_CLK_SMD_RPM_QDSS(msm8998, qdss_clk, qdss_a_clk,
675 QCOM_SMD_RPM_MISC_CLK, 1);
676DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, rf_clk1, rf_clk1_a, 4);
677DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, rf_clk2_pin, rf_clk2_a_pin, 5);
678DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8998, rf_clk3, rf_clk3_a, 6);
679DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, rf_clk3_pin, rf_clk3_a_pin, 6);
680static 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
715static const struct rpm_smd_clk_desc rpm_clk_msm8998 = {
716 .clks = msm8998_clks,
717 .num_clks = ARRAY_SIZE(msm8998_clks),
718};
719
658static const struct of_device_id rpm_smd_clk_match_table[] = { 720static 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
4720static int gcc_ipq8074_probe(struct platform_device *pdev) 4722static 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
1707static const struct of_device_id gcc_mdm9615_match_table[] = { 1709static const struct of_device_id gcc_mdm9615_match_table[] = {
@@ -1712,21 +1714,12 @@ MODULE_DEVICE_TABLE(of, gcc_mdm9615_match_table);
1712 1714
1713static int gcc_mdm9615_probe(struct platform_device *pdev) 1715static 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
3661static const struct of_device_id gcc_msm8996_match_table[] = { 3663static const struct of_device_id gcc_msm8996_match_table[] = {
@@ -3666,8 +3668,6 @@ MODULE_DEVICE_TABLE(of, gcc_msm8996_match_table);
3666 3668
3667static int gcc_msm8996_probe(struct platform_device *pdev) 3669static 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
1113static const struct freq_tbl ftbl_usb30_master_clk_src[] = { 1113static 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
2496static struct clk_branch gcc_usb3_phy_pipe_clk = { 2545static 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
2962static struct clk_hw *gcc_msm8998_hws[] = {
2963 &xo.hw,
2964};
2965
2913static const struct qcom_cc_desc gcc_msm8998_desc = { 2966static 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
2923static int gcc_msm8998_probe(struct platform_device *pdev) 2978static 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
2698static const struct of_device_id gcc_qcs404_match_table[] = { 2700static const struct of_device_id gcc_qcs404_match_table[] = {
@@ -2704,7 +2706,6 @@ MODULE_DEVICE_TABLE(of, gcc_qcs404_match_table);
2704static int gcc_qcs404_probe(struct platform_device *pdev) 2706static 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
2425static const struct of_device_id gcc_sdm660_match_table[] = { 2427static const struct of_device_id gcc_sdm660_match_table[] = {
@@ -2431,7 +2433,7 @@ MODULE_DEVICE_TABLE(of, gcc_sdm660_match_table);
2431 2433
2432static int gcc_sdm660_probe(struct platform_device *pdev) 2434static 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
3352static const struct of_device_id mmcc_msm8996_match_table[] = { 3354static const struct of_device_id mmcc_msm8996_match_table[] = {
@@ -3357,8 +3359,6 @@ MODULE_DEVICE_TABLE(of, mmcc_msm8996_match_table);
3357 3359
3358static int mmcc_msm8996_probe(struct platform_device *pdev) 3360static 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}
1115DEFINE_SIMPLE_ATTRIBUTE(enable_fops, attr_enable_get, attr_enable_set, 1115DEFINE_DEBUGFS_ATTRIBUTE(enable_fops, attr_enable_get, attr_enable_set,
1116 "%llu\n"); 1116 "%llu\n");
1117 1117
1118static int attr_lock_get(void *data, u64 *val) 1118static 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}
1132DEFINE_SIMPLE_ATTRIBUTE(lock_fops, attr_lock_get, attr_lock_set, 1132DEFINE_DEBUGFS_ATTRIBUTE(lock_fops, attr_lock_get, attr_lock_set, "%llu\n");
1133 "%llu\n");
1134 1133
1135static int attr_rate_get(void *data, u64 *val) 1134static 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}
1150DEFINE_SIMPLE_ATTRIBUTE(rate_fops, attr_rate_get, attr_rate_set, "%llu\n"); 1149DEFINE_DEBUGFS_ATTRIBUTE(rate_fops, attr_rate_get, attr_rate_set, "%llu\n");
1151 1150
1152static int attr_registers_show(struct seq_file *s, void *data) 1151static 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
19static int lpt_clk_probe(struct platform_device *pdev) 19static 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);
792unsigned long clk_hw_get_rate(const struct clk_hw *hw); 792unsigned long clk_hw_get_rate(const struct clk_hw *hw);
793unsigned long __clk_get_flags(struct clk *clk); 793unsigned long __clk_get_flags(struct clk *clk);
794unsigned long clk_hw_get_flags(const struct clk_hw *hw); 794unsigned 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
795bool clk_hw_is_prepared(const struct clk_hw *hw); 798bool clk_hw_is_prepared(const struct clk_hw *hw);
796bool clk_hw_rate_is_protected(const struct clk_hw *hw); 799bool clk_hw_rate_is_protected(const struct clk_hw *hw);
797bool clk_hw_is_enabled(const struct clk_hw *hw); 800bool 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