/*
 * Copyright (c) 2014-2017, 2020, 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 {
};

&i2c_3 {

	actuator0: qcom,actuator@0 {
		cell-index = <0>;
		reg = <0x3>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
		cam_vaf-supply = <&pm8909_l8>;
		qcom,cam-vreg-name = "cam_vaf";
		qcom,cam-vreg-type = <0>;
		qcom,cam-vreg-min-voltage = <2850000>;
		qcom,cam-vreg-max-voltage = <2900000>;
		qcom,cam-vreg-op-mode = <80000>;
	};

	eeprom0: qcom,eeprom@6c{
		cell-index = <0>;
		reg = <0x6c>;
		qcom,eeprom-name = "sunny_ov8858_q8v19w";
		compatible = "qcom,eeprom";
		qcom,slave-addr = <0x6c>;
		qcom,cci-master = <0>;
		qcom,num-blocks = <4>;

		qcom,page0 = <1 0x0100 2 0x01 1 1>;
		qcom,poll0 = <0 0x0 2 0 1 1>;
		qcom,mem0 = <0 0x0 2 0 1 0>;
		qcom,page1 = <1 0x3d84 2 0xc0 1 1>;
		qcom,poll1 = <0 0x0 2 0 1 1>;
		qcom,mem1 = <0 0x3d00 2 0 1 0>;
		qcom,page2 = <1 0x3d88 2 0x7010 2 1>;
		qcom,poll2 = <0 0x0 2 0 1 1>;
		qcom,mem2 = <0 0x3d00 2 0 1 0>;
		qcom,page3 = <1 0x3d8A 2 0x7184 2 1>;
		qcom,pageen3 = <1 0x3d81 2 0x01 1 10>;
		qcom,poll3 = <0 0x0 2 0 1 1>;
		qcom,mem3 = <373 0x7010 2 0 1 1>;

		cam_vdig-supply = <&pm8909_l2>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		cam_vaf-supply = <&pm8909_l8>;
		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 2800000 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2900000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		qcom,enable_pinctrl;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_default
					&cam_sensor_rear_default>;
		pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
		gpios = <&msm_gpio 26 0>,
			<&msm_gpio 35 0>,
			<&msm_gpio 34 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,cam-power-seq-type = "sensor_vreg",
			"sensor_gpio", "sensor_gpio",
			"sensor_clk";
		qcom,cam-power-seq-val = "cam_vaf",
			"sensor_gpio_reset",
			"sensor_gpio_standby",
			"sensor_cam_mclk" ;
		qcom,cam-power-seq-cfg-val = <1 1 1 23880000>;
		qcom,cam-power-seq-delay = <1 10 10 5>;
		clocks = <&clock_gcc clk_mclk0_clk_src>,
			<&clock_gcc clk_gcc_camss_mclk0_clk>;
		clock-names = "cam_src_clk", "cam_clk";
		qcom,clock-rates = <19200000 0>;
	};

	led_flash0: qcom,led-flash@60 {
		cell-index = <0>;
		reg = <0x60>;
		qcom,slave-id = <0x60 0x00 0x0011>;
		compatible = "qcom,led-flash";
		label = "adp1660";
		qcom,flash-type = <1>;
		qcom,gpio-no-mux = <0>;
		qcom,enable_pinctrl;
		pinctrl-names = "cam_flash_default", "cam_flash_suspend";
		pinctrl-0 = <&cam_sensor_flash_default>;
		pinctrl-1 = <&cam_sensor_flash_sleep>;
		gpios = <&msm_gpio 31 0>,
			<&msm_gpio 32 0>,
			<&msm_gpio 36 0>;
		qcom,gpio-flash-en = <0>;
		qcom,gpio-flash-now = <1>;
		qcom,gpio-flash-rst = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <0 0 0>;
		qcom,gpio-req-tbl-label = "FLASH_EN",
			"FLASH_NOW", "FLASH_RST";
		qcom,cci-master = <0>;
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x2>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <90>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		qcom,eeprom-src = <&eeprom0>;
		cam_vdig-supply = <&pm8909_l2>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		cam_vaf-supply = <&pm8909_l8>;
		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 2800000 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2900000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_default
				&cam_sensor_rear_default>;
		pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
		gpios = <&msm_gpio 26 0>,
			<&msm_gpio 35 0>,
			<&msm_gpio 34 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";
		clocks = <&clock_gcc clk_mclk0_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk0_clk>;
		clock-names = "cam_src_clk", "cam_clk";
		qcom,clock-rates = <24000000 0>;
	};

	qcom_camera1: qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x1>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <90>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		qcom,cam-vreg-name = "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <1 0>;
		qcom,cam-vreg-min-voltage = <0 2850000>;
		qcom,cam-vreg-max-voltage = <0 2850000>;
		qcom,cam-vreg-op-mode = <0 80000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk1_default
				&cam_sensor_front_default>;
		pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
		gpios = <&msm_gpio 27 0>,
			<&msm_gpio 28 0>,
			<&msm_gpio 33 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,cci-master = <0>;
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <0>;
		status = "ok";
		clocks = <&clock_gcc clk_mclk1_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk1_clk>;
		clock-names = "cam_src_clk", "cam_clk";
		qcom,clock-rates = <24000000 0>;
	};
};
