/* Copyright (c) 2013, 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/ "msm8974-gpu.dtsi"

&msm_gpu {
	qcom,chipid = <0x03000510>;

	qcom,clk-map = <0x00000016>; /* KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM_IFACE */

	/* Bus Scale Settings */
	qcom,msm-bus,name = "grp3d";
	qcom,msm-bus,num-cases = <4>;
	qcom,msm-bus,active-only = <0>;
	qcom,msm-bus,num-paths = <2>;
	qcom,msm-bus,vectors-KBps =
			<26 512 0 0>, <89 604 0 0>,
			<26 512 0 1600000>, <89 604 0 6400000>,
			<26 512 0 3200000>, <89 604 0 12800000>,
			<26 512 0 4264000>, <89 604 0 12800000>;

	/* GDSC oxili regulators */
	vddcx-supply = "\0";
	vdd-supply = <&gdsc_oxili_cx>;

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

		compatible = "qcom,gpu-pwrlevels";

		qcom,gpu-pwrlevel@0 {
			reg = <0>;
			qcom,gpu-freq = <450000000>;
			qcom,bus-freq = <3>;
			qcom,io-fraction = <0>;
		};

		qcom,gpu-pwrlevel@1 {
			reg = <1>;
			qcom,gpu-freq = <320000000>;
			qcom,bus-freq = <2>;
			qcom,io-fraction = <33>;
		};

		qcom,gpu-pwrlevel@2 {
			reg = <2>;
			qcom,gpu-freq = <200000000>;
			qcom,bus-freq = <1>;
			qcom,io-fraction = <100>;
		};

		qcom,gpu-pwrlevel@3 {
			reg = <3>;
			qcom,gpu-freq = <19000000>;
			qcom,bus-freq = <0>;
			qcom,io-fraction = <0>;
		};
	};
};
