/*
 * 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 QRD BG WTP Overlay";
	compatible = "qcom,sdm429w-qrd", "qcom,sdm429w", "qcom,qrd";
	qcom,msm-id = <416 0x0>;
	qcom,board-id = <0x00010b 8>;
	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;
};

&i2c_4 {
	status = "ok";
	tsc@24 {
		status = "disabled";
	};

	raydium_ts@39 {
		compatible = "raydium,raydium-ts";
		reg = <0x39>;
		interrupt-parent = <&tlmm>;
		interrupts = <13 0x2008>;
		vdd_ana-supply = <&pm660_l11>;
		vcc_i2c-supply = <&pm660_l13>;
		pinctrl-names = "pmx_ts_active","pmx_ts_suspend",
					"pmx_ts_release";
		pinctrl-0 = <&ts_int_active &ts_reset_active>;
		pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
		pinctrl-2 = <&ts_release>;
		raydium,reset-gpio = <&tlmm 64 0x00>;
		raydium,irq-gpio = <&tlmm 65 0x00>;
		raydium,num-max-touches = <2>;
		raydium,soft-reset-delay-ms = <50>;
		raydium,hard-reset-delay-ms = <100>;
		raydium,x_max = <416>;
		raydium,y_max = <416>;
		raydium,display-coords= <0  0 416 416>;
		raydium,fw_id = <0x2202>;
	};
};

&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   */
};
