clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops
authorShawn Guo <shawn.guo@linaro.org>
Fri, 17 Sep 2021 03:04:32 +0000 (11:04 +0800)
committerStephen Boyd <sboyd@kernel.org>
Wed, 13 Oct 2021 22:20:22 +0000 (15:20 -0700)
commit36354c32bd769ff76ad4577defb5bd5b1404a7b9
tree75ca350fd1b05d74e31429ecb66dd3d87de9c97f
parent496d1a13d405c96d82f3ac6610eafa99f7df6fa4
clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops

As there is a `rate` field in clk_smd_rpm, clk_smd_rpm_recalc_rate() can
be used by branch clocks to report rate as well, rather than assuming
the rate is always same as parent clock.  This assumption doesn't hold
on platforms like QCM2290, where xo_board is 38.4MHz while bi_tcxo is
19.2MHz.

To get this work, XO buffered clocks need the following updates.

- Assign a correct rate rather than the fake one which is being used to
  generate binary value for clk_smd_rpm_req interface.

- Explicitly handle the clk_smd_rpm_req interface value for XO buffered
  clocks (.rpm_res_type being QCOM_SMD_RPM_CLK_BUF_A).

Suggested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Link: https://lore.kernel.org/r/20210917030434.19859-2-shawn.guo@linaro.org
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
[sboyd@kernel.org: Do cpu_to_le32() again to keep sparse happy]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/qcom/clk-smd-rpm.c