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

&soc {
	qcom,ion {

		qcom,ion-heap@23 { /* OTHER PIL HEAP */
			compatible = "qcom,msm-ion-reserve";
			reg = <23>;
			qcom,heap-align = <0x1000>;
			qcom,memory-fixed = <0x05a00000 0x2100000>;
			qcom,ion-heap-type = "CARVEOUT";
		};

		qcom,ion-heap@26 { /* MODEM HEAP */
			compatible = "qcom,msm-ion-reserve";
			reg = <26>;
			qcom,heap-align = <0x1000>;
			qcom,memory-fixed = <0x08000000 0x5000000>;
			qcom,ion-heap-type = "CARVEOUT";
		};
	};
};
