From: Rajan Yadav via B4 Relay <devnull+rajanyadav0307.gmail.com@kernel.org>
To: Yangtao Li <tiny.windzz@gmail.com>,
Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>,
Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Chen-Yu Tsai <wens@kernel.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Maxime Ripard <mripard@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Andre Przywara <andre.przywara@arm.com>
Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org,
Cody Eksal <masterr3c0rd@epochal.quest>,
Alexander Sverdlin <alex@sverdlin.org>,
Rajan Yadav <rajanyadav0307@gmail.com>
Subject: [PATCH 1/6] dt-bindings: opp: h6: Add A133 operating points
Date: Wed, 04 Nov 2026 22:40:56 -0600 [thread overview]
Message-ID: <20261104-a133-series-v1-1-58217cb33a87@gmail.com> (raw)
In-Reply-To: <20261104-a133-series-v1-0-58217cb33a87@gmail.com>
From: Rajan Yadav <rajanyadav0307@gmail.com>
The vendor BSP for the A100/A133 family (sun50iw10) selects the CPU
speed grade from four efuse fields and the die revision: the speed bin
(SID offset 0x1c, which also holds the ICPU current), the chip marking
ID (0x00), a value programmed at production that the BSP calls PCPU
(0x20) and a bin extension bit (0x28). It knows 11 grades, a0-a6 and
b0-b3. The A100 operating points describe only three speed bins, taken
from 0x1c.
Add allwinner,sun50i-a133-operating-points for this. In its tables the
N of opp-microvolt-speedN is the vendor grade: 0-5 are a0-a5 (a6 has
the same OPPs and voltages as a5) and 6-9 are b0-b3. The four cells are
named, with the speed bin first. The meaning of the PCPU field is not
documented; the name follows the vendor BSP.
Indices 0-2 are the vendor grades a0-a2, which have the voltages of the
three A100 speed bins. So allwinner,sun50i-a100-operating-points is a
valid fallback: software that knows only the A100 compatible reads the
first cell, selects one of speed0-2 with the A100 rule and gets the
OPPs and voltages of the A100 table today, with 1008 instead of
1080 MHz. That is the A100 selection, not the vendor's; the new
compatible adds the vendor's. The binding requires indices 0-2 to stay
usable this way.
The new compatible is SoC specific, like the root compatible
allwinner,sun50i-a133; the A100 compatible stays as it is for existing
DTBs. The schema now also limits the other compatibles to the single
unnamed cell that all in-tree users have.
Claude Code (Anthropic) drafted this change and its message from the
vendor BSP sources (field layout and numbers only, no code copied); I
reviewed it and checked it with dt_binding_check and dtbs_check.
Signed-off-by: Rajan Yadav <rajanyadav0307@gmail.com>
---
.../opp/allwinner,sun50i-h6-operating-points.yaml | 94 ++++++++++++++++++++--
1 file changed, 86 insertions(+), 8 deletions(-)
diff --git a/Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml b/Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml
index 75ab552f6ec..5fa6a1074da 100644
--- a/Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml
+++ b/Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml
@@ -16,24 +16,70 @@ description: |
Voltage Scaling Tables define the voltage and frequency values based
on the speedbin blown in the efuse combination.
+ With allwinner,sun50i-a133-operating-points, the speed bin index N of
+ opp-microvolt-speedN and opp-supported-hw is the speed grade of the
+ Allwinner BSP: 0-5 are a0-a5 (a6 uses the a5 values) and 6-9 are b0-b3.
+ Indices 0-2 must be usable as the A100 speed bins 0-2, because software
+ using the A100 fallback compatible selects only these.
+
allOf:
- $ref: opp-v2-base.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: allwinner,sun50i-a133-operating-points
+ then:
+ properties:
+ nvmem-cells:
+ minItems: 4
+ required:
+ - nvmem-cell-names
+ else:
+ properties:
+ nvmem-cells:
+ maxItems: 1
+ nvmem-cell-names: false
properties:
compatible:
- enum:
- - allwinner,sun50i-a100-operating-points
- - allwinner,sun50i-h6-operating-points
- - allwinner,sun50i-h616-operating-points
+ oneOf:
+ - enum:
+ - allwinner,sun50i-a100-operating-points
+ - allwinner,sun50i-h6-operating-points
+ - allwinner,sun50i-h616-operating-points
+ - items:
+ - const: allwinner,sun50i-a133-operating-points
+ - const: allwinner,sun50i-a100-operating-points
nvmem-cells:
description: |
- A phandle pointing to a nvmem-cells node representing the efuse
- register that has information about the speedbin that is used
- to select the right frequency/voltage value pair. Please refer
- to the nvmem-cells bindings in
+ Phandles pointing to nvmem-cells nodes representing the efuse
+ registers that have information about the speedbin that is used
+ to select the right frequency/voltage value pair. Please refer to
+ the nvmem-cells bindings in
Documentation/devicetree/bindings/nvmem/nvmem.yaml and also the
examples below.
+ minItems: 1
+ items:
+ - description:
+ Speed bin, or the chip marking ID on the H616. With the A133
+ compatible, bits 15:12 are the CPU bin and bits 11:0 the ICPU
+ current in units of 0.1 mA.
+ - description: Chip marking ID.
+ - description:
+ Value programmed at production, called PCPU by Allwinner. Bits
+ 11:0 are used together with the ICPU current to select the speed
+ grade; their unit is not documented.
+ - description:
+ Bin extension. Bit 31 is used to select the speed grade.
+
+ nvmem-cell-names:
+ items:
+ - const: bin
+ - const: marking
+ - const: pcpu
+ - const: bin-ext
opp-shared: true
@@ -132,4 +178,36 @@ examples:
};
};
+ - |
+ opp-table {
+ compatible = "allwinner,sun50i-a133-operating-points",
+ "allwinner,sun50i-a100-operating-points";
+ nvmem-cells = <&cpu_speed_grade>, <&chip_marking>,
+ <&cpu_pcpu>, <&cpu_bin_ext>;
+ nvmem-cell-names = "bin", "marking", "pcpu", "bin-ext";
+ opp-shared;
+
+ opp-408000000 {
+ clock-latency-ns = <244144>; /* 8 32k periods */
+ opp-hz = /bits/ 64 <408000000>;
+
+ opp-microvolt-speed0 = <900000>;
+ opp-microvolt-speed1 = <900000>;
+ opp-microvolt-speed2 = <900000>;
+ opp-microvolt-speed8 = <940000>;
+ opp-supported-hw = <0x107>;
+ };
+
+ opp-1512000000 {
+ clock-latency-ns = <244144>; /* 8 32k periods */
+ opp-hz = /bits/ 64 <1512000000>;
+
+ opp-microvolt-speed6 = <1180000>;
+ opp-microvolt-speed7 = <1130000 1130000 1140000>;
+ opp-microvolt-speed8 = <1100000>;
+ opp-microvolt-speed9 = <1080000>;
+ opp-supported-hw = <0x3c0>;
+ };
+ };
+
...
--
2.34.1
next prev parent reply other threads:[~2026-11-05 4:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-05 4:40 [PATCH 0/6] sunxi: A133: Add CPU speed grade detection and OPP table Rajan Yadav via B4 Relay
2026-11-05 4:40 ` Rajan Yadav via B4 Relay [this message]
2026-11-05 4:40 ` [PATCH 2/6] cpufreq: sun50i: Move nvmem cell reading into a helper Rajan Yadav via B4 Relay
2026-11-05 4:40 ` [PATCH 3/6] cpufreq: sun50i: Add A133 speed grade detection Rajan Yadav via B4 Relay
2026-11-05 4:40 ` [PATCH 4/6] arm64: dts: allwinner: a100: Add A133 speed grade efuse cells Rajan Yadav via B4 Relay
2026-11-05 4:41 ` [PATCH 5/6] arm64: dts: allwinner: a133: Add CPU OPP table Rajan Yadav via B4 Relay
2026-11-05 4:41 ` [PATCH 6/6] arm64: dts: allwinner: a133: Use the A133 " Rajan Yadav via B4 Relay
2026-11-05 11:30 ` [PATCH 0/6] sunxi: A133: Add CPU speed grade detection and " Andre Przywara
2026-11-05 14:49 ` Rajan Yadav
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=20261104-a133-series-v1-1-58217cb33a87@gmail.com \
--to=devnull+rajanyadav0307.gmail.com@kernel.org \
--cc=alex@sverdlin.org \
--cc=andre.przywara@arm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jernej.skrabec@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=masterr3c0rd@epochal.quest \
--cc=mripard@kernel.org \
--cc=nm@ti.com \
--cc=rafael@kernel.org \
--cc=rajanyadav0307@gmail.com \
--cc=robh@kernel.org \
--cc=samuel@sholland.org \
--cc=sboyd@kernel.org \
--cc=tiny.windzz@gmail.com \
--cc=viresh.kumar@linaro.org \
--cc=vireshk@kernel.org \
--cc=wens@kernel.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®