/*
 * Copyright (c) 2019-2020, 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.
 */

/dts-v1/;
/plugin/;

#include "sdm429-spyro-qrd-evt.dtsi"
#include "sdm429-bg-soc.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDM429 BG DVT2 WTP Overlay";
	compatible = "qcom,sdm429w-qrd", "qcom,sdm429w", "qcom,qrd";
	qcom,msm-id = <416 0x0>;
	qcom,board-id = <0x00010b 0xA>;
	qcom,pmic-id = <0x0002001b 0x0 0x0 0x0>;
};

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_auo_416p_amoled_cmd>;
	/delete-property/ vdd-supply;
	vddio-supply = <&L11A>;
	pinctrl-names = "mdss_default", "mdss_sleep";
	pinctrl-0 = <&mdss_te_active>;
	pinctrl-1 = <&mdss_te_suspend>;
	qcom,platform-enable-gpio = <&pm660_gpios 12 0>;
};

&dsi_pm660_panel_pwr_supply {
	/delete-node/ qcom,panel-supply-entry@0;
};

&usb_otg {
	HSUSB_3p3-supply = <&L16A>;
};

&msm_dig_codec {
	cdc-vdd-digital-supply = <&pm660_l11>;
};

&ext_smart_pa {
	dvdd-supply = <&pm660_l11>;
};

&firmware {
	android {
		fstab {
			system {
				status = "disabled";
			};
		};
	};
};

&msm_gpu {
	qcom,initial-pwrlevel = <0>;
	qcom,gpu-pwrlevels {
		qcom,gpu-pwrlevel@0 {
			reg = <0>;
			qcom,gpu-freq = <320000000>;
			qcom,bus-freq = <2>;
			qcom,bus-min = <2>;
			qcom,bus-max = <2>;
		};
		qcom,gpu-pwrlevel@1{
			reg = <1>;
			qcom,gpu-freq = <19200000>;
			qcom,bus-freq = <0>;
			qcom,bus-min = <0>;
			qcom,bus-max = <0>;
		};
	};
};

&msm_cpufreq {
	qcom,cpufreq-table =
		<  960000 >,
		< 1305600 >,
		< 1497600 >,
		< 1708800 >;
};
&cpubw {
	qcom,bw-tbl =
		<  1611 /*  211.2 MHz */ >,     /*Low SVS*/
		<  2929 /*  384   MHz */ >,     /* SVS */
		<  5053 /*  662.4 MHz */ >,     /* SVS+  */
		<  5712 /*  748.8 MHz */ >;     /* NOM   */
};
