/* Copyright (c) 2012-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/ "dsi-panel-sim-video.dtsi"
/include/ "msm8974-leds.dtsi"
/include/ "msm8974-camera-sensor-cdp.dtsi"

&soc {
	qcom,mdss_dsi@fd922800 {
		qcom,mdss_dsi_sim_video {
			status = "ok";
		};
	};

	serial@f991f000 {
		status = "ok";
	};

	serial@f995e000 {
		status = "ok";
	};
};

&jpeg_iommu {
		qcom,iommu-ctx@fda6c000 {
			interrupts = <0 69 0>;
		};

		qcom,iommu-ctx@fda6d000 {
			interrupts = <0 70 0>;
		};

		qcom,iommu-ctx@fda6e000 {
			interrupts = <0 71 0>;
		};
};

&mdp_iommu {
		qcom,iommu-ctx@fd930000 {
			interrupts = <0 46 0>;
		};

		qcom,iommu-ctx@fd931000 {
			interrupts = <0 47 0>;
		};
};

&venus_iommu {
		qcom,iommu-ctx@fdc8c000 {
			interrupts = <0 43 0>;
		};

		qcom,iommu-ctx@fdc8d000 {
			interrupts = <0 42 0>;
		};

		qcom,iommu-ctx@fdc8e000 {
			interrupts = <0 41 0>;
		};
};

&kgsl_iommu {
		qcom,iommu-ctx@fdb18000 {
			interrupts = <0 240 0>;
		};

		qcom,iommu-ctx@fdb19000 {
			interrupts = <0 241 0>;
		};
};

&vfe_iommu {
		qcom,iommu-ctx@fda4c000 {
			interrupts = <0 64 0>;
		};

		qcom,iommu-ctx@fda4d000 {
			interrupts = <0 65 0>;
		};

		qcom,iommu-ctx@fda4e000 {
			interrupts = <0 66 0>;
		};
};
