/*
 * Copyright (c) 2013-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-led-flash {
		cell-index = <0>;
		compatible = "qcom,camera-led-flash";
		qcom,flash-type = <1>;
		qcom,flash-source = <&pm8226_flash0>;
		qcom,torch-source = <&pm8226_torch>;
	};
};

&cci {

	actuator0: qcom,actuator@6e {
		cell-index = <3>;
		reg = <0x6c>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x0>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <270>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		cam_vaf-supply = <&pm8226_l15>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
			 "cam_vaf";
		qcom,cam-vreg-type = <0 1 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
			<&msmgpio 37 0>,
			<&msmgpio 35 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_MCLK",
			"CAM_RESET1",
			"CAM_STANDBY";
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
	};

	qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x1>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <270>;
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <0 1 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-op-mode = <200000 0 80000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
			<&msmgpio 28 0>,
			<&msmgpio 36 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_MCLK",
			"CAM_RESET",
			"CAM_STANDBY";
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
	};

	qcom,camera@6f {
		compatible = "qcom,ov8825";
		reg = <0x6f>;
		qcom,slave-id = <0x6c 0x300a 0x8825>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		qcom,mount-angle = <270>;
		qcom,sensor-name = "ov8825";
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		cam_vaf-supply = <&pm8226_l15>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
							 "cam_vaf";
		qcom,cam-vreg-type = <0 1 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
			<&msmgpio 37 0>,
			<&msmgpio 35 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_MCLK",
			"CAM_RESET1",
			"CAM_STANDBY";
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x1f>;
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <1>;
		qcom,cci-master = <0>;
	};

	qcom,camera@6d {
		compatible = "qcom,ov9724";
		reg = <0x6d>;
		qcom,slave-id = <0x20 0x0 0x9724>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <270>;
		qcom,sensor-name = "ov9724";
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <0 1 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-op-mode = <200000 0 80000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
				<&msmgpio 28 0>,
				<&msmgpio 36 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_MCLK",
				"CAM_RESET",
				"CAM_STANDBY";
		qcom,gpio-set-tbl-num = <1 1>;
		qcom,gpio-set-tbl-flags = <0 2>;
		qcom,gpio-set-tbl-delay = <1000 4000>;
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x3>;
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <1>;
		qcom,cci-master = <0>;
		status = "ok";
	};
};
