Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7a4714d authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ARM: dts: msm: Add support for new BW voting in cpas DT node for kona"

parents a52623c2 4c66cf99
Loading
Loading
Loading
Loading
+157 −90
Original line number Diff line number Diff line
@@ -10,12 +10,21 @@ voting.
=======================
Required Node Structure
=======================
The camera CPAS device must be described in four levels of device nodes. The
first level describes the overall CPAS device. Within it, second level nodes
describe the list of AXI ports that map different clients for AXI BW voting.
Third level nodes describe the details of each AXI port having name, mnoc,
camnoc AXI Bus information. Fourth level nodes describe the details of Bus
master-slave IDs, ab, ib values for mnoc, camnoc bus interface.
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
@@ -158,29 +167,97 @@ First Level Node - CAM CPAS device
  Value type: <string>
  Definition: List of Clients supported by CPAS.

- client-axi-port-names
  Usage: required
  Value type: <string>
  Definition: AXI Port name for each client.

- client-bus-camnoc-based
  Usage: required
  Usage: optional
  Value type: <empty>
  Definition: Bool property specifying whether Clients are connected
	through CAMNOC for AXI access.

===================================================================
Third Level Node - CAM AXI Port properties
Third Level Node - CAMNOC Level nodes
===================================================================
- qcom,axi-port-name
- 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

===================================================================
Fourth Level Node - CAM AXI Bus properties
Fifth Level Node - CAM AXI Bus Properties
===================================================================

- qcom,msm-bus,name
- qcom,msm-bus,num-cases
- qcom,msm-bus,num-paths
@@ -243,19 +320,29 @@ Example:
			MSM_BUS_SLAVE_CAMERA_CFG 0 640000>;
		client-id-based;
		client-names =
			"ife0", "ife1", "ife2", "ipe0",
			"ipe1", "cam-cdm-intf0", "cpas-cdm0", "bps0",
			"icp0", "jpeg-dma0", "jpeg0", "fd0";
		client-axi-port-names =
			"cam_hf_1", "cam_hf_2", "cam_hf_2", "cam_sf_1",
			"cam_sf_1", "cam_sf_1", "cam_sf_1", "cam_sf_1",
			"cam_sf_1", "cam_sf_1", "cam_sf_1", "cam_sf_1";
		client-bus-camnoc-based;
		qcom,axi-port-list {
			qcom,axi-port1 {
				qcom,axi-port-name = "cam_hf_1";
			"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_1_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>;
@@ -265,67 +352,47 @@ Example:
						<MSM_BUS_MASTER_CAMNOC_HF
						MSM_BUS_SLAVE_EBI_CH0 0 0>;
					};
				qcom,axi-port-camnoc {
					qcom,msm-bus,name = "cam_hf_1_camnoc";
					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>;
				};
			};
			qcom,axi-port2 {
				qcom,axi-port-name = "cam_hf_2";
				qcom,axi-port-mnoc {
					qcom,msm-bus,name = "cam_hf_2_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>;
				};
				qcom,axi-port-camnoc {
					qcom,msm-bus,name = "cam_hf_1_camnoc";
					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>;
			};
			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>;
				};
			qcom,axi-port3 {
				qcom,axi-port-name = "cam_sf_1";
				qcom,axi-port-mnoc {
					qcom,msm-bus,name = "cam_sf_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_SF
						MSM_BUS_SLAVE_EBI_CH0 0 0>,
						<MSM_BUS_MASTER_CAMNOC_SF
						MSM_BUS_SLAVE_EBI_CH0 0 0>;
			};
				qcom,axi-port-camnoc {
					qcom,msm-bus,name = "cam_sf_1_camnoc";
					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>;
			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>;
				};
			};
		};
	};
+487 −48
Original line number Diff line number Diff line
#include <dt-bindings/msm/msm-camera.h>

&soc {
	qcom,cam-req-mgr {
		compatible = "qcom,cam-req-mgr";
@@ -611,25 +613,24 @@
			"csiphy4", "csiphy5", "cci0", "cci1",
			"csid0", "csid1", "csid2", "csid3",
			"csid4", "csid5", "csid6", "ife0",
			"ife1", "ife2", "ife3", "sbi0",
			"ife1", "ife2", "ife3", "custom0",
			"ipe0", "cam-cdm-intf0", "cpas-cdm0",
			"bps0", "icp0", "jpeg-dma0", "jpeg-enc0",
			"fd0";
		client-axi-port-names =
			"cam_hf_0", "cam_hf_0", "cam_hf_0", "cam_hf_0",
			"cam_hf_0", "cam_hf_0", "cam_sf_0", "cam_sf_0",
			"cam_hf_0", "cam_hf_0", "cam_hf_0", "cam_hf_0",
			"cam_hf_0", "cam_hf_0", "cam_hf_0", "cam_hf_0",
			"cam_hf_0", "cam_hf_0", "cam_hf_0", "cam_hf_0",
			"cam_sf_0", "cam_sf_0", "cam_sf_0",
			"cam_sf_0", "cam_sf_icp", "cam_sf_0", "cam_sf_0",
			"cam_sf_0";
		qcom,axi-port-list {
			qcom,axi-port1 {

		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,name =
						"cam_hf_0_mnoc";
						qcom,msm-bus-vector-dyn-vote;
						qcom,msm-bus,num-cases = <2>;
						qcom,msm-bus,num-paths = <1>;
@@ -641,10 +642,15 @@
					};
				};

			qcom,axi-port2 {
				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,name =
						"cam_sf_0_mnoc";
						qcom,msm-bus-vector-dyn-vote;
						qcom,msm-bus,num-cases = <2>;
						qcom,msm-bus,num-paths = <1>;
@@ -656,10 +662,15 @@
					};
				};

			qcom,axi-port3 {
				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,name =
						"cam_sf_icp_mnoc";
						qcom,msm-bus-vector-dyn-vote;
						qcom,msm-bus,num-cases = <2>;
						qcom,msm-bus,num-paths = <1>;
@@ -671,6 +682,434 @@
					};
				};
			};

			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 {