/*
 * Copyright (c) 2015-2016, 2018, 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.
 */

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

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

		qcom,ion-heap@8 { /* CP_MM HEAP */
			reg = <8>;
			memory-region = <&secure_mem>;
			qcom,ion-heap-type = "SECURE_DMA";
		};

		qcom,ion-heap@27 { /* QSEECOM HEAP */
			reg = <27>;
			memory-region = <&qseecom_mem>;
			qcom,ion-heap-type = "DMA";
		};
	};
};
