linux/drivers/clk/qcom
Gabor Juhos 4c028c1bf8 clk: qcom: gcc-qcs404: fix initial rate of GPLL3
commit 36d202241d upstream.

The comment before the config of the GPLL3 PLL says that the
PLL should run at 930 MHz. In contrary to this, calculating
the frequency from the current configuration values by using
19.2 MHz as input frequency defined in 'qcs404.dtsi', it gives
921.6 MHz:

  $ xo=19200000; l=48; alpha=0x0; alpha_hi=0x0
  $ echo "$xo * ($((l)) + $(((alpha_hi << 32 | alpha) >> 8)) / 2^32)" | bc -l
  921600000.00000000000000000000

Set 'alpha_hi' in the configuration to a value used in downstream
kernels [1][2] in order to get the correct output rate:

  $ xo=19200000; l=48; alpha=0x0; alpha_hi=0x70
  $ echo "$xo * ($((l)) + $(((alpha_hi << 32 | alpha) >> 8)) / 2^32)" | bc -l
  930000000.00000000000000000000

The change is based on static code analysis, compile tested only.

[1] https://git.codelinaro.org/clo/la/kernel/msm-5.4/-/blob/kernel.lnx.5.4.r56-rel/drivers/clk/qcom/gcc-qcs404.c?ref_type=heads#L335
[2} https://git.codelinaro.org/clo/la/kernel/msm-5.15/-/blob/kernel.lnx.5.15.r49-rel/drivers/clk/qcom/gcc-qcs404.c?ref_type=heads#L127

