/* 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/ "skeleton64.dtsi"

/ {
	model = "Qualcomm FSM9900";
	compatible = "qcom,fsm9900";
	interrupt-parent = <&intc>;
	soc: soc { };
};

&soc {
	#address-cells = <1>;
	#size-cells = <1>;
	ranges = <0 0 0 0xffffffff>;

	intc: interrupt-controller@f9000000 {
		compatible = "qcom,msm-qgic2";
		interrupt-controller;
		#interrupt-cells = <3>;
		reg = <0xF9000000 0x1000>,
		      <0xF9002000 0x1000>;
	};

	msmgpio: gpio@fd510000 {
		compatible = "qcom,msm-gpio";
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-controller;
		#interrupt-cells = <2>;
		reg = <0xfd510000 0x4000>;
		ngpio = <142>;
		interrupts = <0 208 0>;
		qcom,direct-connect-irqs = <5>;
	};

	timer {
		compatible = "arm,armv7-timer";
		interrupts = <1 2 0 1 3 0>;
		clock-frequency = <19200000>;
	};

	serial@f9960000 {
		compatible = "qcom,msm-lsuart-v14";
		reg = <0xf9960000 0x1000>;
		interrupts = <0 104 0>;
		status = "disabled";
	};

	cpu-pmu {
		compatible = "qcom,krait-pmu";
		qcom,irq-is-percpu;
		interrupts = <1 7 0xf00>;
	};

	qcom,msm-imem@fe805000 {
		compatible = "qcom,msm-imem";
		reg = <0xfe805000 0x1000>; /* Address and size of IMEM */
	};

	qcom,cache_erp {
		compatible = "qcom,cache_erp";
		interrupts = <1 9 0>, <0 2 0>;
		interrupt-names = "l1_irq", "l2_irq";
	};

	qcom,cache_dump {
		compatible = "qcom,cache_dump";
		qcom,l1-dump-size = <0x100000>;
		qcom,l2-dump-size = <0x500000>;
	};

	qcom,ion {
		compatible = "qcom,msm-ion";
		#address-cells = <1>;
		#size-cells = <0>;

		qcom,ion-heap@25 {
			reg = <25>;
			qcom,ion-heap-type = "SYSTEM";
		};
	};

	qcom,wdt@f9017000 {
		compatible = "qcom,msm-watchdog";
		reg = <0xf9017000 0x1000>;
		interrupts = <0 3 0>, <0 4 0>;
		qcom,bark-time = <11000>;
		qcom,pet-time = <10000>;
		qcom,ipi-ping;
	};

};
