/* 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-bfb-regs =  <0x204c
				0x2514
				0x2540
				0x256c
				0x20ac
				0x215c
				0x220c
				0x22bc
				0x2314
				0x2394
				0x2414
				0x2494
				0x2008
				0x200c
				0x2010
				0x2014
				0x2018
				0x201c>;

	qcom,iommu-bfb-data =  <0x7ffffff
				0x4
				0x8
				0x0
				0x13607
				0x4201
				0x14221
				0x0
				0x0
				0x94
				0x114
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;

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

	qcom,iommu-lpae-bfb-data = <0x7ffffff
				    0x0
				    0x4
				    0x8
				    0x13607
				    0x0
				    0x4201
				    0x14221
				    0x0
				    0x0
				    0x94
				    0x114
				    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 {
		compatible = "qcom,msm-smmu-v1-ctx";
		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 {
		compatible = "qcom,msm-smmu-v1-ctx";
		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-bfb-regs =  <0x204c
				0x2514
				0x2540
				0x256c
				0x2314
				0x2394
				0x2414
				0x2494
				0x20ac
				0x215c
				0x220c
				0x22bc
				0x2008
				0x200c
				0x2010>;

	qcom,iommu-bfb-data =  <0x3fff
				0x4
				0x4
				0x0
				0x0
				0x10
				0x50
				0x0
				0x2000
				0x2804
				0x9614
				0x0
				0x0
				0x0
				0x0>;

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

	qcom,iommu-lpae-bfb-data = <0x3fff
				    0x0
				    0x4
				    0x4
				    0x0
				    0x0
				    0x10
				    0x50
				    0x2000
				    0x964b
				    0x2804
				    0x9614
				    0x0
				    0x0
				    0x0>;

};

&mdp_iommu {
	status = "ok";

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

	qcom,iommu-bfb-data =  <0x7fffff
				0x4
				0x10
				0x0
				0x5000
				0x5a1d
				0x1822d
				0x0
				0x0
				0x28
				0x68
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;

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

	qcom,iommu-lpae-bfb-data = <0x7fffff
				    0x0
				    0x4
				    0x10
				    0x5000
				    0x182c1
				    0x5a1d
				    0x1822d
				    0x0
				    0x0
				    0x28
				    0x68
				    0x0
				    0x0
				    0x0
				    0x0
				    0x0>;

};

&kgsl_iommu {
	status = "ok";

	qcom,iommu-bfb-regs =  <0x204c
				0x2514
				0x2540
				0x256c
				0x20ac
				0x215c
				0x220c
				0x22bc
				0x2314
				0x2394
				0x2414
				0x2494
				0x2008
				0x2600
				0x2604
				0x2608
				0x260c
				0x2610
				0x2614
				0x2618
				0x261c
				0x2620
				0x2624
				0x2628
				0x262c>;

	qcom,iommu-bfb-data =  <0x3
				0x8
				0x10
				0x0
				0x0
				0x0
				0x20
				0x0
				0x0
				0x1
				0x101
				0x0
				0x0
				0x7
				0x4
				0x8
				0x14
				0x0
				0x0
				0xc
				0x6c
				0x0
				0x8
				0x10
				0x0>;

	qcom,iommu-lpae-bfb-regs = <0x204c
				    0x2514
				    0x2540
				    0x256c
				    0x20ac
				    0x215c
				    0x220c
				    0x22bc
				    0x2314
				    0x2394
				    0x2414
				    0x2494
				    0x2008
				    0x2600
				    0x2604
				    0x2608
				    0x260c
				    0x2610
				    0x2614
				    0x2618
				    0x261c
				    0x2620
				    0x2624
				    0x2628
				    0x262c>;

	qcom,iommu-lpae-bfb-data = <0x3
				    0x0
				    0x8
				    0x10
				    0x0
				    0x120
				    0x0
				    0x20
				    0x0
				    0x0
				    0x1
				    0x101
				    0x0
				    0x7
				    0x4
				    0x20
				    0x8
				    0x14
				    0x0
				    0x0
				    0xc
				    0x6c
				    0x0
				    0x8
				    0x10>;

};

&vfe_iommu {
	status = "ok";

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

	qcom,iommu-bfb-data =  <0xffffffff
				0x4
				0x8
				0x0
				0x0
				0x20
				0x78
				0x0
				0x4000
				0x3c08
				0xb41e
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;

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

	qcom,iommu-lpae-bfb-data = <0xffffffff
				    0x0
				    0x4
				    0x8
				    0x0
				    0x0
				    0x20
				    0x78
				    0x4000
				    0xb45a
				    0x3c08
				    0xb41e
				    0x0
				    0x0
				    0x0
				    0x0
				    0x0
				    0x0
				    0x0>;

};

&copss_iommu {
	status = "ok";
};

&vpu_iommu {
	status = "ok";
};

&lpass_qdsp_iommu {
	status = "ok";
};

&lpass_core_iommu {
	status = "ok";
};
