@@ -106,42 +106,73 @@
};
cpu_opp_table: opp-table-cpu {
- compatible = "operating-points-v2";
+ compatible = "operating-points-v2-kryo-cpu";
opp-shared;
+ nvmem-cells = <&cpu_speed_bin>;
+ nvmem-cell-names = "speed_bin";
+
+ /* Listed all supported CPU frequencies and opp-supported-hw
+ * values to select CPU frequencies based on the limits fused.
+ * ------------------------------------------------------------
+ * Frequency BIT3 BIT2 BIT1 BIT0 opp-supported-hw
+ * 1.2GHz 1.5GHz 1.8GHz No Limit
+ * ------------------------------------------------------------
+ * 936000000 1 1 1 1 0xF
+ * 1104000000 1 1 1 1 0xF
+ * 1200000000 1 0 0 0 0x8
+ * 1416000000 0 1 1 1 0x7
+ * 1488000000 0 1 0 0 0x4
+ * 1800000000 0 0 1 1 0x3
+ * 2208000000 0 0 0 1 0x1
+ * -----------------------------------------------------------
+ */
opp-936000000 {
opp-hz = /bits/ 64 <936000000>;
opp-microvolt = <725000>;
+ opp-supported-hw = <0xf>;
clock-latency-ns = <200000>;
};
opp-1104000000 {
opp-hz = /bits/ 64 <1104000000>;
opp-microvolt = <787500>;
+ opp-supported-hw = <0xf>;
+ clock-latency-ns = <200000>;
+ };
+
+ opp-1200000000 {
+ opp-hz = /bits/ 64 <1200000000>;
+ opp-microvolt = <862500>;
+ opp-supported-hw = <0x8>;
clock-latency-ns = <200000>;
};
opp-1416000000 {
opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <862500>;
+ opp-supported-hw = <0x7>;
clock-latency-ns = <200000>;
};
opp-1488000000 {
opp-hz = /bits/ 64 <1488000000>;
opp-microvolt = <925000>;
+ opp-supported-hw = <0x7>;
clock-latency-ns = <200000>;
};
opp-1800000000 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <987500>;
+ opp-supported-hw = <0x3>;
clock-latency-ns = <200000>;
};
opp-2208000000 {
opp-hz = /bits/ 64 <2208000000>;
opp-microvolt = <1062500>;
+ opp-supported-hw = <0x1>;
clock-latency-ns = <200000>;
};
};
@@ -223,6 +254,11 @@
reg = <0x000a4000 0x5a1>;
#address-cells = <1>;
#size-cells = <1>;
+
+ cpu_speed_bin: cpu_speed_bin@15 {
+ reg = <0x15 0x2>;
+ bits = <7 2>;
+ };
};
cryptobam: dma-controller@704000 {