ARM: dts: msm: Initial camera sensor dtsi files for Tuna

Initial sensor dtsi files for Tuna MTP/CDP/RCM with:
- Peripherals: CCI0/CCI1,
- CSIPHY instances: 0 to 4,
- Sensors: IMX766/IMX858/JN1 nodes,
- ASC sensor: OV32C node,
- TPG instances: 1 to 3,
- MCLK/RESET GPIO pin controls

CRs-Fixed: 3940535.

Change-Id: Ie2536cbf26380c152300ce122865d71e86c40a66
Signed-off-by: Shadul Shaikh <quic_shaduls@quicinc.com>
This commit is contained in:
Shadul Shaikh
2024-09-27 23:16:11 +05:30
parent 7c44e2a721
commit faca95135f
5 changed files with 1287 additions and 0 deletions

View File

@@ -5,3 +5,6 @@ dtbo-$(CONFIG_ARCH_SUN) += sun-camera-sensor-mtp.dtbo \
sun-camera-sensor-qrd.dtbo
dtbo-$(CONFIG_ARCH_TUNA) += tuna-camera.dtbo
dtbo-$(CONFIG_ARCH_TUNA) += tuna-camera-sensor-mtp.dtbo \
tuna-camera-sensor-cdp.dtbo

View File

@@ -0,0 +1,22 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-tuna.h>
#include <dt-bindings/clock/qcom,camcc-sun.h>
#include <dt-bindings/clock/qcom,cambistmclkcc-sun.h>
#include <dt-bindings/interconnect/qcom,tuna.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "tuna-camera-sensor-mtp.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Tuna CDP/RCM";
compatible = "qcom,tuna-cdp", "qcom,tuna", "qcom,cdp", "qcom,rcm", "qcom,tuna-rcm";
qcom,msm-id = <655 0x10000>, <655 0x20000>, <681 0x10000>, <681 0x20000>;
qcom,board-id = <1 0>, <21 0>, <21 1>;
};

View File

@@ -0,0 +1,22 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-tuna.h>
#include <dt-bindings/clock/qcom,camcc-sun.h>
#include <dt-bindings/clock/qcom,cambistmclkcc-sun.h>
#include <dt-bindings/interconnect/qcom,tuna.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "tuna-camera-sensor-mtp.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Tuna MTP";
compatible = "qcom,tuna-mtp", "qcom,tuna", "qcom,mtp";
qcom,msm-id = <655 0x10000>, <655 0x20000>, <681 0x10000>, <681 0x20000>;
qcom,board-id = <8 0>, <8 1>, <8 2>;
};

414
tuna-camera-sensor-mtp.dtsi Normal file
View File

