Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: media: camss: Add qcom,sdm670-camss

As found in the Pixel 3a, the Snapdragon 670 has a camera subsystem with
3 CSIDs and 3 VFEs (including 1 VFE lite). Add this camera subsystem to
the bindings.

Adapted from SC8280XP camera subsystem.

Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>

authored by

Richard Acayan and committed by
Hans Verkuil
0274ea59 bb77ddc4

+318
+318
Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/media/qcom,sdm670-camss.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm SDM670 Camera Subsystem (CAMSS) 8 + 9 + maintainers: 10 + - Richard Acayan <mailingradian@gmail.com> 11 + 12 + description: 13 + The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms. 14 + 15 + properties: 16 + compatible: 17 + const: qcom,sdm670-camss 18 + 19 + reg: 20 + maxItems: 9 21 + 22 + reg-names: 23 + items: 24 + - const: csid0 25 + - const: csid1 26 + - const: csid2 27 + - const: csiphy0 28 + - const: csiphy1 29 + - const: csiphy2 30 + - const: vfe0 31 + - const: vfe1 32 + - const: vfe_lite 33 + 34 + interrupts: 35 + maxItems: 9 36 + 37 + interrupt-names: 38 + items: 39 + - const: csid0 40 + - const: csid1 41 + - const: csid2 42 + - const: csiphy0 43 + - const: csiphy1 44 + - const: csiphy2 45 + - const: vfe0 46 + - const: vfe1 47 + - const: vfe_lite 48 + 49 + clocks: 50 + maxItems: 22 51 + 52 + clock-names: 53 + items: 54 + - const: camnoc_axi 55 + - const: cpas_ahb 56 + - const: csi0 57 + - const: csi1 58 + - const: csi2 59 + - const: csiphy0 60 + - const: csiphy0_timer 61 + - const: csiphy1 62 + - const: csiphy1_timer 63 + - const: csiphy2 64 + - const: csiphy2_timer 65 + - const: gcc_camera_ahb 66 + - const: gcc_camera_axi 67 + - const: soc_ahb 68 + - const: vfe0 69 + - const: vfe0_axi 70 + - const: vfe0_cphy_rx 71 + - const: vfe1 72 + - const: vfe1_axi 73 + - const: vfe1_cphy_rx 74 + - const: vfe_lite 75 + - const: vfe_lite_cphy_rx 76 + 77 + iommus: 78 + maxItems: 4 79 + 80 + power-domains: 81 + items: 82 + - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller. 83 + - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller. 84 + - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller. 85 + 86 + power-domain-names: 87 + items: 88 + - const: ife0 89 + - const: ife1 90 + - const: top 91 + 92 + vdda-phy-supply: 93 + description: 94 + Phandle to a regulator supply to PHY core block. 95 + 96 + vdda-pll-supply: 97 + description: 98 + Phandle to 1.8V regulator supply to PHY refclk pll block. 99 + 100 + ports: 101 + $ref: /schemas/graph.yaml#/properties/ports 102 + 103 + description: 104 + CSI input ports. 105 + 106 + properties: 107 + port@0: 108 + $ref: /schemas/graph.yaml#/$defs/port-base 109 + unevaluatedProperties: false 110 + description: 111 + Input port for receiving CSI data from CSIPHY0. 112 + 113 + properties: 114 + endpoint: 115 + $ref: video-interfaces.yaml# 116 + unevaluatedProperties: false 117 + 118 + properties: 119 + clock-lanes: 120 + maxItems: 1 121 + 122 + data-lanes: 123 + minItems: 1 124 + maxItems: 4 125 + 126 + required: 127 + - clock-lanes 128 + - data-lanes 129 + 130 + port@1: 131 + $ref: /schemas/graph.yaml#/$defs/port-base 132 + unevaluatedProperties: false 133 + description: 134 + Input port for receiving CSI data from CSIPHY1. 135 + 136 + properties: 137 + endpoint: 138 + $ref: video-interfaces.yaml# 139 + unevaluatedProperties: false 140 + 141 + properties: 142 + clock-lanes: 143 + maxItems: 1 144 + 145 + data-lanes: 146 + minItems: 1 147 + maxItems: 4 148 + 149 + required: 150 + - clock-lanes 151 + - data-lanes 152 + 153 + port@2: 154 + $ref: /schemas/graph.yaml#/$defs/port-base 155 + unevaluatedProperties: false 156 + description: 157 + Input port for receiving CSI data from CSIPHY2. 158 + 159 + properties: 160 + endpoint: 161 + $ref: video-interfaces.yaml# 162 + unevaluatedProperties: false 163 + 164 + properties: 165 + clock-lanes: 166 + maxItems: 1 167 + 168 + data-lanes: 169 + minItems: 1 170 + maxItems: 4 171 + 172 + required: 173 + - clock-lanes 174 + - data-lanes 175 + 176 + required: 177 + - compatible 178 + - reg 179 + - reg-names 180 + - interrupts 181 + - interrupt-names 182 + - clocks 183 + - clock-names 184 + - iommus 185 + - power-domains 186 + - power-domain-names 187 + - vdda-phy-supply 188 + - vdda-pll-supply 189 + 190 + additionalProperties: false 191 + 192 + examples: 193 + - | 194 + #include <dt-bindings/clock/qcom,camcc-sdm845.h> 195 + #include <dt-bindings/clock/qcom,gcc-sdm845.h> 196 + #include <dt-bindings/interrupt-controller/arm-gic.h> 197 + 198 + soc { 199 + #address-cells = <2>; 200 + #size-cells = <2>; 201 + 202 + isp@acb3000 { 203 + compatible = "qcom,sdm670-camss"; 204 + 205 + reg = <0 0x0acb3000 0 0x1000>, 206 + <0 0x0acba000 0 0x1000>, 207 + <0 0x0acc8000 0 0x1000>, 208 + <0 0x0ac65000 0 0x1000>, 209 + <0 0x0ac66000 0 0x1000>, 210 + <0 0x0ac67000 0 0x1000>, 211 + <0 0x0acaf000 0 0x4000>, 212 + <0 0x0acb6000 0 0x4000>, 213 + <0 0x0acc4000 0 0x4000>; 214 + reg-names = "csid0", 215 + "csid1", 216 + "csid2", 217 + "csiphy0", 218 + "csiphy1", 219 + "csiphy2", 220 + "vfe0", 221 + "vfe1", 222 + "vfe_lite"; 223 + 224 + interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>, 225 + <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>, 226 + <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>, 227 + <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>, 228 + <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>, 229 + <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>, 230 + <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>, 231 + <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>, 232 + <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>; 233 + interrupt-names = "csid0", 234 + "csid1", 235 + "csid2", 236 + "csiphy0", 237 + "csiphy1", 238 + "csiphy2", 239 + "vfe0", 240 + "vfe1", 241 + "vfe_lite"; 242 + 243 + clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>, 244 + <&camcc CAM_CC_CPAS_AHB_CLK>, 245 + <&camcc CAM_CC_IFE_0_CSID_CLK>, 246 + <&camcc CAM_CC_IFE_1_CSID_CLK>, 247 + <&camcc CAM_CC_IFE_LITE_CSID_CLK>, 248 + <&camcc CAM_CC_CSIPHY0_CLK>, 249 + <&camcc CAM_CC_CSI0PHYTIMER_CLK>, 250 + <&camcc CAM_CC_CSIPHY1_CLK>, 251 + <&camcc CAM_CC_CSI1PHYTIMER_CLK>, 252 + <&camcc CAM_CC_CSIPHY2_CLK>, 253 + <&camcc CAM_CC_CSI2PHYTIMER_CLK>, 254 + <&gcc GCC_CAMERA_AHB_CLK>, 255 + <&gcc GCC_CAMERA_AXI_CLK>, 256 + <&camcc CAM_CC_SOC_AHB_CLK>, 257 + <&camcc CAM_CC_IFE_0_CLK>, 258 + <&camcc CAM_CC_IFE_0_AXI_CLK>, 259 + <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>, 260 + <&camcc CAM_CC_IFE_1_CLK>, 261 + <&camcc CAM_CC_IFE_1_AXI_CLK>, 262 + <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>, 263 + <&camcc CAM_CC_IFE_LITE_CLK>, 264 + <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>; 265 + clock-names = "camnoc_axi", 266 + "cpas_ahb", 267 + "csi0", 268 + "csi1", 269 + "csi2", 270 + "csiphy0", 271 + "csiphy0_timer", 272 + "csiphy1", 273 + "csiphy1_timer", 274 + "csiphy2", 275 + "csiphy2_timer", 276 + "gcc_camera_ahb", 277 + "gcc_camera_axi", 278 + "soc_ahb", 279 + "vfe0", 280 + "vfe0_axi", 281 + "vfe0_cphy_rx", 282 + "vfe1", 283 + "vfe1_axi", 284 + "vfe1_cphy_rx", 285 + "vfe_lite", 286 + "vfe_lite_cphy_rx"; 287 + 288 + iommus = <&apps_smmu 0x808 0x0>, 289 + <&apps_smmu 0x810 0x8>, 290 + <&apps_smmu 0xc08 0x0>, 291 + <&apps_smmu 0xc10 0x8>; 292 + 293 + power-domains = <&camcc IFE_0_GDSC>, 294 + <&camcc IFE_1_GDSC>, 295 + <&camcc TITAN_TOP_GDSC>; 296 + power-domain-names = "ife0", 297 + "ife1", 298 + "top"; 299 + 300 + vdda-phy-supply = <&vreg_l1a_1p225>; 301 + vdda-pll-supply = <&vreg_l8a_1p8>; 302 + 303 + ports { 304 + #address-cells = <1>; 305 + #size-cells = <0>; 306 + 307 + port@0 { 308 + reg = <0>; 309 + 310 + csiphy_ep0: endpoint { 311 + clock-lanes = <7>; 312 + data-lanes = <0 1 2 3>; 313 + remote-endpoint = <&front_sensor_ep>; 314 + }; 315 + }; 316 + }; 317 + }; 318 + };