From: Maxime Ripard <maxime@cerno.tech> To: Shuosheng Huang <huangshuosheng@allwinnertech.com> Cc: robh+dt@kernel.org, wens@csie.org, jernej.skrabec@siol.net, tiny.windzz@gmail.com, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 5/6] arm64: dts: allwinner: a100: Add Add CPU Operating Performance Points table Date: Tue, 8 Dec 2020 10:51:23 +0100 [thread overview] Message-ID: <20201208095123.guu7zqskxckd5vsc@gilmour> (raw) In-Reply-To: <20201208072046.14186-1-huangshuosheng@allwinnertech.com> [-- Attachment #1: Type: text/plain, Size: 4511 bytes --] On Tue, Dec 08, 2020 at 03:20:46PM +0800, Shuosheng Huang wrote: > Add an Operating Performance Points table for the CPU cores to > enable Dynamic Voltage & Frequency Scaling on the A100. > > Signed-off-by: Shuosheng Huang <huangshuosheng@allwinnertech.com> > --- > .../allwinner/sun50i-a100-allwinner-perf1.dts | 1 + > .../dts/allwinner/sun50i-a100-cpu-opp.dtsi | 90 +++++++++++++++++++ > 2 files changed, 91 insertions(+) > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > index d34c2bb1079f..301793c72cb7 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > @@ -6,6 +6,7 @@ > /dts-v1/; > > #include "sun50i-a100.dtsi" > +#include "sun50i-a100-cpu-opp.dtsi" This should be on the next patch > /{ > model = "Allwinner A100 Perf1"; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > new file mode 100644 > index 000000000000..e245823d70e8 > --- /dev/null > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > @@ -0,0 +1,90 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +// Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com> > +// Copyright (c) 2020 ShuoSheng Huang <huangshuosheng@allwinnertech.com> > + > +/ { > + cpu_opp_table: cpu-opp-table { > + compatible = "allwinner,sun50i-h6-operating-points"; > + nvmem-cells = <&cpu_speed_grade>; > + opp-shared; > + > + opp@408000000 { This node name will create a DTC warning if compiled with W=1, since the unit-address doesn't match the reg property (there's none), and it's supposed to. > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <408000000>; > + > + opp-microvolt-speed0 = <900000 900000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@600000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <600000000>; > + > + opp-microvolt-speed0 = <900000 900000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@816000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <816000000>; > + > + opp-microvolt-speed0 = <940000 940000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@1080000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1080000000>; > + > + opp-microvolt-speed0 = <1020000 1020000 1200000>; > + opp-microvolt-speed1 = <980000 980000 1200000>; > + opp-microvolt-speed2 = <950000 950000 1200000>; > + }; > + > + opp@1200000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1200000000>; > + > + opp-microvolt-speed0 = <1100000 1100000 1200000>; > + opp-microvolt-speed1 = <1020000 1020000 1200000>; > + opp-microvolt-speed2 = <1000000 1000000 1200000>; > + }; > + > + opp@1320000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1320000000>; > + > + opp-microvolt-speed0 = <1160000 1160000 1200000>; > + opp-microvolt-speed1 = <1060000 1060000 1200000>; > + opp-microvolt-speed2 = <1030000 1030000 1200000>; > + }; > + > + opp@1464000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1464000000>; > + > + opp-microvolt-speed0 = <1180000 1180000 1200000>; > + opp-microvolt-speed1 = <1180000 1180000 1200000>; > + opp-microvolt-speed2 = <1130000 1130000 1200000>; > + }; > + }; > +}; Can you run cpufreq-ljt-stress-test from https://github.com/ssvb/cpuburn-arm and paste the result in the cover letter to make sure all the OPPs are working fine? Also, at what frequency is the bootloader expected to set the CPU when booting? If it's anything lower than 1464MHz, we should separate the OPPs higher than the initial frequency. A board without the regulator set would try to use those OPPs without raising the voltage of the CPU, resulting in fairly hard to debug crashes. Maxime [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech> To: Shuosheng Huang <huangshuosheng@allwinnertech.com> Cc: devicetree@vger.kernel.org, jernej.skrabec@siol.net, tiny.windzz@gmail.com, linux-kernel@vger.kernel.org, wens@csie.org, robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 5/6] arm64: dts: allwinner: a100: Add Add CPU Operating Performance Points table Date: Tue, 8 Dec 2020 10:51:23 +0100 [thread overview] Message-ID: <20201208095123.guu7zqskxckd5vsc@gilmour> (raw) In-Reply-To: <20201208072046.14186-1-huangshuosheng@allwinnertech.com> [-- Attachment #1.1: Type: text/plain, Size: 4511 bytes --] On Tue, Dec 08, 2020 at 03:20:46PM +0800, Shuosheng Huang wrote: > Add an Operating Performance Points table for the CPU cores to > enable Dynamic Voltage & Frequency Scaling on the A100. > > Signed-off-by: Shuosheng Huang <huangshuosheng@allwinnertech.com> > --- > .../allwinner/sun50i-a100-allwinner-perf1.dts | 1 + > .../dts/allwinner/sun50i-a100-cpu-opp.dtsi | 90 +++++++++++++++++++ > 2 files changed, 91 insertions(+) > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > index d34c2bb1079f..301793c72cb7 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts > @@ -6,6 +6,7 @@ > /dts-v1/; > > #include "sun50i-a100.dtsi" > +#include "sun50i-a100-cpu-opp.dtsi" This should be on the next patch > /{ > model = "Allwinner A100 Perf1"; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > new file mode 100644 > index 000000000000..e245823d70e8 > --- /dev/null > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a100-cpu-opp.dtsi > @@ -0,0 +1,90 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +// Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com> > +// Copyright (c) 2020 ShuoSheng Huang <huangshuosheng@allwinnertech.com> > + > +/ { > + cpu_opp_table: cpu-opp-table { > + compatible = "allwinner,sun50i-h6-operating-points"; > + nvmem-cells = <&cpu_speed_grade>; > + opp-shared; > + > + opp@408000000 { This node name will create a DTC warning if compiled with W=1, since the unit-address doesn't match the reg property (there's none), and it's supposed to. > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <408000000>; > + > + opp-microvolt-speed0 = <900000 900000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@600000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <600000000>; > + > + opp-microvolt-speed0 = <900000 900000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@816000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <816000000>; > + > + opp-microvolt-speed0 = <940000 940000 1200000>; > + opp-microvolt-speed1 = <900000 900000 1200000>; > + opp-microvolt-speed2 = <900000 900000 1200000>; > + }; > + > + opp@1080000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1080000000>; > + > + opp-microvolt-speed0 = <1020000 1020000 1200000>; > + opp-microvolt-speed1 = <980000 980000 1200000>; > + opp-microvolt-speed2 = <950000 950000 1200000>; > + }; > + > + opp@1200000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1200000000>; > + > + opp-microvolt-speed0 = <1100000 1100000 1200000>; > + opp-microvolt-speed1 = <1020000 1020000 1200000>; > + opp-microvolt-speed2 = <1000000 1000000 1200000>; > + }; > + > + opp@1320000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1320000000>; > + > + opp-microvolt-speed0 = <1160000 1160000 1200000>; > + opp-microvolt-speed1 = <1060000 1060000 1200000>; > + opp-microvolt-speed2 = <1030000 1030000 1200000>; > + }; > + > + opp@1464000000 { > + clock-latency-ns = <244144>; /* 8 32k periods */ > + opp-hz = /bits/ 64 <1464000000>; > + > + opp-microvolt-speed0 = <1180000 1180000 1200000>; > + opp-microvolt-speed1 = <1180000 1180000 1200000>; > + opp-microvolt-speed2 = <1130000 1130000 1200000>; > + }; > + }; > +}; Can you run cpufreq-ljt-stress-test from https://github.com/ssvb/cpuburn-arm and paste the result in the cover letter to make sure all the OPPs are working fine? Also, at what frequency is the bootloader expected to set the CPU when booting? If it's anything lower than 1464MHz, we should separate the OPPs higher than the initial frequency. A board without the regulator set would try to use those OPPs without raising the voltage of the CPU, resulting in fairly hard to debug crashes. Maxime [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-12-08 9:52 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-08 7:20 [PATCH v4 5/6] arm64: dts: allwinner: a100: Add Add CPU Operating Performance Points table Shuosheng Huang 2020-12-08 7:20 ` Shuosheng Huang 2020-12-08 9:51 ` Maxime Ripard [this message] 2020-12-08 9:51 ` Maxime Ripard
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201208095123.guu7zqskxckd5vsc@gilmour \ --to=maxime@cerno.tech \ --cc=devicetree@vger.kernel.org \ --cc=huangshuosheng@allwinnertech.com \ --cc=jernej.skrabec@siol.net \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=robh+dt@kernel.org \ --cc=tiny.windzz@gmail.com \ --cc=wens@csie.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.