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

&cci {

	actuator0: qcom,actuator@18 {
		cell-index = <0>;
		reg = <0x18>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
	};

	actuator1: qcom,actuator@36 {
		cell-index = <1>;
		reg = <0x36>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
	};

    qcom,camera@20 {
		compatible = "qcom,imx135";
		reg = <0x20>;
		qcom,slave-id = <0x20 0x0016 0x0135>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <90>;
		qcom,sensor-name = "imx135";
		qcom,vdd-cx-supply = <&pma8084_s2_corner>;
		qcom,vdd-cx-name = "qcom,vdd-cx";
		cam_vdig-supply = <&pma8084_l27>;
		cam_vana-supply = <&pma8084_l17>;
		cam_vio-supply = <&pma8084_lvs4>;
		cam_vaf-supply = <&pma8084_l23>;
		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 = <1050000 0 2850000 2850000>;
		qcom,cam-vreg-max-voltage = <1050000 0 2850000 2850000>;
		qcom,cam-vreg-op-mode = <135000 0 44000 124000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 15 0>,
			<&msmgpio 30 0>,
			<&msmgpio 29 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,gpio-set-tbl-num = <1 1>;
		qcom,gpio-set-tbl-flags = <0 2>;
		qcom,gpio-set-tbl-delay = <1000 30000>;
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x1F>;
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
	        qcom,sensor-type = <0>;
		qcom,cci-master = <0>;
		status = "ok";
	};

   qcom,camera@6d {
               compatible = "qcom,imx132";
               reg = <0x6d>;
               qcom,slave-id = <0x6c 0x0 0x0132>;
               qcom,csiphy-sd-index = <1>;
               qcom,csid-sd-index = <1>;
               qcom,mount-angle = <270>;
               qcom,sensor-name = "imx132";
               qcom,vdd-cx-supply = <&pma8084_s2_corner>;
               qcom,vdd-cx-name = "qcom,vdd-cx";
               cam_vdig-supply = <&pma8084_l3>;
               cam_vana-supply = <&pma8084_l17>;
               cam_vio-supply = <&pma8084_lvs4>;
               qcom,cam-vreg-name =  "cam_vana", "cam_vdig", "cam_vio";
               qcom,cam-vreg-type = <0 0 1>;
               qcom,cam-vreg-min-voltage = <2850000 1200000 0>;
               qcom,cam-vreg-max-voltage = <2850000 1200000 0>;
               qcom,cam-vreg-op-mode = <44000 98000 0>;
               qcom,gpio-no-mux = <0>;
               gpios = <&msmgpio 16 0>,
                       <&msmgpio 18 0>;
               qcom,gpio-reset = <1>;
               qcom,gpio-req-tbl-num = <0 1>;
               qcom,gpio-req-tbl-flags = <1 0>;
               qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
                                         "CAM_XSHUTDOWN";
               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 = <0x7>;
               qcom,sensor-position = <1>;
               qcom,sensor-mode = <1>;
               qcom,cci-master = <0>;
      };

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x00>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <90>;
		qcom,vdd-cx-supply = <&pma8084_s2_corner>;
		qcom,vdd-cx-name = "qcom,vdd-cx";
		cam_vdig-supply = <&pma8084_l27>;
		cam_vana-supply = <&pma8084_l17>;
		cam_vio-supply = <&pma8084_lvs4>;
		cam_vaf-supply = <&pma8084_l23>;
		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 = <1050000 0 2850000 2850000>;
		qcom,cam-vreg-max-voltage = <1050000 0 2850000 2850000>;
		qcom,cam-vreg-op-mode = <135000 0 44000 124000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 15 0>,
			<&msmgpio 30 0>,
			<&msmgpio 29 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,cci-master = <0>;
		status = "ok";
	};

	qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x01>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <270>;
		qcom,vdd-cx-supply = <&pma8084_s2_corner>;
		qcom,vdd-cx-name = "qcom,vdd-cx";
		cam_vdig-supply = <&pma8084_l3>;
		cam_vana-supply = <&pma8084_l17>;
		cam_vio-supply = <&pma8084_lvs4>;
		qcom,cam-vreg-name =  "cam_vana", "cam_vdig", "cam_vio";
		qcom,cam-vreg-type = <0 0 1>;
		qcom,cam-vreg-min-voltage = <2850000 1200000 0>;
		qcom,cam-vreg-max-voltage = <2850000 1200000 0>;
		qcom,cam-vreg-op-mode = <44000 98000 0>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 16 0>,
		        <&msmgpio 18 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-req-tbl-num = <0 1>;
		qcom,gpio-req-tbl-flags = <1 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
		                          "CAM_XSHUTDOWN";
		qcom,cci-master = <0>;
		status = "ok";
	};
};

