/* 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";
	vdd-supply = <&gdsc_jpeg>;
	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";
	vdd-supply = <&gdsc_mdss>;
	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";
	vdd-supply = <&gdsc_venus>;
	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";
	vdd-supply = <&gdsc_oxili_cx>;
	qcom,alt-vdd-supply = <&gdsc_oxili_gx>;
	qcom,iommu-enable-halt;
	qcom,needs-alt-core-clk;

	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";
	vdd-supply = <&gdsc_vfe>;
	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>;
};
