 /* 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,dis-gpio = <&msmgpio 93 0x00>;
			qcom,clk-en-gpio = <&msmgpio 78 0x00>;
			qcom,clk-src = "GPCLK2";
			interrupt-parent = <&msmgpio>;
			interrupts = <77 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>;
	};
};
