0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002
0003 %YAML 1.2
0004 ---
0005 $id: "http://devicetree.org/schemas/media/qcom,msm8916-camss.yaml#"
0006 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0007
0008 title: Qualcomm CAMSS ISP
0009
0010 maintainers:
0011 - Robert Foss <robert.foss@linaro.org>
0012 - Todor Tomov <todor.too@gmail.com>
0013
0014 description: |
0015 The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms
0016
0017 properties:
0018 compatible:
0019 const: qcom,msm8916-camss
0020
0021 clocks:
0022 minItems: 19
0023 maxItems: 19
0024
0025 clock-names:
0026 items:
0027 - const: top_ahb
0028 - const: ispif_ahb
0029 - const: csiphy0_timer
0030 - const: csiphy1_timer
0031 - const: csi0_ahb
0032 - const: csi0
0033 - const: csi0_phy
0034 - const: csi0_pix
0035 - const: csi0_rdi
0036 - const: csi1_ahb
0037 - const: csi1
0038 - const: csi1_phy
0039 - const: csi1_pix
0040 - const: csi1_rdi
0041 - const: ahb
0042 - const: vfe0
0043 - const: csi_vfe0
0044 - const: vfe_ahb
0045 - const: vfe_axi
0046
0047 interrupts:
0048 minItems: 6
0049 maxItems: 6
0050
0051 interrupt-names:
0052 items:
0053 - const: csiphy0
0054 - const: csiphy1
0055 - const: csid0
0056 - const: csid1
0057 - const: ispif
0058 - const: vfe0
0059
0060 iommus:
0061 maxItems: 1
0062
0063 power-domains:
0064 items:
0065 - description: VFE GDSC - Video Front End, Global Distributed Switch Controller.
0066
0067 ports:
0068 $ref: /schemas/graph.yaml#/properties/ports
0069
0070 description:
0071 CSI input ports.
0072
0073 properties:
0074 port@0:
0075 $ref: /schemas/graph.yaml#/$defs/port-base
0076 unevaluatedProperties: false
0077 description:
0078 Input port for receiving CSI data.
0079
0080 properties:
0081 endpoint:
0082 $ref: video-interfaces.yaml#
0083 unevaluatedProperties: false
0084
0085 properties:
0086 data-lanes:
0087 description:
0088 An array of physical data lanes indexes.
0089 Position of an entry determines the logical
0090 lane number, while the value of an entry
0091 indicates physical lane index. Lane swapping
0092 is supported. Physical lane indexes;
0093 0, 2, 3, 4.
0094 minItems: 1
0095 maxItems: 4
0096
0097 required:
0098 - data-lanes
0099
0100 port@1:
0101 $ref: /schemas/graph.yaml#/$defs/port-base
0102 unevaluatedProperties: false
0103 description:
0104 Input port for receiving CSI data.
0105
0106 properties:
0107 endpoint:
0108 $ref: video-interfaces.yaml#
0109 unevaluatedProperties: false
0110
0111 properties:
0112 data-lanes:
0113 minItems: 1
0114 maxItems: 4
0115
0116 required:
0117 - data-lanes
0118
0119 reg:
0120 minItems: 9
0121 maxItems: 9
0122
0123 reg-names:
0124 items:
0125 - const: csiphy0
0126 - const: csiphy0_clk_mux
0127 - const: csiphy1
0128 - const: csiphy1_clk_mux
0129 - const: csid0
0130 - const: csid1
0131 - const: ispif
0132 - const: csi_clk_mux
0133 - const: vfe0
0134
0135 vdda-supply:
0136 description:
0137 Definition of the regulator used as analog power supply.
0138
0139 required:
0140 - clock-names
0141 - clocks
0142 - compatible
0143 - interrupt-names
0144 - interrupts
0145 - iommus
0146 - power-domains
0147 - reg
0148 - reg-names
0149 - vdda-supply
0150
0151 additionalProperties: false
0152
0153 examples:
0154 - |
0155 #include <dt-bindings/interrupt-controller/arm-gic.h>
0156 #include <dt-bindings/clock/qcom,gcc-msm8916.h>
0157
0158 camss: camss@1b00000 {
0159 compatible = "qcom,msm8916-camss";
0160
0161 clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
0162 <&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
0163 <&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
0164 <&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
0165 <&gcc GCC_CAMSS_CSI0_AHB_CLK>,
0166 <&gcc GCC_CAMSS_CSI0_CLK>,
0167 <&gcc GCC_CAMSS_CSI0PHY_CLK>,
0168 <&gcc GCC_CAMSS_CSI0PIX_CLK>,
0169 <&gcc GCC_CAMSS_CSI0RDI_CLK>,
0170 <&gcc GCC_CAMSS_CSI1_AHB_CLK>,
0171 <&gcc GCC_CAMSS_CSI1_CLK>,
0172 <&gcc GCC_CAMSS_CSI1PHY_CLK>,
0173 <&gcc GCC_CAMSS_CSI1PIX_CLK>,
0174 <&gcc GCC_CAMSS_CSI1RDI_CLK>,
0175 <&gcc GCC_CAMSS_AHB_CLK>,
0176 <&gcc GCC_CAMSS_VFE0_CLK>,
0177 <&gcc GCC_CAMSS_CSI_VFE0_CLK>,
0178 <&gcc GCC_CAMSS_VFE_AHB_CLK>,
0179 <&gcc GCC_CAMSS_VFE_AXI_CLK>;
0180
0181 clock-names = "top_ahb",
0182 "ispif_ahb",
0183 "csiphy0_timer",
0184 "csiphy1_timer",
0185 "csi0_ahb",
0186 "csi0",
0187 "csi0_phy",
0188 "csi0_pix",
0189 "csi0_rdi",
0190 "csi1_ahb",
0191 "csi1",
0192 "csi1_phy",
0193 "csi1_pix",
0194 "csi1_rdi",
0195 "ahb",
0196 "vfe0",
0197 "csi_vfe0",
0198 "vfe_ahb",
0199 "vfe_axi";
0200
0201 interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>,
0202 <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
0203 <GIC_SPI 51 IRQ_TYPE_EDGE_RISING>,
0204 <GIC_SPI 52 IRQ_TYPE_EDGE_RISING>,
0205 <GIC_SPI 55 IRQ_TYPE_EDGE_RISING>,
0206 <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
0207
0208 interrupt-names = "csiphy0",
0209 "csiphy1",
0210 "csid0",
0211 "csid1",
0212 "ispif",
0213 "vfe0";
0214
0215 iommus = <&apps_iommu 3>;
0216
0217 power-domains = <&gcc VFE_GDSC>;
0218
0219 reg = <0x01b0ac00 0x200>,
0220 <0x01b00030 0x4>,
0221 <0x01b0b000 0x200>,
0222 <0x01b00038 0x4>,
0223 <0x01b08000 0x100>,
0224 <0x01b08400 0x100>,
0225 <0x01b0a000 0x500>,
0226 <0x01b00020 0x10>,
0227 <0x01b10000 0x1000>;
0228
0229 reg-names = "csiphy0",
0230 "csiphy0_clk_mux",
0231 "csiphy1",
0232 "csiphy1_clk_mux",
0233 "csid0",
0234 "csid1",
0235 "ispif",
0236 "csi_clk_mux",
0237 "vfe0";
0238
0239 vdda-supply = <®_2v8>;
0240
0241 ports {
0242 #address-cells = <1>;
0243 #size-cells = <0>;
0244 };
0245
0246 };