@@ -0,0 +1,414 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include <dt-bindings/msm-camera.h>
&soc {
led_flash_triple_rear_wide: qcom,camera-flash1 {
cell-index = <1>;
compatible = "qcom,camera-flash";
flash-source = <&pmxr2230_flash0 &pmxr2230_flash1>;
torch-source = <&pmxr2230_torch0 &pmxr2230_torch1>;
switch-source = <&pmxr2230_switch2>;
status = "ok";
};
led_flash_triple_rear_ultrawide: qcom,camera-flash2 {
cell-index = <2>;
compatible = "qcom,camera-flash";
flash-source = <&pmxr2230_flash0 &pmxr2230_flash1>;
torch-source = <&pmxr2230_torch0 &pmxr2230_torch1>;
switch-source = <&pmxr2230_switch2>;
status = "ok";
};
led_flash_triple_rear_tele: qcom,camera-flash3 {
cell-index = <3>;
compatible = "qcom,camera-flash";
flash-source = <&pmxr2230_flash0 &pmxr2230_flash1>;
torch-source = <&pmxr2230_torch0 &pmxr2230_torch1>;
switch-source = <&pmxr2230_switch2>;
status = "ok";
};
qcom,cam-res-mgr {
compatible = "qcom,cam-res-mgr";
status = "ok";
};
};
&cam_cci0 {
actuator_triple_wide: qcom,actuator2 {
cell-index = <2>;
compatible = "qcom,actuator";
cci-master = <CCI_MASTER_0>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <2800000>;
rgltr-max-voltage = <3000000>;
rgltr-load-current = <103000>;
status = "ok";
};
actuator_triple_uw: qcom,actuator1 {
cell-index = <1>;
compatible = "qcom,actuator";
cci-master = <CCI_MASTER_1>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <2800000>;
rgltr-max-voltage = <3000000>;
rgltr-load-current = <103360>;
status = "ok";
};
ois_wide: qcom,ois0 {
cell-index = <2>;
compatible = "qcom,ois";
cci-master = <CCI_MASTER_0>;
cam_vio-supply = <&L5N>;
cam_vaf-supply = <&L7M>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
regulator-names = "cam_vio","cam_vaf", "cam_clk";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 2800000 0>;
rgltr-max-voltage = <1980000 3000000 0>;
rgltr-load-current = <3500 214290 0>;
status = "ok";
};
eeprom_wide: qcom,eeprom2 {
cell-index = <2>;
compatible = "qcom,eeprom";
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L1N>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L6M>;
cam_vaf-supply = <&L7M>;
cam_v_custom1-supply = <&L3N>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana",
"cam_vaf", "cam_v_custom1";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1104000 0 2800000 2800000 1800000>;
rgltr-max-voltage = <1980000 1200000 0 2900000 3000000 1900000>;
rgltr-load-current = <3500 913200 0 91430 103000 63100>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk0_active
&cam_sensor_active_rst0>;
pinctrl-1 = <&cam_sensor_mclk0_suspend
&cam_sensor_suspend_rst0>;
gpios = <&tlmm 64 0>,
<&tlmm 37 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK0",
"CAM_RESET0";
cci-master = <CCI_MASTER_0>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK0_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
eeprom_uw: qcom,eeprom1 {
cell-index = <1>;
compatible = "qcom,eeprom";
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L1M>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L3M>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana",
"cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1104000 0 2800000 2800000>;
rgltr-max-voltage = <1980000 1200000 0 2900000 3000000>;
rgltr-load-current = <4060 523640 0 107500 103360>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk1_active
&cam_sensor_active_rst1>;
pinctrl-1 = <&cam_sensor_mclk1_suspend
&cam_sensor_suspend_rst1>;
gpios = <&tlmm 65 0>,
<&tlmm 28 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK1",
"CAM_RESET1";
cci-master = <CCI_MASTER_1>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK1_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
/* IMX766 + OIS (Wide) */
qcom,cam-sensor2 {
cell-index = <2>;
compatible = "qcom,cam-sensor";
csiphy-sd-index = <0>;
sensor-position-roll = <90>;
sensor-position-pitch = <0>;
sensor-position-yaw = <180>;
eeprom-src = <&eeprom_wide>;
ois-src = <&ois_wide>;
actuator-src = <&actuator_triple_wide>;
led-flash-src = <&led_flash_triple_rear_wide>;
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L1N>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L6M>;
cam_vaf-supply = <&L7M>;
cam_v_custom1-supply = <&L3N>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana",
"cam_vaf", "cam_v_custom1";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1104000 0 2800000 2800000 1800000>;
rgltr-max-voltage = <1980000 1200000 0 2900000 3000000 1900000>;
rgltr-load-current = <3500 913200 0 91430 103000 63100>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk0_active
&cam_sensor_active_rst0>;
pinctrl-1 = <&cam_sensor_mclk0_suspend
&cam_sensor_suspend_rst0>;
gpios = <&tlmm 64 0>,
<&tlmm 37 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK0",
"CAM_RESET0";
cci-master = <CCI_MASTER_0>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK0_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
/* IMX858 (UWide) */
qcom,cam-sensor1 {
cell-index = <1>;
compatible = "qcom,cam-sensor";
csiphy-sd-index = <1>;
sensor-position-roll = <90>;
sensor-position-pitch = <0>;
sensor-position-yaw = <180>;
eeprom-src = <&eeprom_uw>;
actuator-src = <&actuator_triple_uw>;
led-flash-src = <&led_flash_triple_rear_ultrawide>;
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L1M>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L3M>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk", "cam_vana",
"cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1104000 0 2800000 2800000>;
rgltr-max-voltage = <1980000 1200000 0 2900000 3000000>;
rgltr-load-current = <4060 523640 0 107500 103360>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk1_active
&cam_sensor_active_rst1>;
pinctrl-1 = <&cam_sensor_mclk1_suspend
&cam_sensor_suspend_rst1>;
gpios = <&tlmm 65 0>,
<&tlmm 28 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK1",
"CAM_RESET1";
cci-master = <CCI_MASTER_1>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK1_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
};
&cam_cci1 {
actuator_triple_tele: qcom,actuator3{
cell-index = <3>;
compatible = "qcom,actuator";
cci-master = <CCI_MASTER_0>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <2800000>;
rgltr-max-voltage = <3000000>;
rgltr-load-current = <103040>;
status = "ok";
};
eeprom_tele: qcom,eeprom3 {
cell-index = <3>;
compatible = "qcom,eeprom";
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L2M>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L4M>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk",
"cam_vana", "cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1056000 0 2800000 2800000>;
rgltr-max-voltage = <1980000 1150000 0 2900000 3000000>;
rgltr-load-current = <4500 266330 0 69000 103040>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk3_active
&cam_sensor_active_rst2>;
pinctrl-1 = <&cam_sensor_mclk3_suspend
&cam_sensor_suspend_rst2>;
gpios = <&tlmm 67 0>,
<&tlmm 180 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK3",
"CAM_RESET2";
cci-master = <CCI_MASTER_0>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK3_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
/* JN1 (Tele) */
qcom,cam-sensor3 {
cell-index = <3>;
compatible = "qcom,cam-sensor";
csiphy-sd-index = <3>;
sensor-position-roll = <90>;
sensor-position-pitch = <0>;
sensor-position-yaw = <180>;
eeprom-src = <&eeprom_tele>;
actuator-src = <&actuator_triple_tele>;
led-flash-src = <&led_flash_triple_rear_tele>;
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L2M>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L4M>;
cam_vaf-supply = <&L7M>;
regulator-names = "cam_vio", "cam_vdig", "cam_clk",
"cam_vana", "cam_vaf";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1056000 0 2800000 2800000>;
rgltr-max-voltage = <1980000 1150000 0 2900000 3000000>;
rgltr-load-current = <4500 266330 0 69000 103040>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk3_active
&cam_sensor_active_rst2>;
pinctrl-1 = <&cam_sensor_mclk3_suspend
&cam_sensor_suspend_rst2>;
gpios = <&tlmm 67 0>,
<&tlmm 180 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK3",
"CAM_RESET2";
cci-master = <CCI_MASTER_0>;
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK3_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
};
&qupv3_se8_i2c {
status = "ok";
qcom,high-perf;
qcom,clk-freq-out = <1000000>;
qcom,pm-ctrl-client;
eeprom_asc_front: qcom,eeprom1 {
cell-index = <4>;
reg = <0x58>;
compatible = "qcom,cam-i2c-eeprom";
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L2N>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L6N>;
regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana";
rgltr-cntrl-support;
rgltr-min-voltage = <1800000 1104000 0 2800000>;
rgltr-max-voltage = <1980000 1150000 0 2900000>;
rgltr-load-current = <3560 283910 0 50360>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk4_active
&cam_sensor_active_rst3>;
pinctrl-1 = <&cam_sensor_mclk4_suspend
&cam_sensor_suspend_rst3>;
gpios = <&tlmm 68 0>,
<&tlmm 3 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK4",
"CAM_RESET3";
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK4_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
/* OV32C4C + ASC (Front) */
qcom,cam-sensor1 {
cell-index = <4>;
reg = <0x22>;
compatible = "qcom,cam-i2c-sensor";
csiphy-sd-index = <4>;
sensor-position-roll = <90>;
sensor-position-pitch = <0>;
sensor-position-yaw = <0>;
eeprom-src = <&eeprom_asc_front>;
cam_vio-supply = <&L5N>;
cam_vdig-supply = <&L2N>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
cam_vana-supply = <&L6N>;
regulator-names = "cam_vio", "cam_vdig","cam_clk", "cam_vana";
rgltr-cntrl-support;
aon-camera-id = <AON_CAM1>;
rgltr-min-voltage = <1800000 1104000 0 2800000>;
rgltr-max-voltage = <1980000 1150000 0 2900000>;
rgltr-load-current = <3560 283910 0 50360>;
gpio-no-mux = <0>;
pinctrl-names = "cam_default", "cam_suspend";
pinctrl-0 = <&cam_sensor_mclk4_active
&cam_sensor_active_rst3>;
pinctrl-1 = <&cam_sensor_mclk4_suspend
&cam_sensor_suspend_rst3>;
gpios = <&tlmm 68 0>,
<&tlmm 3 0>;
gpio-reset = <1>;
gpio-req-tbl-num = <0 1>;
gpio-req-tbl-flags = <1 0>;
gpio-req-tbl-label = "CAMIF_MCLK4",
"CAM_RESET3";
clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK4_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "nominal";
clock-rates = <24000000>;
status = "ok";
};
};

View File

@@ -6,6 +6,486 @@
#include <dt-bindings/msm-camera.h>
#include <dt-bindings/arm/msm/qti-smmu-proxy-dt-ids.h>
&tlmm {
cci_i2c_sda0_active: cci_i2c_sda0_active {
mux {
/* CLK, DATA */
pins = "gpio70";
function = "cci_i2c_sda0";
};
config {
pins = "gpio70";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_sda0_suspend: cci_i2c_sda0_suspend {
mux {
/* CLK, DATA */
pins = "gpio70";
function = "cci_i2c_sda0";
};
config {
pins = "gpio70";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_scl0_active: cci_i2c_scl0_active {
mux {
/* CLK, DATA */
pins = "gpio71";
function = "cci_i2c_scl0";
};
config {
pins = "gpio71";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_scl0_suspend: cci_i2c_scl0_suspend {
mux {
/* CLK, DATA */
pins = "gpio71";
function = "cci_i2c_scl0";
};
config {
pins = "gpio71";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_sda1_active: cci_i2c_sda1_active {
mux {
/* CLK, DATA */
pins = "gpio72";
function = "cci_i2c_sda1";
};
config {
pins = "gpio72";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_sda1_suspend: cci_i2c_sda1_suspend {
mux {
/* CLK, DATA */
pins = "gpio72";
function = "cci_i2c_sda1";
};
config {
pins = "gpio72";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_scl1_active: cci_i2c_scl1_active {
mux {
/* CLK, DATA */
pins = "gpio73";
function = "cci_i2c_scl1";
};
config {
pins = "gpio73";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_scl1_suspend: cci_i2c_scl1_suspend {
mux {
/* CLK, DATA */
pins = "gpio73";
function = "cci_i2c_scl1";
};
config {
pins = "gpio73";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_sda2_active: cci_i2c_sda2_active {
mux {
/* CLK, DATA */
pins = "gpio74";
function = "cci_i2c_sda2";
};
config {
pins = "gpio74";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_sda2_suspend: cci_i2c_sda2_suspend {
mux {
/* CLK, DATA */
pins = "gpio74";
function = "cci_i2c_sda2";
};
config {
pins = "gpio74";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_scl2_active: cci_i2c_scl2_active {
mux {
/* CLK, DATA */
pins = "gpio75";
function = "cci_i2c_scl2";
};
config {
pins = "gpio75";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_scl2_suspend: cci_i2c_scl2_suspend {
mux {
/* CLK, DATA */
pins = "gpio75";
function = "cci_i2c_scl2";
};
config {
pins = "gpio75";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_sda3_active: cci_i2c_sda3_active {
mux {
pins = "gpio20";
function = "cci_i2c_sda3";
};
config {
pins = "gpio20";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_sda3_suspend: cci_i2c_sda3_suspend {
mux {
pins = "gpio20";
function = "cci_i2c_sda3";
};
config {
pins = "gpio20";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cci_i2c_scl3_active: cci_i2c_scl3_active {
mux {
pins = "gpio21";
function = "cci_i2c_scl3";
};
config {
pins = "gpio21";
bias-pull-up; /* PULL UP*/
drive-strength = <2>; /* 2 MA */
qcom,i2c_pull;
};
};
cci_i2c_scl3_suspend: cci_i2c_scl3_suspend {
mux {
pins = "gpio21";
function = "cci_i2c_scl3";
};
config {
pins = "gpio21";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk0_active: cam_sensor_mclk0_active {
/* MCLK0 */
mux {
pins = "gpio64";
function = "cam_mclk";
};
config {
pins = "gpio64";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk0_suspend: cam_sensor_mclk0_suspend {
/* MCLK0 */
mux {
pins = "gpio64";
function = "cam_mclk";
};
config {
pins = "gpio64";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk1_active: cam_sensor_mclk1_active {
/* MCLK1 */
mux {
pins = "gpio65";
function = "cam_mclk";
};
config {
pins = "gpio65";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend {
/* MCLK1 */
mux {
pins = "gpio65";
function = "cam_mclk";
};
config {
pins = "gpio65";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk2_active: cam_sensor_mclk2_active {
/* MCLK2 */
mux {
pins = "gpio66";
function = "cam_mclk";
};
config {
pins = "gpio66";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend {
/* MCLK2 */
mux {
pins = "gpio66";
function = "cam_mclk";
};
config {
pins = "gpio66";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk3_active: cam_sensor_mclk3_active {
/* MCLK3 */
mux {
pins = "gpio67";
function = "cam_mclk";
};
config {
pins = "gpio67";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk3_suspend: cam_sensor_mclk3_suspend {
/* MCLK3 */
mux {
pins = "gpio67";
function = "cam_mclk";
};
config {
pins = "gpio67";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk4_active: cam_sensor_mclk4_active {
/* MCLK4 */
mux {
pins = "gpio68";
function = "cam_asc_mclk4";
};
config {
pins = "gpio68";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_mclk4_suspend: cam_sensor_mclk4_suspend {
/* MCLK4 */
mux {
pins = "gpio68";
function = "cam_asc_mclk4";
};
config {
pins = "gpio68";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_active_rst0: cam_sensor_active_rst0 {
mux {
pins = "gpio37";
function = "gpio";
};
config {
pins = "gpio37";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_suspend_rst0: cam_sensor_suspend_rst0 {
mux {
pins = "gpio37";
function = "gpio";
};
config {
pins = "gpio37";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
output-low;
};
};
cam_sensor_active_rst1: cam_sensor_active_rst1 {
mux {
pins = "gpio28";
function = "gpio";
};
config {
pins = "gpio28";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_suspend_rst1: cam_sensor_suspend_rst1 {
mux {
pins = "gpio28";
function = "gpio";
};
config {
pins = "gpio28";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
output-low;
};
};
cam_sensor_active_rst2: cam_sensor_active_rst2 {
mux {
pins = "gpio180";
function = "gpio";
};
config {
pins = "gpio180";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
};
};
cam_sensor_suspend_rst2: cam_sensor_suspend_rst2 {
mux {
pins = "gpio180";
function = "gpio";
};
config {
pins = "gpio180";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
output-low;
};
};
cam_sensor_active_rst3: cam_sensor_active_rst3 {
mux {
pins = "gpio3";
function = "gpio";
};
config {
pins = "gpio3";
bias-disable; /* No PULL */
drive-strength = <2>; /* 2 MA */
qcom,apps;
};
};
cam_sensor_suspend_rst3: cam_sensor_suspend_rst3 {
mux {
pins = "gpio3";
function = "gpio";
};
config {
pins = "gpio3";
bias-pull-down; /* PULL DOWN */
drive-strength = <2>; /* 2 MA */
output-low;
qcom,remote;
};
};
};
&soc {
#address-cells = <1>;
#size-cells = <1>;
@@ -21,6 +501,352 @@
status = "ok";
};
cam_csiphy0: qcom,csiphy0@ada9000 {
cell-index = <0>;
compatible = "qcom,csiphy-v2.2.1", "qcom,csiphy";
reg = <0x0ada9000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0x1a9000>;
interrupt-names = "CSIPHY0";
interrupts = <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&L4B>;
csi-vdd-0p9-supply = <&L2B>;
rgltr-cntrl-support;
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1200000 950000>;
rgltr-load-current = <0 7810 81600>;
shared-clks = <1 0 0 0>;
clock-names = "cphy_rx_clk_src",
"csiphy0_clk",
"csi0phytimer_clk_src",
"csi0phytimer_clk";
clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&camcc CAM_CC_CSIPHY0_CLK>,
<&camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
<&camcc CAM_CC_CSI0PHYTIMER_CLK>;
src-clock-name = "cphy_rx_clk_src";
clock-cntl-level = "lowsvsd1", "lowsvs", "nominal";
clock-rates =
<266666667 0 400000000 0>,
<400000000 0 400000000 0>,
<480000000 0 400000000 0>;
status = "ok";
};
cam_csiphy1: qcom,csiphy1@adab000 {
cell-index = <1>;
compatible = "qcom,csiphy-v2.2.1", "qcom,csiphy";
reg = <0x0adab000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0x1ab000>;
interrupt-names = "CSIPHY1";
interrupts = <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&L4B>;
csi-vdd-0p9-supply = <&L2B>;
rgltr-cntrl-support;
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1200000 950000>;
rgltr-load-current = <0 7810 81600>;
shared-clks = <1 0 0 0>;
clock-names = "cphy_rx_clk_src",
"csiphy1_clk",
"csi1phytimer_clk_src",
"csi1phytimer_clk";
clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&camcc CAM_CC_CSIPHY1_CLK>,
<&camcc CAM_CC_CSI1PHYTIMER_CLK_SRC>,
<&camcc CAM_CC_CSI1PHYTIMER_CLK>;
src-clock-name = "cphy_rx_clk_src";
clock-cntl-level = "lowsvsd1", "lowsvs", "nominal";
clock-rates =
<266666667 0 400000000 0>,
<400000000 0 400000000 0>,
<480000000 0 400000000 0>;
status = "ok";
};
cam_csiphy2: qcom,csiphy2@adad000 {
cell-index = <2>;
compatible = "qcom,csiphy-v2.2.1", "qcom,csiphy";
reg = <0x0adad000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0x1ad000>;
interrupt-names = "CSIPHY2";
interrupts = <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&L4B>;
csi-vdd-0p9-supply = <&L2B>;
rgltr-cntrl-support;
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1200000 950000>;
rgltr-load-current = <0 7810 81600>;
shared-clks = <1 0 0 0>;
clock-names = "cphy_rx_clk_src",
"csiphy2_clk",
"csi2phytimer_clk_src",
"csi2phytimer_clk";
clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&camcc CAM_CC_CSIPHY2_CLK>,
<&camcc CAM_CC_CSI2PHYTIMER_CLK_SRC>,
<&camcc CAM_CC_CSI2PHYTIMER_CLK>;
src-clock-name = "cphy_rx_clk_src";
clock-cntl-level = "lowsvsd1", "lowsvs", "nominal";
clock-rates =
<266666667 0 400000000 0>,
<400000000 0 400000000 0>,
<480000000 0 400000000 0>;
status = "ok";
};
cam_csiphy3: qcom,csiphy3@adaf000 {
cell-index = <3>;
compatible = "qcom,csiphy-v2.2.1", "qcom,csiphy";
reg = <0x0adaf000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0x1af000>;
interrupt-names = "CSIPHY3";
interrupts = <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&L4B>;
csi-vdd-0p9-supply = <&L2B>;
rgltr-cntrl-support;
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1200000 950000>;
rgltr-load-current = <0 7810 81600>;
shared-clks = <1 0 0 0>;
clock-names = "cphy_rx_clk_src",
"csiphy3_clk",
"csi3phytimer_clk_src",
"csi3phytimer_clk";
clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&camcc CAM_CC_CSIPHY3_CLK>,
<&camcc CAM_CC_CSI3PHYTIMER_CLK_SRC>,
<&camcc CAM_CC_CSI3PHYTIMER_CLK>;
src-clock-name = "cphy_rx_clk_src";
clock-cntl-level = "lowsvsd1", "lowsvs", "nominal";
clock-rates =
<266666667 0 400000000 0>,
<400000000 0 400000000 0>,
<480000000 0 400000000 0>;
status = "ok";
};
cam_csiphy4: qcom,csiphy4@adb1000 {
cell-index = <4>;
compatible = "qcom,csiphy-v2.2.1", "qcom,csiphy";
reg = <0x0adb1000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0x1b1000>;
interrupt-names = "CSIPHY4";
interrupts = <GIC_SPI 122 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&L4B>;
csi-vdd-0p9-supply = <&L2B>;
rgltr-cntrl-support;
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1200000 950000>;
rgltr-load-current = <0 7810 81600>;
shared-clks = <1 0 0 0>;
clock-names = "cphy_rx_clk_src",
"csiphy4_clk",
"csi4phytimer_clk_src",
"csi4phytimer_clk";
clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&camcc CAM_CC_CSIPHY4_CLK>,
<&camcc CAM_CC_CSI4PHYTIMER_CLK_SRC>,
<&camcc CAM_CC_CSI4PHYTIMER_CLK>;
src-clock-name = "cphy_rx_clk_src";
clock-cntl-level = "lowsvsd1", "lowsvs", "nominal";
clock-rates =
<266666667 0 400000000 0>,
<400000000 0 400000000 0>,
<480000000 0 400000000 0>;
status = "ok";
};
cam_cci0: qcom,cci0@ac7b000 {
cell-index = <0>;
compatible = "qcom,cci", "simple-bus";
reg = <0x0ac7b000 0x1000>;
reg-names = "cci";
reg-cam-base = <0x7b000>;
interrupt-names = "CCI0";
interrupts = <GIC_SPI 426 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
clock-names = "cci_0_clk_src",
"cci_0_clk";
clocks = <&camcc CAM_CC_CCI_0_CLK_SRC>,
<&camcc CAM_CC_CCI_0_CLK>;
clock-rates = <37500000 0>, <37500000 0>;
clock-cntl-level = "lowsvsd1", "lowsvs";
src-clock-name = "cci_0_clk_src";
pctrl-idx-mapping = <CCI_MASTER_0 CCI_MASTER_1>;
pctrl-map-names = "m0", "m1";
pinctrl-names = "m0_active", "m0_suspend",
"m1_active", "m1_suspend";
pinctrl-0 = <&cci_i2c_scl0_active &cci_i2c_sda0_active>;
pinctrl-1 = <&cci_i2c_scl0_suspend &cci_i2c_sda0_suspend>;
pinctrl-2 = <&cci_i2c_scl1_active &cci_i2c_sda1_active>;
pinctrl-3 = <&cci_i2c_scl1_suspend &cci_i2c_sda1_suspend>;
status = "ok";
i2c_freq_100Khz_cci0: qcom,i2c_standard_mode {
hw-thigh = <201>;
hw-tlow = <174>;
hw-tsu-sto = <204>;
hw-tsu-sta = <231>;
hw-thd-dat = <22>;
hw-thd-sta = <162>;
hw-tbuf = <227>;
hw-scl-stretch-en = <0>;
hw-trdhld = <6>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
i2c_freq_400Khz_cci0: qcom,i2c_fast_mode {
hw-thigh = <38>;
hw-tlow = <56>;
hw-tsu-sto = <40>;
hw-tsu-sta = <40>;
hw-thd-dat = <22>;
hw-thd-sta = <35>;
hw-tbuf = <62>;
hw-scl-stretch-en = <0>;
hw-trdhld = <6>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
i2c_freq_custom_cci0: qcom,i2c_custom_mode {
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";
};
i2c_freq_1Mhz_cci0: qcom,i2c_fast_plus_mode {
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 = <0>;
hw-trdhld = <3>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
};
cam_cci1: qcom,cci1@ac7c000 {
cell-index = <1>;
compatible = "qcom,cci", "simple-bus";
reg = <0x0ac7c000 0x1000>;
reg-names = "cci";
reg-cam-base = <0x7c000>;
interrupt-names = "CCI1";
interrupts = <GIC_SPI 427 IRQ_TYPE_EDGE_RISING>;
regulator-names = "gdscr";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
clock-names = "cci_1_clk_src",
"cci_1_clk";
clocks = <&camcc CAM_CC_CCI_1_CLK_SRC>,
<&camcc CAM_CC_CCI_1_CLK>;
clock-rates = <37500000 0>, <37500000 0>;
clock-cntl-level = "lowsvsd1", "lowsvs";
src-clock-name = "cci_1_clk_src";
pctrl-idx-mapping = <CCI_MASTER_0 CCI_MASTER_1>;
pctrl-map-names = "m0", "m1";
pinctrl-names = "m0_active", "m0_suspend",
"m1_active", "m1_suspend";
pinctrl-0 = <&cci_i2c_scl2_active &cci_i2c_sda2_active>;
pinctrl-1 = <&cci_i2c_scl2_suspend &cci_i2c_sda2_suspend>;
pinctrl-2 = <&cci_i2c_scl3_active &cci_i2c_sda3_active>;
pinctrl-3 = <&cci_i2c_scl3_suspend &cci_i2c_sda3_suspend>;
status = "ok";
i2c_freq_100Khz_cci1: qcom,i2c_standard_mode {
hw-thigh = <201>;
hw-tlow = <174>;
hw-tsu-sto = <204>;
hw-tsu-sta = <231>;
hw-thd-dat = <22>;
hw-thd-sta = <162>;
hw-tbuf = <227>;
hw-scl-stretch-en = <0>;
hw-trdhld = <6>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
i2c_freq_400Khz_cci1: qcom,i2c_fast_mode {
hw-thigh = <38>;
hw-tlow = <56>;
hw-tsu-sto = <40>;
hw-tsu-sta = <40>;
hw-thd-dat = <22>;
hw-thd-sta = <35>;
hw-tbuf = <62>;
hw-scl-stretch-en = <0>;
hw-trdhld = <6>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
i2c_freq_custom_cci1: qcom,i2c_custom_mode {
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";
};
i2c_freq_1Mhz_cci1: qcom,i2c_fast_plus_mode {
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 = <0>;
hw-trdhld = <3>;
hw-tsp = <3>;
cci-clk-src = <37500000>;
status = "ok";
};
};
qcom,cam_smmu {
compatible = "qcom,msm-cam-smmu", "simple-bus";
status = "ok";