linux_dsm_epyc7002/drivers/clk/qcom
Stephen Boyd fda48bf5c8 clk: qcom: gdsc: Keep RETAIN_FF bit set if gdsc is already on
If the GDSC is enabled out of boot but doesn't have the retain ff bit
set we will get confusing results where the registers that are powered
by the GDSC lose their contents on the first power off of the GDSC but
thereafter they retain their contents. This is because gdsc_init() fails
to make sure the RETAIN_FF bit is set when it probes the GDSC the first
time and thus powering off the GDSC causes the register contents to be
reset. We do set the RETAIN_FF bit the next time we power on the GDSC,
see gdsc_enable(), so that subsequent GDSC power off's don't lose
register contents state.

Forcibly set the bit at device probe time so that the kernel's assumed
view of the GDSC is consistent with the state of the hardware. This
fixes a problem where the audio PLL doesn't work on sc7180 when the
bootloader leaves the lpass_core_hm GDSC enabled at boot (e.g. to make a
noise) but critically doesn't set the RETAIN_FF bit.

Cc: Douglas Anderson <dianders@chromium.org>
Cc: Taniya Das <tdas@codeaurora.org>
Cc: Rajendra Nayak <rnayak@codeaurora.org>
Fixes: 173722995c ("clk: qcom: gdsc: Add support to enable retention of GSDCR")
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20201017020137.1251319-1-sboyd@kernel.org
Reviewed-by: Taniya Das <tdas@codeaurora.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org> Tested-by: Douglas Anderson <dianders@chromium.org>
2020-10-20 09:28:55 -07:00
..
a53-pll.c clk: qcom: Add A53 PLL support 2018-01-02 10:00:24 -08:00
apcs-msm8916.c clk: qcom: apcs-msm8916: use clk_parent_data to specify the parent 2020-01-04 23:15:47 -08:00
apss-ipq6018.c clk: qcom: Fix return value check in apss_ipq6018_probe() 2020-06-29 14:15:34 -07:00
apss-ipq-pll.c clk: qcom: Add ipq apss pll driver 2020-06-22 00:21:59 -07:00
camcc-sdm845.c clk: qcom: Add camera clock controller driver for SDM845 2018-08-30 18:27:06 -07:00
clk-alpha-pll.c clk/qcom: fix spelling typo 2020-10-13 16:32:27 -07:00
clk-alpha-pll.h clk: qcom: clk-alpha-pll: use the right PCAL_DONE value for lucid pll 2020-07-24 01:51:11 -07: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 AON clock ops 2019-04-11 13:34:21 -07:00
clk-cpu-8996.c clk: qcom: msm8996: Make symbol 'cpu_msm8996_clks' static 2020-07-20 17:40:18 -07:00
clk-hfpll.c clk: let init callback return an error code 2019-12-23 18:53:13 -08: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: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07:00
clk-krait.h clk: qcom: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07: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-rcg2.c clk: qcom: dispcc: Update DP clk ops for phy design 2020-09-22 11:51:08 -07:00
clk-rcg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-rcg.h clk: qcom: rcg2: Add support for display port clock ops 2019-12-18 21:22:00 -08: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-mux.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap.c clk: qcom: Update SPDX headers for common files 2018-07-25 09:23:33 -07:00
clk-regmap.h clk: qcom: Update SPDX headers for common files 2018-07-25 09:23:33 -07:00
clk-rpm.c clk: qcom: clk-rpm: add missing rpm clk for ipq806x 2020-03-13 13:56:31 -07:00
clk-rpmh.c clk: qcom: rpmh: Drop unnecessary semicolons 2020-03-24 19:35:02 -07:00
clk-smd-rpm.c clk: qcom: smd: Add support for MSM8992/4 rpm clocks 2020-07-11 09:19:24 -07: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: Allow constant ratio freq tables for rcg 2019-11-07 13:43:19 -08:00
common.h clk: qcom: define probe by index API as common API 2019-08-08 08:20:01 -07:00
dispcc-sc7180.c clk: qcom: dispcc: Update DP clk ops for phy design 2020-09-22 11:51:08 -07:00
dispcc-sdm845.c clk: qcom: dispcc: Add support for display port clocks 2019-12-18 21:24:13 -08:00
dispcc-sm8250.c clk: qcom: Add display clock controller driver for SM8150 and SM8250 2020-10-13 18:18:06 -07:00
gcc-apq8084.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq806x.c ipq806x: gcc: add support for child probe 2020-07-21 00:10:21 -07:00
gcc-ipq4019.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq6018.c clk: qcom: Add ipq6018 Global Clock Controller support 2020-01-09 12:42:55 -08:00
gcc-ipq8074.c clk: qcom: ipq8074: make pcie0_rchng_clk_src static 2020-09-22 11:34:33 -07:00
gcc-mdm9615.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8660.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8916.c clk: qcom: msm8916: Fix the address location of pll->config_reg 2020-04-21 19:45:18 -07:00
gcc-msm8939.c clk: qcom: gcc-msm8939: remove defined but not used variables 2020-09-22 11:50:23 -07:00
gcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8974.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8994.c clk: qcom: gcc-msm8994: Add missing clocks, resets and GDSCs 2020-10-13 18:04:36 -07:00
gcc-msm8996.c clk: qcom: gcc-msm8996: Fix parent for CLKREF clocks 2020-01-06 08:55:28 -08:00
gcc-msm8998.c clk: qcom: Add missing msm8998 ufs_unipro_core_clk_src 2020-05-28 16:52:25 -07:00
gcc-qcs404.c clk: qcom: gcc: limit GPLL0_AO_OUT operating frequency 2019-12-18 22:07:52 -08:00
gcc-sc7180.c clk: qcom: gcc: Add support for GCC LPASS clock for SC7180 2020-07-24 13:08:06 -07:00
gcc-sdm660.c clk: qcom: gcc-sdm660: Fix wrong parent_map 2020-09-22 12:06:19 -07:00
gcc-sdm845.c clk: qcom: gcc: Make disp gpll0 branch aon for sc7180/sdm845 2020-07-21 00:44:11 -07:00
gcc-sm8150.c clk: qcom: gcc: remove unnecessary vco_table from SM8150 2020-07-24 01:51:14 -07:00
gcc-sm8250.c clk: qcom: gcc: Add global clock controller driver for SM8250 2020-03-09 15:14:57 -07:00
gdsc.c clk: qcom: gdsc: Keep RETAIN_FF bit set if gdsc is already on 2020-10-20 09:28:55 -07:00
gdsc.h clk: qcom: gdsc: Add support to enable retention of GSDCR 2020-07-24 13:04:48 -07:00
gpucc-msm8998.c clk: qcom: Avoid SMMU/cx gdsc corner cases 2019-12-18 22:02:27 -08:00
gpucc-sc7180.c clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc drivers 2020-07-24 01:51:26 -07:00
gpucc-sdm845.c clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc drivers 2020-07-24 01:51:26 -07:00
gpucc-sm8150.c clk: qcom: Add graphics clock controller driver for SM8150 2020-07-24 01:51:29 -07:00
gpucc-sm8250.c clk: qcom: Add graphics clock controller driver for SM8250 2020-07-24 01:51:32 -07: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: Add display clock controller driver for SM8150 and SM8250 2020-10-13 18:18:06 -07:00
kpss-xcc.c clk: qcom: Add KPSS ACC/GCC driver 2018-10-17 13:14:54 -07:00
krait-cc.c clk: qcom: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07:00
lcc-ipq806x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lcc-mdm9615.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lpasscc-sdm845.c clk: qcom: define probe by index API as common API 2019-08-08 08:20:01 -07:00
lpasscorecc-sc7180.c clk: qcom: lpass: Add support for LPASS clock controller for SC7180 2020-07-24 13:09:43 -07:00
Makefile clk: qcom: Add display clock controller driver for SM8150 and SM8250 2020-10-13 18:18:06 -07:00
mmcc-apq8084.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
mmcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
mmcc-msm8974.c clk: qcom: mmcc8974: move gfx3d_clk_src from the mmcc to rpm 2019-12-18 21:27:44 -08:00
mmcc-msm8996.c clk: qcom: mmcc-msm8996: Properly describe GPU_GX gdsc 2020-05-14 14:23:42 -07:00
mmcc-msm8998.c clk: qcom: Add MSM8998 Multimedia Clock Controller (MMCC) driver 2019-12-18 21:37:40 -08:00
mss-sc7180.c clk: qcom: Add modem clock controller driver for SC7180 2020-03-20 16:28:05 -07:00
q6sstop-qcs404.c clk: qcom: Add Q6SSTOP clock controller for QCS404 2019-11-07 13:10:36 -08:00
reset.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
reset.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
turingcc-qcs404.c clk: qcom: fix QCS404 TuringCC regmap 2019-09-09 09:05:22 -07:00
videocc-sc7180.c clk: qcom: videocc: Update the clock flag for video_cc_vcodec0_core_clk 2020-02-12 15:02:44 -08:00
videocc-sdm845.c clk: qcom: Move frequency table macro to common file 2018-07-06 16:45:51 -07:00
videocc-sm8150.c clk: qcom: add video clock controller driver for SM8150 2020-10-13 18:05:04 -07:00
videocc-sm8250.c clk: qcom: add video clock controller driver for SM8250 2020-10-13 18:05:04 -07:00