The CSI-2 receiver in the i.MX8ULP is almost identical to the version
present in the i.MX8QXP/QM, but i.MX8ULP CSI-2 controller needs pclk
clock as the input clock for its APB interface of Control and Status
register(CSR). So add compatible string fsl,imx8ulp-mipi-csi2 and
increase maxItems of Clocks (clock-names) to 4 from 3. And keep the
same restriction for existed compatible.
Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
---
.../bindings/media/nxp,imx8mq-mipi-csi2.yaml | 46 +++++++++++++++++++++-
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml b/Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml
index 3389bab266a9adbda313c8ad795b998641df12f3..38900e76553f639036815c1ae5d97f4dc46f5b13 100644
--- a/Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml
+++ b/Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml
@@ -21,7 +21,9 @@ properties:
- fsl,imx8mq-mipi-csi2
- fsl,imx8qxp-mipi-csi2
- items:
- - const: fsl,imx8qm-mipi-csi2
+ - enum:
+ - fsl,imx8qm-mipi-csi2
+ - fsl,imx8ulp-mipi-csi2
- const: fsl,imx8qxp-mipi-csi2
reg:
@@ -39,12 +41,16 @@ properties:
clock that the RX DPHY receives.
- description: ui is the pixel clock (phy_ref up to 333Mhz).
See the reference manual for details.
+ - description: pclk is clock for csr APB interface.
+ minItems: 3
clock-names:
items:
- const: core
- const: esc
- const: ui
+ - const: pclk
+ minItems: 3
power-domains:
maxItems: 1
@@ -125,19 +131,55 @@ required:
- ports
allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - fsl,imx8ulp-mipi-csi2
+ then:
+ properties:
+ reg:
+ minItems: 2
+ resets:
+ minItems: 2
+ maxItems: 2
+ clocks:
+ minItems: 4
+ clock-names:
+ minItems: 4
+ else:
+ properties:
+ clocks:
+ maxItems: 3
+ clock-names:
+ maxItems: 3
+
- if:
properties:
compatible:
contains:
enum:
- fsl,imx8qxp-mipi-csi2
+ - fsl,imx8qm-mipi-csi2
+ not:
+ contains:
+ enum:
+ - fsl,imx8ulp-mipi-csi2
then:
properties:
reg:
minItems: 2
resets:
maxItems: 1
- else:
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - fsl,imx8mq-mipi-csi2
+ then:
properties:
reg:
maxItems: 1
--
2.34.1
On Thu, Aug 28, 2025 at 03:17:33PM +0800, Guoniu Zhou wrote: > allOf: > + - if: > + properties: > + compatible: > + contains: > + enum: > + - fsl,imx8ulp-mipi-csi2 > + then: > + properties: > + reg: > + minItems: 2 > + resets: > + minItems: 2 > + maxItems: 2 > + clocks: > + minItems: 4 > + clock-names: > + minItems: 4 > + else: > + properties: > + clocks: > + maxItems: 3 > + clock-names: > + maxItems: 3 > + > - if: > properties: > compatible: > contains: > enum: > - fsl,imx8qxp-mipi-csi2 > + - fsl,imx8qm-mipi-csi2 > + not: > + contains: > + enum: > + - fsl,imx8ulp-mipi-csi2 That's a nice trick, but I think you should just list exact cases. It's also easier to read if if:then: blocks are symmetrical. Your previous one consgtrained reg+resetes+clocks. This one constrains only reg+resets. > then: > properties: > reg: > minItems: 2 > resets: > maxItems: 1 > - else: > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - fsl,imx8mq-mipi-csi2 > + then: > properties: > reg: > maxItems: 1 And this one constraints only "reg". This stops being readable and maintainable. Best regards, Krzysztof
© 2016 - 2025 Red Hat, Inc.