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

&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 =  <0x0000ffff
				0x00000000
				0x4
				0x4
				0x0
				0x0
				0x10
				0x50
				0x0
				0x10
				0x20
				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 =  <0xffffffff
				0x00000000
				0x00000004
				0x00000010
				0x00000000
				0x00000000
				0x00000013
				0x00000017
				0x0
				0x13
				0x23
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;
};

&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
				0x00000000
				0x00000094
				0x000000b4
				0x0
				0x94
				0x114
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;
};

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

&venus_cp {
	   qcom,iommu-ctx-sids = <0x80 0x81 0x82 0x83 0x84>;
};

&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
				0x00000001
				0x00000011
				0x0
				0x1
				0x41
				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
				0x1b
				0x5b
				0x0
				0x1b
				0x2b
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0
				0x0>;
};
