/*
 * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include "msm8953.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDM450";
	compatible = "qcom,sdm450";
	qcom,msm-id = <338 0x0>;
	qcom,msm-name = "SDM450";
};

&CPU4 {
	efficiency = <1024>;
};

&CPU5 {
	efficiency = <1024>;
};

&CPU6 {
	efficiency = <1024>;
};

&CPU7 {
	efficiency = <1024>;
};

&clock_gcc_gfx {
	compatible = "qcom,gcc-gfx-sdm450";
	qcom,gfxfreq-corner =
		<         0   0 >,
		< 133330000   1 >,  /* Min SVS   */
		< 216000000   2 >,  /* Low SVS   */
		< 320000000   3 >,  /* SVS       */
		< 400000000   4 >,  /* SVS Plus  */
		< 510000000   5 >,  /* NOM       */
		< 560000000   6 >,  /* Nom Plus  */
		< 600000000   7 >;  /* Turbo     */
};

/* GPU Overrides*/
&msm_gpu {

	/delete-node/qcom,gpu-pwrlevels;

	qcom,gpu-pwrlevels {
		#address-cells = <1>;
		#size-cells = <0>;

		compatible = "qcom,gpu-pwrlevels";

		/* TURBO */
		qcom,gpu-pwrlevel@0 {
			reg = <0>;
			qcom,gpu-freq = <600000000>;
			qcom,bus-freq = <10>;
			qcom,bus-min = <10>;
			qcom,bus-max = <10>;
		};

		/* NOM+ */
		qcom,gpu-pwrlevel@1 {
			reg = <1>;
			qcom,gpu-freq = <560000000>;
			qcom,bus-freq = <10>;
			qcom,bus-min = <8>;
			qcom,bus-max = <10>;
		};

		/* NOM */
		qcom,gpu-pwrlevel@2 {
			reg = <2>;
			qcom,gpu-freq = <510000000>;
			qcom,bus-freq = <9>;
			qcom,bus-min = <6>;
			qcom,bus-max = <10>;
		};

		/* SVS+ */
		qcom,gpu-pwrlevel@3 {
			reg = <3>;
			qcom,gpu-freq = <400000000>;
			qcom,bus-freq = <7>;
			qcom,bus-min = <5>;
			qcom,bus-max = <8>;
		};

		/* SVS */
		qcom,gpu-pwrlevel@4 {
			reg = <4>;
			qcom,gpu-freq = <320000000>;
			qcom,bus-freq = <4>;
			qcom,bus-min = <2>;
			qcom,bus-max = <6>;
		};

		/* Low SVS */
		qcom,gpu-pwrlevel@5 {
			reg = <5>;
			qcom,gpu-freq = <216000000>;
			qcom,bus-freq = <1>;
			qcom,bus-min = <1>;
			qcom,bus-max = <4>;
		};

		/* Min SVS */
		qcom,gpu-pwrlevel@6 {
			reg = <6>;
			qcom,gpu-freq = <133300000>;
			qcom,bus-freq = <1>;
			qcom,bus-min = <1>;
			qcom,bus-max = <4>;
		};
		/* XO */
		qcom,gpu-pwrlevel@7 {
			reg = <7>;
			qcom,gpu-freq = <19200000>;
			qcom,bus-freq = <0>;
			qcom,bus-min = <0>;
		};
	};
};
