[PATCH 1/6] dt-bindings: media: Add bindings for qcom,nord-camss
From: Wenmeng Liu
Date: Tue Sep 15 2026 - 05:59:45 EST
Add bindings for the camera subsystem (CAMSS) on the Qualcomm Nord
platform.
The Nord platform provides:
- 3 x TPG (Test Pattern Generator)
- 3 x CSID (CSI Decoder)
- 10 x CSID Lite
- 3 x VFE (Video Front End)
- 10 x VFE Lite
Signed-off-by: Wenmeng Liu <wenmeng.liu@xxxxxxxxxxxxxxxx>
---
.../devicetree/bindings/media/qcom,nord-camss.yaml | 393 +++++++++++++++++++++
1 file changed, 393 insertions(+)
diff --git a/Documentation/devicetree/bindings/media/qcom,nord-camss.yaml b/Documentation/devicetree/bindings/media/qcom,nord-camss.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ba724ecffa6cee9fcaca6a116f3785d76597def2
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/qcom,nord-camss.yaml
@@ -0,0 +1,393 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,nord-camss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Nord Camera Subsystem (CAMSS)
+
+maintainers:
+ - Wenmeng Liu <wenmeng.liu@xxxxxxxxxxxxxxxx>
+
+description:
+ The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
+
+properties:
+ compatible:
+ const: qcom,nord-camss
+
+ reg:
+ maxItems: 29
+
+ reg-names:
+ items:
+ - const: csid0
+ - const: csid1
+ - const: csid2
+ - const: csid_lite0
+ - const: csid_lite1
+ - const: csid_lite2
+ - const: csid_lite3
+ - const: csid_lite4
+ - const: csid_lite5
+ - const: csid_lite6
+ - const: csid_lite7
+ - const: csid_lite8
+ - const: csid_lite9
+ - const: csitpg0
+ - const: csitpg1
+ - const: csitpg2
+ - const: vfe0
+ - const: vfe1
+ - const: vfe2
+ - const: vfe_lite0
+ - const: vfe_lite1
+ - const: vfe_lite2
+ - const: vfe_lite3
+ - const: vfe_lite4
+ - const: vfe_lite5
+ - const: vfe_lite6
+ - const: vfe_lite7
+ - const: vfe_lite8
+ - const: vfe_lite9
+
+ clocks:
+ maxItems: 22
+
+ clock-names:
+ items:
+ - const: camnoc_rt_axi
+ - const: csid
+ - const: csid_csiphy_rx
+ - const: gcc_axi_hf
+ - const: top_ahb
+ - const: top_fast_ahb
+ - const: top_ife0
+ - const: top_ife1
+ - const: top_ife2
+ - const: top_ife_lite
+ - const: vfe0
+ - const: vfe0_fast_ahb
+ - const: vfe1
+ - const: vfe1_fast_ahb
+ - const: vfe2
+ - const: vfe2_fast_ahb
+ - const: vfe_lite
+ - const: vfe_lite_ahb
+ - const: vfe_lite_cphy_rx
+ - const: vfe_lite_csid
+ - const: tpg_csiphy_rx
+ - const: qdss_debug_xo
+
+ interrupts:
+ maxItems: 26
+
+ interrupt-names:
+ items:
+ - const: csid0
+ - const: csid1
+ - const: csid2
+ - const: csid_lite0
+ - const: csid_lite1
+ - const: csid_lite2
+ - const: csid_lite3
+ - const: csid_lite4
+ - const: csid_lite5
+ - const: csid_lite6
+ - const: csid_lite7
+ - const: csid_lite8
+ - const: csid_lite9
+ - const: vfe0
+ - const: vfe1
+ - const: vfe2
+ - const: vfe_lite0
+ - const: vfe_lite1
+ - const: vfe_lite2
+ - const: vfe_lite3
+ - const: vfe_lite4
+ - const: vfe_lite5
+ - const: vfe_lite6
+ - const: vfe_lite7
+ - const: vfe_lite8
+ - const: vfe_lite9
+
+ interconnects:
+ maxItems: 2
+
+ interconnect-names:
+ items:
+ - const: ahb
+ - const: hf_mnoc
+
+ iommus:
+ items:
+ - description: S1 HLOS IFE non-protected
+ - description: S1 HLOS IFE_LITE non-protected
+
+ power-domains:
+ items:
+ - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
+ - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
+ - description: IFE2 GDSC - Image Front End, Global Distributed Switch Controller.
+ - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
+
+ power-domain-names:
+ items:
+ - const: ife0
+ - const: ife1
+ - const: ife2
+ - const: top
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ description:
+ CSI input ports.
+
+ patternProperties:
+ "^port@[0-4]$":
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+
+ description:
+ Input port for receiving CSI data.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ minItems: 1
+ maxItems: 4
+
+ bus-type:
+ enum:
+ - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+ - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+ required:
+ - data-lanes
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - interrupts
+ - interrupt-names
+ - interconnects
+ - interconnect-names
+ - iommus
+ - power-domains
+ - power-domain-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/clock/qcom,nord-camcc.h>
+ #include <dt-bindings/clock/qcom,nord-nwgcc.h>
+ #include <dt-bindings/interconnect/qcom,icc.h>
+ #include <dt-bindings/interconnect/qcom,nord-rpmh.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ isp@9b32000 {
+ compatible = "qcom,nord-camss";
+
+ reg = <0 0x09b32000 0 0x2000>,
+ <0 0x09b38800 0 0x2000>,
+ <0 0x09b3f000 0 0x2000>,
+ <0 0x09c32000 0 0x1000>,
+ <0 0x09c37000 0 0x1000>,
+ <0 0x09c3c000 0 0x1000>,
+ <0 0x09c41000 0 0x1000>,
+ <0 0x09c46000 0 0x1000>,
+ <0 0x09c4b000 0 0x1000>,
+ <0 0x09c50000 0 0x1000>,
+ <0 0x09c55000 0 0x1000>,
+ <0 0x09c5a000 0 0x1000>,
+ <0 0x09c5f000 0 0x1000>,
+ <0 0x09a92000 0 0x400>,
+ <0 0x09a93000 0 0x400>,
+ <0 0x09a94000 0 0x400>,
+ <0 0x09ab1000 0 0x4000>,
+ <0 0x09ad1000 0 0x4000>,
+ <0 0x09af1000 0 0x4000>,
+ <0 0x09c34000 0 0x2000>,
+ <0 0x09c39000 0 0x2000>,
+ <0 0x09c3e000 0 0x2000>,
+ <0 0x09c43000 0 0x2000>,
+ <0 0x09c48000 0 0x2000>,
+ <0 0x09c4d000 0 0x2000>,
+ <0 0x09c52000 0 0x2000>,
+ <0 0x09c57000 0 0x2000>,
+ <0 0x09c5c000 0 0x2000>,
+ <0 0x09c61000 0 0x2000>;
+ reg-names = "csid0",
+ "csid1",
+ "csid2",
+ "csid_lite0",
+ "csid_lite1",
+ "csid_lite2",
+ "csid_lite3",
+ "csid_lite4",
+ "csid_lite5",
+ "csid_lite6",
+ "csid_lite7",
+ "csid_lite8",
+ "csid_lite9",
+ "csitpg0",
+ "csitpg1",
+ "csitpg2",
+ "vfe0",
+ "vfe1",
+ "vfe2",
+ "vfe_lite0",
+ "vfe_lite1",
+ "vfe_lite2",
+ "vfe_lite3",
+ "vfe_lite4",
+ "vfe_lite5",
+ "vfe_lite6",
+ "vfe_lite7",
+ "vfe_lite8",
+ "vfe_lite9";
+
+ clocks = <&camcc CAM_CC_CAMNOC_RT_AXI_CLK>,
+ <&camcc CAM_CC_CSID_CLK>,
+ <&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
+ <&nwgcc NW_GCC_CAMERA_HF_AXI_CLK>,
+ <&camcc CAM_CC_TOP_AHB_CLK>,
+ <&camcc CAM_CC_TOP_FAST_AHB_CLK>,
+ <&camcc CAM_CC_TOP_IFE_0_CLK>,
+ <&camcc CAM_CC_TOP_IFE_1_CLK>,
+ <&camcc CAM_CC_TOP_IFE_2_CLK>,
+ <&camcc CAM_CC_TOP_IFE_LITE_CLK>,
+ <&camcc CAM_CC_IFE_0_MAIN_CLK>,
+ <&camcc CAM_CC_IFE_0_MAIN_FAST_AHB_CLK>,
+ <&camcc CAM_CC_IFE_1_MAIN_CLK>,
+ <&camcc CAM_CC_IFE_1_MAIN_FAST_AHB_CLK>,
+ <&camcc CAM_CC_IFE_2_MAIN_CLK>,
+ <&camcc CAM_CC_IFE_2_MAIN_FAST_AHB_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CLK>,
+ <&camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CSID_CLK>,
+ <&camcc CAM_CC_TPG_CSIPHY_RX_CLK>,
+ <&camcc CAM_CC_QDSS_DEBUG_XO_CLK>;
+ clock-names = "camnoc_rt_axi",
+ "csid",
+ "csid_csiphy_rx",
+ "gcc_axi_hf",
+ "top_ahb",
+ "top_fast_ahb",
+ "top_ife0",
+ "top_ife1",
+ "top_ife2",
+ "top_ife_lite",
+ "vfe0",
+ "vfe0_fast_ahb",
+ "vfe1",
+ "vfe1_fast_ahb",
+ "vfe2",
+ "vfe2_fast_ahb",
+ "vfe_lite",
+ "vfe_lite_ahb",
+ "vfe_lite_cphy_rx",
+ "vfe_lite_csid",
+ "tpg_csiphy_rx",
+ "qdss_debug_xo";
+
+ interrupts = <GIC_SPI 601 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 603 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 605 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 376 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 19 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 17 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 15 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 13 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 11 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 9 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 7 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 5 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 22 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 21 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 20 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 606 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 377 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 18 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 16 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 14 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 12 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 10 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 8 IRQ_TYPE_EDGE_RISING>,
+ <GIC_ESPI 6 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 795 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csid0",
+ "csid1",
+ "csid2",
+ "csid_lite0",
+ "csid_lite1",
+ "csid_lite2",
+ "csid_lite3",
+ "csid_lite4",
+ "csid_lite5",
+ "csid_lite6",
+ "csid_lite7",
+ "csid_lite8",
+ "csid_lite9",
+ "vfe0",
+ "vfe1",
+ "vfe2",
+ "vfe_lite0",
+ "vfe_lite1",
+ "vfe_lite2",
+ "vfe_lite3",
+ "vfe_lite4",
+ "vfe_lite5",
+ "vfe_lite6",
+ "vfe_lite7",
+ "vfe_lite8",
+ "vfe_lite9";
+
+ interconnects = <&hscnoc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+ &config_noc SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+ <&mmss_noc MASTER_CAMNOC_HF QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "ahb",
+ "hf_mnoc";
+
+ iommus = <&apps_smmu_2 0x1401 0x20>,
+ <&apps_smmu_2 0x1460 0x00>;
+
+ power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
+ <&camcc CAM_CC_IFE_1_GDSC>,
+ <&camcc CAM_CC_IFE_2_GDSC>,
+ <&camcc CAM_CC_TITAN_TOP_GDSC>;
+ power-domain-names = "ife0",
+ "ife1",
+ "ife2",
+ "top";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&sensor_ep>;
+ };
+ };
+ };
+ };
+ };
--
2.34.1