aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2015-10-26 21:10:09 -0400
committerStephen Boyd <sboyd@codeaurora.org>2015-11-16 14:07:06 -0500
commita085f877a882b465fce74188c9d8efd12bd5acd4 (patch)
tree2183cbd18147e908fcdcfdf800f663d532f49878
parentee15faffef11309219aa87a24efc86f6dd13f7cb (diff)
clk: qcom: Move cxo/pxo/xo into dt files
Put these clocks into the dt files instead of registering them from C code. This provides a few benefits. It allows us to specify the frequency of these clocks at the board level instead of hard-coding them in the driver. It allows us to insert an RPM clock in between the consumers of the crystals and the actual clock. And finally, it helps us transition the GCC driver to use RPM clocks when that configuration is enabled. Cc: Georgi Djakov <georgi.djakov@linaro.org> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
-rw-r--r--drivers/clk/qcom/gcc-apq8084.c16
-rw-r--r--drivers/clk/qcom/gcc-ipq806x.c14
-rw-r--r--drivers/clk/qcom/gcc-msm8660.c15
-rw-r--r--drivers/clk/qcom/gcc-msm8960.c14
-rw-r--r--drivers/clk/qcom/gcc-msm8974.c17
5 files changed, 33 insertions, 43 deletions
diff --git a/drivers/clk/qcom/gcc-apq8084.c b/drivers/clk/qcom/gcc-apq8084.c
index 1567c3a79534..070037a29ea5 100644
--- a/drivers/clk/qcom/gcc-apq8084.c
+++ b/drivers/clk/qcom/gcc-apq8084.c
@@ -3607,18 +3607,16 @@ MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);
3607 3607
3608static int gcc_apq8084_probe(struct platform_device *pdev) 3608static int gcc_apq8084_probe(struct platform_device *pdev)
3609{ 3609{
3610 struct clk *clk; 3610 int ret;
3611 struct device *dev = &pdev->dev; 3611 struct device *dev = &pdev->dev;
3612 3612
3613 /* Temporary until RPM clocks supported */ 3613 ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
3614 clk = clk_register_fixed_rate(dev, "xo", NULL, CLK_IS_ROOT, 19200000); 3614 if (ret)
3615 if (IS_ERR(clk)) 3615 return ret;
3616 return PTR_ERR(clk);
3617 3616
3618 clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL, 3617 ret = qcom_cc_register_sleep_clk(dev);
3619 CLK_IS_ROOT, 32768); 3618 if (ret)
3620 if (IS_ERR(clk)) 3619 return ret;
3621 return PTR_ERR(clk);
3622 3620
3623 return qcom_cc_probe(pdev, &gcc_apq8084_desc); 3621 return qcom_cc_probe(pdev, &gcc_apq8084_desc);
3624} 3622}
diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-ipq806x.c
index 16fc64c082a5..dd5402bac620 100644
--- a/drivers/clk/qcom/gcc-ipq806x.c
+++ b/drivers/clk/qcom/gcc-ipq806x.c
@@ -3023,19 +3023,17 @@ MODULE_DEVICE_TABLE(of, gcc_ipq806x_match_table);
3023 3023
3024static int gcc_ipq806x_probe(struct platform_device *pdev) 3024static int gcc_ipq806x_probe(struct platform_device *pdev)
3025{ 3025{
3026 struct clk *clk;
3027 struct device *dev = &pdev->dev; 3026 struct device *dev = &pdev->dev;
3028 struct regmap *regmap; 3027 struct regmap *regmap;
3029 int ret; 3028 int ret;
3030 3029
3031 /* Temporary until RPM clocks supported */ 3030 ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
3032 clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 25000000); 3031 if (ret)
3033 if (IS_ERR(clk)) 3032 return ret;
3034 return PTR_ERR(clk);
3035 3033
3036 clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 25000000); 3034 ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
3037 if (IS_ERR(clk)) 3035 if (ret)
3038 return PTR_ERR(clk); 3036 return ret;
3039 3037
3040 ret = qcom_cc_probe(pdev, &gcc_ipq806x_desc); 3038 ret = qcom_cc_probe(pdev, &gcc_ipq806x_desc);
3041 if (ret) 3039 if (ret)
diff --git a/drivers/clk/qcom/gcc-msm8660.c b/drivers/clk/qcom/gcc-msm8660.c
index f110bb5a1df3..ad413036f7c7 100644
--- a/drivers/clk/qcom/gcc-msm8660.c
+++ b/drivers/clk/qcom/gcc-msm8660.c
@@ -2720,17 +2720,16 @@ MODULE_DEVICE_TABLE(of, gcc_msm8660_match_table);
2720 2720
2721static int gcc_msm8660_probe(struct platform_device *pdev) 2721static int gcc_msm8660_probe(struct platform_device *pdev)
2722{ 2722{
2723 struct clk *clk; 2723 int ret;
2724 struct device *dev = &pdev->dev; 2724 struct device *dev = &pdev->dev;
2725 2725
2726 /* Temporary until RPM clocks supported */ 2726 ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
2727 clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 19200000); 2727 if (ret)
2728 if (IS_ERR(clk)) 2728 return ret;
2729 return PTR_ERR(clk);
2730 2729
2731 clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 27000000); 2730 ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
2732 if (IS_ERR(clk)) 2731 if (ret)
2733 return PTR_ERR(clk); 2732 return ret;
2734 2733
2735 return qcom_cc_probe(pdev, &gcc_msm8660_desc); 2734 return qcom_cc_probe(pdev, &gcc_msm8660_desc);
2736} 2735}
diff --git a/drivers/clk/qcom/gcc-msm8960.c b/drivers/clk/qcom/gcc-msm8960.c
index 66c18bc97857..983dd7dc89a7 100644
--- a/drivers/clk/qcom/gcc-msm8960.c
+++ b/drivers/clk/qcom/gcc-msm8960.c
@@ -3503,7 +3503,6 @@ MODULE_DEVICE_TABLE(of, gcc_msm8960_match_table);
3503 3503
3504static int gcc_msm8960_probe(struct platform_device *pdev) 3504static int gcc_msm8960_probe(struct platform_device *pdev)
3505{ 3505{
3506 struct clk *clk;
3507 struct device *dev = &pdev->dev; 3506 struct device *dev = &pdev->dev;
3508 const struct of_device_id *match; 3507 const struct of_device_id *match;
3509 struct platform_device *tsens; 3508 struct platform_device *tsens;
@@ -3513,14 +3512,13 @@ static int gcc_msm8960_probe(struct platform_device *pdev)
3513 if (!match) 3512 if (!match)
3514 return -EINVAL; 3513 return -EINVAL;
3515 3514
3516 /* Temporary until RPM clocks supported */ 3515 ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
3517 clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 19200000); 3516 if (ret)
3518 if (IS_ERR(clk)) 3517 return ret;
3519 return PTR_ERR(clk);
3520 3518
3521 clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 27000000); 3519 ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
3522 if (IS_ERR(clk)) 3520 if (ret)
3523 return PTR_ERR(clk); 3521 return ret;
3524 3522
3525 ret = qcom_cc_probe(pdev, match->data); 3523 ret = qcom_cc_probe(pdev, match->data);
3526 if (ret) 3524 if (ret)
diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c
index 28abb8f8f293..335952db309b 100644
--- a/drivers/clk/qcom/gcc-msm8974.c
+++ b/drivers/clk/qcom/gcc-msm8974.c
@@ -2717,7 +2717,7 @@ static void msm8974_pro_clock_override(void)
2717 2717
2718static int gcc_msm8974_probe(struct platform_device *pdev) 2718static int gcc_msm8974_probe(struct platform_device *pdev)
2719{ 2719{
2720 struct clk *clk; 2720 int ret;
2721 struct device *dev = &pdev->dev; 2721 struct device *dev = &pdev->dev;
2722 bool pro; 2722 bool pro;
2723 const struct of_device_id *id; 2723 const struct of_device_id *id;
@@ -2730,16 +2730,13 @@ static int gcc_msm8974_probe(struct platform_device *pdev)
2730 if (pro) 2730 if (pro)
2731 msm8974_pro_clock_override(); 2731 msm8974_pro_clock_override();
2732 2732
2733 /* Temporary until RPM clocks supported */ 2733 ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
2734 clk = clk_register_fixed_rate(dev, "xo", NULL, CLK_IS_ROOT, 19200000); 2734 if (ret)
2735 if (IS_ERR(clk)) 2735 return ret;
2736 return PTR_ERR(clk);
2737 2736
2738 /* Should move to DT node? */ 2737 ret = qcom_cc_register_sleep_clk(dev);
2739 clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL, 2738 if (ret)
2740 CLK_IS_ROOT, 32768); 2739 return ret;
2741 if (IS_ERR(clk))
2742 return PTR_ERR(clk);
2743 2740
2744 return qcom_cc_probe(pdev, &gcc_msm8974_desc); 2741 return qcom_cc_probe(pdev, &gcc_msm8974_desc);
2745} 2742}