Use the no_log version of readl_relaxed when reading out the
counter values for CPUs to reduce the amount of logging in
RTB Logs. Scheduler activity is very frequent and clogs up the
buffer, which can potentially reduce the amount of useful logs.
Change-Id: Ib5c7595c8bae1822837c3b1f1ae56fdc3c612933
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Add a ready callback, which will be called when a CPU policy is ready.
As a part of this callback, register the corresponding CPU cooling
device.
Change-Id: Ic12e0a8f7cd13fda583844454e3a0eb600a2cad3
Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
Register child devices once a successful probe is done. This
will enable the dependent child devices to be probed immediately after
the cpufreq probe is done.
Change-Id: I9108636e1e6ad03bb6f5add9da9ba5507248c129
Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
The scheduler needs a way to track cpu cycle counts,
return the total cycle count by adding the difference between
the current cycle count and the previous from reading the EPSS
cycle counters.
Change-Id: Ifacdb0fe8fb9c692322d3ef7fcd25c6c5d5cd4f3
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Given that there are no issues selecting a desired_state before
EPSS is enabled for a particular cluster, let's skip the check
for enable bit on clusters to give better flexibility to the
cpufreq driver to probe successfully on configuration where
not all clusters are enabled.
Change-Id: I3548c5390f899e5a1108d00c00e24837726c9543
Signed-off-by: David Dai <daidavid1@codeaurora.org>
The topology driver keeps track of the current capacity of a CPU and
make it available via arch_scale_freq_capacity(). The PELT load
tracking in the scheduler and energy-aware task placement are the
clients of this API. Hence notify the new frequency to the topology
driver during frequency transition.
Change-Id: Ia0890956f59082496e7d5d7ba8a9c09b343e44ec
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
[satyap@codeaurora.org: resolve trivial merge conflict]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
To be able to use Energy Model based on values supplied in DT
for "dynamic-power-coefficient" property, need to register with
Energy Model framework. This is to make placement decisions
based on Energy Model by Energy Aware Scheduler (EAS).
Change-Id: Iecc5c12bec2bf5e50d405cf43b501537274249df
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Add support to read the voltage look up table and populate OPP for all
corresponding CPUs.
Change-Id: I8b4cb9199db3aa202b9855237943f04675ec3e33
Signed-off-by: Taniya Das <tdas@codeaurora.org>
In order to support core boost where core counts is different than
the number of cores in the same frequency domain, use a predefined
value to determine max core count.
Change-Id: I076940b9b77f75ef1e5419bc3175635fb02a7549
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Signed-off-by: Taniya Das <tdas@codeaurora.org>
This is snapshot of the cpufreq-hw as of msm-4.19
'commit b75185bdb985 ("cpufreq: qcom-hw:
Add support for QCOM cpufreq HW driver")'.
Change-Id: Ibd5bcf763513ba959e67eb736e707f30d30a41b0
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Add a missing dma_unmap_single() that was accidentally deleted when adding
tracepoints in the secure_buffer driver.
Change-Id: I8159bee354b4debffb2a55165d2e543d5979daff
Signed-off-by: Chris Goldsworthy <cgoldswo@codeaurora.org>
Use qcom_scm_desc in non-atomic calls to remove legacy convention
details from every SCM wrapper function.
Change-Id: I6962d86b0a8edcedf0d7fe7700794aa8bfdac430
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Improve the calling convention detection to use qcom_scm_call_atomic
and not blindly assume 32-bit mode if the checks fails.
__qcom_scm_is_call_available() cannot be used directly here as we want
an atomic variant of is_call_available(). This is also a necessary
requirement later when merging in legacy convention.
Change-Id: I66beec550d05afde6c680d256183e8ad207d7268
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
qcom_scm_call_smccc should be responsible for converting qcom_scm_desc
into arguments for smc call. Consolidate the dispersed logic to convert
qcom_scm_desc into smc arguments inside qcom_scm_call_smccc.
Change-Id: Ieae23c5fc6c77dbd76ef28dc4040b0f64de872c0
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Remove thin wrapper to qcom_scm_call_do_smccc because it doesn't do
enough of anything interesting to dedicate its own function.
Change-Id: Ia726336e4dc14f0a473a86d6c15605a4a020b055
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Remove knowledge of arm_smccc_res struct from client wrappers so that
client wrappers only work QCOM SCM data structures. SCM calls may have
up to 3 arguments, so qcom_scm_call_smccc is responsible now for filling
those 3 arguments accordingly.
Change-Id: I9712f75f6bea0a6528ccd5a69bc1602493574e19
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Service, command, and owner IDs are all part of qcom_scm_desc struct and
have no special reason to be a function argument (or hard-coded in the
case of owner). Moving them to be part of qcom_scm_desc struct improves
readability.
Change-Id: I422e5b0c2c117ff4eafc80f16b34874ff86643d3
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Definitions throughout qcom_scm are loosely grouped and loosely ordered.
Sort all the functions/definitions by service ID/command ID to improve
sanity when needing to add new functionality to this driver.
Change-Id: I698443e8e650d4bc9e65ac27d68c46d1e45ba8e3
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Improve understandability of SMCCC macros as they are all functions of
how many arguments can be shoved in registers and how many SCM arguments
are supported.
Change-Id: Iac0378fc4c5e20943a64b98223d53caa4955dd53
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Add LEGACY_FUNCNUM to qcom_scm-32.c and move SMCCC_FUNCNUM closer to
other smccc-specific macros.
Change-Id: I385f0b5ba31cb14e304617d5aa67b37dc3c33c9c
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
Qcom's smmu-500 needs to toggle wait-for-safe sequence to
handle TLB invalidation sync's.
Few firmwares allow doing that through SCM interface.
Add API to toggle wait for safe from firmware through a
SCM call.
Change-Id: I425b4dda32f285996178540e551e3168c51da610
Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Acked-by: Andy Gross <agross@kernel.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Patch-mainline: https://lore.kernel.org/patchwork/patch/1129993/
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
There are scnenarios where drivers are required to make a
scm call in atomic context, such as in one of the qcom's
arm-smmu-500 errata [1].
[1] ("https://source.codeaurora.org/quic/la/kernel/msm-4.9/
tree/drivers/iommu/arm-smmu.c?h=msm-4.9#n4842")
Change-Id: I5b313e6629a7ea54055c2cd83d439f5f0d9069c1
Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Acked-by: Andy Gross <agross@kernel.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Patch-mainline: https://lore.kernel.org/patchwork/patch/1129992/
Signed-off-by: Elliot Berman <eberman@codeaurora.org>