Add new API for clients to query corner voltage required by a
given frequency.
Change-Id: Ic469c36e016899d882ca084f74e0d2cb2020476c
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Providers adds ops for list rate and print reg debug nodes
to print necessary debug information, these nodes
can not be added to clk framework and is moved down to provider level.
Since provider does not have complete knowledge on clks owned
at clk framework, providers can not blindly typecast clks owned
by clk framework to call its list/print ops.
A separate qcom_regmap_list is maintained during qcom clk
registration with clk framework. So as when debug list/print
calls are called, provider have knowledge of qcom clks
and only call respective ops on qcom clks maintained
in clk_regmap_list.
Providers can use this API to know if clk is qcom regmaped clk.
Change-Id: I3e4d8280c8fa0c692f855c0d6659dd14f95008df
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
When set_rate is called on unprepared clocks new vdd_level
requirement is not cached, which leads to incorrect votes
when later clk_prepare is called. Clocks may not be prepared
when clk pre change rate is called for set_rate change request,
thus cache vdd level and only apply vote during clk prepare.
Change-Id: I54d9a3c75034cd9e67e683c3f71088f2c7cd3db1
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Specify prepare, unprepare, pre_change_rate, post_change_rate callbacks
for alpha-pll clk_ops. This ensures that supply regulator requirements
are managed properly at runtime.
Change-Id: I578b81c2ab77a8d7e2332098bd737b0646cf577d
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Some rpmh clocks aren't present on all boards, so allow marking some as
optional.
Change-Id: I6d2165a84f7e06febc7ea2694c1fb4a2ef9309d5
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Add generic sync_state function that can be used by qcom clock providers
(qcom_cc_sync_state). Currently this is just a simple wrapper around
clk_sync_state from the framework, but ultimately will contain
additional qcom-specific logic.
Change-Id: I936daafdd19cc7676daa4b9fbe712d9b3181395f
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Specify prepare, unprepare and pre/post rate change callbacks for all
clk-rcg2 clk_ops. This ensures that supply regulator requirements are
managed properly at runtime.
Change-Id: I6d7e31983e99c2ef9f546771d7046e8f0111debc
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Add support for prepare, unprepare, pre and post rate change regmap
clk_ops callback functions for regmap clocks to handle regulator
requirements.
Change-Id: If4657adcc047e1ca005d3d4f7ab88146dba85ee0
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Add support to manage voltage supply regulators via the
vdd-class voting interface. Provide functions that can be
easily used to implement clk_ops callbacks used for voltage
voting.
Change-Id: I891b5944ed8075074c11f139d9e6951d796c7f90
Signed-off-by: David Collins <collinsd@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Define a vdd_levels enum and vdd_corner[] mapping table which can
be used by clock controller drivers to configure the vdd_class
associated with their clocks.
Change-Id: Ia0c2ed35f7c87cc3dc9947844625a463745e2ac5
Signed-off-by: David Collins <collinsd@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Add a condition check to ensure that a reset controller is only
registered for a given clock controller inside of the
qcom_cc_really_probe() function if more than 0 resets are
defined for it.
Change-Id: Iffdfce1f7609ccab184a61c4a448a7edc15bb4ab
Signed-off-by: David Collins <collinsd@codeaurora.org>
Add support for device tree consumers to utilize clocks which
are registered via clk_hws in struct qcom_cc_desc.
This modification is effectively
commit 84196373f39d ("clk: qcom: Support to add hardware clocks
to of_clk_hw_provider")
reconciled with
commit 760be6586f ("clk: qcom: Make common clk_hw
registrations").
Change-Id: I1e0bdeecd2d4092bff3110168438211493f4feda
Signed-off-by: David Collins <collinsd@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Currently, if clk_set_rate() is called on a disabled clock that
has flags = FORCE_ENABLE_RCG, the rate is neither physically set
nor properly cached in software. This means that when the clock
is later enabled, its rate will not be what was previously
requested.
Change the handling of FORCE_ENABLE_RCG so that all clk_set_rate()
calls are respected regardless of a clock's enable state. In
doing so, ensure that FORCE_ENABLE_RCG and enable_safe_config are
supported both individually and together.
Implement the following behavior:
enable_safe_config == true:
enable - configure the RCG according to the cached current_freq
disable - configure the RCG for CXO (safe) source
set_rate - (if prepared) configure the RCG for the requested rate
(if not prepared) cache the rate in current_freq
flags | FORCE_ENABLE_RCG:
enable - set ROOT_EN=1 to force the RCG to be enabled
disable - set ROOT_EN=0
set_rate - configure the RCG for the requested rate;
if disabled, then set ROOT_EN=1 before the
configuration is changed and ROOT_EN=0 after
enable_safe_config && (flags | FORCE_ENABLE_RCG):
enable - set ROOT_EN=1 and configure the RCG according to the
cached current_freq
disable - configure the RCG for CXO source and set ROOT_EN=0
set_rate - (if prepared) configure the RCG for the requested rate
(if not prepared) cache the rate in current_freq
Change-Id: Ib7442e4a4b572ae7c567929044410e09a9886c76
Signed-off-by: David Collins <collinsd@codeaurora.org>
The commit eb325c3d2a90 ("clk: qcom: clk-rcg2: Read RCG source before
calculating clk rate")' had introduced a function to update the src map,
but there could be a race where a set_rate for a clock from a particular
CC on a CPU could override the global cxo_f which was set by clock
enable/disable for a clock from another CC.
Change-Id: Id86818895e226a387e7fd1a09e2034eee18fd361
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Add null pointer checks for the parent clock pointers returned
by clk_hw_get_parent() and clk_hw_get_parent_by_index() in
several qcom clock drivers.
Change-Id: I869c9e35b7ec083b34bcc70d18601aec64c3ac97
Signed-off-by: David Collins <collinsd@codeaurora.org>
Add support to configure cal_l fields for PLLs.
Change-Id: Ib5a7a74aecd8d9885e0a3034f097c13cda4d2268
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Add a check of the cxo_hz value to ensure that it is greater than
0. That way, there is no chance of division by zero when using
cxo_hz to calculate cxo_period_ns.
Change-Id: I5498b7a08e4cb3be45469041a973d045f2ec2bdb
Signed-off-by: David Collins <collinsd@codeaurora.org>
Some boards utilize several PMICs which contain clock divider
peripherals. Add support for the clock-output-names property
so that unique names can be specified for each divider clock.
If clock-output-names is not specified, then the clock names
will be div_clkN where N=1 to qcom,num-clkdivs.
Change-Id: I66b5fcd0a3890886fe1e8cd85b15ada8a55ecb0f
Signed-off-by: David Collins <collinsd@codeaurora.org>
Add a flag to indicate to support and enable hardware control mode
of an RCG.
Change-Id: I21194a463441ea13b7575a4174b1f96504b42b1e
Signed-off-by: Taniya Das <tdas@codeaurora.org>
If the clock rate is set previously to hlos and enable
safe config is true. In that case we need to check the
rcg source to make sure recalc will return correct rate.
Rate calculation is done based on selected source rather
than 19.2 MHZ. Also, we are setting correct src value for
XO based on the parent map of a particular clock.
Change-Id: Id6d2923136a0848d55cff37fb5ef2e3b092af27a
Signed-off-by: Shefali Jain <shefjain@codeaurora.org>
There could be cases where a simultaneous clk_disable and clk_set_rate on
the same rcg could result in a wrong recalc rate. So for shared rcgs
get the pre_div value based on the current frequency from the frequency
table.
Change-Id: Ia5730e43965b2d0ba19da05fca47825514f98865
Signed-off-by: Taniya Das <tdas@codeaurora.org>
The Alpha BW for Fabia PLL is 16 bit and the calculated hw rate has
additional KHz of frequency. Due to this additional frequency, the
source is wrongly selected. Truncate the additional KHz using the
DIV_ROUND_CLOSEST_ULL.
Change-Id: Ic9c523c87277c4813b676cf8a52a1207e8f1ecc2
Signed-off-by: Shefali Jain <shefjain@codeaurora.org>
Some RCGs could have sources with dynamic frequencies and fixed sources
where if the RCG has the flag of CLK_SET_RATE_PARENT set, it would try to
propagate the clock rate to the fixed source PLLs too. To identify sources
of the RCGs where the rate should propagate to parent PLL, add a member in
freq_tbl to represent source frequency. This would be used by the
_freq_tbl_determine_rate to set its parent frequency on the PLL.
Change-Id: I7f1c0d9d84607821893a1e5d17934dae5acef5f4
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
In certain cases, it is desirable for an RCG to be turned on
explicitly instead of just relying on the enable signal from
its branch clock(s). Add support for this.
Change-Id: I2b0b81bddfe7cc7543c313e4ed13a332fb1a0fcb
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
In certain cases, an RCG might be prone to being enabled even
though the overlying software thinks that it disabled the RCG.
In order to avoid letting the RCG go into an invalid state, support
parking it at a safe frequency during clk_disable() and deferring
all the RCG configuration updates to be done during clk_enable(),
if a scaling request comes in whilst the clock is disabled.
Change-Id: I55f1d1d346182a2b480127c57d6659fc9a63331b
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: David Collins <collinsd@codeaurora.org>
The clk-divider module in the clock framework provides support
for different kinds of dividers such as power-of-two and discrete
table based dividers. clk-regmap-divider module which adds regmap
support to the clk-divider doesn't handle the flags and table
parameters in the clk-divider that enables these divider types.
This change adds those two parameters to the clk-regmap-divider
struct and passes them to the clk-divider appropriately.
Change-Id: I0f9a923a62786b19264c45bbcf2400292ed7e61f
Signed-off-by: Rajkumar Subbiah <rsubbia@codeaurora.org>
Add new ops to allow clock clients to enable/disable hardware
dynamic gating of the clock branch.
Change-Id: I14abed3827de8cefc31f3deb3c1e589136c32b8d
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: David Collins <collinsd@codeaurora.org>
Add the clk-qcom module, which is required by clk-dummy for measure
support and for future cc modules such as gcc.
Change-Id: I14fabfc40ab51b7d21858c4dafb2c87abac3889a
Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
Add a stub-regulator driver which can be used to simulate any
particular regulator. This stub regulator driver must support
regulator_set_voltage() which is not possible via the existing
dummy regulator. Stub regulator devices can be used to verify
that regulator consumers make correct regulator framework calls
before it is possible to implement true regulator control.
Change-Id: Ia73d245419e44d74712b813e58de1973112233c4
Signed-off-by: David Collins <collinsd@codeaurora.org>
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Enable CONFIG_COMMON_CLK_QCOM in pineaplle_GKI defconfig to enable
common QCOM clock and stub controllers for pineapple.
Change-Id: I0911d182e95d2bc38cb9423c5a44a760b6a661c7
Signed-off-by: Vivek Aknurwar <quic_viveka@quicinc.com>
Modify the clk-dummy driver so that it registers a platform
driver instead of using CLK_OF_DECLARE(). This is needed for
device struct based dependency tracking to work properly.
Change-Id: I545c6e6a11e349e6eec0c75c106932d3909c54c8
Signed-off-by: David Collins <collinsd@codeaurora.org>
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Add a dummy clock provider that registers a simple callback that
in turn always returns the dummy clock for any clk_get call.
In addition, consumers of dummy clock provider requires support
for dummy resets, which would make a dummy assert/deassert
of the reset signals.
Change-Id: I08fcb174fd0e0c49f8069e106b48597bcdfe847d
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Edit the kernel command line to enable serial console output on UART.
Change-Id: I6eecdcb3e5f2f265324fe0abd79b2f8c716741ef
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
'make mrproper' runs through all the sub-directories and cleans up
generated files. As the dt-schema checking makefile is not being
done/not present, update the makefile to avoid looking for the makefile.
Change-Id: I686381e1a1fef459e71aafae975f602a2c8cf89c
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Update the driver to match the data corresponding to the TLMM block on
pineapple SoC.
Change-Id: I9ce707d1497de74ba960d896692aeab234f987c5
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Turn off comparing config overrides until an upstream change removes
CONFIG_TEST_STACKINIT from consolidate.fragment.
Change-Id: I1970770e7c8c8c16b6dcaa941cc895133ccceee5
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
The GENI serial console is not to be enabled by default.
Change-Id: I536ae937cf840a2def40be2620669777c7ae549e
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Enable the TLMM pinctrl driver for the Pineapple target in the GKI
build.
Change-Id: I4fafcbd32f87f60e32a593af750e5a097f8fffb9
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Add pinctrl driver to support pin configuration on the Pineapple SoC.
Change-Id: I124fca313a7bc0203f238c0ce26e109746fc2ffe
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
This is a propagated change from msm-5.10 "msm-kalama" commit
<375ce1eae> ("pinctrl: qcom: Merge changes of msm pinctrl driver from
msm-5.10").
Change-Id: Idb10beef6fc45399ee98b653667ccd59c722d3df
Signed-off-by: Vamsi Krishna Lanka <vamslank@codeaurora.org>
[gurus: Fixed merge conflict in pinctrl-msm.c]
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>