#include <dt-bindings/msm-camera.h>

&tlmm {
    cam_ois_af_vdd_main_en_default: cam_ois_af_vdd_main_en_default {
        mux {
            pins = "gpio60";
            function = "gpio";
        };

        config {
            pins = "gpio60";
            bias-pull-down; /* PULL DOWN */
            drive-strength = <2>; /* 2 MA */
        };
    };

    cam_ois_af_vdd_tele_en_default: cam_ois_af_vdd_tele_en_default {
        mux {
            pins = "gpio61";
            function = "gpio";
        };

        config {
            pins = "gpio61";
            bias-pull-down; /* PULL DOWN */
            drive-strength = <2>; /* 2 MA */
        };
    };
};

&soc {
    cam_ois_af_vdd_main: gpio-regulator@0 {
        compatible = "regulator-fixed";
        reg = <0x00 0x00>;
        regulator-name = "cam_ois_af_vdd_main";
        regulator-min-microvolt = <2800000>;
        regulator-max-microvolt = <2800000>;
        regulator-enable-ramp-delay = <233>;
        enable-active-high;
        gpio = <&tlmm 60 0>;
        pinctrl-names = "default";
        pinctrl-0 = <&cam_ois_af_vdd_main_en_default>;
        vin-supply = <&BOB>;
    };

    cam_ois_af_vdd_tele: gpio-regulator@1 {
        compatible = "regulator-fixed";
        reg = <0x01 0x00>;
        regulator-name = "cam_ois_af_vdd_tele";
        regulator-min-microvolt = <2800000>;
        regulator-max-microvolt = <2800000>;
        regulator-enable-ramp-delay = <233>;
        enable-active-high;
        gpio = <&tlmm 61 0>;
        pinctrl-names = "default";
        pinctrl-0 = <&cam_ois_af_vdd_tele_en_default>;
        vin-supply = <&BOB>;
    };

    led_flash_rear_main: qcom,camera-flash@0 {
        cell-index = <0>;
        compatible = "qcom,camera-flash";
        flash-source = <&pmxr2230_flash0>;
        torch-source = <&pmxr2230_torch0>;
        switch-source = <&pmxr2230_switch0>;
        status = "ok";
    };

    led_flash_rear_uw: qcom,camera-flash@2 {
        cell-index = <2>;
        compatible = "qcom,camera-flash";
        flash-source = <&pmxr2230_flash0>;
        torch-source = <&pmxr2230_torch0>;
        switch-source = <&pmxr2230_switch0>;
        status = "ok";
    };

    led_flash_rear_tele: qcom,camera-flash@3 {
        cell-index = <3>;
        compatible = "qcom,camera-flash";
        flash-source = <&pmxr2230_flash0>;
        torch-source = <&pmxr2230_torch0>;
        switch-source = <&pmxr2230_switch0>;
        status = "ok";
    };

    qcom,cam-res-mgr {
        compatible = "qcom,cam-res-mgr";
        status = "ok";
    };
};

