[PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles

Krzysztof Kozlowski posted 1 patch 3 weeks, 3 days ago
.../devicetree/bindings/arm/cpus.yaml         | 290 +++++++++---------
1 file changed, 147 insertions(+), 143 deletions(-)
[PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Krzysztof Kozlowski 3 weeks, 3 days ago
Move four compatibles for Qualcomm Krait, Kryo, Oryon and Scorpion
custom CPU cores out of the enum into separate one with deprecated: true
annotation, because these are too generic names.

These are names of the families and there are significant differences
within individual processors, e.g. Kryo6xx can based on architectures
from Cortex-X2, A710, A510 to A78 and probably more.

Just like other vendor processors are differentiated, also Qualcomm CPUs
should come with specific compatibles.

Cc: Bjorn Andersson <andersson@kernel.org>
Cc: Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
 .../devicetree/bindings/arm/cpus.yaml         | 290 +++++++++---------
 1 file changed, 147 insertions(+), 143 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/cpus.yaml b/Documentation/devicetree/bindings/arm/cpus.yaml
index 736b7ab1bd0a..fde3a68f4f5e 100644
--- a/Documentation/devicetree/bindings/arm/cpus.yaml
+++ b/Documentation/devicetree/bindings/arm/cpus.yaml
@@ -79,149 +79,153 @@ properties:
       All other bits in the reg cells must be set to 0.
 
   compatible:
-    enum:
-      - apm,potenza
-      - apm,strega
-      - apple,avalanche
-      - apple,blizzard
-      - apple,cyclone
-      - apple,firestorm
-      - apple,hurricane-zephyr
-      - apple,icestorm
-      - apple,mistral
-      - apple,monsoon
-      - apple,twister
-      - apple,typhoon
-      - arm,arm710t
-      - arm,arm720t
-      - arm,arm740t
-      - arm,arm7ej-s
-      - arm,arm7tdmi
-      - arm,arm7tdmi-s
-      - arm,arm9es
-      - arm,arm9ej-s
-      - arm,arm920t
-      - arm,arm922t
-      - arm,arm925
-      - arm,arm926e-s
-      - arm,arm926ej-s
-      - arm,arm940t
-      - arm,arm946e-s
-      - arm,arm966e-s
-      - arm,arm968e-s
-      - arm,arm9tdmi
-      - arm,arm1020e
-      - arm,arm1020t
-      - arm,arm1022e
-      - arm,arm1026ej-s
-      - arm,arm1136j-s
-      - arm,arm1136jf-s
-      - arm,arm1156t2-s
-      - arm,arm1156t2f-s
-      - arm,arm1176jzf
-      - arm,arm1176jz-s
-      - arm,arm1176jzf-s
-      - arm,arm11mpcore
-      - arm,armv8 # Only for s/w models
-      - arm,c1-nano
-      - arm,c1-premium
-      - arm,c1-pro
-      - arm,c1-ultra
-      - arm,cortex-a5
-      - arm,cortex-a7
-      - arm,cortex-a8
-      - arm,cortex-a9
-      - arm,cortex-a12
-      - arm,cortex-a15
-      - arm,cortex-a17
-      - arm,cortex-a32
-      - arm,cortex-a34
-      - arm,cortex-a35
-      - arm,cortex-a53
-      - arm,cortex-a55
-      - arm,cortex-a57
-      - arm,cortex-a65
-      - arm,cortex-a72
-      - arm,cortex-a73
-      - arm,cortex-a75
-      - arm,cortex-a76
-      - arm,cortex-a77
-      - arm,cortex-a78
-      - arm,cortex-a78ae
-      - arm,cortex-a78c
-      - arm,cortex-a320
-      - arm,cortex-a510
-      - arm,cortex-a520
-      - arm,cortex-a520ae
-      - arm,cortex-a710
-      - arm,cortex-a715
-      - arm,cortex-a720
-      - arm,cortex-a720ae
-      - arm,cortex-a725
-      - arm,cortex-m0
-      - arm,cortex-m0+
-      - arm,cortex-m1
-      - arm,cortex-m3
-      - arm,cortex-m4
-      - arm,cortex-r4
-      - arm,cortex-r5
-      - arm,cortex-r7
-      - arm,cortex-r52
-      - arm,cortex-x1
-      - arm,cortex-x1c
-      - arm,cortex-x2
-      - arm,cortex-x3
-      - arm,cortex-x4
-      - arm,cortex-x925
-      - arm,neoverse-e1
-      - arm,neoverse-n1
-      - arm,neoverse-n2
-      - arm,neoverse-n3
-      - arm,neoverse-v1
-      - arm,neoverse-v2
-      - arm,neoverse-v3
-      - arm,neoverse-v3ae
-      - arm,rainier
-      - brcm,brahma-b15
-      - brcm,brahma-b53
-      - brcm,vulcan
-      - cavium,thunder
-      - cavium,thunder2
-      - faraday,fa526
-      - intel,sa110
-      - intel,sa1100
-      - marvell,feroceon
-      - marvell,mohawk
-      - marvell,pj4a
-      - marvell,pj4b
-      - marvell,sheeva-v5
-      - marvell,sheeva-v7
-      - nvidia,tegra132-denver
-      - nvidia,tegra186-denver
-      - nvidia,tegra194-carmel
-      - qcom,krait
-      - qcom,kryo
-      - qcom,kryo240
-      - qcom,kryo250
-      - qcom,kryo260
-      - qcom,kryo280
-      - qcom,kryo360
-      - qcom,kryo385
-      - qcom,kryo465
-      - qcom,kryo468
-      - qcom,kryo470
-      - qcom,kryo485
-      - qcom,kryo560
-      - qcom,kryo570
-      - qcom,kryo660
-      - qcom,kryo670
-      - qcom,kryo685
-      - qcom,kryo780
-      - qcom,oryon
-      - qcom,scorpion
-      - samsung,mongoose-m2
-      - samsung,mongoose-m3
-      - samsung,mongoose-m5
+    oneOf:
+      - enum:
+          - apm,potenza
+          - apm,strega
+          - apple,avalanche
+          - apple,blizzard
+          - apple,cyclone
+          - apple,firestorm
+          - apple,hurricane-zephyr
+          - apple,icestorm
+          - apple,mistral
+          - apple,monsoon
+          - apple,twister
+          - apple,typhoon
+          - arm,arm710t
+          - arm,arm720t
+          - arm,arm740t
+          - arm,arm7ej-s
+          - arm,arm7tdmi
+          - arm,arm7tdmi-s
+          - arm,arm9es
+          - arm,arm9ej-s
+          - arm,arm920t
+          - arm,arm922t
+          - arm,arm925
+          - arm,arm926e-s
+          - arm,arm926ej-s
+          - arm,arm940t
+          - arm,arm946e-s
+          - arm,arm966e-s
+          - arm,arm968e-s
+          - arm,arm9tdmi
+          - arm,arm1020e
+          - arm,arm1020t
+          - arm,arm1022e
+          - arm,arm1026ej-s
+          - arm,arm1136j-s
+          - arm,arm1136jf-s
+          - arm,arm1156t2-s
+          - arm,arm1156t2f-s
+          - arm,arm1176jzf
+          - arm,arm1176jz-s
+          - arm,arm1176jzf-s
+          - arm,arm11mpcore
+          - arm,armv8 # Only for s/w models
+          - arm,c1-nano
+          - arm,c1-premium
+          - arm,c1-pro
+          - arm,c1-ultra
+          - arm,cortex-a5
+          - arm,cortex-a7
+          - arm,cortex-a8
+          - arm,cortex-a9
+          - arm,cortex-a12
+          - arm,cortex-a15
+          - arm,cortex-a17
+          - arm,cortex-a32
+          - arm,cortex-a34
+          - arm,cortex-a35
+          - arm,cortex-a53
+          - arm,cortex-a55
+          - arm,cortex-a57
+          - arm,cortex-a65
+          - arm,cortex-a72
+          - arm,cortex-a73
+          - arm,cortex-a75
+          - arm,cortex-a76
+          - arm,cortex-a77
+          - arm,cortex-a78
+          - arm,cortex-a78ae
+          - arm,cortex-a78c
+          - arm,cortex-a320
+          - arm,cortex-a510
+          - arm,cortex-a520
+          - arm,cortex-a520ae
+          - arm,cortex-a710
+          - arm,cortex-a715
+          - arm,cortex-a720
+          - arm,cortex-a720ae
+          - arm,cortex-a725
+          - arm,cortex-m0
+          - arm,cortex-m0+
+          - arm,cortex-m1
+          - arm,cortex-m3
+          - arm,cortex-m4
+          - arm,cortex-r4
+          - arm,cortex-r5
+          - arm,cortex-r7
+          - arm,cortex-r52
+          - arm,cortex-x1
+          - arm,cortex-x1c
+          - arm,cortex-x2
+          - arm,cortex-x3
+          - arm,cortex-x4
+          - arm,cortex-x925
+          - arm,neoverse-e1
+          - arm,neoverse-n1
+          - arm,neoverse-n2
+          - arm,neoverse-n3
+          - arm,neoverse-v1
+          - arm,neoverse-v2
+          - arm,neoverse-v3
+          - arm,neoverse-v3ae
+          - arm,rainier
+          - brcm,brahma-b15
+          - brcm,brahma-b53
+          - brcm,vulcan
+          - cavium,thunder
+          - cavium,thunder2
+          - faraday,fa526
+          - intel,sa110
+          - intel,sa1100
+          - marvell,feroceon
+          - marvell,mohawk
+          - marvell,pj4a
+          - marvell,pj4b
+          - marvell,sheeva-v5
+          - marvell,sheeva-v7
+          - nvidia,tegra132-denver
+          - nvidia,tegra186-denver
+          - nvidia,tegra194-carmel
+          - qcom,kryo240
+          - qcom,kryo250
+          - qcom,kryo260
+          - qcom,kryo280
+          - qcom,kryo360
+          - qcom,kryo385
+          - qcom,kryo465
+          - qcom,kryo468
+          - qcom,kryo470
+          - qcom,kryo485
+          - qcom,kryo560
+          - qcom,kryo570
+          - qcom,kryo660
+          - qcom,kryo670
+          - qcom,kryo685
+          - qcom,kryo780
+          - samsung,mongoose-m2
+          - samsung,mongoose-m3
+          - samsung,mongoose-m5
+      - enum:
+          - qcom,krait
+          - qcom,kryo
+          - qcom,oryon
+          - qcom,scorpion
+        # Too generic, do not use in new code
+        deprecated: true
 
   enable-method:
     $ref: /schemas/types.yaml#/definitions/string
-- 
2.51.0
Re: [PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Konrad Dybcio 3 weeks, 3 days ago
On 1/15/26 9:35 AM, Krzysztof Kozlowski wrote:
> Move four compatibles for Qualcomm Krait, Kryo, Oryon and Scorpion
> custom CPU cores out of the enum into separate one with deprecated: true
> annotation, because these are too generic names.
> 
> These are names of the families and there are significant differences
> within individual processors, e.g. Kryo6xx can based on architectures
> from Cortex-X2, A710, A510 to A78 and probably more.
> 
> Just like other vendor processors are differentiated, also Qualcomm CPUs
> should come with specific compatibles.
> 
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Konrad Dybcio <konradybcio@kernel.org>
> Cc: linux-arm-msm@vger.kernel.org
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> ---

[...]

> -      - arm,armv8 # Only for s/w models

I'm still bitter about this one existing

$ rg '"arm,armv8"' arch -l | sort

arch/arm64/boot/dts/arm/foundation-v8.dtsi

This makes some sense (see [1])

arch/arm64/boot/dts/arm/fvp-base-revc.dts
arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts

These seem to be spawned with a specific virtualized Cortex type

arch/arm64/boot/dts/nvidia/tegra264.dtsi

:(

[1] https://developer.arm.com/documentation/100961/1130/Foundation-Platform-introduction/Platform-overview/Processor-models-in-the-Foundation-Platform?lang=en

Konrad
Re: [PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Rob Herring 3 weeks, 2 days ago
On Thu, Jan 15, 2026 at 11:19:47AM +0100, Konrad Dybcio wrote:
> On 1/15/26 9:35 AM, Krzysztof Kozlowski wrote:
> > Move four compatibles for Qualcomm Krait, Kryo, Oryon and Scorpion
> > custom CPU cores out of the enum into separate one with deprecated: true
> > annotation, because these are too generic names.
> > 
> > These are names of the families and there are significant differences
> > within individual processors, e.g. Kryo6xx can based on architectures
> > from Cortex-X2, A710, A510 to A78 and probably more.
> > 
> > Just like other vendor processors are differentiated, also Qualcomm CPUs
> > should come with specific compatibles.
> > 
> > Cc: Bjorn Andersson <andersson@kernel.org>
> > Cc: Konrad Dybcio <konradybcio@kernel.org>
> > Cc: linux-arm-msm@vger.kernel.org
> > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> > ---
> 
> [...]
> 
> > -      - arm,armv8 # Only for s/w models
> 
> I'm still bitter about this one existing
> 
> $ rg '"arm,armv8"' arch -l | sort
> 
> arch/arm64/boot/dts/arm/foundation-v8.dtsi
> 
> This makes some sense (see [1])
> 
> arch/arm64/boot/dts/arm/fvp-base-revc.dts
> arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
> 
> These seem to be spawned with a specific virtualized Cortex type

No, these are "generic" cores where arch features can be turned on/off 
and configured.

> 
> arch/arm64/boot/dts/nvidia/tegra264.dtsi

It's hard to keep new ones from sneaking in...

Rob
Re: [PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Krzysztof Kozlowski 3 weeks, 2 days ago
On 15/01/2026 11:19, Konrad Dybcio wrote:
> These seem to be spawned with a specific virtualized Cortex type
> 
> arch/arm64/boot/dts/nvidia/tegra264.dtsi
> 

That's a bit off-topic, but anyway I will fix it.

Best regards,
Krzysztof
Re: [PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Dmitry Baryshkov 3 weeks, 3 days ago
On Thu, Jan 15, 2026 at 09:35:04AM +0100, Krzysztof Kozlowski wrote:
> Move four compatibles for Qualcomm Krait, Kryo, Oryon and Scorpion
> custom CPU cores out of the enum into separate one with deprecated: true
> annotation, because these are too generic names.
> 
> These are names of the families and there are significant differences
> within individual processors, e.g. Kryo6xx can based on architectures
> from Cortex-X2, A710, A510 to A78 and probably more.
> 
> Just like other vendor processors are differentiated, also Qualcomm CPUs
> should come with specific compatibles.
> 
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Konrad Dybcio <konradybcio@kernel.org>
> Cc: linux-arm-msm@vger.kernel.org
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> ---
>  .../devicetree/bindings/arm/cpus.yaml         | 290 +++++++++---------
>  1 file changed, 147 insertions(+), 143 deletions(-)
> 
> +      - enum:
> +          - qcom,krait
> +          - qcom,kryo
> +          - qcom,oryon
> +          - qcom,scorpion
> +        # Too generic, do not use in new code
> +        deprecated: true

I wouldn't even question Kryo and Oryon, it's obvious (or at least I
have an idea) what should be used for those cores. Except that "Kryo"
was an external name for MSM8996 cores. But for Krait and Scorpion I
really have doubts and questions.

For Scorpio I'd have a vague idea of having qcom,scorpion and
qcom,scorpion-mp (or -uni and -mp if you dislike the bare scorpion).

For Krait...  I really don't know. Your proposals?

>  
>    enable-method:
>      $ref: /schemas/types.yaml#/definitions/string
> -- 
> 2.51.0
> 

-- 
With best wishes
Dmitry
Re: [PATCH] dt-bindings: arm: cpus: Deprecate Qualcomm generic compatibles
Posted by Krzysztof Kozlowski 3 weeks, 3 days ago
On 15/01/2026 10:36, Dmitry Baryshkov wrote:
> On Thu, Jan 15, 2026 at 09:35:04AM +0100, Krzysztof Kozlowski wrote:
>> Move four compatibles for Qualcomm Krait, Kryo, Oryon and Scorpion
>> custom CPU cores out of the enum into separate one with deprecated: true
>> annotation, because these are too generic names.
>>
>> These are names of the families and there are significant differences
>> within individual processors, e.g. Kryo6xx can based on architectures
>> from Cortex-X2, A710, A510 to A78 and probably more.
>>
>> Just like other vendor processors are differentiated, also Qualcomm CPUs
>> should come with specific compatibles.
>>
>> Cc: Bjorn Andersson <andersson@kernel.org>
>> Cc: Konrad Dybcio <konradybcio@kernel.org>
>> Cc: linux-arm-msm@vger.kernel.org
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
>> ---
>>  .../devicetree/bindings/arm/cpus.yaml         | 290 +++++++++---------
>>  1 file changed, 147 insertions(+), 143 deletions(-)
>>
>> +      - enum:
>> +          - qcom,krait
>> +          - qcom,kryo
>> +          - qcom,oryon
>> +          - qcom,scorpion
>> +        # Too generic, do not use in new code
>> +        deprecated: true
> 
> I wouldn't even question Kryo and Oryon, it's obvious (or at least I
> have an idea) what should be used for those cores. Except that "Kryo"
> was an external name for MSM8996 cores. But for Krait and Scorpion I
> really have doubts and questions.

Look for "Snapdragon CPU ID" doc in internal Confluence. There are also
few more docs listing all these. Quickly looking I could not find the
actual differences in capabilities (it might need comparing each CPU),
but processes, internal codenames, tech differ between Kraits.

Whether these differences are big enough (e.g. different instruction
set?)... I am open for suggestions.

> 
> For Scorpio I'd have a vague idea of having qcom,scorpion and
> qcom,scorpion-mp (or -uni and -mp if you dislike the bare scorpion).
> 
> For Krait...  I really don't know. Your proposals?
> 

krait-codename :) (not sure if it is public)
or krait-modelname
or krait-midr-value (the one for dual/quad part, so MIDR[9:8]).

But honestly I could defer naming to future contributions. I propose
only to have argument in stopping using these names all over.


Best regards,
Krzysztof