// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018, Craig Tatlor.
 * Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com>
 * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
 * Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
 * Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
 */

#include "sdm630.dtsi"

&adreno_gpu {
	compatible = "qcom,adreno-512.0", "qcom,adreno";
	operating-points-v2 = <&gpu_sdm660_opp_table>;

	gpu_sdm660_opp_table: opp-table {
		compatible  = "operating-points-v2";

		/*
		 * 775MHz is only available on the highest speed bin
		 * Though it cannot be used for now due to interconnect
		 * framework not supporting multiple frequencies
		 * at the same opp-level

		opp-750000000 {
			opp-hz = /bits/ 64 <750000000>;
			opp-level = <RPM_SMD_LEVEL_TURBO>;
			opp-peak-kBps = <5412000>;
			opp-supported-hw = <0xCHECKME>;
		};

		* These OPPs are correct, but we are lacking support for the
		* GPU regulator. Hence, disable them for now to prevent the
		* platform from hanging on high graphics loads.

		opp-700000000 {
			opp-hz = /bits/ 64 <700000000>;
			opp-level = <RPM_SMD_LEVEL_TURBO>;
			opp-peak-kBps = <5184000>;
			opp-supported-hw = <0xFF>;
		};

		opp-647000000 {
			opp-hz = /bits/ 64 <647000000>;
			opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
			opp-peak-kBps = <4068000>;
			opp-supported-hw = <0xFF>;
		};

		opp-588000000 {
			opp-hz = /bits/ 64 <588000000>;
			opp-level = <RPM_SMD_LEVEL_NOM>;
			opp-peak-kBps = <3072000>;
			opp-supported-hw = <0xFF>;
		};

		opp-465000000 {
			opp-hz = /bits/ 64 <465000000>;
			opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
			opp-peak-kBps = <2724000>;
			opp-supported-hw = <0xFF>;
		};

		opp-370000000 {
			opp-hz = /bits/ 64 <370000000>;
			opp-level = <RPM_SMD_LEVEL_SVS>;
			opp-peak-kBps = <2188000>;
			opp-supported-hw = <0xFF>;
		};
		*/

		opp-266000000 {
			opp-hz = /bits/ 64 <266000000>;
			opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
			opp-peak-kBps = <1648000>;
			opp-supported-hw = <0xFF>;
		};

		opp-160000000 {
			opp-hz = /bits/ 64 <160000000>;
			opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
			opp-peak-kBps = <1200000>;
			opp-supported-hw = <0xFF>;
		};
	};
};

&CPU0 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <1024>;
	/delete-property/ operating-points-v2;
};

&CPU1 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <1024>;
	/delete-property/ operating-points-v2;
};

&CPU2 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <1024>;
	/delete-property/ operating-points-v2;
};

&CPU3 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <1024>;
	/delete-property/ operating-points-v2;
};

&CPU4 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <640>;
	/delete-property/ operating-points-v2;
};

&CPU5 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <640>;
	/delete-property/ operating-points-v2;
};

&CPU6 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <640>;
	/delete-property/ operating-points-v2;
};

&CPU7 {
	compatible = "qcom,kryo260";
	capacity-dmips-mhz = <640>;
	/delete-property/ operating-points-v2;
};

&gcc {
	compatible = "qcom,gcc-sdm660";
};

&gpucc {
	compatible = "qcom,gpucc-sdm660";
};

&mdp {
	ports {
		port@1 {
			reg = <1>;
			mdp5_intf2_out: endpoint {
				remote-endpoint = <&dsi1_in>;
			};
		};
	};
};

&mdss {
	dsi1: dsi@c996000 {
		compatible = "qcom,mdss-dsi-ctrl";
		reg = <0x0c996000 0x400>;
		reg-names = "dsi_ctrl";

		/* DSI1 shares the OPP table with DSI0 */
		operating-points-v2 = <&dsi_opp_table>;
		power-domains = <&rpmpd SDM660_VDDCX>;

		interrupt-parent = <&mdss>;
		interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;

		assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
					<&mmcc PCLK1_CLK_SRC>;
		assigned-clock-parents = <&dsi1_phy 0>,
						<&dsi1_phy 1>;

		clocks = <&mmcc MDSS_MDP_CLK>,
				<&mmcc MDSS_BYTE1_CLK>,
				<&mmcc MDSS_BYTE1_INTF_CLK>,
				<&mmcc MNOC_AHB_CLK>,
				<&mmcc MDSS_AHB_CLK>,
				<&mmcc MDSS_AXI_CLK>,
				<&mmcc MISC_AHB_CLK>,
				<&mmcc MDSS_PCLK1_CLK>,
				<&mmcc MDSS_ESC1_CLK>;
		clock-names = "mdp_core",
					"byte",
					"byte_intf",
					"mnoc",
					"iface",
					"bus",
					"core_mmss",
					"pixel",
					"core";

		phys = <&dsi1_phy>;
		phy-names = "dsi";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				dsi1_in: endpoint {
					remote-endpoint = <&mdp5_intf2_out>;
				};
			};

			port@1 {
				reg = <1>;
				dsi1_out: endpoint {
				};
			};
		};
	};

	dsi1_phy: dsi-phy@c996400 {
		compatible = "qcom,dsi-phy-14nm-660";
		reg = <0x0c996400 0x100>,
				<0x0c996500 0x300>,
				<0x0c996800 0x188>;
		reg-names = "dsi_phy",
				"dsi_phy_lane",
				"dsi_pll";

		#clock-cells = <1>;
		#phy-cells = <0>;

		clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
		clock-names = "iface", "ref";
	};
};

&mmcc {
	compatible = "qcom,mmcc-sdm660";
	clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
			<&sleep_clk>,
			<&gcc GCC_MMSS_GPLL0_CLK>,
			<&gcc GCC_MMSS_GPLL0_DIV_CLK>,
			<&dsi0_phy 1>,
			<&dsi0_phy 0>,
			<&dsi1_phy 1>,
			<&dsi1_phy 0>,
			<0>,
			<0>;
};

&tlmm {
	compatible = "qcom,sdm660-pinctrl";
};

&tsens {
	#qcom,sensors = <14>;
};
