/* 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/ "msm-iommu-v1.dtsi"

&venus_iommu {
	status = "ok";
	qcom,iommu-enable-halt;

	qcom,iommu-bfb-regs =  <0x204c
				0x2050
				0x2514
				0x2540
				0x256c
				0x20ac
				0x215c
				0x220c
				0x2314
				0x2394
				0x2414
				0x2008
				0x200c
				0x2010
				0x2014
				0x2018
				0x201c
				0x2020
				0x2024
				0x2028
				0x202c
				0x2030
				0x2034
				0x2038>;

	qcom,iommu-bfb-data =  <0xFFFFFFFF
				0xFFFFFFFF
				0x00000004
				0x00000008
				0x00000000
				0x00013205
				0x00004000
				0x00014020
				0x0
				0x94
				0x114
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;

	venus_ns: qcom,iommu-ctx@fdc8c000 {
		qcom,iommu-ctx-sids = <0 1 2 3 4 5 7>;
	};

	venus_sec_bitstream: qcom,iommu-ctx@fdc8d000 {
		qcom,iommu-ctx-sids = <0x80 0x81 0x82 0x83 0x84>;
		label = "venus_sec_bitstream";
	};

	venus_sec_pixel: qcom,iommu-ctx@fdc8f000 {
		reg = <0xfdc8f000 0x1000>;
		interrupts = <0 42 0>;
		qcom,iommu-ctx-sids = <0x85>;
		label = "venus_sec_pixel";
		qcom,secure-context;
	};

	venus_sec_non_pixel: qcom,iommu-ctx@fdc90000 {
		reg = <0xfdc90000 0x1000>;
		interrupts = <0 42 0>;
		qcom,iommu-ctx-sids = <0x87 0xA0>;
		label = "venus_sec_non_pixel";
		qcom,secure-context;
	};
};

&jpeg_iommu {
	status = "ok";
	qcom,iommu-enable-halt;

	qcom,iommu-bfb-regs =  <0x204c
				0x2050
				0x2514
				0x2540
				0x256c
				0x2314
				0x2394
				0x2414
				0x20ac
				0x215c
				0x220c
				0x2008
				0x200c
				0x2010
				0x2014>;

	qcom,iommu-bfb-data =  <0x3FFF
				0x00000000
				0x4
				0x4
				0x0
				0x0
				0x10
				0x50
				0x0
				0x00002804
				0x00009614
				0x0
				0x0
				0x0
				0x0>;
};

&mdp_iommu {
	status = "ok";
	qcom,iommu-enable-halt;

	qcom,iommu-bfb-regs =  <0x204c
				0x2050
				0x2514
				0x2540
				0x256c
				0x20ac
				0x215c
				0x220c
				0x2314
				0x2394
				0x2414
				0x2008
				0x200c
				0x2010
				0x2014
				0x2018
				0x201c
				0x2020>;

	qcom,iommu-bfb-data =  <0xFFFFF
				0x00000000
				0x00000004
				0x00000010
				0x00000000
				0x00006800
				0x00006221
				0x00016231
				0x0
				0x34
				0x74
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;
};

&kgsl_iommu {
	status = "ok";
	qcom,iommu-enable-halt;

	qcom,iommu-bfb-regs =  <0x204c
				0x2050
				0x2514
				0x2540
				0x256c
				0x20ac
				0x215c
				0x220c
				0x2314
				0x2394
				0x2414
				0x2008>;

	qcom,iommu-bfb-data =  <0x00000003
				0x0
				0x00000004
				0x00000010
				0x00000000
				0x00000000
				0x00000000
				0x00000020
				0x0
				0x1
				0x81
				0x0>;
};

&vfe_iommu {
	status = "ok";
	qcom,iommu-enable-halt;

	qcom,iommu-bfb-regs =  <0x204c
				0x2050
				0x2514
				0x2540
				0x256c
				0x2314
				0x2394
				0x2414
				0x20ac
				0x215c
				0x220c
				0x2008
				0x200c
				0x2010
				0x2014
				0x2018
				0x201c
				0x2020>;

	qcom,iommu-bfb-data =  <0xffffffff
				0x00000000
				0x4
				0x8
				0x0
				0x0
				0x20
				0x78
				0x0
				0x00003c08
				0x0000b41e
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;
};
