/* Copyright (c) 2015-2017, 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 "msm8996-pinctrl.dtsi"
#include "apq8096-camera-sensor-dragonboard.dtsi"

/ {
	bluetooth: bt_qca6174 {
		compatible = "qca,qca6174";
		qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
		qca,bt-vdd-core-supply = <&vph_pwr_vreg>;
		qca,bt-vdd-pa-supply = <&vph_pwr_vreg>;
		qca,bt-vdd-io-supply = <&pm8994_s4>;
		qca,bt-vdd-xtal-supply = <&vph_pwr_vreg>;
		qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
		qca,bt-vdd-io-voltage-level = <1800000 1800000>;
		qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
	};
};

&ufs_ice {
	status = "ok";
};

&sdcc1_ice {
	status = "ok";
};

&ufsphy1 {
	status = "ok";
};

&ufs1 {
	status = "ok";
};

&uartblsp2dm1 {
	status = "ok";
	pinctrl-names = "default";
	pinctrl-0 = <&uart_console_active>;
};

&sdhc_1 {
	vdd-supply = <&pm8994_l20>;
	qcom,vdd-voltage-level = <2950000 2950000>;
	qcom,vdd-current-level = <200 570000>;

	vdd-io-supply = <&pm8994_s4>;
	qcom,vdd-io-always-on;
	qcom,vdd-io-voltage-level = <1800000 1800000>;
	qcom,vdd-io-current-level = <110 325000>;

	pinctrl-names = "active", "sleep";
	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;

	qcom,clk-rates = <400000 20000000 25000000 50000000
				96000000 192000000 384000000>;
	qcom,ice-clk-rates = <300000000 150000000>;
	qcom,nonremovable;
	qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v";

	status = "ok";
};

&sdhc_2 {
	vdd-supply = <&pm8994_l21>;
	qcom,vdd-voltage-level = <2950000 2950000>;
	qcom,vdd-current-level = <200 800000>;

	vdd-io-supply = <&pm8994_l13>;
	qcom,vdd-io-voltage-level = <1800000 2950000>;
	qcom,vdd-io-current-level = <200 22000>;

	pinctrl-names = "active", "sleep";
	pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;

	qcom,clk-rates = <400000 20000000 25000000 50000000
				100000000 200000000>;
	qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";

	cd-gpios = <&tlmm 95 0x1>;

	status = "ok";
};

&pm8994_vadc {
	chan@5 {
		label = "vcoin";
		reg = <5>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <1>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};

	chan@7 {
		label = "vph_pwr";
		reg = <7>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <1>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};

	chan@73 {
		label = "msm_therm";
		reg = <0x73>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};

	chan@74 {
		label = "emmc_therm";
		reg = <0x74>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};

	chan@75 {
		label = "pa_therm0";
		reg = <0x75>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};

	chan@77 {
		label = "pa_therm1";
		reg = <0x77>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};

	chan@78 {
		label = "quiet_therm";
		reg = <0x78>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};

	chan@7c {
		label = "xo_therm_buf";
		reg = <0x7c>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <4>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
	};
};

&pm8994_adc_tm {
	chan@73 {
		label = "msm_therm";
		reg = <0x73>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x48>;
		qcom,thermal-node;
	};

	chan@74 {
		label = "emmc_therm";
		reg = <0x74>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x68>;
		qcom,thermal-node;
	};

	chan@75 {
		label = "pa_therm0";
		reg = <0x75>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x70>;
		qcom,thermal-node;
	};

	chan@77 {
		label = "pa_therm1";
		reg = <0x77>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x78>;
		qcom,thermal-node;
	};

	chan@78 {
		label = "quiet_therm";
		reg = <0x78>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <2>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x80>;
		qcom,thermal-node;
	};

	chan@7c {
		label = "xo_therm_buf";
		reg = <0x7c>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <0>;
		qcom,calibration-type = "ratiometric";
		qcom,scale-function = <4>;
		qcom,hw-settle-time = <2>;
		qcom,fast-avg-setup = <0>;
		qcom,btm-channel-number = <0x88>;
		qcom,thermal-node;
	};
};

&mdss_hdmi_tx {
	pinctrl-names = "hdmi_hpd_active", "hdmi_ddc_active", "hdmi_cec_active",
				"hdmi_active", "hdmi_sleep";
	pinctrl-0 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_suspend
						&mdss_hdmi_cec_suspend>;
	pinctrl-1 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
						&mdss_hdmi_cec_suspend>;
	pinctrl-2 = <&mdss_hdmi_hpd_active &mdss_hdmi_cec_active
						&mdss_hdmi_ddc_suspend>;
	pinctrl-3 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
						&mdss_hdmi_cec_active>;
	pinctrl-4 = <&mdss_hdmi_hpd_suspend &mdss_hdmi_ddc_suspend
						&mdss_hdmi_cec_suspend>;
};

&pmi8994_vadc {
	chan@0 {
		label = "usbin";
		reg = <0>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <4>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};

	chan@1 {
		label = "dcin";
		reg = <1>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <4>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};

	chan@43 {
		label = "usb_dp";
		reg = <0x43>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <1>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};

	chan@44 {
		label = "usb_dm";
		reg = <0x44>;
		qcom,decimation = <0>;
		qcom,pre-div-channel-scaling = <1>;
		qcom,calibration-type = "absolute";
		qcom,scale-function = <0>;
		qcom,hw-settle-time = <0>;
		qcom,fast-avg-setup = <0>;
	};
};

#include "msm8996-sde-display.dtsi"

&dsi_hx8379a_fwvga_truly_vid {
	qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
	qcom,mdss-dsi-bl-min-level = <1>;
	qcom,mdss-dsi-bl-max-level = <255>;
	qcom,mdss-dsi-bl-pmic-pwm-frequency = <50>;
	qcom,mdss-dsi-bl-pmic-bank-select = <0>;
	qcom,mdss-dsi-pwm-gpio = <&pm8994_gpios 5 0>;
	qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
};

&mdss_mdp {
	qcom,mdss-pref-prim-intf = "dsi";
};

&sde_kms {
	connectors = <&sde_hdmi &display_manager>;
	gpus = <&msm_gpu>;
	memory-region = <&cont_splash_mem>;
	qcom,sde-plane-id-map {
		qcom,sde-plane-id@0 {
			qcom,display-type = "primary";
			qcom,plane-name = "rgb0", "rgb1";
			qcom,plane-type = "primary";
		};
		qcom,sde-plane-id@1 {
			qcom,display-type = "primary";
			qcom,plane-name = "vig0", "vig1";
			qcom,plane-type = "overlay";
		};
		qcom,sde-plane-id@2 {
			qcom,display-type = "primary";
			qcom,plane-name = "vig2", "vig3";
			qcom,plane-type = "overlay";
		};
		qcom,sde-plane-id@3 {
			qcom,display-type = "primary";
			qcom,plane-name = "rgb2", "rgb3";
			qcom,plane-type = "overlay";
		};
		qcom,sde-plane-id@4 {
			qcom,display-type = "primary";
			qcom,plane-name = "dma0", "dma1";
			qcom,plane-type = "overlay";
		};
		qcom,sde-plane-id@5 {
			qcom,display-type = "primary";
			qcom,plane-name = "cursor0";
			qcom,plane-type = "cursor";
		};
	};
};

&dsi_dual_sharp_video_1 {
	/delete-property/ qcom,dsi-display-active;
};

&sde_hdmi {
	status = "ok";
	qcom,hdmi-tx-ddc-clk-gpio = <&tlmm 32 0>;
	qcom,hdmi-tx-ddc-data-gpio = <&tlmm 33 0>;
	qcom,hdmi-tx-hpd-gpio = <&tlmm 34 0>;
	qcom,hdmi-tx-mux-en-gpio = <&tlmm 27 0>;
	qcom,hdmi-tx-mux-sel-gpio = <&tlmm 83 0>;
	qcom,hdmi-tx-mux-lpm-gpio = <&tlmm 85 0>;
};

&mdss_dsi {
	hw-config = "single_dsi";
};

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_hx8379a_fwvga_truly_vid>;
	pinctrl-names = "mdss_default", "mdss_sleep";
	pinctrl-0 = <&mdss_dsi_active &mdss_te_active &mdss_disp_bkl_active>;
	pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend &mdss_disp_bkl_suspend>;
	qcom,platform-te-gpio = <&tlmm 10 0>;
	qcom,platform-reset-gpio = <&tlmm 8 0>;
	qcom,platform-bklight-en-gpio = <&tlmm 135 0>;
};

&mdss_dsi1 {
	status = "disabled";
};

&labibb {
	status = "ok";
	qpnp,qpnp-labibb-mode = "lcd";
};

&ibb_regulator {
	qcom,qpnp-ibb-discharge-resistor = <32>;
};

&rpm_bus {
	rpm-regulator-bstb {
		status = "disabled";
		regulator-bst {
			status = "disabled";
		};
	};

	rpm-regulator-ldoa22 {
		pm8994_l22: regulator-l22 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
			qcom,init-voltage = <3000000>;
		};
	};
};

&pmi8994_charger {
	/delete-property/ otg-parent-supply;
	qcom,charging-disabled;
	smbcharger_charger_otg {
		parent-supply = <&pmi8994_boost_5v>;
	};
};

&usb_otg_switch {
	/delete-property/ vin-supply;
	gpio = <&pm8994_gpios 11 0>;
	enable-active-high;
	status = "ok";
};

&usb3 {
	qcom,charging-disabled;
	vbus_dwc3-supply = <&usb_otg_switch>;
};

&usb2s {
	status = "ok";
	pinctrl-0 = <&usb_hub_reset_active>;
	pinctrl-1 = <&usb_hub_reset_suspend>;
	qcom,ext-hub-reset-gpio =  <&tlmm 103 0>;
	qcom,disable-host-mode-pm;
	dwc3@7600000 {
		dr_mode = "host";
	};
};

&usb_nop_phy {
	status = "ok";
};

&qusb_phy1 {
	status = "ok";
};

&rome_vreg {
	status = "disabled";
};

&pm8994_mpps {
	mpp@a100 { /* MPP 2 */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,vin-sel = <2>;		/* S4 1.8V */
		qcom,src-sel = <0>;		/* Constant */
		qcom,master-en = <1>;		/* Enable GPIO */
		qcom,invert = <0>;
		status = "okay";
	};

	mpp@a200 { /* MPP 3 */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,vin-sel = <2>;		/* S4 1.8V */
		qcom,src-sel = <0>;		/* Constant */
		qcom,master-en = <1>;		/* Enable GPIO */
		qcom,invert = <0>;
		status = "okay";
	};

	mpp@a300 { /* MPP 4 */
		/* HDMI_5v_vreg regulator enable */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,vin-sel = <2>;		/* S4 1.8V */
		qcom,src-sel = <0>;		/* Constant */
		qcom,master-en = <1>;		/* Enable GPIO */
		qcom,invert = <0>;
		status = "okay";
	};

	mpp@a500 { /* MPP 6 */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,vin-sel = <2>;		/* S4 1.8V */
		qcom,src-sel = <0>;		/* Constant */
		qcom,master-en = <1>;		/* Enable GPIO */
		qcom,invert = <0>;
		status = "okay";
	};
};