&cam_cci0 {
    actuator_rear_main: qcom,actuator@0 {
        cell-index = <0>;
        compatible = "qcom,actuator";
        cci-master = <CCI_MASTER_0>;
        cam_vaf-supply = <&cam_64c_ldo4>;
        regulator-names = "cam_vaf";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000>;
        rgltr-max-voltage = <2800000>;
        rgltr-load-current = <103000>;
        status = "ok";
    };

    eeprom_rear_main: qcom,eeprom@0 {
        cell-index = <0>;
        reg = <0x0>;
        compatible = "qcom,eeprom";
        cci-master = <CCI_MASTER_0>;
        cam_vio-supply = <&cam_64c_ldo7>;
        regulator-names = "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000>;
        rgltr-max-voltage = <1800000>;
        rgltr-load-current = <0>;
    };

    ois_rear_main: qcom,ois@0 {
        cell-index = <0>;
        compatible = "qcom,ois";
        cci-master = <CCI_MASTER_0>;
        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vaf-supply = <&cam_64c_ldo4>;
        cam_v_custom1-supply = <&cam_ois_af_vdd_main>;
        regulator-names = "cam_vio", "cam_vaf", "cam_v_custom1";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000 2800000 2800000>;
        rgltr-max-voltage = <1800000 2800000 2800000>;
        rgltr-load-current = <14000 119000 119000>;
        status = "ok";
    };

    actuator_rear_uw: qcom,actuator@2 {
        cell-index = <2>;
        reg = <0x2>;
        compatible = "qcom,actuator";
        cci-master = <CCI_MASTER_1>;
        cam_vaf-supply = <&cam_64c_ldo3>;
        regulator-names = "cam_vaf";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000>;
        rgltr-max-voltage = <2800000>;
        rgltr-load-current = <100000>;
        status = "ok";
    };

    eeprom_rear_uw: qcom,eeprom@2 {
        cell-index = <2>;
        reg = <0x2>;
        compatible = "qcom,eeprom";
        cci-master = <CCI_MASTER_1>;
        cam_vio-supply = <&cam_64c_ldo7>;
        regulator-names = "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000>;
        rgltr-max-voltage = <1800000>;
        rgltr-load-current = <3000>;
        status = "ok";
    };

    rear_main: qcom,cam-sensor@0 {
        cell-index = <0>;
        compatible = "qcom,cam-sensor";
        csiphy-sd-index = <2>;
        eeprom-src = <&eeprom_rear_main>;
        actuator-src = <&actuator_rear_main>;
        ois-src = <&ois_rear_main>;
        sensor-position-roll = <90>;
        sensor-position-pitch = <0>;
        sensor-position-yaw = <180>;
        led-flash-src = <&led_flash_rear_main>;
        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vdig-supply = <&cam_68c_ldo1>;
        cam_clk-supply = <&cam_cc_camss_top_gdsc>;
        cam_vana-supply = <&cam_68c_ldo7>;
        regulator-names = "cam_vana", "cam_vdig", "cam_clk", "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000 1100000 0 1800000>;
        rgltr-max-voltage = <2800000 1104000 0 1800000>;
        rgltr-load-current = <132000 405000 0 3000>;

        gpio-no-mux = <0>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk1_active &cam_sensor_active_rst1>;
        pinctrl-1 = <&cam_sensor_mclk1_suspend &cam_sensor_suspend_rst1>;
        gpios = <&tlmm 65 0>, <&tlmm 124 0>;
        gpio-reset = <1>;
        gpio-req-tbl-num = <0 1>;
        gpio-req-tbl-flags = <1 0>;
        gpio-req-tbl-label = "CAMIF_MCLK1", "CAM_RESET1";
        cci-master = <CCI_MASTER_0>;
        clocks = <&camcc CAM_CC_MCLK1_CLK>;
        clock-names = "cam_clk";
        clock-cntl-level = "nominal";
        clock-rates = <24000000>;
        status = "ok";
    };

    rear_uw:qcom,cam-sensor@2 {
        cell-index = <2>;
        compatible = "qcom,cam-sensor";
        csiphy-sd-index = <1>;
        sensor-position-roll = <90>;
        sensor-position-pitch = <0>;
        sensor-position-yaw = <180>;
        led-flash-src = <&led_flash_rear_uw>;
        actuator-src = <&actuator_rear_uw>;
        eeprom-src = <&eeprom_rear_uw>;

        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vdig-supply = <&cam_68c_ldo2>;
        cam_clk-supply = <&cam_cc_camss_top_gdsc>;
        cam_vana-supply = <&cam_68c_ldo4>;
        regulator-names = "cam_vana", "cam_vdig", "cam_clk", "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000 1100000 0 1800000>;
        rgltr-max-voltage = <2800000 1104000 0 1800000>;
        rgltr-load-current = <148000 212000 0 3000>;

        gpio-no-mux = <0>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_active_rst0>;
        pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_suspend_rst0>;
        gpios = <&tlmm 64 0>, <&tlmm 123 0>;
        gpio-reset = <1>;
        gpio-req-tbl-num = <0 1>;
        gpio-req-tbl-flags = <1 0>;
        gpio-req-tbl-label = "CAMIF_MCLK0", "CAM_RESET0";
        cci-master = <CCI_MASTER_1>;
        clocks = <&camcc CAM_CC_MCLK0_CLK>;
        clock-names = "cam_clk";
        clock-cntl-level = "nominal";
        clock-rates = <24000000>;
        status = "ok";
    };
};

