/* Copyright (c) 2014, 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 "msm8226-v2.dtsi"
#include "msm8226-w-memory.dtsi"
#include "msm8226-w-qseecom.dtsi"
#include "msm8226-w-sharedmem.dtsi"
#include "msm8226-720p-cdp.dtsi"
#include "msm8226-camera-sensor-cdp.dtsi"
#include "msm8x26w-gpu.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. MSM 8226v2W CDP";
	compatible = "qcom,msm8226-cdp", "qcom,msm8226", "qcom,cdp";
	qcom,board-id = <1 4>;
};

&mdss_fb0 {
	/* cont_splash memory*/
	qcom,memblock-reserve = <0x07e9c000 0x64000>;
};

&soc {
	i2c@f9927000 { /* BLSP1 QUP5 */
		synaptics@20 {
			synaptics,display-coords = <0 0 319 239>;
		};
	};
};

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

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

&pm8x26_rtc {
	qcom,qpnp-rtc-write = <1>;
};

&spmi_bus {
	qcom,pm8226@0 {
		qcom,leds@a500 {
			status = "disabled";
		};
	};
};

&pm8226_mpps {
	mpp@a500 {
		status = "disabled";
	};
};
