/* 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.
 */

/dts-v1/;


#include "sdxpoorwills.dtsi"
#include "sdxpoorwills-pinctrl.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDXPOORWILLS MTP";
	compatible = "qcom,sdxpoorwills-mtp",
		"qcom,sdxpoorwills", "qcom,mtp";
	qcom,board-id = <8 0x0>, <8 0x100>, <8 0x2>, <8 0x102>;
};

&serial_uart {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_console_active>;
	status = "ok";
};

&qnand_1 {
	status = "ok";
};

&sdhc_1 {
	vdd-supply = <&vreg_sd_mmc>;

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

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

	qcom,clk-rates = <400000 20000000 25000000 50000000 100000000
							200000000>;
	qcom,devfreq,freq-table = <50000000 200000000>;

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

	status = "ok";
};

&pmxpoorwills_vadc {
	chan@83 {
		label = "vph_pwr";
		reg = <0x83>;
		qcom,decimation = <2>;
		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@4c {
		label = "xo_therm";
		reg = <0x4c>;
		qcom,decimation = <2>;
		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,vadc-thermal-node;
	};

	chan@4d {
		label = "pa_therm1";
		reg = <0x4d>;
		qcom,decimation = <2>;
		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,vadc-thermal-node;
	};

	chan@4e {
		label = "pa_therm2";
		reg = <0x4e>;
		qcom,decimation = <2>;
		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,vadc-thermal-node;
	};

	chan@4f {
		label = "mdm_case_therm";
		reg = <0x4f>;
		qcom,decimation = <2>;
		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,vadc-thermal-node;
	};

	chan@52 {
		label = "ambient_therm";
		reg = <0x52>;
		qcom,decimation = <2>;
		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,vadc-thermal-node;
	};
};

&i2c_3 {
	status = "okay";
	#include "smb138x.dtsi"
};

&smb138x {
	pinctrl-names = "default";
	pinctrl-0 = <&smb_int_default>;
	interrupt-parent = <&tlmm>;
	interrupts = <42 IRQ_TYPE_LEVEL_LOW>;

	smb1381_charger: qcom,smb1381-charger@1000 {
		compatible = "qcom,smb138x-charger";
		qcom,use-extcon;
	};
};

&smb138x_vbus {
	status = "okay";
};

&usb {
	status = "okay";
	extcon = <&smb1381_charger>;
};
