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

/include/ "msm8610-qrd.dtsi"

&soc {
    sound {
        qcom,model = "msm8x10-skuaa-snd-card";

        qcom,audio-routing =
            "RX_BIAS", "MCLK",
            "INT_LDO_H", "MCLK",
            "Lineout amp", "LINEOUT",
            "MIC BIAS Internal1", "Handset Mic",
            "MIC BIAS Internal2", "Headset Mic",
            "AMIC1", "MIC BIAS Internal1",
            "AMIC2", "MIC BIAS Internal2";

        qcom,ext-spk-amp-gpio = <&msmgpio 92 0x0>;
    };

	usb@f9a55000 {
		qcom,hsusb-otg-phy-init-seq =
		<0x44 0x80 0x6a 0x81 0x34 0x82 0x13 0x83 0xffffffff>;
	};

	i2c@f9924000 { /* BLSP-1 QUP-2 */
		nfc-nci@e {
			compatible = "qcom,nfc-nci";
			reg = <0x0e>;
			qcom,irq-gpio = <&msmgpio 77 0x00>;
			qcom,clk-req-gpio = <&msmgpio 75 0x00>;
			qcom,dis-gpio = <&msmgpio 93 0x00>;
			qcom,clk-src-gpio = <&msmgpio 78 0x00>;
			qcom,clk-src = "GPCLK2";
			interrupt-parent = <&msmgpio>;
			interrupts = <77 75 0>;
			qcom,clk-gpio = <&msmgpio 75 0x00>;
		};
	};
};

/ {
	qrd_batterydata: qcom,battery-data {
		qcom,rpull-up-kohm = <100>;
		qcom,vref-batt-therm = <1800000>;

		/include/ "batterydata-qrd-4v2-1300mah.dtsi"
	};

};

&pm8110_bms {
	status = "ok";
	qcom,battery-data = <&qrd_batterydata>;
};

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

&pm8110_vadc {
	chan@30 {
		label = "batt_therm";
		qcom,scale-function = <7>;
	};
};

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

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_hx8379a_wvga_vid>;
};

&dsi_hx8379a_wvga_vid {
	qcom,cont-splash-enabled;
};

&pm8110_gpios {
	gpio@c000 { /* GPIO 1 */
		qcom,mode = <0>;		/* QPNP_PIN_MODE_DIG_IN */
		qcom,pull = <5>;		/* QPNP_PIN_PULL_NO */
		qcom,vin-sel = <2>;		/* QPNP_PIN_VIN2 */
		qcom,src-sel = <2>;		/* QPNP_PIN_SEL_FUNC_1 */
		qcom,master-en = <1>;
	};
};
