/* Copyright (c) 2015, LGE Inc. All rights reserved.
 * Copyright (c) 2014, 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 {
	led_flash0: qcom,camera-flash {
		cell-index = <0>;
		compatible = "qcom,camera-flash";
		qcom,flash-type = <1>;
		qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
		qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
		qcom,switch-source = <&pmi8994_switch>;
	};

	tof0: stmvl6180@0 {
		cell-index = <0x0>;
		compatible = "st,stmvl6180";
		qcom,cci-master = <0>;
		cam_tof-supply = <&pm8994_l17>;
		cam_vio-supply = <&pm8994_lvs1>;
		qcom,cam-vreg-name = "cam_vio", "cam_tof";
		qcom,cam-vreg-min-voltage = <0 2700000>;
		qcom,cam-vreg-max-voltage = <0 2700000>;
		qcom,cam-vreg-op-mode = <0 100000>;
		qcom,i2c-freq-mode = <0>;
		qcom,slave-addr = <0x29>;
		stmvl6180,ldaf-en-gpio = <&msm_gpio 74 0>;
		stmvl6180,ldaf-int-gpio = <&msm_gpio 95 0>;
		status = "ok";
	};
};

&cci {
	actuator0: qcom,actuator@0 {
		cell-index = <0>;
		reg = <0x0>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
		cam_vaf-supply = <&pm8994_l23>;
		qcom,cam-vreg-name = "cam_vaf";
		qcom,cam-vreg-min-voltage = <2800000>;
		qcom,cam-vreg-max-voltage = <2800000>;
		qcom,cam-vreg-op-mode = <100000>;
	};

	eeprom5: qcom,eeprom@5 {
		cell-index = <5>;
		reg = <0x5>;
		qcom,eeprom-name = "m24c64s";
		compatible = "qcom,eeprom";
		qcom,slave-addr = <0xa2>;
		qcom,cci-master = <0>;
		qcom,num-blocks = <1>;

		qcom,page0 = <0 0 0 0 0 0>;
		qcom,poll0 = <0 0 0 0 0 0>;
		qcom,saddr0 = <0xa2>;
		qcom,mem0 = <2012 0x0000 2 0 1 0>;

		cam_vio-supply = <&pm8994_lvs1>;
		qcom,cam-vreg-name = "cam_vio";
		qcom,cam-vreg-min-voltage = <0>;
		qcom,cam-vreg-max-voltage = <0>;
		qcom,cam-vreg-op-mode = <0>;
		qcom,cam-power-seq-type = "sensor_vreg";
		qcom,cam-power-seq-val = "cam_vio";
		qcom,cam-power-seq-cfg-val = <1>;
		qcom,cam-power-seq-delay = <1>;

		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
		pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
		gpios = <&msm_gpio 13 0>,
			<&msm_gpio 92 0>,
			<&msm_gpio 91 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
					  "CAM_RESET0",
					  "CAM_STANDBY0";
		status = "ok";
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x0>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,sensor-name = "imx377";
		qcom,mount-angle = <270>;
		qcom,eeprom-src = <&eeprom5>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		cam_vdig-supply = <&pm8994_l3>;
		cam_vio-supply = <&pm8994_lvs1>;
		cam_vana-supply = <&pm8994_l17>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-min-voltage = <1200000 0 2700000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2700000>;
		qcom,cam-vreg-op-mode = <105000 0 80000>;
		qcom,gpio-no-mux = <0>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
		pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
		gpios = <&msm_gpio 13 0>,
			<&msm_gpio 92 0>,
			<&msm_gpio 91 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
					  "CAM_RESET0",
					  "CAM_STANDBY0";
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
		clocks = <&clock_mmss clk_mclk0_clk_src>,
				<&clock_mmss clk_camss_mclk0_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};

	ov5693_eeprom: qcom,eeprom@a0 {
		cell-index = <1>;
		reg = <0xa0 0x0>;
		compatible = "qcom,eeprom";
		qcom,slave-addr = <0xa0>;
		qcom,cci-master = <1>;
		qcom,eeprom-name = "brcb032gwz";
		qcom,num-blocks = <1>;

		qcom,page0 = <0 0 0 0 0 0>;
		qcom,poll0 = <0 0 0 0 0 0>;
		qcom,mem0 = <0x800 0x0000 2 0 1 0>;

		cam_vio-supply = <&pm8994_l10>;
		qcom,cam-vreg-name = "cam_vio";
		qcom,cam-vreg-min-voltage = <0>;
		qcom,cam-vreg-max-voltage = <0>;
		qcom,cam-vreg-op-mode = <0>;
		qcom,cam-power-seq-type = "sensor_vreg";
		qcom,cam-power-seq-val = "cam_vio";
		qcom,cam-power-seq-cfg-val = <1>;
		qcom,cam-power-seq-delay = <1>;

		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>;
		pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>;
		gpios = <&msm_gpio 15 0>,
			<&msm_gpio 104 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-req-tbl-num = <0 1>;
		qcom,gpio-req-tbl-flags = <0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
					  "CAM_RESET2";
		status = "ok";
	};

	lge,camera1@6c {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x6c>;
		qcom,slave-id = <0x6c 0x300a 0x5690>;
		qcom,csiphy-sd-index = <2>;
		qcom,csid-sd-index = <2>;
		qcom,eeprom-src = <&ov5693_eeprom>;
		qcom,mount-angle = <90>;
		qcom,sensor-name = "ov5693";
		cam_vdig-supply = <&pm8994_l14>;
		cam_vio-supply = <&pm8994_l10>;
		cam_vana-supply = <&pm8994_l29>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <0 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 1800000 2800000>;
		qcom,cam-vreg-max-voltage = <1200000 1800000 2800000>;
		qcom,cam-vreg-op-mode = <1200000 1800000 2800000>;
		qcom,gpio-no-mux = <0>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>;
		pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>;
		gpios = <&msm_gpio 15 0>,	/* VT_CAM_MCLK */
			<&msm_gpio 104 0>;		/* VT_CAM_RESET_N */
		qcom,gpio-reset = <1>;
		qcom,gpio-req-tbl-num = <0 1>;
		qcom,gpio-req-tbl-flags = <0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
					  "CAM_RESET2";
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x7>;
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <1>;
		qcom,cci-master = <1>;
		status = "ok";
		clocks = <&clock_mmss clk_mclk2_clk_src>,
			<&clock_mmss clk_camss_mclk2_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};
};
