Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: dts: qcom: msm8916: Add CPU ACC and SAW/SPM

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

authored by

Stephan Gerhold and committed by
Bjorn Andersson
a22f9a76 48cc39c3

+56
+56
arch/arm64/boot/dts/qcom/msm8916.dtsi
··· 124 124 #cooling-cells = <2>; 125 125 power-domains = <&CPU_PD0>; 126 126 power-domain-names = "psci"; 127 + qcom,acc = <&cpu0_acc>; 128 + qcom,saw = <&cpu0_saw>; 127 129 }; 128 130 129 131 CPU1: cpu@1 { ··· 139 137 #cooling-cells = <2>; 140 138 power-domains = <&CPU_PD1>; 141 139 power-domain-names = "psci"; 140 + qcom,acc = <&cpu1_acc>; 141 + qcom,saw = <&cpu1_saw>; 142 142 }; 143 143 144 144 CPU2: cpu@2 { ··· 154 150 #cooling-cells = <2>; 155 151 power-domains = <&CPU_PD2>; 156 152 power-domain-names = "psci"; 153 + qcom,acc = <&cpu2_acc>; 154 + qcom,saw = <&cpu2_saw>; 157 155 }; 158 156 159 157 CPU3: cpu@3 { ··· 169 163 #cooling-cells = <2>; 170 164 power-domains = <&CPU_PD3>; 171 165 power-domain-names = "psci"; 166 + qcom,acc = <&cpu3_acc>; 167 + qcom,saw = <&cpu3_saw>; 172 168 }; 173 169 174 170 L2_0: l2-cache { ··· 1884 1876 reg = <0x0b028000 0x1000>; 1885 1877 status = "disabled"; 1886 1878 }; 1879 + }; 1880 + 1881 + cpu0_acc: power-manager@b088000 { 1882 + compatible = "qcom,msm8916-acc"; 1883 + reg = <0x0b088000 0x1000>; 1884 + status = "reserved"; /* Controlled by PSCI firmware */ 1885 + }; 1886 + 1887 + cpu0_saw: power-manager@b089000 { 1888 + compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2"; 1889 + reg = <0x0b089000 0x1000>; 1890 + status = "reserved"; /* Controlled by PSCI firmware */ 1891 + }; 1892 + 1893 + cpu1_acc: power-manager@b098000 { 1894 + compatible = "qcom,msm8916-acc"; 1895 + reg = <0x0b098000 0x1000>; 1896 + status = "reserved"; /* Controlled by PSCI firmware */ 1897 + }; 1898 + 1899 + cpu1_saw: power-manager@b099000 { 1900 + compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2"; 1901 + reg = <0x0b099000 0x1000>; 1902 + status = "reserved"; /* Controlled by PSCI firmware */ 1903 + }; 1904 + 1905 + cpu2_acc: power-manager@b0a8000 { 1906 + compatible = "qcom,msm8916-acc"; 1907 + reg = <0x0b0a8000 0x1000>; 1908 + status = "reserved"; /* Controlled by PSCI firmware */ 1909 + }; 1910 + 1911 + cpu2_saw: power-manager@b0a9000 { 1912 + compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2"; 1913 + reg = <0x0b0a9000 0x1000>; 1914 + status = "reserved"; /* Controlled by PSCI firmware */ 1915 + }; 1916 + 1917 + cpu3_acc: power-manager@b0b8000 { 1918 + compatible = "qcom,msm8916-acc"; 1919 + reg = <0x0b0b8000 0x1000>; 1920 + status = "reserved"; /* Controlled by PSCI firmware */ 1921 + }; 1922 + 1923 + cpu3_saw: power-manager@b0b9000 { 1924 + compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2"; 1925 + reg = <0x0b0b9000 0x1000>; 1926 + status = "reserved"; /* Controlled by PSCI firmware */ 1887 1927 }; 1888 1928 }; 1889 1929