&pmi8994_gpios {
	gpio@c100 {	/* GPIO 2  SPKR_SD_N */
		qcom,mode = <1>;	/* DIGITAL OUT */
		qcom,pull = <5>;	/* No Pull */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* CONSTANT */
		qcom,master-en = <1>;	/* ENABLE GPIO */
		status = "okay";
	};

	gpio@c200 {	/* GPIO 3 SPKR_SD_N */
		qcom,mode = <1>;	/* DIGITAL OUT */
		qcom,pull = <5>;	/* No Pull */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* CONSTANT */
		qcom,master-en = <1>;	/* ENABLE GPIO */
		status = "okay";
	};

	gpio@c300 {	/* GPIO 4 USB2_ID */
		qcom,mode = <0>;	/* DIGITAL INPUT */
		qcom,pull = <5>;	/* No Pull */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* CONSTANT */
		qcom,master-en = <1>;	/* ENABLE GPIO */
		status = "okay";
	};

	gpio@c500 {	/* GPIO 6 USB2_VBUS_DET*/
		qcom,mode = <0>;	/* DIGITAL INPUT */
		qcom,pull = <5>;	/* No Pull */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* CONSTANT */
		qcom,master-en = <1>;	/* ENABLE GPIO */
		status = "okay";
	};
};