&cam_cci1 {
    eeprom_front: qcom,eeprom@1 {
        cell-index = <1>;
        compatible = "qcom,eeprom";
        cci-master = <CCI_MASTER_1>;
        cam_vio-supply = <&cam_64c_ldo7>;
        regulator-names = "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000>;
        rgltr-max-voltage = <1800000>;
        rgltr-load-current = <3000>;
        status = "ok";
    };

    actuator_front: qcom,actuator@1 {
        cell-index = <1>;
        compatible = "qcom,actuator";
        cci-master = <CCI_MASTER_1>;
        cam_vaf-supply = <&cam_64c_ldo6>;
        regulator-names = "cam_vaf";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000>;
        rgltr-max-voltage = <2800000>;
        rgltr-load-current = <95000>;
        status = "ok";
    };

    front_main: qcom,cam-sensor@1 {
        cell-index = <1>;
        compatible = "qcom,cam-sensor";
        csiphy-sd-index = <3>;
        eeprom-src = <&eeprom_front>;
        actuator-src = <&actuator_front>;
        sensor-position-roll = <270>;
        sensor-position-pitch = <0>;
        sensor-position-yaw = <0>;

        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vdig-supply = <&cam_64c_ldo1>;
        cam_clk-supply = <&cam_cc_camss_top_gdsc>;
        cam_vana-supply = <&cam_68c_ldo5>;
        regulator-names = "cam_vdig", "cam_clk", "cam_vana", "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1050000 0 2800000 1800000>;
        rgltr-max-voltage = <1050000 0 2800000 1800000>;
        rgltr-load-current = <125000 0 95000 3000>;

        gpio-no-mux = <0>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk3_active &cam_sensor_active_rst3>;
        pinctrl-1 = <&cam_sensor_mclk3_suspend &cam_sensor_suspend_rst3>;
        gpios = <&tlmm 67 0>, <&tlmm 126 0>;
        gpio-reset = <1>;
        gpio-req-tbl-num = <0 1>;
        gpio-req-tbl-flags = <1 0>;
        gpio-req-tbl-label = "CAMIF_MCLK3", "CAM_RESET3";
        cci-master = <CCI_MASTER_1>;
        clocks = <&camcc CAM_CC_MCLK3_CLK>;
        clock-names = "cam_clk";
        clock-cntl-level = "nominal";
        clock-rates = <24000000>;
        status = "ok";
    };

    eeprom_tele: qcom,eeprom@3 {
        cell-index = <3>;
        reg = <0x03>;
        compatible = "qcom,eeprom";
        cci-master = <CCI_MASTER_0>;
        cam_vio-supply = <&cam_64c_ldo7>;
        regulator-names = "cam_vio";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000>;
        rgltr-max-voltage = <1800000>;
        rgltr-load-current = <1000>;
        status = "ok";
    };

    actuator_rear_tele: qcom,actuator@3 {
        cell-index = <3>;
        compatible = "qcom,actuator";
        cci-master = <CCI_MASTER_0>;
        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vaf-supply = <&cam_64c_ldo5>;
        cam_v_custom2-supply = <&cam_ois_af_vdd_tele>;
        regulator-names = "cam_vio", "cam_vaf", "cam_v_custom2";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000 2800000 2800000>;
        rgltr-max-voltage = <1800000 2800000 2800000>;
        rgltr-load-current = <15000 130000 200000>;
        af-ois-use-same-ic;
        status = "ok";
    };

    ois_rear_tele: qcom,ois@3 {
        cell-index = <3>;
        compatible = "qcom,ois";
        cci-master = <CCI_MASTER_0>;
        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vaf-supply = <&cam_64c_ldo5>;
        cam_v_custom2-supply = <&cam_ois_af_vdd_tele>;
        regulator-names = "cam_vio", "cam_vaf", "cam_v_custom2";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000 2800000 2800000>;
        rgltr-max-voltage = <1800000 2800000 2800000>;
        rgltr-load-current = <15000 130000 200000>;
        status = "ok";
    };

    rear_tele:qcom,cam-sensor@3 {
        cell-index = <3>;
        compatible = "qcom,cam-sensor";
        csiphy-sd-index = <0>;
        sensor-position-roll = <90>;
        sensor-position-pitch = <0>;
        sensor-position-yaw = <180>;
        led-flash-src = <&led_flash_rear_tele>;
        eeprom-src = <&eeprom_tele>;
        actuator-src = <&actuator_rear_tele>;
        ois-src = <&ois_rear_tele>;
        cam_vio-supply = <&cam_64c_ldo7>;
        cam_vdig-supply = <&cam_64c_ldo2>;
        cam_clk-supply = <&cam_cc_camss_top_gdsc>;
        cam_vana-supply = <&cam_68c_ldo6>;
        regulator-names = "cam_vio", "cam_vdig",
          "cam_clk", "cam_vana";
        rgltr-cntrl-support;
        rgltr-min-voltage = <1800000 1050000 0 2800000>;
        rgltr-max-voltage = <1800000 1050000 0 2800000>;
        rgltr-load-current = <155000 680000 0 50000>;
        gpio-no-mux = <0>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_active_rst2>;
        pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_suspend_rst2>;
        gpios = <&tlmm 66 0>, <&tlmm 125 0>;
        gpio-reset = <1>;
        gpio-req-tbl-num = <0 1>;
        gpio-req-tbl-flags = <1 0>;
        gpio-req-tbl-label = "CAMIF_MCLK2", "CAM_RESET2";
        cci-master = <CCI_MASTER_0>;
        clocks = <&camcc CAM_CC_MCLK2_CLK>;
        clock-names = "cam_clk";
        clock-cntl-level = "nominal";
        clock-rates = <24000000>;
        status = "ok";
    };
};
