OpenCloudOS-Kernel/drivers/clk/qcom
Amit Nischal 7ef6f11887 clk: qcom: Configure the RCGs to a safe source as needed
For some root clock generators, there could be child branches which are
controlled by an entity other than application processor subsystem. For
such RCGs, as per application processor subsystem clock driver, all of
its downstream clocks are disabled and RCG is in disabled state but in
reality downstream clocks can be left enabled before.

So in this scenario, when RCG is disabled as per clock driver's point of
view and when rate scaling request comes before downstream clock enable
request, then RCG fails to update its configuration because in reality
RCG is on and it expects its new source to already be in enable state but
in reality new source is off. In order to avoid having the RCG to go into
an invalid state, add support to update the CFG, M, N and D registers
during set_rate() without configuration update and defer the actual RCG
configuration update to be done during clk_enable() as at this point of
time, both its new parent and safe source will be already enabled and RCG
can safely switch to new parent.

During clk_disable() request, configure it to safe source as both its
parents, safe source and current parent will be enabled and RCG can
safely execute a switch.

Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: Amit Nischal <anischal@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2018-05-08 11:22:55 -07:00
..
Kconfig Merge branches 'clk-iproc', 'clk-mvebu' and 'clk-qcom-a53' into clk-next 2018-01-26 16:41:58 -08:00
Makefile Merge branches 'clk-iproc', 'clk-mvebu' and 'clk-qcom-a53' into clk-next 2018-01-26 16:41:58 -08:00
a53-pll.c clk: qcom: Add A53 PLL support 2018-01-02 10:00:24 -08:00
apcs-msm8916.c clk: qcom: Add APCS clock controller support 2018-01-02 10:00:25 -08:00
clk-alpha-pll.c clk: qcom: Add support for controlling Fabia PLL 2018-03-19 16:32:36 -07:00
clk-alpha-pll.h clk: qcom: Add support for controlling Fabia PLL 2018-03-19 16:32:36 -07:00
clk-branch.c clk: qcom: Add support for BRANCH_HALT_SKIP flag for branch clocks 2018-05-08 11:22:55 -07:00
clk-branch.h clk: qcom: Add support for BRANCH_HALT_SKIP flag for branch clocks 2018-05-08 11:22:55 -07:00
clk-pll.c clk: qcom: Enable FSM mode for votable alpha PLLs 2016-11-01 18:39:17 -07:00
clk-pll.h clk: qcom: Add support for SR2 PLLs 2015-07-07 17:19:58 -07:00
clk-rcg.c clk: qcom: Fix pre-divider usage for pixel RCG 2016-02-29 12:57:06 -08:00
clk-rcg.h clk: qcom: Configure the RCGs to a safe source as needed 2018-05-08 11:22:55 -07:00
clk-rcg2.c clk: qcom: Configure the RCGs to a safe source as needed 2018-05-08 11:22:55 -07:00
clk-regmap-divider.c Merge branch 'clk-divider-container' into clk-next 2018-01-26 16:43:14 -08:00
clk-regmap-divider.h clk: qcom: add read-only divider operations 2017-12-21 16:03:19 -08: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: Add regmap mux-div clocks support 2018-01-02 10:00:24 -08:00
clk-regmap-mux.c clk: qcom: add parent map for regmap mux 2017-12-21 16:03:22 -08:00
clk-regmap-mux.h clk: qcom: add parent map for regmap mux 2017-12-21 16:03:22 -08:00
clk-regmap.c clk: qcom: Migrate to clk_hw based registration and OF APIs 2016-08-24 17:37:06 -07:00
clk-regmap.h clk: qcom: Migrate to clk_hw based registration and OF APIs 2016-08-24 17:37:06 -07:00
clk-rpm.c clk: qcom: Implement RPM clocks for MSM8660/APQ8060 2017-11-01 23:48:47 -07:00
clk-smd-rpm.c clk: qcom: clk-smd-rpm: add msm8996 rpmclks 2017-11-02 00:08:12 -07:00
clk-spmi-pmic-div.c clk: qcom: Add spmi_pmic clock divider support 2017-12-06 22:30:30 -08:00
common.c clk: qcom: common: fix legacy board-clock registration 2017-11-14 15:53:29 -08:00
common.h clk: qcom: add parent map for regmap mux 2017-12-21 16:03:22 -08:00
gcc-apq8084.c clk: qcom: Move all sdcc rcgs to use clk_rcg2_floor_ops 2016-11-23 11:00:06 -08:00
gcc-ipq806x.c clk: qcom: ipq806x: Fix board clk rates 2016-11-09 17:10:32 -08:00
gcc-ipq4019.c clk: qcom: ipq4019: Add the cpu clock frequency change notifier 2016-12-27 13:44:34 -08:00
gcc-ipq8074.c clk: qcom: ipq8074: add misc resets for PCIE and NSS 2017-12-21 16:03:40 -08:00
gcc-mdm9615.c clk: mdm9615: Add EBI2 clock 2017-01-09 16:33:26 -08:00
gcc-msm8660.c clk: qcom: add EBI2 clocks to the MSM8660 GCC 2016-07-01 18:12:45 -07:00
gcc-msm8916.c clk: qcom: msm8916: add 12.288 MHz support to codec dig clk 2017-12-06 22:34:09 -08:00
gcc-msm8960.c clk: qcom: Remove CLK_IS_ROOT 2016-03-04 12:53:53 -08:00
gcc-msm8974.c clk: qcom: Move all sdcc rcgs to use clk_rcg2_floor_ops 2016-11-23 11:00:06 -08:00
gcc-msm8994.c clk: qcom: support for alpha pll properties 2017-12-13 13:45:30 -08:00
gcc-msm8996.c clk: qcom: support for alpha pll properties 2017-12-13 13:45:30 -08:00
gdsc.c clk: qcom: Simplify gdsc status checking logic 2018-05-08 11:22:55 -07:00
gdsc.h clk: qcom: gdsc: Add support to poll CFG register to check GDSC state 2018-05-01 16:34:07 -07:00
lcc-ipq806x.c clk: qcom: lcc-ipq806x: Fixup overriding val in regmap_read call 2016-11-01 17:44:09 -07:00
lcc-mdm9615.c clk: mdm9615: Add support for MDM9615 Clock Controllers 2016-08-15 15:51:21 -07:00
lcc-msm8960.c Revert "clk: qcom: Specify LE device endianness" 2016-02-12 14:24:24 -08:00
mmcc-apq8084.c Revert "clk: qcom: Specify LE device endianness" 2016-02-12 14:24:24 -08:00
mmcc-msm8960.c clk: qcom: Remove CLK_IS_ROOT 2016-03-04 12:53:53 -08:00
mmcc-msm8974.c Merge branch 'clk-fixes' into clk-next 2016-02-18 19:17:29 -08:00
mmcc-msm8996.c clk: qcom: support for alpha pll properties 2017-12-13 13:45:30 -08:00
reset.c clk: qcom: Make reset_control_ops const 2016-03-29 16:30:26 -07:00
reset.h clk: qcom: Make reset_control_ops const 2016-03-29 16:30:26 -07:00