Cc: stable@vger.kernel.org
Fixes: 652f1813c1 ("clk: qcom: gcc: Add global clock controller driver for QCS404")
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
Link: https://lore.kernel.org/r/20241022-fix-gcc-qcs404-gpll3-v1-1-c4d30d634d19@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-12-14 19:54:13 +01:00
..
a7-pll.c clk: qcom: a7-pll: Add missing MODULE_DEVICE_TABLE 2021-04-09 11:20:52 -07:00
a53-pll.c clk: qcom: a53-pll: convert to use parent_data rather than parent_names 2022-09-13 16:49:15 -05:00
apcs-msm8916.c clk: qcom: a53pll/mux: Use unique clock name 2021-08-05 18:52:11 -07:00
apcs-sdx55.c clk: qcom: cleanup some dev_err_probe() calls 2021-06-01 16:34:02 -07:00
apss-ipq-pll.c clk: qcom: apss-ipq-pll: add support for IPQ8074 2022-09-26 21:40:11 -05:00
apss-ipq6018.c clk: qcom: apss-ipq6018: mark apcs_alias0_core_clk as critical 2022-09-26 21:40:10 -05:00
camcc-sc7180.c clk: qcom: camcc-sc7180: fix async resume during probe 2023-09-19 12:27:56 +02:00
camcc-sc7280.c clk: qcom: camcc-sc7280: Add parent dependency to all camera GDSCs 2024-08-03 08:49:17 +02:00
camcc-sdm845.c clk: qcom: camcc-sdm845: Fix topology around titan_top power domain 2022-06-30 18:34:54 -05:00
camcc-sm8250.c clk: qcom: camcc-sm8250: Fix topology around titan_top power domain 2022-06-30 18:34:55 -05:00
camcc-sm8450.c clk: qcom: add camera clock controller driver for SM8450 SoC 2022-07-06 15:20:59 -05:00
clk-alpha-pll.c clk: qcom: clk-alpha-pll: Fix CAL_L_VAL override for LUCID EVO PLL 2024-10-17 15:22:00 +02:00
clk-alpha-pll.h clk: qcom: dispcc-sm8250: use special function for Lucid 5LPE PLL 2024-10-17 15:21:04 +02:00
clk-branch.c clk: qcom: branch: Add AON clock ops 2019-04-11 13:34:21 -07:00
clk-branch.h clk: qcom: branch: Add helper functions for setting retain bits 2024-08-03 08:49:17 +02:00
clk-cpu-8996.c clk: qcom: cpu-8996: use constant mask for pmux 2022-09-26 11:12:45 -05:00
clk-hfpll.c clk: qcom: clk-hfpll: use poll_timeout macro 2022-06-27 15:41:37 -05:00
clk-hfpll.h clk: qcom: Add support for High-Frequency PLLs (HFPLLs) 2018-10-17 13:14:37 -07:00
clk-krait.c clk: qcom: clk-krait: fix wrong div2 functions 2022-12-31 13:32:21 +01:00
clk-krait.h clk: qcom: clk-krait: add apq/ipq8064 errata workaround 2022-06-27 15:41:37 -05:00
clk-pll.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-pll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-rcg.c clk: qcom: clk-rcg: add clk_rcg_floor_ops ops 2022-03-08 16:19:31 -06:00
clk-rcg.h clk: qcom: clk-rcg2: add rcg2 mux ops 2022-09-26 21:40:10 -05:00
clk-rcg2.c clk: qcom: Park shared RCGs upon registration 2024-08-03 08:49:21 +02:00
clk-regmap-divider.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-divider.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-mux-div.c clk: qcom: Add regmap mux-div clocks support 2018-01-02 10:00:24 -08:00
clk-regmap-mux-div.h clk: qcom: Use the correct style for SPDX License Identifier 2019-05-01 13:01:13 -07:00
clk-regmap-mux.c Revert "clk: qcom: regmap-mux: add pipe clk implementation" 2022-05-23 12:26:13 -05:00
clk-regmap-mux.h Revert "clk: qcom: regmap-mux: add pipe clk implementation" 2022-05-23 12:26:13 -05:00
clk-regmap-phy-mux.c clk: qcom: regmap: add PHY clock source implementation 2022-06-25 21:36:07 -05:00
clk-regmap-phy-mux.h clk: qcom: regmap: add PHY clock source implementation 2022-06-25 21:36:07 -05:00
clk-regmap.c clk: qcom: clk-regmap: Provide missing description for 'devm_clk_register_regmap()'s dev param 2021-02-10 19:42:51 -08:00
clk-regmap.h clk: define to_clk_regmap() as inline function 2020-10-28 16:34:44 -07:00
clk-rpm.c clk: qcom: clk-rpm: convert to parent_data API 2022-07-18 19:13:27 -05:00
clk-rpmh.c clk: qcom: clk-rpmh: Fix overflow in BCM vote 2024-10-17 15:21:59 +02:00
clk-smd-rpm.c clk: qcom: smd: Add SM6375 clocks 2022-09-27 12:07:17 -05:00
clk-spmi-pmic-div.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
common.c clk: qcom: regmap-mux: fix parent clock lookup 2021-12-02 15:07:34 -08:00
common.h clk: qcom: regmap-mux: fix parent clock lookup 2021-12-02 15:07:34 -08:00
dispcc-qcm2290.c clk: qcom: dispcc-qcm2290: Fix GPLL0_OUT_DIV handling 2023-07-19 16:21:51 +02:00
dispcc-sc7180.c clk: qcom: dispcc: Update the transition delay for MDSS GDSC 2022-02-24 16:22:11 -08:00
dispcc-sc7280.c clk: qcom: dispcc: Update the transition delay for MDSS GDSC 2022-02-24 16:22:11 -08:00
dispcc-sdm845.c clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times 2024-03-26 18:20:49 -04:00
dispcc-sm6115.c clk: qcom: Add display clock controller driver for SM6115 2022-09-26 22:17:13 -05:00
dispcc-sm6125.c clk: qcom: Add display clock controller driver for SM6125 2022-03-09 08:53:30 -06:00
dispcc-sm6350.c clk: qcom: dispcc-sm6350: fix DisplayPort clocks 2024-06-12 11:03:29 +02:00
dispcc-sm8250.c clk: qcom: dispcc-sm8250: use CLK_SET_RATE_PARENT for branch clocks 2024-10-17 15:21:58 +02:00
dispcc-sm8450.c clk: qcom: dispcc-sm8450: fix DisplayPort clocks 2024-06-12 11:03:29 +02:00
gcc-apq8084.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq806x.c clk: qcom: gcc-ipq806x: use parent_data for the last remaining entry 2022-12-31 13:32:08 +01:00
gcc-ipq4019.c clk: qcom: gcc-ipq4019: Remove unused variable 'ret' 2021-02-11 11:56:05 -08:00
gcc-ipq6018.c clk: qcom: gcc-ipq6018: fix terminating of frequency table arrays 2024-04-03 15:19:29 +02:00
gcc-ipq8074.c clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays 2024-04-03 15:19:29 +02:00
gcc-mdm9607.c clk/qcom: Remove unused variables 2021-06-27 17:04:48 -07:00
gcc-mdm9615.c clk: qcom: gcc-mdm9615: use proper parent for pll0_vote clock 2023-09-19 12:27:57 +02:00
gcc-msm8660.c clk: qcom: gcc-msm8660: Drop hardcoded fixed board clocks 2022-10-14 13:39:09 -07:00
gcc-msm8909.c clk: qcom: gcc-msm8909: Increase delay for USB PHY reset 2022-09-13 22:07:25 -05:00
gcc-msm8916.c clk: qcom: gcc-msm8916: use parent_hws/_data instead of parent_names 2022-08-29 15:42:54 -05:00
gcc-msm8939.c clk: qcom: gcc-msm8939: use ARRAY_SIZE instead of specifying num_parents 2022-09-29 11:42:12 -05:00
gcc-msm8953.c clk: qcom: Remove redundant .owner 2021-10-07 18:24:40 -07:00
gcc-msm8960.c clk: qcom: gcc-msm8960: use parent_hws/_data instead of parent_names 2022-09-13 21:58:34 -05:00
gcc-msm8974.c clk: qcom: gcc: Add support for Global Clock controller found on MSM8226 2021-06-27 17:00:50 -07:00
gcc-msm8976.c clk: qcom: gcc-msm8976: Add modem reset 2022-05-05 22:22:27 -05:00
gcc-msm8994.c clk: qcom: gcc-msm8994: use parent_hws for gpll0/4 2022-07-18 21:40:36 -05:00
gcc-msm8996.c clk: qcom: gcc-msm8996: Remove RPM bus clocks 2023-11-20 11:51:55 +01:00
gcc-msm8998.c clk: qcom: gcc-msm8998: add SSC-related clocks 2022-04-19 12:05:14 -05:00
gcc-qcm2290.c clk: qcom: gcc-qcm2290: Mark RCGs shared where applicable 2023-07-19 16:21:49 +02:00
gcc-qcs404.c clk: qcom: gcc-qcs404: fix initial rate of GPLL3 2024-12-14 19:54:13 +01:00
gcc-sc7180.c clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src 2023-09-13 09:42:45 +02:00
gcc-sc7280.c clk: qcom: gcc-sc7280: Update force mem core bit for UFS ICE clock 2024-08-03 08:49:17 +02:00
gcc-sc8180x.c clk: qcom: gcc-sc8180x: Add GPLL9 support 2024-10-17 15:22:08 +02:00
gcc-sc8280xp.c clk: qcom: gcc-sc8280xp: Add missing GDSCs 2023-09-13 09:42:45 +02:00
gcc-sdm660.c clk: qcom: gcc-sdm660: Use floor ops for SDCC1 clock 2022-08-29 15:55:57 -05:00
gcc-sdm845.c clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd 2024-04-03 15:19:24 +02:00
gcc-sdx55.c clk: qcom: gcc-sdx55: use parent_hws where possible 2021-04-07 17:22:54 -07:00
gcc-sdx65.c clk: qcom: Add SDX65 GCC support 2021-12-16 13:17:22 -06:00
gcc-sm6115.c clk: qcom: gcc-sm6115: Mark RCGs shared where applicable 2023-05-11 23:03:34 +09:00
gcc-sm6125.c clk: qcom: sm6125-gcc: fix typos in comments 2022-03-15 15:48:38 -07:00
gcc-sm6350.c clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents 2024-07-11 12:47:16 +02:00
gcc-sm6375.c clk: qcom: gcc-sm6375: Ensure unsigned long type 2022-10-04 10:24:26 -07:00
gcc-sm8150.c clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src 2023-11-20 11:51:55 +01:00
gcc-sm8250.c clk: qcom: gcc-sm8250: Do not turn off PCIe GDSCs during gdsc_disable() 2024-10-17 15:21:59 +02:00
gcc-sm8350.c clk: qcom: gcc-sm8350: fix PCIe PIPE clocks handling 2023-05-11 23:03:35 +09:00
gcc-sm8450.c clk: qcom: gcc-sm8450: Do not turn off PCIe GDSCs during gdsc_disable() 2024-10-17 15:21:59 +02:00
gdsc.c clk: qcom: gdsc: Remove direct runtime PM calls 2022-11-04 11:53:49 -07:00
gdsc.h clk: qcom: gdsc: Remove direct runtime PM calls 2022-11-04 11:53:49 -07:00
gpucc-msm8998.c clk: qcom: gpucc-msm8998: Remove unnecessary fallbacks to global clocks 2021-09-14 14:40:33 -07:00
gpucc-sc7180.c clk: qcom: gpucc-sc7180: drop unused enum entries 2021-04-07 17:22:51 -07:00
gpucc-sc7280.c clk: qcom: Update the force mem core bit for GPU clocks 2022-10-27 17:23:29 -07:00
gpucc-sc8280xp.c clk: qcom: Add SC8280XP GPU clock controller 2022-09-27 12:07:30 -05:00
gpucc-sdm660.c clk: qcom: gpucc-sdm660: use parent_hws instead of parent_data 2022-02-10 18:33:30 -06:00
gpucc-sdm845.c clk: qcom: gpucc-sdm845: get rid of the test clock 2021-04-07 17:22:53 -07:00
gpucc-sm6350.c clk: qcom: gpucc-sm6350: Fix clock source names 2023-09-13 09:42:45 +02:00
gpucc-sm8150.c clk: qcom: gpucc-sm8150: Update the gpu_cc_pll1 config 2024-01-25 15:27:34 -08:00
gpucc-sm8250.c clk: qcom: gpucc-sm8250: use parent_hws where possible 2021-04-07 17:22:54 -07:00
gpucc-sm8350.c clk: qcom: gpucc-sm8350: Park RCG's clk source at XO during disable 2024-08-03 08:49:19 +02:00
hfpll.c clk: qcom: hfpll: use clk_parent_data to specify the parent 2019-12-18 22:07:52 -08:00
Kconfig clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM 2023-11-20 11:51:57 +01:00
kpss-xcc.c clk: qcom: kpss-xcc: convert to parent data API 2022-10-03 20:50:22 -07:00
krait-cc.c clk: qcom: clk-krait: add apq/ipq8064 errata workaround 2022-06-27 15:41:37 -05:00
lcc-ipq806x.c clk: qcom: lcc-ipq806x: use ARRAY_SIZE for num_parents 2022-09-26 11:18:56 -05:00
lcc-mdm9615.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lcc-msm8960.c clk: qcom: lcc-msm8960: use parent_hws/_data instead of parent_names 2022-09-13 21:58:34 -05:00
lpass-gfm-sm8250.c clk: qcom: use devm_pm_runtime_enable and devm_pm_clk_create 2021-08-26 11:28:11 -07:00
lpassaudiocc-sc7280.c clk: qcom: lpassaudiocc-sc7280: Add required gdsc power domain clks in lpass_cc_sc7280_desc 2023-05-11 23:03:34 +09:00
lpasscc-sc7280.c clk: qcom: lpasscc-sc7280: fix missing resume during probe 2023-09-19 12:27:57 +02:00
lpasscc-sdm845.c clk: qcom: lpasscc-sdm845: explicitly include clk-provider.h 2021-12-20 23:14:50 -06:00
lpasscorecc-sc7180.c clk: qcom: lpass-sc7180: Fix pm_runtime usage 2022-12-31 13:32:21 +01:00
lpasscorecc-sc7280.c clk: qcom: lpass: Add support for resets & external mclk for SC7280 2022-09-13 09:48:30 -05:00
Makefile clk: qcom: Add global clock controller driver for SM6375 2022-09-27 22:25:57 -05:00
mmcc-apq8084.c clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays 2024-04-03 15:19:29 +02:00
mmcc-msm8960.c clk: qcom: mmcc-msm8960: use parent_hws/_data instead of parent_names 2022-09-13 21:58:35 -05:00
mmcc-msm8974.c clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays 2024-04-03 15:19:29 +02:00
mmcc-msm8994.c clk: qcom: mmcc-msm8994: Add MSM8992 support 2021-08-26 11:58:17 -07:00
mmcc-msm8996.c clk: qcom: mmcc-msm8996: use parent_hws/_data instead of parent_names 2022-06-25 15:18:15 -05:00
mmcc-msm8998.c clk: qcom: mmcc-msm8998: fix venus clock issue 2024-06-12 11:03:29 +02:00
mmcc-sdm660.c clk: qcom: mmcc-sdm660: Add hw_ctrl flag to venus_core0_gdsc 2021-10-13 15:20:24 -07:00
mss-sc7180.c clk: qcom: mss-sc7180: fix missing resume during probe 2023-09-19 12:27:57 +02:00
q6sstop-qcs404.c clk: qcom: q6sstop-qcs404: fix missing resume during probe 2023-09-19 12:27:57 +02:00
reset.c clk: qcom: reset: Ensure write completion on reset de/assertion 2024-03-26 18:20:47 -04:00
reset.h clk: qcom: reset: support resetting multiple bits 2023-07-19 16:21:51 +02:00
turingcc-qcs404.c clk: qcom: turingcc-qcs404: fix missing resume during probe 2023-09-19 12:27:56 +02:00
videocc-sc7180.c clk: qcom: videocc-sc7180: use parent_hws instead of parent_data 2022-02-10 18:33:31 -06:00
videocc-sc7280.c clk: qcom: Add video clock controller driver for SC7280 2021-07-20 13:46:32 -07:00
videocc-sdm845.c clk: qcom: videocc-sdm845: get rid of the test clock 2021-04-07 17:22:53 -07:00
videocc-sm8150.c clk: qcom: videocc-sm8150: Add missing PLL config property 2024-01-25 15:27:36 -08:00
videocc-sm8250.c clk: qcom: Drop mmcx gdsc supply for dispcc and videocc 2022-07-18 16:35:03 -05:00