From 7342bdf10f36b3b65c27c340b983550a8ece23b8 Mon Sep 17 00:00:00 2001 From: Arian Date: Wed, 24 Jan 2024 10:36:26 +0100 Subject: [PATCH] camera-devicetree: Add support for thor, zizha, diting, mayfly, unicorn and mondrian from ziyi-s-oss Change-Id: I7ef8a5cd0b5ad7468ed388c6926538d51c058aee --- qcom/camera/config/waipio.mk | 7 +- qcom/camera/mayfly-sm8475-camera-sensor.dts | 17 + qcom/camera/mayfly-sm8475-camera-sensor.dtsi | 863 ++++++++++++++++ ....dts => mondrian-sm8475-camera-sensor.dts} | 6 +- ...tsi => mondrian-sm8475-camera-sensor.dtsi} | 283 +++--- qcom/camera/thor-sm8450-camera-sensor.dts | 17 + qcom/camera/thor-sm8450-camera-sensor.dtsi | 854 ++++++++++++++++ qcom/camera/thor-sm8475-camera-sensor.dts | 17 + qcom/camera/thor-sm8475-camera-sensor.dtsi | 860 ++++++++++++++++ qcom/camera/unicorn-sm8450-camera-sensor.dts | 17 + qcom/camera/unicorn-sm8450-camera-sensor.dtsi | 736 ++++++++++++++ qcom/camera/unicorn-sm8475-camera-sensor.dts | 17 + qcom/camera/unicorn-sm8475-camera-sensor.dtsi | 925 ++++++++++++++++++ 13 files changed, 4505 insertions(+), 114 deletions(-) create mode 100644 qcom/camera/mayfly-sm8475-camera-sensor.dts create mode 100644 qcom/camera/mayfly-sm8475-camera-sensor.dtsi rename qcom/camera/{mondrian-camera-sensor.dts => mondrian-sm8475-camera-sensor.dts} (73%) rename qcom/camera/{mondrian-camera-sensor.dtsi => mondrian-sm8475-camera-sensor.dtsi} (77%) create mode 100644 qcom/camera/thor-sm8450-camera-sensor.dts create mode 100644 qcom/camera/thor-sm8450-camera-sensor.dtsi create mode 100644 qcom/camera/thor-sm8475-camera-sensor.dts create mode 100644 qcom/camera/thor-sm8475-camera-sensor.dtsi create mode 100644 qcom/camera/unicorn-sm8450-camera-sensor.dts create mode 100644 qcom/camera/unicorn-sm8450-camera-sensor.dtsi create mode 100644 qcom/camera/unicorn-sm8475-camera-sensor.dts create mode 100644 qcom/camera/unicorn-sm8475-camera-sensor.dtsi diff --git a/qcom/camera/config/waipio.mk b/qcom/camera/config/waipio.mk index ab0b180c..35e14044 100644 --- a/qcom/camera/config/waipio.mk +++ b/qcom/camera/config/waipio.mk @@ -14,7 +14,12 @@ dtbo-$(CONFIG_ARCH_CAPE) += cape-camera.dtbo dtbo-$(CONFIG_ARCH_CAPE) += cape-camera-sensor-mtp.dtbo \ cape-camera-sensor-cdp.dtbo \ cape-camera-sensor-qrd.dtbo \ - mondrian-camera-sensor.dtbo + thor-sm8475-camera-sensor.dtbo \ + zizhan-sm8475-camera-sensor.dtbo \ + diting-sm8475-camera-sensor.dtbo \ + mayfly-sm8475-camera-sensor.dtbo \ + unicorn-sm8475-camera-sensor.dtbo \ + mondrian-sm8475-camera-sensor.dtbo dtbo-$(CONFIG_ARCH_CAPE) += ukee-camera-sensor-mtp.dtbo \ ukee-camera-sensor-cdp.dtbo \ diff --git a/qcom/camera/mayfly-sm8475-camera-sensor.dts b/qcom/camera/mayfly-sm8475-camera-sensor.dts new file mode 100644 index 00000000..8beaa3b8 --- /dev/null +++ b/qcom/camera/mayfly-sm8475-camera-sensor.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include +#include +#include + +#include "mayfly-sm8475-camera-sensor.dtsi" +/ { + model = "Qualcomm Technologies, Inc. 8475 mayfly"; + compatible = "qcom,cape", "qcom,capep"; + qcom,msm-id = <530 0x10000>, <531 0x10000>, <540 0x10000>; + qcom,board-id = <0x10008 0>; + xiaomi,miboard-id = <0xC 0>; +}; diff --git a/qcom/camera/mayfly-sm8475-camera-sensor.dtsi b/qcom/camera/mayfly-sm8475-camera-sensor.dtsi new file mode 100644 index 00000000..ff75a10b --- /dev/null +++ b/qcom/camera/mayfly-sm8475-camera-sensor.dtsi @@ -0,0 +1,863 @@ + +#include +#include +&tlmm { + //macro reset + cam_sensor_active_rst7: cam_sensor_active_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + config { + pins = "gpio128"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_suspend_rst7: cam_sensor_suspend_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + config { + pins = "gpio128"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//front reset + cam_sensor_active_rst8: cam_sensor_active_rst8 { + /* RESET FRONT */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + config { + pins = "gpio127"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_suspend_rst8: cam_sensor_suspend_rst8 { + /* RESET FRONT */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + config { + pins = "gpio127"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//wide reset + cam_sensor_active_rst9: cam_sensor_active_rst9 { + /* RESET FRONT */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + config { + pins = "gpio126"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_suspend_rst9: cam_sensor_suspend_rst9 { + /* RESET FRONT */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + config { + pins = "gpio126"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//macro + cam_sensor_m_avdd_active: cam_sensor_m_avdd_active { + /* SENSOR MACRO AVDD ENABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + config { + pins = "gpio71"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_m_avdd_suspend: cam_sensor_m_avdd_suspend { + /* SENSOR MACRO AVDD DISABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + config { + pins = "gpio71"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//front dvdd + cam_sensor_f_dvdd_active: cam_sensor_f_dvdd_active { + /* SENSOR FRONT DVDD ENABLE */ + mux { + pins = "gpio93"; + function = "gpio"; + }; + config { + pins = "gpio93"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_f_dvdd_suspend: cam_sensor_f_dvdd_suspend { + /* SENSOR FRONT DVDD DISABLE */ + mux { + pins = "gpio93"; + function = "gpio"; + }; + config { + pins = "gpio93"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//front avdd + cam_sensor_f_avdd_active: cam_sensor_f_avdd_active { + /* SENSOR FRONT AVDD ENABLE */ + mux { + pins = "gpio64"; + function = "gpio"; + }; + config { + pins = "gpio64"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_f_avdd_suspend: cam_sensor_f_avdd_suspend { + /* SENSOR FRONT AVDD DISABLE */ + mux { + pins = "gpio68"; + function = "gpio"; + }; + config { + pins = "gpio68"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//wide dvdd + cam_sensor_w_dvdd_active: cam_sensor_w_dvdd_active { + /* SENSOR WIDE DVDD ENABLE */ + mux { + pins = "gpio2"; + function = "gpio"; + }; + config { + pins = "gpio2"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_w_dvdd_suspend: cam_sensor_w_dvdd_suspend { + /* SENSOR WIDE DVDD DISABLE */ + mux { + pins = "gpio2"; + function = "gpio"; + }; + config { + pins = "gpio2"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//wide avdd + cam_sensor_w_avdd1_active: cam_sensor_w_avdd1_active { + /* SENSOR WIDE DVDD ENABLE */ + mux { + pins = "gpio70"; + function = "gpio"; + }; + config { + pins = "gpio70"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_w_avdd1_suspend: cam_sensor_w_avdd1_suspend { + /* SENSOR WIDE DVDD DISABLE */ + mux { + pins = "gpio70"; + function = "gpio"; + }; + config { + pins = "gpio70"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +//ultra avdd + cam_sensor_u_avdd_active: cam_sensor_u_avdd_active { + /* SENSOR ULTRA DVDD ENABLE */ + mux { + pins = "gpio53"; + function = "gpio"; + }; + config { + pins = "gpio53"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_u_avdd_suspend: cam_sensor_u_avdd_suspend { + /* SENSOR ULTRA DVDD DISABLE */ + mux { + pins = "gpio53"; + function = "gpio"; + }; + config { + pins = "gpio53"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + cam_sensor_active_wide: cam_sensor_active_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + cam_sensor_suspend_wide: cam_sensor_suspend_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + + //macro + cam_sensor_mclk3_active: cam_sensor_mclk3_active { + /* MCLK3 */ + mux { + pins = "gpio103"; + function = "cam_mclk"; + }; + + config { + pins = "gpio103"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk3_suspend: cam_sensor_mclk3_suspend { + /* MCLK3 */ + mux { + pins = "gpio103"; + function = "cam_mclk"; + }; + + config { + pins = "gpio103"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //ultra + cam_sensor_mclk1_active: cam_sensor_mclk1_active { + /* MCLK1 */ + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend { + /* MCLK1 */ + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //wide + cam_sensor_mclk2_active: cam_sensor_mclk2_active { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //front + cam_sensor_mclk5_active: cam_sensor_mclk5_active { + /* MCLK5 */ + mux { + pins = "gpio105"; + function = "cam_mclk"; + }; + + config { + pins = "gpio105"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk5_suspend: cam_sensor_mclk5_suspend { + /* MCLK5 */ + mux { + pins = "gpio105"; + function = "cam_mclk"; + }; + + config { + pins = "gpio105"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + + +}; + +&cam_csiphy2{ + compatible = "qcom,csiphy-v2.1.3-xiaomi-l3s", "qcom,csiphy"; +}; + +&cam_csiphy3{ + compatible = "qcom,csiphy-v2.1.3-xiaomi-l3s", "qcom,csiphy"; +}; + +&soc { + led_flash_triple_rear: qcom,camera-flash@1 { + cell-index = <1>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + led_flash_triple_rear_aux2: qcom,camera-flash@2 { + cell-index = <2>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + led_flash_triple_rear_aux: qcom,camera-flash@3 { + cell-index = <3>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + CAMERA_M_AVDD: gpio-regulator@0 { + compatible = "regulator-fixed"; + reg = <0x00 0x00>; + regulator-name = "CAMERA_M_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 71 0>; + // pinctrl-names = "default", "sleep"; + // pinctrl-0 = <&cam_sensor_m_avdd_active &cam_sensor_m_avdd_suspend>; + // vin-supply = <&BOB>; + }; + CAMERA_F_DVDD: gpio-regulator@1 { + compatible = "regulator-fixed"; + reg = <0x01 0x00>; + regulator-name = "CAMERA_F_DVDD"; + regulator-min-microvolt = <1104000>; + regulator-max-microvolt = <1104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 93 0>; + // pinctrl-names = "default", "sleep"; + // pinctrl-0 = <&cam_sensor_f_dvdd_active &cam_sensor_f_dvdd_suspend>; + // vin-supply = <&S12B>; + }; + CAMERA_F_AVDD: gpio-regulator@2 { + compatible = "regulator-fixed"; + reg = <0x02 0x00>; + regulator-name = "CAMERA_F_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 64 0>; + // pinctrl-names = "default", "sleep"; + // pinctrl-0 = <&cam_sensor_f_avdd_active &cam_sensor_f_avdd_suspend>; + // vin-supply = <&BOB>; + }; + CAMERA_W_DVDD: gpio-regulator@3 { + compatible = "regulator-fixed"; + reg = <0x03 0x00>; + regulator-name = "CAMERA_W_DVDD"; + regulator-min-microvolt = <1104000>; + regulator-max-microvolt = <1104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 2 0>; + // pinctrl-names = "default", "sleep"; + // pinctrl-0 = <&cam_sensor_w_dvdd_active &cam_sensor_w_dvdd_suspend>; + // vin-supply = <&S12B>; + }; + CAMERA_W_AVDD: gpio-regulator@4 { + compatible = "regulator-fixed"; + reg = <0x04 0x00>; + regulator-name = "CAMERA_W_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 70 0>; + // pinctrl-names = "default", "sleep"; + // pinctrl-0 = <&cam_sensor_w_avdd1_active &cam_sensor_w_avdd1_suspend>; + // vin-supply = <&S1C>; + }; + + qcom,cam-res-mgr { + compatible = "qcom,cam-res-mgr"; + gpios-shared-pinctrl = <427 371 303 403>; + shared-pctrl-gpio-names = "cam_wide", "cam_wide", "cam_wide", "cam_wide"; + pinctrl-names = "cam_wide_active", "cam_wide_suspend"; + pinctrl-0 = <&cam_sensor_active_rst9 + &cam_sensor_active_wide + &cam_sensor_mclk2_active>; + pinctrl-1 = <&cam_sensor_suspend_rst9 + &cam_sensor_suspend_wide + &cam_sensor_mclk2_suspend>; + status = "ok"; + }; + +}; +&cam_cci0 +{ + ois0: qcom,ois0 { + cell-index = <0>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&CAMERA_W_DVDD>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_W_AVDD>; + cam_v_custom1-supply = <&L6J>;//OISAVDD + cam_vana1-supply = <&L5J>;//需确认 + cam_vaf-supply = <&L7J>;//AFVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana", + "cam_v_custom1", "cam_vana1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-max-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-load-current = <155000 653600 0 57500 6000 155000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK2", + "CAM_RESET9"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + eeprom_triple_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&CAMERA_W_DVDD>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_W_AVDD>; + cam_v_custom1-supply = <&L6J>;//OISAVDD + cam_vana1-supply = <&L5J>;//此路电需确认 + cam_vaf-supply = <&L7J>;//AFVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana", + "cam_v_custom1", "cam_vana1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-max-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-load-current = <155000 653600 0 57500 6000 155000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK2", + "CAM_RESET9"; + //cci-device = <0>; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + eeprom_front: qcom,eeprom1 { //front ov32b + cell-index = <1>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&CAMERA_F_DVDD>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_F_AVDD>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <3000 180000 0 43500>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst8>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst8>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET8"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + eeprom_triple_ultra: qcom,eeprom2 { + cell-index = <2>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L3J>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1200000 0 2800000>; + rgltr-max-voltage = <1800000 1200000 0 2800000>; + rgltr-load-current = <400 78000 0 35700>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + actuator_triple_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vaf-supply = <&L7J>; + cam_vio-supply = <&pm8450_l4>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <3104000 1800000>; + rgltr-max-voltage = <3104000 1800000>; + rgltr-load-current = <103000 155000>; + }; + qcom,cam-sensor0 { //wide imx707 + cell-index = <0>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <2>; + eeprom-src = <&eeprom_triple_wide>; + actuator-src = <&actuator_triple_wide>; + ois-src = <&ois0>; + led-flash-src = <&led_flash_triple_rear>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&CAMERA_W_DVDD>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_W_AVDD>; + cam_v_custom1-supply = <&L6J>;//OISAVDD + cam_vana1-supply = <&L5J>;//需确认 + cam_vaf-supply = <&L7J>;//AFVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana", + "cam_v_custom1", "cam_vana1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-max-voltage = <1800000 1104000 0 2800000 3104000 1800000 3104000>; + rgltr-load-current = <155000 653600 0 57500 6000 155000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK2", + "CAM_RESET9"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + qcom,cam-sensor1 { //front ov32b + cell-index = <1>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <3>; + eeprom-src = <&eeprom_front>; + sensor-position-roll = <270>; + sensor-position-pitch = <0>; + sensor-position-yaw = <0>; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&CAMERA_F_DVDD>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_F_AVDD>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <3000 180000 0 43500>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst8>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst8>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET8"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + qcom,cam-sensor2 { //ultra ov13b10 + cell-index = <2>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <0>; + eeprom-src = <&eeprom_triple_ultra>; + led-flash-src = <&led_flash_triple_rear_aux2>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L3J>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1200000 0 2800000>; + rgltr-max-voltage = <1800000 1200000 0 2800000>; + rgltr-load-current = <400 78000 0 35700>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + +}; +&cam_cci1 { + eeprom_macro: qcom,eeprom3 { //macro s5k5e9 + cell-index = <3>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L4J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1200000 0 2800000>; + rgltr-max-voltage = <1800000 1200000 0 2800000>; + rgltr-load-current = <25 56000 0 21000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk3_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk3_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 103 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK3", + "CAM_RESET7"; + cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK3_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + actuator_triple_macro: qcom,actuator1 { + cell-index = <1>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&pm8350c_l9>; + cam_vio-supply = <&pm8450_l4>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <2800000 1800000>; + rgltr-max-voltage = <2800000 1800000>; + rgltr-load-current = <100000 5000>; + }; + qcom,cam-sensor3 { //macro s5k5e9 + cell-index = <3>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <1>; + eeprom-src = <&eeprom_macro>; + actuator-src = <&actuator_triple_macro>; + led-flash-src = <&led_flash_triple_rear_aux>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&pm8450_l4>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L4J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1200000 0 2800000>; + rgltr-max-voltage = <1800000 1200000 0 2800000>; + rgltr-load-current = <25 56000 0 21000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk3_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk3_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 103 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK3", + "CAM_RESET7"; + //cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK3_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; +}; diff --git a/qcom/camera/mondrian-camera-sensor.dts b/qcom/camera/mondrian-sm8475-camera-sensor.dts similarity index 73% rename from qcom/camera/mondrian-camera-sensor.dts rename to qcom/camera/mondrian-sm8475-camera-sensor.dts index f286736a..0e2f5041 100644 --- a/qcom/camera/mondrian-camera-sensor.dts +++ b/qcom/camera/mondrian-sm8475-camera-sensor.dts @@ -7,11 +7,11 @@ #include #include -#include "mondrian-camera-sensor.dtsi" +#include "mondrian-sm8475-camera-sensor.dtsi" / { - model = "Qualcomm Technologies, Inc. Cape MTP"; + model = "Qualcomm Technologies, Inc. 8475 mondrian"; compatible = "qcom,cape", "qcom,capep"; qcom,msm-id = <530 0x10000>, <531 0x10000>, <540 0x10000>; - qcom,board-id = <8 0>, <0x10008 0>, <0x10008 2>, <0x10008 3>; + qcom,board-id = <0x10008 0>; xiaomi,miboard-id = <0xE 0>; }; diff --git a/qcom/camera/mondrian-camera-sensor.dtsi b/qcom/camera/mondrian-sm8475-camera-sensor.dtsi similarity index 77% rename from qcom/camera/mondrian-camera-sensor.dtsi rename to qcom/camera/mondrian-sm8475-camera-sensor.dtsi index 1a93c248..87707406 100644 --- a/qcom/camera/mondrian-camera-sensor.dtsi +++ b/qcom/camera/mondrian-sm8475-camera-sensor.dtsi @@ -1,17 +1,16 @@ #include -#include &cci0_active { config { - pins = "gpio110", "gpio111"; - bias-pull-up; /* PULL UP */ + pins = "gpio110","gpio111"; + bias-pull-up; /* PULL UP*/ drive-strength = <4>; /* 4 MA */ }; }; &cci0_suspend { config { - pins = "gpio110", "gpio111"; + pins = "gpio110","gpio111"; bias-pull-down; /* PULL DOWN */ drive-strength = <4>; /* 4 MA */ }; @@ -19,31 +18,31 @@ &cci1_active { config { - pins = "gpio112", "gpio113"; - bias-pull-up; /* PULL UP */ - drive-strength = <8>; /* 8 MA */ + pins = "gpio112","gpio113"; + bias-pull-up; /* PULL UP*/ + drive-strength = <8>; /* 4 MA */ }; }; &cci1_suspend { config { - pins = "gpio112", "gpio113"; + pins = "gpio112","gpio113"; bias-pull-down; /* PULL DOWN */ - drive-strength = <8>; /* 8 MA */ + drive-strength = <8>; /* 4 MA */ }; }; &cci2_active { config { - pins = "gpio114", "gpio115"; - bias-pull-up; /* PULL UP */ + pins = "gpio114","gpio115"; + bias-pull-up; /* PULL UP*/ drive-strength = <4>; /* 4 MA */ }; }; &cci2_suspend { config { - pins = "gpio114", "gpio115"; + pins = "gpio114","gpio115"; bias-pull-down; /* PULL DOWN */ drive-strength = <4>; /* 4 MA */ }; @@ -51,36 +50,43 @@ &cci3_active { config { - pins = "gpio208", "gpio209"; - bias-pull-up; /* PULL UP */ + pins = "gpio208","gpio209"; + bias-pull-up; /* PULL UP*/ drive-strength = <4>; /* 4 MA */ qcom,apps; }; }; + &tlmm { - cam_sensor_mclk2_active: cam_sensor_mclk2_active { - mux { - pins = "gpio102"; - function = "cam_mclk"; - }; - config { - bias-disable; /* No PULL */ - drive-strength = <4>; /* 4 MA */ - pins = "gpio102"; - }; - }; - cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend { - mux { - pins = "gpio102"; - function = "cam_mclk"; - }; - config { - pins = "gpio102"; - bias-pull-down; /* PULL DOWN */ - drive-strength = <4>; /* 4 MA */ - }; - }; + + cam_sensor_mclk2_active: cam_sensor_mclk2_active { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; cam_sensor_active_rst0: cam_sensor_active_rst0 { /* RESET REAR */ @@ -92,7 +98,7 @@ config { pins = "gpio126"; bias-disable; /* No PULL */ - drive-strength = <4>; /* 4 MA */ + drive-strength = <4>; /* 2 MA */ }; }; @@ -106,7 +112,7 @@ config { pins = "gpio126"; bias-pull-down; /* PULL DOWN */ - drive-strength = <4>; /* 4 MA */ + drive-strength = <4>; /* 2 MA */ output-low; }; }; @@ -143,29 +149,29 @@ cam_sensor_front_avdd_active: cam_sensor_front_avdd_active { /* FRONT AVDD */ mux { - pins = "gpio64"; - function = "gpio"; + pins = "gpio64"; + function = "gpio"; }; config { - pins = "gpio64"; - bias-disable; /* No PULL */ - drive-strength = <2>; /* 2 MA */ + pins = "gpio64"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ }; }; cam_sensor_front_avdd_suspend: cam_sensor_front_avdd_suspend { /* FRONT AVDD */ mux { - pins = "gpio64"; - function = "gpio"; + pins = "gpio64"; + function = "gpio"; }; config { - pins = "gpio64"; - bias-pull-down; /* PULL DOWN */ - drive-strength = <2>; /* 2 MA */ - output-low; + pins = "gpio64"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; }; }; @@ -283,8 +289,8 @@ }; }; - cam_sensor_macro_iovdd_active: cam_sensor_macro_iovdd_active { - /* SENSOR MACRO IOVDD ENABLE */ + cam_sensor_macro_iovdd_active: cam_sensor_macro_iovdd_active { + /* SENSOR MACRO AVDD ENABLE */ mux { pins = "gpio7"; function = "gpio"; @@ -296,12 +302,14 @@ drive-strength = <2>; /* 2 MA */ }; }; + cam_sensor_macro_iovdd_suspend: cam_sensor_macro_iovdd_suspend { - /* SENSOR MACRO IOVDD DISABLE */ + /* SENSOR MACRO AVDD DISABLE */ mux { pins = "gpio7"; function = "gpio"; }; + config { pins = "gpio7"; bias-pull-down; /* PULL DOWN */ @@ -313,14 +321,7 @@ &pm8350c_switch0 { qcom,led-mask = <1>; /* Channels 1 & 4 */ -}; - -&cam_csiphy2 { - compatible = "qcom,csiphy-v2.1.3-xiaomi-m11a", "qcom,csiphy"; -}; - -&cam_csiphy4 { - compatible = "qcom,csiphy-v2.1.3-xiaomi-m11a", "qcom,csiphy"; + qcom,symmetry-en; }; &soc { @@ -353,7 +354,7 @@ camera_front_avdd_ldo: gpio-regulator@2 { compatible = "regulator-fixed"; - reg = <0x2 0x00>; + reg = <0x02 0x00>; regulator-name = "camera_front_avdd_ldo"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -362,12 +363,12 @@ gpio = <&tlmm 64 0>; pinctrl-names = "front_avdd_active", "front_avdd_suspend"; pinctrl-0 = <&cam_sensor_front_avdd_active - &cam_sensor_front_avdd_suspend>; - }; + &cam_sensor_front_avdd_suspend>; + }; CAMERA_ULTRA_AVDD: gpio-regulator@3 { compatible = "regulator-fixed"; - reg = <0x3 0x00>; + reg = <0x03 0x00>; regulator-name = "CAMERA_ULTRA_AVDD"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -382,7 +383,7 @@ CAMERA_MACRO_AVDD: gpio-regulator@4 { compatible = "regulator-fixed"; - reg = <0x4 0x00>; + reg = <0x04 0x00>; regulator-name = "CAMERA_MACRO_AVDD"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -397,18 +398,19 @@ camera_wide_avdd_ldo: gpio-regulator@5 { compatible = "regulator-fixed"; - reg = <0x5 0x00>; + reg = <0x05 0x00>; regulator-name = "camera_wide_avdd_ldo"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-enable-ramp-delay = <100>; enable-active-high; gpio = <&tlmm 70 0>; + //vin-supply = <&S1C>; }; camera_wide_dvdd_ldo: gpio-regulator@6 { compatible = "regulator-fixed"; - reg = <0x6 0x00>; + reg = <0x06 0x00>; regulator-name = "camera_wide_dvdd_ldo"; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; @@ -420,18 +422,19 @@ camera_wide_avdd2_ldo: gpio-regulator@7 { compatible = "regulator-fixed"; - reg = <0x7 0x00>; + reg = <0x07 0x00>; regulator-name = "camera_wide_avdd2_ldo"; regulator-min-microvolt = <1860000>; regulator-max-microvolt = <1860000>; regulator-enable-ramp-delay = <100>; enable-active-high; gpio = <&tlmm 97 0>; + //vin-supply = <&S1C>; }; CAMERA_MACRO_IOVDD: gpio-regulator@8 { compatible = "regulator-fixed"; - reg = <0x8 0x00>; + reg = <0x08 0x00>; regulator-name = "CAMERA_MACRO_IOVDD"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -459,24 +462,20 @@ }; }; -&cam_cci0 { - actuator_triple_wide: qcom,actuator0 { +&cam_cci0 +{ + /*ois_wide: qcom,ois0 { cell-index = <0>; - compatible = "qcom,actuator"; - cci-master = ; - cam_vdig-supply = <&camera_wide_dvdd_ldo>; - regulator-names = "cam_vdig"; - }; - - eeprom_triple_wide: qcom,eeprom0 { - cell-index = <0>; - compatible = "qcom,eeprom"; + reg = <0x0>; + compatible = "qcom,ois"; + //cam_vio-supply = <&L5J>; cam_vdig-supply = <&camera_wide_dvdd_ldo>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&camera_wide_avdd_ldo>; cam_v_custom1-supply = <&camera_wide_avdd2_ldo>; - regulator-names = "cam_vdig", "cam_clk", - "cam_vana", "cam_v_custom1"; + //cam_vaf-supply = <&L7J>; + regulator-names = "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1"; rgltr-cntrl-support; rgltr-min-voltage = <1100000 0 2800000 1860000>; rgltr-max-voltage = <1100000 0 2800000 1860000>; @@ -490,7 +489,47 @@ gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK2", "CAM_RESET0"; - cci-master = ; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + };*/ + + actuator_triple_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + regulator-names = "cam_vdig"; + }; + + eeprom_triple_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + //cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&camera_wide_avdd2_ldo>; + //cam_vaf-supply = <&L7J>; + regulator-names = "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1100000 0 2800000 1860000>; + rgltr-max-voltage = <1100000 0 2800000 1860000>; + rgltr-load-current = <680000 0 103000 50000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK2", + "CAM_RESET0"; + cci-master = <1>; clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; clock-names = "cam_clk"; clock-cntl-level = "nominal"; @@ -501,6 +540,8 @@ eeprom_front: qcom,eeprom1 { cell-index = <1>; compatible = "qcom,eeprom"; + //cam_vio-supply = <&L5J>; + //cam_vdig-supply = <&camera_front_vdig_ldo>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&camera_front_avdd_ldo>; regulator-names = "cam_clk", "cam_vana"; @@ -511,16 +552,16 @@ gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk5_active - &cam_sensor_active_rst5>; + &cam_sensor_active_rst5>; pinctrl-1 = <&cam_sensor_mclk5_suspend - &cam_sensor_suspend_rst5>; + &cam_sensor_suspend_rst5>; gpios = <&tlmm 105 0>, - <&tlmm 127 0>; + <&tlmm 127 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK5", - "CAM_RESET5"; + "CAM_RESET5"; cci-device = <1>; cci-master = <0>; clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; @@ -533,13 +574,17 @@ eeprom_triple_ultra: qcom,eeprom2 { cell-index = <2>; compatible = "qcom,eeprom"; + //cam_vio-supply = <&L5J>; + //cam_vdig-supply = <&L2J>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&CAMERA_ULTRA_AVDD>; - regulator-names = "cam_vana", "cam_clk"; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vana", + "cam_clk"; rgltr-cntrl-support; - rgltr-min-voltage = <2800000 0>; - rgltr-max-voltage = <2800000 0>; - rgltr-load-current = <35000 0>; + rgltr-min-voltage = <2800000 0>; + rgltr-max-voltage = <2800000 0>; + rgltr-load-current = <35000 0>; gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk1_active @@ -569,15 +614,18 @@ eeprom-src = <&eeprom_triple_wide>; actuator-src = <&actuator_triple_wide>; led-flash-src = <&led_flash_wide>; + //ois-src = <&ois_wide>; sensor-position-roll = <90>; sensor-position-pitch = <0>; sensor-position-yaw = <180>; + //cam_vio-supply = <&L5J>; cam_vdig-supply = <&camera_wide_dvdd_ldo>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&camera_wide_avdd_ldo>; cam_v_custom1-supply = <&camera_wide_avdd2_ldo>; - regulator-names = "cam_vdig", "cam_clk", - "cam_vana", "cam_v_custom1"; + //cam_vaf-supply = <&L7J>; + regulator-names = "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1"; rgltr-cntrl-support; rgltr-min-voltage = <1100000 0 2800000 1860000>; rgltr-max-voltage = <1100000 0 2800000 1860000>; @@ -603,12 +651,14 @@ cell-index = <1>; compatible = "qcom,cam-sensor"; csiphy-sd-index = <4>; + eeprom-src = <&eeprom_front>; sensor-position-roll = <270>; sensor-position-pitch = <0>; sensor-position-yaw = <0>; - eeprom-src = <&eeprom_front>; - cam_vana-supply = <&camera_front_avdd_ldo>; + //cam_vio-supply = <&L5J>; + //cam_vdig-supply = <&camera_front_vdig_ldo>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_front_avdd_ldo>; regulator-names = "cam_clk", "cam_vana"; rgltr-cntrl-support; rgltr-min-voltage = <0 2800000>; @@ -617,18 +667,18 @@ gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk5_active - &cam_sensor_active_rst5>; + &cam_sensor_active_rst5>; pinctrl-1 = <&cam_sensor_mclk5_suspend - &cam_sensor_suspend_rst5>; + &cam_sensor_suspend_rst5>; gpios = <&tlmm 105 0>, - <&tlmm 127 0>; + <&tlmm 127 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK5", - "CAM_RESET5"; + "CAM_RESET5"; cci-device = <1>; - cci-master = ; + cci-master = <0>; clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; clock-names = "cam_clk"; clock-cntl-level = "nominal"; @@ -636,17 +686,21 @@ status = "ok"; }; + //Ultra qcom,cam-sensor2 { cell-index = <2>; compatible = "qcom,cam-sensor"; csiphy-sd-index = <1>; + eeprom-src = <&eeprom_triple_ultra>; + led-flash-src = <&led_flash_ultra>; sensor-position-roll = <90>; sensor-position-pitch = <0>; sensor-position-yaw = <180>; - eeprom-src = <&eeprom_triple_ultra>; - led-flash-src = <&led_flash_ultra>; - cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + /*cam_vio-supply = <&L5J>; WL2866D_AVDD1 1.8V + cam_vdig-supply = <&L2J>; WL2866D_DVDD2 1.2V*/ cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + //cam_v_custom1-supply = <&L7J>; regulator-names = "cam_clk", "cam_vana"; rgltr-cntrl-support; rgltr-min-voltage = <0 2800000>; @@ -655,34 +709,39 @@ gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk1_active - &cam_sensor_active_rst1>; + &cam_sensor_active_rst1>; pinctrl-1 = <&cam_sensor_mclk1_suspend - &cam_sensor_suspend_rst1>; + &cam_sensor_suspend_rst1>; gpios = <&tlmm 101 0>, - <&tlmm 24 0>; + <&tlmm 24 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-device = <1>; - cci-master = ; + cci-master = <0>; clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; clock-names = "cam_clk"; clock-cntl-level = "nominal"; clock-rates = <19200000>; status = "ok"; }; + }; &cam_cci1 { eeprom_triple_macro: qcom,eeprom3 { cell-index = <3>; compatible = "qcom,eeprom"; + //cam_vio-supply = <&CAMERA_MACRO_IOVDD>; //using pm8350c cam_vio-supply = <&L1C>; + //cam_vdig-supply = <&L1J>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&CAMERA_MACRO_AVDD>; - regulator-names = "cam_vio", "cam_clk"; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", + "cam_clk"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 0>; rgltr-max-voltage = <1800000 0>; @@ -719,11 +778,14 @@ sensor-position-roll = <90>; sensor-position-pitch = <0>; sensor-position-yaw = <180>; + //cam_vio-supply = <&CAMERA_MACRO_IOVDD>; cam_vio-supply = <&L1C>; + //cam_vdig-supply = <&L1J>; cam_clk-supply = <&cam_cc_titan_top_gdsc>; cam_vana-supply = <&CAMERA_MACRO_AVDD>; - regulator-names = "cam_vio", "cam_clk", - "cam_vana"; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", + "cam_clk", "cam_vana"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 0 2800000>; rgltr-max-voltage = <1800000 0 2800000>; @@ -749,4 +811,5 @@ clock-rates = <19200000>; status = "ok"; }; + }; diff --git a/qcom/camera/thor-sm8450-camera-sensor.dts b/qcom/camera/thor-sm8450-camera-sensor.dts new file mode 100644 index 00000000..3118157a --- /dev/null +++ b/qcom/camera/thor-sm8450-camera-sensor.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include +#include +#include + +#include "thor-sm8450-camera-sensor.dtsi" +/ { + model = "Qualcomm Technologies, Inc. 8450 thor"; + compatible = "qcom,waipio", "qcom,waipiop"; + qcom,msm-id = <457 0x10000>, <482 0x10000>, <457 0x20000>, <482 0x20000>, <552 0x10000>; + qcom,board-id = <8 0>, <0x10008 0>, <0x02010008 0>, <0x03010008 0x03>, <0x04010008 0x04>; + xiaomi,miboard-id = <0x6 0>; +}; diff --git a/qcom/camera/thor-sm8450-camera-sensor.dtsi b/qcom/camera/thor-sm8450-camera-sensor.dtsi new file mode 100644 index 00000000..79da3c1b --- /dev/null +++ b/qcom/camera/thor-sm8450-camera-sensor.dtsi @@ -0,0 +1,854 @@ +#include + +&cci0_active { + config { + pins = "gpio110","gpio111"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci0_suspend { + config { + pins = "gpio110","gpio111"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci1_active { + config { + pins = "gpio112","gpio113"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci1_suspend { + config { + pins = "gpio112","gpio113"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci2_active { + config { + pins = "gpio114","gpio115"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci2_suspend { + config { + pins = "gpio114","gpio115"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci3_active { + config { + pins = "gpio208","gpio209"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + qcom,apps; + }; +}; + +&cci3_suspend { + config { + pins = "gpio208","gpio209"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + qcom,remote; + }; + +}; + +&tlmm { + cam_wide_active_mclk: cam_wide_active_mclk { + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_wide_suspend_mclk: cam_wide_suspend_mclk { + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_wide: cam_sensor_active_wide { + mux { + pins = "gpio126", "gpio171", "gpio183"; + function = "gpio"; + }; + + config { + pins = "gpio126", "gpio171", "gpio183"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_wide: cam_sensor_suspend_wide { + mux { + pins = "gpio126", "gpio171", "gpio183"; + function = "gpio"; + }; + + config { + pins = "gpio126", "gpio171", "gpio183"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_mipisel0: cam_sensor_active_mipisel0 { + mux { + pins = "gpio180"; + function = "gpio"; + }; + + config { + pins = "gpio180"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_mipisel0: cam_sensor_suspend_mipisel0 { + mux { + pins = "gpio180"; + function = "gpio"; + }; + + config { + pins = "gpio180"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_ultra_active_mclk: cam_ultra_active_mclk { + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_ultra_suspend_mclk: cam_ultra_suspend_mclk { + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_ultra: cam_sensor_active_ultra { + mux { + pins = "gpio24", "gpio107"; + function = "gpio"; + }; + + config { + pins = "gpio24", "gpio107"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_ultra: cam_sensor_suspend_ultra { + mux { + pins = "gpio24", "gpio107"; + function = "gpio"; + }; + + config { + pins = "gpio24", "gpio107"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_front_active_mclk: cam_front_active_mclk { + mux { + pins = "gpio104"; + function = "cam_mclk"; + }; + + config { + pins = "gpio104"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_front_suspend_mclk: cam_front_suspend_mclk { + mux { + pins = "gpio104"; + function = "cam_mclk"; + }; + + config { + pins = "gpio104"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_front: cam_sensor_active_front { + mux { + pins = "gpio108"; + function = "gpio"; + }; + + config { + pins = "gpio108"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_front: cam_sensor_suspend_front { + mux { + pins = "gpio108"; + function = "gpio"; + }; + + config { + pins = "gpio108"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_tele_active_mclk: cam_tele_active_mclk { + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_tele_suspend_mclk: cam_tele_suspend_mclk { + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_tele: cam_sensor_active_tele { + mux { + pins = "gpio128", "gpio174"; + function = "gpio"; + }; + + config { + pins = "gpio128", "gpio174"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_tele: cam_sensor_suspend_tele { + mux { + pins = "gpio128", "gpio174"; + function = "gpio"; + }; + + config { + pins = "gpio128", "gpio174"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +}; + +&pm8350c_switch0 { + qcom,led-mask = <1>; /* Channels 1 */ + qcom,symmetry-en; +}; + +&pm8350c_switch1 { + qcom,led-mask = <2>; /* Channels 2 */ + qcom,symmetry-en; +}; + +&pm8350c_switch2 { + qcom,led-mask = <3>; /* All Channels */ + qcom,symmetry-en; +}; + +// Enable stretch for tele sem1217. +&i2c_freq_1Mhz_cci1 { + hw-thigh = <16>; + hw-tlow = <22>; + hw-tsu-sto = <17>; + hw-tsu-sta = <18>; + hw-thd-dat = <16>; + hw-thd-sta = <15>; + hw-tbuf = <24>; + hw-scl-stretch-en = <1>; + hw-trdhld = <3>; + hw-tsp = <3>; + cci-clk-src = <37500000>; + status = "ok"; +}; + +&pm8010j_l5 { + regulator-min-microvolt = <2808000>; + regulator-max-microvolt = <2808000>; + qcom,min-dropout-voltage = <192000>; +}; + +&soc { + led_flash_wide: qcom,camera-flash@1 { + cell-index = <1>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + led_flash_ultra: qcom,camera-flash@2 { + cell-index = <2>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + led_flash_tele: qcom,camera-flash@3 { + cell-index = <3>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + camera_wide_avdd_ldo: gpio-regulator@0 { + compatible = "regulator-fixed"; + reg = <0x00 0x00>; + regulator-name = "camera_wide_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 171 0>; + }; + + camera_ultra_avdd_ldo: gpio-regulator@1 { + compatible = "regulator-fixed"; + reg = <0x01 0x00>; + regulator-name = "camera_ultra_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 107 0>; + }; + + camera_tele_avdd_ldo: gpio-regulator@2 { + compatible = "regulator-fixed"; + reg = <0x02 0x00>; + regulator-name = "camera_tele_avdd_ldo"; + regulator-min-microvolt = <2904000>; + regulator-max-microvolt = <2904000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 174 0>; + }; + + camera_wide_ois_vaf_ldo: gpio-regulator@3 { + compatible = "regulator-fixed"; + reg = <0x03 0x00>; + regulator-name = "camera_wide_ois_vaf_ldo"; + regulator-min-microvolt = <3104000>; + regulator-max-microvolt = <3104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 183 0>; + }; + + //GPIO1 -> 302 + qcom,cam-res-mgr { + compatible = "qcom,cam-res-mgr"; + gpios-shared-pinctrl = <427 403 472 484 481 401 429 475>; + shared-pctrl-gpio-names = "cam_wide", "cam_wide", "cam_wide", "cam_wide", "cam_wide", "cam_tele", "cam_tele", "cam_tele"; + pinctrl-names = "cam_wide_active", "cam_wide_suspend","cam_tele_active", "cam_tele_suspend"; + pinctrl-0 = <&cam_sensor_active_wide + &cam_wide_active_mclk + &cam_sensor_active_mipisel0>; + pinctrl-1 = <&cam_sensor_suspend_wide + &cam_wide_suspend_mclk + &cam_sensor_suspend_mipisel0>; + pinctrl-2 = <&cam_sensor_active_tele + &cam_tele_active_mclk>; + pinctrl-3 = <&cam_sensor_suspend_tele + &cam_tele_suspend_mclk>; + status = "ok"; + }; +}; + +&cam_cci0 +{ + //WIDE SubDev + eeprom_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 50000 50000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + ois_wide: qcom,ois0 { + cell-index = <0>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vaf-supply = <&L6J>; + cam_vio-supply = <&L4I>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <3104000 1800000>; + rgltr-max-voltage = <3104000 1800000>; + rgltr-load-current = <103000 20000>; + }; + + //WIDE Sensor + qcom,cam-sensor0 { + cell-index = <0>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <1>; + eeprom-src = <&eeprom_wide>; + actuator-src = <&actuator_wide>; + led-flash-src = <&led_flash_wide>; + ois-src = <&ois_wide>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //Ultra SubDev + eeprom_ultra: qcom,eeprom2 { + cell-index = <2>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1I>; + cam_vaf-supply = <&L5I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_ultra_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", "cam_vaf", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-load-current = <20000 50000 103000 0 50000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_ultra + &cam_ultra_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_ultra + &cam_ultra_suspend_mclk>; + gpios = <&tlmm 101 0>, + <&tlmm 24 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_ultra: qcom,actuator2 { + cell-index = <2>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L5I>; + cam_vio-supply = <&L4I>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000>; + rgltr-max-voltage = <2808000 1800000>; + rgltr-load-current = <103000 20000>; + }; + + //Ultra + qcom,cam-sensor2 { + cell-index = <2>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <2>; + eeprom-src = <&eeprom_ultra>; + actuator-src = <&actuator_ultra>; + led-flash-src = <&led_flash_ultra>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1I>; + cam_vaf-supply = <&L5I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_ultra_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", "cam_vaf", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-load-current = <20000 50000 103000 0 50000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_ultra + &cam_ultra_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_ultra + &cam_ultra_suspend_mclk>; + gpios = <&tlmm 101 0>, + <&tlmm 24 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + +}; + +&cam_cci1 { + //FRONT SubDev + eeprom_front: qcom,eeprom1 { + cell-index = <1>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L3J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L5J>; + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2808000>; + rgltr-load-current = <20000 10000 0 103000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_front + &cam_front_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_front + &cam_front_suspend_mclk>; + gpios = <&tlmm 104 0>, + <&tlmm 108 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK4_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor1 { + cell-index = <1>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <4>; + eeprom-src = <&eeprom_front>; + sensor-position-roll = <270>; + sensor-position-pitch = <0>; + sensor-position-yaw = <0>; + cam_vio-supply = <&L3J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L5J>; + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + aon-user; + rgltr-min-voltage = <1800000 1104000 0 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2808000>; + rgltr-load-current = <20000 10000 0 103000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_front + &cam_front_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_front + &cam_front_suspend_mclk>; + gpios = <&tlmm 104 0>, + <&tlmm 108 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK4_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //TELE SubDev + eeprom_tele: qcom,eeprom3 { + cell-index = <3>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + ois_tele: qcom,ois3 { + cell-index = <3>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_tele: qcom,actuator3 { + cell-index = <3>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L6I>; + cam_vio-supply = <&L4I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vaf", "cam_vio" ,"cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000 2808000>; + rgltr-max-voltage = <2808000 1800000 2808000>; + rgltr-load-current = <103000 20000 103000>; + }; + + //TELE + qcom,cam-sensor3 { + cell-index = <3>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <3>; + eeprom-src = <&eeprom_tele>; + actuator-src = <&actuator_tele>; + led-flash-src = <&led_flash_tele>; + ois-src = <&ois_tele>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; +}; diff --git a/qcom/camera/thor-sm8475-camera-sensor.dts b/qcom/camera/thor-sm8475-camera-sensor.dts new file mode 100644 index 00000000..1ba986c0 --- /dev/null +++ b/qcom/camera/thor-sm8475-camera-sensor.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include +#include +#include + +#include "thor-sm8475-camera-sensor.dtsi" +/ { + model = "Qualcomm Technologies, Inc. 8475 thor"; + compatible = "qcom,cape", "qcom,capep"; + qcom,msm-id = <530 0x10000>, <531 0x10000>, <540 0x10000>; + qcom,board-id = <8 0>, <0x10008 0>; + xiaomi,miboard-id = <0x6 0>; +}; diff --git a/qcom/camera/thor-sm8475-camera-sensor.dtsi b/qcom/camera/thor-sm8475-camera-sensor.dtsi new file mode 100644 index 00000000..992c2820 --- /dev/null +++ b/qcom/camera/thor-sm8475-camera-sensor.dtsi @@ -0,0 +1,860 @@ +#include +#include + +&cci0_active { + config { + pins = "gpio110","gpio111"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci0_suspend { + config { + pins = "gpio110","gpio111"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci1_active { + config { + pins = "gpio112","gpio113"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci1_suspend { + config { + pins = "gpio112","gpio113"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci2_active { + config { + pins = "gpio114","gpio115"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci2_suspend { + config { + pins = "gpio114","gpio115"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; +}; + +&cci3_active { + config { + pins = "gpio208","gpio209"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + qcom,apps; + }; +}; + +&cci3_suspend { + config { + pins = "gpio208","gpio209"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + qcom,remote; + }; + +}; + +&tlmm { + cam_wide_active_mclk: cam_wide_active_mclk { + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_wide_suspend_mclk: cam_wide_suspend_mclk { + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_wide: cam_sensor_active_wide { + mux { + pins = "gpio126", "gpio171", "gpio183"; + function = "gpio"; + }; + + config { + pins = "gpio126", "gpio171", "gpio183"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_wide: cam_sensor_suspend_wide { + mux { + pins = "gpio126", "gpio171", "gpio183"; + function = "gpio"; + }; + + config { + pins = "gpio126", "gpio171", "gpio183"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_mipisel0: cam_sensor_active_mipisel0 { + mux { + pins = "gpio180"; + function = "gpio"; + }; + + config { + pins = "gpio180"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_mipisel0: cam_sensor_suspend_mipisel0 { + mux { + pins = "gpio180"; + function = "gpio"; + }; + + config { + pins = "gpio180"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_ultra_active_mclk: cam_ultra_active_mclk { + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_ultra_suspend_mclk: cam_ultra_suspend_mclk { + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_ultra: cam_sensor_active_ultra { + mux { + pins = "gpio60", "gpio107"; + function = "gpio"; + }; + + config { + pins = "gpio60", "gpio107"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_ultra: cam_sensor_suspend_ultra { + mux { + pins = "gpio60", "gpio107"; + function = "gpio"; + }; + + config { + pins = "gpio60", "gpio107"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_front_active_mclk: cam_front_active_mclk { + mux { + pins = "gpio104"; + function = "cam_mclk"; + }; + + config { + pins = "gpio104"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_front_suspend_mclk: cam_front_suspend_mclk { + mux { + pins = "gpio104"; + function = "cam_mclk"; + }; + + config { + pins = "gpio104"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_front: cam_sensor_active_front { + mux { + pins = "gpio108"; + function = "gpio"; + }; + + config { + pins = "gpio108"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_front: cam_sensor_suspend_front { + mux { + pins = "gpio108"; + function = "gpio"; + }; + + config { + pins = "gpio108"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_tele_active_mclk: cam_tele_active_mclk { + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_tele_suspend_mclk: cam_tele_suspend_mclk { + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_active_tele: cam_sensor_active_tele { + mux { + pins = "gpio128", "gpio174"; + function = "gpio"; + }; + + config { + pins = "gpio128", "gpio174"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_tele: cam_sensor_suspend_tele { + mux { + pins = "gpio128", "gpio174"; + function = "gpio"; + }; + + config { + pins = "gpio128", "gpio174"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +}; + +&cam_csiphy2{ + compatible = "qcom,csiphy-v2.1.3-xiaomi-l1", "qcom,csiphy"; +}; + +&pm8350c_switch0 { + qcom,led-mask = <1>; /* Channels 1 */ + qcom,symmetry-en; +}; + +&pm8350c_switch1 { + qcom,led-mask = <2>; /* Channels 2 */ + qcom,symmetry-en; +}; + +&pm8350c_switch2 { + qcom,led-mask = <3>; /* All Channels */ + qcom,symmetry-en; +}; + +// Enable stretch for tele sem1217. +&i2c_freq_1Mhz_cci1 { + hw-thigh = <16>; + hw-tlow = <22>; + hw-tsu-sto = <17>; + hw-tsu-sta = <18>; + hw-thd-dat = <16>; + hw-thd-sta = <15>; + hw-tbuf = <24>; + hw-scl-stretch-en = <1>; + hw-trdhld = <3>; + hw-tsp = <3>; + cci-clk-src = <37500000>; + status = "ok"; +}; + +&pm8010j_l5 { + regulator-min-microvolt = <2808000>; + regulator-max-microvolt = <2808000>; + qcom,min-dropout-voltage = <192000>; +}; + +&soc { + led_flash_wide: qcom,camera-flash@1 { + cell-index = <1>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + led_flash_ultra: qcom,camera-flash@2 { + cell-index = <2>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + led_flash_tele: qcom,camera-flash@3 { + cell-index = <3>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0 &pm8350c_flash1>; + torch-source = <&pm8350c_torch0 &pm8350c_torch1>; + switch-source = <&pm8350c_switch2>; + status = "ok"; + }; + + camera_wide_avdd_ldo: gpio-regulator@0 { + compatible = "regulator-fixed"; + reg = <0x00 0x00>; + regulator-name = "camera_wide_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 171 0>; + }; + + camera_ultra_avdd_ldo: gpio-regulator@1 { + compatible = "regulator-fixed"; + reg = <0x01 0x00>; + regulator-name = "camera_ultra_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 107 0>; + }; + + camera_tele_avdd_ldo: gpio-regulator@2 { + compatible = "regulator-fixed"; + reg = <0x02 0x00>; + regulator-name = "camera_tele_avdd_ldo"; + regulator-min-microvolt = <2904000>; + regulator-max-microvolt = <2904000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 174 0>; + }; + + camera_wide_ois_vaf_ldo: gpio-regulator@3 { + compatible = "regulator-fixed"; + reg = <0x03 0x00>; + regulator-name = "camera_wide_ois_vaf_ldo"; + regulator-min-microvolt = <3104000>; + regulator-max-microvolt = <3104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 183 0>; + }; + + //GPIO1 -> 302 + qcom,cam-res-mgr { + compatible = "qcom,cam-res-mgr"; + gpios-shared-pinctrl = <427 403 472 484 481 401 429 475>; + shared-pctrl-gpio-names = "cam_wide", "cam_wide", "cam_wide", "cam_wide", "cam_wide", "cam_tele", "cam_tele", "cam_tele"; + pinctrl-names = "cam_wide_active", "cam_wide_suspend","cam_tele_active", "cam_tele_suspend"; + pinctrl-0 = <&cam_sensor_active_wide + &cam_wide_active_mclk + &cam_sensor_active_mipisel0>; + pinctrl-1 = <&cam_sensor_suspend_wide + &cam_wide_suspend_mclk + &cam_sensor_suspend_mipisel0>; + pinctrl-2 = <&cam_sensor_active_tele + &cam_tele_active_mclk>; + pinctrl-3 = <&cam_sensor_suspend_tele + &cam_tele_suspend_mclk>; + status = "ok"; + }; +}; + +&cam_cci0 +{ + //WIDE SubDev + eeprom_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 50000 50000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + ois_wide: qcom,ois0 { + cell-index = <0>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vaf-supply = <&L6J>; + cam_vio-supply = <&L4I>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <3104000 1800000>; + rgltr-max-voltage = <3104000 1800000>; + rgltr-load-current = <103000 20000>; + }; + + //WIDE Sensor + qcom,cam-sensor0 { + cell-index = <0>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <1>; + eeprom-src = <&eeprom_wide>; + actuator-src = <&actuator_wide>; + led-flash-src = <&led_flash_wide>; + ois-src = <&ois_wide>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; //AVDD1 + cam_v_custom1-supply = <&L4J>; //AVDD2 + cam_vaf-supply = <&L6J>; + cam_v_custom2-supply = <&camera_wide_ois_vaf_ldo>; //OIS VAF + regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana", + "cam_v_custom1","cam_vaf", "cam_v_custom2"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-max-voltage = <1800000 1152000 0 2800000 1800000 3104000 3104000>; + rgltr-load-current = <20000 50000 0 50000 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 0>, + <&tlmm 180 0>; + gpio-reset = <1>; + gpio-custom1 = <2>; + gpio-req-tbl-num = <0 1 2>; + gpio-req-tbl-flags = <1 0 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET0", + "CAM_MIPISEL0"; + cci-master = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //Ultra SubDev + eeprom_ultra: qcom,eeprom2 { + cell-index = <2>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1I>; + cam_vaf-supply = <&L5I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_ultra_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", "cam_vaf", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-load-current = <20000 50000 103000 0 50000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_ultra + &cam_ultra_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_ultra + &cam_ultra_suspend_mclk>; + gpios = <&tlmm 101 0>, + <&tlmm 60 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_ultra: qcom,actuator2 { + cell-index = <2>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L5I>; + cam_vio-supply = <&L4I>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000>; + rgltr-max-voltage = <2808000 1800000>; + rgltr-load-current = <103000 20000>; + }; + + //Ultra + qcom,cam-sensor2 { + cell-index = <2>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <2>; + eeprom-src = <&eeprom_ultra>; + actuator-src = <&actuator_ultra>; + led-flash-src = <&led_flash_ultra>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L1I>; + cam_vaf-supply = <&L5I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_ultra_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", "cam_vaf", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 2808000 0 2800000>; + rgltr-load-current = <20000 50000 103000 0 50000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_ultra + &cam_ultra_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_ultra + &cam_ultra_suspend_mclk>; + gpios = <&tlmm 101 0>, + <&tlmm 60 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + +}; + +&cam_cci1 { + //FRONT SubDev + eeprom_front: qcom,eeprom1 { + cell-index = <1>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L3J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L5J>; + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2808000>; + rgltr-load-current = <20000 10000 0 103000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_front + &cam_front_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_front + &cam_front_suspend_mclk>; + gpios = <&tlmm 104 0>, + <&tlmm 108 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK4_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor1 { + cell-index = <1>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <4>; + eeprom-src = <&eeprom_front>; + sensor-position-roll = <270>; + sensor-position-pitch = <0>; + sensor-position-yaw = <0>; + cam_vio-supply = <&L3J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&L5J>; + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana"; + rgltr-cntrl-support; + aon-user; + rgltr-min-voltage = <1800000 1104000 0 2808000>; + rgltr-max-voltage = <1800000 1104000 0 2808000>; + rgltr-load-current = <20000 10000 0 103000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_active_front + &cam_front_active_mclk>; + pinctrl-1 = <&cam_sensor_suspend_front + &cam_front_suspend_mclk>; + gpios = <&tlmm 104 0>, + <&tlmm 108 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK4_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //TELE SubDev + eeprom_tele: qcom,eeprom3 { + cell-index = <3>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + ois_tele: qcom,ois3 { + cell-index = <3>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_tele: qcom,actuator3 { + cell-index = <3>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L6I>; + cam_vio-supply = <&L4I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vaf", "cam_vio" ,"cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000 2808000>; + rgltr-max-voltage = <2808000 1800000 2808000>; + rgltr-load-current = <103000 20000 103000>; + }; + + + //TELE + qcom,cam-sensor3 { + cell-index = <3>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <3>; + eeprom-src = <&eeprom_tele>; + actuator-src = <&actuator_tele>; + led-flash-src = <&led_flash_tele>; + ois-src = <&ois_tele>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L4I>; + cam_vdig-supply = <&L2I>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_tele_avdd_ldo>; + cam_vaf-supply = <&L6I>; + cam_v_custom1-supply = <&L7I>; //OIS AVDD + regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana","cam_vaf","cam_v_custom1"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-max-voltage = <1800000 1152000 0 2904000 2808000 2808000>; + rgltr-load-current = <10000 50000 0 35000 103000 103000>; + gpio-no-mux = <0>; + gpios = <&tlmm 100 0>, + <&tlmm 128 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 = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; +}; diff --git a/qcom/camera/unicorn-sm8450-camera-sensor.dts b/qcom/camera/unicorn-sm8450-camera-sensor.dts new file mode 100644 index 00000000..8e172fee --- /dev/null +++ b/qcom/camera/unicorn-sm8450-camera-sensor.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include +#include +#include + +#include "unicorn-sm8450-camera-sensor.dtsi" +/ { + model = "Qualcomm Technologies, Inc. 8450 unicorn"; + compatible = "qcom,waipio", "qcom,waipiop"; + qcom,msm-id = <457 0x10000>, <482 0x10000>, <457 0x20000>, <482 0x20000>; + qcom,board-id = <0x10008 0>; + xiaomi,miboard-id = <0x8 0>; +}; diff --git a/qcom/camera/unicorn-sm8450-camera-sensor.dtsi b/qcom/camera/unicorn-sm8450-camera-sensor.dtsi new file mode 100644 index 00000000..74b911d1 --- /dev/null +++ b/qcom/camera/unicorn-sm8450-camera-sensor.dtsi @@ -0,0 +1,736 @@ +#include + +&tlmm { + cam_sensor_active_rst0: cam_sensor_active_rst0 { + /* RESET REAR */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + + config { + pins = "gpio126"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst0: cam_sensor_suspend_rst0 { + /* RESET REAR */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + + config { + pins = "gpio126"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_rst5: cam_sensor_active_rst5 { + /* RESET 5 */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + + config { + pins = "gpio127"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst5: cam_sensor_suspend_rst5 { + /* RESET 5 */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + + config { + pins = "gpio127"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_front_vdig_active: cam_sensor_front_vdig_active { + /* FRONT DVDD */ + mux { + pins = "gpio44"; + function = "gpio"; + }; + + config { + pins = "gpio44"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_front_vdig_suspend: cam_sensor_front_vdig_suspend { + /* FRONT DVDD */ + mux { + pins = "gpio44"; + function = "gpio"; + }; + + config { + pins = "gpio44"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_front_avdd_active: cam_sensor_front_avdd_active { + /* FRONT AVDD */ + mux { + pins = "gpio68"; + function = "gpio"; + }; + + config { + pins = "gpio68"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_front_avdd_suspend: cam_sensor_front_avdd_suspend { + /* FRONT AVDD */ + mux { + pins = "gpio68"; + function = "gpio"; + }; + + config { + pins = "gpio68"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_rst7: cam_sensor_active_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + + config { + pins = "gpio128"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst7: cam_sensor_suspend_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + + config { + pins = "gpio128"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_ultra_avdd_active: cam_sensor_ultra_avdd_active { + /* SENSOR MACRO AVDD ENABLE */ + mux { + pins = "gpio6"; + function = "gpio"; + }; + + config { + pins = "gpio6"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_ultra_avdd_suspend: cam_sensor_ultra_avdd_suspend { + /* SENSOR MACRO AVDD DISABLE */ + mux { + pins = "gpio6"; + function = "gpio"; + }; + + config { + pins = "gpio6"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_tele_avdd_active: cam_sensor_tele_avdd_active { + /* SENSOR MACRO AVDD ENABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + + config { + pins = "gpio71"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_tele_avdd_suspend: cam_sensor_tele_avdd_suspend { + /* SENSOR MACRO AVDD DISABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + + config { + pins = "gpio71"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_wide: cam_sensor_active_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_wide: cam_sensor_suspend_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; +}; + +&pm8350c_switch0 { + qcom,led-mask = <1>; /* Channels 1 & 4 */ + qcom,symmetry-en; +}; + +&soc { + led_flash_wide: qcom,camera-flash@1 { + cell-index = <1>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + led_flash_ultra: qcom,camera-flash@2 { + cell-index = <2>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + led_flash_tele: qcom,camera-flash@3 { + cell-index = <3>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + + camera_front_vdig_ldo: gpio-regulator@1 { + compatible = "regulator-fixed"; + reg = <0x01 0x00>; + regulator-name = "camera_front_vdig_ldo"; + regulator-min-microvolt = <1104000>; + regulator-max-microvolt = <1104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 44 0>; + pinctrl-names = "front_vdig_active", "front_vdig_suspend"; + pinctrl-0 = <&cam_sensor_front_vdig_active + &cam_sensor_front_vdig_suspend>; + vin-supply = <&S12B>; + }; + + camera_front_avdd_ldo: gpio-regulator@2 { + compatible = "regulator-fixed"; + reg = <0x02 0x00>; + regulator-name = "camera_front_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 68 0>; + pinctrl-names = "front_avdd_active", "front_avdd_suspend"; + pinctrl-0 = <&cam_sensor_front_avdd_active + &cam_sensor_front_avdd_suspend>; + }; + + CAMERA_ULTRA_AVDD: gpio-regulator@3 { + compatible = "regulator-fixed"; + reg = <0x03 0x00>; + regulator-name = "CAMERA_ULTRA_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 6 0>; + pinctrl-names = "ultra_avdd_active", "ultra_avdd_suspend"; + pinctrl-0 = <&cam_sensor_ultra_avdd_active + &cam_sensor_ultra_avdd_suspend>; + vin-supply = <&BOB>; + }; + + CAMERA_TELE_AVDD: gpio-regulator@4 { + compatible = "regulator-fixed"; + reg = <0x04 0x00>; + regulator-name = "CAMERA_TELE_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 71 0>; + pinctrl-names = "tele_avdd_active", "tele_avdd_suspend"; + pinctrl-0 = <&cam_sensor_tele_avdd_active + &cam_sensor_tele_avdd_suspend>; + vin-supply = <&BOB>; + }; + + camera_wide_avdd_ldo: gpio-regulator@5 { + compatible = "regulator-fixed"; + reg = <0x05 0x00>; + regulator-name = "camera_wide_avdd_ldo"; + regulator-min-microvolt = <1860000>; + regulator-max-microvolt = <1860000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 70 0>; + //vin-supply = <&S1C>; + }; + + camera_wide_dvdd_ldo: gpio-regulator@6 { + compatible = "regulator-fixed"; + reg = <0x06 0x00>; + regulator-name = "camera_wide_dvdd_ldo"; + regulator-min-microvolt = <1250000>; + regulator-max-microvolt = <1250000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 2 0>; + vin-supply = <&S12B>; + }; + + qcom,cam-res-mgr { + compatible = "qcom,cam-res-mgr"; + gpios-shared-pinctrl = <427 371 303 403>; + shared-pctrl-gpio-names = "cam_wide", "cam_wide", "cam_wide", "cam_wide"; + pinctrl-names = "cam_wide_active", "cam_wide_suspend"; + pinctrl-0 = <&cam_sensor_active_rst0 + &cam_sensor_active_wide + &cam_sensor_mclk2_active>; + pinctrl-1 = <&cam_sensor_suspend_rst0 + &cam_sensor_suspend_wide + &cam_sensor_mclk2_suspend>; + status = "ok"; + }; +}; + +&cam_cci0 +{ + ois_wide: qcom,ois0 { + cell-index = <0>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_triple_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vaf-supply = <&L7J>; + cam_vio-supply = <&L5J>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <3104000 1800000>; + rgltr-max-voltage = <3104000 1800000>; + rgltr-load-current = <103000 155000>; + }; + + eeprom_triple_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + eeprom_front: qcom,eeprom1 { + cell-index = <1>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_front_vdig_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_front_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst5>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst5>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET5"; + cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + eeprom_triple_ultra: qcom,eeprom2 { + cell-index = <2>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor0 { + cell-index = <0>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <2>; + eeprom-src = <&eeprom_triple_wide>; + actuator-src = <&actuator_triple_wide>; + led-flash-src = <&led_flash_wide>; + ois-src = <&ois_wide>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor1 { + cell-index = <1>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <3>; + eeprom-src = <&eeprom_front>; + sensor-position-roll = <270>; + sensor-position-pitch = <0>; + sensor-position-yaw = <0>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_front_vdig_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_front_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst5>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst5>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET5"; + cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //Ultra + qcom,cam-sensor2 { + cell-index = <2>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <0>; + eeprom-src = <&eeprom_triple_ultra>; + led-flash-src = <&led_flash_ultra>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + +}; + +&cam_cci1 { + actuator_triple_tele: qcom,actuator1 { + cell-index = <1>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L4J>; + cam_vio-supply = <&L5J>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000>; + rgltr-max-voltage = <2808000 1800000>; + rgltr-load-current = <100000 5000>; + }; + + eeprom_triple_tele: qcom,eeprom3 { + cell-index = <3>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_TELE_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk0_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk0_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 100 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET7"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //tele + qcom,cam-sensor3 { + cell-index = <3>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <1>; + eeprom-src = <&eeprom_triple_tele>; + actuator-src = <&actuator_triple_tele>; + led-flash-src = <&led_flash_tele>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_TELE_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk0_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk0_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 100 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET7"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; +}; diff --git a/qcom/camera/unicorn-sm8475-camera-sensor.dts b/qcom/camera/unicorn-sm8475-camera-sensor.dts new file mode 100644 index 00000000..c81f2f6a --- /dev/null +++ b/qcom/camera/unicorn-sm8475-camera-sensor.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include +#include +#include + +#include "unicorn-sm8475-camera-sensor.dtsi" +/ { + model = "Qualcomm Technologies, Inc. 8475 unicorn"; + compatible = "qcom,cape", "qcom,capep"; + qcom,msm-id = <530 0x10000>, <531 0x10000>, <540 0x10000>; + qcom,board-id = <0x10008 0>; + xiaomi,miboard-id = <0x8 0>; +}; \ No newline at end of file diff --git a/qcom/camera/unicorn-sm8475-camera-sensor.dtsi b/qcom/camera/unicorn-sm8475-camera-sensor.dtsi new file mode 100644 index 00000000..bbbfd273 --- /dev/null +++ b/qcom/camera/unicorn-sm8475-camera-sensor.dtsi @@ -0,0 +1,925 @@ +#include +#include + +&cci0_active { + config { + pins = "gpio110","gpio111"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci0_suspend { + config { + pins = "gpio110","gpio111"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci1_active { + config { + pins = "gpio112","gpio113"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci1_suspend { + config { + pins = "gpio112","gpio113"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci2_active { + config { + pins = "gpio114","gpio115"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci2_suspend { + config { + pins = "gpio114","gpio115"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + +&cci3_active { + config { + pins = "gpio208","gpio209"; + bias-pull-up; /* PULL UP*/ + drive-strength = <4>; /* 4 MA */ + qcom,apps; + }; + }; + +&cci3_suspend { + config { + pins = "gpio208","gpio209"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + qcom,remote; + }; + + }; + +&tlmm { + cam_sensor_active_rst0: cam_sensor_active_rst0 { + /* RESET REAR */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + + config { + pins = "gpio126"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst0: cam_sensor_suspend_rst0 { + /* RESET REAR */ + mux { + pins = "gpio126"; + function = "gpio"; + }; + + config { + pins = "gpio126"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_rst5: cam_sensor_active_rst5 { + /* RESET 5 */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + + config { + pins = "gpio127"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst5: cam_sensor_suspend_rst5 { + /* RESET 5 */ + mux { + pins = "gpio127"; + function = "gpio"; + }; + + config { + pins = "gpio127"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_front_vdig_active: cam_sensor_front_vdig_active { + /* FRONT DVDD */ + mux { + pins = "gpio44"; + function = "gpio"; + }; + + config { + pins = "gpio44"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_front_vdig_suspend: cam_sensor_front_vdig_suspend { + /* FRONT DVDD */ + mux { + pins = "gpio44"; + function = "gpio"; + }; + + config { + pins = "gpio44"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_front_avdd_active: cam_sensor_front_avdd_active { + /* FRONT AVDD */ + mux { + pins = "gpio64"; + function = "gpio"; + }; + + config { + pins = "gpio64"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_front_avdd_suspend: cam_sensor_front_avdd_suspend { + /* FRONT AVDD */ + mux { + pins = "gpio64"; + function = "gpio"; + }; + + config { + pins = "gpio64"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_rst7: cam_sensor_active_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + + config { + pins = "gpio128"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_rst7: cam_sensor_suspend_rst7 { + /* RESET REARAUX */ + mux { + pins = "gpio128"; + function = "gpio"; + }; + + config { + pins = "gpio128"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_ultra_avdd_active: cam_sensor_ultra_avdd_active { + /* SENSOR MACRO AVDD ENABLE */ + mux { + pins = "gpio6"; + function = "gpio"; + }; + + config { + pins = "gpio6"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_ultra_avdd_suspend: cam_sensor_ultra_avdd_suspend { + /* SENSOR MACRO AVDD DISABLE */ + mux { + pins = "gpio6"; + function = "gpio"; + }; + + config { + pins = "gpio6"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_tele_avdd_active: cam_sensor_tele_avdd_active { + /* SENSOR MACRO AVDD ENABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + + config { + pins = "gpio71"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_tele_avdd_suspend: cam_sensor_tele_avdd_suspend { + /* SENSOR MACRO AVDD DISABLE */ + mux { + pins = "gpio71"; + function = "gpio"; + }; + + config { + pins = "gpio71"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + cam_sensor_active_wide: cam_sensor_active_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-disable; /* No PULL */ + drive-strength = <2>; /* 2 MA */ + }; + }; + + cam_sensor_suspend_wide: cam_sensor_suspend_wide { + mux { + pins = "gpio70", "gpio2"; + function = "gpio"; + }; + + config { + pins = "gpio70", "gpio2"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <2>; /* 2 MA */ + output-low; + }; + }; + + //tele + cam_sensor_mclk0_active: cam_sensor_mclk0_active { + /* MCLK0 */ + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk0_suspend: cam_sensor_mclk0_suspend { + /* MCLK0 */ + mux { + pins = "gpio100"; + function = "cam_mclk"; + }; + + config { + pins = "gpio100"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //ultra + cam_sensor_mclk1_active: cam_sensor_mclk1_active { + /* MCLK1 */ + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend { + /* MCLK1 */ + mux { + pins = "gpio101"; + function = "cam_mclk"; + }; + + config { + pins = "gpio101"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //wide + cam_sensor_mclk2_active: cam_sensor_mclk2_active { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend { + /* MCLK2 */ + mux { + pins = "gpio102"; + function = "cam_mclk"; + }; + + config { + pins = "gpio102"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + //front + cam_sensor_mclk5_active: cam_sensor_mclk5_active { + /* MCLK5 */ + mux { + pins = "gpio105"; + function = "cam_mclk"; + }; + + config { + pins = "gpio105"; + bias-disable; /* No PULL */ + drive-strength = <4>; /* 4 MA */ + }; + }; + + cam_sensor_mclk5_suspend: cam_sensor_mclk5_suspend { + /* MCLK5 */ + mux { + pins = "gpio105"; + function = "cam_mclk"; + }; + + config { + pins = "gpio105"; + bias-pull-down; /* PULL DOWN */ + drive-strength = <4>; /* 4 MA */ + }; + }; + +}; + +&pm8350c_switch0 { + qcom,led-mask = <1>; /* Channels 1 & 4 */ + qcom,symmetry-en; +}; + +&cam_csiphy2{ + compatible = "qcom,csiphy-v2.1.3-xiaomi-l2s", "qcom,csiphy"; +}; + +&soc { + led_flash_wide: qcom,camera-flash@1 { + cell-index = <1>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + led_flash_ultra: qcom,camera-flash@2 { + cell-index = <2>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + led_flash_tele: qcom,camera-flash@3 { + cell-index = <3>; + compatible = "qcom,camera-flash"; + flash-source = <&pm8350c_flash0>; + torch-source = <&pm8350c_torch0>; + switch-source = <&pm8350c_switch0>; + status = "ok"; + }; + + + camera_front_vdig_ldo: gpio-regulator@1 { + compatible = "regulator-fixed"; + reg = <0x01 0x00>; + regulator-name = "camera_front_vdig_ldo"; + regulator-min-microvolt = <1104000>; + regulator-max-microvolt = <1104000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 44 0>; + pinctrl-names = "front_vdig_active", "front_vdig_suspend"; + pinctrl-0 = <&cam_sensor_front_vdig_active + &cam_sensor_front_vdig_suspend>; + vin-supply = <&S12B>; + }; + + camera_front_avdd_ldo: gpio-regulator@2 { + compatible = "regulator-fixed"; + reg = <0x02 0x00>; + regulator-name = "camera_front_avdd_ldo"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 64 0>; + pinctrl-names = "front_avdd_active", "front_avdd_suspend"; + pinctrl-0 = <&cam_sensor_front_avdd_active + &cam_sensor_front_avdd_suspend>; + }; + + CAMERA_ULTRA_AVDD: gpio-regulator@3 { + compatible = "regulator-fixed"; + reg = <0x03 0x00>; + regulator-name = "CAMERA_ULTRA_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 6 0>; + pinctrl-names = "ultra_avdd_active", "ultra_avdd_suspend"; + pinctrl-0 = <&cam_sensor_ultra_avdd_active + &cam_sensor_ultra_avdd_suspend>; + vin-supply = <&BOB>; + }; + + CAMERA_TELE_AVDD: gpio-regulator@4 { + compatible = "regulator-fixed"; + reg = <0x04 0x00>; + regulator-name = "CAMERA_TELE_AVDD"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 71 0>; + pinctrl-names = "tele_avdd_active", "tele_avdd_suspend"; + pinctrl-0 = <&cam_sensor_tele_avdd_active + &cam_sensor_tele_avdd_suspend>; + vin-supply = <&BOB>; + }; + + camera_wide_avdd_ldo: gpio-regulator@5 { + compatible = "regulator-fixed"; + reg = <0x05 0x00>; + regulator-name = "camera_wide_avdd_ldo"; + regulator-min-microvolt = <1860000>; + regulator-max-microvolt = <1860000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 70 0>; + //vin-supply = <&S1C>; + }; + + camera_wide_dvdd_ldo: gpio-regulator@6 { + compatible = "regulator-fixed"; + reg = <0x06 0x00>; + regulator-name = "camera_wide_dvdd_ldo"; + regulator-min-microvolt = <1250000>; + regulator-max-microvolt = <1250000>; + regulator-enable-ramp-delay = <100>; + enable-active-high; + gpio = <&tlmm 2 0>; + vin-supply = <&S12B>; + }; + + qcom,cam-res-mgr { + compatible = "qcom,cam-res-mgr"; + gpios-shared-pinctrl = <427 371 303 403>; + shared-pctrl-gpio-names = "cam_wide", "cam_wide", "cam_wide", "cam_wide"; + pinctrl-names = "cam_wide_active", "cam_wide_suspend"; + pinctrl-0 = <&cam_sensor_active_rst0 + &cam_sensor_active_wide + &cam_sensor_mclk2_active>; + pinctrl-1 = <&cam_sensor_suspend_rst0 + &cam_sensor_suspend_wide + &cam_sensor_mclk2_suspend>; + status = "ok"; + }; +}; + +&cam_cci0 +{ + ois_wide: qcom,ois0 { + cell-index = <0>; + reg = <0x0>; + compatible = "qcom,ois"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + actuator_triple_wide: qcom,actuator0 { + cell-index = <0>; + compatible = "qcom,actuator"; + cci-master = <1>; + cam_vaf-supply = <&L7J>; + cam_vio-supply = <&L5J>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <3104000 1800000>; + rgltr-max-voltage = <3104000 1800000>; + rgltr-load-current = <103000 155000>; + }; + + eeprom_triple_wide: qcom,eeprom0 { + cell-index = <0>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + eeprom_front: qcom,eeprom1 { + cell-index = <1>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_front_vdig_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_front_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst5>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst5>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET5"; + cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + eeprom_triple_ultra: qcom,eeprom2 { + cell-index = <2>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor0 { + cell-index = <0>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <2>; + eeprom-src = <&eeprom_triple_wide>; + actuator-src = <&actuator_triple_wide>; + led-flash-src = <&led_flash_wide>; + ois-src = <&ois_wide>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_wide_dvdd_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_wide_avdd_ldo>; + cam_v_custom1-supply = <&L6J>; + cam_vaf-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana", "cam_v_custom1", "cam_vaf"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-max-voltage = <1800000 1250000 0 1860000 3104000 3104000>; + rgltr-load-current = <155000 680000 0 50000 103000 103000>; + use-shared-clk; + gpio-no-mux = <0>; + gpios = <&tlmm 102 0>, + <&tlmm 126 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 = <1>; + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + qcom,cam-sensor1 { + cell-index = <1>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <3>; + eeprom-src = <&eeprom_front>; + sensor-position-roll = <270>; + sensor-position-pitch = <0>; + sensor-position-yaw = <0>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&camera_front_vdig_ldo>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&camera_front_avdd_ldo>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1104000 0 2800000>; + rgltr-max-voltage = <1800000 1104000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk5_active + &cam_sensor_active_rst5>; + pinctrl-1 = <&cam_sensor_mclk5_suspend + &cam_sensor_suspend_rst5>; + gpios = <&tlmm 105 0>, + <&tlmm 127 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK5", + "CAM_RESET5"; + cci-device = <1>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK5_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //Ultra + qcom,cam-sensor2 { + cell-index = <2>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <0>; + eeprom-src = <&eeprom_triple_ultra>; + led-flash-src = <&led_flash_ultra>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L2J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_ULTRA_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + 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 101 0>, + <&tlmm 24 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-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + +}; + +&cam_cci1 { + actuator_triple_tele: qcom,actuator1 { + cell-index = <1>; + compatible = "qcom,actuator"; + cci-master = <0>; + cam_vaf-supply = <&L4J>; + cam_vio-supply = <&L5J>; + regulator-names = "cam_vaf", "cam_vio"; + rgltr-cntrl-support; + rgltr-min-voltage = <2808000 1800000>; + rgltr-max-voltage = <2808000 1800000>; + rgltr-load-current = <100000 5000>; + }; + + eeprom_triple_tele: qcom,eeprom3 { + cell-index = <3>; + compatible = "qcom,eeprom"; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_TELE_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk0_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk0_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 100 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET7"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; + + //tele + qcom,cam-sensor3 { + cell-index = <3>; + compatible = "qcom,cam-sensor"; + csiphy-sd-index = <1>; + eeprom-src = <&eeprom_triple_tele>; + actuator-src = <&actuator_triple_tele>; + led-flash-src = <&led_flash_tele>; + sensor-position-roll = <90>; + sensor-position-pitch = <0>; + sensor-position-yaw = <180>; + cam_vio-supply = <&L5J>; + cam_vdig-supply = <&L1J>; + cam_clk-supply = <&cam_cc_titan_top_gdsc>; + cam_vana-supply = <&CAMERA_TELE_AVDD>; + //cam_v_custom1-supply = <&L7J>; + regulator-names = "cam_vio", "cam_vdig", + "cam_clk", "cam_vana"; + rgltr-cntrl-support; + rgltr-min-voltage = <1800000 1056000 0 2800000>; + rgltr-max-voltage = <1800000 1056000 0 2800000>; + rgltr-load-current = <5000 680000 0 35000>; + gpio-no-mux = <0>; + pinctrl-names = "cam_default", "cam_suspend"; + pinctrl-0 = <&cam_sensor_mclk0_active + &cam_sensor_active_rst7>; + pinctrl-1 = <&cam_sensor_mclk0_suspend + &cam_sensor_suspend_rst7>; + gpios = <&tlmm 100 0>, + <&tlmm 128 0>; + gpio-reset = <1>; + gpio-req-tbl-num = <0 1>; + gpio-req-tbl-flags = <1 0>; + gpio-req-tbl-label = "CAMIF_MCLK0", + "CAM_RESET7"; + //cci-device = <0>; + cci-master = <0>; + clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; + clock-names = "cam_clk"; + clock-cntl-level = "nominal"; + clock-rates = <19200000>; + status = "ok"; + }; +}; \ No newline at end of file