@@ -104,6 +104,7 @@ properties:
104104 - const : sf_icp_mnoc
105105
106106 iommus :
107+ minItems : 5
107108 maxItems : 8
108109
109110 power-domains :
@@ -126,38 +127,109 @@ properties:
126127 description :
127128 Phandle to 1.8V regulator supply to a PHY.
128129
130+ phys :
131+ maxItems : 4
132+
133+ phy-names :
134+ items :
135+ - const : csiphy0
136+ - const : csiphy1
137+ - const : csiphy2
138+ - const : csiphy4
139+
129140 ports :
130141 $ref : /schemas/graph.yaml#/properties/ports
131142
132143 description :
133- CSI input ports.
144+ CSI input ports. Supports either standard single sensor mode or
145+ Qualcomm's combo mode with one sensor in 2x1 + 1x1 data-lane, clock-lane mode.
134146
135147 patternProperties :
136148 " ^port@[0-3]$ " :
137149 $ref : /schemas/graph.yaml#/$defs/port-base
138150 unevaluatedProperties : false
139151
140152 description :
141- Input port for receiving CSI data from a CSIPHY .
153+ Input port for receiving CSI data.
142154
143155 properties :
144- endpoint :
156+ endpoint@0 :
145157 $ref : video-interfaces.yaml#
146158 unevaluatedProperties : false
147159
160+ description :
161+ Endpoint for receiving a single sensor input (or first leg of combo).
162+
148163 properties :
149164 data-lanes :
150165 minItems : 1
151- maxItems : 4
166+ maxItems : 4 # Base max allows 4 (for D-PHY)
167+
168+ clock-lanes :
169+ maxItems : 1
152170
153171 bus-type :
154172 enum :
155173 - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
156174 - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
157175
176+ endpoint@1 :
177+ $ref : video-interfaces.yaml#
178+ unevaluatedProperties : false
179+
180+ description :
181+ Endpoint for receiving the second leg of a combo sensor input.
182+
183+ properties :
184+ data-lanes :
185+ maxItems : 1
186+
187+ clock-lanes :
188+ maxItems : 1
189+
190+ bus-type :
191+ const : 4 # Combo is D-PHY specific
192+
158193 required :
159194 - data-lanes
160195
196+ allOf :
197+ # Case 1: Combo Mode (endpoint@1 is present)
198+ # If endpoint@1 exists, we restrict endpoint@0 to 2 lanes (D-PHY split)
199+ - if :
200+ required :
201+ - endpoint@1
202+ then :
203+ properties :
204+ endpoint@0 :
205+ properties :
206+ data-lanes :
207+ minItems : 2
208+ maxItems : 2
209+ bus-type :
210+ const : 4
211+ endpoint@1 :
212+ properties :
213+ data-lanes :
214+ minItems : 1
215+ maxItems : 1
216+ bus-type :
217+ const : 4
218+
219+ # Case 2: Single Mode (endpoint@1 is missing)
220+ # We explicitly allow up to 4 lanes here to cover the D-PHY use case.
221+ - if :
222+ not :
223+ required :
224+ - endpoint@1
225+ then :
226+ properties :
227+ endpoint@0 :
228+ properties :
229+ data-lanes :
230+ minItems : 1
231+ maxItems : 4
232+
161233required :
162234 - compatible
163235 - reg
@@ -171,8 +243,6 @@ required:
171243 - iommus
172244 - power-domains
173245 - power-domain-names
174- - vdd-csiphy-0p8-supply
175- - vdd-csiphy-1p2-supply
176246 - ports
177247
178248additionalProperties : false
@@ -333,11 +403,8 @@ examples:
333403
334404 iommus = <&apps_smmu 0x800 0x60>,
335405 <&apps_smmu 0x860 0x60>,
336- <&apps_smmu 0x1800 0x60>,
337406 <&apps_smmu 0x1860 0x60>,
338407 <&apps_smmu 0x18e0 0x00>,
339- <&apps_smmu 0x1980 0x20>,
340- <&apps_smmu 0x1900 0x00>,
341408 <&apps_smmu 0x19a0 0x20>;
342409
343410 power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
@@ -351,6 +418,11 @@ examples:
351418 vdd-csiphy-0p8-supply = <&csiphy_0p8_supply>;
352419 vdd-csiphy-1p2-supply = <&csiphy_1p2_supply>;
353420
421+ phys = <&csiphy0>, <&csiphy1>,
422+ <&csiphy2>, <&csiphy4>;
423+ phy-names = "csiphy0", "csiphy1",
424+ "csiphy2", "csiphy4";
425+
354426 ports {
355427 #address-cells = <1>;
356428 #size-cells = <0>;
0 commit comments