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