// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2022, Linaro Limited
 */

#include "msm8996.dtsi"

/ {
	/delete-node/ opp-table-cluster0;
	/delete-node/ opp-table-cluster1;

	/*
	 * On MSM8996 Pro the cpufreq driver shifts speed bins into the high
	 * nibble of supported hw, so speed bin 0 becomes 0x10, speed bin 1
	 * becomes 0x20, speed 2 becomes 0x40.
	 */

	cluster0_opp: opp-table-cluster0 {
		compatible = "operating-points-v2-kryo-cpu";
		nvmem-cells = <&speedbin_efuse>;
		opp-shared;

		opp-307200000 {
			opp-hz = /bits/ 64 <307200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-384000000 {
			opp-hz = /bits/ 64 <384000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-460800000 {
			opp-hz = /bits/ 64 <460800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-537600000 {
			opp-hz = /bits/ 64 <537600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-614400000 {
			opp-hz = /bits/ 64 <614400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-691200000 {
			opp-hz = /bits/ 64 <691200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-768000000 {
			opp-hz = /bits/ 64 <768000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-844800000 {
			opp-hz = /bits/ 64 <844800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-902400000 {
			opp-hz = /bits/ 64 <902400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-979200000 {
			opp-hz = /bits/ 64 <979200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1056000000 {
			opp-hz = /bits/ 64 <1056000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1132800000 {
			opp-hz = /bits/ 64 <1132800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1209600000 {
			opp-hz = /bits/ 64 <1209600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1286400000 {
			opp-hz = /bits/ 64 <1286400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1363200000 {
			opp-hz = /bits/ 64 <1363200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1440000000 {
			opp-hz = /bits/ 64 <1440000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1516800000 {
			opp-hz = /bits/ 64 <1516800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1593600000 {
			opp-hz = /bits/ 64 <1593600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1996800000 {
			opp-hz = /bits/ 64 <1996800000>;
			opp-supported-hw = <0x20>;
			clock-latency-ns = <200000>;
		};
		opp-2188800000 {
			opp-hz = /bits/ 64 <2188800000>;
			opp-supported-hw = <0x10>;
			clock-latency-ns = <200000>;
		};
	};

	cluster1_opp: opp-table-cluster1 {
		compatible = "operating-points-v2-kryo-cpu";
		nvmem-cells = <&speedbin_efuse>;
		opp-shared;

		opp-307200000 {
			opp-hz = /bits/ 64 <307200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-384000000 {
			opp-hz = /bits/ 64 <384000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-460800000 {
			opp-hz = /bits/ 64 <460800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-537600000 {
			opp-hz = /bits/ 64 <537600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-614400000 {
			opp-hz = /bits/ 64 <614400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-691200000 {
			opp-hz = /bits/ 64 <691200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-748800000 {
			opp-hz = /bits/ 64 <748800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-825600000 {
			opp-hz = /bits/ 64 <825600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-902400000 {
			opp-hz = /bits/ 64 <902400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-979200000 {
			opp-hz = /bits/ 64 <979200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1056000000 {
			opp-hz = /bits/ 64 <1056000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1132800000 {
			opp-hz = /bits/ 64 <1132800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1209600000 {
			opp-hz = /bits/ 64 <1209600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1286400000 {
			opp-hz = /bits/ 64 <1286400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1363200000 {
			opp-hz = /bits/ 64 <1363200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1440000000 {
			opp-hz = /bits/ 64 <1440000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1516800000 {
			opp-hz = /bits/ 64 <1516800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1593600000 {
			opp-hz = /bits/ 64 <1593600000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1670400000 {
			opp-hz = /bits/ 64 <1670400000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1747200000 {
			opp-hz = /bits/ 64 <1747200000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1824000000 {
			opp-hz = /bits/ 64 <1824000000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1900800000 {
			opp-hz = /bits/ 64 <1900800000>;
			opp-supported-hw = <0x70>;
			clock-latency-ns = <200000>;
		};
		opp-1977600000 {
			opp-hz = /bits/ 64 <1977600000>;
			opp-supported-hw = <0x30>;
			clock-latency-ns = <200000>;
		};
		opp-2054400000 {
			opp-hz = /bits/ 64 <2054400000>;
			opp-supported-hw = <0x30>;
			clock-latency-ns = <200000>;
		};
		opp-2150400000 {
			opp-hz = /bits/ 64 <2150400000>;
			opp-supported-hw = <0x30>;
			clock-latency-ns = <200000>;
		};
		opp-2246400000 {
			opp-hz = /bits/ 64 <2246400000>;
			opp-supported-hw = <0x10>;
			clock-latency-ns = <200000>;
		};
		opp-2342400000 {
			opp-hz = /bits/ 64 <2342400000>;
			opp-supported-hw = <0x10>;
			clock-latency-ns = <200000>;
		};
	};
};

&gpu_opp_table {
	/*
	 * Unlike CPU opp tables, the GPU driver does not shift speed bins.
	 *
	 * 652.8 Mhz is available on speed bin 0 only.
	 * 624 Mhz and 560 Mhz are available on speed bins 0 and 1.
	 * All the rest are available on all bins of the hardware (like on
	 * plain 8996).
	 */

	opp-652800000 {
		opp-hz = /bits/ 64 <652800000>;
		opp-supported-hw = <0x01>;
	};
	opp-624000000 {
		opp-hz = /bits/ 64 <624000000>;
		opp-supported-hw = <0x03>;
	};
	opp-560000000 {
		opp-hz = /bits/ 64 <560000000>;
		opp-supported-hw = <0x03>;
	};
	/* The rest is inherited from msm8996 */
};