&pmi8994_mpps {
	mpp@a300 { /* MPP 4 */
		/* WLED FET */
		qcom,mode = <1>;        /* DIGITAL OUT */
		qcom,vin-sel = <0>;     /* VIN0 */
		qcom,master-en = <1>;
		status = "okay";
	};
};

&soc {
	qcom,ntn_avb {
		compatible = "qcom,ntn_avb";

		ntn-rst-gpio = <&pm8994_gpios 13 0>;

		vdd-ntn-hsic-supply = <&pm8994_l25>;
		vdd-ntn-pci-supply = <&pm8994_s4>;
		vdd-ntn-io-supply = <&pm8994_s4>;

		qcom,ntn-rst-delay-msec = <100>;
		qcom,ntn-rc-num = <1>;
	};

	qcom,cnss {
		wlan-bootstrap-gpio = <&tlmm 46 0>;
		wlan-en-gpio = <&pm8994_gpios 8 0>;
		vdd-wlan-io-supply = <&pm8994_s4>;
		/* removing unneeded regulators */
		/delete-property/ vdd-wlan-supply;
		/delete-property/ vdd-wlan-xtal-supply;
		/delete-property/ vdd-wlan-core-supply;
	};

	i2c@75ba000 {
		synaptics@20 {
			compatible = "synaptics,dsx";
			reg = <0x20>;
			interrupt-parent = <&tlmm>;
			interrupts = <125 0x2008>;
			vdd-supply = <&pm8994_l14>;
			avdd-supply = <&pm8994_l22>;
			pinctrl-names = "pmx_ts_active", "pmx_ts_suspend";
			pinctrl-0 = <&ts_active>;
			pinctrl-1 = <&ts_suspend>;
			synaptics,display-coords = <0 0 480 854>;
			synaptics,panel-coords = <0 0 480 854>;
			synaptics,reset-gpio = <&tlmm 89 0x00>;
			synaptics,irq-gpio = <&tlmm 125 0x2008>;
			synaptics,button-map = <139 102 158>;
			synaptics,disable-gpios;
			/* Underlying clocks used by secure touch */
			clock-names = "iface_clk", "core_clk";
			clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
				 <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		input-name = "gpio-keys";

		vol_up {
			label = "volume_up";
			gpios = <&pm8994_gpios 2 0x1>;
			linux,input-type = <1>;
			linux,code = <115>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};


		gp_switch_gpio {
			label = "gp_switch_gpio";
			pinctrl-0 = <&gp_switch_active>;
			pinctrl-1 = <&gp_switch_suspend>;
			gpios = <&tlmm 127 0x1>;
			linux,input-type = <1>;
			linux,code = <158>; /* By default mapped to BACK */
			gpio-key,wakeup;
			debounce-interval = <15>;
		};
	};

	/*
	* vph_pwr_vreg represents the unregulated battery voltage supply
	* VPH_PWR that is present whenever the device is powered on.
	*/
	vph_pwr_vreg: vph_pwr_vreg {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		status = "ok";
		regulator-always-on;
	};


	sound {
		status = "disabled";
	};

	sound-9335 {
		status = "disabled";
	};

	sound-auto {
		compatible = "qcom,apq8096-asoc-snd-auto";
		qcom,model = "apq8096-auto-snd-card";

		asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
				<&loopback>, <&compress>, <&hostless>,
				<&afe>, <&lsm>, <&routing>, <&pcmnoirq>,
				<&loopback1>;
		asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
				"msm-pcm-dsp.2", "msm-voip-dsp",
				"msm-pcm-voice", "msm-pcm-loopback",
				"msm-compress-dsp", "msm-pcm-hostless",
				"msm-pcm-afe", "msm-lsm-client",
				"msm-pcm-routing", "msm-pcm-dsp-noirq",
				"msm-pcm-loopback.1";
		asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&dai_hdmi>,
				<&dai_mi2s_sec>, <&dai_mi2s>, <&dai_mi2s_quat>,
				<&afe_pcm_rx>, <&afe_pcm_tx>,
				<&afe_proxy_rx>, <&afe_proxy_tx>,
				<&incall_record_rx>, <&incall_record_tx>,
				<&incall_music_rx>, <&incall_music2_rx>,
				<&dai_sec_tdm_tx_0>, <&dai_sec_tdm_tx_1>,
				<&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>,
				<&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>,
				<&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>,
				<&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>,
				<&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>,
				<&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>,
				<&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>,
				<&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>,
				<&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>,
				<&dai_quat_tdm_tx_3>;
		asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2",
				"msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1",
				"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
				"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
				"msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
				"msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
				"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
				"msm-dai-q6-tdm.36881", "msm-dai-q6-tdm.36883",
				"msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887",
				"msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898",
				"msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902",
				"msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897",
				"msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901",
				"msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912",
				"msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916",
				"msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913",
				"msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917",
				"msm-dai-q6-tdm.36919";
		asoc-codec = <&stub_codec>;
		asoc-codec-names = "msm-stub-codec.1";
	};

	usb_detect {
		compatible = "qcom,gpio-usbdetect";
		interrupt-parent = <&spmi_bus>;
		interrupts = <0x0 0xd5 0x0>;  /* PM8994 GPIO22 */
		interrupt-names = "vbus_det_irq";
		vin-supply = <&vph_pwr_vreg>;
	};

	loopback1: qcom,msm-pcm-loopback-low-latency {
		compatible = "qcom,msm-pcm-loopback";
		qcom,msm-pcm-loopback-low-latency;
	};

	qcom,msm-dai-mi2s {
		dai_mi2s_sec: qcom,msm-dai-q6-mi2s-sec {
			qcom,msm-mi2s-rx-lines = <2>;
			qcom,msm-mi2s-tx-lines = <1>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&sec_mi2s_active &sec_mi2s_sd0_active
				&sec_mi2s_sd1_active>;
			pinctrl-1 = <&sec_mi2s_sleep &sec_mi2s_sd0_sleep
				&sec_mi2s_sd1_sleep>;
		};

		dai_mi2s_quat: qcom,msm-dai-q6-mi2s-quat {
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active>;
			pinctrl-1 = <&quat_mi2s_sleep &quat_mi2s_sd0_sleep>;
		};
	};

	qcom,msm-dai-tdm-tert-rx {
		qcom,msm-cpudai-tdm-group-num-ports = <5>;
		qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900
							36902 36904>;
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&tert_tdm_dout_active>;
		pinctrl-1 = <&tert_tdm_dout_sleep>;
		dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 {
			compatible = "qcom,msm-dai-q6-tdm";
			qcom,msm-cpudai-tdm-dev-id = <36904>;
			qcom,msm-cpudai-tdm-sync-mode = <1>;
			qcom,msm-cpudai-tdm-sync-src = <0>;
			qcom,msm-cpudai-tdm-data-out = <0>;
			qcom,msm-cpudai-tdm-invert-sync = <0>;
			qcom,msm-cpudai-tdm-data-delay = <0>;
			qcom,msm-cpudai-tdm-data-align = <0>;
		};
	};

	qcom,msm-dai-tdm-quat-rx {
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&quat_tdm_dout_active>;
		pinctrl-1 = <&quat_tdm_dout_sleep>;
	};

	qcom,msm-ba {
		compatible = "qcom,msm-ba";
		qcom,ba-input-profile-0 {
			qcom,type = <4>;          /* input type   */
			qcom,name = "HDMI-1";     /* input name   */
			qcom,ba-input = <13>;     /* ba input id  */
			qcom,ba-output = <0>;     /* ba output id */
			qcom,sd-name = "adv7481"; /* sd name      */
			qcom,ba-node = <0>;       /* ba node      */
			qcom,user-type = <1>;     /* user type    */
		};
	};

	qcom,adv7481@70 {
		compatible = "qcom,adv7481";
		reg = <0x70 0xff>;
		cam_vdig-supply = <&vph_pwr_vreg>;
		/* Cameras powered by PMIC: */
		cam_vio-supply = <&pm8994_lvs1>;
		cam_vana-supply = <&pm8994_l17>;
		/* Self-powered cameras: */
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
		qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
		qcom,cam-vreg-op-mode = <105000 0 80000>;

		qcom,cci-master = <0>;
		gpios = <&tlmm 17 0>,          /* I2C SDA */
			<&tlmm 18 0>,          /* I2C SCL */
			<&pm8994_gpios 4 0>,   /* RST     */
			<&pm8994_gpios 5 0>,   /* INT1    */
			<&pm8994_gpios 6 0>,   /* INT2    */
			<&pm8994_gpios 7 0>;   /* INT3    */
	};
};

&spmi_bus {
	qcom,pm8994@1 {
		pwm@b100 {
			qcom,dtest-line = <4>;
			qcom,dtest-output = <1>;
			status = "okay";
		};
	};
};

&pm8994_gpios {
	gpio@c100 { /* GPIO 2 - KYPD_VOLP_N */
		qcom,mode = <0>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
		status = "okay";
	};

	gpio@c300 { /* GPIO 4 - adv7481 RST */
		qcom,mode = <1>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
		status = "okay";
	};

	gpio@c400 { /* GPIO 5 - adv7481 INT1 */
		qcom,mode = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
		status = "okay";
	};

	gpio@c500 { /* GPIO 6 - adv7481 INT2*/
		qcom,mode = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
		status = "okay";
	};

	gpio@c600 { /* GPIO 7 - adv7481 INT3*/
		qcom,mode = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
		status = "okay";
	};

	gpio@c700 { /* GPIO 8 - WLAN_EN */
		qcom,mode = <1>;	/* Digital output*/
		qcom,out-strength = <2>;/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,pull = <4>;	/* Pulldown 10uA */
		qcom,vin-sel = <2>;	/* VIN2 */
		qcom,src-sel = <0>;	/* GPIO */
		qcom,invert = <0>;	/* Invert */
		qcom,master-en = <1>;	/* Enable GPIO */
		status = "okay";
	};

	gpio@c900 { /* GPIO 10 */
		qcom,mode = <1>;	/* DIGITAL OUT */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* GPIO */
		qcom,master-en = <1>;	/* ENABLE GPIO */
		status = "okay";
	};

	gpio@ca00 { /* GPIO 11 - USB enb1 (otg switch) */
		qcom,mode = <1>;	/* DIGITAL OUT */
		qcom,pull = <1>;	/* PULL DOWN */
		qcom,vin-sel = <2>;	/* 1.8 */
		qcom,src-sel = <0>;	/* GPIO */
		qcom,master-en = <1>;	/* Enable GPIO */
		status = "okay";
	};

	gpio@cc00 { /* GPIO 13 - NTN_RST */
		qcom,mode = <1>; /* DIGITAL OUT */
		qcom,output-type = <0>; /* CMOS logic */
		qcom,pull = <5>;
		qcom,vin-sel = <2>; /* 1.8 */
		qcom,out-strength = <1>;
		qcom,src-sel = <0>; /* GPIO */
		qcom,master-en = <0>; /* Disable GPIO */
		status = "okay";
	};

	gpio@ce00 { /* GPIO 15 - DIVCLK1 */
		qcom,mode = <1>;
		qcom,output-type = <0>;
		qcom,pull = <5>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <1>;
		qcom,src-sel = <2>;
		qcom,master-en = <1>;
		status = "okay";
	};

	gpio@cf00 { /* GPIO 16 - DIVCLK2 */
		qcom,mode = <1>;
		qcom,output-type = <0>;
		qcom,pull = <5>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <1>;
		qcom,src-sel = <2>;
		qcom,master-en = <1>;
		status = "okay";
	};

	gpio@d000 { /* GPIO 17 - DIVCLK3 */
		qcom,mode = <1>;
		qcom,output-type = <0>;
		qcom,pull = <5>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <1>;
		qcom,src-sel = <2>;
		qcom,master-en = <1>;
		status = "okay";
	};

	gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,invert = <0>;		/* Output low initially */
		qcom,vin-sel = <2>;		/* VIN 2 */
		qcom,src-sel = <3>;		/* Function 2 */
		qcom,out-strength = <2>;	/* Medium */
		qcom,master-en = <1>;		/* Enable GPIO */
		status = "okay";
	};

	gpio@d200 { /* GPIO 19 - Rome BT Reset */
		qcom,mode = <1>;		/* Digital output*/
		qcom,out-strength = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,pull = <4>;		/* Pulldown 10uA */
		qcom,vin-sel = <2>;		/* VIN2 */
		qcom,src-sel = <0>;		/* GPIO */
		qcom,invert = <0>;		/* Invert */
		qcom,master-en = <1>;		/* Enable GPIO */
		status = "okay";
	};

	gpio@d500 { /* GPIO 22 - USB1 VBUS detect  */
		qcom,mode = <0>;		/* Digital Input*/
		qcom,pull = <5>;		/* No pull */
		qcom,vin-sel = <2>;		/* 1.8 V */
		qcom,src-sel = <0>;		/* GPIO */
		qcom,invert = <0>;		/* Invert */
		qcom,master-en = <1>;		/* Enable GPIO */
		status = "okay";
	};
};

&pmi8994_haptics {
	status = "okay";
};

&blsp1_uart2 {
	status = "ok";
};

&slim_msm {
	tasha_codec {
		qcom,cdc-micbias2-headset-only;
		qcom,cdc-micbias1-ext-cap;
		qcom,cdc-micbias2-ext-cap;
		qcom,cdc-micbias3-ext-cap;
		qcom,cdc-micbias4-ext-cap;
	};
};

&cam_sensor_mclk0_active { /* MCLK0 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&cam_sensor_mclk0_suspend { /* MCLK0 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&cam_sensor_mclk1_active { /* MCLK1 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&cam_sensor_mclk1_suspend { /* MCLK1 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&cam_sensor_mclk2_active { /* MCLK2 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&cam_sensor_mclk2_suspend { /* MCLK2 */
	config {
		drive-strength = <8>; /* 8 MA */
	};
};

&spi_0 {
	spi_codec@0 {
		compatible = "qcom,spi-msm-codec-slave";
		reg = <0>;
		spi-max-frequency = <2000000>;
		spi-cpha;
	};
};
