/*
 * Copyright (c) 2012-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,msm-cam@fd8C0000 {
		compatible = "qcom,msm-cam";
		reg = <0xfd8C0000 0x10000>;
		reg-names = "msm-cam";
	};

	qcom,csiphy@fda0ac00 {
		cell-index = <0>;
		compatible = "qcom,csiphy";
		reg = <0xfda0ac00 0x200>,
                      <0xfda00030 0x4>;
		reg-names = "csiphy", "csiphy_clk_mux";
		interrupts = <0 78 0>;
		interrupt-names = "csiphy";
	};

	qcom,csiphy@fda0b000 {
		cell-index = <1>;
		compatible = "qcom,csiphy";
		reg = <0xfda0b000 0x200>,
                      <0xfda00038 0x4>;
		reg-names = "csiphy", "csiphy_clk_mux";
		interrupts = <0 79 0>;
		interrupt-names = "csiphy";
	};

	qcom,csiphy@fda0b400 {
		cell-index = <2>;
		compatible = "qcom,csiphy";
		reg = <0xfda0b400 0x200>,
                      <0xfda00040 0x4>;
		reg-names = "csiphy", "csiphy_clk_mux";
		interrupts = <0 80 0>;
		interrupt-names = "csiphy";
	};

	qcom,csid@fda08000  {
		cell-index = <0>;
		compatible = "qcom,csid";
		reg = <0xfda08000 0x100>;
		reg-names = "csid";
		interrupts = <0 51 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1800000>;
		qcom,mipi-csi-vdd-supply = <&pm8941_l12>;
	};

	qcom,csid@fda08400 {
		cell-index = <1>;
		compatible = "qcom,csid";
		reg = <0xfda08400 0x100>;
		reg-names = "csid";
		interrupts = <0 52 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1800000>;
		qcom,mipi-csi-vdd-supply = <&pm8941_l12>;
	};

	qcom,csid@fda08800 {
		cell-index = <2>;
		compatible = "qcom,csid";
		reg = <0xfda08800 0x100>;
		reg-names = "csid";
		interrupts = <0 53 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1800000>;
		qcom,mipi-csi-vdd-supply = <&pm8941_l12>;
	};

	qcom,csid@fda08C00 {
		cell-index = <3>;
		compatible = "qcom,csid";
		reg = <0xfda08C00 0x100>;
		reg-names = "csid";
		interrupts = <0 54 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1800000>;
		qcom,mipi-csi-vdd-supply = <&pm8941_l12>;
	};

	qcom,ispif@fda0A000 {
		cell-index = <0>;
		compatible = "qcom,ispif-v3.0", "qcom,ispif";
		reg = <0xfda0A000 0x500>,
                      <0xfda00020 0x10>;
		reg-names = "ispif", "csi_clk_mux";
		interrupts = <0 55 0>;
		interrupt-names = "ispif";
		qcom,num-isps = <0x2>;
	};

	qcom,vfe@fda10000 {
		cell-index = <0>;
		compatible = "qcom,vfe40";
		reg = <0xfda10000 0x1000>,
			<0xfda40000 0x200>,
			<0xfd4a8000 0x4>;
		reg-names = "vfe", "vfe_vbif", "tcsr";
		interrupts = <0 57 0>;
		interrupt-names = "vfe";
		vdd-supply = <&gdsc_vfe>;
	};

	qcom,vfe@fda14000 {
		cell-index = <1>;
		compatible = "qcom,vfe40";
		reg = <0xfda14000 0x1000>,
			<0xfda40000 0x200>,
			<0xfd4a8000 0x4>;
		reg-names = "vfe", "vfe_vbif", "tcsr";
		interrupts = <0 58 0>;
		interrupt-names = "vfe";
		vdd-supply = <&gdsc_vfe>;
	};

	qcom,jpeg@fda1c000 {
		cell-index = <0>;
		compatible = "qcom,jpeg";
		reg = <0xfda1c000 0x400>;
		reg-names = "jpeg";
		interrupts = <0 59 0>;
		interrupt-names = "jpeg";
		vdd-supply = <&gdsc_jpeg>;
	};

	qcom,jpeg@fda20000 {
		cell-index = <1>;
		compatible = "qcom,jpeg";
		reg = <0xfda20000 0x400>;
		reg-names = "jpeg";
		interrupts = <0 60 0>;
		interrupt-names = "jpeg";
		vdd-supply = <&gdsc_jpeg>;
	};

	qcom,jpeg@fda24000 {
		cell-index = <2>;
		compatible = "qcom,jpeg";
		reg = <0xfda24000 0x400>;
		reg-names = "jpeg";
		interrupts = <0 61 0>;
		interrupt-names = "jpeg";
		vdd-supply = <&gdsc_jpeg>;
	};

	qcom,irqrouter@fda00000 {
		cell-index = <0>;
		compatible = "qcom,irqrouter";
		reg = <0xfda00000 0x100>;
		reg-names = "irqrouter";
	};

	qcom,cpp@fda04000 {
		cell-index = <0>;
		compatible = "qcom,cpp";
		reg = <0xfda04000 0x100>,
			<0xfda40000 0x200>,
			<0xfda18000 0x018>;
		reg-names = "cpp", "cpp_vbif", "cpp_hw";
		interrupts = <0 49 0>;
		interrupt-names = "cpp";
		vdd-supply = <&gdsc_vfe>;
	};

	cci: qcom,cci@fda0C000 {
		cell-index = <0>;
		compatible = "qcom,cci";
		reg = <0xfda0C000 0x1000>;
		#address-cells = <1>;
		#size-cells = <0>;
		reg-names = "cci";
		interrupts = <0 50 0>;
		interrupt-names = "cci";
		gpios = <&msmgpio 19 0>,
			<&msmgpio 20 0>,
			<&msmgpio 21 0>,
			<&msmgpio 22 0>;
		qcom,gpio-tbl-num = <0 1 2 3>;
		qcom,gpio-tbl-flags = <1 1 1 1>;
		qcom,gpio-tbl-label = "CCI_I2C_DATA0",
				      "CCI_I2C_CLK0",
				      "CCI_I2C_DATA1",
				      "CCI_I2C_CLK1";
		master0: qcom,cci-master0 {
			status = "disabled";
		};
		master1: qcom,cci-master1 {
			status = "disabled";
		};
	};
};

&master0 {
	qcom,hw-thigh = <78>;
	qcom,hw-tlow = <114>;
	qcom,hw-tsu-sto = <28>;
	qcom,hw-tsu-sta = <28>;
	qcom,hw-thd-dat = <10>;
	qcom,hw-thd-sta = <77>;
	qcom,hw-tbuf = <118>;
	qcom,hw-scl-stretch-en = <0>;
	qcom,hw-trdhld = <6>;
	qcom,hw-tsp = <1>;
	status = "ok";
};

&master1 {
	qcom,hw-thigh = <78>;
	qcom,hw-tlow = <114>;
	qcom,hw-tsu-sto = <28>;
	qcom,hw-tsu-sta = <28>;
	qcom,hw-thd-dat = <10>;
	qcom,hw-thd-sta = <77>;
	qcom,hw-tbuf = <118>;
	qcom,hw-scl-stretch-en = <0>;
	qcom,hw-trdhld = <6>;
	qcom,hw-tsp = <1>;
	status = "ok";
};
