/* Copyright (c) 2013, 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/ "msm9625-v2.dtsi"
/include/ "msm9625-display.dtsi"
/include/ "qpic-panel-ili-qvga.dtsi"

/ {
	model = "Qualcomm MSM 9625V2 CDP";
	compatible = "qcom,msm9625-cdp", "qcom,msm9625";
	qcom,msm-id = <134 1 0x20000>, <152 1 0x20000>, <149 1 0x20000>,
		      <150 1 0x20000>, <151 1 0x20000>, <148 1 0x20000>,
		      <173 1 0x20000>, <174 1 0x20000>, <175 1 0x20000>;

	i2c@f9925000 {
		charger@57 {
			compatible = "summit,smb137c";
			reg = <0x57>;
			summit,chg-current-ma = <1500>;
			summit,term-current-ma = <50>;
			summit,pre-chg-current-ma = <100>;
			summit,float-voltage-mv = <4200>;
			summit,thresh-voltage-mv = <3000>;
			summit,recharge-thresh-mv = <75>;
			summit,system-voltage-mv = <4250>;
			summit,charging-timeout = <382>;
			summit,pre-charge-timeout = <48>;
			summit,therm-current-ua = <10>;
			summit,temperature-min = <4>; /*  0 C */
			summit,temperature-max = <3>; /* 45 C */
		};
	};

	wlan0: qca,wlan {
		cell-index = <0>;
		compatible = "qca,ar6004-hsic";
		qca,chip-pwd-l-gpios = <&msmgpio 62 0>;
		qca,pm-enable-gpios = <&pm8019_gpios 3 0x0>;
		qca,vdd-io-supply = <&pm8019_l11>;
	};

	qca,wlan_ar6003 {
		cell-index = <0>;
		compatible = "qca,ar6003-sdio";
		qca,chip-pwd-l-gpios = <&msmgpio 62 0>;
		qca,pm-enable-gpios = <&pm8019_gpios 3 0x0>;
		qca,vdd-io-supply = <&pm8019_l11>;
	};
};

/* PM8019 GPIO and MPP configuration */
&pm8019_gpios {
	gpio@c000 { /* GPIO 1 */
	};

	gpio@c100 { /* GPIO 2 */
	};

	gpio@c200 { /* GPIO 3 */
	};

	gpio@c300 { /* GPIO 4 */
		/* ext_2p95v regulator enable config */
		qcom,mode = <1>; /* Digital output */
		qcom,output-type = <0>; /* CMOS */
		qcom,invert = <0>; /* Output low */
		qcom,out-strength = <1>; /* Low */
		qcom,vin-sel = <2>; /* PM8019 L11 - 1.8V */
		qcom,src-sel = <0>; /* Constant */
		qcom,master-en = <1>; /* Enable GPIO */
	};

	gpio@c400 { /* GPIO 5 */
	};

	gpio@c500 { /* GPIO 6 */
	};
};

&pm8019_mpps {
	mpp@a000 { /* MPP 1 */
	};

	mpp@a100 { /* MPP 2 */
	};

	mpp@a200 { /* MPP 3 */
	};

	mpp@a300 { /* MPP 4 */
	};

	mpp@a400 { /* MPP 5 */
	};

	mpp@a500 { /* MPP 6 */
	};
};
