diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi index 68c8fef38576..010b3aa1693c 100644 --- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi @@ -400,6 +400,20 @@ nvmem-cell-names = "leakage", "opp-info", "specification_serial_number"; rockchip,supported-hw; + rockchip,pvtm-hw = <0x06>; + rockchip,pvtm-voltage-sel-hw = < + 0 1744 0 + 1745 1774 1 + 1775 1804 2 + 1805 1839 3 + 1840 1874 4 + 1875 1909 5 + 1910 1949 6 + 1950 1989 7 + 1990 2029 8 + 2030 2069 9 + 2070 9999 10 + >; rockchip,pvtm-voltage-sel = < 0 1764 0 1765 1789 1 @@ -439,32 +453,32 @@ rockchip,low-temp-min-volt = <800000>; opp-408000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <408000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-600000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <600000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-816000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <816000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-1008000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1008000000>; opp-microvolt = <712500 712500 950000>; opp-microvolt-L0 = <725000 725000 950000>; clock-latency-ns = <40000>; }; opp-1200000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1200000000>; opp-microvolt = <712500 712500 950000>; opp-microvolt-L0 = <737500 737500 950000>; @@ -472,7 +486,7 @@ clock-latency-ns = <40000>; }; opp-1416000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1416000000>; opp-microvolt = <712500 712500 950000>; opp-microvolt-L0 = <775000 775000 950000>; @@ -484,7 +498,7 @@ clock-latency-ns = <40000>; }; opp-1608000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1608000000>; opp-microvolt = <812500 812500 950000>; opp-microvolt-L1 = <800000 800000 950000>; @@ -500,7 +514,7 @@ clock-latency-ns = <40000>; }; opp-1800000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1800000000>; opp-microvolt = <887500 887500 950000>; opp-microvolt-L1 = <875000 875000 950000>; @@ -534,7 +548,7 @@ clock-latency-ns = <40000>; }; opp-2016000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <2016000000>; opp-microvolt = <950000 950000 950000>; opp-microvolt-L1 = <937500 937500 950000>; @@ -549,6 +563,96 @@ opp-microvolt-L10 = <825000 825000 950000>; clock-latency-ns = <40000>; }; + + /* RK3576J/M cluster0 OPPs */ + opp-j-m-408000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <408000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-600000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-816000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <816000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1008000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1008000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1200000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1416000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1416000000>; + opp-microvolt = <750000 750000 950000>; + opp-microvolt-L0 = <775000 775000 950000>; + opp-microvolt-L1 = <762500 762500 950000>; + clock-latency-ns = <40000>; + opp-suspend; + }; + cluster0_opp_j_m_1608000000: opp-j-m-1608000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <825000 825000 950000>; + opp-microvolt-L1 = <812500 812500 950000>; + opp-microvolt-L2 = <800000 800000 950000>; + opp-microvolt-L3 = <787500 787500 950000>; + opp-microvolt-L4 = <787500 787500 950000>; + opp-microvolt-L5 = <775000 775000 950000>; + opp-microvolt-L6 = <762500 762500 950000>; + opp-microvolt-L7 = <750000 750000 950000>; + opp-microvolt-L8 = <750000 750000 950000>; + opp-microvolt-L9 = <750000 750000 950000>; + opp-microvolt-L10 = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + cluster0_opp_j_m_1800000000: opp-j-m-1800000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <887500 887500 950000>; + opp-microvolt-L1 = <875000 875000 950000>; + opp-microvolt-L2 = <862500 862500 950000>; + opp-microvolt-L3 = <850000 850000 950000>; + opp-microvolt-L4 = <837500 837500 950000>; + opp-microvolt-L5 = <825000 825000 950000>; + opp-microvolt-L6 = <812500 812500 950000>; + opp-microvolt-L7 = <800000 800000 950000>; + opp-microvolt-L8 = <787500 787500 950000>; + opp-microvolt-L9 = <775000 775000 950000>; + opp-microvolt-L10 = <762500 762500 950000>; + clock-latency-ns = <40000>; + }; + cluster0_opp_j_m_1920000000: opp-j-m-1920000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1920000000>; + opp-microvolt = <937500 937500 950000>; + opp-microvolt-L1 = <925000 925000 950000>; + opp-microvolt-L2 = <912500 912500 950000>; + opp-microvolt-L3 = <900000 900000 950000>; + opp-microvolt-L4 = <887500 887500 950000>; + opp-microvolt-L5 = <875000 875000 950000>; + opp-microvolt-L6 = <862500 862500 950000>; + opp-microvolt-L7 = <850000 850000 950000>; + opp-microvolt-L8 = <837500 837500 950000>; + opp-microvolt-L9 = <825000 825000 950000>; + opp-microvolt-L10 = <812500 812500 950000>; + clock-latency-ns = <40000>; + }; + }; cluster1_opp_table: cluster1-opp-table { @@ -560,6 +664,20 @@ nvmem-cell-names = "leakage", "opp-info", "specification_serial_number"; rockchip,supported-hw; + rockchip,pvtm-hw = <0x06>; + rockchip,pvtm-voltage-sel-hw = < + 0 1874 0 + 1875 1904 1 + 1905 1934 2 + 1935 1969 3 + 1970 2009 4 + 2010 2049 5 + 2050 2089 6 + 2090 2129 7 + 2130 2169 8 + 2170 2209 9 + 2210 9999 10 + >; rockchip,pvtm-voltage-sel = < 0 1919 0 1920 1949 1 @@ -599,32 +717,32 @@ rockchip,low-temp-min-volt = <800000>; opp-408000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <408000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; opp-suspend; }; opp-600000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <600000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-816000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <816000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-1008000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1008000000>; opp-microvolt = <712500 712500 950000>; clock-latency-ns = <40000>; }; opp-1200000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1200000000>; opp-microvolt = <712500 712500 950000>; opp-microvolt-L0 = <750000 750000 950000>; @@ -634,7 +752,7 @@ clock-latency-ns = <40000>; }; opp-1416000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1416000000>; opp-microvolt = <712500 712500 950000>; opp-microvolt-L0 = <750000 750000 950000>; @@ -644,7 +762,7 @@ clock-latency-ns = <40000>; }; opp-1608000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1608000000>; opp-microvolt = <725000 725000 950000>; opp-microvolt-L0 = <775000 775000 950000>; @@ -655,7 +773,7 @@ clock-latency-ns = <40000>; }; opp-1800000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1800000000>; opp-microvolt = <825000 825000 950000>; opp-microvolt-L1 = <825000 825000 950000>; @@ -671,7 +789,7 @@ clock-latency-ns = <40000>; }; opp-2016000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <2016000000>; opp-microvolt = <887500 887500 950000>; opp-microvolt-L1 = <887500 887500 950000>; @@ -704,7 +822,7 @@ clock-latency-ns = <40000>; }; opp-2208000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <2208000000>; opp-microvolt = <950000 950000 950000>; opp-microvolt-L1 = <950000 950000 950000>; @@ -719,6 +837,103 @@ opp-microvolt-L10 = <837500 837500 950000>; clock-latency-ns = <40000>; }; + + /* RK3576J/M cluster1 OPPs */ + opp-j-m-408000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <408000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + opp-suspend; + }; + opp-j-m-600000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-816000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <816000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1008000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1008000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1200000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1416000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1416000000>; + opp-microvolt = <750000 750000 950000>; + opp-microvolt-L0 = <762500 762500 950000>; + clock-latency-ns = <40000>; + }; + opp-j-m-1608000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <750000 750000 950000>; + opp-microvolt-L0 = <787500 787500 950000>; + opp-microvolt-L1 = <775000 775000 950000>; + opp-microvolt-L2 = <762500 762500 950000>; + clock-latency-ns = <40000>; + }; + cluster1_opp_j_m_1800000000: opp-j-m-1800000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <850000 850000 950000>; + opp-microvolt-L1 = <837500 837500 950000>; + opp-microvolt-L2 = <825000 825000 950000>; + opp-microvolt-L3 = <812500 812500 950000>; + opp-microvolt-L4 = <800000 800000 950000>; + opp-microvolt-L5 = <787500 787500 950000>; + opp-microvolt-L6 = <775000 775000 950000>; + opp-microvolt-L7 = <762500 762500 950000>; + opp-microvolt-L8 = <750000 750000 950000>; + opp-microvolt-L9 = <750000 750000 950000>; + opp-microvolt-L10 = <750000 750000 950000>; + clock-latency-ns = <40000>; + }; + cluster1_opp_j_m_2016000000: opp-j-m-2016000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <2016000000>; + opp-microvolt = <912500 912500 950000>; + opp-microvolt-L1 = <900000 900000 950000>; + opp-microvolt-L2 = <887500 887500 950000>; + opp-microvolt-L3 = <875000 875000 950000>; + opp-microvolt-L4 = <862500 862500 950000>; + opp-microvolt-L5 = <850000 850000 950000>; + opp-microvolt-L6 = <837500 837500 950000>; + opp-microvolt-L7 = <825000 825000 950000>; + opp-microvolt-L8 = <812500 812500 950000>; + opp-microvolt-L9 = <800000 800000 950000>; + opp-microvolt-L10 = <787500 787500 950000>; + clock-latency-ns = <40000>; + }; + cluster1_opp_j_m_2112000000: opp-j-m-2112000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <2112000000>; + opp-microvolt = <950000 950000 950000>; + opp-microvolt-L1 = <937500 937500 950000>; + opp-microvolt-L2 = <925000 925000 950000>; + opp-microvolt-L3 = <912500 912500 950000>; + opp-microvolt-L4 = <900000 900000 950000>; + opp-microvolt-L5 = <887500 887500 950000>; + opp-microvolt-L6 = <875000 875000 950000>; + opp-microvolt-L7 = <862500 862500 950000>; + opp-microvolt-L8 = <850000 850000 950000>; + opp-microvolt-L9 = <837500 837500 950000>; + opp-microvolt-L10 = <825000 825000 950000>; + clock-latency-ns = <40000>; + }; }; bus_a72: bus-a72 { @@ -734,8 +949,9 @@ compatible = "operating-points-v2"; opp-shared; - nvmem-cells = <&log_leakage>; - nvmem-cell-names = "leakage"; + nvmem-cells = <&log_leakage>, <&specification_serial_number>; + nvmem-cell-names = "leakage", "specification_serial_number"; + rockchip,supported-hw; rockchip,leakage-voltage-sel = < 1 10 0 @@ -744,23 +960,46 @@ >; opp-1800000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1800000000>; opp-microvolt = <750000 750000 800000>; opp-microvolt-L1 = <725000 725000 800000>; opp-microvolt-L2 = <712500 712500 800000>; }; opp-2016000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <2016000000>; opp-microvolt = <775000 775000 800000>; opp-microvolt-L1 = <750000 750000 800000>; opp-microvolt-L2 = <712500 712500 800000>; }; opp-2208000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <2208000000>; opp-microvolt = <800000 800000 800000>; opp-microvolt-L1 = <775000 775000 800000>; opp-microvolt-L2 = <737500 737500 800000>; }; + + opp-j-m-1800000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <750000 750000 800000>; + }; + opp-j-m-2016000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <2016000000>; + opp-microvolt = <775000 775000 800000>; + opp-microvolt-L1 = <750000 750000 800000>; + opp-microvolt-L2 = <750000 750000 800000>; + }; + opp-j-m-2208000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <2208000000>; + opp-microvolt = <800000 800000 800000>; + opp-microvolt-L1 = <775000 775000 800000>; + opp-microvolt-L2 = <750000 750000 800000>; + }; }; cpuinfo { @@ -943,8 +1182,9 @@ dmc_opp_table: dmc-opp-table { compatible = "operating-points-v2"; - nvmem-cells = <&log_leakage>, <&logic_opp_info>; - nvmem-cell-names = "leakage", "opp-info"; + nvmem-cells = <&log_leakage>, <&logic_opp_info>, <&specification_serial_number>; + nvmem-cell-names = "leakage", "opp-info", "specification_serial_number"; + rockchip,supported-hw; rockchip,early-min-microvolt = <0 750000>; /* */ @@ -958,6 +1198,7 @@ 21 254 2 >; opp-528000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <528000000>; opp-microvolt = <750000 750000 850000>, <750000 750000 800000>; @@ -967,6 +1208,7 @@ <712500 712500 800000>; }; opp-1068000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1068000000>; opp-microvolt = <750000 750000 850000>, <750000 750000 800000>; @@ -976,6 +1218,7 @@ <712500 712500 800000>; }; opp-1560000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <1560000000>; opp-microvolt = <750000 750000 850000>, <750000 750000 800000>; @@ -985,6 +1228,7 @@ <725000 725000 800000>; }; opp-2736000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <2736000000>; opp-microvolt = <825000 825000 850000>, <750000 750000 800000>; @@ -993,6 +1237,35 @@ opp-microvolt-L2 = <775000 775000 850000>, <725000 725000 800000>; }; + /* RK3576J/M DMC OPPs */ + opp-j-m-528000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <528000000>; + opp-microvolt = <750000 750000 850000>, + <750000 750000 800000>; + }; + opp-j-m-1068000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1068000000>; + opp-microvolt = <750000 750000 850000>, + <750000 750000 800000>; + }; + opp-j-m-1560000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <1560000000>; + opp-microvolt = <750000 750000 850000>, + <750000 750000 800000>; + }; + opp-j-m-2736000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <2736000000>; + opp-microvolt = <825000 825000 850000>, + <750000 750000 800000>; + opp-microvolt-L1 = <800000 800000 850000>, + <750000 750000 800000>; + opp-microvolt-L2 = <775000 775000 850000>, + <750000 750000 800000>; + }; }; firmware { @@ -2170,6 +2443,19 @@ nvmem-cell-names = "leakage", "opp-info", "specification_serial_number"; rockchip,supported-hw; + rockchip,pvtm-hw = <0x06>; + rockchip,pvtm-voltage-sel-hw = < + 0 739 0 + 740 759 1 + 760 779 2 + 780 799 3 + 800 819 4 + 820 839 5 + 840 859 6 + 860 879 7 + 880 899 8 + 900 9999 9 + >; rockchip,pvtm-voltage-sel = < 0 719 0 720 739 1 @@ -2211,12 +2497,12 @@ rockchip,low-temp-min-volt = <750000>; opp-300000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <300000000>; opp-microvolt = <725000 725000 875000>; }; opp-400000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <400000000>; opp-microvolt = <725000 725000 875000>; }; @@ -2230,21 +2516,21 @@ opp-microvolt-L2 = <737500 737500 875000>; }; opp-500000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <500000000>; opp-microvolt = <725000 725000 875000>; opp-microvolt-L0 = <737500 737500 875000>; opp-microvolt-L1 = <737500 737500 875000>; }; opp-600000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <600000000>; opp-microvolt = <725000 725000 875000>; opp-microvolt-L0 = <737500 737500 875000>; opp-microvolt-L1 = <737500 737500 875000>; }; opp-700000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <700000000>; opp-microvolt = <725000 725000 875000>; opp-microvolt-L0 = <775000 775000 875000>; @@ -2256,7 +2542,7 @@ opp-microvolt-L6 = <725000 725000 875000>; }; opp-800000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <800000000>; opp-microvolt = <800000 800000 875000>; opp-microvolt-L1 = <800000 800000 875000>; @@ -2271,7 +2557,7 @@ opp-microvolt-L10 = <725000 725000 875000>; }; opp-900000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <900000000>; opp-microvolt = <850000 850000 875000>; opp-microvolt-L1 = <850000 850000 875000>; @@ -2286,7 +2572,7 @@ opp-microvolt-L10 = <737500 737500 875000>; }; opp-950000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <950000000>; opp-microvolt = <875000 875000 875000>; opp-microvolt-L1 = <875000 875000 875000>; @@ -2300,6 +2586,61 @@ opp-microvolt-L9 = <775000 775000 875000>; opp-microvolt-L10 = <762500 762500 875000>; }; + + /* RK3576J/M NPU OPPs */ + opp-j-m-300000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <300000000>; + opp-microvolt = <750000 750000 875000>; + }; + opp-j-m-400000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <750000 750000 875000>; + }; + opp-j-m-500000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <750000 750000 875000>; + }; + opp-j-m-600000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <750000 750000 875000>; + }; + opp-j-m-700000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <700000000>; + opp-microvolt = <750000 750000 875000>; + opp-microvolt-L0 = <787500 787500 875000>; + opp-microvolt-L1 = <775000 775000 875000>; + opp-microvolt-L2 = <762500 762500 875000>; + }; + npu_opp_j_m_800000000: opp-j-m-800000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <800000000>; + opp-microvolt = <750000 750000 875000>; + opp-microvolt-L0 = <812500 812500 875000>; + opp-microvolt-L1 = <800000 800000 875000>; + opp-microvolt-L2 = <787500 787500 875000>; + opp-microvolt-L3 = <775000 775000 875000>; + opp-microvolt-L4 = <762500 762500 875000>; + }; + npu_opp_j_m_850000000: opp-j-m-850000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <850000000>; + opp-microvolt = <837500 837500 875000>; + opp-microvolt-L1 = <825000 825000 875000>; + opp-microvolt-L2 = <812500 812500 875000>; + opp-microvolt-L3 = <800000 800000 875000>; + opp-microvolt-L4 = <787500 787500 875000>; + opp-microvolt-L5 = <775000 775000 875000>; + opp-microvolt-L6 = <762500 762500 875000>; + opp-microvolt-L7 = <750000 750000 875000>; + opp-microvolt-L8 = <750000 750000 875000>; + opp-microvolt-L9 = <750000 750000 875000>; + }; + }; rknpu_mmu: iommu@27702000 { @@ -2347,6 +2688,20 @@ nvmem-cell-names = "leakage", "opp-info", "specification_serial_number"; rockchip,supported-hw; + rockchip,pvtm-hw = <0x06>; + rockchip,pvtm-voltage-sel-hw = < + 0 689 0 + 690 709 1 + 710 729 2 + 730 749 3 + 750 769 4 + 770 789 5 + 790 809 6 + 810 829 7 + 830 849 8 + 850 869 9 + 870 9999 10 + >; rockchip,pvtm-voltage-sel = < 0 704 0 705 724 1 @@ -2386,27 +2741,27 @@ rockchip,low-temp-min-volt = <750000>; opp-300000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <300000000>; opp-microvolt = <712500 712500 875000>; }; opp-400000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <400000000>; opp-microvolt = <712500 712500 875000>; }; opp-500000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <500000000>; opp-microvolt = <712500 712500 875000>; }; opp-600000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <600000000>; opp-microvolt = <712500 712500 875000>; }; opp-700000000 { - opp-supported-hw = <0xff 0xffff>; + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <700000000>; opp-microvolt = <712500 712500 875000>; opp-microvolt-L0 = <750000 750000 875000>; @@ -2432,7 +2787,7 @@ opp-microvolt-L10 = <725000 725000 875000>; }; opp-800000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <800000000>; opp-microvolt = <812500 812500 875000>; opp-microvolt-L1 = <812500 812500 875000>; @@ -2447,7 +2802,7 @@ opp-microvolt-L10 = <725000 725000 875000>; }; opp-900000000 { - opp-supported-hw = <0xf7 0xffff>; + opp-supported-hw = <0xf1 0xffff>; opp-hz = /bits/ 64 <900000000>; opp-microvolt = <875000 875000 875000>; opp-microvolt-L1 = <875000 875000 875000>; @@ -2461,6 +2816,50 @@ opp-microvolt-L9 = <775000 775000 875000>; opp-microvolt-L10 = <762500 762500 875000>; }; + + /* RK3576J/M GPU OPPs */ + opp-j-m-300000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <300000000>; + opp-microvolt = <750000 750000 950000>; + }; + opp-j-m-400000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <750000 750000 950000>; + }; + opp-j-m-500000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <750000 750000 950000>; + }; + opp-j-m-600000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <750000 750000 950000>; + }; + opp-j-m-700000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <700000000>; + opp-microvolt = <750000 750000 950000>; + opp-microvolt-L0 = <775000 775000 950000>; + opp-microvolt-L1 = <762500 762500 950000>; + }; + gpu_opp_j_m_800000000: opp-j-m-800000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <800000000>; + opp-microvolt = <850000 850000 875000>; + opp-microvolt-L1 = <837500 837500 875000>; + opp-microvolt-L2 = <825000 825000 875000>; + opp-microvolt-L3 = <812500 812500 875000>; + opp-microvolt-L4 = <800000 800000 875000>; + opp-microvolt-L5 = <787500 787500 875000>; + opp-microvolt-L6 = <775000 775000 875000>; + opp-microvolt-L7 = <762500 762500 875000>; + opp-microvolt-L8 = <750000 750000 875000>; + opp-microvolt-L9 = <750000 750000 875000>; + opp-microvolt-L10 = <750000 750000 875000>; + }; }; ebc: ebc@27900000 { @@ -3140,8 +3539,9 @@ vop_opp_table: vop-opp-table { compatible = "operating-points-v2"; - nvmem-cells = <&log_leakage>; - nvmem-cell-names = "leakage"; + nvmem-cells = <&log_leakage>, <&specification_serial_number>; + nvmem-cell-names = "leakage", "specification_serial_number"; + rockchip,supported-hw; rockchip,early-min-microvolt = <750000>; /* vdd_logic */ @@ -3157,23 +3557,43 @@ 21 254 2 >; opp-500000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <500000000>; opp-microvolt = <725000 725000 800000>; opp-microvolt-L1 = <712500 712500 800000>; opp-microvolt-L2 = <712500 712500 800000>; }; opp-594000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <594000000>; opp-microvolt = <750000 750000 800000>; opp-microvolt-L1 = <750000 750000 800000>; opp-microvolt-L2 = <725000 725000 800000>; }; opp-702000000 { + opp-supported-hw = <0xf9 0xffff>; opp-hz = /bits/ 64 <702000000>; opp-microvolt = <750000 750000 800000>; opp-microvolt-L1 = <750000 750000 800000>; opp-microvolt-L2 = <725000 725000 800000>; }; + + /* RK3576J/M VOP OPPs */ + opp-j-m-500000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <750000 750000 800000>; + }; + opp-j-m-594000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <594000000>; + opp-microvolt = <750000 750000 800000>; + }; + opp-j-m-702000000 { + opp-supported-hw = <0x06 0xffff>; + opp-hz = /bits/ 64 <702000000>; + opp-microvolt = <750000 750000 800000>; + }; }; vop_mmu: iommu@27d07e00 {