Skip to content

Commit

Permalink
clk: qcom: Move cxo/pxo/xo into dt files
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Stephen Boyd committed Nov 16, 2015
1 parent ee15faf commit a085f87
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 43 deletions.
16 changes: 7 additions & 9 deletions drivers/clk/qcom/gcc-apq8084.c
Original file line number Diff line number Diff line change
Expand Up @@ -3607,18 +3607,16 @@ MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);

static int gcc_apq8084_probe(struct platform_device *pdev)
{
struct clk *clk;
int ret;
struct device *dev = &pdev->dev;

/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, "xo", NULL, CLK_IS_ROOT, 19200000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
if (ret)
return ret;

clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL,
CLK_IS_ROOT, 32768);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_sleep_clk(dev);
if (ret)
return ret;

return qcom_cc_probe(pdev, &gcc_apq8084_desc);
}
Expand Down
14 changes: 6 additions & 8 deletions drivers/clk/qcom/gcc-ipq806x.c
Original file line number Diff line number Diff line change
Expand Up @@ -3023,19 +3023,17 @@ MODULE_DEVICE_TABLE(of, gcc_ipq806x_match_table);

static int gcc_ipq806x_probe(struct platform_device *pdev)
{
struct clk *clk;
struct device *dev = &pdev->dev;
struct regmap *regmap;
int ret;

/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 25000000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
if (ret)
return ret;

clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 25000000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
if (ret)
return ret;

ret = qcom_cc_probe(pdev, &gcc_ipq806x_desc);
if (ret)
Expand Down
15 changes: 7 additions & 8 deletions drivers/clk/qcom/gcc-msm8660.c
Original file line number Diff line number Diff line change
Expand Up @@ -2720,17 +2720,16 @@ MODULE_DEVICE_TABLE(of, gcc_msm8660_match_table);

static int gcc_msm8660_probe(struct platform_device *pdev)
{
struct clk *clk;
int ret;
struct device *dev = &pdev->dev;

/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 19200000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
if (ret)
return ret;

clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 27000000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
if (ret)
return ret;

return qcom_cc_probe(pdev, &gcc_msm8660_desc);
}
Expand Down
14 changes: 6 additions & 8 deletions drivers/clk/qcom/gcc-msm8960.c
Original file line number Diff line number Diff line change
Expand Up @@ -3503,7 +3503,6 @@ MODULE_DEVICE_TABLE(of, gcc_msm8960_match_table);

static int gcc_msm8960_probe(struct platform_device *pdev)
{
struct clk *clk;
struct device *dev = &pdev->dev;
const struct of_device_id *match;
struct platform_device *tsens;
Expand All @@ -3513,14 +3512,13 @@ static int gcc_msm8960_probe(struct platform_device *pdev)
if (!match)
return -EINVAL;

/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, "cxo", NULL, CLK_IS_ROOT, 19200000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "cxo_board", "cxo", 19200000);
if (ret)
return ret;

clk = clk_register_fixed_rate(dev, "pxo", NULL, CLK_IS_ROOT, 27000000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "pxo_board", "pxo", 27000000);
if (ret)
return ret;

ret = qcom_cc_probe(pdev, match->data);
if (ret)
Expand Down
17 changes: 7 additions & 10 deletions drivers/clk/qcom/gcc-msm8974.c
Original file line number Diff line number Diff line change
Expand Up @@ -2717,7 +2717,7 @@ static void msm8974_pro_clock_override(void)

static int gcc_msm8974_probe(struct platform_device *pdev)
{
struct clk *clk;
int ret;
struct device *dev = &pdev->dev;
bool pro;
const struct of_device_id *id;
Expand All @@ -2730,16 +2730,13 @@ static int gcc_msm8974_probe(struct platform_device *pdev)
if (pro)
msm8974_pro_clock_override();

/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, "xo", NULL, CLK_IS_ROOT, 19200000);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
if (ret)
return ret;

/* Should move to DT node? */
clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL,
CLK_IS_ROOT, 32768);
if (IS_ERR(clk))
return PTR_ERR(clk);
ret = qcom_cc_register_sleep_clk(dev);
if (ret)
return ret;

return qcom_cc_probe(pdev, &gcc_msm8974_desc);
}
Expand Down

0 comments on commit a085f87

Please sign in to comment.