]> git.baikalelectronics.ru Git - kernel.git/commit
clk: qcom: regmap: add PHY clock source implementation
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Wed, 8 Jun 2022 10:52:34 +0000 (13:52 +0300)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Sun, 26 Jun 2022 02:36:07 +0000 (21:36 -0500)
commita3fd8aee8626a73f759cf6142f679e1d9c20e84e
treeb894231bf45379a2a963f3a2b51c46dd9a1d2bd1
parentcf1710d1388cf5bd81996b258399c4907d27006e
clk: qcom: regmap: add PHY clock source implementation

On recent Qualcomm platforms the QMP PIPE clocks feed into a set of
muxes which must be parked to the "safe" source (bi_tcxo) when
corresponding GDSC is turned off and on again. Currently this is
handcoded in the PCIe driver by reparenting the gcc_pipe_N_clk_src
clock. However the same code sequence should be applied in the
pcie-qcom endpoint, USB3 and UFS drivers.

Rather than copying this sequence over and over again, follow the
example of clk_rcg2_shared_ops and implement this parking in the
enable() and disable() clock operations. Supplement the regmap-mux with
the new clk_regmap_phy_mux type, which implements such multiplexers
as a simple gate clocks.

This is possible since each of these multiplexers has just two clock
sources: one coming from the PHY and a reference (XO) one.  If the clock
is running off the from-PHY source, report it as enabled. Report it as
disabled otherwise (if it uses reference source).

This way the PHY will disable the pipe clock before turning off the
GDSC, which in turn would lead to disabling corresponding pipe_clk_src
(and thus it being parked to a safe, reference clock source). And vice
versa, after enabling the GDSC the PHY will enable the pipe clock, which
would cause pipe_clk_src to be switched from a safe source to the
working one.

Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220608105238.2973600-2-dmitry.baryshkov@linaro.org
drivers/clk/qcom/Makefile
drivers/clk/qcom/clk-regmap-phy-mux.c [new file with mode: 0644]
drivers/clk/qcom/clk-regmap-phy-mux.h [new file with mode: 0644]