Loading bindings/media/video/msm-cam-cpas.txt +157 −90 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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>; Loading @@ -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>; }; }; }; }; qcom/kona-camera.dtsi +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"; Loading Loading @@ -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>; Loading @@ -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>; Loading @@ -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>; Loading @@ -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 { Loading Loading
bindings/media/video/msm-cam-cpas.txt +157 −90 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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>; Loading @@ -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>; }; }; }; };
qcom/kona-camera.dtsi +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"; Loading Loading @@ -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>; Loading @@ -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>; Loading @@ -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>; Loading @@ -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 { Loading