| * 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. |
| |
| - 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: minsvs, 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. |
| |
| 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"; |
| }; |
| |
| 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"; |
| 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 = <80000000 400000000 0 0 600000000>; |
| clock-cntl-level = "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"; |
| 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 = <80000000 400000000 0 0 600000000>; |
| clock-cntl-level = "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"; |
| 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 = <80000000 400000000 0 0 600000000>; |
| clock-cntl-level = "turbo"; |
| }; |
| |