Unsigned long have a different size in 32 bit system and this cause the
malfunction of debugcc returning wrong frequency. Use 64bit unsigned int
to correctly support 32 bit system and provide correct frequency.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Enforcing a primary+leaf configuration does not walk for all the cases.
Some clocks (msm8996 CPU) have more muxes to be powered on. Other (MCCC)
do not require GCC at all. Make clock measurement more versatile by
reworking GCC + optional leaf into a chain of muxes.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Fix the following error:
../debugcc.c: In function 'mmap_mux':
../debugcc.c:295:40: error: format '%zx' expects argument of type 'size_t', but argument 2 has type 'long unsigned int' [-Werror=format=]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Switch to meson as a build system. Define a list of supported platforms
and use it to generate platforms list and the symlink targets.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
SM6115 and its other bengal friends have 5 debug muxes, one of which
(memory controller) is out of scope here, as it's not defined in dt.
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Provide a way to skip programming enable/mux registers (as we do for
div_reg) if the corresponding mask is zero.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
MCCC (memory clock controller) uses non-standard measuring process (just
read the rate and return). Provide a way to override default
measurement proces with the leaf cc hook.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Split measurement function into clock rate calculation
(measure_default()) and the wrapper that prepares muxes and then
disables them. This fixes the issue that muxes will not be disabled for
the clocks that are not turned off (because measure function will return
early for disabled clocks).
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
MSM8996 requires additional setup to measure CPU clocks. Add hooks to
customize the mux enable/disable and measurement process.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Preserve the contents of the xo_div4 register. Downstream kernel
preserves the contents of the register. Writing just 1 makes the msm8996
report the value divided by 4 rather than the actual clock frequency.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Add a way to print clocks related to a particular CC. Add -b option,
which takes 'block' name: cam, disp, cpu, gpu, video. Pass "-b core" to
limit debugcc to "core" (gcc) clocks.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Add in msm8936 downstream clock-mapping definitions. This also covers
msm8939, at the level of the fundamental clock layout, there is no
difference between msm8936 and msm8939.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>