/*
 * 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>;
	};

	led_flash0: qcom,camera-led-flash {
		cell-index = <0>;
		compatible = "qcom,camera-led-flash";
		qcom,flash-type = <1>;
		qcom,flash-source = <&pm8941_flash0 &pm8941_flash1>;
		qcom,torch-source = <&pm8941_torch>;
	};

	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";
};
