162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/samsung,s5p-mfc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Samsung Exynos Multi Format Codec (MFC)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Marek Szyprowski <m.szyprowski@samsung.com>
1162306a36Sopenharmony_ci  - Aakarsh Jain <aakarsh.jain@samsung.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  Multi Format Codec (MFC) is the IP present in Samsung SoCs which
1562306a36Sopenharmony_ci  supports high resolution decoding and encoding functionalities.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    oneOf:
2062306a36Sopenharmony_ci      - enum:
2162306a36Sopenharmony_ci          - samsung,exynos5433-mfc        # Exynos5433
2262306a36Sopenharmony_ci          - samsung,mfc-v5                # Exynos4
2362306a36Sopenharmony_ci          - samsung,mfc-v6                # Exynos5
2462306a36Sopenharmony_ci          - samsung,mfc-v7                # Exynos5420
2562306a36Sopenharmony_ci          - samsung,mfc-v8                # Exynos5800
2662306a36Sopenharmony_ci          - samsung,mfc-v10               # Exynos7880
2762306a36Sopenharmony_ci      - items:
2862306a36Sopenharmony_ci          - enum:
2962306a36Sopenharmony_ci              - samsung,exynos3250-mfc    # Exynos3250
3062306a36Sopenharmony_ci          - const: samsung,mfc-v7         # Fall back for Exynos3250
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  reg:
3362306a36Sopenharmony_ci    maxItems: 1
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  clocks:
3662306a36Sopenharmony_ci    minItems: 1
3762306a36Sopenharmony_ci    maxItems: 3
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  clock-names:
4062306a36Sopenharmony_ci    minItems: 1
4162306a36Sopenharmony_ci    maxItems: 3
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  interrupts:
4462306a36Sopenharmony_ci    maxItems: 1
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  iommus:
4762306a36Sopenharmony_ci    minItems: 1
4862306a36Sopenharmony_ci    maxItems: 2
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  iommu-names:
5162306a36Sopenharmony_ci    minItems: 1
5262306a36Sopenharmony_ci    maxItems: 2
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  power-domains:
5562306a36Sopenharmony_ci    maxItems: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  memory-region:
5862306a36Sopenharmony_ci    minItems: 1
5962306a36Sopenharmony_ci    maxItems: 2
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cirequired:
6262306a36Sopenharmony_ci  - compatible
6362306a36Sopenharmony_ci  - reg
6462306a36Sopenharmony_ci  - clocks
6562306a36Sopenharmony_ci  - clock-names
6662306a36Sopenharmony_ci  - interrupts
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciadditionalProperties: false
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciallOf:
7162306a36Sopenharmony_ci  - if:
7262306a36Sopenharmony_ci      properties:
7362306a36Sopenharmony_ci        compatible:
7462306a36Sopenharmony_ci          contains:
7562306a36Sopenharmony_ci            enum:
7662306a36Sopenharmony_ci              - samsung,exynos3250-mfc
7762306a36Sopenharmony_ci    then:
7862306a36Sopenharmony_ci      properties:
7962306a36Sopenharmony_ci        clocks:
8062306a36Sopenharmony_ci          maxItems: 2
8162306a36Sopenharmony_ci        clock-names:
8262306a36Sopenharmony_ci          items:
8362306a36Sopenharmony_ci            - const: mfc
8462306a36Sopenharmony_ci            - const: sclk_mfc
8562306a36Sopenharmony_ci        iommus:
8662306a36Sopenharmony_ci          maxItems: 1
8762306a36Sopenharmony_ci        iommus-names: false
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci  - if:
9062306a36Sopenharmony_ci      properties:
9162306a36Sopenharmony_ci        compatible:
9262306a36Sopenharmony_ci          contains:
9362306a36Sopenharmony_ci            enum:
9462306a36Sopenharmony_ci              - samsung,exynos5433-mfc
9562306a36Sopenharmony_ci    then:
9662306a36Sopenharmony_ci      properties:
9762306a36Sopenharmony_ci        clocks:
9862306a36Sopenharmony_ci          maxItems: 3
9962306a36Sopenharmony_ci        clock-names:
10062306a36Sopenharmony_ci          items:
10162306a36Sopenharmony_ci            - const: pclk
10262306a36Sopenharmony_ci            - const: aclk
10362306a36Sopenharmony_ci            - const: aclk_xiu
10462306a36Sopenharmony_ci        iommus:
10562306a36Sopenharmony_ci          maxItems: 2
10662306a36Sopenharmony_ci        iommus-names:
10762306a36Sopenharmony_ci          items:
10862306a36Sopenharmony_ci            - const: left
10962306a36Sopenharmony_ci            - const: right
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci  - if:
11262306a36Sopenharmony_ci      properties:
11362306a36Sopenharmony_ci        compatible:
11462306a36Sopenharmony_ci          contains:
11562306a36Sopenharmony_ci            enum:
11662306a36Sopenharmony_ci              - samsung,mfc-v5
11762306a36Sopenharmony_ci    then:
11862306a36Sopenharmony_ci      properties:
11962306a36Sopenharmony_ci        clocks:
12062306a36Sopenharmony_ci          maxItems: 2
12162306a36Sopenharmony_ci        clock-names:
12262306a36Sopenharmony_ci          items:
12362306a36Sopenharmony_ci            - const: mfc
12462306a36Sopenharmony_ci            - const: sclk_mfc
12562306a36Sopenharmony_ci        iommus:
12662306a36Sopenharmony_ci          maxItems: 2
12762306a36Sopenharmony_ci        iommus-names:
12862306a36Sopenharmony_ci          items:
12962306a36Sopenharmony_ci            - const: left
13062306a36Sopenharmony_ci            - const: right
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  - if:
13362306a36Sopenharmony_ci      properties:
13462306a36Sopenharmony_ci        compatible:
13562306a36Sopenharmony_ci          contains:
13662306a36Sopenharmony_ci            enum:
13762306a36Sopenharmony_ci              - samsung,mfc-v6
13862306a36Sopenharmony_ci              - samsung,mfc-v8
13962306a36Sopenharmony_ci    then:
14062306a36Sopenharmony_ci      properties:
14162306a36Sopenharmony_ci        clocks:
14262306a36Sopenharmony_ci          maxItems: 1
14362306a36Sopenharmony_ci        clock-names:
14462306a36Sopenharmony_ci          items:
14562306a36Sopenharmony_ci            - const: mfc
14662306a36Sopenharmony_ci        iommus:
14762306a36Sopenharmony_ci          maxItems: 2
14862306a36Sopenharmony_ci        iommus-names:
14962306a36Sopenharmony_ci          items:
15062306a36Sopenharmony_ci            - const: left
15162306a36Sopenharmony_ci            - const: right
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci  - if:
15462306a36Sopenharmony_ci      properties:
15562306a36Sopenharmony_ci        compatible:
15662306a36Sopenharmony_ci          contains:
15762306a36Sopenharmony_ci            enum:
15862306a36Sopenharmony_ci              - samsung,mfc-v7
15962306a36Sopenharmony_ci    then:
16062306a36Sopenharmony_ci      properties:
16162306a36Sopenharmony_ci        clocks:
16262306a36Sopenharmony_ci          minItems: 1
16362306a36Sopenharmony_ci          maxItems: 2
16462306a36Sopenharmony_ci        iommus:
16562306a36Sopenharmony_ci          minItems: 1
16662306a36Sopenharmony_ci          maxItems: 2
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciexamples:
16962306a36Sopenharmony_ci  - |
17062306a36Sopenharmony_ci    #include <dt-bindings/clock/exynos4.h>
17162306a36Sopenharmony_ci    #include <dt-bindings/clock/exynos-audss-clk.h>
17262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
17362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci    codec@13400000 {
17662306a36Sopenharmony_ci        compatible = "samsung,mfc-v5";
17762306a36Sopenharmony_ci        reg = <0x13400000 0x10000>;
17862306a36Sopenharmony_ci        interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
17962306a36Sopenharmony_ci        power-domains = <&pd_mfc>;
18062306a36Sopenharmony_ci        clocks = <&clock CLK_MFC>, <&clock CLK_SCLK_MFC>;
18162306a36Sopenharmony_ci        clock-names = "mfc", "sclk_mfc";
18262306a36Sopenharmony_ci        iommus = <&sysmmu_mfc_l>, <&sysmmu_mfc_r>;
18362306a36Sopenharmony_ci        iommu-names = "left", "right";
18462306a36Sopenharmony_ci    };
185