/* Copyright (c) 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 "smb1355.dtsi"
#include <dt-bindings/gpio/gpio.h>

/{
	bluetooth: bt_wcn3990 {
		compatible = "qca,wcn3990";
		qca,bt-vdd-io-supply = <&pm8998_s3>;
		qca,bt-vdd-xtal-supply = <&pm8998_s5>;
		qca,bt-vdd-core-supply = <&pm8998_l7>;
		qca,bt-vdd-pa-supply = <&pm8998_l17>;
		qca,bt-vdd-ldo-supply = <&pm8998_l25>;

		qca,bt-vdd-io-voltage-level = <1352000 1352000>;
		qca,bt-vdd-xtal-voltage-level = <2040000 2040000>;
		qca,bt-vdd-core-voltage-level = <1800000 1800000>;
		qca,bt-vdd-pa-voltage-level = <1304000 1304000>;
		qca,bt-vdd-ldo-voltage-level = <3312000 3312000>;

		qca,bt-vdd-io-current-level = <1>; /* LPM/PFM */
		qca,bt-vdd-xtal-current-level = <1>; /* LPM/PFM */
		qca,bt-vdd-core-current-level = <1>; /* LPM/PFM */
		qca,bt-vdd-pa-current-level = <1>; /* LPM/PFM */
		qca,bt-vdd-ldo-current-level = <1>; /* LPM/PFM */
	};

	qrd_batterydata: qcom,battery-data {
		qcom,batt-id-range-pct = <15>;
		#include "fg-gen3-batterydata-itech-3000mah.dtsi"
		#include "fg-gen3-batterydata-ascent-3450mah.dtsi"
	};

	aliases {
		serial0 = &qupv3_se9_2uart;
		spi0 = &qupv3_se8_spi;
		i2c0 = &qupv3_se10_i2c;
		i2c1 = &qupv3_se3_i2c;
		hsuart0 = &qupv3_se6_4uart;
	};
};

&qupv3_se9_2uart {
	status = "ok";
};

&qupv3_se8_spi {
	status = "ok";
};

&qupv3_se3_i2c {
	status = "ok";
	nq@28 {
		compatible = "qcom,nq-nci";
		reg = <0x28>;
		qcom,nq-irq = <&tlmm 63 0x00>;
		qcom,nq-ven = <&tlmm 12 0x00>;
		qcom,nq-firm = <&tlmm 62 0x00>;
		qcom,nq-clkreq = <&pm8998_gpios 21 0x00>;
		qcom,nq-esepwr = <&tlmm 116 0x00>;
		interrupt-parent = <&tlmm>;
		qcom,clk-src = "BBCLK3";
		interrupts = <63 0>;
		interrupt-names = "nfc_irq";
		pinctrl-names = "nfc_active", "nfc_suspend";
		pinctrl-0 = <&nfc_int_active
			     &nfc_enable_active
			     &nfc_clk_default>;
		pinctrl-1 = <&nfc_int_suspend &nfc_enable_suspend>;
		clocks = <&clock_rpmh RPMH_LN_BB_CLK3>;
		clock-names = "ref_clk";
	};
};

&qupv3_se10_i2c {
	status = "ok";
};

&qupv3_se6_4uart {
	status = "ok";
};

&pmi8998_fg {
	qcom,battery-data = <&qrd_batterydata>;
};

&smb1355_charger {
	status = "ok";
};

&mdss_mdp {
	#cooling-cells = <2>;
};

&soc {
	sound-tavil {
		qcom,wsa-max-devs = <1>;
		qcom,wsa-devs = <&wsa881x_0211>, <&wsa881x_0213>;
		qcom,wsa-aux-dev-prefix = "SpkrRight", "SpkrRight";

		qcom,msm-mbhc-usbc-audio-supported = <1>;

		qcom,usbc-analog-en2-gpio = <&tlmm 51 0>;
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&wcd_usbc_analog_en2_active>;
		pinctrl-1 = <&wcd_usbc_analog_en2_idle>;
	};
};

