[PATCH V4 5/5] arm64: dts: qcom: x1e80100: Enable LLCC/DDR/DDR_QOS dvfs

Sibi Sankar posted 5 patches 1 month, 3 weeks ago
There is a newer version of this series
[PATCH V4 5/5] arm64: dts: qcom: x1e80100: Enable LLCC/DDR/DDR_QOS dvfs
Posted by Sibi Sankar 1 month, 3 weeks ago
Enable LLCC/DDR/DDR_QOS bus scaling through the QCOM SCMI Generic
Extension protocol.

Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
---
 arch/arm64/boot/dts/qcom/x1e80100.dtsi | 138 +++++++++++++++++++++++++
 1 file changed, 138 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
index aec3ceb502f6..24ebccd8c124 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
@@ -10,6 +10,7 @@
 #include <dt-bindings/clock/qcom,x1e80100-gpucc.h>
 #include <dt-bindings/clock/qcom,x1e80100-tcsr.h>
 #include <dt-bindings/dma/qcom-gpi.h>
+#include <dt-bindings/firmware/qcom,scmi-memlat.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,x1e80100-rpmh.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
@@ -325,6 +326,143 @@ scmi_dvfs: protocol@13 {
 				reg = <0x13>;
 				#power-domain-cells = <1>;
 			};
+
+			scmi_vendor: protocol@80 {
+				reg = <0x80>;
+
+				memory-0 {
+					qcom,memory-type = <QCOM_MEM_TYPE_DDR>;
+					freq-table-hz = /bits/ 64 <200000000 4224000000>;
+
+					monitor-0 {
+						cpus = <&CPU0 &CPU1 &CPU2 &CPU3 &CPU4 &CPU5 &CPU6
+							&CPU7 &CPU8 &CPU9 &CPU10 &CPU11>;
+						qcom,ipm-ceil = <20000000>;
+						operating-points-v2 = <&memory0_monitor0_opp_table>;
+
+						memory0_monitor0_opp_table: opp-table {
+							compatible = "operating-points-v2";
+
+							opp-999000000 {
+								opp-hz = /bits/ 64 <999000000 547000000>;
+							};
+
+							opp-1440000000 {
+								opp-hz = /bits/ 64 <1440000000 768000000>;
+							};
+
+							opp-1671000000 {
+								opp-hz = /bits/ 64 <1671000000 1555000000>;
+							};
+
+							opp-2189000000 {
+								opp-hz = /bits/ 64 <2189000000 2092000000>;
+							};
+
+							opp-2516000000 {
+								opp-hz = /bits/ 64 <2516000000 3187000000>;
+							};
+
+							opp-3860000000 {
+								opp-hz = /bits/ 64 <3860000000 4224000000>;
+							};
+						};
+					};
+
+					monitor-1 {
+						cpus = <&CPU0 &CPU1 &CPU2 &CPU3 &CPU4 &CPU5 &CPU6
+							&CPU7 &CPU8 &CPU9 &CPU10 &CPU11>;
+						operating-points-v2 = <&memory0_monitor1_opp_table>;
+						qcom,compute-type;
+
+						memory0_monitor1_opp_table: opp-table {
+							compatible = "operating-points-v2";
+
+							opp-1440000000 {
+								opp-hz = /bits/ 64 <1440000000 200000000>;
+							};
+
+							opp-2189000000 {
+								opp-hz = /bits/ 64 <2189000000 768000000>;
+							};
+
+							opp-2516000000 {
+								opp-hz = /bits/ 64 <2516000000 1555000000>;
+							};
+
+							opp-3860000000 {
+								opp-hz = /bits/ 64 <3860000000 4224000000>;
+							};
+						};
+					};
+				};
+
+				memory-1 {
+					qcom,memory-type = <QCOM_MEM_TYPE_LLCC>;
+					freq-table-hz = /bits/ 64 <300000000 1067000000>;
+
+					monitor-0 {
+						cpus = <&CPU0 &CPU1 &CPU2 &CPU3 &CPU4 &CPU5 &CPU6
+							&CPU7 &CPU8 &CPU9 &CPU10 &CPU11>;
+						qcom,ipm-ceil = <20000000>;
+						operating-points-v2 = <&memory1_monitor0_opp_table>;
+
+						memory1_monitor0_opp_table: opp-table {
+							compatible = "operating-points-v2";
+
+							opp-999000000 {
+								opp-hz = /bits/ 64 <999000000 300000000>;
+							};
+
+							opp-1440000000 {
+								opp-hz = /bits/ 64 <1440000000 466000000>;
+							};
+
+							opp-1671000000 {
+								opp-hz = /bits/ 64 <1671000000 600000000>;
+							};
+
+							opp-2189000000 {
+								opp-hz = /bits/ 64 <2189000000 806000000>;
+							};
+
+							opp-2516000000 {
+								opp-hz = /bits/ 64 <2516000000 933000000>;
+							};
+
+							opp-3860000000 {
+								opp-hz = /bits/ 64 <3860000000 1066000000>;
+							};
+						};
+					};
+				};
+
+				memory-2 {
+					qcom,memory-type = <QCOM_MEM_TYPE_DDR_QOS>;
+					freq-table-hz = /bits/ 64 <QCOM_DDR_LEVEL_AUTO QCOM_DDR_LEVEL_PERF>;
+
+					monitor-0 {
+						qcom,ipm-ceil = <20000000>;
+						cpus = <&CPU0 &CPU1 &CPU2 &CPU3 &CPU4 &CPU5 &CPU6
+							&CPU7 &CPU8 &CPU9 &CPU10 &CPU11>;
+						operating-points-v2 = <&memory2_monitor0_opp_table>;
+
+						memory2_monitor0_opp_table: opp-table {
+							compatible = "operating-points-v2";
+
+							opp-2189000000 {
+								opp-hz = /bits/ 64 <2189000000>;
+								opp-level = <QCOM_DDR_LEVEL_AUTO>;
+							};
+
+							opp-3860000000 {
+								opp-hz = /bits/ 64 <3860000000>;
+								opp-level = <QCOM_DDR_LEVEL_PERF>;
+							};
+						};
+					};
+				};
+			};
 		};
 	};
 
-- 
2.34.1