[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240222030235.27815-1-semen.protsenko@linaro.org>
Date: Wed, 21 Feb 2024 21:02:20 -0600
From: Sam Protsenko <semen.protsenko@...aro.org>
To: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>,
Sylwester Nawrocki <s.nawrocki@...sung.com>,
Chanwoo Choi <cw00.choi@...sung.com>
Cc: Alim Akhtar <alim.akhtar@...sung.com>,
Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Rob Herring <robh@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Tomasz Figa <tomasz.figa@...il.com>,
linux-samsung-soc@...r.kernel.org,
linux-clk@...r.kernel.org,
devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v2 00/15] clk: samsung: Add CPU clocks for Exynos850
The series implements CPU clock support for Exynos850, adds CPU CMUs to
the clock driver and enables those in dts. This is the first step
towards cpufreq implementation.
If possible, all patches should go through Krzysztof's tree. As
inter-series dependencies go:
* All driver changes (patch 02..14) must be taken together following
the order established in this series
* Patch 15 (dts changes) depends on patch 01 (bindings additions)
* Patch 14 (driver changes) depends on patch 01 (bindings additions)
The series was tested on E850-96 board, via DebugFS with
CLOCK_ALLOW_WRITE_DEBUGFS enabled, by setting different CPU clock rates,
like this:
# cd /sys/kernel/debug/clk/cluster0_clk/
# cat clk_rate
1053000000
# echo 10000000 > clk_rate
# cat clk_rate
130000000
Of course, DVFS/cpufreq is not implemented yet, so the CPU can't be
overclocked too much right now, and the cpufreq interface is not
available too. As per the TRM, the CPU operates at a voltage level of
0.65 V, 0.75 V, 0.85 V and 1.05 V. When the voltage is 0.85 V, A55
quad-core operates at 1.6 GHz and CoreSight at 200 MHz.
To check the actual frequency, the "perf" tool was used:
# perf stat sleep 1
And to check that on a particular CPU core:
# taskset -c 4 perf stat sleep 1
Some takeaways:
* Max functional frequency right now is 1.586 GHz
* 1.742 GHz or more leads to the system freeze, as it requires
more voltage to be operational
* Max possible frequency: 2.210 GHz
* The lowest possible frequency: 130 MHz
* Default boot up frequency: 1.053 GHz
Changes in v2:
- Removed confusing "breakup by patch" list from patch #0 commit message
- Dropped the patch for making clk.h a single included header
- Rebased the series on top of the latest linux-next
Sam Protsenko (15):
dt-bindings: clock: exynos850: Add CMU_CPUCLK0 and CMU_CPUCL1
clk: samsung: Improve clk-cpu.c style
clk: samsung: Pull struct exynos_cpuclk into clk-cpu.c
clk: samsung: Reduce params count in exynos_register_cpu_clock()
clk: samsung: Use single CPU clock notifier callback for all chips
clk: samsung: Group CPU clock functions by chip
clk: samsung: Pass actual CPU clock registers base to CPU_CLK()
clk: samsung: Pass register layout type explicitly to CLK_CPU()
clk: samsung: Keep CPU clock chip specific data in a dedicated struct
clk: samsung: Keep register offsets in chip specific structure
clk: samsung: Pass mask to wait_until_mux_stable()
clk: samsung: Add CPU clock support for Exynos850
clk: samsung: Implement manual PLL control for ARM64 SoCs
clk: samsung: exynos850: Add CMU_CPUCL0 and CMU_CPUCL1
arm64: dts: exynos: Add CPU clocks for Exynos850
.../clock/samsung,exynos850-clock.yaml | 42 ++
arch/arm64/boot/dts/exynos/exynos850.dtsi | 26 +
drivers/clk/samsung/clk-cpu.c | 562 +++++++++++++-----
drivers/clk/samsung/clk-cpu.h | 53 +-
drivers/clk/samsung/clk-exynos-arm64.c | 44 +-
drivers/clk/samsung/clk-exynos3250.c | 2 +-
drivers/clk/samsung/clk-exynos4.c | 9 +-
drivers/clk/samsung/clk-exynos5250.c | 5 +-
drivers/clk/samsung/clk-exynos5420.c | 16 +-
drivers/clk/samsung/clk-exynos5433.c | 10 +-
drivers/clk/samsung/clk-exynos850.c | 440 +++++++++++++-
drivers/clk/samsung/clk.h | 9 +-
include/dt-bindings/clock/exynos850.h | 54 ++
13 files changed, 1040 insertions(+), 232 deletions(-)
--
2.39.2
Powered by blists - more mailing lists