On 23/02/2023 11:46, Aakarsh Jain wrote: > Convert s5p-mfc bindings to DT schema format using json-schema. > > Signed-off-by: Aakarsh Jain <aakarsh.jain@xxxxxxxxxxx> > --- > Since, obsolete properties are not part of dt-node so we are not including these properties in dt-schema. This is not a v1, so please include proper versioning and changelog after ---. (...) > diff --git a/Documentation/devicetree/bindings/media/samsung,s5p-mfc.yaml b/Documentation/devicetree/bindings/media/samsung,s5p-mfc.yaml > index 000000000000..e82b143086ba > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/samsung,s5p-mfc.yaml > @@ -0,0 +1,160 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/samsung,s5p-mfc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Samsung Exynos Multi Format Codec (MFC) > + > +maintainers: > + - Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > + - Aakarsh Jain <aakarsh.jain@xxxxxxxxxxx> > + > +description: > + Multi Format Codec (MFC) is the IP present in Samsung SoCs which > + supports high resolution decoding and encoding functionalities. > + > +properties: > + compatible: > + oneOf: > + - items: No need for items here. > + - enum: > + - samsung,mfc-v5 # Exynos4 > + - samsung,mfc-v6 # Exynos5 > + - items: > + - enum: > + - samsung,exynos3250-mfc # Exynos3250 > + - const: samsung,mfc-v7 # Fall back Exynos3250 > + - items: and jere > + - enum: > + - samsung,mfc-v7 # Exynos5420 > + - samsung,mfc-v8 # Exynos5800 > + - samsung,exynos5433-mfc # Exynos5433 > + - samsung,mfc-v10 # Exynos7880 > + > + reg: > + maxItems: 1 > + > + clocks: > + minItems: 1 > + maxItems: 3 > + > + clock-names: > + minItems: 1 > + maxItems: 3 > + > + interrupts: > + maxItems: 1 > + > + iommus: > + minItems: 1 > + maxItems: 2 > + > + iommu-names: > + minItems: 1 > + maxItems: 2 You need to define the items, just like for clocks. If all variants have the same names, define them here instead of min/max: items: - const: foo - const: bar > + > + power-domains: > + maxItems: 1 > + > + memory-region: > + minItems: 1 > + maxItems: 2 > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - interrupts > + > +additionalProperties: false > + > +allOf: > + - if: > + properties: > + compatible: > + contains: > + enum: > + - samsung,mfc-v5 > + - samsung,exynos3250-mfc > + then: > + properties: > + clocks: > + maxItems: 2 > + clock-names: > + items: > + - const: mfc > + - const: sclk_mfc > + iommus: > + minItems: 1 > + maxItems: 2 This is the same as top-level, so just skip it. Unless you wanted to say minItems: 2? or maxItems: 1? > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - samsung,mfc-v6 > + - samsung,mfc-v8 > + then: > + properties: > + clocks: > + maxItems: 1 > + clock-names: > + items: > + - const: mfc > + iommus: > + maxItems: 2 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - samsung,exynos5433-mfc > + then: > + properties: > + clocks: > + maxItems: 3 > + clock-names: > + items: > + - const: pclk > + - const: aclk > + - const: aclk_xiu > + iommus: > + maxItems: 2 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - samsung,mfc-v7 > + then: > + properties: > + clocks: > + minItems: 1 > + maxItems: 2 > + iommus: > + minItems: 1 > + maxItems: 2 > + > +examples: > + - | > + #include <dt-bindings/clock/exynos4.h> > + #include <dt-bindings/clock/exynos-audss-clk.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + codec@13400000 { > + compatible = "samsung,mfc-v5"; > + reg = <0x13400000 0x10000>; > + interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; > + power-domains = <&pd_mfc>; > + clocks = <&clock CLK_MFC>, <&clock CLK_SCLK_MFC>; > + clock-names = "mfc", "sclk_mfc"; > + iommus = <&sysmmu_mfc_l>, <&sysmmu_mfc_r>; > + iommu-names = "left", "right"; > + Drop blank line. > + }; Best regards, Krzysztof