summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshok Kundurthi <c_askund@qti.qualcomm.com>2019-08-26 10:48:01 +0530
committerAshok Kundurthi <c_askund@qti.qualcomm.com>2019-08-26 10:48:01 +0530
commita9b6d791f5d260f2d1346924905d737d07b18368 (patch)
tree8a7bdd5f34906143398d9efbafb04cd8859e40ee
parent3bd3ae4fc70d70c2c6ad3aecb199f87c03ba24ce (diff)
parentfd49a1b8b3909a1a12b6cd6adc49de260785e9b2 (diff)
downloadcamera-devicetree-a9b6d791f5d260f2d1346924905d737d07b18368.tar.gz
Merge commit 'fd49a1b8b3909a1a12b6cd6adc49de260785e9b2' into HEAD
Change-Id: If8d9978fd1e7b8ce09f419fee1fc87e452bcb1c1
-rw-r--r--bindings/msm-cam-cci.txt817
-rw-r--r--bindings/msm-cam-cdm.txt155
-rw-r--r--bindings/msm-cam-cpas.txt406
-rw-r--r--bindings/msm-cam-csiphy.txt117
-rw-r--r--bindings/msm-cam-eeprom.txt503
-rw-r--r--bindings/msm-cam-fd.txt154
-rw-r--r--bindings/msm-cam-icp.txt287
-rw-r--r--bindings/msm-cam-ife-csid.txt121
-rw-r--r--bindings/msm-cam-isp.txt36
-rw-r--r--bindings/msm-cam-jpeg.txt186
-rw-r--r--bindings/msm-cam-lrme.txt148
-rw-r--r--bindings/msm-cam-smmu.txt142
-rw-r--r--bindings/msm-cam-vfe.txt154
-rw-r--r--bindings/msm-camera-flash.txt132
-rw-r--r--bindings/msm-camera.txt13
-rw-r--r--kona-camera-sensor-cdp.dtsi674
-rw-r--r--kona-camera-sensor-mtp.dtsi676
-rw-r--r--kona-camera-sensor-qrd.dtsi674
-rw-r--r--kona-camera.dtsi1702
-rw-r--r--lito-camera-sensor-cdp.dtsi293
-rw-r--r--lito-camera-sensor-mtp.dtsi293
-rw-r--r--lito-camera-sensor-qrd.dtsi672
-rw-r--r--lito-camera.dtsi1613
23 files changed, 9968 insertions, 0 deletions
diff --git a/bindings/msm-cam-cci.txt b/bindings/msm-cam-cci.txt
new file mode 100644
index 0000000..59651a3
--- /dev/null
+++ b/bindings/msm-cam-cci.txt
@@ -0,0 +1,817 @@
+* Qualcomm Technologies, Inc. MSM CCI
+
+CCI (Camera Control Interface) is module that is use for camera sensor module
+I2C communication.
+
+=======================
+Required Node Structure
+=======================
+The camera CCI node must be described in two levels of device nodes. The
+first level describe the overall CCI node structure. Second level nodes
+describe camera sensor submodule nodes which is using CCI for
+i2c communication.
+
+======================================
+First Level Node - CCI device
+======================================
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cci".
+
+- cell-index: cci hardware core index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the Hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: offset and length of the register set
+ for the device for the cci operating in
+ compatible mode.
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Should specify relevant names to each
+ reg property defined.
+
+- interrupts
+ Usage: required
+ Value type: <u32>
+ Definition: Interrupt associated with CCI HW.
+
+- interrupt-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- gpios
+ Usage: required
+ Value type: <phandle>
+ Definition: should specify the gpios to be used for the CCI.
+
+- gpio-req-tbl-num
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio table index.
+
+- gpio-req-tbl-flags
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio functions.
+
+- gpio-req-tbl-label
+ Usage: required
+ Value type: <string>
+ Definition: should specify the gpio labels in
+ gpio-req-tbl-num property (in the same order)
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for CCI HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clock rates in Hz for CCI HW.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: All different clock level node can support.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: all clock phandle and source clocks.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: name for the source clock.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: name of the voltage regulators required for the device.
+
+- gdscr-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain gdsr regulator used for cci clocks.
+
+- mmagic-supply
+ Usage: optional
+ Value type: <phandle>
+ Definition: should contain mmagic regulator used for mmagic clocks.
+
+=========================
+CCI clock settings
+=========================
+- I2c speed settings (*)
+ Usage: required
+ Definition: List of i2c rates for CCI HW.
+ - i2c_freq_100Khz
+ Definition: qcom,i2c_standard_mode - node should contain clock settings for
+ 100Khz
+ - i2c_freq_400Khz
+ Definition: qcom,i2c_fast_mode - node should contain clock settings for
+ 400Khz
+ - i2c_freq_custom
+ Definition: qcom,i2c_custom_mode - node can contain clock settings for
+ frequencies other than 100Khz and 400Khz which is specific to usecase.
+ Currently it has settings for 375Khz.
+ - i2c_freq_1Mhz
+ Definition: qcom,i2c_fast_plus_mode - node should contain clock
+ settings for 1Mhz
+* if speed settings is not defined the low level driver can use "i2c_freq_custom"
+like default
+
+ - hw-thigh
+ Definition: should contain high period of the SCL clock in terms of CCI clock cycle
+ - hw-tlow
+ Definition: should contain high period of the SCL clock in terms of CCI clock cycle
+ - hw-tsu-sto
+ Definition: should contain setup time for STOP condition
+ - hw-tsu-sta
+ Definition: should contain setup time for Repeated START condition
+ - hw-thd-dat
+ Definition: should contain hold time for the data
+ - hw-thd-sta
+ Definition: should contain hold time for START condition
+ - hw-tbuf
+ Definition: should contain free time between a STOP and a START condition
+ - hw-scl-stretch-en
+ Definition: should contain enable or disable clock stretching
+ - hw-trdhld
+ Definition: should contain internal hold time for SDA
+ - hw-tsp
+ Definition: should contain filtering of glitches
+
+Example:
+
+ qcom,cci@0xfda0c000 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ reg = <0xfda0c000 0x300>;
+ reg-names = "cci";
+ interrupts = <0 50 0>;
+ interrupt-names = "cci";
+ clock-names = "camnoc_axi_clk", "soc_ahb_clk",
+ "slow_ahb_src_clk", "cpas_ahb_clk",
+ "cci_clk", "cci_clk_src";
+ clock-rates = <0 0 80000000 0 0 37500000>;
+ clock-cntl-level = "turbo";
+ gpios = <&tlmm 17 0>,
+ <&tlmm 18 0>,
+ <&tlmm 19 0>,
+ <&tlmm 20 0>;
+ gpio-tbl-num = <0 1 2 3>;
+ gpio-tbl-flags = <1 1 1 1>;
+ gpio-tbl-label = "CCI_I2C_DATA0",
+ "CCI_I2C_CLK0",
+ "CCI_I2C_DATA1",
+ "CCI_I2C_CLK1";
+ i2c_freq_100Khz: qcom,i2c_standard_mode {
+ hw-thigh = <78>;
+ hw-tlow = <114>;
+ hw-tsu-sto = <28>;
+ hw-tsu-sta = <28>;
+ hw-thd-dat = <10>;
+ hw-thd-sta = <77>;
+ hw-tbuf = <118>;
+ hw-scl-stretch-en = <0>;
+ hw-trdhld = <6>;
+ hw-tsp = <1>;
+ status = "ok";
+ };
+ i2c_freq_400Khz: qcom,i2c_fast_mode {
+ hw-thigh = <20>;
+ hw-tlow = <28>;
+ hw-tsu-sto = <21>;
+ hw-tsu-sta = <21>;
+ hw-thd-dat = <13>;
+ hw-thd-sta = <18>;
+ hw-tbuf = <25>;
+ hw-scl-stretch-en = <0>;
+ hw-trdhld = <6>;
+ hw-tsp = <3>;
+ status = "ok";
+ };
+ i2c_freq_custom: qcom,i2c_custom_mode {
+ hw-thigh = <15>;
+ hw-tlow = <28>;
+ hw-tsu-sto = <21>;
+ hw-tsu-sta = <21>;
+ hw-thd-dat = <13>;
+ hw-thd-sta = <18>;
+ hw-tbuf = <25>;
+ hw-scl-stretch-en = <1>;
+ hw-trdhld = <6>;
+ hw-tsp = <3>;
+ status = "ok";
+ };
+ i2c_freq_1Mhz: 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 = <19>;
+ hw-scl-stretch-en = <1>;
+ hw-trdhld = <3>;
+ hw-tsp = <3>;
+ cci-clk-src = <37500000>;
+ status = "ok";
+ };
+ };
+
+=======================================
+Second Level Node - CAM SENSOR MODULES
+=======================================
+
+=======================================
+CAM SENSOR RESOURCE MANAGER
+=======================================
+Camera Sensor Resource manager node contains properties of shared camera
+sensor resource.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-res-mgr".
+
+- shared-gpios
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain the gpios which are used by two or more
+ cameras, and these cameras may be opened together.
+
+- pinctrl-names
+ Usage: optional
+ Value type: <string>
+ Definition: List of names to assign the shared pin state defined in pinctrl device node
+
+- pinctrl-<0..n>
+ Usage: optional
+ Value type: <phandle>
+ Definition: Lists phandles each pointing to the pin configuration node within a pin
+ controller. These pin configurations are installed in the pinctrl device node.
+
+
+=============================
+CAMERA IMAGE SENSOR MODULE
+=============================
+Image sensor node contains properties of camera image sensor
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-sensor".
+
+- cell-index: cci hardware core index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the Hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: offset and length of the register set
+ for the device for the cci operating in
+ compatible mode.
+
+- cci-device
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c device id to be used for this camera
+ sensor
+
+- cci-master
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ sensor
+ - 0 -> MASTER 0
+ - 1 -> MASTER 1
+
+- csiphy-sd-index
+ Usage: required
+ Value type: <u32>
+ Definition: should contain csiphy instance that will used to
+ receive sensor data (0, 1, 2, 3).
+
+- cam_vdig-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain regulator from which digital voltage is
+ supplied
+
+- cam_vana-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain regulator from which analog voltage is
+ supplied
+
+- cam_vio-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain regulator from which IO voltage is supplied
+
+- cam_bob-supply
+ Usage: optional
+ Value type: <phandle>
+ Definition: should contain regulator from which BoB voltage is supplied
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: should contain names of all regulators needed by this
+ sensor
+
+- rgltr-cntrl-support
+ Usage: required
+ Value type: <boolean>
+ Definition: This property is required if the sw control regulator parameters
+ e.g. rgltr-min-voltage
+
+- rgltr-min-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain minimum voltage level for regulators mentioned
+ in regulator-names property (in the same order)
+
+- rgltr-max-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain maximum voltage level for regulators mentioned
+ in regulator-names property (in the same order)
+
+- rgltr-load-current
+ Usage: required
+ Value type: <u32>
+ Definition: should contain optimum voltage level for regulators mentioned
+ in regulator-names property (in the same order)
+
+- sensor-position-roll
+ Usage: required
+ Value type: <u32>
+ Definition: should contain sensor rotational angle with respect to axis of
+ reference. i.e. 0, 90, 180, 360
+
+- sensor-position-pitch
+ Usage: required
+ Value type: <u32>
+ Definition: should contain sensor rotational angle with respect to axis of
+ reference. i.e. 0, 90, 180, 360
+
+- sensor-position-yaw
+ Usage: required
+ Value type: <u32>
+ Definition: should contain sensor rotational angle with respect to axis of
+ reference. i.e. 0, 90, 180, 360
+
+- qcom,secure
+ Usage: optional
+ Value type: <u32>
+ Definition: should be enabled to operate the camera in secure mode
+
+- gpio-no-mux
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain field to indicate whether gpio mux table is
+ available. i.e. 1 if gpio mux is not available, 0 otherwise
+
+- cam_vaf-supply
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain regulator from which AF voltage is supplied
+
+- pwm-switch
+ Usage: optional
+ Value type: <boolean>
+ Definition: This property is required for regulator to switch into PWM mode.
+
+- gpios
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain phandle to gpio controller node and array of
+ #gpio-cells specifying specific gpio (controller specific)
+
+- gpio-reset
+ Usage: required
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors reset_n
+
+- gpio-standby
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors standby_n
+
+- gpio-vio
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors io vreg enable
+
+- gpio-vana
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors analog vreg enable
+
+- gpio-vdig
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors digital vreg enable
+
+- gpio-vaf
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors af vreg enable
+
+- gpio-af-pwdm
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by sensors af pwdm_n
+
+- gpio-req-tbl-num
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpios specific to this sensor
+
+- gpio-req-tbl-flags
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain direction of gpios present in
+ gpio-req-tbl-num property (in the same order)
+
+- gpio-req-tbl-label
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain name of gpios present in
+ gpio-req-tbl-num property (in the same order)
+
+- gpio-set-tbl-num
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index of gpios that need to be
+ configured by msm
+
+- gpio-set-tbl-flags
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain value to be configured for the gpios
+ present in gpio-set-tbl-num property (in the same order)
+
+- gpio-set-tbl-delay
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain amount of delay after configuring
+ gpios as specified in gpio_set_tbl_flags property (in the same order)
+
+- actuator-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if auto focus is supported by this sensor, this
+ property should contain phandle of respective actuator node
+
+- led-flash-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if LED flash is supported by this sensor, this
+ property should contain phandle of respective LED flash node
+
+- qcom,vdd-cx-supply
+ Usage: optional
+ Value type: <phandle>
+ Definition: should contain regulator from which cx voltage is supplied
+
+- qcom,vdd-cx-name
+ Usage: optional
+ Value type: <string>
+ Definition: should contain names of cx regulator
+
+- eeprom-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if eeprom memory is supported by this sensor, this
+ property should contain phandle of respective eeprom nodes
+
+- ois-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if optical image stabilization is supported by this sensor,
+ this property should contain phandle of respective ois node
+
+- ir-led-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if ir led is supported by this sensor, this property
+ should contain phandle of respective ir-led node
+
+- qcom,ir-cut-src
+ Usage: optional
+ Value type: <phandle>
+ Definition: if ir cut is supported by this sensor, this property
+ should contain phandle of respective ir-cut node
+
+- qcom,special-support-sensors
+ Usage: required
+ Value type: <string>
+ Definition: if only some special sensors are supported
+ on this board, add sensor name in this property.
+
+- use-shared-clk
+ Usage: optional
+ Value type: <boolean>
+ Definition: It is booloean property. This property is required
+ if the clk is shared clk between different sensor and ois, if this
+ device need to be opened together.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: clock rate in Hz.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: All different clock level node can support.
+
+- clock-cntl-support
+ Usage: optional
+ Value type: <boolean>
+ Definition: Says whether clock control support is present or not
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: all clock phandle and source clocks.
+
+- clock-control
+ Usage: optional
+ Value type: <string>
+ Definition: The valid fields are "NO_SET_RATE", "INIT_RATE" and
+ "SET_RATE". "NO_SET_RATE" the corresponding clock is enabled without setting
+ the rate assuming some other driver has already set it to appropriate rate.
+ "INIT_RATE" clock rate is not queried assuming some other driver has set
+ the clock rate and ispif will set the the clock to this rate.
+ "SET_RATE" clock is enabled and the rate is set to the value specified
+ in the property clock-rates.
+
+=============================
+ACTUATOR MODULE
+=============================
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,actuator".
+
+- cell-index: cci hardware core index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the Hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: offset and length of the register set
+ for the device for the cci operating in
+ compatible mode.
+
+- cci-device
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c device id to be used for this camera
+ sensor
+
+- cci-master
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ sensor
+ - 0 -> MASTER 0
+ - 1 -> MASTER 1
+
+- cam_vaf-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain regulator from which AF voltage is supplied
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: should contain names of all regulators needed by this
+ actuator. i.e. "cam_vaf"
+
+- rgltr-cntrl-support
+ Usage: optional
+ Value type: <boolean>
+ Definition: It is booloean property. This property is required
+ if the code and regulator control parameters e.g. rgltr-min-voltage
+
+- rgltr-min-voltage
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain minimum voltage level in mcrovolts
+ for regulators mentioned in regulator-names property (in the same order)
+
+- rgltr-max-voltage
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain maximum voltage level in mcrovolts
+ for regulators mentioned in regulator-names property (in the same order)
+
+- rgltr-load-current
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain the maximum current in microamps
+ required from the regulators mentioned in the regulator-names property
+ (in the same order).
+
+=============================
+OIS MODULE
+=============================
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,ois".
+
+- cell-index: cci hardware core index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the Hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: offset and length of the register set
+ for the device for the cci operating in
+ compatible mode.
+
+- cci-device
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c device id to be used for this camera
+ sensor
+
+- cci-master
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ sensor
+ - 0 -> MASTER 0
+ - 1 -> MASTER 1
+
+- cam_vaf-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain regulator from which AF voltage is supplied
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: should contain names of all regulators needed by this
+ actuator. i.e. "cam_vaf"
+
+- rgltr-cntrl-support
+ Usage: optional
+ Value type: <boolean>
+ Definition: It is booloean property. This property is required
+ if the code and regulator control parameters e.g. rgltr-min-voltage
+
+- rgltr-min-voltage
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain minimum voltage level in mcrovolts
+ for regulators mentioned in regulator-names property (in the same order)
+
+- rgltr-max-voltage
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain maximum voltage level in mcrovolts
+ for regulators mentioned in regulator-names property (in the same order)
+
+- rgltr-load-current
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain the maximum current in microamps
+ required from the regulators mentioned in the regulator-names property
+ (in the same order).
+
+- use-shared-clk
+ Usage: optional
+ Value type: <boolean>
+ Definition: This property is required if the clk is shared clk between different
+ sensor and ois, if this device need to be opened together.
+
+Example:
+&soc {
+ led_flash0: qcom,camera-flash@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ torch-source = <&pmi8998_torch0 &pmi8998_torch1>;
+ switch-source = <&pmi8998_switch>;
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ cci-device = <0>;
+ cci-master = <0>;
+ cam_vaf-supply = <&pmi8998_bob>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ };
+
+ ois0: qcom,ois@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,ois";
+ cci-device = <0>;
+ cci-master = <0>;
+ cam_vaf-supply = <&pmi8998_bob>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ shared-gpios = <18 19>;
+ pinctrl-names = "cam_res_mgr_default", "cam_res_mgr_suspend";
+ pinctrl-0 = <&cam_shared_clk_active &cam_res_mgr_active>;
+ pinctrl-1 = <&cam_shared_clk_suspend &cam_res_mgr_suspend>;
+ };
+
+ qcom,cam-sensor@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ secure = <1>;
+ led-flash-src = <&led_flash0>;
+ actuator-src = <&actuator0>;
+ ois-src = <&ois0>;
+ eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009l_l1>;
+ cam_vana-supply = <&pm8009l_l5>;
+ cam_bob-supply = <&pm8150l_bob>;
+ cam_clk-supply = <&tital_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <0 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <0 2800000 1200000 0 4000000>;
+ rgltr-load-current = <0 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_rear_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_rear_suspend>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 80 0>,
+ <&tlmm 79 0>;
+ gpio-reset = <1>;
+ gpio-standby = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0",
+ "CAM_VANA";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <0>;
+ status = "ok";
+ use-shared-clk;
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ clock-cntl-leveli = "turbo";
+ clock-rates = <24000000>;
+ };
+};
diff --git a/bindings/msm-cam-cdm.txt b/bindings/msm-cam-cdm.txt
new file mode 100644
index 0000000..b376cad
--- /dev/null
+++ b/bindings/msm-cam-cdm.txt
@@ -0,0 +1,155 @@
+* Qualcomm Technologies, Inc. MSM Camera CDM
+
+CDM (Camera Data Mover) is module intended to provide means for fast programming
+camera registers and lookup tables.
+
+=======================
+Required Node Structure
+=======================
+CDM Interface node takes care of the handling has HW nodes and provide interface
+for camera clients.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-cdm-intf".
+
+- label
+ Usage: required
+ Value type: <string>
+ Definition: Should be "cam-cdm-intf".
+
+- num-hw-cdm
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported HW blocks.
+
+- cdm-client-names
+ Usage: required
+ Value type: <string>
+ Definition: List of Clients supported by CDM interface.
+
+Example:
+ qcom,cam-cdm-intf {
+ compatible = "qcom,cam-cdm-intf";
+ label = "cam-cdm-intf";
+ num-hw-cdm = <1>;
+ cdm-client-names = "vfe",
+ "jpeg-dma",
+ "jpeg",
+ "fd";
+ };
+
+=======================
+Required Node Structure
+=======================
+CDM HW node provides interface for camera clients through
+to CDM interface node.
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam480-cpas-cdm0", "qcom,cam480-cpas-cdm1"
+ "qcom,cam170-cpas-cdm0" or "qcom,cam480-cpas-cdm2".
+
+- label
+ Usage: required
+ Value type: <string>
+ Definition: Should be "cpas-cdm".
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the register resources.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- reg-cam-base
+ Usage: required
+ Value type: <u32>
+ Definition: Offset of the register space compared to
+ to Camera base register space.
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt associated with CDM HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for CDM HW.
+
+- camss-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for CDM HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for CDM HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- cdm-client-names
+ Usage: required
+ Value type: <string>
+ Definition: List of Clients supported by CDM HW node.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels.
+ Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo.
+
+Example:
+ qcom,cpas-cdm0@ac48000 {
+ cell-index = <0>;
+ compatible = "qcom,cam480-cpas-cdm0";
+ label = "cpas-cdm0";
+ reg = <0xac48000 0x1000>;
+ reg-names = "cpas-cdm";
+ interrupts = <0 461 0>;
+ interrupt-names = "cpas-cdm";
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "soc_ahb_clk",
+ "titan_top_ahb_clk",
+ "cam_axi_clk",
+ "camcc_slow_ahb_clk_src",
+ "cpas_top_ahb_clk",
+ "camnoc_axi_clk";
+ clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
+ qcom,clock-rates = <0 80000000 80000000 80000000 80000000 80000000>;
+ cdm-client-names = "ife";
+ clock-cntl-level = "turbo";
+ status = "ok";
+ };
diff --git a/bindings/msm-cam-cpas.txt b/bindings/msm-cam-cpas.txt
new file mode 100644
index 0000000..c18b743
--- /dev/null
+++ b/bindings/msm-cam-cpas.txt
@@ -0,0 +1,406 @@
+* Qualcomm Technologies, Inc. MSM Camera CPAS
+
+The MSM camera CPAS device provides dependency definitions for
+enabling Camera CPAS HW and provides the Client definitions
+for all HW blocks that use CPAS driver for BW voting. These
+definitions consist of various properties that define the list
+of clients supported, AHB, AXI master-slave IDs used for BW
+voting.
+
+=======================
+Required Node Structure
+=======================
+The camera CPAS device must be described in five levels. The first level has
+general description of cpas including compatibility, interrupts, power info
+etc.
+The second level deals with information related to CPAS clients and how
+the BW should be calculated. For simplicity in BW vote consolidation, the
+grouping of granular votes pertaining to CPAS clients is represented as nodes
+at four CAMNOC levels. The nodes at a particular level have some common
+properties such as traffic merge type which indicates whether the votes at a
+node have to be summed up, sum divided by two or taken max of all. CAMNOC Level
+zero node usually represents granular vote info for clients. CAMNOC Level one
+represents nodes which are clubbed together by arbiter in CAMNOC diagram. CAMNOC
+Level two represents consolidated read and write nodes for RT and NRT paths.
+CAMNOC Level three provides axi port information and these have nodes where all
+paths from clients eventually converge according to their properties. This
+includes master-slave IDs, ab, ib values for mnoc, camnoc bus interface
+
+==================================
+First Level Node - CAM CPAS device
+==================================
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-cpas".
+
+- label
+ Usage: required
+ Value type: <string>
+ Definition: Should be "cpas".
+
+- arch-compat
+ Usage: required
+ Value type: <string>
+ Definition: Should be "cpas_top" or "camss_top".
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the register resources.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- reg-cam-base
+ Usage: required
+ Value type: <u32>
+ Definition: Offset of the register space compared to
+ to Camera base register space.
+
+- cam_hw_fuse
+ Usage: optional
+ Value type: <u32>
+ Definition: List of fuse based features and respective
+ fuse info.
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt associated with CAMNOC HW.
+
+- qcom,cpas-hw-ver
+ Usage: required
+ Value type: <u32>
+ Definition: CAM HW Version information.
+
+- camnoc-axi-min-ib-bw
+ Usage: optional
+ Value type: <u64>
+ Definition: Min camnoc axi bw for the given target.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for CPAS HW.
+
+- camss-vdd-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for CPAS HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for CPAS HW.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels.
+ Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo.
+
+- control-camnoc-axi-clk
+ Usage: optional
+ Value type: <empty>
+ Definition: Bool property specifying whether to control camnoc axi
+ clock from cpas driver.
+
+- camnoc-bus-width
+ Usage: required if control-camnoc-axi-clk is enabled
+ Value type: <u32>
+ Definition: camnoc bus width.
+
+- camnoc-axi-clk-bw-margin-perc
+ Usage: optional
+ Value type: <u32>
+ Definition: Percentage value to be added to camnoc bw while calculating
+ camnoc axi clock frequency.
+
+- qcom,msm-bus,name
+- qcom,msm-bus,num-cases
+- qcom,msm-bus,num-paths
+- qcom,msm-bus,vectors-KBps
+ Please refer Documentation/devicetree/bindings/arm/msm/msm_bus.txt
+ for the properties above.
+
+- vdd-corners
+ Usage: required
+ Value type: <u32>
+ Definition: List of vdd corners to map for ahb level.
+
+- vdd-corner-ahb-mapping
+ Usage: required
+ Value type: <string>
+ Definition: List of ahb level strings corresponds to vdd-corners.
+ Supported strings: suspend, svs, nominal, turbo
+
+- client-id-based
+ Usage: required
+ Value type: <empty>
+ Definition: Bool property specifying whether CPAS clients are ID based.
+
+- client-names
+ Usage: required
+ Value type: <string>
+ Definition: List of Clients supported by CPAS.
+
+- client-bus-camnoc-based
+ Usage: optional
+ Value type: <empty>
+ Definition: Bool property specifying whether Clients are connected
+ through CAMNOC for AXI access.
+
+===================================================================
+Third Level Node - CAMNOC Level nodes
+===================================================================
+- level-index
+ Usage: required
+ Value type: <u32>
+ Definition: Number representing level index for ndoes at current CAMNOC level
+
+- camnoc-max-needed
+ Usage: optional
+ Value type: <empty>
+ Definition: Bool property for all votes at current level to be taken maximum
+ for CAMNOC BW calculation.
+
+===================================================================
+Fourth Level Node - Generic CAMNOC node properties
+===================================================================
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Unique index of node to be used by CPAS driver.
+
+- node-name
+ Usage: required
+ Value type: <string>
+ Definition: Unique name representing this node.
+
+- path-data-type
+ Usage: required if a CAMNOC Level 0 Node
+ Value type: <u32>
+ Definition: Type of path data for a specific client.
+ Supported : CAM_CPAS_PATH_DATA_IFE_LINEAR, CAM_CPAS_PATH_DATA_ALL, etc.
+ Please refer dt-bindings/msm/msm-camera.h for all supported
+ definitions.
+
+- path-transaction-type
+ Usage: required if a CAMNOC Level 0 Node
+ Value type: <u32>
+ Definition: Type of path transaction for a specific client.
+ Supported : CAM_CPAS_TRANSACTION_READ, CAM_CPAS_TRANSACTION_WRITE
+
+- client-name
+ Usage: required if a CAMNOC Level 0 Node
+ Value type: <string>
+ Definition: Name of the client with above properties.
+ Supported : From "client-names" property in CPAS node
+
+- constituent-paths
+ Usage: optional, applicable only to CAMNOC Level 0 Nodes
+ Value type: <u32>
+ Definition: List of constituents of path data type of current node.
+ Supported : CAM_CPAS_PATH_DATA_IFE_VID, CAM_CPAS_PATH_DATA_IFE_DISP, etc.
+ Please refer dt-bindings/msm/msm-camera.h for all supported
+ definitions.
+
+- traffic-merge-type
+ Usage: required if NOT a CAMNOC Level 0 Node
+ Value type: <u32>
+ Definition: Type of traffic merge for that node.
+ Supported : CAM_CPAS_TRAFFIC_MERGE_SUM, CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE.
+
+- parent-node
+ Usage: required for all except CAMNOC Level 3 Nodes
+ Value type: <phandle>
+ Definition: Parent node of this node. Parent node must be at least
+ one level above the current level.
+
+- bus-width-factor
+ Usage: optional
+ Value type: <u32>
+ Definition: For bus width factor consideration in CAMNOC BW calculation
+
+- qcom,axi-port-name
+ Usage: required at CAMNOC Level 3
+ Value type: <string>
+ Definition: Name of the AXI Port.
+
+- ib-bw-voting-needed
+ Usage: optional
+ Value type: <empty>
+ Definition: Bool property indicating axi port requires instantaneous bandwidth
+
+===================================================================
+Fifth Level Node - CAM AXI Bus Properties
+===================================================================
+- qcom,msm-bus,name
+- qcom,msm-bus,num-cases
+- qcom,msm-bus,num-paths
+- qcom,msm-bus,vectors-KBps
+ Please refer Documentation/devicetree/bindings/arm/msm/msm_bus.txt
+ for the properties above.
+
+- qcom,msm-bus-vector-dyn-vote
+ Usage: optional
+ Value type: <empty>
+ Definition: Bool property specifying whether this bus client
+ is dynamic vote based.
+
+Example:
+
+ qcom,cam-cpas@ac40000 {
+ cell-index = <0>;
+ compatible = "qcom,cam-cpas";
+ label = "cpas";
+ arch-compat = "cpas_top";
+ status = "ok";
+ reg-names = "cam_cpas_top", "cam_camnoc";
+ reg = <0xac40000 0x1000>,
+ <0xac42000 0x5000>;
+ reg-cam-base = <0x40000 0x42000>;
+ cam_hw_fuse = <CAM_CPAS_QCFA_BINNING_ENABLE 0x00780210 29>,
+ <CAM_CPAS_SECURE_CAMERA_ENABLE 0x00780210 18>;
+ interrupt-names = "cpas_camnoc";
+ interrupts = <0 459 0>;
+ qcom,cpas-hw-ver = <0x170100>; /* Titan v170 v1.0.0 */
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names = "gcc_ahb_clk",
+ "gcc_axi_clk",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "slow_ahb_clk_src",
+ "camnoc_axi_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
+ src-clock-name = "slow_ahb_clk_src";
+ clock-rates = <0 0 0 0 80000000 0>;
+ clock-cntl-level = "turbo";
+ control-camnoc-axi-clk;
+ camnoc-bus-width = <32>;
+ camnoc-axi-clk-bw-margin-perc = <10>;
+ qcom,msm-bus,name = "cam_ahb";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 0>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 300000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 640000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 640000>;
+ client-id-based;
+ client-names =
+ "csiphy0", "csiphy1", "csiphy2", "csiphy3",
+ "csiphy4", "csiphy5", "cci0", "cci1",
+ "csid0", "csid1", "csid2", "csid3",
+ "csid4", "csid5", "csid6",
+ "ife0", "ife1", "ife2", "ife3", "custom0",
+ "ipe0", "cam-cdm-intf0", "cpas-cdm0", "cpas-cdm1",
+ "cpas-cdm2",
+ "bps0", "icp0", "jpeg-dma0", "jpeg-enc0",
+ "fd0";
+
+ camera-bus-nodes {
+ level3-nodes {
+ level-index = <3>;
+ level3_rt0_rd_wr_sum: level3-rt0-rd-wr-sum {
+ cell-index = <0>;
+ node-name = "level3-rt0-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_hf_0";
+ ib-bw-voting-needed;
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_hf_0_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_HF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_HF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+ };
+ level2-nodes {
+ level-index = <2>;
+ camnoc-max-needed;
+ level2_rt0_wr: level2-rt0-wr {
+ cell-index = <3>;
+ node-name = "level2-rt0-wr";
+ parent-node = <&level3_rt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+ };
+ level1-nodes {
+ level-index = <1>;
+ camnoc-max-needed;
+ level1_rt0_wr0: level1-rt0-wr0 {
+ cell-index = <8>;
+ node-name = "level1-rt0-wr0";
+ parent-node = <&level2_rt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+ };
+ level0-nodes {
+ level-index = <0>;
+ ife0_ubwc_stats_wr: ife0-ubwc-stats-wr {
+ cell-index = <16>;
+ node-name = "ife0-ubwc-stats-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_UBWC_STATS>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_VID
+ CAM_CPAS_PATH_DATA_IFE_DISP
+ CAM_CPAS_PATH_DATA_IFE_STATS>;
+ parent-node = <&level1_rt0_wr0>;
+ };
+ };
+ };
+ };
+
diff --git a/bindings/msm-cam-csiphy.txt b/bindings/msm-cam-csiphy.txt
new file mode 100644
index 0000000..f67f4ef
--- /dev/null
+++ b/bindings/msm-cam-csiphy.txt
@@ -0,0 +1,117 @@
+* Qualcomm Technologies, Inc. MSM CSI Phy
+
+=======================
+Required Node Structure
+=======================
+The camera CSIPHY node must be described in First level of device nodes. The
+first level describe the overall CSIPHY node structure.
+
+======================================
+First Level Node - CSIPHY device
+======================================
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,csiphy-v1.0",
+ "qcom,csiphy-v1.1", "qcom,csiphy-v1.2", "qcom,csiphy-v1.2.1",
+ "qcom,csiphy-v1.2.2", "qcom,csiphy-v2.0", "qcom,csiphy".
+
+- cell-index: csiphy hardware core index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the Hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: offset and length of the register set
+ for the device for the csiphy operating in
+ compatible mode.
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Should specify relevant names to each
+ reg property defined.
+
+- reg-cam-base
+ Usage: required
+ Value type: <string>
+ Definition: offset of CSIPHY in camera hw block
+
+- interrupts
+ Usage: required
+ Value type: <u32>
+ Definition: Interrupt associated with CCI HW.
+
+- interrupt-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for CSIPHY HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clock rates in Hz for CSIPHY HW.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: All different clock level node can support.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: all clock phandle and source clocks.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: name of the voltage regulators required for the device.
+
+- gdscr-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain gdsr regulator used for CSIPHY clocks.
+
+- mipi-csi-vdd-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: should contain phandle for mipi-csi-vdd regulator used for
+ CSIPHY device.
+
+- csi-vdd-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain required voltage for csi-vdd supply for CSIPHY.
+
+Example:
+
+qcom,csiphy@ac65000 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v1.0", "qcom,csiphy";
+ reg = <0xac65000 0x200>;
+ reg-cam-base = <0x65000>;
+ reg-names = "csiphy";
+ interrupts = <0 477 0>;
+ interrupt-names = "csiphy";
+ regulator-names = "gdscr", "refgen";
+ mipi-csi-vdd-supply = <&pm8998_l1>;
+ csi-vdd-voltage = <1200000>;
+ gdscr-supply = <&titan_top_gdsc>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY0_CLK>,
+ <&clock_camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI0PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src", "csiphy0_clk",
+ "csi0phytimer_clk_src", "csi0phytimer_clk";
+ clock-rates = <400000000 0 300000000 0>;
+ clock-cntl-level = "turbo";
+ status = "ok";
+};
diff --git a/bindings/msm-cam-eeprom.txt b/bindings/msm-cam-eeprom.txt
new file mode 100644
index 0000000..d77f337
--- /dev/null
+++ b/bindings/msm-cam-eeprom.txt
@@ -0,0 +1,503 @@
+* Qualcomm Technologies, Inc. MSM EEPROM
+
+EEPROM is a one time programmed(OTP) device that stores the calibration data
+use for camera sensor. It may either be integrated in the sensor module or in
+the sensor itself. As a result, the power, clock and GPIOs may be the same as
+the camera sensor. The following describes the page block map, power supply,
+clock, GPIO and power on sequence properties of the EEPROM device.
+
+=======================================================
+Required Node Structure if probe happens from userspace
+=======================================================
+The EEPROM device is described in one level of the device node.
+
+======================================
+First Level Node - CAM EEPROM device
+======================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,eeprom".
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for EEPROM HW.
+
+- xxxx-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed in
+ "regulator-names".
+
+- rgltr-cntrl-support
+ Usage: required
+ Value type: <bool>
+ Definition: This property specifies if the regulator control is supported
+ e.g. rgltr-min-voltage.
+
+- rgltr-min-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain minimum voltage level for regulators
+ mentioned in regulator-names property.
+
+- rgltr-max-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain maximum voltage level for regulators
+ mentioned in regulator-names property.
+
+- rgltr-load-current
+ Usage: required
+ Value type: <u32>
+ Definition: should contain the maximum current in microamps required for
+ the regulators mentioned in regulator-names property.
+
+- gpio-no-mux
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio mux type.
+
+- gpios
+ Usage: required
+ Value type: <phandle>
+ Definition: should specify the gpios to be used for the eeprom.
+
+- gpio-reset
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the reset gpio index.
+
+- gpio-standby
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the standby gpio index.
+
+- gpio-req-tbl-num
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio table index.
+
+- gpio-req-tbl-flags
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio functions.
+
+- gpio-req-tbl-label
+ Usage: required
+ Value type: <string>
+ Definition: should specify the gpio labels.
+
+- sensor-position
+ Usage: required
+ Value type: <u32>
+ Definition: should contain the mount angle of the camera sensor.
+
+- cci-device
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c device id to be used for this camera
+ sensor
+
+- cci-master
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ sensor.
+
+- sensor-mode
+ Usage: required
+ Value type: <u32>
+ Definition: should contain sensor mode supported.
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for EEPROM HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for EEPROM HW.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: says what all different clock levels eeprom node has.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+Example:
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8998_l5>;
+ cam_vio-supply = <&pm8998_lvs1>;
+ regulator-names = "cam_vdig", "cam_vio";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1200000 0>;
+ rgltr-max-voltage = <1200000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ gpios = <&msmgpio 26 0>,
+ <&msmgpio 37 0>,
+ <&msmgpio 36 0>;
+ gpio-reset = <1>;
+ gpio-standby = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+=======================================================
+Required Node Structure if probe happens from kernel
+=======================================================
+The EEPROM device is described in one level of the device node.
+
+======================================
+First Level Node - CAM EEPROM device
+======================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,eeprom".
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- qcom,eeprom-name
+ Usage: required
+ Value type: <string>
+ Definition: Name of the EEPROM HW.
+
+- qcom,slave-addr
+ Usage: required
+ Value type: <u32>
+ Definition: Slave address of the EEPROM HW.
+
+- qcom,num-blocks
+ Usage: required
+ Value type: <u32>
+ Definition: Total block number that eeprom contains.
+
+- qcom,pageX
+ Usage: required
+ Value type: <u32>
+ Definition: List of values specifying page size, start address,
+ address type, data, data type, delay in ms.
+ size 0 stand for non-paged.
+
+- qcom,pollX
+ Usage: required
+ Value type: <u32>
+ Definition: List of values specifying poll size, poll reg address,
+ address type, data, data type, delay in ms.
+ size 0 stand for not used.
+
+- qcom,memX
+ Usage: required
+ Value type: <u32>
+ Definition: List of values specifying memory size, start address,
+ address type, data, data type, delay in ms.
+ size 0 stand for not used.
+
+- qcom,saddrX
+ Usage: required
+ Value type: <u32>
+ Definition: property should specify the slave address for block (%d).
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for EEPROM HW.
+
+- qcom,cmm-data-support
+ Usage: required
+ Value type: <u32>
+ Definition: Camera MultiModule data capability flag..
+
+- qcom,cmm-data-compressed
+ Usage: required
+ Value type: <u32>
+ Definition: Camera MultiModule data compression flag.
+
+- qcom,cmm-data-offset
+ Usage: required
+ Value type: <u32>
+ Definition: Camera MultiModule data start offset.
+
+- qcom,cmm-data-size
+ Usage: required
+ Value type: <u32>
+ Definition: Camera MultiModule data size.
+
+- qcom,cam-power-seq-type
+ Usage: required
+ Value type: <string>
+ Definition: should specify the power on sequence types.
+
+- qcom,cam-power-seq-val
+ Usage: required
+ Value type: <string>
+ Definition: should specify the power on sequence values.
+
+- qcom,cam-power-seq-cfg-val
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the power on sequence config values.
+
+- qcom,cam-power-seq-delay
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the power on sequence delay time in ms.
+
+- spiop-read
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI read operation related data.
+
+- spiop-readseq
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI read sequence operation realted data.
+
+- spiop-queryid
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI query eeprom id operation related data.
+
+- spiop-pprog:
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI page program operation related data.
+
+- spiop-wenable
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI write enable operation related data.
+
+- spiop-readst
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI read destination operation related data.
+
+- spiop-erase
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides SPI erase operation related data.
+
+- eeprom-idx
+ Usage: required
+ Value type: <u32>
+ Definition: this array provides eeprom id realted data.
+
+- xxxx-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed in
+ "regulator-names".
+
+- rgltr-cntrl-support
+ Usage: required
+ Value type: <bool>
+ Definition: This property specifies if the regulator control is supported
+ e.g. rgltr-min-voltage.
+
+- rgltr-min-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain minimum voltage level for regulators
+ mentioned in regulator-names property.
+
+- rgltr-max-voltage
+ Usage: required
+ Value type: <u32>
+ Definition: should contain maximum voltage level for regulators
+ mentioned in regulator-names property.
+
+- rgltr-load-current
+ Usage: required
+ Value type: <u32>
+ Definition: should contain the maximum current in microamps required for
+ the regulators mentioned in regulator-names property.
+
+- gpio-no-mux
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio mux type.
+
+- gpios
+ Usage: required
+ Value type: <phandle>
+ Definition: should specify the gpios to be used for the eeprom.
+
+- gpio-reset
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the reset gpio index.
+
+- gpio-standby
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the standby gpio index.
+
+- gpio-req-tbl-num
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio table index.
+
+- gpio-req-tbl-flags
+ Usage: required
+ Value type: <u32>
+ Definition: should specify the gpio functions.
+
+- gpio-req-tbl-label
+ Usage: required
+ Value type: <string>
+ Definition: should specify the gpio labels.
+
+- sensor-position
+ Usage: required
+ Value type: <u32>
+ Definition: should contain the mount angle of the camera sensor.
+
+- cci-device
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c device id to be used for this camera
+ sensor
+
+- cci-master
+ Usage: required
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ sensor.
+
+- sensor-mode
+ Usage: required
+ Value type: <u32>
+ Definition: should contain sensor mode supported.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: says what all different clock levels eeprom node has.
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for EEPROM HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for EEPROM HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+Example:
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ qcom,eeprom-name = "msm_eeprom";
+ eeprom-id0 = <0xF8 0x15>;
+ eeprom-id1 = <0xEF 0x15>;
+ eeprom-id2 = <0xC2 0x36>;
+ eeprom-id3 = <0xC8 0x15>;
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0x60>;
+ qcom,num-blocks = <2>;
+ qcom,page0 = <1 0x100 2 0x01 1 1>;
+ qcom,poll0 = <0 0x0 2 0 1 1>;
+ qcom,mem0 = <0 0x0 2 0 1 0>;
+ qcom,page1 = <1 0x0200 2 0x8 1 1>;
+ qcom,pageen1 = <1 0x0202 2 0x01 1 10>;
+ qcom,poll1 = <0 0x0 2 0 1 1>;
+ qcom,mem1 = <32 0x3000 2 0 1 0>;
+ qcom,saddr1 = <0x62>;
+ qcom,cmm-data-support;
+ qcom,cmm-data-compressed;
+ qcom,cmm-data-offset = <0>;
+ qcom,cmm-data-size = <0>;
+ spiop-read = <0x03 3 0 0 0>;
+ spiop-readseq = <0x03 3 0 0 0>;
+ spiop-queryid = <0x90 3 0 0 0>;
+ spiop-pprog = <0x02 3 0 3 100>;
+ spiop-wenable = <0x06 0 0 0 0>;
+ spiop-readst = <0x05 0 0 0 0>;
+ spiop-erase = <0x20 3 0 10 100>;
+ qcom,cam-power-seq-type = "sensor_vreg",
+ "sensor_vreg", "sensor_clk",
+ "sensor_gpio", "sensor_gpio";
+ qcom,cam-power-seq-val = "cam_vdig",
+ "cam_vio", "sensor_cam_mclk",
+ "sensor_gpio_reset",
+ "sensor_gpio_standby";
+ qcom,cam-power-seq-cfg-val = <1 1 24000000 1 1>;
+ qcom,cam-power-seq-delay = <1 1 5 5 10>;
+ cam_vdig-supply = <&pm8998_l5>;
+ cam_vio-supply = <&pm8998_lvs1>;
+ regulator-names = "cam_vdig", "cam_vio";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1200000 0>;
+ rgltr-max-voltage = <1200000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ qcom,gpio-no-mux = <0>;
+ gpios = <&msmgpio 26 0>,
+ <&msmgpio 37 0>,
+ <&msmgpio 36 0>;
+ gpio-reset = <1>;
+ gpio-standby = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-cntl-level = "turbo";
+ clock-names = "cam_clk";
+ clock-rates = <24000000>;
+ };
diff --git a/bindings/msm-cam-fd.txt b/bindings/msm-cam-fd.txt
new file mode 100644
index 0000000..51b0bab
--- /dev/null
+++ b/bindings/msm-cam-fd.txt
@@ -0,0 +1,154 @@
+* Qualcomm Technologies, Inc. MSM Camera FD
+
+The MSM camera Face Detection device provides dependency definitions
+for enabling Camera FD HW. MSM camera FD is implemented in multiple
+device nodes. The root FD device node has properties defined to hint
+the driver about the FD HW nodes available during the probe sequence.
+Each node has multiple properties defined for interrupts, clocks and
+regulators.
+
+=======================
+Required Node Structure
+=======================
+FD root interface node takes care of the handling Face Detection high level
+driver handling and controls underlying FD hardware present.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-fd".
+
+- compat-hw-name
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,fd".
+
+- num-fd
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported FD HW blocks.
+
+Example:
+ qcom,cam-fd {
+ compatible = "qcom,cam-fd";
+ compat-hw-name = "qcom,fd";
+ num-fd = <1>;
+ };
+
+=======================
+Required Node Structure
+=======================
+FD Node provides interface for Face Detection hardware driver
+about the device register map, interrupt map, clocks, regulators.
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be one of "qcom,fd41", "qcom,fd501",
+ "qcom,fd600".
+
+- reg-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the register resources.
+
+- reg
+ Usage: optional
+ Value type: <u32>
+ Definition: Register values.
+
+- reg-cam-base
+ Usage: optional
+ Value type: <u32>
+ Definition: Offset of the register space compared to
+ to Camera base register space.
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt line associated with FD HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for FD HW.
+
+- camss-vdd-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for FD HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks required for FD HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+- clock-control-debugfs
+ Usage: optional
+ Value type: <string>
+ Definition: Enable/Disable clk rate control.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels.
+ Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo.
+
+Examples:
+ cam_fd: qcom,fd@ac5a000 {
+ cell-index = <0>;
+ compatible = "qcom,fd600";
+ reg-names = "fd_core", "fd_wrapper";
+ reg = <0xac5a000 0x1000>,
+ <0xac5b000 0x400>;
+ reg-cam-base = <0x5a000 0x5b000>;
+ interrupt-names = "fd";
+ interrupts = <0 462 0>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names = "gcc_ahb_clk",
+ "gcc_axi_clk",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk",
+ "fd_core_clk_src",
+ "fd_core_clk",
+ "fd_core_uar_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_FD_CORE_CLK_SRC>,
+ <&clock_camcc CAM_CC_FD_CORE_CLK>,
+ <&clock_camcc CAM_CC_FD_CORE_UAR_CLK>;
+ src-clock-name = "fd_core_clk_src";
+ clock-cntl-level = "svs";
+ clock-rates = <0 0 0 0 0 400000000 0 0>;
+ };
diff --git a/bindings/msm-cam-icp.txt b/bindings/msm-cam-icp.txt
new file mode 100644
index 0000000..e22e1f9
--- /dev/null
+++ b/bindings/msm-cam-icp.txt
@@ -0,0 +1,287 @@
+* Qualcomm Technologies, Inc. MSM Camera ICP
+
+The MSM camera ICP devices are implemented multiple device nodes.
+The root icp device node has properties defined to hint the driver
+about the number of A5,IPE and BPS nodes available during the
+probe sequence. Each node has multiple properties defined
+for interrupts, clocks and regulators.
+
+=======================
+Required Node Structure
+=======================
+ICP root interface node takes care of the handling account for number
+of A5, IPE and BPS devices present on the hardware.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-icp".
+
+- compat-hw-name
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,a5" or "qcom,ipe0" or "qcom,ipe1" or "qcom,bps".
+
+- num-a5
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported A5 processors.
+
+- num-ipe
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported IPE HW blocks.
+
+- num-bps
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported BPS HW blocks.
+
+Example:
+ qcom,cam-icp {
+ compatible = "qcom,cam-icp";
+ compat-hw-name = "qcom,a5", "qcom,ipe0", "qcom,ipe1", "qcom,bps";
+ num-a5 = <1>;
+ num-ipe = <2>;
+ num-bps = <1>;
+ status = "ok";
+ };
+
+=======================
+Required Node Structure
+=======================
+A5/IPE/BPS Node's provides interface for Image Control Processor driver
+about the A5 register map, interrupt map, clocks, regulators
+and name of firmware image.
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-a5" or "qcom,cam-ipe" or "qcom,cam-bps".
+
+- reg-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the register resources.
+
+- reg
+ Usage: optional
+ Value type: <u32>
+ Definition: Register values.
+
+- reg-cam-base
+ Usage: optional
+ Value type: <u32>
+ Definition: Register values.
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt associated with CDM HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for CDM HW.
+
+- camss-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for CDM HW.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+- clock-control-debugfs
+ Usage: optional
+ Value type: <string>
+ Definition: Enable/Disable clk rate control.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for CDM HW.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels.
+ Supported strings: lowsvs, svs, svs_l1, nominal, turbo.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- fw_name
+ Usage: optional
+ Value type: <string>
+ Definition: Name of firmware image.
+
+- ubwc-ipe-fetch-cfg
+ Usage: required
+ Value type: <u32>
+ Definition: UBWC IPE fetch configuration based on DDR device type.
+
+- ubwc-ipe-write-cfg
+ Usage: required
+ Value type: <u32>
+ Definition: UBWC IPE write configuration based on DDR device type.
+
+- ubwc-bps-fetch-cfg
+ Usage: required
+ Value type: <u32>
+ Definition: UBWC BPS fetch configuration based on DDR device type.
+
+- ubwc-bps-write-cfg
+ Usage: required
+ Value type: <u32>
+ Definition: UBWC BPS write configuration based on DDR device type.
+
+- ubwc-cfg
+ Usage: optional
+ Value type: <u32>
+ Definition: UBWC configuration, this is mandatory if above
+ ipe/bps ubwc properties are not used.
+
+Examples:
+a5: qcom,a5@ac00000 {
+ cell-index = <0>;
+ compatible = "qcom,cam-a5";
+ reg = <0xac00000 0x6000>,
+ <0xac10000 0x8000>,
+ <0xac18000 0x3000>;
+ reg-names = "a5_qgic", "a5_sierra", "a5_csr";
+ interrupts = <0 463 0>;
+ interrupt-names = "a5";
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names = "gcc_cam_ahb_clk",
+ "gcc_cam_axi_clk",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk",
+ "icp_apb_clk",
+ "icp_atb_clk",
+ "icp_clk",
+ "icp_clk_src",
+ "icp_cti_clk",
+ "icp_ts_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_ICP_APB_CLK>,
+ <&clock_camcc CAM_CC_ICP_ATB_CLK>,
+ <&clock_camcc CAM_CC_ICP_CLK>,
+ <&clock_camcc CAM_CC_ICP_CLK_SRC>,
+ <&clock_camcc CAM_CC_ICP_CTI_CLK>,
+ <&clock_camcc CAM_CC_ICP_TS_CLK>;
+
+ clock-rates = <0 0 0 80000000 0 0 0 0 600000000 0 0>;
+ clock-cntl-level = "turbo";
+ fw_name = "CAMERA_ICP.elf";
+ /* "ubwc-cfg" is not used, even if defined the new property
+ tags will be priortized. If the new properties are not used
+ please specify "ubwc-cfg" in that case */
+ ubwc-ipe-fetch-cfg = <0x707b 0x7083>;
+ ubwc-ipe-write-cfg = <0x161ef 0x1620f>;
+ ubwc-bps-fetch-cfg = <0x707b 0x7083>
+ ubwc-bps-write-cfg = <0x161ef 0x1620f>;
+
+qcom,ipe0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-ipe";
+ regulator-names = "ipe0-vdd";
+ ipe0-vdd-supply = <&ipe_0_gdsc>;
+ clock-names = "ipe_0_ahb_clk",
+ "ipe_0_areg_clk",
+ "ipe_0_axi_clk",
+ "ipe_0_clk",
+ "ipe_0_clk_src";
+ src-clock-name = "ipe_0_clk_src";
+ clocks = <&clock_camcc CAM_CC_IPE_0_AHB_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_AREG_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_AXI_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_CLK_SRC>;
+
+ clock-rates = <0 0 0 0 240000000>,
+ <0 0 0 0 404000000>,
+ <0 0 0 0 480000000>,
+ <0 0 0 0 538000000>,
+ <0 0 0 0 600000000>;
+ clock-cntl-level = "lowsvs", "svs",
+ "svs_l1", "nominal", "turbo";
+};
+
+qcom,ipe1 {
+ cell-index = <1>;
+ compatible = "qcom,cam-ipe";
+ regulator-names = "ipe1-vdd";
+ ipe1-vdd-supply = <&ipe_1_gdsc>;
+ clock-names = "ipe_1_ahb_clk",
+ "ipe_1_areg_clk",
+ "ipe_1_axi_clk",
+ "ipe_1_clk",
+ "ipe_1_clk_src";
+ src-clock-name = "ipe_1_clk_src";
+ clocks = <&clock_camcc CAM_CC_IPE_1_AHB_CLK>,
+ <&clock_camcc CAM_CC_IPE_1_AREG_CLK>,
+ <&clock_camcc CAM_CC_IPE_1_AXI_CLK>,
+ <&clock_camcc CAM_CC_IPE_1_CLK>,
+ <&clock_camcc CAM_CC_IPE_1_CLK_SRC>;
+
+ clock-rates = <0 0 0 0 240000000>,
+ <0 0 0 0 404000000>,
+ <0 0 0 0 480000000>,
+ <0 0 0 0 538000000>,
+ <0 0 0 0 600000000>;
+ clock-cntl-level = "lowsvs", "svs",
+ "svs_l1", "nominal", "turbo";
+};
+
+bps: qcom,bps {
+ cell-index = <0>;
+ compatible = "qcom,cam-bps";
+ regulator-names = "bps-vdd";
+ bps-vdd-supply = <&bps_gdsc>;
+ clock-names = "bps_ahb_clk",
+ "bps_areg_clk",
+ "bps_axi_clk",
+ "bps_clk",
+ "bps_clk_src";
+ src-clock-name = "bps_clk_src";
+ clocks = <&clock_camcc CAM_CC_BPS_AHB_CLK>,
+ <&clock_camcc CAM_CC_BPS_AREG_CLK>,
+ <&clock_camcc CAM_CC_BPS_AXI_CLK>,
+ <&clock_camcc CAM_CC_BPS_CLK>,
+ <&clock_camcc CAM_CC_BPS_CLK_SRC>;
+
+ clock-rates = <0 0 0 0 200000000>,
+ <0 0 0 0 404000000>,
+ <0 0 0 0 480000000>,
+ <0 0 0 0 600000000>,
+ <0 0 0 0 600000000>;
+ clock-cntl-level = "lowsvs", "svs",
+ "svs_l1", "nominal", "turbo";
+};
diff --git a/bindings/msm-cam-ife-csid.txt b/bindings/msm-cam-ife-csid.txt
new file mode 100644
index 0000000..9d1af95
--- /dev/null
+++ b/bindings/msm-cam-ife-csid.txt
@@ -0,0 +1,121 @@
+* Qualcomm Technologies, Inc. MSM Camera IFE CSID
+
+Camera IFE CSID device provides the definitions for enabling
+the IFE CSID hardware. It also provides the functions for the client
+to control the IFE CSID hardware.
+
+=======================
+Required Node Structure
+=======================
+The IFE CSID device is described in one level of the device node.
+
+======================================
+First Level Node - CAM IFE CSID device
+======================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,csid170", "qcom,csid175", "qcom,csid175_200",
+ "qcom,csid480", "qcom,csid-lite170", "qcom,csid-lite175"
+ or "qcom,csid-lite480".
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the hardware index id.
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Should be "csid".
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- interrupt-names
+ Usage: Required
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: Required
+ Value type: <u32>
+ Definition: Interrupt associated with IFE CSID HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for IFE CSID HW.
+
+- xxxx-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed in
+ "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for IFE CSID HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for IFE CSID HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: All different clock level node can support.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+- clock-control-debugfs
+ Usage: optional
+ Value type: <string>
+ Definition: Enable/Disable clk rate control.
+
+Example:
+
+ qcom,csid0@acb3000 {
+ cell-index = <0>;
+ compatible = "qcom,csid480";
+ reg = <0xacb3000 0x1000>;
+ reg-names = "csid";
+ interrupts = <0 464 0>;
+ interrupt-names = "csid";
+ vdd-names = "camss", "ife0";
+ camss-supply = <&titan_top_gdsc>;
+ ife0-supply = <&ife_0_gdsc>;
+ clock-names = "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "slow_ahb_clk_src",
+ "ife_clk",
+ "ife_clk_src",
+ "ife_csid_clk",
+ "ife_csid_clk_src",
+ "ife_cphy_rx_clk",
+ "cphy_rx_clk_src";
+ clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
+ <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>;
+ clock-rates = <0 0 80000000 0 320000000 0 384000000 0 384000000>;
+ src-clock-name = "ife_csid_clk_src";
+ status = "ok";
+ };
diff --git a/bindings/msm-cam-isp.txt b/bindings/msm-cam-isp.txt
new file mode 100644
index 0000000..896eb9f
--- /dev/null
+++ b/bindings/msm-cam-isp.txt
@@ -0,0 +1,36 @@
+* Qualcomm Technologies, Inc. MSM Camera ISP
+
+The MSM camera ISP driver provides the definitions for enabling
+the Camera ISP hadware. It provides the functions for the Client to
+control the ISP hardware.
+
+=======================
+Required Node Structure
+=======================
+The camera ISP device is described in one level of device node.
+
+==================================
+First Level Node - CAM ISP device
+==================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-isp".
+
+- arch-compat
+ Usage: required
+ Value type: <string>
+ Definition: Should be "vfe" or "ife".
+
+- ubwc-static-cfg
+ Usage: optional
+ Value type: <u32>
+ Definition: IFE UBWC static configuration based on DDR device type.
+
+Example:
+
+ qcom,cam-isp {
+ compatible = "qcom,cam-isp";
+ arch-compat = "ife";
+ status = "ok";
+ };
diff --git a/bindings/msm-cam-jpeg.txt b/bindings/msm-cam-jpeg.txt
new file mode 100644
index 0000000..73e99b2
--- /dev/null
+++ b/bindings/msm-cam-jpeg.txt
@@ -0,0 +1,186 @@
+* Qualcomm Technologies, Inc. MSM Camera JPEG
+
+The MSM camera JPEG devices are implemented multiple device nodes.
+The root JPEG device node has properties defined to hint the driver
+about the number of Encoder and DMA nodes available during the
+probe sequence. Each node has multiple properties defined
+for interrupts, clocks and regulators.
+
+=======================
+Required Node Structure
+=======================
+JPEG root interface node takes care of the handling account for number
+of Encoder and DMA devices present on the hardware.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-jpeg".
+
+- compat-hw-name
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,jpegenc" or "qcom,jpegdma".
+
+- num-jpeg-enc
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported Encoder HW blocks.
+
+- num-jpeg-dma
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported DMA HW blocks.
+
+Example:
+ qcom,cam-jpeg {
+ compatible = "qcom,cam-jpeg";
+ compat-hw-name = "qcom,jpegenc",
+ "qcom,jpegdma";
+ num-jpeg-enc = <1>;
+ num-jpeg-dma = <1>;
+ status = "ok";
+ };
+
+
+=======================
+Required Node Structure
+=======================
+Encoder/DMA Nodes provide interface for JPEG driver about
+the device register map, interrupt map, clocks and regulators.
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam_jpeg_enc".
+
+- reg-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the register resources.
+
+- reg
+ Usage: optional
+ Value type: <u32>
+ Definition: Register values.
+
+- reg-cam-base
+ Usage: optional
+ Value type: <u32>
+ Definition: Offset of the register space compared to
+ to Camera base register space.
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt associated with JPEG HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for JPEG HW.
+
+- camss-vdd-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for JPEG HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for JPEG HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels.
+ Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo.
+
+Examples:
+ cam_jpeg_enc: qcom,jpegenc@ac4e000 {
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_enc";
+ reg-names = "jpege_hw";
+ reg = <0xac4e000 0x4000>;
+ reg-cam-base = <0x4e000>;
+ interrupt-names = "jpeg";
+ interrupts = <0 474 0>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names = "camera_ahb",
+ "camera_axi",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk",
+ "jpegenc_clk_src",
+ "jpegenc_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
+ <&clock_camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <0 0 0 0 0 600000000 0>;
+ src-clock-name = "jpegenc_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
+
+ cam_jpeg_dma: qcom,jpegdma@0xac52000{
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_dma";
+ reg-names = "jpegdma_hw";
+ reg = <0xac52000 0x4000>;
+ reg-cam-base = <0x52000>;
+ interrupt-names = "jpegdma";
+ interrupts = <0 475 0>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names = "camera_ahb",
+ "camera_axi",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk",
+ "jpegdma_clk_src",
+ "jpegdma_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
+ <&clock_camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <0 0 0 0 0 600000000 0>;
+ src-clock-name = "jpegdma_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
diff --git a/bindings/msm-cam-lrme.txt b/bindings/msm-cam-lrme.txt
new file mode 100644
index 0000000..409be3f
--- /dev/null
+++ b/bindings/msm-cam-lrme.txt
@@ -0,0 +1,148 @@
+* Qualcomm Technologies, Inc. MSM Camera LRME
+
+The MSM camera Low Resolution Motion Estimation device provides dependency
+definitions for enabling Camera LRME HW. MSM camera LRME is implemented in
+multiple device nodes. The root LRME device node has properties defined to
+hint the driver about the LRME HW nodes available during the probe sequence.
+Each node has multiple properties defined for interrupts, clocks and
+regulators.
+
+=======================
+Required Node Structure
+=======================
+LRME root interface node takes care of the handling LRME high level
+driver handling and controls underlying LRME hardware present.
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,cam-lrme"
+
+- compat-hw-name
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,lrme"
+
+- num-lrme
+ Usage: required
+ Value type: <u32>
+ Definition: Number of supported LRME HW blocks
+
+Example:
+ qcom,cam-lrme {
+ compatible = "qcom,cam-lrme";
+ compat-hw-name = "qcom,lrme";
+ num-lrme = <1>;
+ };
+
+=======================
+Required Node Structure
+=======================
+LRME Node provides interface for Low Resolution Motion Estimation hardware
+driver about the device register map, interrupt map, clocks, regulators.
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Node instance number
+
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,lrme"
+
+- reg-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the register resources
+
+- reg
+ Usage: optional
+ Value type: <u32>
+ Definition: Register values
+
+- reg-cam-base
+ Usage: optional
+ Value type: <u32>
+ Definition: Offset of the register space compared to
+ to Camera base register space
+
+- interrupt-names
+ Usage: optional
+ Value type: <string>
+ Definition: Name of the interrupt
+
+- interrupts
+ Usage: optional
+ Value type: <u32>
+ Definition: Interrupt line associated with LRME HW
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for LRME HW
+
+- camss-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed
+ in "regulator-names"
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for LRME HW
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks required for LRME HW
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates
+
+- clock-cntl-level
+ Usage: required
+ Value type: <string>
+ Definition: List of strings corresponds clock-rates levels
+ Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name
+
+Examples:
+ cam_lrme: qcom,lrme@ac6b000 {
+ cell-index = <0>;
+ compatible = "qcom,lrme";
+ reg-names = "lrme";
+ reg = <0xac6b000 0xa00>;
+ reg-cam-base = <0x6b000>;
+ interrupt-names = "lrme";
+ interrupts = <0 476 0>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "camera_ahb",
+ "camera_axi",
+ "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk",
+ "lrme_clk_src",
+ "lrme_clk";
+ clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_AXI_CLK>,
+ <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_LRME_CLK_SRC>,
+ <&clock_camcc CAM_CC_LRME_CLK>;
+ clock-rates = <0 0 0 0 0 0 0>,
+ <0 0 0 0 0 19200000 19200000>,
+ <0 0 0 0 0 19200000 19200000>,
+ <0 0 0 0 0 19200000 19200000>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "lrme_core_clk_src";
+ };
diff --git a/bindings/msm-cam-smmu.txt b/bindings/msm-cam-smmu.txt
new file mode 100644
index 0000000..eca2bd8
--- /dev/null
+++ b/bindings/msm-cam-smmu.txt
@@ -0,0 +1,142 @@
+* Qualcomm Technologies, Inc. MSM Camera SMMU
+
+The MSM camera SMMU device provides SMMU context bank definitions
+for all HW blocks that need to map IOVA to physical memory. These
+definitions consist of various properties that define how the
+IOVA address space is laid out for each HW block in the camera
+subsystem.
+
+=======================
+Required Node Structure
+=======================
+The camera SMMU device must be described in three levels of device nodes. The
+first level describes the overall SMMU device. Within it, second level nodes
+describe individual context banks that map different stream ids. There can
+also be second level nodes describing firmware device nodes. Each HW block
+such as IFE, ICP maps into these second level device nodes. All context bank
+specific properties that define how the IOVA is laid out is contained within
+third level device nodes within the second level device nodes.
+
+During the kernel initialization all the devices are probed recursively and
+a device pointer is created for each context bank keeping track of the IOVA
+mapping information.
+
+Duplicate regions of the same type are not allowed within the same
+context bank. All context banks must contain an IO region at the very least.
+
+==================================
+First Level Node - CAM SMMU device
+==================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,msm-cam-smmu".
+
+===================================================================
+Second Level Node - CAM SMMU context bank device or firmware device
+===================================================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,msm-cam-smmu-cb" or "qcom,msm-cam-smmu-fw-dev".
+
+- memory-region
+ Usage: optional
+ Value type: <phandle>
+ Definition: Should specify the phandle of the memory region for firmware.
+ allocation
+
+- iommus
+ Usage: required
+ Value type: <phandle u32 u32>
+ Definition: first cell is phandle of the iommu, second cell is stream id
+ and third cell is SMR mask.
+
+- label
+ Usage: required
+ Value type: <string>
+ Definition: Should specify a string label to identify the context bank.
+
+- qcom,secure-cb
+ Usage: optional
+ Value type: boolean
+ Definition: Specifies if the context bank is a secure context bank.
+
+=============================================
+Third Level Node - CAM SMMU memory map device
+=============================================
+- iova-region-name
+ Usage: required
+ Value type: <string>
+ Definition: Should specify a string label to identify the IOVA region.
+
+- iova-region-start
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify start IOVA for region.
+
+- iova-region-len
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify length for IOVA region.
+
+- iova-region-id
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the numerical identifier for IOVA region.
+ Allowed values are: 0x00 to 0x03
+ - Firmware region: 0x00
+ - Shared region: 0x01
+ - Scratch region: 0x02
+ - IO region: 0x03
+
+- iova-granularity
+ Usage: optional
+ Value type: <u32>
+ Definition: Should specify IOVA granularity for shared memory region.
+
+Example:
+ qcom,cam_smmu@0 {
+ compatible = "qcom,msm-cam-smmu";
+
+ msm_cam_smmu_icp {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x1078>,
+ <&apps_smmu 0x1020>,
+ <&apps_smmu 0x1028>,
+ <&apps_smmu 0x1040>,
+ <&apps_smmu 0x1048>,
+ <&apps_smmu 0x1030>,
+ <&apps_smmu 0x1050>;
+ label = "icp";
+ icp_iova_mem_map: iova-mem-map {
+ iova-mem-region-firmware {
+ /* Firmware region is 5MB */
+ iova-region-name = "firmware";
+ iova-region-start = <0x0>;
+ iova-region-len = <0x500000>;
+ iova-region-id = <0x0>;
+ status = "ok";
+ };
+
+ iova-mem-region-shared {
+ /* Shared region is 100MB long */
+ iova-region-name = "shared";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0x6400000>;
+ iova-region-id = <0x1>;
+ iova-granularity = <0x15>;
+ status = "ok";
+ };
+
+ iova-mem-region-io {
+ /* IO region is approximately 3.5 GB */
+ iova-region-name = "io";
+ iova-region-start = <0xd800000>;
+ iova-region-len = <0xd2800000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+ };
diff --git a/bindings/msm-cam-vfe.txt b/bindings/msm-cam-vfe.txt
new file mode 100644
index 0000000..2866d67
--- /dev/null
+++ b/bindings/msm-cam-vfe.txt
@@ -0,0 +1,154 @@
+* Qualcomm Technologies, Inc. MSM Camera VFE
+
+Camera VFE device provides the definitions for enabling
+the VFE hardware. It also provides the functions for the client
+to control the VFE hardware.
+
+=======================
+Required Node Structure
+=======================
+The VFE device is described in one level of the device node.
+
+======================================
+First Level Node - CAM VFE device
+======================================
+Required properties:
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should specify the compatibility string for matching the
+ driver. e.g. "qcom,vfe480", "qcom,vfe175", "qcom,vfe170", "qcom,vfe175_130",
+ "qcom,vfe-lite480", "qcom,vfe-lite175", "qcom,vfe-lite175_130", "qcom,vfe-lite170".
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the hardware index id.
+
+- reg-names
+ Usage: required
+ Value type: <string>
+ Definition: Should specify the name of the register block.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- interrupt-names
+ Usage: Required
+ Value type: <string>
+ Definition: Name of the interrupt.
+
+- interrupts
+ Usage: Required
+ Value type: <u32>
+ Definition: Interrupt associated with VFE HW.
+
+- regulator-names
+ Usage: required
+ Value type: <string>
+ Definition: Name of the regulator resources for VFE HW.
+
+- xxxx-supply
+ Usage: required
+ Value type: <phandle>
+ Definition: Regulator reference corresponding to the names listed in
+ "regulator-names".
+
+- clock-names
+ Usage: required
+ Value type: <string>
+ Definition: List of clock names required for VFE HW.
+
+- clocks
+ Usage: required
+ Value type: <phandle>
+ Definition: List of clocks used for VFE HW.
+
+- clock-rates
+ Usage: required
+ Value type: <u32>
+ Definition: List of clocks rates.
+
+- src-clock-name
+ Usage: required
+ Value type: <string>
+ Definition: Source clock name.
+
+Optional properties:
+- clock-names-option
+ Usage: optional
+ Value type: <string>
+ Definition: Optional clock names.
+
+- clocks-option
+ Usage: required if clock-names-option defined
+ Value type: <phandle>
+ Definition: List of optinal clocks used for VFE HW.
+
+- clock-rates-option
+ Usage: required if clock-names-option defined
+ Value type: <u32>
+ Definition: List of clocks rates for optional clocks.
+
+- clock-control-debugfs
+ Usage: optional
+ Value type: <string>
+ Definition: Enable/Disable clk rate control.
+
+- qcom,cam-cx-ipeak:
+ Usage: optional
+ Value type: <phandle bit>
+ phandle - phandle of CX Ipeak device node
+ bit - Every bit corresponds to a client of CX Ipeak
+ Definition: CX Ipeak is a mitigation scheme which throttles camera frequency
+ if all the clients are running at their respective threshold
+ frequencies to limit CX peak current.
+ driver in the relevant register.
+
+- scl-clk-names:
+ Usage: optional
+ Value type: <string>
+ Definition: Scalable clock names to identify which clocks needs to update
+ along with source clock.
+
+Example:
+ qcom,vfe0@acaf000 {
+ cell-index = <0>;
+ compatible = "qcom,vfe480";
+ reg-names = "ife";
+ reg = <0xacaf000 0x4000>;
+ interrupts = <0 465 0>;
+ interrupt-names = "ife";
+ vdd-names = "camss-vdd", "ife0-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ ife0-vdd-supply = <&ife_0_gdsc>;
+ clock-names = "soc_ahb_clk",
+ "cpas_ahb_clk",
+ "slow_ahb_clk_src",
+ "ife_clk",
+ "ife_clk_src",
+ "ife_csid_clk",
+ "ife_csid_clk_src",
+ "camnoc_axi_clk",
+ "ife_axi_clk",
+ clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AXI_CLK>,
+ clock-rates = <0 0 80000000 0 320000000 0 384000000 0 0 0>;
+ src-clock-name = "ife_clk_src";
+ clock-names-option = "ife_dsp_clk";
+ clocks-option = <&clock_camcc CAM_CC_IFE_0_DSP_CLK>;
+ clock-rates-option = <600000000>;
+ scl-clk-en;
+ scl-clk-names = "ife_axi_clk";
+ qcom,cam-cx-ipeak = <&cx_ipeak_lm 2>;
+ status = "ok";
+ };
diff --git a/bindings/msm-camera-flash.txt b/bindings/msm-camera-flash.txt
new file mode 100644
index 0000000..ab81329
--- /dev/null
+++ b/bindings/msm-camera-flash.txt
@@ -0,0 +1,132 @@
+* Qualcomm Technologies, Inc. MSM FLASH
+
+The MSM camera Flash driver provides the definitions for
+enabling and disabling LED Torch/Flash by requesting it to
+PMIC/I2C/GPIO based hardware. It provides the functions for
+the Client to control the Flash hardware.
+
+=======================================================
+Required Node Structure
+=======================================================
+The Flash device is described in one level of the device node.
+
+======================================
+First Level Node - CAM FLASH device
+======================================
+- compatible
+ Usage: required
+ Value type: <string>
+ Definition: Should be "qcom,camera-flash".
+
+- cell-index
+ Usage: required
+ Value type: <u32>
+ Definition: Should specify the hardware index id.
+
+- reg
+ Usage: required
+ Value type: <u32>
+ Definition: Register values.
+
+- flash-source
+ Usage: required
+ Value type: <phandle>
+ Definition: Should contain array of phandles to Flash source nodes.
+
+- torch-source
+ Usage: required
+ Value type: <phandle>
+ Definition: Should contain array of phandles to torch source nodes.
+
+- switch-source
+ Usage: Optional
+ Value type: <phandle>
+ Definition: Should contain phandle to switch source nodes.
+
+- slave-id
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain i2c slave address, device id address
+ and expected id read value.
+
+- cci-master
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain i2c master id to be used for this camera
+ flash.
+
+- max-current
+ Usage: optional
+ Value type: <u32>
+ Definition: Max current in mA supported by flash
+
+- max-duration
+ Usage: optional
+ Value type: <u32>
+ Definition: Max duration in ms flash can glow.
+
+- wled-flash-support
+ Usage: optional
+ Value type: <boolean>
+ Definition: To identity wled flash hardware support.
+
+- gpios
+ Usage: optional
+ Value type: <u32>
+ Definition: should specify the gpios to be used for the flash.
+
+- gpio-req-tbl-num
+ Usage: optional
+ Value type: <u32>
+ Definition: should specify the gpio table index.
+
+- gpio-req-tbl-flags
+ Usage: optional
+ Value type: <u32>
+ Definition: should specify the gpio functions.
+
+- gpio-req-tbl-label
+ Usage: optional
+ Value type: <u32>
+ Definition: should specify the gpio labels.
+
+- gpio-flash-reset
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by flash's "flash reset" pin.
+
+- gpio-flash-en
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by flash's "flash enable" pin.
+
+- gpio-flash-now
+ Usage: optional
+ Value type: <u32>
+ Definition: should contain index to gpio used by flash's "flash now" pin.
+
+Example:
+
+led_flash_rear: qcom,camera-flash@0 {
+ reg = <0x00 0x00>;
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pmi8998_flash0 &pmi8998_flash1>;
+ torch-source = <&pmi8998_torch0 &pmi8998_torch1>;
+ switch-source = <&pmi8998_switch0>;
+ wled-flash-support;
+ qcom,slave-id = <0x00 0x00 0x0011>;
+ qcom,cci-master = <0>;
+ gpios = <&msmgpio 23 0>,
+ <&msmgpio 24 0>;
+ <&msmgpio 25 0>;
+ qcom,gpio-flash-reset = <0>;
+ qcom,gpio-flash-en = <0>;
+ qcom,gpio-flash-now = <1>;
+ qcom,gpio-req-tbl-num = <0 1>;
+ qcom,gpio-req-tbl-flags = <0 0>;
+ qcom,gpio-req-tbl-label = "FLASH_EN",
+ "FLASH_NOW";
+ qcom,max-current = <1500>;
+ qcom,max-duration = <1200>;
+ };
diff --git a/bindings/msm-camera.txt b/bindings/msm-camera.txt
new file mode 100644
index 0000000..04548ca
--- /dev/null
+++ b/bindings/msm-camera.txt
@@ -0,0 +1,13 @@
+* Qualcomm Technologies, Inc. MSM Camera
+
+Required properties:
+- compatible :
+ - "qcom,cam-req-mgr"
+- qcom,sensor-manual-probe : specify if sensor probes at kernel boot time or user driven
+
+Example:
+
+ qcom,cam-req-mgr {
+ compatible = "qcom,cam-req-mgr";
+ qcom,sensor-manual-probe;
+ };
diff --git a/kona-camera-sensor-cdp.dtsi b/kona-camera-sensor-cdp.dtsi
new file mode 100644
index 0000000..dee387a
--- /dev/null
+++ b/kona-camera-sensor-cdp.dtsi
@@ -0,0 +1,674 @@
+#include <dt-bindings/clock/qcom,camcc-kona.h>
+
+&soc {
+ led_flash_rear: qcom,camera-flash0 {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_rear_aux: qcom,camera-flash1 {
+ cell-index = <1>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear: qcom,camera-flash@4 {
+ cell-index = <4>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux: qcom,camera-flash@5 {
+ cell-index = <5>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux2: qcom,camera-flash@6 {
+ cell-index = <6>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator0 {
+ cell-index = <0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_rear_aux: qcom,actuator1 {
+ cell-index = <1>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_wide: qcom,actuator4 {
+ cell-index = <4>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_tele: qcom,actuator5 {
+ cell-index = <5>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_uw: qcom,actuator6 {
+ cell-index = <6>;
+ compatible = "qcom,actuator";
+ cci-master = <1>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ eeprom_rear: qcom,eeprom0 {
+ cell-index = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom1 {
+ cell-index = <1>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_wide: qcom,eeprom4 {
+ cell-index = <4>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_tele: qcom,eeprom5 {
+ cell-index = <5>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_uw: qcom,eeprom6 {
+ cell-index = <6>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ 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_rear_aux>;
+ led-flash-src = <&led_flash_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor4 {
+ cell-index = <4>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_triple_wide>;
+ led-flash-src = <&led_flash_triple_rear>;
+ eeprom-src = <&eeprom_triple_wide>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor5 {
+ cell-index = <5>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ eeprom-src = <&eeprom_triple_tele>;
+ actuator-src = <&actuator_triple_tele>;
+ led-flash-src = <&led_flash_triple_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor6 {
+ cell-index = <6>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_triple_uw>;
+ actuator-src = <&actuator_triple_uw>;
+ led-flash-src = <&led_flash_triple_rear_aux2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ eeprom_front: qcom,eeprom2 {
+ cell-index = <2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <0 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <0 3000000 1056000 0 3104000>;
+ rgltr-load-current = <0 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_tof: qcom,eeprom3 {
+ cell-index = <3>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <0 3600000 0>;
+ rgltr-max-voltage = <0 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor3 {
+ cell-index = <3>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <3>;
+ eeprom-src = <&eeprom_tof>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 3600000 0>;
+ rgltr-max-voltage = <1800000 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
diff --git a/kona-camera-sensor-mtp.dtsi b/kona-camera-sensor-mtp.dtsi
new file mode 100644
index 0000000..a1dab47
--- /dev/null
+++ b/kona-camera-sensor-mtp.dtsi
@@ -0,0 +1,676 @@
+#include <dt-bindings/clock/qcom,camcc-kona.h>
+
+&soc {
+ led_flash_rear: qcom,camera-flash0 {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_rear_aux: qcom,camera-flash1 {
+ cell-index = <1>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear: qcom,camera-flash@4 {
+ cell-index = <4>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux: qcom,camera-flash@5 {
+ cell-index = <5>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux2: qcom,camera-flash@6 {
+ cell-index = <6>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator0 {
+ cell-index = <0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_rear_aux: qcom,actuator1 {
+ cell-index = <1>;
+ compatible = "qcom,actuator";
+ cci-master = <1>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_wide: qcom,actuator4 {
+ cell-index = <4>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_tele: qcom,actuator5 {
+ cell-index = <5>;
+ compatible = "qcom,actuator";
+ cci-master = <1>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ eeprom_rear: qcom,eeprom0 {
+ cell-index = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom1 {
+ cell-index = <1>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_wide: qcom,eeprom4 {
+ cell-index = <4>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_tele: qcom,eeprom5 {
+ cell-index = <5>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ 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_rear_aux>;
+ led-flash-src = <&led_flash_rear_aux>;
+ actuator-src = <&actuator_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor4 {
+ cell-index = <4>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_triple_wide>;
+ led-flash-src = <&led_flash_triple_rear>;
+ eeprom-src = <&eeprom_triple_wide>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor5 {
+ cell-index = <5>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ eeprom-src = <&eeprom_triple_tele>;
+ actuator-src = <&actuator_triple_tele>;
+ led-flash-src = <&led_flash_triple_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ actuator_triple_uw: qcom,actuator6 {
+ cell-index = <6>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ eeprom_front: qcom,eeprom2 {
+ cell-index = <2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_uw: qcom,eeprom6 {
+ cell-index = <6>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_tof: qcom,eeprom3 {
+ cell-index = <3>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <0 3600000 0>;
+ rgltr-max-voltage = <0 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor3 {
+ cell-index = <3>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <3>;
+ eeprom-src = <&eeprom_tof>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 3600000 0>;
+ rgltr-max-voltage = <1800000 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor6 {
+ cell-index = <6>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ eeprom-src = <&eeprom_triple_uw>;
+ actuator-src = <&actuator_triple_uw>;
+ led-flash-src = <&led_flash_triple_rear_aux2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
diff --git a/kona-camera-sensor-qrd.dtsi b/kona-camera-sensor-qrd.dtsi
new file mode 100644
index 0000000..9e69a98
--- /dev/null
+++ b/kona-camera-sensor-qrd.dtsi
@@ -0,0 +1,674 @@
+&soc {
+ led_flash_rear: qcom,camera-flash0 {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_rear_aux: qcom,camera-flash1 {
+ cell-index = <1>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear: qcom,camera-flash@4 {
+ cell-index = <4>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux: qcom,camera-flash@5 {
+ cell-index = <5>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ led_flash_triple_rear_aux2: qcom,camera-flash@6 {
+ cell-index = <6>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ status = "ok";
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator0 {
+ cell-index = <0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_rear_aux: qcom,actuator1 {
+ cell-index = <1>;
+ compatible = "qcom,actuator";
+ cci-master = <1>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_wide: qcom,actuator4 {
+ cell-index = <4>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_tele: qcom,actuator5 {
+ cell-index = <5>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ actuator_triple_uw: qcom,actuator6 {
+ cell-index = <6>;
+ compatible = "qcom,actuator";
+ cci-master = <1>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2856000>;
+ rgltr-max-voltage = <3104000>;
+ rgltr-load-current = <100000>;
+ };
+
+ eeprom_rear: qcom,eeprom0 {
+ cell-index = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom1 {
+ cell-index = <1>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_wide: qcom,eeprom4 {
+ cell-index = <4>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_tele: qcom,eeprom5 {
+ cell-index = <5>;
+ compatible = "qcom,eeprom";
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_uw: qcom,eeprom6 {
+ cell-index = <6>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ 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_rear_aux>;
+ led-flash-src = <&led_flash_rear_aux>;
+ actuator-src = <&actuator_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor4 {
+ cell-index = <4>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_triple_wide>;
+ led-flash-src = <&led_flash_triple_rear>;
+ eeprom-src = <&eeprom_triple_wide>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l5>;
+ cam_vdig-supply = <&pm8009_l1>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1104000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 94 0>,
+ <&tlmm 93 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor5 {
+ cell-index = <5>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ eeprom-src = <&eeprom_triple_tele>;
+ actuator-src = <&actuator_triple_tele>;
+ led-flash-src = <&led_flash_triple_rear_aux>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vdig-supply = <&pm8009_l2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1200000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1200000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 95 0>,
+ <&tlmm 92 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor6 {
+ cell-index = <6>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_triple_uw>;
+ actuator-src = <&actuator_triple_uw>;
+ led-flash-src = <&led_flash_triple_rear_aux2>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ eeprom_front: qcom,eeprom2 {
+ cell-index = <2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&pm8150a_l7>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2856000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3104000>;
+ rgltr-load-current = <120000 80000 1200000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_tof: qcom,eeprom3 {
+ cell-index = <3>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <0 3600000 0>;
+ rgltr-max-voltage = <0 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_bob-supply = <&pm8150a_bob>;
+ cam_vana-supply = <&pm8009_l6>;
+ cam_vdig-supply = <&pm8009_l3>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_bob";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 3008000>;
+ rgltr-max-voltage = <1800000 3000000 1056000 0 3960000>;
+ rgltr-load-current = <120000 80000 1200000 0 2000000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_rst2>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_rst2>;
+ gpios = <&tlmm 96 0>,
+ <&tlmm 78 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor3 {
+ cell-index = <3>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <3>;
+ eeprom-src = <&eeprom_tof>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ cam_vio-supply = <&pm8009_l7>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 3600000 0>;
+ rgltr-max-voltage = <1800000 3600000 0>;
+ rgltr-load-current = <180000 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 97 0>,
+ <&tlmm 109 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
diff --git a/kona-camera.dtsi b/kona-camera.dtsi
new file mode 100644
index 0000000..e9931d2
--- /dev/null
+++ b/kona-camera.dtsi
@@ -0,0 +1,1702 @@
+#include <dt-bindings/msm/msm-camera.h>
+
+&soc {
+ qcom,cam-req-mgr {
+ compatible = "qcom,cam-req-mgr";
+ status = "ok";
+ };
+
+ cam_csiphy0: qcom,csiphy@ac6a000 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0x0ac6a000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x6a000>;
+ interrupts = <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY0_CLK>,
+ <&clock_camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI0PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy0_clk",
+ "csi0phytimer_clk_src",
+ "csi0phytimer_clk";
+ src-clock-name = "csi0phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy1: qcom,csiphy@ac6c000 {
+ cell-index = <1>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0xac6c000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x6c000>;
+ interrupts = <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY1_CLK>,
+ <&clock_camcc CAM_CC_CSI1PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI1PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy1_clk",
+ "csi1phytimer_clk_src",
+ "csi1phytimer_clk";
+ src-clock-name = "csi1phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+
+ status = "ok";
+ };
+
+ cam_csiphy2: qcom,csiphy@ac6e000 {
+ cell-index = <2>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0xac6e000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x6e000>;
+ interrupts = <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY2_CLK>,
+ <&clock_camcc CAM_CC_CSI2PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI2PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy2_clk",
+ "csi2phytimer_clk_src",
+ "csi2phytimer_clk";
+ src-clock-name = "csi2phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy3: qcom,csiphy@ac70000 {
+ cell-index = <3>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0xac70000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x70000>;
+ interrupts = <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY3_CLK>,
+ <&clock_camcc CAM_CC_CSI3PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI3PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy3_clk",
+ "csi3phytimer_clk_src",
+ "csi3phytimer_clk";
+ src-clock-name = "csi3phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy4: qcom,csiphy@ac72000 {
+ cell-index = <4>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0xac72000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x72000>;
+ interrupts = <GIC_SPI 86 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY4_CLK>,
+ <&clock_camcc CAM_CC_CSI4PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI4PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy4_clk",
+ "csi4phytimer_clk_src",
+ "csi4phytimer_clk";
+ src-clock-name = "csi4phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy5: qcom,csiphy@ac74000 {
+ cell-index = <5>;
+ compatible = "qcom,csiphy-v1.2.1", "qcom,csiphy";
+ reg = <0xac74000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0x74000>;
+ interrupts = <GIC_SPI 89 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ regulator-names = "gdscr", "refgen";
+ csi-vdd-voltage = <1200000>;
+ mipi-csi-vdd-supply = <&pm8150_l9>;
+ clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSIPHY5_CLK>,
+ <&clock_camcc CAM_CC_CSI5PHYTIMER_CLK_SRC>,
+ <&clock_camcc CAM_CC_CSI5PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy5_clk",
+ "csi5phytimer_clk_src",
+ "csi5phytimer_clk";
+ src-clock-name = "csi5phytimer_clk_src";
+ clock-cntl-level = "turbo";
+ clock-rates =
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_cci0: qcom,cci@ac4f000 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ reg = <0xac4f000 0x1000>;
+ reg-names = "cci";
+ reg-cam-base = <0x4f000>;
+ interrupt-names = "cci";
+ interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
+ status = "ok";
+ gdscr-supply = <&titan_top_gdsc>;
+ regulator-names = "gdscr";
+ clocks = <&clock_camcc CAM_CC_CCI_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_CCI_0_CLK>;
+ clock-names = "cci_0_clk_src",
+ "cci_0_clk";
+ src-clock-name = "cci_0_clk_src";
+ clock-cntl-level = "lowsvs";
+ clock-rates = <37500000 0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cci0_active &cci1_active>;
+ pinctrl-1 = <&cci0_suspend &cci1_suspend>;
+ gpios = <&tlmm 101 0>,
+ <&tlmm 102 0>,
+ <&tlmm 103 0>,
+ <&tlmm 104 0>;
+ gpio-req-tbl-num = <0 1 2 3>;
+ gpio-req-tbl-flags = <1 1 1 1>;
+ gpio-req-tbl-label = "CCI_I2C_DATA0",
+ "CCI_I2C_CLK0",
+ "CCI_I2C_DATA1",
+ "CCI_I2C_CLK1";
+
+ 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 = <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 = <1>;
+ hw-trdhld = <6>;
+ 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,cci@ac50000 {
+ cell-index = <1>;
+ compatible = "qcom,cci";
+ reg = <0xac50000 0x1000>;
+ reg-names = "cci";
+ reg-cam-base = <0x50000>;
+ interrupt-names = "cci";
+ interrupts = <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>;
+ status = "ok";
+ gdscr-supply = <&titan_top_gdsc>;
+ regulator-names = "gdscr";
+ clocks = <&clock_camcc CAM_CC_CCI_1_CLK_SRC>,
+ <&clock_camcc CAM_CC_CCI_1_CLK>;
+ clock-names = "cci_1_clk_src",
+ "cci_1_clk";
+ src-clock-name = "cci_1_clk_src";
+ clock-cntl-level = "lowsvs";
+ clock-rates = <37500000 0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cci2_active &cci3_active>;
+ pinctrl-1 = <&cci2_suspend &cci3_suspend>;
+ gpios = <&tlmm 105 0>,
+ <&tlmm 106 0>,
+ <&tlmm 107 0>,
+ <&tlmm 108 0>;
+ gpio-req-tbl-num = <0 1 2 3>;
+ gpio-req-tbl-flags = <1 1 1 1>;
+ gpio-req-tbl-label = "CCI_I2C_DATA2",
+ "CCI_I2C_CLK2",
+ "CCI_I2C_DATA3",
+ "CCI_I2C_CLK3";
+
+ 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 = <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 = <1>;
+ hw-trdhld = <6>;
+ 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";
+ status = "ok";
+
+ msm_cam_smmu_ife {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x800 0x400>,
+ <&apps_smmu 0x801 0x400>,
+ <&apps_smmu 0x840 0x400>,
+ <&apps_smmu 0x841 0x400>,
+ <&apps_smmu 0xC00 0x400>,
+ <&apps_smmu 0xC01 0x400>,
+ <&apps_smmu 0xC40 0x400>,
+ <&apps_smmu 0xC41 0x400>;
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ label = "ife";
+ ife_iova_mem_map: iova-mem-map {
+ /* IO region is approximately 3.4 GB */
+ iova-mem-region-io {
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_jpeg {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x2040 0x400>,
+ <&apps_smmu 0x2440 0x400>;
+ label = "jpeg";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ jpeg_iova_mem_map: iova-mem-map {
+ /* IO region is approximately 3.4 GB */
+ iova-mem-region-io {
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_icp_fw {
+ compatible = "qcom,msm-cam-smmu-fw-dev";
+ label="icp";
+ memory-region = <&pil_camera_mem>;
+ };
+
+ msm_cam_smmu_icp {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x20E2 0x400>,
+ <&apps_smmu 0x24E2 0x400>,
+ <&apps_smmu 0x2000 0x400>,
+ <&apps_smmu 0x2001 0x400>,
+ <&apps_smmu 0x2400 0x400>,
+ <&apps_smmu 0x2401 0x400>,
+ <&apps_smmu 0x2060 0x400>,
+ <&apps_smmu 0x2061 0x400>,
+ <&apps_smmu 0x2460 0x400>,
+ <&apps_smmu 0x2461 0x400>,
+ <&apps_smmu 0x2020 0x400>,
+ <&apps_smmu 0x2021 0x400>,
+ <&apps_smmu 0x2420 0x400>,
+ <&apps_smmu 0x2421 0x400>;
+ label = "icp";
+ qcom,iommu-dma-addr-pool = <0xda00000 0xace00000>;
+ icp_iova_mem_map: iova-mem-map {
+ iova-mem-region-firmware {
+ /* Firmware region is 5MB */
+ iova-region-name = "firmware";
+ iova-region-start = <0x0>;
+ iova-region-len = <0x500000>;
+ iova-region-id = <0x0>;
+ status = "ok";
+ };
+
+ iova-mem-region-shared {
+ /* Shared region is 150MB long */
+ iova-region-name = "shared";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0x9600000>;
+ iova-region-id = <0x1>;
+ status = "ok";
+ };
+
+ iova-mem-region-secondary-heap {
+ /* Secondary heap region is 1MB long */
+ iova-region-name = "secheap";
+ iova-region-start = <0x10a00000>;
+ iova-region-len = <0x100000>;
+ iova-region-id = <0x4>;
+ status = "ok";
+ };
+
+ iova-mem-region-io {
+ /* IO region is approximately 3.3 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x10c00000>;
+ iova-region-len = <0xcf300000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+
+ iova-mem-qdss-region {
+ /* QDSS region is appropriate 1MB */
+ iova-region-name = "qdss";
+ iova-region-start = <0x10b00000>;
+ iova-region-len = <0x100000>;
+ iova-region-id = <0x5>;
+ qdss-phy-addr = <0x16790000>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_cpas_cdm {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x20C0 0x400>,
+ <&apps_smmu 0x24C0 0x400>;
+ label = "cpas-cdm0";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ cpas_cdm_iova_mem_map: iova-mem-map {
+ iova-mem-region-io {
+ /* IO region is approximately 3.4 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_secure {
+ compatible = "qcom,msm-cam-smmu-cb";
+ label = "cam-secure";
+ qcom,secure-cb;
+ };
+
+ msm_cam_smmu_fd {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x2080 0x400>,
+ <&apps_smmu 0x2480 0x400>;
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ label = "fd";
+ fd_iova_mem_map: iova-mem-map {
+ iova-mem-region-io {
+ /* IO region is approximately 3.4 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+ };
+
+ qcom,cam-cpas@ac40000 {
+ cell-index = <0>;
+ compatible = "qcom,cam-cpas";
+ label = "cpas";
+ arch-compat = "cpas_top";
+ status = "ok";
+ reg-names = "cam_cpas_top", "cam_camnoc";
+ reg = <0xac40000 0x1000>,
+ <0xac42000 0x8000>;
+ reg-cam-base = <0x40000 0x42000>;
+ interrupt-names = "cpas_camnoc";
+ interrupts = <GIC_SPI 459 IRQ_TYPE_EDGE_RISING>;
+ camnoc-axi-min-ib-bw = <3000000000>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "gcc_ahb_clk",
+ "gcc_axi_hf_clk",
+ "gcc_axi_sf_clk",
+ "slow_ahb_clk_src",
+ "cpas_ahb_clk",
+ "cpas_core_ahb_clk",
+ "camnoc_axi_clk_src",
+ "camnoc_axi_clk";
+ clocks =
+ <&clock_gcc GCC_CAMERA_AHB_CLK>,
+ <&clock_gcc GCC_CAMERA_HF_AXI_CLK>,
+ <&clock_gcc GCC_CAMERA_SF_AXI_CLK>,
+ <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
+ <&clock_camcc CAM_CC_CORE_AHB_CLK>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK_SRC>,
+ <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
+ src-clock-name = "camnoc_axi_clk_src";
+ clock-rates =
+ <0 0 0 0 0 0 0 0>,
+ <0 0 0 19200000 0 0 19200000 0>,
+ <0 0 0 80000000 0 0 300000000 0>,
+ <0 0 0 80000000 0 0 400000000 0>,
+ <0 0 0 80000000 0 0 400000000 0>,
+ <0 0 0 80000000 0 0 400000000 0>,
+ <0 0 0 80000000 0 0 480000000 0>;
+ clock-cntl-level = "suspend", "minsvs", "lowsvs", "svs",
+ "svs_l1", "nominal", "turbo";
+ control-camnoc-axi-clk;
+ camnoc-bus-width = <32>;
+ camnoc-axi-clk-bw-margin-perc = <20>;
+ qcom,msm-bus,name = "cam_ahb";
+ qcom,msm-bus,num-cases = <7>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 0>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 76800>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 76800>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 150000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 150000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 300000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 300000>;
+ vdd-corners = <RPMH_REGULATOR_LEVEL_RETENTION
+ RPMH_REGULATOR_LEVEL_MIN_SVS
+ RPMH_REGULATOR_LEVEL_LOW_SVS
+ RPMH_REGULATOR_LEVEL_SVS
+ RPMH_REGULATOR_LEVEL_SVS_L1
+ RPMH_REGULATOR_LEVEL_NOM
+ RPMH_REGULATOR_LEVEL_NOM_L1
+ RPMH_REGULATOR_LEVEL_NOM_L2
+ RPMH_REGULATOR_LEVEL_TURBO
+ RPMH_REGULATOR_LEVEL_TURBO_L1>;
+ vdd-corner-ahb-mapping = "suspend", "minsvs",
+ "lowsvs", "svs", "svs_l1",
+ "nominal", "nominal", "nominal",
+ "turbo", "turbo";
+ client-id-based;
+ client-names =
+ "csiphy0", "csiphy1", "csiphy2", "csiphy3",
+ "csiphy4", "csiphy5", "cci0", "cci1",
+ "csid0", "csid1", "csid2", "csid3",
+ "csid4", "csid5", "csid6", "ife0",
+ "ife1", "ife2", "ife3", "custom0",
+ "ipe0", "cam-cdm-intf0", "cpas-cdm0",
+ "bps0", "icp0", "jpeg-dma0", "jpeg-enc0",
+ "fd0";
+
+ camera-bus-nodes {
+ level3-nodes {
+ level-index = <3>;
+ level3_rt0_rd_wr_sum: level3-rt0-rd-wr-sum {
+ cell-index = <0>;
+ node-name = "level3-rt0-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_hf_0";
+ ib-bw-voting-needed;
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_hf_0_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_HF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_HF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+
+ level3_nrt0_rd_wr_sum: level3-nrt0-rd-wr-sum {
+ cell-index = <1>;
+ node-name = "level3-nrt0-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_sf_0";
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_sf_0_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_SF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_SF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+
+ level3_nrt1_rd_wr_sum: level3-nrt1-rd-wr-sum {
+ cell-index = <2>;
+ node-name = "level3-nrt1-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_sf_icp";
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_sf_icp_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_ICP
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_ICP
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+ };
+
+ level2-nodes {
+ level-index = <2>;
+ camnoc-max-needed;
+ level2_rt0_wr: level2-rt0-wr {
+ cell-index = <3>;
+ node-name = "level2-rt0-wr";
+ parent-node = <&level3_rt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_rt0_rd: level2-rt0-rd {
+ cell-index = <4>;
+ node-name = "level2-rt0-rd";
+ parent-node = <&level3_rt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_nrt0_wr: level2-nrt0-wr {
+ cell-index = <5>;
+ node-name = "level2-nrt0-wr";
+ parent-node = <&level3_nrt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_nrt0_rd: level2-nrt0-rd {
+ cell-index = <6>;
+ node-name = "level2-nrt0-rd";
+ parent-node = <&level3_nrt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_nrt1_rd: level2-nrt1-rd {
+ cell-index = <7>;
+ node-name = "level2-nrt1-rd";
+ parent-node = <&level3_nrt1_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ bus-width-factor = <4>;
+ };
+ };
+
+ level1-nodes {
+ level-index = <1>;
+ camnoc-max-needed;
+ level1_rt0_wr0: level1-rt0-wr0 {
+ cell-index = <8>;
+ node-name = "level1-rt0-wr0";
+ parent-node = <&level2_rt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt0_wr1: level1-rt0-wr1 {
+ cell-index = <9>;
+ node-name = "level1-rt0-wr1";
+ parent-node = <&level2_rt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt0_rd0: level1-rt0-rd0 {
+ cell-index = <10>;
+ node-name = "level1-rt0-rd0";
+ parent-node = <&level2_rt0_rd>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt0_wr2: level1-rt0-wr2 {
+ cell-index = <11>;
+ node-name = "level1-rt0-wr2";
+ parent-node = <&level2_rt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_wr0: level1-nrt0-wr0 {
+ cell-index = <12>;
+ node-name = "level1-nrt0-wr0";
+ parent-node = <&level2_nrt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_rd0: level1-nrt0-rd0 {
+ cell-index = <13>;
+ node-name = "level1-nrt0-rd0";
+ parent-node = <&level2_nrt0_rd>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_wr1: level1-nrt0-wr1 {
+ cell-index = <14>;
+ node-name = "level1-nrt0-wr1";
+ parent-node = <&level2_nrt0_wr>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_rd2: level1-nrt0-rd2 {
+ cell-index = <15>;
+ node-name = "level1-nrt0-rd2";
+ parent-node = <&level2_nrt0_rd>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+ };
+
+ level0-nodes {
+ level-index = <0>;
+ ife0_ubwc_stats_wr: ife0-ubwc-stats-wr {
+ cell-index = <16>;
+ node-name = "ife0-ubwc-stats-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_UBWC_STATS>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_VID
+ CAM_CPAS_PATH_DATA_IFE_DISP
+ CAM_CPAS_PATH_DATA_IFE_STATS>;
+ parent-node = <&level1_rt0_wr0>;
+ };
+
+ ife1_ubwc_stats_wr: ife1-ubwc-stats-wr {
+ cell-index = <17>;
+ node-name = "ife1-ubwc-stats-wr";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_UBWC_STATS>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_VID
+ CAM_CPAS_PATH_DATA_IFE_DISP
+ CAM_CPAS_PATH_DATA_IFE_STATS>;
+ parent-node = <&level1_rt0_wr0>;
+ };
+
+ ife0_linear_pdaf_wr: ife0-linear-pdaf-wr {
+ cell-index = <18>;
+ node-name = "ife0-linear-pdaf-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR_PDAF>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR
+ CAM_CPAS_PATH_DATA_IFE_PDAF>;
+ parent-node = <&level1_rt0_wr1>;
+ };
+
+ ife1_linear_pdaf_wr: ife1-linear-pdaf-wr {
+ cell-index = <19>;
+ node-name = "ife1-linear-pdaf-wr";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR_PDAF>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR
+ CAM_CPAS_PATH_DATA_IFE_PDAF>;
+ parent-node = <&level1_rt0_wr1>;
+ };
+
+ ife2_rdi_all_wr: ife2-rdi-all-wr {
+ cell-index = <20>;
+ node-name = "ife2-rdi-all-wr";
+ client-name = "ife2";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_wr1>;
+ };
+
+ ife3_rdi_all_wr: ife3-rdi-all-wr {
+ cell-index = <21>;
+ node-name = "ife3-rdi-all-wr";
+ client-name = "ife3";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_wr1>;
+ };
+
+ ife0_rdi_all_rd: ife0-rdi-all-rd {
+ cell-index = <22>;
+ node-name = "ife0-rdi-all-rd";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_rd0>;
+ };
+
+ ife1_rdi_all_rd: ife1-rdi-all-rd {
+ cell-index = <23>;
+ node-name = "ife1-rdi-all-rd";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_rd0>;
+ };
+
+ custom0_all_rd: custom0-all-rd {
+ cell-index = <24>;
+ node-name = "custom0-all-rd";
+ client-name = "custom0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_rt0_rd0>;
+ };
+
+ ife0_rdi_pixel_raw_wr: ife0-rdi-pixel-raw-wr {
+ cell-index = <25>;
+ node-name = "ife0-rdi-pixel-raw-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_PIXEL_RAW>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_PIXEL_RAW>;
+ parent-node = <&level1_rt0_wr2>;
+ };
+
+ ife1_rdi_pixel_raw_wr: ife1-rdi-pixel-raw-wr {
+ cell-index = <26>;
+ node-name = "ife1-rdi-pixel-raw-wr";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_PIXEL_RAW>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_PIXEL_RAW>;
+ parent-node = <&level1_rt0_wr2>;
+ };
+
+ custom0_all_wr: custom0-all-wr {
+ cell-index = <27>;
+ node-name = "custom0-all-wr";
+ client-name = "custom0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_rt0_wr2>;
+ };
+
+ ipe0_all_wr: ipe0-all-wr {
+ cell-index = <28>;
+ node-name = "ipe0-all-wr";
+ client-name = "ipe0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IPE_WR_VID
+ CAM_CPAS_PATH_DATA_IPE_WR_DISP
+ CAM_CPAS_PATH_DATA_IPE_WR_REF>;
+ parent-node = <&level1_nrt0_wr0>;
+ };
+
+ bps0_all_wr: bps0-all-wr {
+ cell-index = <29>;
+ node-name = "bps0-all-wr";
+ client-name = "bps0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_wr0>;
+ };
+
+ ipe0_ref_rd: ipe0-ref-rd {
+ cell-index = <30>;
+ node-name = "ipe0-ref-rd";
+ client-name = "ipe0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_RD_REF>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_rd0>;
+ };
+
+ bps0_all_rd: bps0-all-rd {
+ cell-index = <31>;
+ node-name = "bps0-all-rd";
+ client-name = "bps0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_rd0>;
+ };
+
+ ipe0_in_rd: ipe0-in-rd {
+ cell-index = <32>;
+ node-name = "ipe0-in-rd";
+ client-name = "ipe0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_RD_IN>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_rd>;
+ };
+
+ jpeg_enc0_all_wr: jpeg-enc0-all-wr {
+ cell-index = <33>;
+ node-name = "jpeg-enc0-all-wr";
+ client-name = "jpeg-enc0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_wr1>;
+ };
+
+ jpeg_dma0_all_wr: jpeg-dma0-all-wr {
+ cell-index = <34>;
+ node-name = "jpeg-dma0-all-wr";
+ client-name = "jpeg-dma0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_wr1>;
+ };
+
+ jpeg_enc0_all_rd: jpeg-enc0-all-rd {
+ cell-index = <35>;
+ node-name = "jpeg-enc0-all-rd";
+ client-name = "jpeg-enc0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_rd2>;
+ };
+
+ jpeg_dma0_all_rd: jpeg-dma0-all-rd {
+ cell-index = <36>;
+ node-name = "jpeg-dma0-all-rd";
+ client-name = "jpeg-dma0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_rd2>;
+ };
+
+ fd0_all_wr: fd0-all-wr {
+ cell-index = <37>;
+ node-name = "fd0-all-wr";
+ client-name = "fd0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level2_nrt0_wr>;
+ };
+
+ fd0_all_rd: fd0-all-rd {
+ cell-index = <38>;
+ node-name = "fd0-all-rd";
+ client-name = "fd0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_rd>;
+ };
+
+ cpas_cdm0_all_rd: cpas-cdm0-all-rd {
+ cell-index = <39>;
+ node-name = "cpas-cdm0-all-rd";
+ client-name = "cpas-cdm0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_rd>;
+ };
+
+ icp0_all_rd: icp0-all-rd {
+ cell-index = <40>;
+ node-name = "icp0-all-rd";
+ client-name = "icp0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt1_rd>;
+ };
+ };
+ };
+ };
+
+ qcom,cam-cdm-intf {
+ compatible = "qcom,cam-cdm-intf";
+ cell-index = <0>;
+ label = "cam-cdm-intf";
+ num-hw-cdm = <3>;
+ cdm-client-names = "vfe",
+ "jpegdma",
+ "jpegenc",
+ "fd";
+ status = "ok";
+ };
+
+ qcom,cpas-cdm0@ac4d000 {
+ cell-index = <0>;
+ compatible = "qcom,cam170-cpas-cdm0";
+ label = "cpas-cdm";
+ reg = <0xac4d000 0x1000>;
+ reg-names = "cpas-cdm";
+ reg-cam-base = <0x4d000>;
+ interrupts = <GIC_SPI 461 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpas-cdm";
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "cam_cc_cpas_slow_ahb_clk",
+ "cam_cc_cpas_ahb_clk";
+ clocks = <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>;
+ clock-rates = <0 0>;
+ clock-cntl-level = "svs";
+ cdm-client-names = "ife";
+ status = "ok";
+ };
+
+ qcom,cpas-cdm1@acb4200 {
+ cell-index = <1>;
+ compatible = "qcom,cam480-cpas-cdm1";
+ label = "cpas-cdm";
+ reg = <0xacb4200 0x1000>;
+ reg-names = "cpas-cdm";
+ reg-cam-base = <0xb4200>;
+ interrupts = <GIC_SPI 456 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpas-cdm";
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "cam_cc_cpas_slow_ahb_clk",
+ "cam_cc_cpas_ahb_clk";
+ clocks = <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>;
+ clock-rates = <0 0>;
+ clock-cntl-level = "svs";
+ cdm-client-names = "ife0";
+ status = "disabled";
+ };
+
+ qcom,cpas-cdm2@acc3200 {
+ cell-index = <2>;
+ compatible = "qcom,cam480-cpas-cdm2";
+ label = "cpas-cdm";
+ reg = <0xacc3200 0x1000>;
+ reg-names = "cpas-cdm";
+ reg-cam-base = <0xc3200>;
+ interrupts = <GIC_SPI 287 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpas-cdm";
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "cam_cc_cpas_slow_ahb_clk",
+ "cam_cc_cpas_ahb_clk";
+ clocks = <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_CPAS_AHB_CLK>;
+ clock-rates = <0 0>;
+ clock-cntl-level = "svs";
+ cdm-client-names = "ife1";
+ status = "disabled";
+ };
+
+ qcom,cam-isp {
+ compatible = "qcom,cam-isp";
+ arch-compat = "ife";
+ status = "ok";
+ };
+
+ cam_csid0: qcom,csid0@acb5200 {
+ cell-index = <0>;
+ compatible = "qcom,csid480";
+ reg-names = "csid";
+ reg = <0xacb5200 0x1000>;
+ reg-cam-base = <0xb5200>;
+ interrupt-names = "csid";
+ interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife0";
+ camss-supply = <&titan_top_gdsc>;
+ ife0-supply = <&ife_0_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_0_areg",
+ "ife_0_ahb",
+ "ife_axi_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
+ <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AREG_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AXI_CLK>;
+ clock-rates =
+ <400000000 0 400000000 0 350000000 0 100000000 0 0>,
+ <400000000 0 400000000 0 475000000 0 200000000 0 0>,
+ <400000000 0 400000000 0 576000000 0 300000000 0 0>,
+ <400000000 0 400000000 0 720000000 0 400000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe0: qcom,ife0@acb4000 {
+ cell-index = <0>;
+ compatible = "qcom,vfe480";
+ reg-names = "ife", "cam_camnoc";
+ reg = <0xacb4000 0xd000>,
+ <0xac42000 0x8000>;
+ reg-cam-base = <0xb4000 0x42000>;
+ interrupt-names = "ife";
+ interrupts = <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife0";
+ camss-supply = <&titan_top_gdsc>;
+ ife0-supply = <&ife_0_gdsc>;
+ clock-names =
+ "ife_0_ahb",
+ "ife_0_areg",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_0_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AREG_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_0_CLK>,
+ <&clock_camcc CAM_CC_IFE_0_AXI_CLK>;
+ clock-rates =
+ <0 100000000 350000000 0 0>,
+ <0 200000000 475000000 0 0>,
+ <0 300000000 576000000 0 0>,
+ <0 400000000 720000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ scl-clk-names = "ife_0_areg";
+ clock-control-debugfs = "true";
+ clock-names-option = "ife_dsp_clk";
+ clocks-option = <&clock_camcc CAM_CC_IFE_0_DSP_CLK>;
+ clock-rates-option = <720000000>;
+ ubwc-static-cfg = <0x1026 0x1036>;
+ status = "ok";
+ };
+
+ cam_csid1: qcom,csid1@acc4200 {
+ cell-index = <1>;
+ compatible = "qcom,csid480";
+ reg-names = "csid";
+ reg = <0xacc4200 0x1000>;
+ reg-cam-base = <0xc4200>;
+ interrupt-names = "csid";
+ interrupts = <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife1";
+ camss-supply = <&titan_top_gdsc>;
+ ife1-supply = <&ife_1_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_1_areg",
+ "ife_1_ahb",
+ "ife_axi_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_1_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_1_CSID_CLK>,
+ <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_1_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_AREG_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_AXI_CLK>;
+ clock-rates =
+ <400000000 0 400000000 0 350000000 0 100000000 0 0>,
+ <400000000 0 400000000 0 475000000 0 200000000 0 0>,
+ <400000000 0 400000000 0 576000000 0 300000000 0 0>,
+ <400000000 0 400000000 0 720000000 0 400000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe1: qcom,ife1@acc3000 {
+ cell-index = <1>;
+ compatible = "qcom,vfe480";
+ reg-names = "ife", "cam_camnoc";
+ reg = <0xacc3000 0xd000>,
+ <0xac42000 0x8000>;
+ reg-cam-base = <0xc3000 0x42000>;
+ interrupt-names = "ife";
+ interrupts = <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife1";
+ camss-supply = <&titan_top_gdsc>;
+ ife1-supply = <&ife_1_gdsc>;
+ clock-names =
+ "ife_1_ahb",
+ "ife_1_areg",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_1_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_AREG_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_1_CLK>,
+ <&clock_camcc CAM_CC_IFE_1_AXI_CLK>;
+ clock-rates =
+ <0 100000000 350000000 0 0>,
+ <0 200000000 475000000 0 0>,
+ <0 300000000 576000000 0 0>,
+ <0 400000000 720000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ scl-clk-names = "ife_1_areg";
+ clock-control-debugfs = "true";
+ clock-names-option = "ife_dsp_clk";
+ clocks-option = <&clock_camcc CAM_CC_IFE_1_DSP_CLK>;
+ clock-rates-option = <720000000>;
+ ubwc-static-cfg = <0x1026 0x1036>;
+ status = "ok";
+ };
+
+ cam_csid_lite0: qcom,csid-lite0@acd9200 {
+ cell-index = <2>;
+ compatible = "qcom,csid-lite480";
+ reg-names = "csid-lite";
+ reg = <0xacd9200 0x1000>;
+ reg-cam-base = <0xd9200>;
+ interrupt-names = "csid-lite";
+ interrupts = <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_lite_ahb",
+ "ife_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_LITE_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CSID_CLK>,
+ <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <400000000 0 0 0 400000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe_lite0: qcom,ife-lite0@acd9000 {
+ cell-index = <2>;
+ compatible = "qcom,vfe-lite480";
+ reg-names = "ife-lite";
+ reg = <0xacd9000 0x2200>;
+ reg-cam-base = <0xd9000>;
+ interrupt-names = "ife-lite";
+ interrupts = <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_lite_ahb",
+ "ife_lite_axi",
+ "ife_clk_src",
+ "ife_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_AXI_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <0 0 400000000 0>,
+ <0 0 480000000 0>,
+ <0 0 480000000 0>,
+ <0 0 480000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_csid_lite1: qcom,csid-lite1@acdb400 {
+ cell-index = <3>;
+ compatible = "qcom,csid-lite480";
+ reg-names = "csid-lite";
+ reg = <0xacdb400 0x1000>;
+ reg-cam-base = <0xdb400>;
+ interrupt-names = "csid-lite";
+ interrupts = <GIC_SPI 359 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_lite_ahb",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_LITE_CSID_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CSID_CLK>,
+ <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <400000000 0 0 0 400000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>,
+ <400000000 0 0 0 480000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe_lite1: qcom,ife-lite1@acdb200 {
+ cell-index = <3>;
+ compatible = "qcom,vfe-lite480";
+ reg-names = "ife-lite";
+ reg = <0xacdb200 0x2200>;
+ reg-cam-base = <0xdb200>;
+ interrupt-names = "ife-lite";
+ interrupts = <GIC_SPI 360 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_lite_ahb",
+ "ife_lite_axi",
+ "ife_clk_src",
+ "ife_clk";
+ clocks =
+ <&clock_camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_AXI_CLK>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&clock_camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <0 0 400000000 0>,
+ <0 0 480000000 0>,
+ <0 0 480000000 0>,
+ <0 0 480000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ qcom,cam-icp {
+ compatible = "qcom,cam-icp";
+ compat-hw-name = "qcom,a5",
+ "qcom,ipe0",
+ "qcom,bps";
+ num-a5 = <1>;
+ num-ipe = <1>;
+ num-bps = <1>;
+ status = "ok";
+ icp_pc_en;
+ ipe_bps_pc_en;
+ };
+
+ cam_a5: qcom,a5@ac00000 {
+ cell-index = <0>;
+ compatible = "qcom,cam-a5";
+ reg = <0xac00000 0x6000>,
+ <0xac10000 0x8000>,
+ <0xac18000 0x3000>;
+ reg-names = "a5_qgic", "a5_sierra", "a5_csr";
+ reg-cam-base = <0x00000 0x10000 0x18000>;
+ interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "a5";
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "soc_fast_ahb",
+ "icp_ahb_clk",
+ "icp_clk_src",
+ "icp_clk";
+ src-clock-name = "icp_clk_src";
+ clocks =
+ <&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
+ <&clock_camcc CAM_CC_ICP_AHB_CLK>,
+ <&clock_camcc CAM_CC_ICP_CLK_SRC>,
+ <&clock_camcc CAM_CC_ICP_CLK>;
+
+ clock-rates =
+ <100000000 0 400000000 0>,
+ <200000000 0 480000000 0>,
+ <300000000 0 600000000 0>,
+ <400000000 0 600000000 0>,
+ <400000000 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ fw_name = "CAMERA_ICP.elf";
+ ubwc-ipe-fetch-cfg = <0x707b 0x7083>;
+ ubwc-ipe-write-cfg = <0x161ef 0x1620f>;
+ ubwc-bps-fetch-cfg = <0x707b 0x7083>;
+ ubwc-bps-write-cfg = <0x161ef 0x1620f>;
+ status = "ok";
+ };
+
+ cam_ipe0: qcom,ipe0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-ipe";
+ reg = <0xac9a000 0xc000>;
+ reg-names = "ipe0_top";
+ reg-cam-base = <0x9a000>;
+ regulator-names = "ipe0-vdd";
+ ipe0-vdd-supply = <&ipe_0_gdsc>;
+ clock-names =
+ "ipe_0_ahb_clk",
+ "ipe_0_areg_clk",
+ "ipe_0_axi_clk",
+ "ipe_0_clk_src",
+ "ipe_0_clk";
+ src-clock-name = "ipe_0_clk_src";
+ clock-control-debugfs = "true";
+ clocks =
+ <&clock_camcc CAM_CC_IPE_0_AHB_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_AREG_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_AXI_CLK>,
+ <&clock_camcc CAM_CC_IPE_0_CLK_SRC>,
+ <&clock_camcc CAM_CC_IPE_0_CLK>;
+
+ clock-rates =
+ <0 0 0 300000000 0>,
+ <0 0 0 475000000 0>,
+ <0 0 0 525000000 0>,
+ <0 0 0 700000000 0>,
+ <0 0 0 700000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ status = "ok";
+ };
+
+ cam_bps: qcom,bps {
+ cell-index = <0>;
+ compatible = "qcom,cam-bps";
+ reg = <0xac7a000 0x8000>;
+ reg-names = "bps_top";
+ reg-cam-base = <0x7a000>;
+ regulator-names = "bps-vdd";
+ bps-vdd-supply = <&bps_gdsc>;
+ clock-names =
+ "bps_ahb_clk",
+ "bps_areg_clk",
+ "bps_axi_clk",
+ "bps_clk_src",
+ "bps_clk";
+ src-clock-name = "bps_clk_src";
+ clock-control-debugfs = "true";
+ clocks =
+ <&clock_camcc CAM_CC_BPS_AHB_CLK>,
+ <&clock_camcc CAM_CC_BPS_AREG_CLK>,
+ <&clock_camcc CAM_CC_BPS_AXI_CLK>,
+ <&clock_camcc CAM_CC_BPS_CLK_SRC>,
+ <&clock_camcc CAM_CC_BPS_CLK>;
+
+ clock-rates =
+ <0 0 0 200000000 0>,
+ <0 0 0 400000000 0>,
+ <0 0 0 480000000 0>,
+ <0 0 0 600000000 0>,
+ <0 0 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ status = "ok";
+ };
+
+ qcom,cam-jpeg {
+ compatible = "qcom,cam-jpeg";
+ compat-hw-name = "qcom,jpegenc",
+ "qcom,jpegdma";
+ num-jpeg-enc = <1>;
+ num-jpeg-dma = <1>;
+ status = "ok";
+ };
+
+ cam_jpeg_enc: qcom,jpegenc@ac53000 {
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_enc";
+ reg-names = "jpege_hw";
+ reg = <0xac53000 0x4000>;
+ reg-cam-base = <0x53000>;
+ interrupt-names = "jpeg";
+ interrupts = <GIC_SPI 474 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "jpegenc_clk_src",
+ "jpegenc_clk";
+ clocks =
+ <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
+ <&clock_camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <600000000 0>;
+ src-clock-name = "jpegenc_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
+
+ cam_jpeg_dma: qcom,jpegdma@ac57000 {
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_dma";
+ reg-names = "jpegdma_hw";
+ reg = <0xac57000 0x4000>;
+ reg-cam-base = <0x57000>;
+ interrupt-names = "jpegdma";
+ interrupts = <GIC_SPI 475 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "jpegdma_clk_src",
+ "jpegdma_clk";
+ clocks =
+ <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
+ <&clock_camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <600000000 0>;
+ src-clock-name = "jpegdma_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
+
+ qcom,cam-fd {
+ compatible = "qcom,cam-fd";
+ compat-hw-name = "qcom,fd";
+ num-fd = <1>;
+ status = "ok";
+ };
+
+ cam_fd: qcom,fd@ac5f000 {
+ cell-index = <0>;
+ compatible = "qcom,fd600";
+ reg-names = "fd_core", "fd_wrapper";
+ reg = <0xac5f000 0x1000>,
+ <0xac60000 0x400>;
+ reg-cam-base = <0x5f000 0x60000>;
+ interrupt-names = "fd";
+ interrupts = <GIC_SPI 462 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "fd_core_clk_src",
+ "fd_core_clk",
+ "fd_core_uar_clk";
+ clocks =
+ <&clock_camcc CAM_CC_FD_CORE_CLK_SRC>,
+ <&clock_camcc CAM_CC_FD_CORE_CLK>,
+ <&clock_camcc CAM_CC_FD_CORE_UAR_CLK>;
+ src-clock-name = "fd_core_clk_src";
+ clock-control-debugfs = "true";
+ clock-cntl-level = "svs", "svs_l1", "turbo";
+ clock-rates =
+ <400000000 0 0>,
+ <480000000 0 0>,
+ <600000000 0 0>;
+ status = "ok";
+ };
+};
diff --git a/lito-camera-sensor-cdp.dtsi b/lito-camera-sensor-cdp.dtsi
new file mode 100644
index 0000000..c3467e2
--- /dev/null
+++ b/lito-camera-sensor-cdp.dtsi
@@ -0,0 +1,293 @@
+#include <dt-bindings/clock/qcom,camcc-lito.h>
+
+&soc {
+ led_flash_rear: qcom,camera-flash@0 {
+ cell-index = <0>;
+ reg = <0x00 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_rear_aux: qcom,camera-flash@1 {
+ cell-index = <1>;
+ reg = <0x01 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ eeprom_rear: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-load-current = <0 80000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ status="ok";
+ };
+
+ qcom,cam-sensor@0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x0>;
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@1 {
+ cell-index = <1>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x1>;
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_rear_aux>;
+ eeprom-src = <&eeprom_rear_aux>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ status = "ok";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ eeprom_front: qcom,eeprom@2 {
+ cell-index = <2>;
+ reg = <0x2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x02>;
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
diff --git a/lito-camera-sensor-mtp.dtsi b/lito-camera-sensor-mtp.dtsi
new file mode 100644
index 0000000..c3467e2
--- /dev/null
+++ b/lito-camera-sensor-mtp.dtsi
@@ -0,0 +1,293 @@
+#include <dt-bindings/clock/qcom,camcc-lito.h>
+
+&soc {
+ led_flash_rear: qcom,camera-flash@0 {
+ cell-index = <0>;
+ reg = <0x00 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_rear_aux: qcom,camera-flash@1 {
+ cell-index = <1>;
+ reg = <0x01 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ eeprom_rear: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-load-current = <0 80000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ status="ok";
+ };
+
+ qcom,cam-sensor@0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x0>;
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@1 {
+ cell-index = <1>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x1>;
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_rear_aux>;
+ eeprom-src = <&eeprom_rear_aux>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ status = "ok";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ eeprom_front: qcom,eeprom@2 {
+ cell-index = <2>;
+ reg = <0x2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x02>;
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
diff --git a/lito-camera-sensor-qrd.dtsi b/lito-camera-sensor-qrd.dtsi
new file mode 100644
index 0000000..08cdafb
--- /dev/null
+++ b/lito-camera-sensor-qrd.dtsi
@@ -0,0 +1,672 @@
+#include <dt-bindings/clock/qcom,camcc-lito.h>
+
+&soc {
+ led_flash_rear: qcom,camera-flash@0 {
+ cell-index = <0>;
+ reg = <0x00 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_rear_aux: qcom,camera-flash@1 {
+ cell-index = <1>;
+ reg = <0x01 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_triple_rear: qcom,camera-flash@4 {
+ cell-index = <4>;
+ reg = <0x04 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_triple_rear_aux: qcom,camera-flash@5 {
+ cell-index = <5>;
+ reg = <0x05 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ led_flash_triple_rear_aux2: qcom,camera-flash@6 {
+ cell-index = <6>;
+ reg = <0x06 0x00>;
+ compatible = "qcom,camera-flash";
+ flash-source = <&pm8150l_flash0 &pm8150l_flash1>;
+ torch-source = <&pm8150l_torch0 &pm8150l_torch1>;
+ switch-source = <&pm8150l_switch2>;
+ };
+
+ vreg_tof: regulator-dbb1 {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_tof";
+ regulator-min-microvolt = <3600000>;
+ regulator-max-microvolt = <3600000>;
+ gpio = <&pm8150l_gpios 2 GPIO_ACTIVE_HIGH>;
+ startup-delay-us = <1000>;
+ enable-active-high;
+ };
+
+ qcom,cam-res-mgr {
+ compatible = "qcom,cam-res-mgr";
+ status = "ok";
+ };
+};
+
+&cam_cci0 {
+ actuator_rear: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ cci-master = <0>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ actuator_triple_rear: qcom,actuator@4 {
+ cell-index = <4>;
+ reg = <0x4>;
+ compatible = "qcom,actuator";
+ cci-device = <0>;
+ cci-master = <0>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ actuator_triple_rear_aux2: qcom,actuator@6 {
+ cell-index = <6>;
+ reg = <0x6>;
+ compatible = "qcom,actuator";
+ cci-device = <0>;
+ cci-master = <1>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ eeprom_rear: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-load-current = <0 80000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_rear_aux: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-position = <0>;
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ status="ok";
+ };
+
+ eeprom_triple_rear: qcom,eeprom@4 {
+ cell-index = <4>;
+ reg = <4>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0 2800000>;
+ rgltr-load-current = <0 80000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK4",
+ "CAM_RESET4";
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_rear_aux2: qcom,eeprom@6 {
+ cell-index = <6>;
+ reg = <6>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0 2800000>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0 2800000>;
+ rgltr-load-current = <0 80000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk4_active
+ &cam_sensor_active_rear_aux2>;
+ pinctrl-1 = <&cam_sensor_mclk4_suspend
+ &cam_sensor_suspend_rear_aux2>;
+ gpios = <&tlmm 25 0>,
+ <&tlmm 21 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK6",
+ "CAM_RESET6";
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x0>;
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ actuator-src = <&actuator_rear>;
+ led-flash-src = <&led_flash_rear>;
+ eeprom-src = <&eeprom_rear>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@1 {
+ cell-index = <1>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x1>;
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_rear_aux>;
+ eeprom-src = <&eeprom_rear_aux>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&S8C>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1350000 0>;
+ rgltr-max-voltage = <1800000 2800000 1350000 0>;
+ rgltr-load-current = <0 80000 1200000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 71 0>;
+ gpio-reset = <1>;
+ gpio-vdig = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_VDIG1";
+ sensor-mode = <0>;
+ cci-master = <1>;
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ status = "ok";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@4 {
+ cell-index = <4>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x4>;
+ csiphy-sd-index = <0>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_triple_rear>;
+ actuator-src = <&actuator_triple_rear>;
+ eeprom-src = <&eeprom_triple_rear>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L4P>;
+ cam_vdig-supply = <&L2P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_v_custom1-supply = <&L6P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_v_custom1";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1104000 0 1800000>;
+ rgltr-max-voltage = <1800000 2800000 1104000 0 1800000>;
+ rgltr-load-current = <0 80000 105000 0 80000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active
+ &cam_sensor_active_rear>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_sensor_suspend_rear>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK4",
+ "CAM_RESET4";
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK0_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@6 {
+ cell-index = <6>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x06>;
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_triple_rear_aux2>;
+ actuator-src = <&actuator_triple_rear_aux2>;
+ eeprom-src = <&eeprom_triple_rear_aux2>;
+ cam_vdig-supply = <&L1P>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk4_active
+ &cam_sensor_active_rear_aux2>;
+ pinctrl-1 = <&cam_sensor_mclk4_suspend
+ &cam_sensor_suspend_rear_aux2>;
+ gpios = <&tlmm 25 0>,
+ <&tlmm 21 0>,
+ <&tlmm 51 0>;
+ gpio-reset = <1>;
+ gpio-vana = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK6",
+ "CAM_RESET6",
+ "CAM_VANA6";
+ sensor-mode = <0>;
+ cci-device = <0>;
+ cci-master = <1>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
+
+&cam_cci1 {
+ actuator_triple_rear_aux: qcom,actuator@5 {
+ cell-index = <5>;
+ reg = <0x5>;
+ compatible = "qcom,actuator";
+ cci-device = <1>;
+ cci-master = <0>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <2800000>;
+ rgltr-max-voltage = <2800000>;
+ rgltr-load-current = <100000>;
+ status = "ok";
+ };
+
+ eeprom_front: qcom,eeprom@2 {
+ cell-index = <2>;
+ reg = <0x2>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-position = <1>;
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ eeprom_triple_rear_aux: qcom,eeprom@5 {
+ cell-index = <5>;
+ reg = <5>;
+ compatible = "qcom,eeprom";
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&BOB>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ cam_vaf-supply = <&L5P>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk", "cam_vaf";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 3008000 1056000 0 2800000>;
+ rgltr-max-voltage = <1800000 4000000 1056000 0 2800000>;
+ rgltr-load-current = <0 2000000 105000 0 100000>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_triple_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_triple_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 70 0>;
+ gpio-reset = <1>;
+ gpio-vana = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK5",
+ "CAM_RESET5",
+ "CAM_VANA5";
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@2 {
+ cell-index = <2>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x02>;
+ csiphy-sd-index = <2>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ eeprom-src = <&eeprom_front>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&L3P>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 2800000 1056000 0>;
+ rgltr-max-voltage = <1800000 2800000 1056000 0>;
+ rgltr-load-current = <0 80000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active
+ &cam_sensor_active_front>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_sensor_suspend_front>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 32 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2";
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@3 {
+ cell-index = <3>;
+ compatible = "qcom,cam-sensor";
+ csiphy-sd-index = <3>;
+ sensor-position-roll = <270>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <0>;
+ cam_vio-supply = <&L7P>;
+ cam_vdig-supply = <&vreg_tof>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ rgltr-min-voltage = <1800000 3600000 0>;
+ rgltr-max-voltage = <1800000 3600000 0>;
+ rgltr-load-current = <0 120000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk3_active
+ &cam_sensor_active_3>;
+ pinctrl-1 = <&cam_sensor_mclk3_suspend
+ &cam_sensor_suspend_3>;
+ gpios = <&tlmm 16 0>,
+ <&tlmm 23 0>;
+ gpio-reset = <1>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK3",
+ "CAM_RESET3";
+ sensor-mode = <0>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK3_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+
+ qcom,cam-sensor@5 {
+ cell-index = <5>;
+ compatible = "qcom,cam-sensor";
+ reg = <0x5>;
+ csiphy-sd-index = <1>;
+ sensor-position-roll = <90>;
+ sensor-position-pitch = <0>;
+ sensor-position-yaw = <180>;
+ led-flash-src = <&led_flash_triple_rear_aux>;
+ actuator-src = <&actuator_triple_rear_aux>;
+ eeprom-src = <&eeprom_triple_rear_aux>;
+ cam_vio-supply = <&L7P>;
+ cam_vana-supply = <&BOB>;
+ cam_vdig-supply = <&L1P>;
+ cam_clk-supply = <&titan_top_gdsc>;
+ regulator-names = "cam_vio", "cam_vana", "cam_vdig",
+ "cam_clk";
+ rgltr-cntrl-support;
+ pwm-switch;
+ rgltr-min-voltage = <1800000 3008000 1056000 0>;
+ rgltr-max-voltage = <1800000 4000000 1056000 0>;
+ rgltr-load-current = <0 2000000 105000 0>;
+ gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active
+ &cam_sensor_active_triple_rear_aux>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_sensor_suspend_triple_rear_aux>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 29 0>,
+ <&tlmm 70 0>;
+ gpio-reset = <1>;
+ gpio-vana = <2>;
+ gpio-req-tbl-num = <0 1 2>;
+ gpio-req-tbl-flags = <1 0 0>;
+ gpio-req-tbl-label = "CAMIF_MCLK5",
+ "CAM_RESET5",
+ "CAM_VANA5";
+ sensor-mode = <0>;
+ cci-device = <1>;
+ cci-master = <0>;
+ status = "ok";
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+ clock-names = "cam_clk";
+ clock-cntl-level = "turbo";
+ clock-rates = <24000000>;
+ };
+};
diff --git a/lito-camera.dtsi b/lito-camera.dtsi
new file mode 100644
index 0000000..4478009
--- /dev/null
+++ b/lito-camera.dtsi
@@ -0,0 +1,1613 @@
+#include <dt-bindings/msm/msm-camera.h>
+
+&soc {
+ qcom,cam-req-mgr {
+ compatible = "qcom,cam-req-mgr";
+ status = "ok";
+ };
+
+ cam_csiphy0: qcom,csiphy0 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v1.2.2", "qcom,csiphy";
+ reg = <0x0ace0000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0xe0000>;
+ interrupts = <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ regulator-names = "gdscr", "refgen";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ csi-vdd-voltage = <880000>;
+ mipi-csi-vdd-supply = <&L5A>;
+ clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_CSIPHY0_CLK>,
+ <&camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
+ <&camcc CAM_CC_CSI0PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy0_clk",
+ "csi0phytimer_clk_src",
+ "csi0phytimer_clk";
+ src-clock-name = "csi0phytimer_clk_src";
+ clock-cntl-level = "lowsvs", "svs", "svs_l1";
+ clock-rates =
+ <300000000 0 300000000 0>,
+ <384000000 0 300000000 0>,
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy1: qcom,csiphy1 {
+ cell-index = <1>;
+ compatible = "qcom,csiphy-v1.2.2", "qcom,csiphy";
+ reg = <0xace2000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0xe2000>;
+ interrupts = <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ regulator-names = "gdscr", "refgen";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ csi-vdd-voltage = <880000>;
+ mipi-csi-vdd-supply = <&L5A>;
+ clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_CSIPHY1_CLK>,
+ <&camcc CAM_CC_CSI1PHYTIMER_CLK_SRC>,
+ <&camcc CAM_CC_CSI1PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy1_clk",
+ "csi1phytimer_clk_src",
+ "csi1phytimer_clk";
+ src-clock-name = "csi1phytimer_clk_src";
+ clock-cntl-level = "lowsvs", "svs", "svs_l1";
+ clock-rates =
+ <300000000 0 300000000 0>,
+ <384000000 0 300000000 0>,
+ <400000000 0 300000000 0>;
+
+ status = "ok";
+ };
+
+ cam_csiphy2: qcom,csiphy2 {
+ cell-index = <2>;
+ compatible = "qcom,csiphy-v1.2.2", "qcom,csiphy";
+ reg = <0xace4000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0xe4000>;
+ interrupts = <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ regulator-names = "gdscr", "refgen";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ csi-vdd-voltage = <880000>;
+ mipi-csi-vdd-supply = <&L5A>;
+ clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_CSIPHY2_CLK>,
+ <&camcc CAM_CC_CSI2PHYTIMER_CLK_SRC>,
+ <&camcc CAM_CC_CSI2PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy2_clk",
+ "csi2phytimer_clk_src",
+ "csi2phytimer_clk";
+ src-clock-name = "csi2phytimer_clk_src";
+ clock-cntl-level = "lowsvs", "svs", "svs_l1";
+ clock-rates =
+ <300000000 0 300000000 0>,
+ <384000000 0 300000000 0>,
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_csiphy3: qcom,csiphy3 {
+ cell-index = <3>;
+ compatible = "qcom,csiphy-v1.2.2", "qcom,csiphy";
+ reg = <0xace6000 0x2000>;
+ reg-names = "csiphy";
+ reg-cam-base = <0xe6000>;
+ interrupts = <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csiphy";
+ regulator-names = "gdscr", "refgen";
+ gdscr-supply = <&titan_top_gdsc>;
+ refgen-supply = <&refgen>;
+ csi-vdd-voltage = <880000>;
+ mipi-csi-vdd-supply = <&L5A>;
+ clocks = <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_CSIPHY0_CLK>,
+ <&camcc CAM_CC_CSIPHY3_CLK>,
+ <&camcc CAM_CC_CSI3PHYTIMER_CLK_SRC>,
+ <&camcc CAM_CC_CSI3PHYTIMER_CLK>;
+ clock-names = "cphy_rx_clk_src",
+ "csiphy3_clk",
+ "csi3phytimer_clk_src",
+ "csi3phytimer_clk";
+ src-clock-name = "csi3phytimer_clk_src";
+ clock-cntl-level = "lowsvs", "svs", "svs_l1";
+ clock-rates =
+ <300000000 0 300000000 0>,
+ <384000000 0 300000000 0>,
+ <400000000 0 300000000 0>;
+ status = "ok";
+ };
+
+ cam_cci0: qcom,cci0 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0xac4a000 0x1000>;
+ reg-names = "cci";
+ reg-cam-base = <0x4a000>;
+ interrupt-names = "cci";
+ interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
+ status = "ok";
+ gdscr-supply = <&titan_top_gdsc>;
+ regulator-names = "gdscr";
+ clocks = <&camcc CAM_CC_CCI_0_CLK>,
+ <&camcc CAM_CC_CCI_0_CLK_SRC>;
+ clock-names = "cci_0_clk",
+ "cci_0_clk_src";
+ src-clock-name = "cci_0_clk_src";
+ clock-cntl-level = "lowsvs";
+ clock-rates = <0 37500000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cci0_active &cci1_active>;
+ pinctrl-1 = <&cci0_suspend &cci1_suspend>;
+ gpios = <&tlmm 17 0>,
+ <&tlmm 18 0>,
+ <&tlmm 19 0>,
+ <&tlmm 20 0>;
+ gpio-req-tbl-num = <0 1 2 3>;
+ gpio-req-tbl-flags = <1 1 1 1>;
+ gpio-req-tbl-label = "CCI_I2C_DATA0",
+ "CCI_I2C_CLK0",
+ "CCI_I2C_DATA1",
+ "CCI_I2C_CLK1";
+
+ 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 = <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 = <1>;
+ hw-trdhld = <6>;
+ 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 {
+ cell-index = <1>;
+ compatible = "qcom,cci";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0xac4b000 0x1000>;
+ reg-names = "cci";
+ reg-cam-base = <0x4b000>;
+ interrupt-names = "cci";
+ interrupts = <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>;
+ status = "ok";
+ gdscr-supply = <&titan_top_gdsc>;
+ regulator-names = "gdscr";
+ clocks = <&camcc CAM_CC_CCI_1_CLK>,
+ <&camcc CAM_CC_CCI_1_CLK_SRC>;
+ clock-names = "cci_clk",
+ "cci_1_clk_src";
+ src-clock-name = "cci_1_clk_src";
+ clock-cntl-level = "lowsvs";
+ clock-rates = <0 37500000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cci2_active>;
+ pinctrl-1 = <&cci2_suspend>;
+ gpios = <&tlmm 27 0>,
+ <&tlmm 28 0>;
+ gpio-req-tbl-num = <0 1>;
+ gpio-req-tbl-flags = <1 1>;
+ gpio-req-tbl-label = "CCI_I2C_DATA2",
+ "CCI_I2C_CLK2";
+
+ 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 = <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 = <1>;
+ hw-trdhld = <6>;
+ 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";
+ status = "ok";
+
+ msm_cam_smmu_ife {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x900 0x5E0>,
+ <&apps_smmu 0x880 0x5E0>,
+ <&apps_smmu 0x820 0x5E0>,
+ <&apps_smmu 0x920 0x5E0>,
+ <&apps_smmu 0x8A0 0x5E0>,
+ <&apps_smmu 0x940 0x5E0>,
+ <&apps_smmu 0x8C0 0x5E0>,
+ <&apps_smmu 0xD00 0x5E0>,
+ <&apps_smmu 0xC80 0x5E0>,
+ <&apps_smmu 0xC20 0x5E0>,
+ <&apps_smmu 0xD20 0x5E0>,
+ <&apps_smmu 0xCA0 0x5E0>,
+ <&apps_smmu 0xD40 0x5E0>,
+ <&apps_smmu 0xCC0 0x5E0>;
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ label = "ife";
+ ife_iova_mem_map: iova-mem-map {
+ /* IO region is approximately 3.4 GB */
+ iova-mem-region-io {
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_jpeg {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x1280 0x20>,
+ <&apps_smmu 0x12A0 0x20>;
+ label = "jpeg";
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ jpeg_iova_mem_map: iova-mem-map {
+ /* IO region is approximately 3.4 GB */
+ iova-mem-region-io {
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_icp_fw {
+ compatible = "qcom,msm-cam-smmu-fw-dev";
+ label="icp";
+ memory-region = <&pil_camera_mem>;
+ };
+
+ msm_cam_smmu_icp {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x1042 0x0>,
+ <&apps_smmu 0x11A0 0x0>,
+ <&apps_smmu 0x1220 0x0>,
+ <&apps_smmu 0x1300 0x20>,
+ <&apps_smmu 0x1320 0x20>,
+ <&apps_smmu 0x1180 0x0>,
+ <&apps_smmu 0x1200 0x0>,
+ <&apps_smmu 0x11E0 0x0>,
+ <&apps_smmu 0x1260 0x0>;
+ label = "icp";
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0xda00000 0xace00000>;
+ icp_iova_mem_map: iova-mem-map {
+ iova-mem-region-firmware {
+ /* Firmware region is 5MB */
+ iova-region-name = "firmware";
+ iova-region-start = <0x0>;
+ iova-region-len = <0x500000>;
+ iova-region-id = <0x0>;
+ status = "ok";
+ };
+
+ iova-mem-region-shared {
+ /* Shared region is 150MB long */
+ iova-region-name = "shared";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0x9600000>;
+ iova-region-id = <0x1>;
+ status = "ok";
+ };
+
+ iova-mem-region-secondary-heap {
+ /* Secondary heap region is 1MB long */
+ iova-region-name = "secheap";
+ iova-region-start = <0x10a00000>;
+ iova-region-len = <0x100000>;
+ iova-region-id = <0x4>;
+ status = "ok";
+ };
+
+ iova-mem-region-io {
+ /* IO region is approximately 3.3 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x10c00000>;
+ iova-region-len = <0xcf300000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+
+ iova-mem-qdss-region {
+ /* QDSS region is appropriate 1MB */
+ iova-region-name = "qdss";
+ iova-region-start = <0x10b00000>;
+ iova-region-len = <0x100000>;
+ iova-region-id = <0x5>;
+ qdss-phy-addr = <0x16790000>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_cpas_cdm {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x1000 0x0>;
+ label = "cpas-cdm0";
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ cpas_cdm_iova_mem_map: iova-mem-map {
+ iova-mem-region-io {
+ /* IO region is approximately 3.4 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_secure {
+ compatible = "qcom,msm-cam-smmu-cb";
+ label = "cam-secure";
+ qcom,secure-cb;
+ };
+
+ msm_cam_smmu_fd {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x12C0 0x20>,
+ <&apps_smmu 0x12E0 0x20>;
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ label = "fd";
+ fd_iova_mem_map: iova-mem-map {
+ iova-mem-region-io {
+ /* IO region is approximately 3.4 GB */
+ iova-region-name = "io";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0xd8c00000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+
+ msm_cam_smmu_lrme {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&apps_smmu 0x11C0 0x0>,
+ <&apps_smmu 0x1240 0x0>;
+ label = "lrme";
+ qcom,iommu-faults = "non-fatal";
+ qcom,iommu-dma-addr-pool = <0x7400000 0xd8c00000>;
+ lrme_iova_mem_map: iova-mem-map {
+ iova-mem-region-shared {
+ /* Shared region is 100MB long */
+ iova-region-name = "shared";
+ iova-region-start = <0x7400000>;
+ iova-region-len = <0x6400000>;
+ iova-region-id = <0x1>;
+ status = "ok";
+ };
+ /* IO region is approximately 3.3 GB */
+ iova-mem-region-io {
+ iova-region-name = "io";
+ iova-region-start = <0xd800000>;
+ iova-region-len = <0xd2800000>;
+ iova-region-id = <0x3>;
+ status = "ok";
+ };
+ };
+ };
+ };
+
+ qcom,cam-cdm-intf {
+ compatible = "qcom,cam-cdm-intf";
+ cell-index = <0>;
+ label = "cam-cdm-intf";
+ num-hw-cdm = <1>;
+ cdm-client-names = "vfe",
+ "jpegdma",
+ "jpegenc",
+ "fd",
+ "lrmecdm";
+ status = "ok";
+ };
+
+ qcom,cpas-cdm0 {
+ cell-index = <0>;
+ compatible = "qcom,cam170-cpas-cdm0";
+ label = "cpas-cdm";
+ reg = <0xac48000 0x1000>;
+ reg-names = "cpas-cdm";
+ reg-cam-base = <0x48000>;
+ interrupts = <GIC_SPI 461 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpas-cdm";
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "cam_cc_cpas_slow_ahb_clk",
+ "cam_cc_cpas_ahb_clk";
+ clocks = <&camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&camcc CAM_CC_CPAS_AHB_CLK>;
+ clock-rates = <0 0>;
+ clock-cntl-level = "svs";
+ cdm-client-names = "ife";
+ status = "ok";
+ };
+
+ qcom,cam-isp {
+ compatible = "qcom,cam-isp";
+ arch-compat = "ife";
+ status = "ok";
+ };
+
+ cam_csid0: qcom,csid0 {
+ cell-index = <0>;
+ compatible = "qcom,csid175_200";
+ reg-names = "csid";
+ reg = <0xacb3000 0x1000>;
+ reg-cam-base = <0xb3000>;
+ interrupt-names = "csid";
+ interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife0";
+ camss-supply = <&titan_top_gdsc>;
+ ife0-supply = <&ife_0_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
+ <&camcc CAM_CC_IFE_0_CSID_CLK>,
+ <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
+ <&camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&camcc CAM_CC_IFE_0_CLK>,
+ <&camcc CAM_CC_IFE_0_AXI_CLK>;
+ clock-rates =
+ <300000000 0 0 0 380000000 0 0>,
+ <384000000 0 0 0 510000000 0 0>,
+ <400000000 0 0 0 637000000 0 0>,
+ <400000000 0 0 0 760000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe0: qcom,vfe0 {
+ cell-index = <0>;
+ compatible = "qcom,vfe175_130";
+ reg-names = "ife";
+ reg = <0xacaf000 0x5200>;
+ reg-cam-base = <0xaf000>;
+ interrupt-names = "ife";
+ interrupts = <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife0";
+ camss-supply = <&titan_top_gdsc>;
+ ife0-supply = <&ife_0_gdsc>;
+ clock-names =
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_0_CLK_SRC>,
+ <&camcc CAM_CC_IFE_0_CLK>,
+ <&camcc CAM_CC_IFE_0_AXI_CLK>;
+ clock-rates =
+ <380000000 0 0>,
+ <510000000 0 0>,
+ <637000000 0 0>,
+ <760000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ clock-control-debugfs = "true";
+ clock-names-option = "ife_dsp_clk";
+ clocks-option = <&camcc CAM_CC_IFE_0_DSP_CLK>;
+ clock-rates-option = <760000000>;
+ status = "ok";
+ };
+
+ cam_csid1: qcom,csid1 {
+ cell-index = <1>;
+ compatible = "qcom,csid175_200";
+ reg-names = "csid";
+ reg = <0xacba000 0x1000>;
+ reg-cam-base = <0xba000>;
+ interrupt-names = "csid";
+ interrupts = <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife1";
+ camss-supply = <&titan_top_gdsc>;
+ ife1-supply = <&ife_1_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_1_CSID_CLK_SRC>,
+ <&camcc CAM_CC_IFE_1_CSID_CLK>,
+ <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
+ <&camcc CAM_CC_IFE_1_CLK_SRC>,
+ <&camcc CAM_CC_IFE_1_CLK>,
+ <&camcc CAM_CC_IFE_1_AXI_CLK>;
+ clock-rates =
+ <300000000 0 0 0 380000000 0 0>,
+ <384000000 0 0 0 510000000 0 0>,
+ <400000000 0 0 0 637000000 0 0>,
+ <400000000 0 0 0 760000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe1: qcom,vfe1 {
+ cell-index = <1>;
+ compatible = "qcom,vfe175_130";
+ reg-names = "ife";
+ reg = <0xacb6000 0x5200>;
+ reg-cam-base = <0xb6000>;
+ interrupt-names = "ife";
+ interrupts = <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss", "ife1";
+ camss-supply = <&titan_top_gdsc>;
+ ife1-supply = <&ife_1_gdsc>;
+ clock-names =
+ "ife_clk_src",
+ "ife_clk",
+ "ife_axi_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_1_CLK_SRC>,
+ <&camcc CAM_CC_IFE_1_CLK>,
+ <&camcc CAM_CC_IFE_1_AXI_CLK>;
+ clock-rates =
+ <380000000 0 0>,
+ <510000000 0 0>,
+ <637000000 0 0>,
+ <760000000 0 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ clock-control-debugfs = "true";
+ clock-names-option = "ife_dsp_clk";
+ clocks-option = <&camcc CAM_CC_IFE_1_DSP_CLK>;
+ clock-rates-option = <760000000>;
+ status = "ok";
+ };
+
+ cam_csid_lite0: qcom,csid-lite0 {
+ cell-index = <2>;
+ compatible = "qcom,csid-lite175";
+ reg-names = "csid-lite";
+ reg = <0xacc8000 0x1000>;
+ reg-cam-base = <0xc8000>;
+ interrupt-names = "csid-lite";
+ interrupts = <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_csid_clk_src",
+ "ife_csid_clk",
+ "cphy_rx_clk_src",
+ "ife_cphy_rx_clk",
+ "ife_clk_src",
+ "ife_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_LITE_CSID_CLK_SRC>,
+ <&camcc CAM_CC_IFE_LITE_CSID_CLK>,
+ <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+ <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <300000000 0 0 0 320000000 0>,
+ <384000000 0 0 0 400000000 0>,
+ <400000000 0 0 0 480000000 0>,
+ <400000000 0 0 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_csid_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ cam_vfe_lite0: qcom,vfe-lite0 {
+ cell-index = <2>;
+ compatible = "qcom,vfe-lite175";
+ reg-names = "ife-lite";
+ reg = <0xacc4000 0x4000>;
+ reg-cam-base = <0xc4000>;
+ interrupt-names = "ife-lite";
+ interrupts = <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names =
+ "ife_clk_src",
+ "ife_clk";
+ clocks =
+ <&camcc CAM_CC_IFE_LITE_CLK_SRC>,
+ <&camcc CAM_CC_IFE_LITE_CLK>;
+ clock-rates =
+ <320000000 0>,
+ <400000000 0>,
+ <480000000 0>,
+ <600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
+ src-clock-name = "ife_clk_src";
+ clock-control-debugfs = "true";
+ status = "ok";
+ };
+
+ qcom,cam-icp {
+ compatible = "qcom,cam-icp";
+ compat-hw-name = "qcom,a5",
+ "qcom,ipe0",
+ "qcom,ipe1",
+ "qcom,bps";
+ num-a5 = <1>;
+ num-ipe = <2>;
+ num-bps = <1>;
+ icp_pc_en;
+ status = "ok";
+ };
+
+ cam_a5: qcom,a5 {
+ cell-index = <0>;
+ compatible = "qcom,cam-a5";
+ reg = <0xac00000 0x6000>,
+ <0xac10000 0x8000>,
+ <0xac18000 0x3000>;
+ reg-names = "a5_qgic", "a5_sierra", "a5_csr";
+ reg-cam-base = <0x00000 0x10000 0x18000>;
+ interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "a5";
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "soc_fast_ahb",
+ "icp_ahb_clk",
+ "icp_clk_src",
+ "icp_clk";
+ src-clock-name = "icp_clk_src";
+ clocks =
+ <&camcc CAM_CC_FAST_AHB_CLK_SRC>,
+ <&camcc CAM_CC_ICP_AHB_CLK>,
+ <&camcc CAM_CC_ICP_CLK_SRC>,
+ <&camcc CAM_CC_ICP_CLK>;
+
+ clock-rates =
+ <100000000 0 400000000 0>,
+ <200000000 0 480000000 0>,
+ <300000000 0 600000000 0>,
+ <400000000 0 600000000 0>,
+ <400000000 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ fw_name = "CAMERA_ICP.elf";
+ ubwc-cfg = <0x1073 0x101CF>;
+ qos-val = <0x00000A0A>;
+ status = "ok";
+ };
+
+ cam_ipe0: qcom,ipe0 {
+ cell-index = <0>;
+ compatible = "qcom,cam-ipe";
+ reg = <0xac87000 0x3000>;
+ reg-names = "ipe0_top";
+ reg-cam-base = <0x87000>;
+ regulator-names = "ipe0-vdd";
+ ipe0-vdd-supply = <&ipe_0_gdsc>;
+ clock-names =
+ "ipe_0_ahb_clk",
+ "ipe_0_areg_clk",
+ "ipe_0_axi_clk",
+ "ipe_0_clk_src",
+ "ipe_0_clk";
+ src-clock-name = "ipe_0_clk_src";
+ clock-control-debugfs = "true";
+ clocks =
+ <&camcc CAM_CC_IPE_0_AHB_CLK>,
+ <&camcc CAM_CC_IPE_0_AREG_CLK>,
+ <&camcc CAM_CC_IPE_0_AXI_CLK>,
+ <&camcc CAM_CC_IPE_0_CLK_SRC>,
+ <&camcc CAM_CC_IPE_0_CLK>;
+
+ clock-rates =
+ <0 0 0 300000000 0>,
+ <0 0 0 430000000 0>,
+ <0 0 0 520000000 0>,
+ <0 0 0 600000000 0>,
+ <0 0 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ status = "ok";
+ };
+
+ cam_ipe1: qcom,ipe1 {
+ cell-index = <1>;
+ compatible = "qcom,cam-ipe";
+ reg = <0xac91000 0x3000>;
+ reg-names = "ipe1_top";
+ reg-cam-base = <0x91000>;
+ regulator-names = "ipe1-vdd";
+ ipe1-vdd-supply = <&ipe_1_gdsc>;
+ clock-names =
+ "ipe_1_ahb_clk",
+ "ipe_1_areg_clk",
+ "ipe_1_axi_clk",
+ "ipe_1_clk_src",
+ "ipe_1_clk";
+ src-clock-name = "ipe_1_clk_src";
+ clock-control-debugfs = "true";
+ clocks =
+ <&camcc CAM_CC_IPE_1_AHB_CLK>,
+ <&camcc CAM_CC_IPE_1_AREG_CLK>,
+ <&camcc CAM_CC_IPE_1_AXI_CLK>,
+ <&camcc CAM_CC_IPE_0_CLK_SRC>,
+ <&camcc CAM_CC_IPE_1_CLK>;
+
+ clock-rates =
+ <0 0 0 300000000 0>,
+ <0 0 0 430000000 0>,
+ <0 0 0 520000000 0>,
+ <0 0 0 600000000 0>,
+ <0 0 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ status = "ok";
+ };
+
+ cam_bps: qcom,bps {
+ cell-index = <0>;
+ compatible = "qcom,cam-bps";
+ reg = <0xac6f000 0x3000>;
+ reg-names = "bps_top";
+ reg-cam-base = <0x6f000>;
+ regulator-names = "bps-vdd";
+ bps-vdd-supply = <&bps_gdsc>;
+ clock-names =
+ "bps_ahb_clk",
+ "bps_areg_clk",
+ "bps_axi_clk",
+ "bps_clk_src",
+ "bps_clk";
+ src-clock-name = "bps_clk_src";
+ clock-control-debugfs = "true";
+ clocks =
+ <&camcc CAM_CC_BPS_AHB_CLK>,
+ <&camcc CAM_CC_BPS_AREG_CLK>,
+ <&camcc CAM_CC_BPS_AXI_CLK>,
+ <&camcc CAM_CC_BPS_CLK_SRC>,
+ <&camcc CAM_CC_BPS_CLK>;
+
+ clock-rates =
+ <0 0 0 200000000 0>,
+ <0 0 0 400000000 0>,
+ <0 0 0 480000000 0>,
+ <0 0 0 600000000 0>,
+ <0 0 0 600000000 0>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1",
+ "nominal", "turbo";
+ status = "ok";
+ };
+
+ qcom,cam-jpeg {
+ compatible = "qcom,cam-jpeg";
+ compat-hw-name = "qcom,jpegenc",
+ "qcom,jpegdma";
+ num-jpeg-enc = <1>;
+ num-jpeg-dma = <1>;
+ status = "ok";
+ };
+
+ cam_jpeg_enc: qcom,jpegenc {
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_enc";
+ reg-names = "jpege_hw";
+ reg = <0xac4e000 0x4000>;
+ reg-cam-base = <0x4e000>;
+ interrupt-names = "jpeg";
+ interrupts = <GIC_SPI 474 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "jpegenc_clk_src",
+ "jpegenc_clk";
+ clocks =
+ <&camcc CAM_CC_JPEG_CLK_SRC>,
+ <&camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <600000000 0>;
+ src-clock-name = "jpegenc_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
+
+ cam_jpeg_dma: qcom,jpegdma {
+ cell-index = <0>;
+ compatible = "qcom,cam_jpeg_dma";
+ reg-names = "jpegdma_hw";
+ reg = <0xac52000 0x4000>;
+ reg-cam-base = <0x52000>;
+ interrupt-names = "jpegdma";
+ interrupts = <GIC_SPI 475 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "jpegdma_clk_src",
+ "jpegdma_clk";
+ clocks =
+ <&camcc CAM_CC_JPEG_CLK_SRC>,
+ <&camcc CAM_CC_JPEG_CLK>;
+
+ clock-rates = <600000000 0>;
+ src-clock-name = "jpegdma_clk_src";
+ clock-cntl-level = "nominal";
+ status = "ok";
+ };
+
+ qcom,cam-fd {
+ compatible = "qcom,cam-fd";
+ compat-hw-name = "qcom,fd";
+ num-fd = <1>;
+ status = "ok";
+ };
+
+ cam_fd: qcom,fd {
+ cell-index = <0>;
+ compatible = "qcom,fd501";
+ reg-names = "fd_core", "fd_wrapper";
+ reg = <0xac5a000 0x1000>,
+ <0xac5b000 0x400>;
+ reg-cam-base = <0x5a000 0x5b000>;
+ interrupt-names = "fd";
+ interrupts = <GIC_SPI 462 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "fd_core_clk_src",
+ "fd_core_clk",
+ "fd_core_uar_clk";
+ clocks =
+ <&camcc CAM_CC_FD_CORE_CLK_SRC>,
+ <&camcc CAM_CC_FD_CORE_CLK>,
+ <&camcc CAM_CC_FD_CORE_UAR_CLK>;
+ src-clock-name = "fd_core_clk_src";
+ clock-control-debugfs = "true";
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal";
+ clock-rates =
+ <380000000 0 0>,
+ <384000000 0 0>,
+ <480000000 0 0>,
+ <600000000 0 0>;
+ status = "ok";
+ };
+
+ qcom,cam-lrme {
+ compatible = "qcom,cam-lrme";
+ arch-compat = "lrme";
+ status = "ok";
+ };
+
+ cam_lrme: qcom,lrme {
+ cell-index = <0>;
+ compatible = "qcom,lrme";
+ reg-names = "lrme";
+ reg = <0xac6b000 0xa00>;
+ reg-cam-base = <0x6b000>;
+ interrupt-names = "lrme";
+ interrupts = <GIC_SPI 476 IRQ_TYPE_EDGE_RISING>;
+ regulator-names = "camss";
+ camss-supply = <&titan_top_gdsc>;
+ clock-names = "lrme_clk_src",
+ "lrme_clk";
+ clocks = <&camcc CAM_CC_LRME_CLK_SRC>,
+ <&camcc CAM_CC_LRME_CLK>;
+ clock-rates = <240000000 240000000>,
+ <300000000 300000000>,
+ <320000000 320000000>,
+ <400000000 400000000>,
+ <400000000 400000000>;
+ clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
+ "turbo";
+ src-clock-name = "lrme_clk_src";
+ status = "ok";
+ };
+
+ qcom,cam-cpas {
+ cell-index = <0>;
+ compatible = "qcom,cam-cpas";
+ label = "cpas";
+ arch-compat = "cpas_top";
+ status = "ok";
+ reg-names = "cam_cpas_top", "cam_camnoc";
+ reg = <0xac40000 0x1000>,
+ <0xac42000 0x6000>;
+ reg-cam-base = <0x40000 0x42000>;
+ cam_hw_fuse = <CAM_CPAS_QCFA_BINNING_ENABLE 0x00780210 29>,
+ <CAM_CPAS_SECURE_CAMERA_ENABLE 0x00780210 18>;
+ interrupt-names = "cpas_camnoc";
+ interrupts = <GIC_SPI 459 IRQ_TYPE_EDGE_RISING>;
+ camnoc-axi-min-ib-bw = <3000000000>;
+ regulator-names = "camss-vdd";
+ camss-vdd-supply = <&titan_top_gdsc>;
+ clock-names =
+ "gcc_ahb_clk",
+ "gcc_axi_hf_clk",
+ "gcc_axi_sf_clk",
+ "slow_ahb_clk_src",
+ "cpas_ahb_clk",
+ "camnoc_axi_clk_src",
+ "camnoc_axi_clk";
+ clocks =
+ <&gcc GCC_CAMERA_AHB_CLK>,
+ <&gcc GCC_CAMERA_HF_AXI_CLK>,
+ <&gcc GCC_CAMERA_SF_AXI_CLK>,
+ <&camcc CAM_CC_SLOW_AHB_CLK_SRC>,
+ <&camcc CAM_CC_CPAS_AHB_CLK>,
+ <&camcc CAM_CC_CAMNOC_AXI_CLK_SRC>,
+ <&camcc CAM_CC_CAMNOC_AXI_CLK>;
+ src-clock-name = "camnoc_axi_clk_src";
+ clock-rates =
+ <0 0 0 0 0 0 0>,
+ <0 0 0 80000000 0 150000000 0>,
+ <0 0 0 80000000 0 240000000 0>,
+ <0 0 0 80000000 0 320000000 0>,
+ <0 0 0 80000000 0 400000000 0>,
+ <0 0 0 80000000 0 480000000 0>;
+ clock-cntl-level = "suspend", "lowsvs", "svs",
+ "svs_l1", "nominal", "turbo";
+ control-camnoc-axi-clk;
+ camnoc-bus-width = <32>;
+ camnoc-axi-clk-bw-margin-perc = <20>;
+ qcom,msm-bus,name = "cam_ahb";
+ qcom,msm-bus,num-cases = <7>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 0>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 65000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 125000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 125000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 250000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 250000>,
+ <MSM_BUS_MASTER_AMPSS_M0
+ MSM_BUS_SLAVE_CAMERA_CFG 0 250000>;
+ vdd-corners = <RPMH_REGULATOR_LEVEL_RETENTION
+ RPMH_REGULATOR_LEVEL_MIN_SVS
+ RPMH_REGULATOR_LEVEL_LOW_SVS
+ RPMH_REGULATOR_LEVEL_SVS
+ RPMH_REGULATOR_LEVEL_SVS_L1
+ RPMH_REGULATOR_LEVEL_NOM
+ RPMH_REGULATOR_LEVEL_NOM_L1
+ RPMH_REGULATOR_LEVEL_NOM_L2
+ RPMH_REGULATOR_LEVEL_TURBO
+ RPMH_REGULATOR_LEVEL_TURBO_L1>;
+ vdd-corner-ahb-mapping = "suspend",
+ "minsvs", "lowsvs", "svs", "svs_l1",
+ "nominal", "nominal", "nominal",
+ "turbo", "turbo";
+ client-id-based;
+ client-names =
+ "csiphy0", "csiphy1", "csiphy2", "csiphy3",
+ "cci0", "cci1",
+ "csid0", "csid1", "csid2",
+ "ife0", "ife1", "ife2",
+ "ipe0", "ipe1", "cam-cdm-intf0", "cpas-cdm0",
+ "bps0", "icp0", "jpeg-dma0", "jpeg-enc0",
+ "fd0", "lrmecpas0";
+ camera-bus-nodes {
+ level3-nodes {
+ level-index = <3>;
+ level3_rt0_wr_sum: level3-rt0-wr-sum {
+ cell-index = <0>;
+ node-name = "level3-rt0-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_hf_3";
+ ib-bw-voting-needed;
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_hf_3_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_HF1
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_HF1
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+
+ level3_rt1_rd_wr_sum: level3-rt1-rd-wr-sum {
+ cell-index = <1>;
+ node-name = "level3-rt1-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_hf_1";
+ ib-bw-voting-needed;
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_hf_1_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_HF0
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_HF0
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+
+ level3_nrt0_rd_wr_sum: level3-nrt0-rd-wr-sum {
+ cell-index = <2>;
+ node-name = "level3-nrt0-rd-wr-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_sf_0";
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_sf_0_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_SF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_SF
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+
+ level3_nrt1_rd_sum: level3-nrt1-rd-sum {
+ cell-index = <3>;
+ node-name = "level3-nrt1-rd-sum";
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ qcom,axi-port-name = "cam_sf_icp";
+ qcom,axi-port-mnoc {
+ qcom,msm-bus,name =
+ "cam_hf_4_mnoc";
+ qcom,msm-bus-vector-dyn-vote;
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_CAMNOC_ICP
+ MSM_BUS_SLAVE_EBI_CH0 0 0>,
+ <MSM_BUS_MASTER_CAMNOC_ICP
+ MSM_BUS_SLAVE_EBI_CH0 0 0>;
+ };
+ };
+ };
+
+ level2-nodes {
+ level-index = <2>;
+ camnoc-max-needed;
+ level2_rt0_write0: level2-rt0-write0 {
+ cell-index = <4>;
+ node-name = "level2-rt0-write0";
+ parent-node = <&level3_rt0_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level2_rt1_read0: level2-rt1-read0 {
+ cell-index = <5>;
+ node-name = "level2-rt1-read0";
+ parent-node = <&level3_rt1_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_rt1_write0: level2-rt1-write0 {
+ cell-index = <6>;
+ node-name = "level2-rt1-write0";
+ parent-node = <&level3_rt1_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
+ };
+
+ level2_nrt0_write0: level2-nrt0-write0 {
+ cell-index = <7>;
+ node-name = "level2-nrt0-write0";
+ parent-node = <&level3_nrt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level2_nrt0_read0: level2-nrt0-read0 {
+ cell-index = <8>;
+ node-name = "level2-nrt0-read0";
+ parent-node = <&level3_nrt0_rd_wr_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level2_nrt1_read0: level2-nrt1-read0 {
+ cell-index = <9>;
+ node-name = "level2-nrt1-read0";
+ parent-node = <&level3_nrt1_rd_sum>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ bus-width-factor = <4>;
+ };
+ };
+
+ level1-nodes {
+ level-index = <1>;
+ camnoc-max-needed;
+ level1_rt0_write0: level1-rt0-write0 {
+ cell-index = <10>;
+ node-name = "level1-rt0-write0";
+ parent-node = <&level2_rt0_write0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt1_write0: level1-rt1-write0 {
+ cell-index = <11>;
+ node-name = "level1-rt1-write0";
+ parent-node = <&level2_rt1_write0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt1_read0: level1-rt1-read0 {
+ cell-index = <12>;
+ node-name = "level1-rt1-read0";
+ parent-node = <&level2_rt1_read0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_rt1_write1: level1-rt1-write1 {
+ cell-index = <13>;
+ node-name = "level1-rt1-write1";
+ parent-node = <&level2_rt1_write0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_write0: level1-nrt0-write0 {
+ cell-index = <14>;
+ node-name = "level1-nrt0-write0";
+ parent-node = <&level2_nrt0_write0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_write1: level1-nrt0-write1 {
+ cell-index = <15>;
+ node-name = "level1-nrt0-write1";
+ parent-node = <&level2_nrt0_write0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+
+ level1_nrt0_read0: level1-nrt0-read0 {
+ cell-index = <16>;
+ node-name = "level1-nrt0-read0";
+ parent-node = <&level2_nrt0_read0>;
+ traffic-merge-type =
+ <CAM_CPAS_TRAFFIC_MERGE_SUM>;
+ };
+ };
+
+ level0-nodes {
+ level-index = <0>;
+ cpas_cdm0_all_rd: cpas-cdm0-all-rd {
+ cell-index = <17>;
+ node-name = "cpas-cdm0-all-rd";
+ client-name = "cpas-cdm0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_read0>;
+ };
+
+ fd0_all_wr: fd0-all-wr {
+ cell-index = <18>;
+ node-name = "fd0-all-wr";
+ client-name = "fd0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level2_nrt0_write0>;
+ };
+
+ fd0_all_rd: fd0-all-rd {
+ cell-index = <19>;
+ node-name = "fd0-all-rd";
+ client-name = "fd0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_read0>;
+ };
+
+ ife0_pixelall_wr: ife0-pixelall-wr {
+ cell-index = <20>;
+ node-name = "ife0-pixelall-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_PIXEL_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR
+ CAM_CPAS_PATH_DATA_IFE_PDAF
+ CAM_CPAS_PATH_DATA_IFE_VID
+ CAM_CPAS_PATH_DATA_IFE_DISP
+ CAM_CPAS_PATH_DATA_IFE_STATS
+ CAM_CPAS_PATH_DATA_IFE_PIXEL_RAW>;
+ parent-node = <&level1_rt1_write0>;
+ };
+
+ ife1_rdi_wr: ife1-rdi-wr {
+ cell-index = <21>;
+ node-name = "ife1-rdi-wr";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_write0>;
+ };
+
+ ife0_rdi_wr: ife0-rdi-wr {
+ cell-index = <22>;
+ node-name = "ife0-rdi-wr";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_write0>;
+ };
+
+ ife2_rdi_wr: ife2-rdi-wr {
+ cell-index = <23>;
+ node-name = "ife2-rdi-wr";
+ client-name = "ife2";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt0_write0>;
+ };
+
+ ife1_rdi_rd: ife1-rdi-rd {
+ cell-index = <24>;
+ node-name = "ife1-rdi-rd";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt1_read0>;
+ };
+
+ ife0_rdi_rd: ife0-rdi-rd {
+ cell-index = <25>;
+ node-name = "ife0-rdi-rd";
+ client-name = "ife0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_RDI_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_RDI0
+ CAM_CPAS_PATH_DATA_IFE_RDI1
+ CAM_CPAS_PATH_DATA_IFE_RDI2
+ CAM_CPAS_PATH_DATA_IFE_RDI3>;
+ parent-node = <&level1_rt1_read0>;
+ };
+
+ ife1_pixelall_wr: ife1-pixelall-wr {
+ cell-index = <26>;
+ node-name = "ife1-pixelall-wr";
+ client-name = "ife1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IFE_PIXEL_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IFE_LINEAR
+ CAM_CPAS_PATH_DATA_IFE_PDAF
+ CAM_CPAS_PATH_DATA_IFE_VID
+ CAM_CPAS_PATH_DATA_IFE_DISP
+ CAM_CPAS_PATH_DATA_IFE_STATS
+ CAM_CPAS_PATH_DATA_IFE_PIXEL_RAW>;
+ parent-node = <&level1_rt1_write1>;
+ };
+
+ bps0_all_rd: bps0-all-rd {
+ cell-index = <27>;
+ node-name = "bps0-all-rd";
+ client-name = "bps0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_read0>;
+ };
+
+ ipe0_all_rd: ipe0-all-rd {
+ cell-index = <28>;
+ node-name = "ipe0-all-rd";
+ client-name = "ipe0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IPE_RD_IN
+ CAM_CPAS_PATH_DATA_IPE_RD_REF>;
+ parent-node = <&level1_nrt0_read0>;
+ };
+
+ ipe1_all_rd: ipe1-all-rd {
+ cell-index = <29>;
+ node-name = "ipe1-all-rd";
+ client-name = "ipe1";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IPE_RD_IN
+ CAM_CPAS_PATH_DATA_IPE_RD_REF>;
+ parent-node = <&level1_nrt0_read0>;
+ };
+
+ lrme0_all_rd: lrme0-all-rd {
+ cell-index = <30>;
+ node-name = "lrme0-all-rd";
+ client-name = "lrmecpas0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level1_nrt0_read0>;
+ };
+
+ bps0_all_wr: bps0-all-wr {
+ cell-index = <31>;
+ node-name = "bps0-all-wr";
+ client-name = "bps0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_write0>;
+ };
+
+ ipe0_ref_wr: ipe0-ref-wr {
+ cell-index = <32>;
+ node-name = "ipe0-ref-wr";
+ client-name = "ipe0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_WR_REF>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_write0>;
+ };
+
+ ipe1_ref_wr: ipe1-ref-wr {
+ cell-index = <33>;
+ node-name = "ipe1-ref-wr";
+ client-name = "ipe1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_WR_REF>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_write0>;
+ };
+
+ lrme0_all_wr: lrme0-all-wr {
+ cell-index = <34>;
+ node-name = "lrme0-all-wr";
+ client-name = "lrmecpas0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level1_nrt0_write0>;
+ };
+
+ ipe1_viddisp_wr: ipe1-viddisp-wr {
+ cell-index = <35>;
+ node-name = "ipe1-viddisp-wr";
+ client-name = "ipe1";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_WR_VID_DISP>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IPE_WR_VID
+ CAM_CPAS_PATH_DATA_IPE_WR_DISP>;
+ parent-node = <&level1_nrt0_write1>;
+ };
+
+ ipe0_viddisp_wr: ipe0-viddisp-wr {
+ cell-index = <36>;
+ node-name = "ipe0-viddisp-wr";
+ client-name = "ipe0";
+ traffic-data =
+ <CAM_CPAS_PATH_DATA_IPE_WR_VID_DISP>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ constituent-paths =
+ <CAM_CPAS_PATH_DATA_IPE_WR_VID
+ CAM_CPAS_PATH_DATA_IPE_WR_DISP>;
+ parent-node = <&level1_nrt0_write1>;
+ };
+
+ jpeg0_all_wr: jpeg0-all-wr {
+ cell-index = <37>;
+ node-name = "jpeg0-all-wr";
+ client-name = "jpeg-enc0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_WRITE>;
+ parent-node = <&level2_nrt0_write0>;
+ };
+
+ jpeg0_all_rd: jpeg0-all-rd {
+ cell-index = <38>;
+ node-name = "jpeg0-all-rd";
+ client-name = "jpeg-enc0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt0_read0>;
+ };
+
+ icp0_all_rd: icp0-all-rd {
+ cell-index = <39>;
+ node-name = "icp0-all-rd";
+ client-name = "icp0";
+ traffic-data = <CAM_CPAS_PATH_DATA_ALL>;
+ traffic-transaction-type =
+ <CAM_CPAS_TRANSACTION_READ>;
+ parent-node = <&level2_nrt1_read0>;
+ };
+ };
+ };
+ };
+};