&wcd934x_cdc {
	wcd: wcd_pinctrl@5 {
		us_euro_sw_wcd_active: us_euro_sw_wcd_active {
			mux {
				pins = "gpio1";
			};

			config {
				pins = "gpio1";
				/delete-property/ output-high;
				bias-high-impedance;
			};
		};

		us_euro_sw_wcd_sleep: us_euro_sw_wcd_sleep {
			mux {
				pins = "gpio1";
			};

			config {
				pins = "gpio1";
				/delete-property/ output-low;
				bias-high-impedance;
			};
		};
	};
};

&ufsphy_mem {
	compatible = "qcom,ufs-phy-qmp-v3";

	vdda-phy-supply = <&pm8998_l1>; /* 0.88v */
	vdda-pll-supply = <&pm8998_l26>; /* 1.2v */
	vdda-phy-max-microamp = <62900>;
	vdda-pll-max-microamp = <18300>;

	status = "ok";
};

&ufshc_mem {
	vdd-hba-supply = <&ufs_phy_gdsc>;
	vdd-hba-fixed-regulator;
	vcc-supply = <&pm8998_l20>;
	vccq2-supply = <&pm8998_s4>;
	vcc-max-microamp = <600000>;
	vccq2-max-microamp = <600000>;

	qcom,vddp-ref-clk-supply = <&pm8998_l2>;
	qcom,vddp-ref-clk-max-microamp = <100>;

	status = "ok";
};

&extcon_storage_cd {
	gpio = <&tlmm 126 GPIO_ACTIVE_LOW>;
	debounce-ms = <200>;
	irq-flags = <IRQ_TYPE_EDGE_BOTH>;

	pinctrl-names = "default";
	pinctrl-0 = <&storage_cd>;

	status = "ok";
};

&ufsphy_card {
	compatible = "qcom,ufs-phy-qmp-v3";

	vdda-phy-supply = <&pm8998_l1>; /* 0.88v */
	vdda-pll-supply = <&pm8998_l26>; /* 1.2v */
	vdda-phy-max-microamp = <62900>;
	vdda-pll-max-microamp = <18300>;

	status = "ok";
};

&ufshc_card {
	vdd-hba-supply = <&ufs_card_gdsc>;
	vdd-hba-fixed-regulator;
	vcc-supply = <&pm8998_l21>;
	vccq2-supply = <&pm8998_s4>;
	vcc-max-microamp = <300000>;
	vccq2-max-microamp = <300000>;

	qcom,vddp-ref-clk-supply = <&pm8998_l2>;
	qcom,vddp-ref-clk-max-microamp = <100>;

	extcon = <&extcon_storage_cd>;

	status = "ok";
};

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

	vdd-io-supply = <&pm8998_l13>;
	qcom,vdd-io-voltage-level = <1808000 2960000>;
	qcom,vdd-io-current-level = <200 22000>;

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

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

	extcon = <&extcon_storage_cd>;

	status = "ok";
};

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

&pmi8998_wled {
	status = "okay";
	qcom,led-strings-list = [01 02];
};

&mdss_mdp {
	connectors = <&sde_rscc &sde_wb>;
};

&dsi_sharp_4k_dsc_video {
	qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
	qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
	qcom,mdss-dsi-bl-min-level = <1>;
	qcom,mdss-dsi-bl-max-level = <4095>;
	qcom,mdss-dsi-mode-sel-gpio-state = "dual_port";
	qcom,panel-mode-gpio = <&tlmm 52 0>;
	qcom,platform-te-gpio = <&tlmm 10 0>;
	qcom,platform-reset-gpio = <&tlmm 6 0>;
	qcom,mdss-dsi-panel-orientation = "180";
};

&dsi_sharp_4k_dsc_video_display {
	qcom,dsi-display-active;
};

&wil6210 {
	status = "ok";
};

&ext_5v_boost {
	status = "ok";
};
