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

/ {
	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>;
		reg-names = "csiphy";
		interrupts = <0 78 0>;
		interrupt-names = "csiphy";
	};

	qcom,csiphy@fda0b000 {
		cell-index = <1>;
		compatible = "qcom,csiphy";
		reg = <0xfda0b000 0x200>;
		reg-names = "csiphy";
		interrupts = <0 79 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 = <1200000>;
		qcom,mipi-csi-vdd-supply = <&pm8226_l4>;
	};

	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 = <1200000>;
		qcom,mipi-csi-vdd-supply = <&pm8226_l4>;
	};

	qcom,ispif@fda0a000 {
		cell-index = <0>;
		compatible = "qcom,ispif";
		reg = <0xfda0a000 0x500>;
		reg-names = "ispif";
		interrupts = <0 55 0>;
		interrupt-names = "ispif";
	};

	qcom,vfe@fda10000 {
		cell-index = <0>;
		compatible = "qcom,vfe40";
		reg = <0xfda10000 0x1000>,
		      <0xfda40000 0x200>;
		reg-names = "vfe", "vfe_vbif";
		interrupts = <0 57 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,irqrouter@fda00000 {
		cell-index = <0>;
		compatible = "qcom,irqrouter";
		reg = <0xfda00000 0x100>;
		reg-names = "irqrouter";
	};

	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 29 0>,
			<&msmgpio 30 0>;
		qcom,gpio-tbl-num = <0 1>;
		qcom,gpio-tbl-flags = <1 1>;
		qcom,gpio-tbl-label = "CCI_I2C_DATA0",
				      "CCI_I2C_CLK0";
		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>;
	};
};
