[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250127093128.2611247-5-quic_srichara@quicinc.com>
Date: Mon, 27 Jan 2025 15:01:28 +0530
From: Sricharan R <quic_srichara@...cinc.com>
To: <andersson@...nel.org>, <mturquette@...libre.com>, <sboyd@...nel.org>,
<robh@...nel.org>, <krzk+dt@...nel.org>, <conor+dt@...nel.org>,
<konradybcio@...nel.org>, <rafael@...nel.org>,
<viresh.kumar@...aro.org>, <ilia.lin@...nel.org>,
<linux-arm-msm@...r.kernel.org>, <linux-clk@...r.kernel.org>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-pm@...r.kernel.org>
CC: <quic_srichara@...cinc.com>
Subject: [PATCH 4/4] arm64: dts: qcom: ipq5424: Enable cpufreq support
From: Sricharan Ramabadhran <quic_srichara@...cinc.com>
Add the qfprom, cpu clocks, A53 PLL and cpu-opp-table required for
CPU clock scaling.
Signed-off-by: Sricharan Ramabadhran <quic_srichara@...cinc.com>
---
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 71 +++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5424.dtsi b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
index 577b88cd5172..3c07f7c28c4a 100644
--- a/arch/arm64/boot/dts/qcom/ipq5424.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
@@ -7,6 +7,7 @@
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,apss-ipq.h>
#include <dt-bindings/clock/qcom,ipq5424-gcc.h>
#include <dt-bindings/reset/qcom,ipq5424-gcc.h>
#include <dt-bindings/gpio/gpio.h>
@@ -38,6 +39,11 @@ cpu0: cpu@0 {
reg = <0x0>;
enable-method = "psci";
next-level-cache = <&l2_0>;
+ clocks = <&apss_clk APSS_SILVER_CORE_CLK>,
+ <&apss_clk L3_CORE_CLK>;
+ clock-names = "cpu", "l3_core";
+ operating-points-v2 = <&cpu_opp_table>;
+
l2_0: l2-cache {
compatible = "cache";
cache-level = <2>;
@@ -58,6 +64,10 @@ cpu1: cpu@100 {
enable-method = "psci";
reg = <0x100>;
next-level-cache = <&l2_100>;
+ clocks = <&apss_clk APSS_SILVER_CORE_CLK>,
+ <&apss_clk L3_CORE_CLK>;
+ clock-names = "cpu", "l3_core";
+ operating-points-v2 = <&cpu_opp_table>;
l2_100: l2-cache {
compatible = "cache";
@@ -73,6 +83,10 @@ cpu2: cpu@200 {
enable-method = "psci";
reg = <0x200>;
next-level-cache = <&l2_200>;
+ clocks = <&apss_clk APSS_SILVER_CORE_CLK>,
+ <&apss_clk L3_CORE_CLK>;
+ clock-names = "cpu", "l3_core";
+ operating-points-v2 = <&cpu_opp_table>;
l2_200: l2-cache {
compatible = "cache";
@@ -88,6 +102,10 @@ cpu3: cpu@300 {
enable-method = "psci";
reg = <0x300>;
next-level-cache = <&l2_300>;
+ clocks = <&apss_clk APSS_SILVER_CORE_CLK>,
+ <&apss_clk L3_CORE_CLK>;
+ clock-names = "cpu", "l3_core";
+ operating-points-v2 = <&cpu_opp_table>;
l2_300: l2-cache {
compatible = "cache";
@@ -98,6 +116,39 @@ l2_300: l2-cache {
};
};
+ cpu_opp_table: opp-table-cpu {
+ compatible = "operating-points-v2-kryo-cpu";
+ opp-shared;
+ nvmem-cells = <&cpu_speed_bin>;
+
+ /*
+ * CPU supports two frequencies and the fuse has LValue instead
+ * of limits. As only two frequencies are supported, considering
+ * zero Lvalue as no limit and Lvalue as 1.4GHz limit.
+ * ------------------------------------------------------------
+ * Frequency BIT1 BIT0 opp-supported-hw
+ * 1.4GHz No Limit
+ * ------------------------------------------------------------
+ * 1416000000 1 1 0x3
+ * 1800000000 0 1 0x1
+ * ------------------------------------------------------------
+ */
+
+ opp-1416000000 {
+ opp-hz = /bits/ 64 <1416000000>;
+ opp-microvolt = <1>;
+ opp-supported-hw = <0x3>;
+ clock-latency-ns = <200000>;
+ };
+
+ opp-1800000000 {
+ opp-hz = /bits/ 64 <1800000000>;
+ opp-microvolt = <2>;
+ opp-supported-hw = <0x1>;
+ clock-latency-ns = <200000>;
+ };
+ };
+
memory@...00000 {
device_type = "memory";
/* We expect the bootloader to fill in the size */
@@ -151,6 +202,18 @@ soc@0 {
#size-cells = <2>;
ranges = <0 0 0 0 0x10 0>;
+ qfprom@...00 {
+ compatible = "qcom,qfprom";
+ reg = <0x0 0xa6000 0x0 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cpu_speed_bin: cpu-speed-bin@234 {
+ reg = <0x234 0x1>;
+ bits = <0 8>;
+ };
+ };
+
tlmm: pinctrl@...0000 {
compatible = "qcom,ipq5424-tlmm";
reg = <0 0x01000000 0 0x300000>;
@@ -363,6 +426,14 @@ frame@...d000 {
};
};
+ apss_clk: apss-clock@...0000 {
+ compatible = "qcom,ipq5424-apss-clk";
+ reg = <0x0 0x0fa80000 0x0 0x20000>;
+ clocks = <&xo_board>, <&gcc GPLL0>;
+ clock-names = "xo", "gpll0";
+ #clock-cells = <1>;
+ };
+
tmel_qmp: qmp@...90000 {
compatible = "qcom,ipq5424-tmel-qmp", "qcom,tmel-qmp";
reg = <0 0x32090000 0 0x2000>;
--
2.34.1
Powered by blists - more mailing lists