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

/ {
	tmc_etr: tmc@fc322000 {
		compatible = "arm,coresight-tmc";
		reg = <0xfc322000 0x1000>,
		      <0xfc37c000 0x3000>;
		reg-names = "tmc-etr-base", "tmc-etr-bam-base";

		qcom,memory-reservation-type = "EBI1";
		qcom,memory-reservation-size = <0x20000>; /* 128K EBI1 buffer */

		coresight-id = <0>;
		coresight-name = "coresight-tmc-etr";
		coresight-nr-inports = <1>;
		coresight-ctis = <&cti0 &cti8>;
	};

	tpiu: tpiu@fc318000 {
		compatible = "arm,coresight-tpiu";
		reg = <0xfc318000 0x1000>;
		reg-names = "tpiu-base";

		coresight-id = <1>;
		coresight-name = "coresight-tpiu";
		coresight-nr-inports = <1>;
	};

	replicator: replicator@fc31c000 {
		compatible = "qcom,coresight-replicator";
		reg = <0xfc31c000 0x1000>;
		reg-names = "replicator-base";

		coresight-id = <2>;
		coresight-name = "coresight-replicator";
		coresight-nr-inports = <1>;
		coresight-outports = <0 1>;
		coresight-child-list = <&tmc_etr &tpiu>;
		coresight-child-ports = <0 0>;
	};

	tmc_etf: tmc@fc307000 {
		compatible = "arm,coresight-tmc";
		reg = <0xfc307000 0x1000>;
		reg-names = "tmc-etf-base";

		coresight-id = <3>;
		coresight-name = "coresight-tmc-etf";
		coresight-nr-inports = <1>;
		coresight-outports = <0>;
		coresight-child-list = <&replicator>;
		coresight-child-ports = <0>;
		coresight-default-sink;
		coresight-ctis = <&cti0 &cti8>;
	};

	funnel_merg: funnel@fc31b000 {
		compatible = "arm,coresight-funnel";
		reg = <0xfc31b000 0x1000>;
		reg-names = "funnel-merg-base";

		coresight-id = <4>;
		coresight-name = "coresight-funnel-merg";
		coresight-nr-inports = <2>;
		coresight-outports = <0>;
		coresight-child-list = <&tmc_etf>;
		coresight-child-ports = <0>;
	};

	funnel_in0: funnel@fc319000 {
		compatible = "arm,coresight-funnel";
		reg = <0xfc319000 0x1000>;
		reg-names = "funnel-in0-base";

		coresight-id = <5>;
		coresight-name = "coresight-funnel-in0";
		coresight-nr-inports = <8>;
		coresight-outports = <0>;
		coresight-child-list = <&funnel_merg>;
		coresight-child-ports = <0>;
	};

	funnel_in1: funnel@fc31a000 {
		compatible = "arm,coresight-funnel";
		reg = <0xfc31a000 0x1000>;
		reg-names = "funnel-in1-base";

		coresight-id = <6>;
		coresight-name = "coresight-funnel-in1";
		coresight-nr-inports = <8>;
		coresight-outports = <0>;
		coresight-child-list = <&funnel_merg>;
		coresight-child-ports = <1>;
	};

	stm: stm@fc321000 {
		compatible = "arm,coresight-stm";
		reg = <0xfc321000 0x1000>,
		      <0xfa280000 0x180000>;
		reg-names = "stm-base", "stm-data-base";

		coresight-id = <7>;
		coresight-name = "coresight-stm";
		coresight-nr-inports = <0>;
		coresight-outports = <0>;
		coresight-child-list = <&funnel_in1>;
		coresight-child-ports = <7>;
	};

	etm: etm@fc332000 {
		compatible = "arm,coresight-etm";
		reg = <0xfc332000 0x1000>;
		reg-names = "etm-base";

		coresight-id = <8>;
		coresight-name = "coresight-etm";
		coresight-nr-inports = <0>;
		coresight-outports = <0>;
		coresight-child-list = <&funnel_in0>;
		coresight-child-ports = <4>;

		qcom,round-robin;
	};

	csr: csr@fc302000 {
		compatible = "qcom,coresight-csr";
		reg = <0xfc302000 0x1000>;
		reg-names = "csr-base";

		coresight-id = <9>;
		coresight-name = "coresight-csr";
		coresight-nr-inports = <0>;

		qcom,blk-size = <1>;
	};

	cti0: cti@fc308000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc308000 0x1000>;
		reg-names = "cti0-base";

		coresight-id = <10>;
		coresight-name = "coresight-cti0";
		coresight-nr-inports = <0>;
	};

	cti1: cti@fc309000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc309000 0x1000>;
		reg-names = "cti1-base";

		coresight-id = <11>;
		coresight-name = "coresight-cti1";
		coresight-nr-inports = <0>;
	};

	cti2: cti@fc30a000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30a000 0x1000>;
		reg-names = "cti2-base";

		coresight-id = <12>;
		coresight-name = "coresight-cti2";
		coresight-nr-inports = <0>;
	};

	cti3: cti@fc30b000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30b000 0x1000>;
		reg-names = "cti3-base";

		coresight-id = <13>;
		coresight-name = "coresight-cti3";
		coresight-nr-inports = <0>;
	};

	cti4: cti@fc30c000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30c000 0x1000>;
		reg-names = "cti4-base";

		coresight-id = <14>;
		coresight-name = "coresight-cti4";
		coresight-nr-inports = <0>;
	};

	cti5: cti@fc30d000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30d000 0x1000>;
		reg-names = "cti5-base";

		coresight-id = <15>;
		coresight-name = "coresight-cti5";
		coresight-nr-inports = <0>;
	};

	cti6: cti@fc30e000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30e000 0x1000>;
		reg-names = "cti6-base";

		coresight-id = <16>;
		coresight-name = "coresight-cti6";
		coresight-nr-inports = <0>;
	};

	cti7: cti@fc30f000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc30f000 0x1000>;
		reg-names = "cti7-base";

		coresight-id = <17>;
		coresight-name = "coresight-cti7";
		coresight-nr-inports = <0>;
	};

	cti8: cti@fc310000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc310000 0x1000>;
		reg-names = "cti8-base";

		coresight-id = <18>;
		coresight-name = "coresight-cti8";
		coresight-nr-inports = <0>;
	};

	cti_cpu: cti@fc333000 {
		compatible = "arm,coresight-cti";
		reg = <0xfc333000 0x1000>;
		reg-names = "cti-cpu-base";

		coresight-id = <19>;
		coresight-name = "coresight-cti-cpu";
		coresight-nr-inports = <0>;
	};
};
