mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-10 11:09:57 +08:00
632c4c91e7
(cherry picked from commit ecd317d8f4670f249e37ca6141d64701c646350e)
129 lines
3.7 KiB
Diff
129 lines
3.7 KiB
Diff
From 7240598ba4e6c477c6809dc019505cf366fdb7c0 Mon Sep 17 00:00:00 2001
|
|
From: Chen-Yu Tsai <wens@csie.org>
|
|
Date: Sat, 18 Jul 2020 00:00:51 +0800
|
|
Subject: [PATCH] arm64: dts: allwinner: h5: Add CPU Operating Performance
|
|
Points table
|
|
|
|
Add an OPP (Operating Performance Points) table for the CPU cores for
|
|
boards to include to DVFS (Dynamic Voltage & Frequency Scaling) on the
|
|
H5. The table originates from Armbian, but the maximum voltage is raised
|
|
slightly to account for boards using slightly higher voltages.
|
|
|
|
The table and tie in to the CPU cores are put in a separate dtsi file
|
|
that board files can include to opt in. Or they can define their own
|
|
tables if the standard one does not fit.
|
|
|
|
This has been tested on the Libre Computer ALL-H3-CC-H5 and the Bananapi
|
|
M2+ v1.2 H5, both with adequate cooling. The former has a fixed 1.2V
|
|
regulator, while the latter has a GPIO controlled regulator switchable
|
|
between 1.1V and 1.3V.
|
|
|
|
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
|
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|
Link: https://lore.kernel.org/r/20200717160053.31191-7-wens@kernel.org
|
|
---
|
|
.../boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi | 79 +++++++++++++++++++
|
|
1 file changed, 79 insertions(+)
|
|
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi
|
|
|
|
--- /dev/null
|
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi
|
|
@@ -0,0 +1,97 @@
|
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
+// Copyright (C) 2020 Chen-Yu Tsai <wens@csie.org>
|
|
+
|
|
+/ {
|
|
+ cpu_opp_table: cpu-opp-table {
|
|
+ compatible = "operating-points-v2";
|
|
+ opp-shared;
|
|
+
|
|
+ opp-408000000 {
|
|
+ opp-hz = /bits/ 64 <408000000>;
|
|
+ opp-microvolt = <1000000 1000000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-648000000 {
|
|
+ opp-hz = /bits/ 64 <648000000>;
|
|
+ opp-microvolt = <1040000 1040000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-816000000 {
|
|
+ opp-hz = /bits/ 64 <816000000>;
|
|
+ opp-microvolt = <1080000 1080000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-912000000 {
|
|
+ opp-hz = /bits/ 64 <912000000>;
|
|
+ opp-microvolt = <1120000 1120000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-960000000 {
|
|
+ opp-hz = /bits/ 64 <960000000>;
|
|
+ opp-microvolt = <1160000 1160000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1008000000 {
|
|
+ opp-hz = /bits/ 64 <1008000000>;
|
|
+ opp-microvolt = <1200000 1200000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1056000000 {
|
|
+ opp-hz = /bits/ 64 <1056000000>;
|
|
+ opp-microvolt = <1240000 1240000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1104000000 {
|
|
+ opp-hz = /bits/ 64 <1104000000>;
|
|
+ opp-microvolt = <1260000 1260000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1152000000 {
|
|
+ opp-hz = /bits/ 64 <1152000000>;
|
|
+ opp-microvolt = <1300000 1300000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1200000000 {
|
|
+ opp-hz = /bits/ 64 <1200000000>;
|
|
+ opp-microvolt = <1300000 1300000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1248000000 {
|
|
+ opp-hz = /bits/ 64 <1248000000>;
|
|
+ opp-microvolt = <1300000 1300000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+
|
|
+ opp-1296000000 {
|
|
+ opp-hz = /bits/ 64 <1296000000>;
|
|
+ opp-microvolt = <1300000 1300000 1310000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&cpu0 {
|
|
+ operating-points-v2 = <&cpu_opp_table>;
|
|
+};
|
|
+
|
|
+&cpu1 {
|
|
+ operating-points-v2 = <&cpu_opp_table>;
|
|
+};
|
|
+
|
|
+&cpu2 {
|
|
+ operating-points-v2 = <&cpu_opp_table>;
|
|
+};
|
|
+
|
|
+&cpu3 {
|
|
+ operating-points-v2 = <&cpu_opp_table>;
|
|
+};
|