arm64: dts: qcom: msm8916: Add CPU ACC and SAW/SPM
authorStephan Gerhold <stephan@gerhold.net>
Mon, 4 Oct 2021 20:49:53 +0000 (22:49 +0200)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Sun, 24 Oct 2021 03:35:38 +0000 (22:35 -0500)
Add the device tree nodes necessary for SMP bring-up and cpuidle
without PSCI on ARM32. The hardware is typically controlled by the
PSCI implementation in the TrustZone firmware and is therefore marked
as status = "reserved" by default (from the device tree specification):

  "Indicates that the device is operational, but should not be used.
   Typically this is used for devices that are controlled by another
   software component, such as platform firmware."

Since this is part of the MSM8916 SoC it should be added to msm8916.dtsi
but in practice these nodes should only get enabled via an extra include
on ARM32.

This is necessary for some devices with signed firmware which is missing
both ARM64 and PSCI support and can therefore only boot ARM32 kernels.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20211004204955.21077-13-stephan@gerhold.net
arch/arm64/boot/dts/qcom/msm8916.dtsi

index 2830cc45b83749dda504aa203b538ff47bcae558..9196cdf84b098b9f391d93f5e06b5cd7299b1d10 100644 (file)
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD0>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu0_acc>;
+                       qcom,saw = <&cpu0_saw>;
                };
 
                CPU1: cpu@1 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD1>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu1_acc>;
+                       qcom,saw = <&cpu1_saw>;
                };
 
                CPU2: cpu@2 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD2>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu2_acc>;
+                       qcom,saw = <&cpu2_saw>;
                };
 
                CPU3: cpu@3 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD3>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu3_acc>;
+                       qcom,saw = <&cpu3_saw>;
                };
 
                L2_0: l2-cache {
                                status = "disabled";
                        };
                };
+
+               cpu0_acc: power-manager@b088000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b088000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu0_saw: power-manager@b089000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b089000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_acc: power-manager@b098000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b098000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_saw: power-manager@b099000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b099000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_acc: power-manager@b0a8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0a8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_saw: power-manager@b0a9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0a9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_acc: power-manager@b0b8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0b8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_saw: power-manager@b0b9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0b9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
        };
 
        thermal-zones {